⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helper.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 3 页
字号:
  004ec	e59f0078	 ldr         r0, [pc, #0x78]
  004f0	eb000000	 bl          NKDbgPrintfW
  004f4	e3a03001	 mov         r3, #1
  004f8	e58d3020	 str         r3, [sp, #0x20]
  004fc	ea000001	 b           |$L32087|
  00500		 |$L32086|
  00500	e3a03000	 mov         r3, #0
  00504	e58d3020	 str         r3, [sp, #0x20]
  00508		 |$L32087|

; 96   :         return FALSE;

  00508	e3a03000	 mov         r3, #0
  0050c	e58d3010	 str         r3, [sp, #0x10]
  00510	ea00000f	 b           |$L31996|
  00514		 |$L32001|

; 97   :     }
; 98   :     
; 99   :     DEBUGMSG( ZONE_HELPER, (TEXT("ATAPI: AtaSetRegistryString(%s) Value(%s) hKey: %x\r\n"), szValueName, szValue, hKey));

  00514	e59f304c	 ldr         r3, [pc, #0x4C]
  00518	e5933440	 ldr         r3, [r3, #0x440]
  0051c	e3130901	 tst         r3, #1, 18
  00520	0a000007	 beq         |$L32088|
  00524	e59d3030	 ldr         r3, [sp, #0x30]
  00528	e59d2038	 ldr         r2, [sp, #0x38]
  0052c	e59d1034	 ldr         r1, [sp, #0x34]
  00530	e59f002c	 ldr         r0, [pc, #0x2C]
  00534	eb000000	 bl          NKDbgPrintfW
  00538	e3a03001	 mov         r3, #1
  0053c	e58d3024	 str         r3, [sp, #0x24]
  00540	ea000001	 b           |$L32089|
  00544		 |$L32088|
  00544	e3a03000	 mov         r3, #0
  00548	e58d3024	 str         r3, [sp, #0x24]
  0054c		 |$L32089|

; 100  :     return TRUE;

  0054c	e3a03001	 mov         r3, #1
  00550	e58d3010	 str         r3, [sp, #0x10]
  00554		 |$L31996|

; 96   :         return FALSE;

  00554	e59d0010	 ldr         r0, [sp, #0x10]

; 101  : }

  00558	e28dd028	 add         sp, sp, #0x28
  0055c	e89d6000	 ldmia       sp, {sp, lr}
  00560	e12fff1e	 bx          lr
  00564		 |$L32095|
  00564	00000000	 DCD         |??_C@_1GK@DOGBCJA@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?5?$AAA?$AAt?$AAa?$AAS?$AAe?$AAt?$AAR?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr@|
  00568	00000000	 DCD         |dpCurSettings|
  0056c	00000000	 DCD         |??_C@_1HO@LINNMDEH@?$AAA?$AAT?$AAA?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AA?3?$AA?5?$AAR?$AAe?$AAg?$AAS?$AAe?$AAt?$AAV?$AAa?$AAl@|
  00570		 |$M32092|

			 ENDP  ; |?AtaSetRegistryString@@YAHPAUHKEY__@@PAG1@Z|, AtaSetRegistryString

	EXPORT	|?ATAParseIdString@@YAHPAEHPAKPAPAE1@Z|	; ATAParseIdString
	IMPORT	|__C_specific_handler|
	IMPORT	|memcpy|
	IMPORT	|SetLastError|

  00000			 AREA	 |.xdata|, DATA
|$T32110| DCD	0x1
	DCD	|$L32102|
	DCD	|$L32103|
	DCD	|$L32098|
	DCD	|$L32099|

  00020			 AREA	 |.pdata|, PDATA
|$T32112| DCD	|$L32111|
	DCD	0xc0007905
|$T32114| DCD	|$L32098|
	DCD	0x40000200
; Function compile flags: /Odt

  00570			 AREA	 |.text|, CODE, ARM

  00570	00000000	 DCD         |__C_specific_handler|
  00574	00000000	 DCD         |$T32110|

  00578		 |?ATAParseIdString@@YAHPAEHPAKPAPAE1@Z| PROC ; ATAParseIdString

; 105  : {

  00578		 |$L32111|
  00578	e1a0c00d	 mov         r12, sp
  0057c	e92d000f	 stmdb       sp!, {r0 - r3}
  00580	e92d5800	 stmdb       sp!, {r11, r12, lr}
  00584	e28db00c	 add         r11, sp, #0xC
  00588	e24dd014	 sub         sp, sp, #0x14
  0058c		 |$L32108|

; 106  :     BYTE *p;
; 107  :     DWORD cCopied;
; 108  :     BYTE *pDest;
; 109  :     
; 110  :     // check validity (spec says ASCII, I assumed printable)
; 111  :     for (p = str; p < &str[len]; ++p)

  0058c	e59b3000	 ldr         r3, [r11]
  00590	e50b3020	 str         r3, [r11, #-0x20]
  00594	ea000002	 b           |$L32016|
  00598		 |$L32017|
  00598	e51b3020	 ldr         r3, [r11, #-0x20]
  0059c	e2833001	 add         r3, r3, #1
  005a0	e50b3020	 str         r3, [r11, #-0x20]
  005a4		 |$L32016|
  005a4	e59b2000	 ldr         r2, [r11]
  005a8	e59b3004	 ldr         r3, [r11, #4]
  005ac	e0822003	 add         r2, r2, r3
  005b0	e51b3020	 ldr         r3, [r11, #-0x20]
  005b4	e1530002	 cmp         r3, r2
  005b8	2a00000e	 bcs         |$L32018|

; 112  :         if (*p < 0x20 || *p > 0x7F) {

  005bc	e51b3020	 ldr         r3, [r11, #-0x20]
  005c0	e5d33000	 ldrb        r3, [r3]
  005c4	e3530020	 cmp         r3, #0x20
  005c8	ba000003	 blt         |$L32020|
  005cc	e51b3020	 ldr         r3, [r11, #-0x20]
  005d0	e5d33000	 ldrb        r3, [r3]
  005d4	e353007f	 cmp         r3, #0x7F
  005d8	da000005	 ble         |$L32019|
  005dc		 |$L32020|

; 113  :             *pdwOffset = 0;

  005dc	e59b2008	 ldr         r2, [r11, #8]
  005e0	e3a03000	 mov         r3, #0
  005e4	e5823000	 str         r3, [r2]

; 114  :             return FALSE;

  005e8	e3a03000	 mov         r3, #0
  005ec	e50b3014	 str         r3, [r11, #-0x14]
  005f0	ea000056	 b           |$L32012|
  005f4		 |$L32019|

; 115  :         }
; 116  : 
; 117  :     // find the last non-pad character
; 118  :     for (p = &str[len]; p > str && p[-1] == ' '; --p)

  005f4	eaffffe7	 b           |$L32017|
  005f8		 |$L32018|
  005f8	e59b2000	 ldr         r2, [r11]
  005fc	e59b3004	 ldr         r3, [r11, #4]
  00600	e0823003	 add         r3, r2, r3
  00604	e50b3020	 str         r3, [r11, #-0x20]
  00608	ea000002	 b           |$L32021|
  0060c		 |$L32022|
  0060c	e51b3020	 ldr         r3, [r11, #-0x20]
  00610	e2433001	 sub         r3, r3, #1
  00614	e50b3020	 str         r3, [r11, #-0x20]
  00618		 |$L32021|
  00618	e51b2020	 ldr         r2, [r11, #-0x20]
  0061c	e59b3000	 ldr         r3, [r11]
  00620	e1520003	 cmp         r2, r3
  00624	9a000005	 bls         |$L32023|
  00628	e51b3020	 ldr         r3, [r11, #-0x20]
  0062c	e2433001	 sub         r3, r3, #1
  00630	e5d33000	 ldrb        r3, [r3]
  00634	e3530020	 cmp         r3, #0x20
  00638	1a000000	 bne         |$L32023|

; 119  :         ;

  0063c	eafffff2	 b           |$L32022|
  00640		 |$L32023|

; 120  :     cCopied = p - str;

  00640	e51b2020	 ldr         r2, [r11, #-0x20]
  00644	e59b3000	 ldr         r3, [r11]
  00648	e0423003	 sub         r3, r2, r3
  0064c	e50b3018	 str         r3, [r11, #-0x18]

; 121  : 
; 122  :     // special case - empty string implies not present
; 123  :     if (cCopied == 0) {

  00650	e51b3018	 ldr         r3, [r11, #-0x18]
  00654	e3530000	 cmp         r3, #0
  00658	1a000005	 bne         |$L32024|

; 124  :         *pdwOffset = 0;

  0065c	e59b2008	 ldr         r2, [r11, #8]
  00660	e3a03000	 mov         r3, #0
  00664	e5823000	 str         r3, [r2]

; 125  :         return TRUE;

  00668	e3a03001	 mov         r3, #1
  0066c	e50b3014	 str         r3, [r11, #-0x14]
  00670	ea000036	 b           |$L32012|
  00674		 |$L32024|

; 126  :     }
; 127  :     ++cCopied; // this is a byte count so add a terminating null

  00674	e51b3018	 ldr         r3, [r11, #-0x18]
  00678	e2833001	 add         r3, r3, #1
  0067c	e50b3018	 str         r3, [r11, #-0x18]

; 128  : 
; 129  :     // always increment *ppDest because it counts the bytes that we want,
; 130  :     // not just the bytes that we've actually written.
; 131  :     pDest = *ppDest;

  00680	e59b300c	 ldr         r3, [r11, #0xC]
  00684	e5933000	 ldr         r3, [r3]
  00688	e50b301c	 str         r3, [r11, #-0x1C]

; 132  :     *ppDest += cCopied;

  0068c	e59b300c	 ldr         r3, [r11, #0xC]
  00690	e5932000	 ldr         r2, [r3]
  00694	e51b3018	 ldr         r3, [r11, #-0x18]
  00698	e0822003	 add         r2, r2, r3
  0069c	e59b300c	 ldr         r3, [r11, #0xC]
  006a0	e5832000	 str         r2, [r3]

; 133  : 
; 134  :     // if there has already been an error, then we needn't continue further
; 135  :     if (GetLastError() != ERROR_SUCCESS)

  006a4	eb000000	 bl          GetLastError
  006a8	e50b0010	 str         r0, [r11, #-0x10]
  006ac	e51b3010	 ldr         r3, [r11, #-0x10]
  006b0	e3530000	 cmp         r3, #0
  006b4	0a000002	 beq         |$L32025|

; 136  :         return TRUE;

  006b8	e3a03001	 mov         r3, #1
  006bc	e50b3014	 str         r3, [r11, #-0x14]
  006c0	ea000022	 b           |$L32012|
  006c4		 |$L32025|

; 137  : 
; 138  :     // make sure there's enough space to copy into
; 139  :     if (cCopied > *pcBytesLeft) {

  006c4	e51b2018	 ldr         r2, [r11, #-0x18]
  006c8	e59b3010	 ldr         r3, [r11, #0x10]
  006cc	e5933000	 ldr         r3, [r3]
  006d0	e1520003	 cmp         r2, r3
  006d4	9a000004	 bls         |$L32026|

; 140  :         SetLastError(ERROR_INSUFFICIENT_BUFFER);

  006d8	e3a0007a	 mov         r0, #0x7A
  006dc	eb000000	 bl          SetLastError

; 141  :         cCopied = *pcBytesLeft;

  006e0	e59b3010	 ldr         r3, [r11, #0x10]
  006e4	e5933000	 ldr         r3, [r3]
  006e8	e50b3018	 str         r3, [r11, #-0x18]
  006ec		 |$L32026|
  006ec		 |$L32102|

; 142  :     }
; 143  :     __try {
; 144  :         if (cCopied) {

  006ec	e51b3018	 ldr         r3, [r11, #-0x18]
  006f0	e3530000	 cmp         r3, #0
  006f4	0a00000a	 beq         |$L32028|

; 145  :             memcpy(pDest, str, cCopied-1);

  006f8	e51b3018	 ldr         r3, [r11, #-0x18]
  006fc	e2432001	 sub         r2, r3, #1
  00700	e59b1000	 ldr         r1, [r11]
  00704	e51b001c	 ldr         r0, [r11, #-0x1C]
  00708	eb000000	 bl          memcpy

; 146  :             pDest[cCopied-1] = '\0';

  0070c	e51b3018	 ldr         r3, [r11, #-0x18]
  00710	e2432001	 sub         r2, r3, #1
  00714	e51b301c	 ldr         r3, [r11, #-0x1C]
  00718	e0832002	 add         r2, r3, r2
  0071c	e3a03000	 mov         r3, #0
  00720	e5c23000	 strb        r3, [r2]
  00724		 |$L32028|
  00724		 |$L32103|

; 147  :         }
; 148  :     } __except (EXCEPTION_EXECUTE_HANDLER) {

  00724	ea000001	 b           |$L32104|
  00728		 |$L32099|

; 149  :         SetLastError(ERROR_INVALID_PARAMETER);

  00728	e3a00057	 mov         r0, #0x57
  0072c	eb000000	 bl          SetLastError
  00730		 |$L32104|

; 150  :     };
; 151  : 
; 152  :     *pcBytesLeft -= cCopied;

  00730	e59b3010	 ldr         r3, [r11, #0x10]
  00734	e5932000	 ldr         r2, [r3]
  00738	e51b3018	 ldr         r3, [r11, #-0x18]
  0073c	e0422003	 sub         r2, r2, r3
  00740	e59b3010	 ldr         r3, [r11, #0x10]
  00744	e5832000	 str         r2, [r3]

; 153  :     return TRUE;

  00748	e3a03001	 mov         r3, #1
  0074c	e50b3014	 str         r3, [r11, #-0x14]
  00750		 |$L32012|

; 114  :             return FALSE;

  00750	e51b0014	 ldr         r0, [r11, #-0x14]

; 154  : }

  00754	e91b6800	 ldmdb       r11, {r11, sp, lr}
  00758	e12fff1e	 bx          lr

			 ENDP  ; |?ATAParseIdString@@YAHPAEHPAKPAPAE1@Z|, ATAParseIdString

  0075c		 |$L32101|
  0075c		 |$L32109|
  0075c		 |$L32098|

; 147  :         }
; 148  :     } __except (EXCEPTION_EXECUTE_HANDLER) {

  0075c	e3a00001	 mov         r0, #1
  00760		 |$L32100|
  00760	e1a0f00e	 mov         pc, lr
  00764		 |$L32113|
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -