📄 diskmain.cod
字号:
00000 |??1CDisk@@UAA@XZ| PROC ; CDisk::~CDisk
; 92 : {
00000 |$L33088|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M33086|
00004 e1a04000 mov r4, r0
; 93 : if (m_hDevKey) {
00008 e5942480 ldr r2, [r4, #0x480]
0000c e59f3048 ldr r3, [pc, #0x48]
00010 e3520000 cmp r2, #0
; 94 : RegCloseKey(m_hDevKey);
00014 11a00002 movne r0, r2
00018 e5843000 str r3, [r4]
0001c 1b000000 blne RegCloseKey
; 95 : }
; 96 :
; 97 : if(m_pDiskPower != NULL) {
00020 e59436d4 ldr r3, [r4, #0x6D4]
00024 e1b00003 movs r0, r3
; 98 : delete m_pDiskPower;
00028 15903000 ldrne r3, [r0]
0002c 13a01001 movne r1, #1
00030 15933000 ldrne r3, [r3]
00034 11a0e00f movne lr, pc
00038 112fff13 bxne r3
; 99 : }
; 100 :
; 101 : DeleteCriticalSection(&m_csDisk);
0003c e2840054 add r0, r4, #0x54
00040 eb000000 bl DeleteCriticalSection
; 102 :
; 103 : // deallocate double buffer, if present
; 104 : if (NULL != m_rgbDoubleBuffer) {
00044 e594304c ldr r3, [r4, #0x4C]
00048 e3530000 cmp r3, #0
; 105 : LocalFree((HLOCAL)m_rgbDoubleBuffer);
0004c 11a00003 movne r0, r3
00050 1b000000 blne LocalFree
; 106 : }
; 107 : }
00054 e8bd4010 ldmia sp!, {r4, lr}
00058 e12fff1e bx lr
0005c |$L33091|
0005c 00000000 DCD |??_7CDisk@@6B@|
00060 |$M33087|
ENDP ; |??1CDisk@@UAA@XZ|, CDisk::~CDisk
EXPORT |?StallExecution@CDisk@@QAAXK@Z| ; CDisk::StallExecution
IMPORT |StallExecution|
IMPORT |Sleep|
00000 AREA |.text| { |?StallExecution@CDisk@@QAAXK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?StallExecution@CDisk@@QAAXK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?StallExecution@CDisk@@QAAXK@Z| } ; comdat associative
|$T33099| DCD |$L33098|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |?StallExecution@CDisk@@QAAXK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?StallExecution@CDisk@@QAAXK@Z| PROC ; CDisk::StallExecution
; 121 : {
00000 |$L33098|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33096|
; 122 : if ((dwTime >= 100) && (m_dwDeviceFlags & DFLAGS_DEVICE_CDROM)) {
00004 e3510064 cmp r1, #0x64
00008 3a000008 bcc |$L31960|
0000c e5903690 ldr r3, [r0, #0x690]
00010 e3130301 tst r3, #1, 6
00014 0a000005 beq |$L31960|
; 123 : Sleep (dwTime / 100);
00018 e59f3024 ldr r3, [pc, #0x24]
0001c e0803391 umull r3, r0, r1, r3
00020 e1a002a0 mov r0, r0, lsr #5
00024 eb000000 bl Sleep
; 127 : }
; 128 : }
00028 e49de004 ldr lr, [sp], #4
0002c e12fff1e bx lr
00030 |$L31960|
; 124 : }
; 125 : else {
; 126 : ::StallExecution(dwTime * 10);
00030 e0810101 add r0, r1, r1, lsl #2
00034 e1a00080 mov r0, r0, lsl #1
00038 eb000000 bl StallExecution
; 127 : }
; 128 : }
0003c e49de004 ldr lr, [sp], #4
00040 e12fff1e bx lr
00044 |$L33101|
00044 51eb851f DCD 0x51eb851f
00048 |$M33097|
ENDP ; |?StallExecution@CDisk@@QAAXK@Z|, CDisk::StallExecution
IMPORT |EnterCriticalSection|
00000 AREA |.text| { |?TakeCS@CDisk@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?TakeCS@CDisk@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?TakeCS@CDisk@@UAAXXZ| } ; comdat associative
|$T33108| DCD |$L33107|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |?TakeCS@CDisk@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?TakeCS@CDisk@@UAAXXZ| PROC ; CDisk::TakeCS
; 133 : void CDisk::TakeCS() { EnterCriticalSection(&m_csDisk); }
00000 |$L33107|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33105|
00004 e2800054 add r0, r0, #0x54
00008 eb000000 bl EnterCriticalSection
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M33106|
ENDP ; |?TakeCS@CDisk@@UAAXXZ|, CDisk::TakeCS
IMPORT |LeaveCriticalSection|
00000 AREA |.text| { |?ReleaseCS@CDisk@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?ReleaseCS@CDisk@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?ReleaseCS@CDisk@@UAAXXZ| } ; comdat associative
|$T33116| DCD |$L33115|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |?ReleaseCS@CDisk@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?ReleaseCS@CDisk@@UAAXXZ| PROC ; CDisk::ReleaseCS
; 134 : void CDisk::ReleaseCS() { LeaveCriticalSection(&m_csDisk); }
00000 |$L33115|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33113|
00004 e2800054 add r0, r0, #0x54
00008 eb000000 bl LeaveCriticalSection
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M33114|
ENDP ; |?ReleaseCS@CDisk@@UAAXXZ|, CDisk::ReleaseCS
EXPORT |?Open@CDisk@@QAAXXZ| ; CDisk::Open
IMPORT |InterlockedIncrement|
00000 AREA |.text| { |?Open@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Open@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?Open@CDisk@@QAAXXZ| } ; comdat associative
|$T33124| DCD |$L33123|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Open@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Open@CDisk@@QAAXXZ| PROC ; CDisk::Open
; 135 : void CDisk::Open() { InterlockedIncrement((LONG *)&m_dwOpenCount); }
00000 |$L33123|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33121|
00004 e2800068 add r0, r0, #0x68
00008 eb000000 bl InterlockedIncrement
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M33122|
ENDP ; |?Open@CDisk@@QAAXXZ|, CDisk::Open
EXPORT |?Close@CDisk@@QAAXXZ| ; CDisk::Close
IMPORT |InterlockedDecrement|
00000 AREA |.text| { |?Close@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Close@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?Close@CDisk@@QAAXXZ| } ; comdat associative
|$T33132| DCD |$L33131|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Close@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Close@CDisk@@QAAXXZ| PROC ; CDisk::Close
; 136 : void CDisk::Close() { InterlockedDecrement((LONG *)&m_dwOpenCount); }
00000 |$L33131|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33129|
00004 e2800068 add r0, r0, #0x68
00008 eb000000 bl InterlockedDecrement
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M33130|
ENDP ; |?Close@CDisk@@QAAXXZ|, CDisk::Close
EXPORT |?IsAtapiDevice@CDisk@@QAAHXZ| ; CDisk::IsAtapiDevice
00000 AREA |.text| { |?IsAtapiDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?IsAtapiDevice@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?IsAtapiDevice@CDisk@@QAAHXZ| } ; comdat associative
|$T33142| DCD |$L33141|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?IsAtapiDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?IsAtapiDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsAtapiDevice
; 137 : BOOL CDisk::IsAtapiDevice() { return m_fAtapiDevice; }
00000 |$L33141|
00000 |$M33139|
00000 e5900698 ldr r0, [r0, #0x698]
00004 e12fff1e bx lr
00008 |$M33140|
ENDP ; |?IsAtapiDevice@CDisk@@QAAHXZ|, CDisk::IsAtapiDevice
EXPORT |?IsCDRomDevice@CDisk@@QAAHXZ| ; CDisk::IsCDRomDevice
00000 AREA |.text| { |?IsCDRomDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?IsCDRomDevice@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?IsCDRomDevice@CDisk@@QAAHXZ| } ; comdat associative
|$T33154| DCD |$L33153|
DCD 0x40000800
; Function compile flags: /Ogsy
00000 AREA |.text| { |?IsCDRomDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?IsCDRomDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsCDRomDevice
; 138 : BOOL CDisk::IsCDRomDevice() { return (((m_Id.GeneralConfiguration >> 8) & 0x1f) == ATA_IDDEVICE_CDROM); }
00000 |$L33153|
00000 |$M33151|
00000 e5d02490 ldrb r2, [r0, #0x490]
00004 e5d03491 ldrb r3, [r0, #0x491]
00008 e1823403 orr r3, r2, r3, lsl #8
0000c e2033c1f and r3, r3, #0x1F, 24
00010 e3530c05 cmp r3, #5, 24
00014 03a00001 moveq r0, #1
00018 13a00000 movne r0, #0
0001c e12fff1e bx lr
00020 |$M33152|
ENDP ; |?IsCDRomDevice@CDisk@@QAAHXZ|, CDisk::IsCDRomDevice
EXPORT |?IsDVDROMDevice@CDisk@@QAAHXZ| ; CDisk::IsDVDROMDevice
00000 AREA |.text| { |?IsDVDROMDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?IsDVDROMDevice@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?IsDVDROMDevice@CDisk@@QAAHXZ| } ; comdat associative
|$T33163| DCD |$L33162|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?IsDVDROMDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?IsDVDROMDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsDVDROMDevice
; 139 : BOOL CDisk::IsDVDROMDevice() { return TRUE; }
00000 |$L33162|
00000 |$M33160|
00000 e3a00001 mov r0, #1
00004 e12fff1e bx lr
00008 |$M33161|
ENDP ; |?IsDVDROMDevice@CDisk@@QAAHXZ|, CDisk::IsDVDROMDevice
EXPORT |?IsDiskDevice@CDisk@@QAAHXZ| ; CDisk::IsDiskDevice
00000 AREA |.text| { |?IsDiskDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?IsDiskDevice@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?IsDiskDevice@CDisk@@QAAHXZ| } ; comdat associative
|$T33175| DCD |$L33174|
DCD 0x40000700
; Function compile flags: /Ogsy
00000 AREA |.text| { |?IsDiskDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?IsDiskDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsDiskDevice
; 140 : BOOL CDisk::IsDiskDevice() { return (((m_Id.GeneralConfiguration >> 8) & 0x1f) == ATA_IDDEVICE_DISK); }
00000 |$L33174|
00000 |$M33172|
00000 e5d02490 ldrb r2, [r0, #0x490]
00004 e5d03491 ldrb r3, [r0, #0x491]
00008 e1823403 orr r3, r2, r3, lsl #8
0000c e3130c1f tst r3, #0x1F, 24
00010 03a00001 moveq r0, #1
00014 13a00000 movne r0, #0
00018 e12fff1e bx lr
0001c |$M33173|
ENDP ; |?IsDiskDevice@CDisk@@QAAHXZ|, CDisk::IsDiskDevice
EXPORT |?IsRemoveableDevice@CDisk@@QAAHXZ| ; CDisk::IsRemoveableDevice
00000 AREA |.text| { |?IsRemoveableDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?IsRemoveableDevice@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?IsRemoveableDevice@CDisk@@QAAHXZ| } ; comdat associative
|$T33185| DCD |$L33184|
DCD 0x40000500
; Function compile flags: /Ogsy
00000 AREA |.text| { |?IsRemoveableDevice@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?IsRemoveableDevice@CDisk@@QAAHXZ| PROC ; CDisk::IsRemoveableDevice
; 141 : BOOL CDisk::IsRemoveableDevice() { return (m_Id.GeneralConfiguration & IDE_IDDATA_REMOVABLE); }
00000 |$L33184|
00000 |$M33182|
00000 e5d02490 ldrb r2, [r0, #0x490]
00004 e5d03491 ldrb r3, [r0, #0x491]
00008 e1823403 orr r3, r2, r3, lsl #8
0000c e2030080 and r0, r3, #0x80
00010 e12fff1e bx lr
00014 |$M33183|
ENDP ; |?IsRemoveableDevice@CDisk@@QAAHXZ|, CDisk::IsRemoveableDevice
EXPORT |?IsDMASupported@CDisk@@QAAHXZ| ; CDisk::IsDMASupported
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -