mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-25 07:26:54 -05:00
2350 lines
39 KiB
ArmAsm
2350 lines
39 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.data
|
|
|
|
wstr$6DE4: ; 0x02106DE4
|
|
; L"0x0p0"
|
|
.short 0x0030, 0x0078, 0x0030, 0x0070, 0x0030, 0x0000
|
|
|
|
wstr$6DF0: ; 0x02106DF0
|
|
; L"-INF"
|
|
.short 0x002D, 0x0049, 0x004E, 0x0046, 0x0000, 0x0000
|
|
|
|
wstr$6DFC: ; 0x02106DFC
|
|
; L"-inf"
|
|
.short 0x002D, 0x0069, 0x006E, 0x0066, 0x0000, 0x0000
|
|
|
|
wstr$6E08: ; 0x02106E08
|
|
; L"INF"
|
|
.short 0x0049, 0x004E, 0x0046, 0x0000
|
|
|
|
wstr$6E10: ; 0x02106E10
|
|
; L"inf"
|
|
.short 0x0069, 0x006E, 0x0066, 0x0000
|
|
|
|
wstr$6E18: ; 0x02106E18
|
|
; L"-NAN"
|
|
.short 0x002D, 0x004E, 0x0041, 0x004E, 0x0000, 0x0000
|
|
|
|
wstr$6E24: ; 0x02106E24
|
|
; L"-nan"
|
|
.short 0x002D, 0x006E, 0x0061, 0x006E, 0x0000, 0x0000
|
|
|
|
wstr$6E30: ; 0x02106E30
|
|
; L"NAN"
|
|
.short 0x004E, 0x0041, 0x004E, 0x0000
|
|
|
|
wstr$6E38: ; 0x02106E38
|
|
; L"nan"
|
|
.short 0x006E, 0x0061, 0x006E, 0x0000
|
|
|
|
buff_ptr$6E40: ; 0x02106E40
|
|
.short 0x0000, 0x0000
|
|
|
|
strptr$6E44: ; 0x02106E44
|
|
.asciz ""
|
|
|
|
.text
|
|
|
|
arm_func_start parse_format__wide
|
|
parse_format__wide: ; 0x020E50A0
|
|
stmdb sp!, {r4-r8,lr}
|
|
sub sp, sp, #0x10
|
|
ldrh r3, [r0, #0x2]
|
|
mov r4, #0x0
|
|
mov r5, #0x1
|
|
mov lr, r2
|
|
strb r5, [sp, #0x0]
|
|
strb r4, [sp, #0x1]
|
|
strb r4, [sp, #0x2]
|
|
strb r4, [sp, #0x3]
|
|
strb r4, [sp, #0x4]
|
|
str r4, [sp, #0x8]
|
|
str r4, [sp, #0xc]
|
|
cmp r3, #0x25
|
|
add r12, r0, #0x2
|
|
bne _020E50FC
|
|
add r0, sp, #0x0
|
|
strh r3, [sp, #0x6]
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add sp, sp, #0x10
|
|
add r0, r12, #0x2
|
|
ldmia sp!, {r4-r8,pc}
|
|
_020E50FC:
|
|
mov r2, #0x2
|
|
mov r0, r4
|
|
mov r5, r2
|
|
mov r6, r4
|
|
mov r7, #0x1
|
|
_020E5110:
|
|
mov r8, r7
|
|
cmp r3, #0x2b
|
|
bgt _020E5140
|
|
bge _020E5168
|
|
cmp r3, #0x23
|
|
bgt _020E5198
|
|
cmp r3, #0x20
|
|
blt _020E5198
|
|
beq _020E5170
|
|
cmp r3, #0x23
|
|
beq _020E5180
|
|
b _020E5198
|
|
_020E5140:
|
|
cmp r3, #0x30
|
|
bgt _020E5198
|
|
cmp r3, #0x2d
|
|
blt _020E5198
|
|
beq _020E5160
|
|
cmp r3, #0x30
|
|
beq _020E5188
|
|
b _020E5198
|
|
_020E5160:
|
|
strb r6, [sp, #0x0]
|
|
b _020E519C
|
|
_020E5168:
|
|
strb r7, [sp, #0x1]
|
|
b _020E519C
|
|
_020E5170:
|
|
ldrb r4, [sp, #0x1]
|
|
cmp r4, #0x1
|
|
strneb r5, [sp, #0x1]
|
|
b _020E519C
|
|
_020E5180:
|
|
strb r7, [sp, #0x3]
|
|
b _020E519C
|
|
_020E5188:
|
|
ldrb r4, [sp, #0x0]
|
|
cmp r4, #0x0
|
|
strneb r2, [sp, #0x0]
|
|
b _020E519C
|
|
_020E5198:
|
|
mov r8, r0
|
|
_020E519C:
|
|
cmp r8, #0x0
|
|
ldrneh r3, [r12, #0x2]!
|
|
bne _020E5110
|
|
cmp r3, #0x2a
|
|
bne _020E51E4
|
|
ldr r0, [r1, #0x0]
|
|
add r0, r0, #0x4
|
|
str r0, [r1, #0x0]
|
|
ldr r0, [r0, #-0x4]
|
|
str r0, [sp, #0x8]
|
|
cmp r0, #0x0
|
|
bge _020E51DC
|
|
rsb r0, r0, #0x0
|
|
mov r2, #0x0
|
|
strb r2, [sp, #0x0]
|
|
str r0, [sp, #0x8]
|
|
_020E51DC:
|
|
ldrh r3, [r12, #0x2]!
|
|
b _020E5228
|
|
_020E51E4:
|
|
mov r2, #0x0
|
|
ldr r5, _020E560C ; =__wctype_mapC
|
|
mov r0, #0xa
|
|
b _020E5208
|
|
_020E51F4:
|
|
ldr r4, [sp, #0x8]
|
|
sub r3, r3, #0x30
|
|
mla r6, r4, r0, r3
|
|
ldrh r3, [r12, #0x2]!
|
|
str r6, [sp, #0x8]
|
|
_020E5208:
|
|
cmp r3, #0x80
|
|
movcs r4, r2
|
|
bhs _020E5220
|
|
mov r4, r3, lsl #0x1
|
|
ldrh r4, [r5, r4]
|
|
and r4, r4, #0x8
|
|
_020E5220:
|
|
cmp r4, #0x0
|
|
bne _020E51F4
|
|
_020E5228:
|
|
ldr r2, [sp, #0x8]
|
|
ldr r0, _020E5610 ; =0x000001FD
|
|
cmp r2, r0
|
|
ble _020E5258
|
|
ldr r1, _020E5614 ; =0x0000FFFF
|
|
add r0, sp, #0x0
|
|
strh r1, [sp, #0x6]
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add sp, sp, #0x10
|
|
add r0, r12, #0x2
|
|
ldmia sp!, {r4-r8,pc}
|
|
_020E5258:
|
|
cmp r3, #0x2e
|
|
bne _020E52E0
|
|
ldrh r3, [r12, #0x2]!
|
|
mov r0, #0x1
|
|
strb r0, [sp, #0x2]
|
|
cmp r3, #0x2a
|
|
bne _020E529C
|
|
ldr r0, [r1, #0x0]
|
|
add r0, r0, #0x4
|
|
str r0, [r1, #0x0]
|
|
ldr r0, [r0, #-0x4]
|
|
ldrh r3, [r12, #0x2]!
|
|
str r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
movlt r0, #0x0
|
|
strltb r0, [sp, #0x2]
|
|
b _020E52E0
|
|
_020E529C:
|
|
mov r1, #0x0
|
|
ldr r4, _020E560C ; =__wctype_mapC
|
|
mov r0, #0xa
|
|
b _020E52C0
|
|
_020E52AC:
|
|
ldr r2, [sp, #0xc]
|
|
sub r3, r3, #0x30
|
|
mla r5, r2, r0, r3
|
|
ldrh r3, [r12, #0x2]!
|
|
str r5, [sp, #0xc]
|
|
_020E52C0:
|
|
cmp r3, #0x80
|
|
movcs r2, r1
|
|
bhs _020E52D8
|
|
mov r2, r3, lsl #0x1
|
|
ldrh r2, [r4, r2]
|
|
and r2, r2, #0x8
|
|
_020E52D8:
|
|
cmp r2, #0x0
|
|
bne _020E52AC
|
|
_020E52E0:
|
|
cmp r3, #0x6c
|
|
mov r0, #0x1
|
|
bgt _020E5318
|
|
cmp r3, #0x68
|
|
blt _020E530C
|
|
beq _020E5334
|
|
cmp r3, #0x6a
|
|
beq _020E5380
|
|
cmp r3, #0x6c
|
|
beq _020E5350
|
|
b _020E53A4
|
|
_020E530C:
|
|
cmp r3, #0x4c
|
|
beq _020E5374
|
|
b _020E53A4
|
|
_020E5318:
|
|
cmp r3, #0x74
|
|
bgt _020E5328
|
|
beq _020E538C
|
|
b _020E53A4
|
|
_020E5328:
|
|
cmp r3, #0x7a
|
|
beq _020E5398
|
|
b _020E53A4
|
|
_020E5334:
|
|
ldrh r1, [r12, #0x2]
|
|
mov r2, #0x2
|
|
strb r2, [sp, #0x4]
|
|
cmp r1, #0x68
|
|
streqb r0, [sp, #0x4]
|
|
ldreqh r3, [r12, #0x2]!
|
|
b _020E53A8
|
|
_020E5350:
|
|
ldrh r1, [r12, #0x2]
|
|
mov r2, #0x3
|
|
strb r2, [sp, #0x4]
|
|
cmp r1, #0x6c
|
|
bne _020E53A8
|
|
mov r1, #0x4
|
|
strb r1, [sp, #0x4]
|
|
ldrh r3, [r12, #0x2]!
|
|
b _020E53A8
|
|
_020E5374:
|
|
mov r1, #0x9
|
|
strb r1, [sp, #0x4]
|
|
b _020E53A8
|
|
_020E5380:
|
|
mov r1, #0x6
|
|
strb r1, [sp, #0x4]
|
|
b _020E53A8
|
|
_020E538C:
|
|
mov r1, #0x8
|
|
strb r1, [sp, #0x4]
|
|
b _020E53A8
|
|
_020E5398:
|
|
mov r1, #0x7
|
|
strb r1, [sp, #0x4]
|
|
b _020E53A8
|
|
_020E53A4:
|
|
mov r0, #0x0
|
|
_020E53A8:
|
|
cmp r0, #0x0
|
|
ldrneh r3, [r12, #0x2]!
|
|
strh r3, [sp, #0x6]
|
|
cmp r3, #0x61
|
|
bgt _020E53FC
|
|
bge _020E54E0
|
|
cmp r3, #0x47
|
|
bgt _020E53F0
|
|
subs r0, r3, #0x41
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020E55EC
|
|
b _020E54E0
|
|
b _020E55EC
|
|
b _020E55EC
|
|
b _020E55EC
|
|
b _020E5528
|
|
b _020E54A8
|
|
b _020E5518
|
|
_020E53F0:
|
|
cmp r3, #0x58
|
|
beq _020E5470
|
|
b _020E55EC
|
|
_020E53FC:
|
|
cmp r3, #0x63
|
|
bgt _020E540C
|
|
beq _020E5588
|
|
b _020E55EC
|
|
_020E540C:
|
|
sub r0, r3, #0x64
|
|
cmp r0, #0x14
|
|
addls pc, pc, r0, lsl #0x2
|
|
b _020E55EC
|
|
b _020E5470 ; case
|
|
b _020E5528 ; case
|
|
b _020E54A8 ; case
|
|
b _020E5518 ; case
|
|
b _020E55EC ; case
|
|
b _020E5470 ; case
|
|
b _020E55EC ; case
|
|
b _020E55EC ; case
|
|
b _020E55EC ; case
|
|
b _020E55EC ; case
|
|
b _020E55D8 ; case
|
|
b _020E5470 ; case
|
|
b _020E5564 ; case
|
|
b _020E55EC ; case
|
|
b _020E55EC ; case
|
|
b _020E55B4 ; case
|
|
b _020E55EC ; case
|
|
b _020E5470 ; case
|
|
b _020E55EC ; case
|
|
b _020E55EC ; case
|
|
b _020E5470 ; case
|
|
_020E5470:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x9
|
|
moveq r0, #0x4
|
|
streqb r0, [sp, #0x4]
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x1
|
|
streq r0, [sp, #0xc]
|
|
beq _020E55F4
|
|
ldrb r0, [sp, #0x0]
|
|
cmp r0, #0x2
|
|
moveq r0, #0x1
|
|
streqb r0, [sp, #0x0]
|
|
b _020E55F4
|
|
_020E54A8:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x2
|
|
cmpne r0, #0x6
|
|
cmpne r0, #0x7
|
|
cmpne r0, #0x8
|
|
cmpne r0, #0x4
|
|
ldreq r0, _020E5614 ; =0x0000FFFF
|
|
streqh r0, [sp, #0x6]
|
|
beq _020E55F4
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x6
|
|
streq r0, [sp, #0xc]
|
|
b _020E55F4
|
|
_020E54E0:
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0xd
|
|
streq r0, [sp, #0xc]
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x2
|
|
cmpne r0, #0x6
|
|
cmpne r0, #0x7
|
|
cmpne r0, #0x8
|
|
cmpne r0, #0x4
|
|
cmpne r0, #0x1
|
|
ldreq r0, _020E5614 ; =0x0000FFFF
|
|
streqh r0, [sp, #0x6]
|
|
b _020E55F4
|
|
_020E5518:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x1
|
|
streq r0, [sp, #0xc]
|
|
_020E5528:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x2
|
|
cmpne r0, #0x6
|
|
cmpne r0, #0x7
|
|
cmpne r0, #0x8
|
|
cmpne r0, #0x4
|
|
cmpne r0, #0x1
|
|
ldreq r0, _020E5614 ; =0x0000FFFF
|
|
streqh r0, [sp, #0x6]
|
|
beq _020E55F4
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x6
|
|
streq r0, [sp, #0xc]
|
|
b _020E55F4
|
|
_020E5564:
|
|
mov r3, #0x3
|
|
mov r2, #0x1
|
|
mov r1, #0x78
|
|
mov r0, #0x8
|
|
strb r3, [sp, #0x4]
|
|
strb r2, [sp, #0x3]
|
|
strh r1, [sp, #0x6]
|
|
str r0, [sp, #0xc]
|
|
b _020E55F4
|
|
_020E5588:
|
|
ldrb r1, [sp, #0x4]
|
|
cmp r1, #0x3
|
|
moveq r0, #0x5
|
|
streqb r0, [sp, #0x4]
|
|
beq _020E55F4
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
cmpeq r1, #0x0
|
|
ldrne r0, _020E5614 ; =0x0000FFFF
|
|
strneh r0, [sp, #0x6]
|
|
b _020E55F4
|
|
_020E55B4:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x3
|
|
moveq r0, #0x5
|
|
streqb r0, [sp, #0x4]
|
|
beq _020E55F4
|
|
cmp r0, #0x0
|
|
ldrne r0, _020E5614 ; =0x0000FFFF
|
|
strneh r0, [sp, #0x6]
|
|
b _020E55F4
|
|
_020E55D8:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x9
|
|
moveq r0, #0x4
|
|
streqb r0, [sp, #0x4]
|
|
b _020E55F4
|
|
_020E55EC:
|
|
ldr r0, _020E5614 ; =0x0000FFFF
|
|
strh r0, [sp, #0x6]
|
|
_020E55F4:
|
|
add r0, sp, #0x0
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add r0, r12, #0x2
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4-r8,pc}
|
|
.balign 4
|
|
_020E560C: .word __wctype_mapC
|
|
_020E5610: .word 0x000001FD
|
|
_020E5614: .word 0x0000FFFF
|
|
arm_func_end parse_format__wide
|
|
|
|
arm_func_start long2str__wide
|
|
long2str__wide: ; 0x020E5618
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3-r11,lr}
|
|
sub sp, sp, #0x10
|
|
movs r10, r0
|
|
mov r0, #0x0
|
|
mov r5, r1
|
|
str r0, [sp, #0xc]
|
|
ldr r7, [sp, #0x4c]
|
|
mov r6, r0
|
|
strh r0, [r5, #-0x2]!
|
|
ldrb r0, [sp, #0x43]
|
|
str r1, [sp, #0x0]
|
|
ldrh r8, [sp, #0x46]
|
|
str r0, [sp, #0x4]
|
|
ldr r0, [sp, #0x48]
|
|
ldrb r11, [sp, #0x41]
|
|
str r0, [sp, #0x8]
|
|
cmpeq r7, #0x0
|
|
bne _020E568C
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020E5678
|
|
cmp r8, #0x6f
|
|
beq _020E568C
|
|
_020E5678:
|
|
add sp, sp, #0x10
|
|
mov r0, r5
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E568C:
|
|
cmp r8, #0x69
|
|
bgt _020E56B4
|
|
bge _020E56E8
|
|
cmp r8, #0x58
|
|
bgt _020E56A8
|
|
beq _020E5714
|
|
b _020E571C
|
|
_020E56A8:
|
|
cmp r8, #0x64
|
|
beq _020E56E8
|
|
b _020E571C
|
|
_020E56B4:
|
|
cmp r8, #0x6f
|
|
bgt _020E56C8
|
|
moveq r4, #0x8
|
|
moveq r11, #0x0
|
|
b _020E571C
|
|
_020E56C8:
|
|
cmp r8, #0x78
|
|
bgt _020E571C
|
|
cmp r8, #0x75
|
|
blt _020E571C
|
|
beq _020E5708
|
|
cmp r8, #0x78
|
|
beq _020E5714
|
|
b _020E571C
|
|
_020E56E8:
|
|
cmp r10, #0x0
|
|
mov r4, #0xa
|
|
bge _020E571C
|
|
mov r0, #0x1
|
|
cmp r10, #0x80000000
|
|
rsbne r10, r10, #0x0
|
|
str r0, [sp, #0xc]
|
|
b _020E571C
|
|
_020E5708:
|
|
mov r4, #0xa
|
|
mov r11, #0x0
|
|
b _020E571C
|
|
_020E5714:
|
|
mov r4, #0x10
|
|
mov r11, #0x0
|
|
_020E571C:
|
|
mov r0, r10
|
|
mov r1, r4
|
|
bl _u32_div_f
|
|
mov r9, r1
|
|
mov r0, r10
|
|
mov r1, r4
|
|
bl _u32_div_f
|
|
cmp r9, #0xa
|
|
mov r10, r0
|
|
addlt r9, r9, #0x30
|
|
blt _020E5754
|
|
cmp r8, #0x78
|
|
addeq r9, r9, #0x57
|
|
addne r9, r9, #0x37
|
|
_020E5754:
|
|
cmp r10, #0x0
|
|
strh r9, [r5, #-0x2]!
|
|
add r6, r6, #0x1
|
|
bne _020E571C
|
|
cmp r4, #0x8
|
|
bne _020E5788
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrneh r0, [r5, #0x0]
|
|
cmpne r0, #0x30
|
|
movne r0, #0x30
|
|
strneh r0, [r5, #-0x2]!
|
|
addne r6, r6, #0x1
|
|
_020E5788:
|
|
ldrb r0, [sp, #0x40]
|
|
cmp r0, #0x2
|
|
bne _020E57BC
|
|
ldr r0, [sp, #0xc]
|
|
ldr r7, [sp, #0x8]
|
|
cmp r0, #0x0
|
|
cmpeq r11, #0x0
|
|
subne r7, r7, #0x1
|
|
cmp r4, #0x10
|
|
bne _020E57BC
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
subne r7, r7, #0x2
|
|
_020E57BC:
|
|
ldr r0, [sp, #0x0]
|
|
ldr r1, _020E5864 ; =0x000001FD
|
|
sub r0, r0, r5
|
|
add r0, r0, r0, lsr #0x1f
|
|
add r0, r7, r0, asr #0x1
|
|
cmp r0, r1
|
|
addgt sp, sp, #0x10
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r3-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
cmp r6, r7
|
|
bge _020E5804
|
|
mov r0, #0x30
|
|
_020E57F4:
|
|
add r6, r6, #0x1
|
|
cmp r6, r7
|
|
strh r0, [r5, #-0x2]!
|
|
blt _020E57F4
|
|
_020E5804:
|
|
cmp r4, #0x10
|
|
bne _020E5820
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x30
|
|
strneh r8, [r5, #-0x2]
|
|
strneh r0, [r5, #-0x4]!
|
|
_020E5820:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneh r0, [r5, #-0x2]!
|
|
bne _020E5850
|
|
cmp r11, #0x1
|
|
moveq r0, #0x2b
|
|
streqh r0, [r5, #-0x2]!
|
|
beq _020E5850
|
|
cmp r11, #0x2
|
|
moveq r0, #0x20
|
|
streqh r0, [r5, #-0x2]!
|
|
_020E5850:
|
|
mov r0, r5
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E5864: .word 0x000001FD
|
|
; arm_func_end long2str__wide
|
|
|
|
arm_func_start longlong2str__wide
|
|
longlong2str__wide: ; 0x020E5868
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3-r11,lr}
|
|
sub sp, sp, #0x18
|
|
mov r9, r1
|
|
mov r1, #0x0
|
|
mov r10, r0
|
|
mov r6, r2
|
|
mov r0, r1
|
|
strh r0, [r6, #-0x2]!
|
|
ldr r0, [sp, #0x58]
|
|
cmp r9, #0x0
|
|
str r0, [sp, #0x10]
|
|
ldrb r0, [sp, #0x4f]
|
|
cmpeq r10, #0x0
|
|
str r2, [sp, #0x0]
|
|
str r0, [sp, #0x4]
|
|
ldr r0, [sp, #0x54]
|
|
str r1, [sp, #0x14]
|
|
str r0, [sp, #0x8]
|
|
ldrb r0, [sp, #0x4d]
|
|
mov r7, r1
|
|
ldrh r8, [sp, #0x52]
|
|
str r0, [sp, #0xc]
|
|
ldreq r0, [sp, #0x10]
|
|
cmpeq r0, #0x0
|
|
bne _020E58F8
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020E58E4
|
|
cmp r8, #0x6f
|
|
beq _020E58F8
|
|
_020E58E4:
|
|
add sp, sp, #0x18
|
|
mov r0, r6
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E58F8:
|
|
cmp r8, #0x69
|
|
bgt _020E5920
|
|
bge _020E5950
|
|
cmp r8, #0x58
|
|
bgt _020E5914
|
|
beq _020E59A4
|
|
b _020E59B0
|
|
_020E5914:
|
|
cmp r8, #0x64
|
|
beq _020E5950
|
|
b _020E59B0
|
|
_020E5920:
|
|
cmp r8, #0x6f
|
|
bgt _020E5930
|
|
beq _020E5984
|
|
b _020E59B0
|
|
_020E5930:
|
|
cmp r8, #0x78
|
|
bgt _020E59B0
|
|
cmp r8, #0x75
|
|
blt _020E59B0
|
|
beq _020E5994
|
|
cmp r8, #0x78
|
|
beq _020E59A4
|
|
b _020E59B0
|
|
_020E5950:
|
|
subs r0, r10, #0x0
|
|
sbcs r0, r9, #0x0
|
|
mov r11, #0xa
|
|
mov r5, #0x0
|
|
bge _020E59B0
|
|
cmp r9, #0x80000000
|
|
cmpeq r10, r5
|
|
beq _020E5978
|
|
rsbs r10, r10, #0x0
|
|
rsc r9, r9, #0x0
|
|
_020E5978:
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x14]
|
|
b _020E59B0
|
|
_020E5984:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0x8
|
|
b _020E59B0
|
|
_020E5994:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0xa
|
|
b _020E59B0
|
|
_020E59A4:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0x10
|
|
_020E59B0:
|
|
mov r0, r10
|
|
mov r1, r9
|
|
mov r2, r11
|
|
mov r3, r5
|
|
bl _ull_mod
|
|
mov r4, r0
|
|
mov r0, r10
|
|
mov r1, r9
|
|
mov r2, r11
|
|
mov r3, r5
|
|
bl _ll_udiv
|
|
mov r10, r0
|
|
cmp r4, #0xa
|
|
mov r9, r1
|
|
addlt r0, r4, #0x30
|
|
blt _020E59FC
|
|
cmp r8, #0x78
|
|
addeq r0, r4, #0x57
|
|
addne r0, r4, #0x37
|
|
_020E59FC:
|
|
strh r0, [r6, #-0x2]!
|
|
mov r0, #0x0
|
|
cmp r9, r0
|
|
cmpeq r10, r0
|
|
add r7, r7, #0x1
|
|
bne _020E59B0
|
|
cmp r5, #0x0
|
|
cmpeq r11, #0x8
|
|
bne _020E5A3C
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrneh r0, [r6, #0x0]
|
|
cmpne r0, #0x30
|
|
movne r0, #0x30
|
|
strneh r0, [r6, #-0x2]!
|
|
addne r7, r7, #0x1
|
|
_020E5A3C:
|
|
ldrb r0, [sp, #0x4c]
|
|
cmp r0, #0x2
|
|
bne _020E5A8C
|
|
ldr r0, [sp, #0x8]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0x0
|
|
ldreq r0, [sp, #0xc]
|
|
cmpeq r0, #0x0
|
|
ldrne r0, [sp, #0x10]
|
|
subne r0, r0, #0x1
|
|
strne r0, [sp, #0x10]
|
|
cmp r5, #0x0
|
|
cmpeq r11, #0x10
|
|
bne _020E5A8C
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrne r0, [sp, #0x10]
|
|
subne r0, r0, #0x2
|
|
strne r0, [sp, #0x10]
|
|
_020E5A8C:
|
|
ldr r0, [sp, #0x0]
|
|
ldr r2, _020E5B48 ; =0x000001FD
|
|
sub r0, r0, r6
|
|
add r1, r0, r0, lsr #0x1f
|
|
ldr r0, [sp, #0x10]
|
|
add r0, r0, r1, asr #0x1
|
|
cmp r0, r2
|
|
addgt sp, sp, #0x18
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r3-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
ldr r0, [sp, #0x10]
|
|
cmp r7, r0
|
|
bge _020E5AE0
|
|
mov r1, #0x30
|
|
_020E5ACC:
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #0x1
|
|
cmp r7, r0
|
|
strh r1, [r6, #-0x2]!
|
|
blt _020E5ACC
|
|
_020E5AE0:
|
|
cmp r5, #0x0
|
|
cmpeq r11, #0x10
|
|
bne _020E5B00
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x30
|
|
strneh r8, [r6, #-0x2]
|
|
strneh r0, [r6, #-0x4]!
|
|
_020E5B00:
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneh r0, [r6, #-0x2]!
|
|
bne _020E5B34
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x1
|
|
moveq r0, #0x2b
|
|
streqh r0, [r6, #-0x2]!
|
|
beq _020E5B34
|
|
cmp r0, #0x2
|
|
moveq r0, #0x20
|
|
streqh r0, [r6, #-0x2]!
|
|
_020E5B34:
|
|
mov r0, r6
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E5B48: .word 0x000001FD
|
|
; arm_func_end longlong2str__wide
|
|
|
|
arm_func_start double2hex__wide
|
|
double2hex__wide: ; 0x020E5B4C
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3-r10,lr}
|
|
sub sp, sp, #0x44
|
|
ldr r7, [sp, #0x80]
|
|
ldr r0, _020E5EB8 ; =0x000001FD
|
|
mov r8, r2
|
|
cmp r7, r0
|
|
ldrh r6, [sp, #0x7a]
|
|
ldrb r5, [sp, #0x77]
|
|
ldrb r4, [sp, #0x75]
|
|
ldr r1, [sp, #0x68]
|
|
ldr r2, [sp, #0x6c]
|
|
addgt sp, sp, #0x44
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r3-r10,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
mov r10, #0x0
|
|
mov r9, #0x20
|
|
add r0, sp, #0x8
|
|
add r3, sp, #0xc
|
|
strb r10, [sp, #0x8]
|
|
strh r9, [sp, #0xa]
|
|
bl __num2dec_internal2
|
|
ldr r0, [sp, #0x68]
|
|
ldr r1, [sp, #0x6c]
|
|
bl fabs
|
|
mov r2, r0
|
|
mov r0, r10
|
|
mov r3, r1
|
|
mov r1, r0
|
|
bl _deq
|
|
bne _020E5BF4
|
|
sub r4, r8, #0xc
|
|
ldr r1, _020E5EBC ; =wstr$6DE4
|
|
mov r0, r4
|
|
bl wcscpy
|
|
add sp, sp, #0x44
|
|
mov r0, r4
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E5BF4:
|
|
ldrb r0, [sp, #0x11]
|
|
cmp r0, #0x49
|
|
bne _020E5C74
|
|
ldrsb r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
beq _020E5C38
|
|
cmp r6, #0x41
|
|
sub r4, r8, #0xa
|
|
bne _020E5C28
|
|
ldr r1, _020E5EC0 ; =wstr$6DF0
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5C60
|
|
_020E5C28:
|
|
ldr r1, _020E5EC4 ; =wstr$6DFC
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5C60
|
|
_020E5C38:
|
|
cmp r6, #0x41
|
|
sub r4, r8, #0x8
|
|
bne _020E5C54
|
|
ldr r1, _020E5EC8 ; =wstr$6E08
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5C60
|
|
_020E5C54:
|
|
ldr r1, _020E5ECC ; =wstr$6E10
|
|
mov r0, r4
|
|
bl wcscpy
|
|
_020E5C60:
|
|
add sp, sp, #0x44
|
|
mov r0, r4
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E5C74:
|
|
cmp r0, #0x4e
|
|
bne _020E5CF0
|
|
ldrsb r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
beq _020E5CB4
|
|
cmp r6, #0x41
|
|
sub r4, r8, #0xa
|
|
bne _020E5CA4
|
|
ldr r1, _020E5ED0 ; =wstr$6E18
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5CDC
|
|
_020E5CA4:
|
|
ldr r1, _020E5ED4 ; =wstr$6E24
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5CDC
|
|
_020E5CB4:
|
|
cmp r6, #0x41
|
|
sub r4, r8, #0x8
|
|
bne _020E5CD0
|
|
ldr r1, _020E5ED8 ; =wstr$6E30
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E5CDC
|
|
_020E5CD0:
|
|
ldr r1, _020E5EDC ; =wstr$6E38
|
|
mov r0, r4
|
|
bl wcscpy
|
|
_020E5CDC:
|
|
add sp, sp, #0x44
|
|
mov r0, r4
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E5CF0:
|
|
mov r3, r10
|
|
mov r1, #0x1
|
|
mov r0, #0x64
|
|
add r9, sp, #0x68
|
|
strb r1, [sp, #0x34]
|
|
strb r1, [sp, #0x35]
|
|
strb r3, [sp, #0x36]
|
|
strb r3, [sp, #0x37]
|
|
strb r3, [sp, #0x38]
|
|
str r3, [sp, #0x3c]
|
|
str r1, [sp, #0x40]
|
|
strh r0, [sp, #0x3a]
|
|
_020E5D20:
|
|
rsb r1, r3, #0x7
|
|
ldrsb r2, [r9, r3]
|
|
ldrsb r0, [r9, r1]
|
|
strb r0, [r9, r3]
|
|
add r3, r3, #0x1
|
|
strb r2, [r9, r1]
|
|
cmp r3, #0x4
|
|
blt _020E5D20
|
|
ldrb r0, [sp, #0x69]
|
|
ldrb r1, [sp, #0x68]
|
|
ldr sb, _020E5EE0 ; =0x000007FF
|
|
mov r0, r0, lsl #0x11
|
|
orr r1, r0, r1, lsl #0x19
|
|
add r0, sp, #0x34
|
|
and lr, r9, r1, lsr #0x15
|
|
sub r12, sp, #0x8
|
|
ldmia r0, {r0-r3}
|
|
stmia r12, {r0-r3}
|
|
rsb r0, r9, #0x400
|
|
mov r1, r8
|
|
add r0, lr, r0
|
|
ldmia r12, {r2-r3}
|
|
bl long2str__wide
|
|
cmp r6, #0x61
|
|
moveq r1, #0x70
|
|
movne r1, #0x50
|
|
strh r1, [r0, #-0x2]!
|
|
mov r1, r7, lsl #0x2
|
|
mov lr, r7
|
|
cmp r7, #0x1
|
|
add r8, r1, #0xb
|
|
add r12, sp, #0x68
|
|
blt _020E5E30
|
|
mov r9, #0x30
|
|
_020E5DA8:
|
|
cmp r8, #0x40
|
|
bge _020E5E18
|
|
ldrb r1, [r12, r8, asr #0x3]
|
|
and r2, r8, #0x7
|
|
rsb r3, r2, #0x7
|
|
mov r2, r1, asr r3
|
|
sub r10, r8, #0x4
|
|
bic r1, r8, #0x7
|
|
bic r10, r10, #0x7
|
|
cmp r1, r10
|
|
add r10, r12, r8, asr #0x3
|
|
and r1, r2, #0xff
|
|
beq _020E5DEC
|
|
ldrb r2, [r10, #-0x1]
|
|
mov r2, r2, lsl #0x8
|
|
orr r1, r1, r2, asr r3
|
|
and r1, r1, #0xff
|
|
_020E5DEC:
|
|
and r1, r1, #0xf
|
|
cmp r1, #0xa
|
|
addcc r1, r1, #0x30
|
|
andcc r1, r1, #0xff
|
|
blo _020E5E1C
|
|
cmp r6, #0x61
|
|
addeq r1, r1, #0x57
|
|
andeq r1, r1, #0xff
|
|
addne r1, r1, #0x37
|
|
andne r1, r1, #0xff
|
|
b _020E5E1C
|
|
_020E5E18:
|
|
mov r1, r9
|
|
_020E5E1C:
|
|
sub lr, lr, #0x1
|
|
cmp lr, #0x1
|
|
strh r1, [r0, #-0x2]!
|
|
sub r8, r8, #0x4
|
|
bge _020E5DA8
|
|
_020E5E30:
|
|
cmp r7, #0x0
|
|
cmpeq r5, #0x0
|
|
movne r1, #0x2e
|
|
strneh r1, [r0, #-0x2]!
|
|
mov r1, #0x31
|
|
strh r1, [r0, #-0x2]
|
|
cmp r6, #0x61
|
|
moveq r1, #0x78
|
|
movne r1, #0x58
|
|
strh r1, [r0, #-0x4]!
|
|
mov r1, #0x30
|
|
strh r1, [r0, #-0x2]!
|
|
ldrsb r1, [sp, #0xc]
|
|
cmp r1, #0x0
|
|
movne r1, #0x2d
|
|
strneh r1, [r0, #-0x2]!
|
|
addne sp, sp, #0x44
|
|
ldmneia sp!, {r3-r10,lr}
|
|
addne sp, sp, #0x10
|
|
bxne lr
|
|
cmp r4, #0x1
|
|
moveq r1, #0x2b
|
|
streqh r1, [r0, #-0x2]!
|
|
addeq sp, sp, #0x44
|
|
ldmeqia sp!, {r3-r10,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
cmp r4, #0x2
|
|
moveq r1, #0x20
|
|
streqh r1, [r0, #-0x2]!
|
|
add sp, sp, #0x44
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E5EB8: .word 0x000001FD
|
|
_020E5EBC: .word wstr$6DE4
|
|
_020E5EC0: .word wstr$6DF0
|
|
_020E5EC4: .word wstr$6DFC
|
|
_020E5EC8: .word wstr$6E08
|
|
_020E5ECC: .word wstr$6E10
|
|
_020E5ED0: .word wstr$6E18
|
|
_020E5ED4: .word wstr$6E24
|
|
_020E5ED8: .word wstr$6E30
|
|
_020E5EDC: .word wstr$6E38
|
|
_020E5EE0: .word 0x000007FF
|
|
; arm_func_end double2hex__wide
|
|
|
|
arm_func_start round_decimal__wide
|
|
round_decimal__wide: ; 0x020E5EE4
|
|
stmdb sp!, {r4,lr}
|
|
cmp r1, #0x0
|
|
bge _020E5F0C
|
|
_020E5EF0:
|
|
mov r1, #0x0
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
strb r1, [r0, #0x4]
|
|
mov r1, #0x30
|
|
strb r1, [r0, #0x5]
|
|
ldmia sp!, {r4,pc}
|
|
_020E5F0C:
|
|
ldrb lr, [r0, #0x4]
|
|
cmp r1, lr
|
|
ldmgeia sp!, {r4,pc}
|
|
add r12, r0, #0x5
|
|
add r2, r12, r1
|
|
add r2, r2, #0x1
|
|
ldrsb r3, [r2, #-0x1]!
|
|
sub r3, r3, #0x30
|
|
mov r3, r3, lsl #0x18
|
|
mov r3, r3, asr #0x18
|
|
cmp r3, #0x5
|
|
bne _020E5F6C
|
|
add r12, r12, lr
|
|
_020E5F40:
|
|
sub r12, r12, #0x1
|
|
cmp r12, r2
|
|
bls _020E5F58
|
|
ldrsb r3, [r12, #0x0]
|
|
cmp r3, #0x30
|
|
beq _020E5F40
|
|
_020E5F58:
|
|
cmp r12, r2
|
|
ldreqsb r3, [r2, #-0x1]
|
|
andeq r4, r3, #0x1
|
|
movne r4, #0x1
|
|
b _020E5F74
|
|
_020E5F6C:
|
|
movgt r4, #0x1
|
|
movle r4, #0x0
|
|
_020E5F74:
|
|
cmp r1, #0x0
|
|
beq _020E5FD0
|
|
mov r12, #0x0
|
|
mov lr, #0x1
|
|
_020E5F84:
|
|
ldrsb r3, [r2, #-0x1]!
|
|
sub r3, r3, #0x30
|
|
add r3, r3, r4
|
|
mov r3, r3, lsl #0x18
|
|
mov r3, r3, asr #0x18
|
|
cmp r3, #0x9
|
|
movgt r4, lr
|
|
movle r4, r12
|
|
cmp r4, #0x0
|
|
bne _020E5FB4
|
|
cmp r3, #0x0
|
|
bne _020E5FBC
|
|
_020E5FB4:
|
|
sub r1, r1, #0x1
|
|
b _020E5FC8
|
|
_020E5FBC:
|
|
add r3, r3, #0x30
|
|
strb r3, [r2, #0x0]
|
|
b _020E5FD0
|
|
_020E5FC8:
|
|
cmp r1, #0x0
|
|
bne _020E5F84
|
|
_020E5FD0:
|
|
cmp r4, #0x0
|
|
beq _020E5FF8
|
|
ldrsh r3, [r0, #0x2]
|
|
mov r2, #0x1
|
|
mov r1, #0x31
|
|
add r3, r3, #0x1
|
|
strh r3, [r0, #0x2]
|
|
strb r2, [r0, #0x4]
|
|
strb r1, [r0, #0x5]
|
|
ldmia sp!, {r4,pc}
|
|
_020E5FF8:
|
|
cmp r1, #0x0
|
|
beq _020E5EF0
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4,pc}
|
|
arm_func_end round_decimal__wide
|
|
|
|
arm_func_start float2str__wide
|
|
float2str__wide: ; 0x020E6008
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r4-r11,lr}
|
|
sub sp, sp, #0x22c
|
|
mov r10, r0
|
|
add r0, sp, #0x250
|
|
ldr r7, [sp, #0x268]
|
|
ldr r3, _020E6628 ; =0x000001FD
|
|
ldrh r6, [r0, #0x12]
|
|
cmp r7, r3
|
|
ldrb r5, [sp, #0x25f]
|
|
ldrb r4, [sp, #0x25d]
|
|
mov r8, r1
|
|
mov r9, r2
|
|
addgt sp, sp, #0x22c
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r4-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
mov r12, #0x0
|
|
mov r11, #0x20
|
|
add r0, sp, #0x0
|
|
add r3, sp, #0x4
|
|
mov r1, r10
|
|
mov r2, r8
|
|
strb r12, [sp, #0x0]
|
|
strh r11, [sp, #0x2]
|
|
bl __num2dec_internal2
|
|
ldrb r0, [sp, #0x8]
|
|
add r1, sp, #0x9
|
|
add r0, r1, r0
|
|
b _020E609C
|
|
_020E6084:
|
|
ldrb r2, [sp, #0x8]
|
|
ldrsh r1, [sp, #0x6]
|
|
sub r2, r2, #0x1
|
|
add r1, r1, #0x1
|
|
strb r2, [sp, #0x8]
|
|
strh r1, [sp, #0x6]
|
|
_020E609C:
|
|
ldrb r1, [sp, #0x8]
|
|
cmp r1, #0x1
|
|
bls _020E60B4
|
|
ldrsb r1, [r0, #-0x1]!
|
|
cmp r1, #0x30
|
|
beq _020E6084
|
|
_020E60B4:
|
|
ldrb r0, [sp, #0x9]
|
|
cmp r0, #0x30
|
|
beq _020E60D4
|
|
cmp r0, #0x49
|
|
beq _020E60E0
|
|
cmp r0, #0x4e
|
|
beq _020E6198
|
|
b _020E6244
|
|
_020E60D4:
|
|
mov r0, #0x0
|
|
strh r0, [sp, #0x6]
|
|
b _020E6244
|
|
_020E60E0:
|
|
mov r2, #0x0
|
|
mov r0, r10
|
|
mov r1, r8
|
|
mov r3, r2
|
|
bl _dls
|
|
bhs _020E6140
|
|
cmp r6, #0x80
|
|
sub r4, r9, #0xa
|
|
movcs r0, #0x0
|
|
bhs _020E6118
|
|
ldr r0, _020E662C ; =__wctype_mapC
|
|
mov r1, r6, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
and r0, r0, #0x200
|
|
_020E6118:
|
|
cmp r0, #0x0
|
|
beq _020E6130
|
|
ldr r1, _020E6630 ; =wstr$6DF0
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6184
|
|
_020E6130:
|
|
ldr r1, _020E6634 ; =wstr$6DFC
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6184
|
|
_020E6140:
|
|
cmp r6, #0x80
|
|
sub r4, r9, #0x8
|
|
movcs r0, #0x0
|
|
bhs _020E6160
|
|
ldr r0, _020E662C ; =__wctype_mapC
|
|
mov r1, r6, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
and r0, r0, #0x200
|
|
_020E6160:
|
|
cmp r0, #0x0
|
|
beq _020E6178
|
|
ldr r1, _020E6638 ; =wstr$6E08
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6184
|
|
_020E6178:
|
|
ldr r1, _020E663C ; =wstr$6E10
|
|
mov r0, r4
|
|
bl wcscpy
|
|
_020E6184:
|
|
add sp, sp, #0x22c
|
|
mov r0, r4
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E6198:
|
|
ldrsb r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020E61EC
|
|
cmp r6, #0x80
|
|
sub r4, r9, #0xa
|
|
movcs r0, #0x0
|
|
bhs _020E61C4
|
|
ldr r0, _020E662C ; =__wctype_mapC
|
|
mov r1, r6, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
and r0, r0, #0x200
|
|
_020E61C4:
|
|
cmp r0, #0x0
|
|
beq _020E61DC
|
|
ldr r1, _020E6640 ; =wstr$6E18
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6230
|
|
_020E61DC:
|
|
ldr r1, _020E6644 ; =wstr$6E24
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6230
|
|
_020E61EC:
|
|
cmp r6, #0x80
|
|
sub r4, r9, #0x8
|
|
movcs r0, #0x0
|
|
bhs _020E620C
|
|
ldr r0, _020E662C ; =__wctype_mapC
|
|
mov r1, r6, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
and r0, r0, #0x200
|
|
_020E620C:
|
|
cmp r0, #0x0
|
|
beq _020E6224
|
|
ldr r1, _020E6648 ; =wstr$6E30
|
|
mov r0, r4
|
|
bl wcscpy
|
|
b _020E6230
|
|
_020E6224:
|
|
ldr r1, _020E664C ; =wstr$6E38
|
|
mov r0, r4
|
|
bl wcscpy
|
|
_020E6230:
|
|
add sp, sp, #0x22c
|
|
mov r0, r4
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E6244:
|
|
ldrb r1, [sp, #0x8]
|
|
ldrsh r2, [sp, #0x6]
|
|
add r0, sp, #0x200
|
|
sub r1, r1, #0x1
|
|
add r0, r0, #0x2a
|
|
add r1, r2, r1
|
|
sub r8, r0, #0x1
|
|
strh r1, [sp, #0x6]
|
|
mov r0, #0x0
|
|
strb r0, [r8, #0x0]
|
|
cmp r6, #0x65
|
|
bgt _020E62A0
|
|
bge _020E632C
|
|
cmp r6, #0x47
|
|
bgt _020E65EC
|
|
cmp r6, #0x45
|
|
blt _020E65EC
|
|
beq _020E632C
|
|
cmp r6, #0x46
|
|
beq _020E6478
|
|
cmp r6, #0x47
|
|
beq _020E62B8
|
|
b _020E65EC
|
|
_020E62A0:
|
|
cmp r6, #0x66
|
|
bgt _020E62B0
|
|
beq _020E6478
|
|
b _020E65EC
|
|
_020E62B0:
|
|
cmp r6, #0x67
|
|
bne _020E65EC
|
|
_020E62B8:
|
|
ldrb r0, [sp, #0x8]
|
|
cmp r0, r7
|
|
ble _020E62D0
|
|
add r0, sp, #0x4
|
|
mov r1, r7
|
|
bl round_decimal__wide
|
|
_020E62D0:
|
|
ldrsh r2, [sp, #0x6]
|
|
mvn r0, #0x3
|
|
cmp r2, r0
|
|
blt _020E62E8
|
|
cmp r2, r7
|
|
blt _020E6308
|
|
_020E62E8:
|
|
cmp r5, #0x0
|
|
ldreqb r0, [sp, #0x8]
|
|
subne r7, r7, #0x1
|
|
subeq r7, r0, #0x1
|
|
cmp r6, #0x67
|
|
moveq r6, #0x65
|
|
movne r6, #0x45
|
|
b _020E632C
|
|
_020E6308:
|
|
cmp r5, #0x0
|
|
addne r0, r2, #0x1
|
|
subne r7, r7, r0
|
|
bne _020E6478
|
|
ldrb r1, [sp, #0x8]
|
|
add r0, r2, #0x1
|
|
subs r7, r1, r0
|
|
movmi r7, #0x0
|
|
b _020E6478
|
|
_020E632C:
|
|
ldrb r0, [sp, #0x8]
|
|
add r1, r7, #0x1
|
|
cmp r0, r1
|
|
ble _020E6344
|
|
add r0, sp, #0x4
|
|
bl round_decimal__wide
|
|
_020E6344:
|
|
ldrsh lr, [sp, #0x6]
|
|
mov r11, #0x2b
|
|
mov r10, #0x0
|
|
cmp lr, #0x0
|
|
rsblt lr, lr, #0x0
|
|
movlt r11, #0x2d
|
|
ldr r3, _020E6650 ; =0x66666667
|
|
mov r0, #0xa
|
|
b _020E6398
|
|
_020E6368:
|
|
mov r1, lr, lsr #0x1f
|
|
smull r2, r12, r3, lr
|
|
add r12, r1, r12, asr #0x2
|
|
smull r1, r2, r0, r12
|
|
sub r12, lr, r1
|
|
add r1, r12, #0x30
|
|
strb r1, [r8, #-0x1]!
|
|
mov r2, lr
|
|
smull r1, lr, r3, r2
|
|
mov r1, r2, lsr #0x1f
|
|
add lr, r1, lr, asr #0x2
|
|
add r10, r10, #0x1
|
|
_020E6398:
|
|
cmp lr, #0x0
|
|
bne _020E6368
|
|
cmp r10, #0x2
|
|
blt _020E6368
|
|
add r0, sp, #0x2a
|
|
strb r11, [r8, #-0x1]
|
|
strb r6, [r8, #-0x2]!
|
|
sub r1, r0, r8
|
|
ldr r0, _020E6628 ; =0x000001FD
|
|
add r1, r1, r7
|
|
cmp r1, r0
|
|
addgt sp, sp, #0x22c
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r4-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
ldrb r1, [sp, #0x8]
|
|
add r0, r7, #0x1
|
|
cmp r1, r0
|
|
bge _020E6408
|
|
add r0, r7, #0x2
|
|
sub r0, r0, r1
|
|
subs r1, r0, #0x1
|
|
beq _020E6408
|
|
mov r0, #0x30
|
|
_020E63FC:
|
|
strb r0, [r8, #-0x1]!
|
|
subs r1, r1, #0x1
|
|
bne _020E63FC
|
|
_020E6408:
|
|
ldrb r1, [sp, #0x8]
|
|
add r0, sp, #0x9
|
|
add r2, r0, r1
|
|
subs r1, r1, #0x1
|
|
beq _020E642C
|
|
_020E641C:
|
|
ldrsb r0, [r2, #-0x1]!
|
|
subs r1, r1, #0x1
|
|
strb r0, [r8, #-0x1]!
|
|
bne _020E641C
|
|
_020E642C:
|
|
cmp r7, #0x0
|
|
cmpeq r5, #0x0
|
|
movne r0, #0x2e
|
|
strneb r0, [r8, #-0x1]!
|
|
ldrb r0, [sp, #0x9]
|
|
strb r0, [r8, #-0x1]!
|
|
ldrsb r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneb r0, [r8, #-0x1]!
|
|
bne _020E65EC
|
|
cmp r4, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r8, #-0x1]!
|
|
beq _020E65EC
|
|
cmp r4, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r8, #-0x1]!
|
|
b _020E65EC
|
|
_020E6478:
|
|
ldrsh r3, [sp, #0x6]
|
|
ldrb r2, [sp, #0x8]
|
|
sub r0, r2, r3
|
|
subs r1, r0, #0x1
|
|
movmi r1, #0x0
|
|
cmp r1, r7
|
|
ble _020E64B8
|
|
sub r1, r1, r7
|
|
add r0, sp, #0x4
|
|
sub r1, r2, r1
|
|
bl round_decimal__wide
|
|
ldrsh r3, [sp, #0x6]
|
|
ldrb r2, [sp, #0x8]
|
|
sub r0, r2, r3
|
|
subs r1, r0, #0x1
|
|
movmi r1, #0x0
|
|
_020E64B8:
|
|
adds r0, r3, #0x1
|
|
movmi r0, #0x0
|
|
ldr r3, _020E6628 ; =0x000001FD
|
|
add r6, r0, r1
|
|
cmp r6, r3
|
|
addgt sp, sp, #0x22c
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r4-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
add r3, sp, #0x9
|
|
sub r6, r7, r1
|
|
cmp r6, #0x0
|
|
add r2, r3, r2
|
|
mov r10, #0x0
|
|
ble _020E650C
|
|
mov r3, #0x30
|
|
_020E64FC:
|
|
add r10, r10, #0x1
|
|
cmp r10, r6
|
|
strb r3, [r8, #-0x1]!
|
|
blt _020E64FC
|
|
_020E650C:
|
|
mov r6, #0x0
|
|
b _020E6520
|
|
_020E6514:
|
|
ldrsb r3, [r2, #-0x1]!
|
|
add r6, r6, #0x1
|
|
strb r3, [r8, #-0x1]!
|
|
_020E6520:
|
|
cmp r6, r1
|
|
ldrltb r3, [sp, #0x8]
|
|
cmplt r6, r3
|
|
blt _020E6514
|
|
cmp r6, r1
|
|
bge _020E654C
|
|
mov r3, #0x30
|
|
_020E653C:
|
|
add r6, r6, #0x1
|
|
cmp r6, r1
|
|
strb r3, [r8, #-0x1]!
|
|
blt _020E653C
|
|
_020E654C:
|
|
cmp r7, #0x0
|
|
cmpeq r5, #0x0
|
|
movne r1, #0x2e
|
|
strneb r1, [r8, #-0x1]!
|
|
cmp r0, #0x0
|
|
beq _020E65B4
|
|
ldrb r1, [sp, #0x8]
|
|
mov r5, #0x0
|
|
sub r1, r0, r1
|
|
cmp r1, #0x0
|
|
ble _020E6594
|
|
mov r3, #0x30
|
|
_020E657C:
|
|
strb r3, [r8, #-0x1]!
|
|
ldrb r1, [sp, #0x8]
|
|
add r5, r5, #0x1
|
|
sub r1, r0, r1
|
|
cmp r5, r1
|
|
blt _020E657C
|
|
_020E6594:
|
|
cmp r5, r0
|
|
bge _020E65BC
|
|
_020E659C:
|
|
ldrsb r1, [r2, #-0x1]!
|
|
add r5, r5, #0x1
|
|
cmp r5, r0
|
|
strb r1, [r8, #-0x1]!
|
|
blt _020E659C
|
|
b _020E65BC
|
|
_020E65B4:
|
|
mov r0, #0x30
|
|
strb r0, [r8, #-0x1]!
|
|
_020E65BC:
|
|
ldrsb r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneb r0, [r8, #-0x1]!
|
|
bne _020E65EC
|
|
cmp r4, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r8, #-0x1]!
|
|
beq _020E65EC
|
|
cmp r4, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r8, #-0x1]!
|
|
_020E65EC:
|
|
mov r0, r8
|
|
bl strlen
|
|
sub r1, r9, r0, lsl #0x1
|
|
mov r0, r8
|
|
sub r4, r1, #0x2
|
|
bl strlen
|
|
mov r2, r0
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl mbstowcs
|
|
mov r0, r4
|
|
add sp, sp, #0x22c
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E6628: .word 0x000001FD
|
|
_020E662C: .word __wctype_mapC
|
|
_020E6630: .word wstr$6DF0
|
|
_020E6634: .word wstr$6DFC
|
|
_020E6638: .word wstr$6E08
|
|
_020E663C: .word wstr$6E10
|
|
_020E6640: .word wstr$6E18
|
|
_020E6644: .word wstr$6E24
|
|
_020E6648: .word wstr$6E30
|
|
_020E664C: .word wstr$6E38
|
|
_020E6650: .word 0x66666667
|
|
; arm_func_end float2str__wide
|
|
|
|
arm_func_start __wpformatter
|
|
__wpformatter:
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3-r11,lr}
|
|
sub sp, sp, #0x430
|
|
mov r3, #0x20
|
|
mov r11, r2
|
|
strh r3, [sp, #0x1c]
|
|
ldrh r2, [r11, #0x0]
|
|
mov r9, r0
|
|
mov r8, r1
|
|
cmp r2, #0x0
|
|
mov r4, #0x0
|
|
beq _020E6F24
|
|
_020E6684:
|
|
mov r0, r11
|
|
mov r1, #0x25
|
|
bl wcschr
|
|
str r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
bne _020E66D8
|
|
mov r0, r11
|
|
bl wcslen
|
|
movs r2, r0
|
|
add r4, r4, r2
|
|
beq _020E6F24
|
|
mov r0, r8
|
|
mov r1, r11
|
|
blx r9
|
|
cmp r0, #0x0
|
|
bne _020E6F24
|
|
add sp, sp, #0x430
|
|
mvn r0, #0x0
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E66D8:
|
|
sub r0, r0, r11
|
|
add r0, r0, r0, lsr #0x1f
|
|
movs r2, r0, asr #0x1
|
|
add r4, r4, r2
|
|
beq _020E6710
|
|
mov r0, r8
|
|
mov r1, r11
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E6710:
|
|
add r1, sp, #0x400
|
|
ldr r0, [sp, #0xc]
|
|
add r1, r1, #0x64
|
|
add r2, sp, #0x20
|
|
bl parse_format__wide
|
|
ldrh r1, [sp, #0x26]
|
|
mov r11, r0
|
|
cmp r1, #0x61
|
|
bgt _020E6780
|
|
bge _020E6AEC
|
|
cmp r1, #0x47
|
|
bgt _020E6774
|
|
subs r0, r1, #0x41
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020E6768
|
|
b _020E6AEC
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6A7C
|
|
b _020E6A7C
|
|
b _020E6A7C
|
|
_020E6768:
|
|
cmp r1, #0x25
|
|
beq _020E6D7C
|
|
b _020E6D90
|
|
_020E6774:
|
|
cmp r1, #0x58
|
|
beq _020E6940
|
|
b _020E6D90
|
|
_020E6780:
|
|
cmp r1, #0x75
|
|
bgt _020E67E8
|
|
subs r0, r1, #0x64
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020E67DC
|
|
b _020E6804
|
|
b _020E6A7C
|
|
b _020E6A7C
|
|
b _020E6A7C
|
|
b _020E6D90
|
|
b _020E6804
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6C98
|
|
b _020E6940
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6D90
|
|
b _020E6B5C
|
|
b _020E6D90
|
|
b _020E6940
|
|
_020E67DC:
|
|
cmp r1, #0x63
|
|
beq _020E6D24
|
|
b _020E6D90
|
|
_020E67E8:
|
|
cmp r1, #0x78
|
|
bgt _020E67F8
|
|
beq _020E6940
|
|
b _020E6D90
|
|
_020E67F8:
|
|
ldr r0, _020E6F38 ; =0x0000FFFF
|
|
cmp r1, r0
|
|
b _020E6D90
|
|
_020E6804:
|
|
ldrb r0, [sp, #0x24]
|
|
cmp r0, #0x3
|
|
bne _020E6824
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E68BC
|
|
_020E6824:
|
|
cmp r0, #0x4
|
|
bne _020E684C
|
|
ldr r1, [sp, #0x464]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x464]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E68BC
|
|
_020E684C:
|
|
cmp r0, #0x6
|
|
bne _020E6874
|
|
ldr r1, [sp, #0x464]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x464]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E68BC
|
|
_020E6874:
|
|
cmp r0, #0x7
|
|
bne _020E6890
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E68BC
|
|
_020E6890:
|
|
cmp r0, #0x8
|
|
bne _020E68AC
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E68BC
|
|
_020E68AC:
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
_020E68BC:
|
|
cmp r0, #0x2
|
|
moveq r1, r10, lsl #0x10
|
|
moveq r10, r1, asr #0x10
|
|
cmp r0, #0x4
|
|
cmpne r0, #0x6
|
|
add r0, sp, #0x20
|
|
bne _020E6904
|
|
sub r5, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
ldr r3, [r5, #0x0]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x14]
|
|
add r2, sp, #0x430
|
|
bl longlong2str__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
b _020E6928
|
|
_020E6904:
|
|
sub r5, sp, #0x8
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
add r1, sp, #0x430
|
|
mov r0, r10
|
|
ldmia r5, {r2-r3}
|
|
bl long2str__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
_020E6928:
|
|
add r0, sp, #0x400
|
|
add r0, r0, #0x2e
|
|
sub r0, r0, r6
|
|
add r0, r0, r0, lsr #0x1f
|
|
mov r7, r0, asr #0x1
|
|
b _020E6DDC
|
|
_020E6940:
|
|
ldrb r0, [sp, #0x24]
|
|
cmp r0, #0x3
|
|
bne _020E6960
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E69F8
|
|
_020E6960:
|
|
cmp r0, #0x4
|
|
bne _020E6988
|
|
ldr r1, [sp, #0x464]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x464]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E69F8
|
|
_020E6988:
|
|
cmp r0, #0x6
|
|
bne _020E69B0
|
|
ldr r1, [sp, #0x464]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x464]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E69F8
|
|
_020E69B0:
|
|
cmp r0, #0x7
|
|
bne _020E69CC
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E69F8
|
|
_020E69CC:
|
|
cmp r0, #0x8
|
|
bne _020E69E8
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
b _020E69F8
|
|
_020E69E8:
|
|
ldr r1, [sp, #0x464]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r10, [r1, #-0x4]
|
|
_020E69F8:
|
|
cmp r0, #0x2
|
|
moveq r1, r10, lsl #0x10
|
|
moveq r10, r1, lsr #0x10
|
|
cmp r0, #0x4
|
|
cmpne r0, #0x6
|
|
add r0, sp, #0x20
|
|
bne _020E6A40
|
|
sub r5, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
ldr r3, [r5, #0x0]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x14]
|
|
add r2, sp, #0x430
|
|
bl longlong2str__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
b _020E6A64
|
|
_020E6A40:
|
|
sub r5, sp, #0x8
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
add r1, sp, #0x430
|
|
mov r0, r10
|
|
ldmia r5, {r2-r3}
|
|
bl long2str__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
_020E6A64:
|
|
add r0, sp, #0x400
|
|
add r0, r0, #0x2e
|
|
sub r0, r0, r6
|
|
add r0, r0, r0, lsr #0x1f
|
|
mov r7, r0, asr #0x1
|
|
b _020E6DDC
|
|
_020E6A7C:
|
|
ldrb r0, [sp, #0x24]
|
|
cmp r0, #0x9
|
|
ldrne r0, [sp, #0x464]
|
|
addne r0, r0, #0x8
|
|
strne r0, [sp, #0x464]
|
|
bne _020E6AA0
|
|
ldr r0, [sp, #0x464]
|
|
add r0, r0, #0x8
|
|
str r0, [sp, #0x464]
|
|
_020E6AA0:
|
|
ldr r7, [r0, #-0x8]
|
|
ldr r6, [r0, #-0x4]
|
|
add r0, sp, #0x20
|
|
sub r5, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
ldr r3, [r5, #0x0]
|
|
mov r0, r7
|
|
mov r1, r6
|
|
add r2, sp, #0x430
|
|
bl float2str__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
add r0, sp, #0x400
|
|
add r0, r0, #0x2e
|
|
sub r0, r0, r6
|
|
add r0, r0, r0, lsr #0x1f
|
|
mov r7, r0, asr #0x1
|
|
b _020E6DDC
|
|
_020E6AEC:
|
|
ldrb r0, [sp, #0x24]
|
|
cmp r0, #0x9
|
|
ldrne r0, [sp, #0x464]
|
|
addne r0, r0, #0x8
|
|
strne r0, [sp, #0x464]
|
|
bne _020E6B10
|
|
ldr r0, [sp, #0x464]
|
|
add r0, r0, #0x8
|
|
str r0, [sp, #0x464]
|
|
_020E6B10:
|
|
ldr r7, [r0, #-0x8]
|
|
ldr r6, [r0, #-0x4]
|
|
add r0, sp, #0x20
|
|
sub r5, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r5, {r0-r3}
|
|
ldr r3, [r5, #0x0]
|
|
mov r0, r7
|
|
mov r1, r6
|
|
add r2, sp, #0x430
|
|
bl double2hex__wide
|
|
movs r6, r0
|
|
beq _020E6D90
|
|
add r0, sp, #0x400
|
|
add r0, r0, #0x2e
|
|
sub r0, r0, r6
|
|
add r0, r0, r0, lsr #0x1f
|
|
mov r7, r0, asr #0x1
|
|
b _020E6DDC
|
|
_020E6B5C:
|
|
ldrb r0, [sp, #0x24]
|
|
cmp r0, #0x5
|
|
bne _020E6BF8
|
|
ldr r0, [sp, #0x464]
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x464]
|
|
ldr r6, [r0, #-0x4]
|
|
ldrb r0, [sp, #0x23]
|
|
cmp r6, #0x0
|
|
ldreq r6, _020E6F3C ; =buff_ptr$6E40
|
|
cmp r0, #0x0
|
|
beq _020E6BB0
|
|
ldrh r1, [r6], #0x2
|
|
ldrb r0, [sp, #0x22]
|
|
and r7, r1, #0xff
|
|
cmp r0, #0x0
|
|
beq _020E6DDC
|
|
ldr r0, [sp, #0x2c]
|
|
cmp r7, r0
|
|
movgt r7, r0
|
|
b _020E6DDC
|
|
_020E6BB0:
|
|
ldrb r0, [sp, #0x22]
|
|
cmp r0, #0x0
|
|
beq _020E6BE8
|
|
ldr r7, [sp, #0x2c]
|
|
mov r0, r6
|
|
mov r2, r7
|
|
mov r1, #0x0
|
|
bl wmemchr
|
|
cmp r0, #0x0
|
|
beq _020E6DDC
|
|
sub r0, r0, r6
|
|
add r0, r0, r0, lsr #0x1f
|
|
mov r7, r0, asr #0x1
|
|
b _020E6DDC
|
|
_020E6BE8:
|
|
mov r0, r6
|
|
bl wcslen
|
|
mov r7, r0
|
|
b _020E6DDC
|
|
_020E6BF8:
|
|
ldr r0, [sp, #0x464]
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x464]
|
|
ldr r5, [r0, #-0x4]
|
|
ldrb r0, [sp, #0x23]
|
|
cmp r5, #0x0
|
|
ldreq r5, _020E6F40 ; =strptr$6E44
|
|
cmp r0, #0x0
|
|
beq _020E6C40
|
|
ldrh r1, [r6, #0x0]
|
|
ldrb r0, [sp, #0x22]
|
|
and r6, r1, #0xff
|
|
cmp r0, #0x0
|
|
beq _020E6C78
|
|
ldr r0, [sp, #0x2c]
|
|
cmp r6, r0
|
|
movgt r6, r0
|
|
b _020E6C78
|
|
_020E6C40:
|
|
ldrb r0, [sp, #0x22]
|
|
cmp r0, #0x0
|
|
beq _020E6C6C
|
|
ldr r6, [sp, #0x2c]
|
|
mov r0, r5
|
|
mov r2, r6
|
|
mov r1, #0x0
|
|
bl memchr
|
|
cmp r0, #0x0
|
|
subne r6, r0, r5
|
|
b _020E6C78
|
|
_020E6C6C:
|
|
mov r0, r5
|
|
bl strlen
|
|
mov r6, r0
|
|
_020E6C78:
|
|
add r0, sp, #0x30
|
|
mov r1, r5
|
|
mov r2, r6
|
|
bl mbstowcs
|
|
movs r7, r0
|
|
bmi _020E6D90
|
|
add r6, sp, #0x30
|
|
b _020E6DDC
|
|
_020E6C98:
|
|
ldr r1, [sp, #0x464]
|
|
ldrb r0, [sp, #0x24]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x464]
|
|
ldr r6, [r1, #-0x4]
|
|
cmp r0, #0x8
|
|
addls pc, pc, r0, lsl #0x2
|
|
b _020E6F18
|
|
b _020E6CDC ; case
|
|
b _020E6F18 ; case
|
|
b _020E6CE4 ; case
|
|
b _020E6CEC ; case
|
|
b _020E6D14 ; case
|
|
b _020E6F18 ; case
|
|
b _020E6CF4 ; case
|
|
b _020E6D04 ; case
|
|
b _020E6D0C ; case
|
|
_020E6CDC:
|
|
str r4, [r6, #0x0]
|
|
b _020E6F18
|
|
_020E6CE4:
|
|
strh r4, [r6, #0x0]
|
|
b _020E6F18
|
|
_020E6CEC:
|
|
str r4, [r6, #0x0]
|
|
b _020E6F18
|
|
_020E6CF4:
|
|
str r4, [r6, #0x0]
|
|
mov r0, r4, asr #0x1f
|
|
str r0, [r6, #0x4]
|
|
b _020E6F18
|
|
_020E6D04:
|
|
str r4, [r6, #0x0]
|
|
b _020E6F18
|
|
_020E6D0C:
|
|
str r4, [r6, #0x0]
|
|
b _020E6F18
|
|
_020E6D14:
|
|
str r4, [r6, #0x0]
|
|
mov r0, r4, asr #0x1f
|
|
str r0, [r6, #0x4]
|
|
b _020E6F18
|
|
_020E6D24:
|
|
ldrb r0, [sp, #0x24]
|
|
add r6, sp, #0x30
|
|
cmp r0, #0x5
|
|
bne _020E6D50
|
|
ldr r0, [sp, #0x464]
|
|
mov r7, #0x1
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x464]
|
|
ldr r0, [r0, #-0x4]
|
|
strh r0, [r6, #0x0]
|
|
b _020E6DDC
|
|
_020E6D50:
|
|
ldr r0, [sp, #0x464]
|
|
add r1, sp, #0x18
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x464]
|
|
ldr r3, [r0, #-0x4]
|
|
mov r0, r6
|
|
mov r2, #0x1
|
|
strb r3, [sp, #0x18]
|
|
bl mbtowc
|
|
mov r7, r0
|
|
b _020E6DDC
|
|
_020E6D7C:
|
|
mov r0, #0x25
|
|
strh r0, [sp, #0x30]
|
|
add r6, sp, #0x30
|
|
mov r7, #0x1
|
|
b _020E6DDC
|
|
_020E6D90:
|
|
ldr r0, [sp, #0xc]
|
|
bl wcslen
|
|
movs r5, r0
|
|
beq _020E6DC8
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, r8
|
|
mov r2, r5
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E6DC8:
|
|
add sp, sp, #0x430
|
|
add r0, r4, r5
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E6DDC:
|
|
ldrb r0, [sp, #0x20]
|
|
mov r5, r7
|
|
cmp r0, #0x0
|
|
beq _020E6E8C
|
|
cmp r0, #0x2
|
|
moveq r1, #0x30
|
|
movne r1, #0x20
|
|
strh r1, [sp, #0x1c]
|
|
ldrh r0, [r6, #0x0]
|
|
cmp r0, #0x2b
|
|
cmpne r0, #0x2d
|
|
cmpne r0, #0x20
|
|
bne _020E6E48
|
|
cmp r1, #0x30
|
|
bne _020E6E48
|
|
mov r0, r8
|
|
mov r1, r6
|
|
mov r2, #0x1
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
add r6, r6, #0x2
|
|
sub r7, r7, #0x1
|
|
_020E6E48:
|
|
ldr r0, [sp, #0x28]
|
|
cmp r5, r0
|
|
bge _020E6E8C
|
|
_020E6E54:
|
|
mov r0, r8
|
|
add r1, sp, #0x1c
|
|
mov r2, #0x1
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
ldr r0, [sp, #0x28]
|
|
add r5, r5, #0x1
|
|
cmp r5, r0
|
|
blt _020E6E54
|
|
_020E6E8C:
|
|
cmp r7, #0x0
|
|
beq _020E6EBC
|
|
mov r0, r8
|
|
mov r1, r6
|
|
mov r2, r7
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E6EBC:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x0
|
|
bne _020E6F14
|
|
ldr r0, [sp, #0x28]
|
|
cmp r5, r0
|
|
bge _020E6F14
|
|
mov r7, #0x20
|
|
_020E6ED8:
|
|
mov r0, r8
|
|
add r1, sp, #0x1a
|
|
mov r2, #0x1
|
|
strh r7, [sp, #0x1a]
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x430
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r3-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
ldr r0, [sp, #0x28]
|
|
add r5, r5, #0x1
|
|
cmp r5, r0
|
|
blt _020E6ED8
|
|
_020E6F14:
|
|
add r4, r4, r5
|
|
_020E6F18:
|
|
ldrh r0, [r11, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020E6684
|
|
_020E6F24:
|
|
mov r0, r4
|
|
add sp, sp, #0x430
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E6F38: .word 0x0000FFFF
|
|
_020E6F3C: .word buff_ptr$6E40
|
|
_020E6F40: .word strptr$6E44
|
|
arm_func_end __wpformatter
|
|
|
|
arm_func_start __wStringWrite
|
|
__wStringWrite: ; 0x020E6F44
|
|
stmdb sp!, {r3-r5,lr}
|
|
mov r4, r0
|
|
ldr r3, [r4, #0x8]
|
|
mov r5, r2
|
|
ldr r2, [r4, #0x4]
|
|
add r0, r3, r5
|
|
cmp r0, r2
|
|
ldr r0, [r4, #0x0]
|
|
subhi r5, r2, r3
|
|
mov r2, r5
|
|
add r0, r0, r3, lsl #0x1
|
|
bl wmemcpy
|
|
ldr r1, [r4, #0x8]
|
|
add r1, r1, r5
|
|
str r1, [r4, #0x8]
|
|
ldmia sp!, {r3-r5,pc}
|
|
arm_func_end __wStringWrite
|
|
|
|
arm_func_start swprintf
|
|
swprintf: ; 0x020E6F84
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3,lr}
|
|
add r3, sp, #0x10
|
|
bic r3, r3, #0x3
|
|
ldr r2, [sp, #0x10]
|
|
add r3, r3, #0x4
|
|
bl vswprintf
|
|
ldmia sp!, {r3,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end swprintf
|
|
|
|
arm_func_start vswprintf
|
|
vswprintf: ; 0x020E6FAC
|
|
stmdb sp!, {r4-r5,lr}
|
|
sub sp, sp, #0xc
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r12, #0x0
|
|
ldr r0, _020E7018 ; =__wStringWrite
|
|
add r1, sp, #0x0
|
|
str r5, [sp, #0x0]
|
|
str r4, [sp, #0x4]
|
|
str r12, [sp, #0x8]
|
|
bl __wpformatter
|
|
cmp r0, #0x0
|
|
addlt sp, sp, #0xc
|
|
ldmltia sp!, {r4-r5,pc}
|
|
cmp r0, r4
|
|
bhs _020E7000
|
|
mov r1, r0, lsl #0x1
|
|
mov r2, #0x0
|
|
add sp, sp, #0xc
|
|
strh r2, [r5, r1]
|
|
ldmia sp!, {r4-r5,pc}
|
|
_020E7000:
|
|
mov r1, #0x0
|
|
add r0, r5, r4, lsl #0x1
|
|
strh r1, [r0, #-0x2]
|
|
sub r0, r1, #0x1
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4-r5,pc}
|
|
.balign 4
|
|
_020E7018: .word __wStringWrite
|
|
arm_func_end vswprintf
|
|
|
|
exception long2str__wide, 593, 0x0090FF20
|
|
exception longlong2str__wide, 741, 0x00A0FF20
|
|
exception double2hex__wide, 921, 0x00F07F20
|
|
exception float2str__wide, 1612, UNK_020EC728
|
|
exception __wpformatter, 2288, UNK_020EC730
|
|
exception __wStringWrite, 65, 0x00200300
|
|
exception swprintf, 41, 0x00300020
|
|
exception vswprintf, 113, 0x00300300
|
|
|
|
.section .exception,8
|
|
|
|
UNK_020EC728: ; 0x020EC728
|
|
.byte 0x20, 0xFF, 0x09, 0x60
|
|
.balign 8
|
|
|
|
.section .exception,8
|
|
|
|
UNK_020EC730: ; 0x020EC730
|
|
.byte 0x20, 0xFF, 0x11, 0x68
|
|
.balign 8
|