pokediamond/arm9/asm/MSL_Common_wprintf.s
2023-05-24 09:15:59 +01:00

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