📄 atapipcicd.cod
字号:
000c0 e24dd01c sub sp, sp, #0x1C
000c4 |$M32208|
; 72 : DWORD dwError;
; 73 :
; 74 : DEBUGMSG(ZONE_IOCTL, (_T(
; 75 : "Atapi!CPCIDiskAndCD::MainIoctl> IOCTL(0x%x), device(%d)\r\n"
; 76 : ),pIOReq->dwCode, m_dwDeviceId));
000c4 e59f3364 ldr r3, [pc, #0x364]
000c8 e5933440 ldr r3, [r3, #0x440]
000cc e3130040 tst r3, #0x40
000d0 0a00000b beq |$L32197|
000d4 e59d3024 ldr r3, [sp, #0x24]
000d8 e2833b01 add r3, r3, #1, 22
000dc e2833088 add r3, r3, #0x88
000e0 e5932000 ldr r2, [r3]
000e4 e59d3028 ldr r3, [sp, #0x28]
000e8 e2833014 add r3, r3, #0x14
000ec e5931000 ldr r1, [r3]
000f0 e59f0334 ldr r0, [pc, #0x334]
000f4 eb000000 bl NKDbgPrintfW
000f8 e3a03001 mov r3, #1
000fc e58d3008 str r3, [sp, #8]
00100 ea000001 b |$L32198|
00104 |$L32197|
00104 e3a03000 mov r3, #0
00108 e58d3008 str r3, [sp, #8]
0010c |$L32198|
; 77 :
; 78 : dwError = CPCIDisk::MainIoctl(pIOReq);
0010c e59d1028 ldr r1, [sp, #0x28]
00110 e59d0024 ldr r0, [sp, #0x24]
00114 eb000000 bl |?MainIoctl@CPCIDisk@@UAAKPAU_IOREQ@@@Z|
00118 e58d000c str r0, [sp, #0xC]
0011c e59d300c ldr r3, [sp, #0xC]
00120 e58d3000 str r3, [sp]
; 79 :
; 80 : if (dwError == ERROR_NOT_SUPPORTED) {
00124 e59d3000 ldr r3, [sp]
00128 e3530032 cmp r3, #0x32
0012c 1a0000b8 bne |$L32117|
; 81 :
; 82 : switch(pIOReq->dwCode) {
00130 e59d3028 ldr r3, [sp, #0x28]
00134 e2833014 add r3, r3, #0x14
00138 e5933000 ldr r3, [r3]
0013c e58d3010 str r3, [sp, #0x10]
00140 e59d2010 ldr r2, [sp, #0x10]
00144 e3a03909 mov r3, #9, 18
00148 e3833038 orr r3, r3, #0x38
0014c e1520003 cmp r2, r3
00150 8a000051 bhi |$L32199|
00154 e59d2010 ldr r2, [sp, #0x10]
00158 e3a03909 mov r3, #9, 18
0015c e3833038 orr r3, r3, #0x38
00160 e1520003 cmp r2, r3
00164 0a000097 beq |$L32122|
00168 e59d2010 ldr r2, [sp, #0x10]
0016c e3a03909 mov r3, #9, 18
00170 e3833010 orr r3, r3, #0x10
00174 e1520003 cmp r2, r3
00178 8a000027 bhi |$L32200|
0017c e59d2010 ldr r2, [sp, #0x10]
00180 e3a03909 mov r3, #9, 18
00184 e3833010 orr r3, r3, #0x10
00188 e1520003 cmp r2, r3
0018c 0a00008d beq |$L32122|
00190 e59d2010 ldr r2, [sp, #0x10]
00194 e3a03909 mov r3, #9, 18
00198 e3833004 orr r3, r3, #4
0019c e1520003 cmp r2, r3
001a0 8a000012 bhi |$L32201|
001a4 e59d2010 ldr r2, [sp, #0x10]
001a8 e3a03909 mov r3, #9, 18
001ac e3833004 orr r3, r3, #4
001b0 e1520003 cmp r2, r3
001b4 0a000083 beq |$L32122|
001b8 e59d2010 ldr r2, [sp, #0x10]
001bc e3a03802 mov r3, #2, 16
001c0 e3833040 orr r3, r3, #0x40
001c4 e1520003 cmp r2, r3
001c8 0a00007e beq |$L32122|
001cc e59d2010 ldr r2, [sp, #0x10]
001d0 e3a03802 mov r3, #2, 16
001d4 e3833080 orr r3, r3, #0x80
001d8 e1520003 cmp r2, r3
001dc 0a000079 beq |$L32122|
001e0 e59d3010 ldr r3, [sp, #0x10]
001e4 e3530909 cmp r3, #9, 18
001e8 0a000076 beq |$L32122|
001ec ea000086 b |$L32125|
001f0 |$L32201|
001f0 e59d2010 ldr r2, [sp, #0x10]
001f4 e3a03909 mov r3, #9, 18
001f8 e3833008 orr r3, r3, #8
001fc e1520003 cmp r2, r3
00200 0a000070 beq |$L32122|
00204 e59d2010 ldr r2, [sp, #0x10]
00208 e3a03909 mov r3, #9, 18
0020c e383300c orr r3, r3, #0xC
00210 e1520003 cmp r2, r3
00214 0a00006b beq |$L32122|
00218 ea00007b b |$L32125|
0021c |$L32200|
0021c e59d2010 ldr r2, [sp, #0x10]
00220 e3a03909 mov r3, #9, 18
00224 e3833028 orr r3, r3, #0x28
00228 e1520003 cmp r2, r3
0022c 8a00000f bhi |$L32202|
00230 e59d2010 ldr r2, [sp, #0x10]
00234 e3a03909 mov r3, #9, 18
00238 e3833028 orr r3, r3, #0x28
0023c e1520003 cmp r2, r3
00240 0a000060 beq |$L32122|
00244 e59d2010 ldr r2, [sp, #0x10]
00248 e3a03909 mov r3, #9, 18
0024c e3833014 orr r3, r3, #0x14
00250 e1520003 cmp r2, r3
00254 0a00005b beq |$L32122|
00258 e59d2010 ldr r2, [sp, #0x10]
0025c e3a03909 mov r3, #9, 18
00260 e3833018 orr r3, r3, #0x18
00264 e1520003 cmp r2, r3
00268 0a000056 beq |$L32122|
0026c ea000066 b |$L32125|
00270 |$L32202|
00270 e59d2010 ldr r2, [sp, #0x10]
00274 e3a03909 mov r3, #9, 18
00278 e383302c orr r3, r3, #0x2C
0027c e1520003 cmp r2, r3
00280 0a000050 beq |$L32122|
00284 e59d2010 ldr r2, [sp, #0x10]
00288 e3a03909 mov r3, #9, 18
0028c e3833034 orr r3, r3, #0x34
00290 e1520003 cmp r2, r3
00294 0a00004b beq |$L32122|
00298 ea00005b b |$L32125|
0029c |$L32199|
0029c e59d2010 ldr r2, [sp, #0x10]
002a0 e3a03b93 mov r3, #0x93, 22
002a4 e383301c orr r3, r3, #0x1C
002a8 e1520003 cmp r2, r3
002ac 8a000029 bhi |$L32203|
002b0 e59d2010 ldr r2, [sp, #0x10]
002b4 e3a03b93 mov r3, #0x93, 22
002b8 e383301c orr r3, r3, #0x1C
002bc e1520003 cmp r2, r3
002c0 0a000040 beq |$L32122|
002c4 e59d2010 ldr r2, [sp, #0x10]
002c8 e3a03b93 mov r3, #0x93, 22
002cc e3833004 orr r3, r3, #4
002d0 e1520003 cmp r2, r3
002d4 8a000014 bhi |$L32204|
002d8 e59d2010 ldr r2, [sp, #0x10]
002dc e3a03b93 mov r3, #0x93, 22
002e0 e3833004 orr r3, r3, #4
002e4 e1520003 cmp r2, r3
002e8 0a000036 beq |$L32122|
002ec e59d2010 ldr r2, [sp, #0x10]
002f0 e3a03909 mov r3, #9, 18
002f4 e383303e orr r3, r3, #0x3E
002f8 e1520003 cmp r2, r3
002fc 0a000031 beq |$L32122|
00300 e59d2010 ldr r2, [sp, #0x10]
00304 e3a03b92 mov r3, #0x92, 22
00308 e3833008 orr r3, r3, #8
0030c e1520003 cmp r2, r3
00310 0a00002c beq |$L32122|
00314 e59d2010 ldr r2, [sp, #0x10]
00318 e3a03b92 mov r3, #0x92, 22
0031c e383300c orr r3, r3, #0xC
00320 e1520003 cmp r2, r3
00324 0a000027 beq |$L32122|
00328 ea000037 b |$L32125|
0032c |$L32204|
0032c e59d2010 ldr r2, [sp, #0x10]
00330 e3a03b93 mov r3, #0x93, 22
00334 e3833008 orr r3, r3, #8
00338 e1520003 cmp r2, r3
0033c 0a000021 beq |$L32122|
00340 e59d2010 ldr r2, [sp, #0x10]
00344 e3a03b93 mov r3, #0x93, 22
00348 e383300c orr r3, r3, #0xC
0034c e1520003 cmp r2, r3
00350 0a00001c beq |$L32122|
00354 ea00002c b |$L32125|
00358 |$L32203|
00358 e59d3010 ldr r3, [sp, #0x10]
0035c e24339cd sub r3, r3, #0xCD, 18
00360 e58d3010 str r3, [sp, #0x10]
00364 e59d3010 ldr r3, [sp, #0x10]
00368 e3530010 cmp r3, #0x10
0036c 8a000026 bhi |$L32125|
00370 e59d2010 ldr r2, [sp, #0x10]
00374 e1a03102 mov r3, r2, lsl #2
00378 e083300f add r3, r3, pc
0037c e5933004 ldr r3, [r3, #4]
00380 e08ff003 add pc, pc, r3
00384 |$L32207|
00384 |$L32206|
00384 00000040 DCD 0x40
00388 00000084 DCD 0x84
0038c 00000084 DCD 0x84
00390 00000084 DCD 0x84
00394 00000040 DCD 0x40
00398 00000084 DCD 0x84
0039c 00000084 DCD 0x84
003a0 00000084 DCD 0x84
003a4 00000040 DCD 0x40
003a8 00000084 DCD 0x84
003ac 00000084 DCD 0x84
003b0 00000084 DCD 0x84
003b4 00000040 DCD 0x40
003b8 00000084 DCD 0x84
003bc 00000084 DCD 0x84
003c0 00000084 DCD 0x84
003c4 00000040 DCD 0x40
003c8 |$L32122|
; 83 :
; 84 : // supported ATAPI commands
; 85 : case IOCTL_CDROM_READ_SG:
; 86 : case IOCTL_CDROM_TEST_UNIT_READY:
; 87 : case IOCTL_CDROM_DISC_INFO:
; 88 : case IOCTL_CDROM_EJECT_MEDIA:
; 89 : case IOCTL_CDROM_LOAD_MEDIA:
; 90 :
; 91 : // supported DVD commands
; 92 : case IOCTL_DVD_START_SESSION:
; 93 : case IOCTL_DVD_READ_KEY:
; 94 : case IOCTL_DVD_END_SESSION:
; 95 : case IOCTL_DVD_SEND_KEY:
; 96 : case IOCTL_DVD_GET_REGION:
; 97 :
; 98 : // supported audio commands
; 99 : case IOCTL_CDROM_READ_TOC:
; 100 : case IOCTL_CDROM_GET_CONTROL:
; 101 : case IOCTL_CDROM_PLAY_AUDIO_MSF:
; 102 : case IOCTL_CDROM_SEEK_AUDIO_MSF:
; 103 : case IOCTL_CDROM_STOP_AUDIO:
; 104 : case IOCTL_CDROM_PAUSE_AUDIO:
; 105 : case IOCTL_CDROM_RESUME_AUDIO:
; 106 : case IOCTL_CDROM_GET_VOLUME:
; 107 : case IOCTL_CDROM_SET_VOLUME:
; 108 : case IOCTL_CDROM_READ_Q_CHANNEL:
; 109 : case IOCTL_CDROM_GET_LAST_SESSION:
; 110 : case IOCTL_CDROM_RAW_READ:
; 111 : case IOCTL_CDROM_DISK_TYPE:
; 112 : case IOCTL_CDROM_SCAN_AUDIO:
; 113 : case IOCTL_CDROM_ISSUE_INQUIRY:
; 114 :
; 115 : if (IsAtapiDevice()) {
003c8 e59d0024 ldr r0, [sp, #0x24]
003cc eb000000 bl |?IsAtapiDevice@CDisk@@QAAHXZ|
003d0 e58d0014 str r0, [sp, #0x14]
003d4 e59d3014 ldr r3, [sp, #0x14]
003d8 e3530000 cmp r3, #0
003dc 0a000006 beq |$L32123|
; 116 : dwError = AtapiIoctl(pIOReq);
003e0 e59d1028 ldr r1, [sp, #0x28]
003e4 e59d0024 ldr r0, [sp, #0x24]
003e8 eb000000 bl |?AtapiIoctl@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z|
003ec e58d0018 str r0, [sp, #0x18]
003f0 e59d3018 ldr r3, [sp, #0x18]
003f4 e58d3000 str r3, [sp]
; 117 : }
; 118 : else {
003f8 ea000002 b |$L32124|
003fc |$L32123|
; 119 : dwError = ERROR_INVALID_OPERATION;
003fc e3a03d43 mov r3, #0x43, 26
00400 e383301d orr r3, r3, #0x1D
00404 e58d3000 str r3, [sp]
00408 |$L32124|
; 120 : }
; 121 : break;
00408 ea000001 b |$L32119|
0040c |$L32125|
; 122 :
; 123 : default:
; 124 : dwError = ERROR_NOT_SUPPORTED;
0040c e3a03032 mov r3, #0x32
00410 e58d3000 str r3, [sp]
00414 |$L32119|
00414 |$L32117|
; 125 : break;
; 126 : }
; 127 : }
; 128 :
; 129 : return dwError;
00414 e59d3000 ldr r3, [sp]
00418 e58d3004 str r3, [sp, #4]
0041c e59d0004 ldr r0, [sp, #4]
; 130 : }
00420 e28dd01c add sp, sp, #0x1C
00424 e89d6000 ldmia sp, {sp, lr}
00428 e12fff1e bx lr
0042c |$L32212|
0042c 00000000 DCD |??_C@_1HE@IGEJDPHE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AAA?$AAn?$AAd?$AAC?$AAD?$AA?3@|
00430 00000000 DCD |dpCurSettings|
00434 |$M32209|
ENDP ; |?MainIoctl@CPCIDiskAndCD@@UAAKPAU_IOREQ@@@Z|, CPCIDiskAndCD::MainIoctl
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -