📄 diskmain.cod
字号:
; Function compile flags: /Odt
00228 AREA |.text|, CODE, ARM
00228 |??1CDisk@@UAA@XZ| PROC ; CDisk::~CDisk
; 92 : {
00228 |$L32936|
00228 e1a0c00d mov r12, sp
0022c e92d0001 stmdb sp!, {r0}
00230 e92d5000 stmdb sp!, {r12, lr}
00234 e24dd010 sub sp, sp, #0x10
00238 |$M32934|
00238 e59f20d8 ldr r2, [pc, #0xD8]
0023c e59d3018 ldr r3, [sp, #0x18]
00240 e5832000 str r2, [r3]
; 93 : if (m_hDevKey) {
00244 e59d3018 ldr r3, [sp, #0x18]
00248 e2833d12 add r3, r3, #0x12, 26
0024c e5933000 ldr r3, [r3]
00250 e3530000 cmp r3, #0
00254 0a000003 beq |$L31958|
; 94 : RegCloseKey(m_hDevKey);
00258 e59d3018 ldr r3, [sp, #0x18]
0025c e2833d12 add r3, r3, #0x12, 26
00260 e5930000 ldr r0, [r3]
00264 eb000000 bl RegCloseKey
00268 |$L31958|
; 95 : }
; 96 :
; 97 : if(m_pDiskPower != NULL) {
00268 e59d3018 ldr r3, [sp, #0x18]
0026c e2833c06 add r3, r3, #6, 24
00270 e28330d4 add r3, r3, #0xD4
00274 e5933000 ldr r3, [r3]
00278 e3530000 cmp r3, #0
0027c 0a000016 beq |$L31959|
; 98 : delete m_pDiskPower;
00280 e59d3018 ldr r3, [sp, #0x18]
00284 e2833c06 add r3, r3, #6, 24
00288 e28330d4 add r3, r3, #0xD4
0028c e5933000 ldr r3, [r3]
00290 e58d3004 str r3, [sp, #4]
00294 e59d3004 ldr r3, [sp, #4]
00298 e58d3000 str r3, [sp]
0029c e59d3000 ldr r3, [sp]
002a0 e3530000 cmp r3, #0
002a4 0a00000a beq |$L32932|
002a8 e3a01001 mov r1, #1
002ac e59d3000 ldr r3, [sp]
002b0 e5933000 ldr r3, [r3]
002b4 e59d0000 ldr r0, [sp]
002b8 e5933000 ldr r3, [r3]
002bc e1a0e00f mov lr, pc
002c0 e12fff13 bx r3
002c4 e58d0008 str r0, [sp, #8]
002c8 e59d3008 ldr r3, [sp, #8]
002cc e58d300c str r3, [sp, #0xC]
002d0 ea000001 b |$L32933|
002d4 |$L32932|
002d4 e3a03000 mov r3, #0
002d8 e58d300c str r3, [sp, #0xC]
002dc |$L32933|
002dc |$L31959|
; 99 : }
; 100 :
; 101 : DeleteCriticalSection(&m_csDisk);
002dc e59d3018 ldr r3, [sp, #0x18]
002e0 e2830054 add r0, r3, #0x54
002e4 eb000000 bl DeleteCriticalSection
; 102 :
; 103 : // deallocate double buffer, if present
; 104 : if (NULL != m_rgbDoubleBuffer) {
002e8 e59d3018 ldr r3, [sp, #0x18]
002ec e283304c add r3, r3, #0x4C
002f0 e5933000 ldr r3, [r3]
002f4 e3530000 cmp r3, #0
002f8 0a000003 beq |$L31962|
; 105 : LocalFree((HLOCAL)m_rgbDoubleBuffer);
002fc e59d3018 ldr r3, [sp, #0x18]
00300 e283304c add r3, r3, #0x4C
00304 e5930000 ldr r0, [r3]
00308 eb000000 bl LocalFree
0030c |$L31962|
; 106 : }
; 107 : }
0030c e28dd010 add sp, sp, #0x10
00310 e89d6000 ldmia sp, {sp, lr}
00314 e12fff1e bx lr
00318 |$L32938|
00318 00000000 DCD |??_7CDisk@@6B@|
0031c |$M32935|
ENDP ; |??1CDisk@@UAA@XZ|, CDisk::~CDisk
EXPORT |?StallExecution@CDisk@@QAAXK@Z| ; CDisk::StallExecution
IMPORT |StallExecution|
IMPORT |Sleep|
IMPORT |__rt_udiv|
00018 AREA |.pdata|, PDATA
|$T32944| DCD |$L32943|
DCD 0x40001603
; Function compile flags: /Odt
0031c AREA |.text|, CODE, ARM
0031c |?StallExecution@CDisk@@QAAXK@Z| PROC ; CDisk::StallExecution
; 121 : {
0031c |$L32943|
0031c e1a0c00d mov r12, sp
00320 e92d0003 stmdb sp!, {r0, r1}
00324 e92d5000 stmdb sp!, {r12, lr}
00328 |$M32941|
; 122 : if ((dwTime >= 100) && (m_dwDeviceFlags & DFLAGS_DEVICE_CDROM)) {
00328 e59d300c ldr r3, [sp, #0xC]
0032c e3530064 cmp r3, #0x64
00330 3a000009 bcc |$L31968|
00334 e59d3008 ldr r3, [sp, #8]
00338 e2833e69 add r3, r3, #0x69, 28
0033c e5933000 ldr r3, [r3]
00340 e3130301 tst r3, #1, 6
00344 0a000004 beq |$L31968|
; 123 : Sleep (dwTime / 100);
00348 e59d100c ldr r1, [sp, #0xC]
0034c e3a00064 mov r0, #0x64
00350 eb000000 bl __rt_udiv
00354 eb000000 bl Sleep
; 124 : }
; 125 : else {
00358 ea000003 b |$L31969|
0035c |$L31968|
; 126 : ::StallExecution(dwTime * 10);
0035c e59d200c ldr r2, [sp, #0xC]
00360 e3a0300a mov r3, #0xA
00364 e0000392 mul r0, r2, r3
00368 eb000000 bl StallExecution
0036c |$L31969|
; 127 : }
; 128 : }
0036c e89d6000 ldmia sp, {sp, lr}
00370 e12fff1e bx lr
00374 |$M32942|
ENDP ; |?StallExecution@CDisk@@QAAXK@Z|, CDisk::StallExecution
IMPORT |EnterCriticalSection|
00020 AREA |.pdata|, PDATA
|$T32949| DCD |$L32948|
DCD 0x40000803
; Function compile flags: /Odt
00374 AREA |.text|, CODE, ARM
00374 |?TakeCS@CDisk@@UAAXXZ| PROC ; CDisk::TakeCS
; 133 : void CDisk::TakeCS() { EnterCriticalSection(&m_csDisk); }
00374 |$L32948|
00374 e1a0c00d mov r12, sp
00378 e92d0001 stmdb sp!, {r0}
0037c e92d5000 stmdb sp!, {r12, lr}
00380 |$M32946|
00380 e59d3008 ldr r3, [sp, #8]
00384 e2830054 add r0, r3, #0x54
00388 eb000000 bl EnterCriticalSection
0038c e89d6000 ldmia sp, {sp, lr}
00390 e12fff1e bx lr
00394 |$M32947|
ENDP ; |?TakeCS@CDisk@@UAAXXZ|, CDisk::TakeCS
IMPORT |LeaveCriticalSection|
00028 AREA |.pdata|, PDATA
|$T32954| DCD |$L32953|
DCD 0x40000803
; Function compile flags: /Odt
00394 AREA |.text|, CODE, ARM
00394 |?ReleaseCS@CDisk@@UAAXXZ| PROC ; CDisk::ReleaseCS
; 134 : void CDisk::ReleaseCS() { LeaveCriticalSection(&m_csDisk); }
00394 |$L32953|
00394 e1a0c00d mov r12, sp
00398 e92d0001 stmdb sp!, {r0}
0039c e92d5000 stmdb sp!, {r12, lr}
003a0 |$M32951|
003a0 e59d3008 ldr r3, [sp, #8]
003a4 e2830054 add r0, r3, #0x54
003a8 eb000000 bl LeaveCriticalSection
003ac e89d6000 ldmia sp, {sp, lr}
003b0 e12fff1e bx lr
003b4 |$M32952|
ENDP ; |?ReleaseCS@CDisk@@UAAXXZ|, CDisk::ReleaseCS
EXPORT |?Open@CDisk@@QAAXXZ| ; CDisk::Open
IMPORT |InterlockedIncrement|
00030 AREA |.pdata|, PDATA
|$T32959| DCD |$L32958|
DCD 0x40000803
; Function compile flags: /Odt
003b4 AREA |.text|, CODE, ARM
003b4 |?Open@CDisk@@QAAXXZ| PROC ; CDisk::Open
; 135 : void CDisk::Open() { InterlockedIncrement((LONG *)&m_dwOpenCount); }
003b4 |$L32958|
003b4 e1a0c00d mov r12, sp
003b8 e92d0001 stmdb sp!, {r0}
003bc e92d5000 stmdb sp!, {r12, lr}
003c0 |$M32956|
003c0 e59d3008 ldr r3, [sp, #8]
003c4 e2830068 add r0, r3, #0x68
003c8 eb000000 bl InterlockedIncrement
003cc e89d6000 ldmia sp, {sp, lr}
003d0 e12fff1e bx lr
003d4 |$M32957|
ENDP ; |?Open@CDisk@@QAAXXZ|, CDisk::Open
EXPORT |?Close@CDisk@@QAAXXZ| ; CDisk::Close
IMPORT |InterlockedDecrement|
00038 AREA |.pdata|, PDATA
|$T32964| DCD |$L32963|
DCD 0x40000803
; Function compile flags: /Odt
003d4 AREA |.text|, CODE, ARM
003d4 |?Close@CDisk@@QAAXXZ| PROC ; CDisk::Close
; 136 : void CDisk::Close() { InterlockedDecrement((LONG *)&m_dwOpenCount); }
003d4 |$L32963|
003d4 e1a0c00d mov r12, sp
003d8 e92d0001 stmdb sp!, {r0}
003dc e92d5000 stmdb sp!, {r12, lr}
003e0 |$M32961|
003e0 e59d3008 ldr r3, [sp, #8]
003e4 e2830068 add r0, r3, #0x68
003e8 eb000000 bl InterlockedDecrement
003ec e89d6000 ldmia sp, {sp, lr}
003f0 e12fff1e bx lr
003f4 |$M32962|
ENDP ; |?Close@CDisk@@QAAXXZ|, CDisk::Close
EXPORT |?IsAtapiDevice@CDisk@@QAAHXZ| ; CDisk::IsAtapiDevice
00040 AREA |.pdata|, PDATA
|$T32970| DCD |$L32969|
DCD 0x40000d04
; Function compile flags: /Odt
003f4 AREA |.text|, CODE, ARM
003f4 |?IsAtapiDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsAtapiDevice
; 137 : BOOL CDisk::IsAtapiDevice() { return m_fAtapiDevice; }
003f4 |$L32969|
003f4 e1a0c00d mov r12, sp
003f8 e92d0001 stmdb sp!, {r0}
003fc e92d5000 stmdb sp!, {r12, lr}
00400 e24dd004 sub sp, sp, #4
00404 |$M32967|
00404 e59d300c ldr r3, [sp, #0xC]
00408 e2833c06 add r3, r3, #6, 24
0040c e2833098 add r3, r3, #0x98
00410 e5933000 ldr r3, [r3]
00414 e58d3000 str r3, [sp]
00418 e59d0000 ldr r0, [sp]
0041c e28dd004 add sp, sp, #4
00420 e89d6000 ldmia sp, {sp, lr}
00424 e12fff1e bx lr
00428 |$M32968|
ENDP ; |?IsAtapiDevice@CDisk@@QAAHXZ|, CDisk::IsAtapiDevice
EXPORT |?IsCDRomDevice@CDisk@@QAAHXZ| ; CDisk::IsCDRomDevice
00048 AREA |.pdata|, PDATA
|$T32978| DCD |$L32977|
DCD 0x40001b04
; Function compile flags: /Odt
00428 AREA |.text|, CODE, ARM
00428 |?IsCDRomDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsCDRomDevice
; 138 : BOOL CDisk::IsCDRomDevice() { return (((m_Id.GeneralConfiguration >> 8) & 0x1f) == ATA_IDDEVICE_CDROM); }
00428 |$L32977|
00428 e1a0c00d mov r12, sp
0042c e92d0001 stmdb sp!, {r0}
00430 e92d5000 stmdb sp!, {r12, lr}
00434 e24dd008 sub sp, sp, #8
00438 |$M32975|
00438 e59d3010 ldr r3, [sp, #0x10]
0043c e2831e49 add r1, r3, #0x49, 28
00440 e5d13001 ldrb r3, [r1, #1]
00444 e1a03403 mov r3, r3, lsl #8
00448 e1a02803 mov r2, r3, lsl #16
0044c e1a02822 mov r2, r2, lsr #16
00450 e5d13000 ldrb r3, [r1]
00454 e1833002 orr r3, r3, r2
00458 e1a03443 mov r3, r3, asr #8
0045c e203301f and r3, r3, #0x1F
00460 e3530005 cmp r3, #5
00464 1a000002 bne |$L32972|
00468 e3a03001 mov r3, #1
0046c e58d3004 str r3, [sp, #4]
00470 ea000001 b |$L32973|
00474 |$L32972|
00474 e3a03000 mov r3, #0
00478 e58d3004 str r3, [sp, #4]
0047c |$L32973|
0047c e59d3004 ldr r3, [sp, #4]
00480 e58d3000 str r3, [sp]
00484 e59d0000 ldr r0, [sp]
00488 e28dd008 add sp, sp, #8
0048c e89d6000 ldmia sp, {sp, lr}
00490 e12fff1e bx lr
00494 |$M32976|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -