📄 format.cod
字号:
000c8 e59d3010 ldr r3, [sp, #0x10]
000cc e3530048 cmp r3, #0x48
000d0 0a000025 beq |$L37337|
000d4 e59d3010 ldr r3, [sp, #0x10]
000d8 e3530058 cmp r3, #0x58
000dc 0a00002b beq |$L37345|
000e0 e59d3010 ldr r3, [sp, #0x10]
000e4 e3530061 cmp r3, #0x61
000e8 0a00004b beq |$L37372|
000ec ea00005f b |$L37389|
000f0 |$L37625|
000f0 e59d3010 ldr r3, [sp, #0x10]
000f4 e3530064 cmp r3, #0x64
000f8 0a00002d beq |$L37353|
000fc e59d3010 ldr r3, [sp, #0x10]
00100 e3530073 cmp r3, #0x73
00104 0a000044 beq |$L37372|
00108 e59d3010 ldr r3, [sp, #0x10]
0010c e3530075 cmp r3, #0x75
00110 0a000039 beq |$L37364|
00114 e59d3010 ldr r3, [sp, #0x10]
00118 e3530078 cmp r3, #0x78
0011c 0a000000 beq |$L37321|
00120 ea000052 b |$L37389|
00124 |$L37321|
; 221 : {
; 222 : case 'x':
; 223 : pOutputNumHex(va_arg(vl, unsigned long), 0);
00124 e59d3000 ldr r3, [sp]
00128 e2833004 add r3, r3, #4
0012c e58d3000 str r3, [sp]
00130 e3a01000 mov r1, #0
00134 e59d3000 ldr r3, [sp]
00138 e2433004 sub r3, r3, #4
0013c e5930000 ldr r0, [r3]
00140 eb000000 bl pOutputNumHex
; 224 : break;
00144 ea00004b b |$L37318|
00148 |$L37329|
; 225 : case 'B':
; 226 : pOutputNumHex(va_arg(vl, unsigned long), 2);
00148 e59d3000 ldr r3, [sp]
0014c e2833004 add r3, r3, #4
00150 e58d3000 str r3, [sp]
00154 e3a01002 mov r1, #2
00158 e59d3000 ldr r3, [sp]
0015c e2433004 sub r3, r3, #4
00160 e5930000 ldr r0, [r3]
00164 eb000000 bl pOutputNumHex
; 227 : break;
00168 ea000042 b |$L37318|
0016c |$L37337|
; 228 :
; 229 : case 'H':
; 230 : pOutputNumHex(va_arg(vl, unsigned long), 4);
0016c e59d3000 ldr r3, [sp]
00170 e2833004 add r3, r3, #4
00174 e58d3000 str r3, [sp]
00178 e3a01004 mov r1, #4
0017c e59d3000 ldr r3, [sp]
00180 e2433004 sub r3, r3, #4
00184 e5930000 ldr r0, [r3]
00188 eb000000 bl pOutputNumHex
; 231 : break;
0018c ea000039 b |$L37318|
00190 |$L37345|
; 232 :
; 233 : case 'X':
; 234 : pOutputNumHex(va_arg(vl, unsigned long), 8);
00190 e59d3000 ldr r3, [sp]
00194 e2833004 add r3, r3, #4
00198 e58d3000 str r3, [sp]
0019c e3a01008 mov r1, #8
001a0 e59d3000 ldr r3, [sp]
001a4 e2433004 sub r3, r3, #4
001a8 e5930000 ldr r0, [r3]
001ac eb000000 bl pOutputNumHex
; 235 : break;
001b0 ea000030 b |$L37318|
001b4 |$L37353|
; 236 :
; 237 : case 'd':
; 238 : {
; 239 : long l;
; 240 :
; 241 : l = va_arg(vl, long);
001b4 e59d3000 ldr r3, [sp]
001b8 e2833004 add r3, r3, #4
001bc e58d3000 str r3, [sp]
001c0 e59d3000 ldr r3, [sp]
001c4 e2433004 sub r3, r3, #4
001c8 e5933000 ldr r3, [r3]
001cc e58d3008 str r3, [sp, #8]
; 242 :
; 243 : if (l < 0)
001d0 e59d3008 ldr r3, [sp, #8]
001d4 e3530000 cmp r3, #0
001d8 aa000004 bge |$L37362|
; 244 : {
; 245 : pOutputByte('-');
001dc e3a0002d mov r0, #0x2D
001e0 eb000000 bl pOutputByte
; 246 : l = -l;
001e4 e59d3008 ldr r3, [sp, #8]
001e8 e2633000 rsb r3, r3, #0
001ec e58d3008 str r3, [sp, #8]
001f0 |$L37362|
; 247 : }
; 248 : pOutputNumDecimal((unsigned long)l);
001f0 e59d0008 ldr r0, [sp, #8]
001f4 eb000000 bl pOutputNumDecimal
; 249 : }
; 250 : break;
001f8 ea00001e b |$L37318|
001fc |$L37364|
; 251 :
; 252 : case 'u':
; 253 : pOutputNumDecimal(va_arg(vl, unsigned long));
001fc e59d3000 ldr r3, [sp]
00200 e2833004 add r3, r3, #4
00204 e58d3000 str r3, [sp]
00208 e59d3000 ldr r3, [sp]
0020c e2433004 sub r3, r3, #4
00210 e5930000 ldr r0, [r3]
00214 eb000000 bl pOutputNumDecimal
; 254 : break;
00218 ea000016 b |$L37318|
0021c |$L37372|
; 255 :
; 256 : case 'a':
; 257 : case 's':
; 258 : OutputString(va_arg(vl, char *));
0021c e59d3000 ldr r3, [sp]
00220 e2833004 add r3, r3, #4
00224 e58d3000 str r3, [sp]
00228 e59d3000 ldr r3, [sp]
0022c e2433004 sub r3, r3, #4
00230 e5930000 ldr r0, [r3]
00234 eb000000 bl OutputString
; 259 : break;
00238 ea00000e b |$L37318|
0023c |$L37380|
; 260 :
; 261 : case '%':
; 262 : pOutputByte('%');
0023c e3a00025 mov r0, #0x25
00240 eb000000 bl pOutputByte
; 263 : break;
00244 ea00000b b |$L37318|
00248 |$L37381|
; 264 :
; 265 : case 'c':
; 266 : c = va_arg(vl, unsigned char);
00248 e59d3000 ldr r3, [sp]
0024c e2833004 add r3, r3, #4
00250 e58d3000 str r3, [sp]
00254 e59d3000 ldr r3, [sp]
00258 e2433004 sub r3, r3, #4
0025c e5d33000 ldrb r3, [r3]
00260 e5cd3004 strb r3, [sp, #4]
; 267 : pOutputByte(c);
00264 e5dd0004 ldrb r0, [sp, #4]
00268 eb000000 bl pOutputByte
; 268 : break;
0026c ea000001 b |$L37318|
00270 |$L37389|
; 269 :
; 270 : default:
; 271 : pOutputByte(' ');
00270 e3a00020 mov r0, #0x20
00274 eb000000 bl pOutputByte
00278 |$L37318|
; 272 : break;
; 273 : }
; 274 : break;
00278 ea000003 b |$L37313|
0027c |$L37390|
; 275 :
; 276 : case '\n':
; 277 : pOutputByte('\r');
0027c e3a0000d mov r0, #0xD
00280 eb000000 bl pOutputByte
00284 |$L37391|
; 278 : // fall through
; 279 :
; 280 : default:
; 281 : pOutputByte(c);
00284 e5dd0004 ldrb r0, [sp, #4]
00288 eb000000 bl pOutputByte
0028c |$L37313|
; 282 : }
; 283 : }
0028c eaffff62 b |$L37310|
00290 |$L37311|
; 284 :
; 285 : va_end(vl);
00290 e3a03000 mov r3, #0
00294 e58d3000 str r3, [sp]
; 286 : }
00298 e28dd014 add sp, sp, #0x14
0029c e89d6000 ldmia sp, {sp, lr}
002a0 e12fff1e bx lr
002a4 |$M37627|
ENDP ; |NKDbgPrintfW|
EXPORT |FormatString|
00000 AREA |.text| { |FormatString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$FormatString|, PDATA, SELECTION=5, ASSOC=|.text| { |FormatString| } ; comdat associative
|$T37638| DCD |$L37637|
DCD 0x4000b404
; Function compile flags: /Ods
00000 AREA |.text| { |FormatString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |FormatString| PROC
; 316 : {
00000 |$L37637|
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd018 sub sp, sp, #0x18
00010 |$M37635|
; 317 : unsigned char c;
; 318 : va_list vl;
; 319 :
; 320 : va_start(vl, sz);
00010 e28d3024 add r3, sp, #0x24
00014 e2833004 add r3, r3, #4
00018 e58d3000 str r3, [sp]
; 321 :
; 322 : szSprintf = pBuf;
0001c e59d2020 ldr r2, [sp, #0x20]
00020 e59f32a4 ldr r3, [pc, #0x2A4]
00024 e5832000 str r2, [r3]
00028 |$L37405|
; 323 :
; 324 : while (*sz)
00028 e59d3024 ldr r3, [sp, #0x24]
0002c e5d33000 ldrb r3, [r3]
00030 e3530000 cmp r3, #0
00034 0a000091 beq |$L37406|
; 325 : {
; 326 : c = *sz++;
00038 e59d3024 ldr r3, [sp, #0x24]
0003c e5d33000 ldrb r3, [r3]
00040 e5cd3004 strb r3, [sp, #4]
00044 e59d3024 ldr r3, [sp, #0x24]
00048 e2833001 add r3, r3, #1
0004c e58d3024 str r3, [sp, #0x24]
; 327 :
; 328 : switch (c)
00050 e5dd3004 ldrb r3, [sp, #4]
00054 e58d3010 str r3, [sp, #0x10]
00058 e59d3010 ldr r3, [sp, #0x10]
0005c e353000a cmp r3, #0xA
00060 0a000081 beq |$L37486|
00064 e59d3010 ldr r3, [sp, #0x10]
00068 e3530025 cmp r3, #0x25
0006c 0a000000 beq |$L37412|
00070 ea00007f b |$L37487|
00074 |$L37412|
; 329 : {
; 330 : case (unsigned char)'%':
; 331 : c = *sz++;
00074 e59d3024 ldr r3, [sp, #0x24]
00078 e5d33000 ldrb r3, [r3]
0007c e5cd3004 strb r3, [sp, #4]
00080 e59d3024 ldr r3, [sp, #0x24]
00084 e2833001 add r3, r3, #1
00088 e58d3024 str r3, [sp, #0x24]
; 332 :
; 333 : switch (c)
0008c e5dd3004 ldrb r3, [sp, #4]
00090 e58d3014 str r3, [sp, #0x14]
00094 e59d3014 ldr r3, [sp, #0x14]
00098 e3530063 cmp r3, #0x63
0009c ca00000f bgt |$L37633|
000a0 e59d3014 ldr r3, [sp, #0x14]
000a4 e3530063 cmp r3, #0x63
000a8 0a000062 beq |$L37477|
000ac e59d3014 ldr r3, [sp, #0x14]
000b0 e3530025 cmp r3, #0x25
000b4 0a00005c beq |$L37476|
000b8 e59d3014 ldr r3, [sp, #0x14]
000bc e3530042 cmp r3, #0x42
000c0 0a00001c beq |$L37425|
000c4 e59d3014 ldr r3, [sp, #0x14]
000c8 e3530048 cmp r3, #0x48
000cc 0a000022 beq |$L37433|
000d0 e59d3014 ldr r3, [sp, #0x14]
000d4 e3530058 cmp r3, #0x58
000d8 0a000028 beq |$L37441|
000dc ea00005f b |$L37485|
000e0 |$L37633|
000e0 e59d3014 ldr r3, [sp, #0x14]
000e4 e3530064 cmp r3, #0x64
000e8 0a00002d beq |$L37449|
000ec e59d3014 ldr r3, [sp, #0x14]
000f0 e3530073 cmp r3, #0x73
000f4 0a000044 beq |$L37468|
000f8 e59d3014 ldr r3, [sp, #0x14]
000fc e3530075 cmp r3, #0x75
00100 0a000039 beq |$L37460|
00104 e59d3014 ldr r3, [sp, #0x14]
00108 e3530078 cmp r3, #0x78
0010c 0a000000 beq |$L37417|
00110 ea000052 b |$L37485|
00114 |$L37417|
; 334 : {
; 335 : case 'x':
; 336 : pOutputNumHex(va_arg(vl, unsigned long), 0);
00114 e59d3000 ldr r3, [sp]
00118 e2833004 add r3, r3, #4
0011c e58d3000 str r3, [sp]
00120 e3a01000 mov r1, #0
00124 e59d3000 ldr r3, [sp]
00128 e2433004 sub r3, r3, #4
0012c e5930000 ldr r0, [r3]
00130 eb000000 bl pOutputNumHex
; 337 : break;
00134 ea00004b b |$L37414|
00138 |$L37425|
; 338 :
; 339 : case 'B':
; 340 : pOutputNumHex(va_arg(vl, unsigned long), 2);
00138 e59d3000 ldr r3, [sp]
0013c e2833004 add r3, r3, #4
00140 e58d3000 str r3, [sp]
00144 e3a01002 mov r1, #2
00148 e59d3000 ldr r3, [sp]
0014c e2433004 sub r3, r3, #4
00150 e5930000 ldr r0, [r3]
00154 eb000000 bl pOutputNumHex
; 341 : break;
00158 ea000042 b |$L37414|
0015c |$L37433|
; 342 :
; 343 : case 'H':
; 344 : pOutputNumHex(va_arg(vl, unsigned long), 4);
0015c e59d3000 ldr r3, [sp]
00160 e2833004 add r3, r3, #4
00164 e58d3000 str r3, [sp]
00168 e3a01004 mov r1, #4
0016c e59d3000 ldr r3, [sp]
00170 e2433004 sub r3, r3, #4
00174 e5930000 ldr r0, [r3]
00178 eb000000 bl pOutputNumHex
; 345 : break;
0017c ea000039 b |$L37414|
00180 |$L37441|
; 346 :
; 347 : case 'X':
; 348 : pOutputNumHex(va_arg(vl, unsigned long), 8);
00180 e59d3000 ldr r3, [sp]
00184 e2833004 add r3, r3, #4
00188 e58d3000 str r3, [sp]
0018c e3a01008 mov r1, #8
00190 e59d3000 ldr r3, [sp]
00194 e2433004 sub r3, r3, #4
00198 e5930000 ldr r0, [r3]
0019c eb000000 bl pOutputNumHex
; 349 : break;
001a0 ea000030 b |$L37414|
001a4 |$L37449|
; 350 :
; 351 : case 'd':
; 352 : {
; 353 : long l;
; 354 :
; 355 : l = va_arg(vl, long);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -