📄 atamain.cod
字号:
007c4 e3a03000 mov r3, #0
007c8 e58d3010 str r3, [sp, #0x10]
007cc |$L33125|
; 185 : DEBUGMSG(ZONE_INIT, (TEXT("dwBMRStatic = %08X\r\n"), m_dwBMRStatic));
007cc e59f3040 ldr r3, [pc, #0x40]
007d0 e5933440 ldr r3, [r3, #0x440]
007d4 e3130001 tst r3, #1
007d8 0a000007 beq |$L33126|
007dc e59d3020 ldr r3, [sp, #0x20]
007e0 e283302c add r3, r3, #0x2C
007e4 e5931000 ldr r1, [r3]
007e8 e59f0020 ldr r0, [pc, #0x20]
007ec eb000000 bl NKDbgPrintfW
007f0 e3a03001 mov r3, #1
007f4 e58d3014 str r3, [sp, #0x14]
007f8 ea000001 b |$L33127|
007fc |$L33126|
007fc e3a03000 mov r3, #0
00800 e58d3014 str r3, [sp, #0x14]
00804 |$L33127|
; 186 : }
00804 e28dd018 add sp, sp, #0x18
00808 e89d6000 ldmia sp, {sp, lr}
0080c e12fff1e bx lr
00810 |$L33132|
00810 00000000 DCD |??_C@_1CK@OILLEMFN@?$AAd?$AAw?$AAB?$AAM?$AAR?$AAS?$AAt?$AAa?$AAt?$AAi?$AAc?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
00814 00000000 DCD |dpCurSettings|
00818 00000000 DCD |??_C@_1CK@EMFBDPGK@?$AAd?$AAw?$AAI?$AAr?$AAq?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
0081c 00000000 DCD |??_C@_1CK@CMHPEDII@?$AAd?$AAw?$AAS?$AAy?$AAs?$AAI?$AAn?$AAt?$AAr?$AA?5?$AA?5?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
00820 00000000 DCD |??_C@_1CK@EEJADHGF@?$AAd?$AAw?$AAB?$AAM?$AAR?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
00824 00000000 DCD |??_C@_1CK@FPOOONIE@?$AAd?$AAw?$AAR?$AAe?$AAg?$AAA?$AAl?$AAt?$AA?5?$AA?5?$AA?5?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
00828 00000000 DCD |??_C@_1CK@GODODACL@?$AAd?$AAw?$AAR?$AAe?$AAg?$AAB?$AAa?$AAs?$AAe?$AA?5?$AA?5?$AA?5?$AA?$DN?$AA?5?$AA?$CF?$AA0?$AA8?$AAX?$AA?$AN?$AA?6@|
0082c |$M33129|
ENDP ; |?PrintInfo@CPort@@QAAXXZ|, CPort::PrintInfo
EXPORT |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| ; AtaLoadRegKey
EXPORT |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0DI@NJFJMBCE@d?3?2wince500?2platform?2smdk2440?2dr@| [ DATA ] ; `string'
EXPORT |??_C@_1EI@BAFIPOGD@?$AAA?$AAt?$AAa?$AAL?$AAo?$AAa?$AAd?$AAR?$AAe?$AAg?$AAy?$AAK?$AAe?$AAy?$AA?$DO?$AA?5?$AAF?$AAa?$AAi?$AAl@| [ DATA ] ; `string'
IMPORT |LocalAllocTrace|
IMPORT |RegOpenKeyExW|
IMPORT |RegQueryValueExW|
IMPORT |__rt_udiv|
00038 AREA |.pdata|, PDATA
|$T33143| DCD |$L33142|
DCD 0x40007704
00000 AREA |.rdata| { |??_C@_1EI@BAFIPOGD@?$AAA?$AAt?$AAa?$AAL?$AAo?$AAa?$AAd?$AAR?$AAe?$AAg?$AAy?$AAK?$AAe?$AAy?$AA?$DO?$AA?5?$AAF?$AAa?$AAi?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EI@BAFIPOGD@?$AAA?$AAt?$AAa?$AAL?$AAo?$AAa?$AAd?$AAR?$AAe?$AAg?$AAy?$AAK?$AAe?$AAy?$AA?$DO?$AA?5?$AAF?$AAa?$AAi?$AAl@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "L", 0x0, "o", 0x0, "a", 0x0, "d"
DCB 0x0, "R", 0x0, "e", 0x0, "g", 0x0, "y", 0x0, "K", 0x0, "e"
DCB 0x0, "y", 0x0, ">", 0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i"
DCB 0x0, "l", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o"
DCB 0x0, " ", 0x0, "o", 0x0, "p", 0x0, "e", 0x0, "n", 0x0, " "
DCB 0x0, "%", 0x0, "s", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0DI@NJFJMBCE@d?3?2wince500?2platform?2smdk2440?2dr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DI@NJFJMBCE@d?3?2wince500?2platform?2smdk2440?2dr@| DCB "d:\\winc"
DCB "e500\\platform\\smdk2440\\drivers\\atapi\\atamain.cpp", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| DCB "K", 0x0, "e", 0x0, "y", 0x0
DCB 0x0, 0x0 ; `string'
; Function compile flags: /Odt
0082c AREA |.text|, CODE, ARM
0082c |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| PROC ; AtaLoadRegKey
; 197 : {
0082c |$L33142|
0082c e1a0c00d mov r12, sp
00830 e92d0003 stmdb sp!, {r0, r1}
00834 e92d5000 stmdb sp!, {r12, lr}
00838 e24dd030 sub sp, sp, #0x30
0083c |$M33140|
; 198 : DWORD dwValueType; // registry value type
; 199 : DWORD dwValueLength = 0; // registry value length
0083c e3a03000 mov r3, #0
00840 e58d300c str r3, [sp, #0xC]
; 200 : PTSTR szDeviceKey = NULL; // name of device key; value associated with "Key"
00844 e3a03000 mov r3, #0
00848 e58d3008 str r3, [sp, #8]
; 201 : HKEY hDeviceKey = NULL; // handle to device key; handle to "Key"
0084c e3a03000 mov r3, #0
00850 e58d3014 str r3, [sp, #0x14]
; 202 :
; 203 : // query the value of "Key" with @dwValueLength=0, to determine the actual
; 204 : // length of the value (so as to allocate the exact amount of memory)
; 205 :
; 206 : if (ERROR_SUCCESS == RegQueryValueEx(hActiveKey, DEVLOAD_DEVKEY_VALNAME, NULL, &dwValueType, NULL, &dwValueLength)) {
00854 e28d300c add r3, sp, #0xC
00858 e58d3004 str r3, [sp, #4]
0085c e3a03000 mov r3, #0
00860 e58d3000 str r3, [sp]
00864 e28d3010 add r3, sp, #0x10
00868 e3a02000 mov r2, #0
0086c e59f118c ldr r1, [pc, #0x18C]
00870 e59d0038 ldr r0, [sp, #0x38]
00874 eb000000 bl RegQueryValueExW
00878 e58d001c str r0, [sp, #0x1C]
0087c e59d301c ldr r3, [sp, #0x1C]
00880 e3530000 cmp r3, #0
00884 1a000044 bne |$L32423|
; 207 :
; 208 : // allocate just enough memory to store the value of "Key"
; 209 : szDeviceKey = (PTSTR)LocalAlloc(LPTR, dwValueLength);
00888 e59f3174 ldr r3, [pc, #0x174]
0088c e3a020d1 mov r2, #0xD1
00890 e59d100c ldr r1, [sp, #0xC]
00894 e3a00040 mov r0, #0x40
00898 eb000000 bl LocalAllocTrace
0089c e58d0020 str r0, [sp, #0x20]
008a0 e59d3020 ldr r3, [sp, #0x20]
008a4 e58d3008 str r3, [sp, #8]
; 210 : if (szDeviceKey) {
008a8 e59d3008 ldr r3, [sp, #8]
008ac e3530000 cmp r3, #0
008b0 0a000039 beq |$L32427|
; 211 :
; 212 : // read the actual value of "Key" and null terminate the target buffer
; 213 : RegQueryValueEx(hActiveKey, DEVLOAD_DEVKEY_VALNAME, NULL, &dwValueType, (PBYTE)szDeviceKey, &dwValueLength);
008b4 e28d300c add r3, sp, #0xC
008b8 e58d3004 str r3, [sp, #4]
008bc e59d3008 ldr r3, [sp, #8]
008c0 e58d3000 str r3, [sp]
008c4 e28d3010 add r3, sp, #0x10
008c8 e3a02000 mov r2, #0
008cc e59f112c ldr r1, [pc, #0x12C]
008d0 e59d0038 ldr r0, [sp, #0x38]
008d4 eb000000 bl RegQueryValueExW
; 214 : DEBUGCHK(dwValueLength != 0);
008d8 e59d300c ldr r3, [sp, #0xC]
008dc e3530000 cmp r3, #0
008e0 0a000002 beq |$L33134|
008e4 e3a03001 mov r3, #1
008e8 e58d3024 str r3, [sp, #0x24]
008ec ea000007 b |$L33135|
008f0 |$L33134|
008f0 e3a030d6 mov r3, #0xD6
008f4 e59f2100 ldr r2, [pc, #0x100]
008f8 e59f10f4 ldr r1, [pc, #0xF4]
008fc e59f00f4 ldr r0, [pc, #0xF4]
00900 eb000000 bl NKDbgPrintfW
00904 e6000010 DCD 0xe6000010
00908 e3a03000 mov r3, #0
0090c e58d3024 str r3, [sp, #0x24]
00910 |$L33135|
; 215 : szDeviceKey[(dwValueLength / sizeof(TCHAR)) - 1] = 0;
00910 e59d100c ldr r1, [sp, #0xC]
00914 e3a00002 mov r0, #2
00918 eb000000 bl __rt_udiv
0091c e2401001 sub r1, r0, #1
00920 e3a03002 mov r3, #2
00924 e0020391 mul r2, r1, r3
00928 e59d3008 ldr r3, [sp, #8]
0092c e0832002 add r2, r3, r2
00930 e3a03000 mov r3, #0
00934 e1c230b0 strh r3, [r2]
; 216 :
; 217 : // open the device key
; 218 : if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, szDeviceKey, 0, 0, &hDeviceKey)) {
00938 e28d3014 add r3, sp, #0x14
0093c e58d3000 str r3, [sp]
00940 e3a03000 mov r3, #0
00944 e3a02000 mov r2, #0
00948 e59d1008 ldr r1, [sp, #8]
0094c e3a0010a mov r0, #0xA, 2
00950 eb000000 bl RegOpenKeyExW
00954 e58d0028 str r0, [sp, #0x28]
00958 e59d3028 ldr r3, [sp, #0x28]
0095c e3530000 cmp r3, #0
00960 0a00000d beq |$L32434|
; 219 : DEBUGMSG(ZONE_INIT, (_T(
; 220 : "AtaLoadRegyKey> Failed to open %s\r\n"
; 221 : ), szDeviceKey));
00964 e59f3088 ldr r3, [pc, #0x88]
00968 e5933440 ldr r3, [r3, #0x440]
0096c e3130001 tst r3, #1
00970 0a000005 beq |$L33136|
00974 e59d1008 ldr r1, [sp, #8]
00978 e59f0070 ldr r0, [pc, #0x70]
0097c eb000000 bl NKDbgPrintfW
00980 e3a03001 mov r3, #1
00984 e58d302c str r3, [sp, #0x2C]
00988 ea000001 b |$L33137|
0098c |$L33136|
0098c e3a03000 mov r3, #0
00990 e58d302c str r3, [sp, #0x2C]
00994 |$L33137|
; 222 : hDeviceKey = NULL;
00994 e3a03000 mov r3, #0
00998 e58d3014 str r3, [sp, #0x14]
0099c |$L32434|
0099c |$L32427|
0099c |$L32423|
; 223 : }
; 224 : }
; 225 : }
; 226 : if (!hDeviceKey) {
0099c e59d3014 ldr r3, [sp, #0x14]
009a0 e3530000 cmp r3, #0
009a4 1a000008 bne |$L32437|
; 227 : if (szDeviceKey) {
009a8 e59d3008 ldr r3, [sp, #8]
009ac e3530000 cmp r3, #0
009b0 0a000001 beq |$L32438|
; 228 : LocalFree(szDeviceKey);
009b4 e59d0008 ldr r0, [sp, #8]
009b8 eb000000 bl LocalFree
009bc |$L32438|
; 229 : }
; 230 : *pszDevKey = NULL;
009bc e59d203c ldr r2, [sp, #0x3C]
009c0 e3a03000 mov r3, #0
009c4 e5823000 str r3, [r2]
; 231 : }
; 232 : else {
009c8 ea000002 b |$L32439|
009cc |$L32437|
; 233 : *pszDevKey = szDeviceKey;
009cc e59d2008 ldr r2, [sp, #8]
009d0 e59d303c ldr r3, [sp, #0x3C]
009d4 e5832000 str r2, [r3]
009d8 |$L32439|
; 234 : }
; 235 : return hDeviceKey;
009d8 e59d3014 ldr r3, [sp, #0x14]
009dc e58d3018 str r3, [sp, #0x18]
009e0 e59d0018 ldr r0, [sp, #0x18]
; 236 : }
009e4 e28dd030 add sp, sp, #0x30
009e8 e89d6000 ldmia sp, {sp, lr}
009ec e12fff1e bx lr
009f0 |$L33144|
009f0 00000000 DCD |??_C@_1EI@BAFIPOGD@?$AAA?$AAt?$AAa?$AAL?$AAo?$AAa?$AAd?$AAR?$AAe?$AAg?$AAy?$AAK?$AAe?$AAy?$AA?$DO?$AA?5?$AAF?$AAa?$AAi?$AAl@|
009f4 00000000 DCD |dpCurSettings|
009f8 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@|
009fc 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@|
00a00 00000000 DCD |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@|
00a04 00000000 DCD |??_C@_0DI@NJFJMBCE@d?3?2wince500?2platform?2smdk2440?2dr@|
00a08 |$M33141|
ENDP ; |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z|, AtaLoadRegKey
EXPORT |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| ; AtaIsValidDisk
00040 AREA |.pdata|, PDATA
|$T33150| DCD |$L33149|
DCD 0x40001d04
; Function compile flags: /Odt
00a08 AREA |.text|, CODE, ARM
00a08 |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| PROC ; AtaIsValidDisk
; 243 : {
00a08 |$L33149|
00a08 e1a0c00d mov r12, sp
00a0c e92d0001 stmdb sp!, {r0}
00a10 e92d5000 stmdb sp!, {r12, lr}
00a14 e24dd008 sub sp, sp, #8
00a18 |$M33147|
; 244 : CDisk *pTemp = g_pDiskRoot;
00a18 e59f3058 ldr r3, [pc, #0x58]
00a1c e5933000 ldr r3, [r3]
00a20 e58d3000 str r3, [sp]
00a24 |$L32445|
; 245 : while (pTemp) {
00a24 e59d3000 ldr r3, [sp]
00a28 e3530000 cmp r3, #0
00a2c 0a00000b beq |$L32446|
; 246 : if (pTemp == pDisk) {
00a30 e59d2000 ldr r2, [sp]
00a34 e59d3010 ldr r3, [sp, #0x10]
00a38 e1520003 cmp r2, r3
00a3c 1a000002 bne |$L32447|
; 247 : return TRUE;
00a40 e3a03001 mov r3, #1
00a44 e58d3004 str r3, [sp, #4]
00a48 ea000006 b |$L32442|
00a4c |$L32447|
; 248 : }
; 249 : pTemp = pTemp->m_pNextDisk;
00a4c e59d3000 ldr r3, [sp]
00a50 e283306c add r3, r3, #0x6C
00a54 e5933000 ldr r3, [r3]
00a58 e58d3000 str r3, [sp]
; 250 : }
00a5c eafffff0 b |$L32445|
00a60 |$L32446|
; 251 : return FALSE;
00a60 e3a03000 mov r3, #0
00a64 e58d3004 str r3, [sp, #4]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -