📄 atamain.cod
字号:
002c0 e2833094 add r3, r3, #0x94
002c4 e5933000 ldr r3, [r3]
002c8 e283302c add r3, r3, #0x2C
002cc e5930000 ldr r0, [r3]
002d0 eb000000 bl LocalFree
002d4 |$L32363|
; 79 : }
; 80 : LocalFree(m_pIdeReg);
002d4 e59d3040 ldr r3, [sp, #0x40]
002d8 e2833094 add r3, r3, #0x94
002dc e5930000 ldr r0, [r3]
002e0 eb000000 bl LocalFree
002e4 |$L32360|
; 81 : }
; 82 : // deinitialize port structures
; 83 : if (m_pPrimaryPort) {
002e4 e59d3040 ldr r3, [sp, #0x40]
002e8 e2833098 add r3, r3, #0x98
002ec e5933000 ldr r3, [r3]
002f0 e3530000 cmp r3, #0
002f4 0a000011 beq |$L32364|
; 84 : delete m_pPrimaryPort;
002f8 e59d3040 ldr r3, [sp, #0x40]
002fc e2833098 add r3, r3, #0x98
00300 e5933000 ldr r3, [r3]
00304 e58d3010 str r3, [sp, #0x10]
00308 e59d3010 ldr r3, [sp, #0x10]
0030c e58d300c str r3, [sp, #0xC]
00310 e59d300c ldr r3, [sp, #0xC]
00314 e3530000 cmp r3, #0
00318 0a000006 beq |$L33072|
0031c e3a01001 mov r1, #1
00320 e59d000c ldr r0, [sp, #0xC]
00324 eb000000 bl |??_GCPort@@QAAPAXI@Z|
00328 e58d0028 str r0, [sp, #0x28]
0032c e59d3028 ldr r3, [sp, #0x28]
00330 e58d302c str r3, [sp, #0x2C]
00334 ea000001 b |$L33073|
00338 |$L33072|
00338 e3a03000 mov r3, #0
0033c e58d302c str r3, [sp, #0x2C]
00340 |$L33073|
00340 |$L32364|
; 85 : }
; 86 : if (m_pSecondaryPort) {
00340 e59d3040 ldr r3, [sp, #0x40]
00344 e283309c add r3, r3, #0x9C
00348 e5933000 ldr r3, [r3]
0034c e3530000 cmp r3, #0
00350 0a000011 beq |$L32367|
; 87 : delete m_pSecondaryPort;
00354 e59d3040 ldr r3, [sp, #0x40]
00358 e283309c add r3, r3, #0x9C
0035c e5933000 ldr r3, [r3]
00360 e58d3018 str r3, [sp, #0x18]
00364 e59d3018 ldr r3, [sp, #0x18]
00368 e58d3014 str r3, [sp, #0x14]
0036c e59d3014 ldr r3, [sp, #0x14]
00370 e3530000 cmp r3, #0
00374 0a000006 beq |$L33076|
00378 e3a01001 mov r1, #1
0037c e59d0014 ldr r0, [sp, #0x14]
00380 eb000000 bl |??_GCPort@@QAAPAXI@Z|
00384 e58d0030 str r0, [sp, #0x30]
00388 e59d3030 ldr r3, [sp, #0x30]
0038c e58d3034 str r3, [sp, #0x34]
00390 ea000001 b |$L33077|
00394 |$L33076|
00394 e3a03000 mov r3, #0
00398 e58d3034 str r3, [sp, #0x34]
0039c |$L33077|
0039c |$L32367|
; 88 : }
; 89 : }
0039c e28dd038 add sp, sp, #0x38
003a0 e89d6000 ldmia sp, {sp, lr}
003a4 e12fff1e bx lr
003a8 |$L33082|
003a8 00000000 DCD |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@|
003ac 00000000 DCD |dpCurSettings|
003b0 00000000 DCD |??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@|
003b4 |$M33079|
ENDP ; |??1CIDEBUS@@QAA@XZ|, CIDEBUS::~CIDEBUS
EXPORT |??1CPort@@QAA@XZ| ; CPort::~CPort
00000 AREA |.text| { |??_GCPort@@QAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$??_GCPort@@QAAPAXI@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |??_GCPort@@QAAPAXI@Z| } ; comdat associative
|$T33088| DCD |$L33087|
DCD 0x40001104
; Function compile flags: /Odt
00000 AREA |.text| { |??_GCPort@@QAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |??_GCPort@@QAAPAXI@Z| PROC ; CPort::`scalar deleting destructor'
00000 |$L33087|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M33085|
00010 e59d000c ldr r0, [sp, #0xC]
00014 eb000000 bl |??1CPort@@QAA@XZ|
00018 e59d3010 ldr r3, [sp, #0x10]
0001c e3130001 tst r3, #1
00020 0a000001 beq |$L32373|
00024 e59d000c ldr r0, [sp, #0xC]
00028 eb000000 bl |??3@YAXPAX@Z|
0002c |$L32373|
0002c e59d300c ldr r3, [sp, #0xC]
00030 e58d3000 str r3, [sp]
00034 e59d0000 ldr r0, [sp]
00038 e28dd004 add sp, sp, #4
0003c e89d6000 ldmia sp, {sp, lr}
00040 e12fff1e bx lr
00044 |$M33086|
ENDP ; |??_GCPort@@QAAPAXI@Z|, CPort::`scalar deleting destructor'
EXPORT |??0CPort@@QAA@PAVCIDEBUS@@@Z| ; CPort::CPort
IMPORT |InitializeCriticalSection|
00010 AREA |.pdata|, PDATA
|$T33098| DCD |$L33097|
DCD 0x40005904
; Function compile flags: /Odt
003b4 AREA |.text|, CODE, ARM
003b4 |??0CPort@@QAA@PAVCIDEBUS@@@Z| PROC ; CPort::CPort
; 97 : {
003b4 |$L33097|
003b4 e1a0c00d mov r12, sp
003b8 e92d0003 stmdb sp!, {r0, r1}
003bc e92d5000 stmdb sp!, {r12, lr}
003c0 e24dd008 sub sp, sp, #8
003c4 |$M33095|
; 98 : DEBUGCHK(pParent);
003c4 e59d3014 ldr r3, [sp, #0x14]
003c8 e3530000 cmp r3, #0
003cc 0a000002 beq |$L33092|
003d0 e3a03001 mov r3, #1
003d4 e58d3004 str r3, [sp, #4]
003d8 ea000007 b |$L33093|
003dc |$L33092|
003dc e3a03062 mov r3, #0x62
003e0 e59f212c ldr r2, [pc, #0x12C]
003e4 e59f1124 ldr r1, [pc, #0x124]
003e8 e59f011c ldr r0, [pc, #0x11C]
003ec eb000000 bl NKDbgPrintfW
003f0 e6000010 DCD 0xe6000010
003f4 e3a03000 mov r3, #0
003f8 e58d3004 str r3, [sp, #4]
003fc |$L33093|
; 99 : InitializeCriticalSection(&m_csPort);
003fc e59d3010 ldr r3, [sp, #0x10]
00400 e2830004 add r0, r3, #4
00404 eb000000 bl InitializeCriticalSection
; 100 : // hook up bus
; 101 : m_pController = pParent;
00408 e59d2014 ldr r2, [sp, #0x14]
0040c e59d3010 ldr r3, [sp, #0x10]
00410 e5832000 str r2, [r3]
; 102 : // initialize flags
; 103 : m_fInitialized = 0;
00414 e59d3010 ldr r3, [sp, #0x10]
00418 e2832018 add r2, r3, #0x18
0041c e3a03000 mov r3, #0
00420 e5823000 str r3, [r2]
; 104 : m_dwFlag = 0;
00424 e59d3010 ldr r3, [sp, #0x10]
00428 e283201c add r2, r3, #0x1C
0042c e3a03000 mov r3, #0
00430 e5823000 str r3, [r2]
; 105 : // initialize I/O ports
; 106 : m_dwRegBase = 0;
00434 e59d3010 ldr r3, [sp, #0x10]
00438 e2832020 add r2, r3, #0x20
0043c e3a03000 mov r3, #0
00440 e5823000 str r3, [r2]
; 107 : m_dwRegAlt = 0;
00444 e59d3010 ldr r3, [sp, #0x10]
00448 e2832024 add r2, r3, #0x24
0044c e3a03000 mov r3, #0
00450 e5823000 str r3, [r2]
; 108 : m_dwBMR = 0;
00454 e59d3010 ldr r3, [sp, #0x10]
00458 e2832028 add r2, r3, #0x28
0045c e3a03000 mov r3, #0
00460 e5823000 str r3, [r2]
; 109 : m_dwBMRStatic = 0;
00464 e59d3010 ldr r3, [sp, #0x10]
00468 e283202c add r2, r3, #0x2C
0046c e3a03000 mov r3, #0
00470 e5823000 str r3, [r2]
; 110 : // initialize interrupt data
; 111 : m_hIRQEvent = NULL;
00474 e59d3010 ldr r3, [sp, #0x10]
00478 e2832030 add r2, r3, #0x30
0047c e3a03000 mov r3, #0
00480 e5823000 str r3, [r2]
; 112 : m_hThread = NULL;
00484 e59d3010 ldr r3, [sp, #0x10]
00488 e2832044 add r2, r3, #0x44
0048c e3a03000 mov r3, #0
00490 e5823000 str r3, [r2]
; 113 : m_dwSysIntr = SYSINTR_NOP;
00494 e59d3010 ldr r3, [sp, #0x10]
00498 e283203c add r2, r3, #0x3C
0049c e3a03000 mov r3, #0
004a0 e5823000 str r3, [r2]
; 114 : m_dwIrq = IRQ_UNSPECIFIED;
004a4 e59d3010 ldr r3, [sp, #0x10]
004a8 e2832040 add r2, r3, #0x40
004ac e3e03000 mvn r3, #0
004b0 e5823000 str r3, [r2]
; 115 : // initialize master/slave registry value set
; 116 : m_pDskReg[0] = NULL;
004b4 e59d3010 ldr r3, [sp, #0x10]
004b8 e2832034 add r2, r3, #0x34
004bc e3a03000 mov r3, #0
004c0 e5823000 str r3, [r2]
; 117 : m_pDskReg[1] = NULL;
004c4 e59d3010 ldr r3, [sp, #0x10]
004c8 e2832038 add r2, r3, #0x38
004cc e3a03000 mov r3, #0
004d0 e5823000 str r3, [r2]
; 118 : // initialize master/slave stream interface handles
; 119 : m_pDisk[0] = NULL;
004d4 e59d3010 ldr r3, [sp, #0x10]
004d8 e2832048 add r2, r3, #0x48
004dc e3a03000 mov r3, #0
004e0 e5823000 str r3, [r2]
; 120 : m_pDisk[1] = NULL;
004e4 e59d3010 ldr r3, [sp, #0x10]
004e8 e283204c add r2, r3, #0x4C
004ec e3a03000 mov r3, #0
004f0 e5823000 str r3, [r2]
; 121 : }
004f4 e59d3010 ldr r3, [sp, #0x10]
004f8 e58d3000 str r3, [sp]
004fc e59d0000 ldr r0, [sp]
00500 e28dd008 add sp, sp, #8
00504 e89d6000 ldmia sp, {sp, lr}
00508 e12fff1e bx lr
0050c |$L33099|
0050c 00000000 DCD |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@|
00510 00000000 DCD |dpCurSettings|
00514 00000000 DCD |??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@|
00518 |$M33096|
ENDP ; |??0CPort@@QAA@PAVCIDEBUS@@@Z|, CPort::CPort
IMPORT |DeleteCriticalSection|
IMPORT |CloseHandle|
IMPORT |InterruptDisable|
IMPORT |MmUnmapIoSpace|
00018 AREA |.pdata|, PDATA
|$T33104| DCD |$L33103|
DCD 0x40005303
; Function compile flags: /Odt
00518 AREA |.text|, CODE, ARM
00518 |??1CPort@@QAA@XZ| PROC ; CPort::~CPort
; 126 : {
00518 |$L33103|
00518 e1a0c00d mov r12, sp
0051c e92d0001 stmdb sp!, {r0}
00520 e92d5000 stmdb sp!, {r12, lr}
00524 |$M33101|
; 127 : DeleteCriticalSection(&m_csPort);
00524 e59d3008 ldr r3, [sp, #8]
00528 e2830004 add r0, r3, #4
0052c eb000000 bl DeleteCriticalSection
; 128 : // unmap ATA channel's I/O windows
; 129 : if (m_dwRegBase) {
00530 e59d3008 ldr r3, [sp, #8]
00534 e2833020 add r3, r3, #0x20
00538 e5933000 ldr r3, [r3]
0053c e3530000 cmp r3, #0
00540 0a000004 beq |$L32383|
; 130 : MmUnmapIoSpace((LPVOID)m_dwRegBase, ATA_REG_LENGTH);
00544 e3a01008 mov r1, #8
00548 e59d3008 ldr r3, [sp, #8]
0054c e2833020 add r3, r3, #0x20
00550 e5930000 ldr r0, [r3]
00554 eb000000 bl MmUnmapIoSpace
00558 |$L32383|
; 131 : }
; 132 : if (m_dwRegAlt) {
00558 e59d3008 ldr r3, [sp, #8]
0055c e2833024 add r3, r3, #0x24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -