pokeheartgold/lib/MSL_C/asm/MSL_Common_printf.s
2025-02-22 23:02:46 +00:00

2602 lines
46 KiB
ArmAsm

.include "asm/macros.inc"
.include "MSL_Common_printf.inc"
.include "global.inc"
.data
.balign 4, 0
printf_double2hex_0p0: ; 0x02111314
.asciz "0x0p0"
.size printf_double2hex_0p0,.-printf_double2hex_0p0
.balign 4, 0
printf_double2hex_neg_inf_upper: ; 0x0211131C
.asciz "-INF"
.size printf_double2hex_neg_inf_upper,.-printf_double2hex_neg_inf_upper
.balign 4, 0
printf_double2hex_neg_inf_lower: ; 0x02111324
.asciz "-inf"
.size printf_double2hex_neg_inf_lower,.-printf_double2hex_neg_inf_lower
.balign 4, 0
printf_double2hex_inf_upper: ; 0x0211132C
.asciz "INF"
.size printf_double2hex_inf_upper,.-printf_double2hex_inf_upper
.balign 4, 0
printf_double2hex_inf_lower: ; 0x02111330
.asciz "inf"
.size printf_double2hex_inf_lower,.-printf_double2hex_inf_lower
.balign 4, 0
printf_double2hex_neg_nan_upper: ; 0x02111334
.asciz "-NAN"
.size printf_double2hex_neg_nan_upper,.-printf_double2hex_neg_nan_upper
.balign 4, 0
printf_double2hex_neg_nan_lower: ; 0x0211133C
.asciz "-nan"
.size printf_double2hex_neg_nan_lower,.-printf_double2hex_neg_nan_lower
.balign 4, 0
printf_double2hex_nan_upper: ; 0x02111344
.asciz "NAN"
.size printf_double2hex_nan_upper,.-printf_double2hex_nan_upper
.balign 4, 0
printf_double2hex_nan_lower: ; 0x02111348
.asciz "nan"
.size printf_double2hex_nan_lower,.-printf_double2hex_nan_lower
.balign 4, 0
__pformatter_empty_string_1: ; 0x0211134C
.asciz ""
.size __pformatter_empty_string_1,.-__pformatter_empty_string_1
.balign 4, 0
__pformatter_empty_string_2: ; 0x02111350
.asciz ""
.size __pformatter_empty_string_2,.-__pformatter_empty_string_2
.balign 4, 0
.text
arm_func_start parse_format
parse_format: ; 0x020E5CA0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
ldrsb r3, [r0, #1]
mov r4, #0
mov r5, #1
mov lr, r2
strb r5, [sp]
strb r4, [sp, #1]
strb r4, [sp, #2]
strb r4, [sp, #3]
strb r4, [sp, #4]
str r4, [sp, #8]
str r4, [sp, #0xc]
cmp r3, #0x25
add ip, r0, #1
bne _020E5CFC
add r0, sp, #0
strb r3, [sp, #5]
ldmia r0, {r0, r1, r2, r3}
stmia lr, {r0, r1, r2, r3}
add sp, sp, #0x10
add r0, ip, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020E5CFC:
mov r2, #2
mov r0, r4
mov r5, r2
mov r6, r4
mov r7, #1
_020E5D10:
mov r8, r7
cmp r3, #0x2b
bgt _020E5D40
bge _020E5D68
cmp r3, #0x23
bgt _020E5D98
cmp r3, #0x20
blt _020E5D98
beq _020E5D70
cmp r3, #0x23
beq _020E5D80
b _020E5D98
_020E5D40:
cmp r3, #0x30
bgt _020E5D98
cmp r3, #0x2d
blt _020E5D98
beq _020E5D60
cmp r3, #0x30
beq _020E5D88
b _020E5D98
_020E5D60:
strb r6, [sp]
b _020E5D9C
_020E5D68:
strb r7, [sp, #1]
b _020E5D9C
_020E5D70:
ldrb r4, [sp, #1]
cmp r4, #1
strneb r5, [sp, #1]
b _020E5D9C
_020E5D80:
strb r7, [sp, #3]
b _020E5D9C
_020E5D88:
ldrb r4, [sp]
cmp r4, #0
strneb r2, [sp]
b _020E5D9C
_020E5D98:
mov r8, r0
_020E5D9C:
cmp r8, #0
ldrnesb r3, [ip, #1]!
bne _020E5D10
cmp r3, #0x2a
bne _020E5DE4
ldr r0, [r1]
add r0, r0, #4
str r0, [r1]
ldr r0, [r0, #-4]
str r0, [sp, #8]
cmp r0, #0
bge _020E5DDC
rsb r0, r0, #0
mov r2, #0
strb r2, [sp]
str r0, [sp, #8]
_020E5DDC:
ldrsb r3, [ip, #1]!
b _020E5E34
_020E5DE4:
ldr r4, _020E6228 ; =__msl_digit
mov r5, #0
mov r0, #0xa
b _020E5E08
_020E5DF4:
ldr r2, [sp, #8]
sub r3, r3, #0x30
mla r6, r2, r0, r3
ldrsb r3, [ip, #1]!
str r6, [sp, #8]
_020E5E08:
cmp r3, #0
blt _020E5E18
cmp r3, #0x80
blt _020E5E20
_020E5E18:
mov r2, r5
b _020E5E2C
_020E5E20:
mov r2, r3, lsl #1
ldrh r2, [r4, r2]
and r2, r2, #8
_020E5E2C:
cmp r2, #0
bne _020E5DF4
_020E5E34:
ldr r2, [sp, #8]
ldr r0, _020E622C ; =0x000001FD
cmp r2, r0
ble _020E5E64
mov r1, #0xff
add r0, sp, #0
strb r1, [sp, #5]
ldmia r0, {r0, r1, r2, r3}
stmia lr, {r0, r1, r2, r3}
add sp, sp, #0x10
add r0, ip, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020E5E64:
cmp r3, #0x2e
bne _020E5EF8
ldrsb r3, [ip, #1]!
mov r0, #1
strb r0, [sp, #2]
cmp r3, #0x2a
bne _020E5EA8
ldr r0, [r1]
add r0, r0, #4
str r0, [r1]
ldr r0, [r0, #-4]
ldrsb r3, [ip, #1]!
str r0, [sp, #0xc]
cmp r0, #0
movlt r0, #0
strltb r0, [sp, #2]
b _020E5EF8
_020E5EA8:
ldr r2, _020E6228 ; =__msl_digit
mov r4, #0
mov r0, #0xa
b _020E5ECC
_020E5EB8:
ldr r1, [sp, #0xc]
sub r3, r3, #0x30
mla r5, r1, r0, r3
ldrsb r3, [ip, #1]!
str r5, [sp, #0xc]
_020E5ECC:
cmp r3, #0
blt _020E5EDC
cmp r3, #0x80
blt _020E5EE4
_020E5EDC:
mov r1, r4
b _020E5EF0
_020E5EE4:
mov r1, r3, lsl #1
ldrh r1, [r2, r1]
and r1, r1, #8
_020E5EF0:
cmp r1, #0
bne _020E5EB8
_020E5EF8:
cmp r3, #0x6c
mov r0, #1
bgt _020E5F30
cmp r3, #0x68
blt _020E5F24
beq _020E5F4C
cmp r3, #0x6a
beq _020E5F98
cmp r3, #0x6c
beq _020E5F68
b _020E5FBC
_020E5F24:
cmp r3, #0x4c
beq _020E5F8C
b _020E5FBC
_020E5F30:
cmp r3, #0x74
bgt _020E5F40
beq _020E5FA4
b _020E5FBC
_020E5F40:
cmp r3, #0x7a
beq _020E5FB0
b _020E5FBC
_020E5F4C:
ldrsb r1, [ip, #1]
mov r2, #2
strb r2, [sp, #4]
cmp r1, #0x68
streqb r0, [sp, #4]
ldreqsb r3, [ip, #1]!
b _020E5FC0
_020E5F68:
ldrsb r1, [ip, #1]
mov r2, #3
strb r2, [sp, #4]
cmp r1, #0x6c
bne _020E5FC0
mov r1, #4
strb r1, [sp, #4]
ldrsb r3, [ip, #1]!
b _020E5FC0
_020E5F8C:
mov r1, #9
strb r1, [sp, #4]
b _020E5FC0
_020E5F98:
mov r1, #6
strb r1, [sp, #4]
b _020E5FC0
_020E5FA4:
mov r1, #8
strb r1, [sp, #4]
b _020E5FC0
_020E5FB0:
mov r1, #7
strb r1, [sp, #4]
b _020E5FC0
_020E5FBC:
mov r0, #0
_020E5FC0:
cmp r0, #0
ldrnesb r3, [ip, #1]!
strb r3, [sp, #5]
cmp r3, #0x61
bgt _020E6014
bge _020E60FC
cmp r3, #0x47
bgt _020E6008
subs r0, r3, #0x41
addpl pc, pc, r0, lsl #2
b _020E6208
_020E5FEC: ; jump table
b _020E60FC ; case 0
b _020E6208 ; case 1
b _020E6208 ; case 2
b _020E6208 ; case 3
b _020E6144 ; case 4
b _020E60C4 ; case 5
b _020E6134 ; case 6
_020E6008:
cmp r3, #0x58
beq _020E6088
b _020E6208
_020E6014:
cmp r3, #0x63
bgt _020E6024
beq _020E61A4
b _020E6208
_020E6024:
sub r0, r3, #0x64
cmp r0, #0x14
addls pc, pc, r0, lsl #2
b _020E6208
_020E6034: ; jump table
b _020E6088 ; case 0
b _020E6144 ; case 1
b _020E60C4 ; case 2
b _020E6134 ; case 3
b _020E6208 ; case 4
b _020E6088 ; case 5
b _020E6208 ; case 6
b _020E6208 ; case 7
b _020E6208 ; case 8
b _020E6208 ; case 9
b _020E61F4 ; case 10
b _020E6088 ; case 11
b _020E6180 ; case 12
b _020E6208 ; case 13
b _020E6208 ; case 14
b _020E61D0 ; case 15
b _020E6208 ; case 16
b _020E6088 ; case 17
b _020E6208 ; case 18
b _020E6208 ; case 19
b _020E6088 ; case 20
_020E6088:
ldrb r0, [sp, #4]
cmp r0, #9
moveq r0, #0xff
streqb r0, [sp, #5]
beq _020E6210
ldrb r0, [sp, #2]
cmp r0, #0
moveq r0, #1
streq r0, [sp, #0xc]
beq _020E6210
ldrb r0, [sp]
cmp r0, #2
moveq r0, #1
streqb r0, [sp]
b _020E6210
_020E60C4:
ldrb r0, [sp, #4]
cmp r0, #2
cmpne r0, #6
cmpne r0, #7
cmpne r0, #8
cmpne r0, #4
moveq r0, #0xff
streqb r0, [sp, #5]
beq _020E6210
ldrb r0, [sp, #2]
cmp r0, #0
moveq r0, #6
streq r0, [sp, #0xc]
b _020E6210
_020E60FC:
ldrb r0, [sp, #2]
cmp r0, #0
moveq r0, #0xd
streq r0, [sp, #0xc]
ldrb r0, [sp, #4]
cmp r0, #2
cmpne r0, #6
cmpne r0, #7
cmpne r0, #8
cmpne r0, #4
cmpne r0, #1
moveq r0, #0xff
streqb r0, [sp, #5]
b _020E6210
_020E6134:
ldr r0, [sp, #0xc]
cmp r0, #0
moveq r0, #1
streq r0, [sp, #0xc]
_020E6144:
ldrb r0, [sp, #4]
cmp r0, #2
cmpne r0, #6
cmpne r0, #7
cmpne r0, #8
cmpne r0, #4
cmpne r0, #1
moveq r0, #0xff
streqb r0, [sp, #5]
beq _020E6210
ldrb r0, [sp, #2]
cmp r0, #0
moveq r0, #6
streq r0, [sp, #0xc]
b _020E6210
_020E6180:
mov r3, #0x78
mov r2, #1
mov r1, #3
mov r0, #8
strb r3, [sp, #5]
strb r2, [sp, #3]
strb r1, [sp, #4]
str r0, [sp, #0xc]
b _020E6210
_020E61A4:
ldrb r1, [sp, #4]
cmp r1, #3
moveq r0, #5
streqb r0, [sp, #4]
beq _020E6210
ldrb r0, [sp, #2]
cmp r0, #0
cmpeq r1, #0
movne r0, #0xff
strneb r0, [sp, #5]
b _020E6210
_020E61D0:
ldrb r0, [sp, #4]
cmp r0, #3
moveq r0, #5
streqb r0, [sp, #4]
beq _020E6210
cmp r0, #0
movne r0, #0xff
strneb r0, [sp, #5]
b _020E6210
_020E61F4:
ldrb r0, [sp, #4]
cmp r0, #9
moveq r0, #0xff
streqb r0, [sp, #5]
b _020E6210
_020E6208:
mov r0, #0xff
strb r0, [sp, #5]
_020E6210:
add r0, sp, #0
ldmia r0, {r0, r1, r2, r3}
stmia lr, {r0, r1, r2, r3}
add r0, ip, #1
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E6228: .word __msl_digit
_020E622C: .word 0x000001FD
arm_func_end parse_format
arm_func_start long2str
long2str: ; 0x020E6230
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10
movs sl, r0
mov r0, #0
mov r5, r1
str r0, [sp, #0xc]
ldr r7, [sp, #0x4c]
mov r6, r0
strb r0, [r5, #-1]!
ldrb r0, [sp, #0x43]
str r1, [sp]
ldrb r8, [sp, #0x45]
str r0, [sp, #4]
ldr r0, [sp, #0x48]
ldrb fp, [sp, #0x41]
str r0, [sp, #8]
cmpeq r7, #0
bne _020E62A4
ldr r0, [sp, #4]
cmp r0, #0
beq _020E6290
cmp r8, #0x6f
beq _020E62A4
_020E6290:
add sp, sp, #0x10
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E62A4:
cmp r8, #0x69
bgt _020E62CC
bge _020E6300
cmp r8, #0x58
bgt _020E62C0
beq _020E632C
b _020E6334
_020E62C0:
cmp r8, #0x64
beq _020E6300
b _020E6334
_020E62CC:
cmp r8, #0x6f
bgt _020E62E0
moveq r4, #8
moveq fp, #0
b _020E6334
_020E62E0:
cmp r8, #0x78
bgt _020E6334
cmp r8, #0x75
blt _020E6334
beq _020E6320
cmp r8, #0x78
beq _020E632C
b _020E6334
_020E6300:
cmp sl, #0
mov r4, #0xa
bge _020E6334
mov r0, #1
cmp sl, #0x80000000
rsbne sl, sl, #0
str r0, [sp, #0xc]
b _020E6334
_020E6320:
mov r4, #0xa
mov fp, #0
b _020E6334
_020E632C:
mov r4, #0x10
mov fp, #0
_020E6334:
mov r0, sl
mov r1, r4
bl _u32_div_f
mov sb, r1
mov r0, sl
mov r1, r4
bl _u32_div_f
cmp sb, #0xa
mov sl, r0
addlt sb, sb, #0x30
blt _020E636C
cmp r8, #0x78
addeq sb, sb, #0x57
addne sb, sb, #0x37
_020E636C:
cmp sl, #0
strb sb, [r5, #-1]!
add r6, r6, #1
bne _020E6334
cmp r4, #8
bne _020E63A0
ldr r0, [sp, #4]
cmp r0, #0
ldrnesb r0, [r5]
cmpne r0, #0x30
movne r0, #0x30
strneb r0, [r5, #-1]!
addne r6, r6, #1
_020E63A0:
ldrb r0, [sp, #0x40]
cmp r0, #2
bne _020E63D4
ldr r0, [sp, #0xc]
ldr r7, [sp, #8]
cmp r0, #0
cmpeq fp, #0
subne r7, r7, #1
cmp r4, #0x10
bne _020E63D4
ldr r0, [sp, #4]
cmp r0, #0
subne r7, r7, #2
_020E63D4:
ldr r0, [sp]
sub r1, r0, r5
ldr r0, _020E6478 ; =0x000001FD
add r1, r7, r1
cmp r1, r0
addgt sp, sp, #0x10
movgt r0, #0
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
addgt sp, sp, #0x10
bxgt lr
cmp r6, r7
bge _020E6418
mov r0, #0x30
_020E6408:
add r6, r6, #1
cmp r6, r7
strb r0, [r5, #-1]!
blt _020E6408
_020E6418:
cmp r4, #0x10
bne _020E6434
ldr r0, [sp, #4]
cmp r0, #0
movne r0, #0x30
strneb r8, [r5, #-1]
strneb r0, [r5, #-2]!
_020E6434:
ldr r0, [sp, #0xc]
cmp r0, #0
movne r0, #0x2d
strneb r0, [r5, #-1]!
bne _020E6464
cmp fp, #1
moveq r0, #0x2b
streqb r0, [r5, #-1]!
beq _020E6464
cmp fp, #2
moveq r0, #0x20
streqb r0, [r5, #-1]!
_020E6464:
mov r0, r5
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E6478: .word 0x000001FD
arm_func_end long2str
arm_func_start longlong2str
longlong2str: ; 0x020E647C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov sb, r1
mov r1, #0
mov sl, r0
mov r8, r2
mov r0, r1
strb r0, [r8, #-1]!
ldr r0, [sp, #0x58]
cmp sb, #0
str r0, [sp, #0x14]
ldrb r0, [sp, #0x4f]
cmpeq sl, #0
str r2, [sp]
str r0, [sp, #4]
ldrb r0, [sp, #0x51]
str r1, [sp, #0x18]
mov fp, r1
str r0, [sp, #8]
ldr r0, [sp, #0x54]
str r0, [sp, #0xc]
ldrb r0, [sp, #0x4d]
str r0, [sp, #0x10]
ldreq r0, [sp, #0x14]
cmpeq r0, #0
bne _020E6514
ldr r0, [sp, #4]
cmp r0, #0
beq _020E6500
ldr r0, [sp, #8]
cmp r0, #0x6f
beq _020E6514
_020E6500:
add sp, sp, #0x1c
mov r0, r8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E6514:
ldr r0, [sp, #8]
cmp r0, #0x69
bgt _020E6540
bge _020E6570
cmp r0, #0x58
bgt _020E6534
beq _020E65C4
b _020E65D0
_020E6534:
cmp r0, #0x64
beq _020E6570
b _020E65D0
_020E6540:
cmp r0, #0x6f
bgt _020E6550
beq _020E65A4
b _020E65D0
_020E6550:
cmp r0, #0x78
bgt _020E65D0
cmp r0, #0x75
blt _020E65D0
beq _020E65B4
cmp r0, #0x78
beq _020E65C4
b _020E65D0
_020E6570:
subs r0, sl, #0
sbcs r0, sb, #0
mov r7, #0xa
mov r6, #0
bge _020E65D0
cmp sb, #0x80000000
cmpeq sl, r6
beq _020E6598
rsbs sl, sl, #0
rsc sb, sb, #0
_020E6598:
mov r0, #1
str r0, [sp, #0x18]
b _020E65D0
_020E65A4:
mov r6, #0
str r6, [sp, #0x10]
mov r7, #8
b _020E65D0
_020E65B4:
mov r6, #0
str r6, [sp, #0x10]
mov r7, #0xa
b _020E65D0
_020E65C4:
mov r6, #0
str r6, [sp, #0x10]
mov r7, #0x10
_020E65D0:
mov r4, #0
_020E65D4:
mov r0, sl
mov r1, sb
mov r2, r7
mov r3, r6
bl _ull_mod
mov r5, r0
mov r0, sl
mov r1, sb
mov r2, r7
mov r3, r6
bl _ll_udiv
mov sl, r0
cmp r5, #0xa
mov sb, r1
addlt r0, r5, #0x30
blt _020E6624
ldr r0, [sp, #8]
cmp r0, #0x78
addeq r0, r5, #0x57
addne r0, r5, #0x37
_020E6624:
strb r0, [r8, #-1]!
mov r0, #0
cmp sb, r0
cmpeq sl, r4
add fp, fp, #1
bne _020E65D4
cmp r6, #0
cmpeq r7, #8
bne _020E6664
ldr r0, [sp, #4]
cmp r0, #0
ldrnesb r0, [r8]
cmpne r0, #0x30
movne r0, #0x30
strneb r0, [r8, #-1]!
addne fp, fp, #1
_020E6664:
ldrb r0, [sp, #0x4c]
cmp r0, #2
bne _020E66B4
ldr r0, [sp, #0xc]
str r0, [sp, #0x14]
ldr r0, [sp, #0x18]
cmp r0, #0
ldreq r0, [sp, #0x10]
cmpeq r0, #0
ldrne r0, [sp, #0x14]
subne r0, r0, #1
strne r0, [sp, #0x14]
cmp r6, #0
cmpeq r7, #0x10
bne _020E66B4
ldr r0, [sp, #4]
cmp r0, #0
ldrne r0, [sp, #0x14]
subne r0, r0, #2
strne r0, [sp, #0x14]
_020E66B4:
ldr r0, [sp]
ldr r1, _020E6774 ; =0x000001FD
sub r2, r0, r8
ldr r0, [sp, #0x14]
add r0, r0, r2
cmp r0, r1
addgt sp, sp, #0x1c
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addgt sp, sp, #0x10
bxgt lr
ldr r0, [sp, #0x14]
cmp fp, r0
bge _020E6704
mov r1, #0x30
_020E66F0:
ldr r0, [sp, #0x14]
add fp, fp, #1
cmp fp, r0
strb r1, [r8, #-1]!
blt _020E66F0
_020E6704:
cmp r6, #0
cmpeq r7, #0x10
bne _020E672C
ldr r0, [sp, #4]
cmp r0, #0
beq _020E672C
ldr r0, [sp, #8]
mov r1, #0x30
strb r0, [r8, #-1]
strb r1, [r8, #-2]!
_020E672C:
ldr r0, [sp, #0x18]
cmp r0, #0
movne r0, #0x2d
strneb r0, [r8, #-1]!
bne _020E6760
ldr r0, [sp, #0x10]
cmp r0, #1
moveq r0, #0x2b
streqb r0, [r8, #-1]!
beq _020E6760
cmp r0, #2
moveq r0, #0x20
streqb r0, [r8, #-1]!
_020E6760:
mov r0, r8
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E6774: .word 0x000001FD
arm_func_end longlong2str
arm_func_start double2hex
double2hex: ; 0x020E6778
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x44
ldr r7, [sp, #0x80]
ldr r0, _020E6C28 ; =0x000001FD
mov r8, r2
cmp r7, r0
ldrb r6, [sp, #0x79]
ldrb r5, [sp, #0x77]
ldrb r4, [sp, #0x75]
ldr r1, [sp, #0x68]
ldr r2, [sp, #0x6c]
addgt sp, sp, #0x44
movgt r0, #0
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
addgt sp, sp, #0x10
bxgt lr
mov sl, #0
mov sb, #0x20
add r0, sp, #8
add r3, sp, #0xc
strb sl, [sp, #8]
strh sb, [sp, #0xa]
bl __num2dec
ldr r0, [sp, #0x68]
ldr r1, [sp, #0x6c]
bl fabs
mov r2, r0
mov r0, sl
mov r3, r1
mov r1, r0
bl _deq
bne _020E6844
ldr r3, _020E6C2C ; =printf_double2hex_0p0
sub r0, r8, #6
ldrb r2, [r3]
ldrb r1, [r3, #1]
add sp, sp, #0x44
strb r2, [r8, #-6]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r2, [r3, #4]
ldrb r1, [r3, #5]
strb r2, [r0, #4]
strb r1, [r0, #5]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E6844:
ldrb r0, [sp, #0x11]
cmp r0, #0x49
bne _020E6954
ldrsb r0, [sp, #0xc]
cmp r0, #0
beq _020E68E0
cmp r6, #0x41
sub r0, r8, #5
bne _020E68A4
ldr r3, _020E6C30 ; =printf_double2hex_neg_inf_upper
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E68A4:
ldr r3, _020E6C34 ; =printf_double2hex_neg_inf_lower
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E68E0:
cmp r6, #0x41
sub r0, r8, #4
bne _020E6920
ldr r3, _020E6C38 ; =printf_double2hex_inf_upper
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E6920:
ldr r3, _020E6C3C ; =printf_double2hex_inf_lower
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E6954:
cmp r0, #0x4e
bne _020E6A60
ldrsb r0, [sp, #0xc]
cmp r0, #0
beq _020E69EC
cmp r6, #0x41
sub r0, r8, #5
bne _020E69B0
ldr r3, _020E6C40 ; =printf_double2hex_neg_nan_upper
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E69B0:
ldr r3, _020E6C44 ; =printf_double2hex_neg_nan_lower
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E69EC:
cmp r6, #0x41
sub r0, r8, #4
bne _020E6A2C
ldr r3, _020E6C48 ; =printf_double2hex_nan_upper
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E6A2C:
ldr r3, _020E6C4C ; =printf_double2hex_nan_lower
add sp, sp, #0x44
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
_020E6A60:
mov r3, sl
mov r1, #1
mov r0, #0x64
add sb, 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]
strb r0, [sp, #0x39]
_020E6A90:
rsb r1, r3, #7
ldrsb r2, [sb, r3]
ldrsb r0, [sb, r1]
strb r0, [sb, r3]
add r3, r3, #1
strb r2, [sb, r1]
cmp r3, #4
blt _020E6A90
ldrb r0, [sp, #0x69]
ldrb r1, [sp, #0x68]
ldr sb, _020E6C50 ; =0x000007FF
mov r0, r0, lsl #0x11
orr r1, r0, r1, lsl #25
add r0, sp, #0x34
and lr, sb, r1, lsr #21
sub ip, sp, #8
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
rsb r0, sb, #0x400
mov r1, r8
add r0, lr, r0
ldmia ip, {r2, r3}
bl long2str
cmp r6, #0x61
moveq r1, #0x70
movne r1, #0x50
strb r1, [r0, #-1]!
mov r1, r7, lsl #2
mov lr, r7
cmp r7, #1
add r8, r1, #0xb
add ip, sp, #0x68
blt _020E6BA0
mov sb, #0x30
_020E6B18:
cmp r8, #0x40
bge _020E6B88
ldrb r1, [ip, r8, asr #3]
and r2, r8, #7
rsb r3, r2, #7
mov r2, r1, asr r3
sub sl, r8, #4
bic r1, r8, #7
bic sl, sl, #7
cmp r1, sl
add sl, ip, r8, asr #3
and r1, r2, #0xff
beq _020E6B5C
ldrb r2, [sl, #-1]
mov r2, r2, lsl #8
orr r1, r1, r2, asr r3
and r1, r1, #0xff
_020E6B5C:
and r1, r1, #0xf
cmp r1, #0xa
addlo r1, r1, #0x30
andlo r1, r1, #0xff
blo _020E6B8C
cmp r6, #0x61
addeq r1, r1, #0x57
andeq r1, r1, #0xff
addne r1, r1, #0x37
andne r1, r1, #0xff
b _020E6B8C
_020E6B88:
mov r1, sb
_020E6B8C:
sub lr, lr, #1
cmp lr, #1
strb r1, [r0, #-1]!
sub r8, r8, #4
bge _020E6B18
_020E6BA0:
cmp r7, #0
cmpeq r5, #0
movne r1, #0x2e
strneb r1, [r0, #-1]!
mov r1, #0x31
strb r1, [r0, #-1]
cmp r6, #0x61
moveq r1, #0x78
movne r1, #0x58
strb r1, [r0, #-2]!
mov r1, #0x30
strb r1, [r0, #-1]!
ldrsb r1, [sp, #0xc]
cmp r1, #0
movne r1, #0x2d
strneb r1, [r0, #-1]!
addne sp, sp, #0x44
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
addne sp, sp, #0x10
bxne lr
cmp r4, #1
moveq r1, #0x2b
streqb r1, [r0, #-1]!
addeq sp, sp, #0x44
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
addeq sp, sp, #0x10
bxeq lr
cmp r4, #2
moveq r1, #0x20
streqb r1, [r0, #-1]!
add sp, sp, #0x44
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E6C28: .word 0x000001FD
_020E6C2C: .word printf_double2hex_0p0
_020E6C30: .word printf_double2hex_neg_inf_upper
_020E6C34: .word printf_double2hex_neg_inf_lower
_020E6C38: .word printf_double2hex_inf_upper
_020E6C3C: .word printf_double2hex_inf_lower
_020E6C40: .word printf_double2hex_neg_nan_upper
_020E6C44: .word printf_double2hex_neg_nan_lower
_020E6C48: .word printf_double2hex_nan_upper
_020E6C4C: .word printf_double2hex_nan_lower
_020E6C50: .word 0x000007FF
arm_func_end double2hex
arm_func_start round_decimal
round_decimal: ; 0x020E6C54
stmdb sp!, {r4, lr}
cmp r1, #0
bge _020E6C7C
_020E6C60:
mov r1, #0
strh r1, [r0, #2]
mov r1, #1
strb r1, [r0, #4]
mov r1, #0x30
strb r1, [r0, #5]
ldmia sp!, {r4, pc}
_020E6C7C:
ldrb lr, [r0, #4]
cmp r1, lr
ldmgeia sp!, {r4, pc}
add ip, r0, #5
add r2, ip, r1
add r2, r2, #1
ldrsb r3, [r2, #-1]!
sub r3, r3, #0x30
mov r3, r3, lsl #0x18
mov r3, r3, asr #0x18
cmp r3, #5
bne _020E6CDC
add ip, ip, lr
_020E6CB0:
sub ip, ip, #1
cmp ip, r2
bls _020E6CC8
ldrsb r3, [ip]
cmp r3, #0x30
beq _020E6CB0
_020E6CC8:
cmp ip, r2
ldreqsb r3, [r2, #-1]
andeq r4, r3, #1
movne r4, #1
b _020E6CE4
_020E6CDC:
movgt r4, #1
movle r4, #0
_020E6CE4:
cmp r1, #0
beq _020E6D40
mov ip, #0
mov lr, #1
_020E6CF4:
ldrsb r3, [r2, #-1]!
sub r3, r3, #0x30
add r3, r3, r4
mov r3, r3, lsl #0x18
mov r3, r3, asr #0x18
cmp r3, #9
movgt r4, lr
movle r4, ip
cmp r4, #0
bne _020E6D24
cmp r3, #0
bne _020E6D2C
_020E6D24:
sub r1, r1, #1
b _020E6D38
_020E6D2C:
add r3, r3, #0x30
strb r3, [r2]
b _020E6D40
_020E6D38:
cmp r1, #0
bne _020E6CF4
_020E6D40:
cmp r4, #0
beq _020E6D68
ldrsh r3, [r0, #2]
mov r2, #1
mov r1, #0x31
add r3, r3, #1
strh r3, [r0, #2]
strb r2, [r0, #4]
strb r1, [r0, #5]
ldmia sp!, {r4, pc}
_020E6D68:
cmp r1, #0
beq _020E6C60
strb r1, [r0, #4]
ldmia sp!, {r4, pc}
arm_func_end round_decimal
arm_func_start float2str
float2str: ; 0x020E6D78
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
ldr r7, [sp, #0x68]
ldr r3, _020E74B0 ; =0x000001FD
ldrb r6, [sp, #0x61]
ldrb r5, [sp, #0x5f]
ldrb r4, [sp, #0x5d]
cmp r7, r3
mov sl, r0
mov r8, r1
mov sb, r2
addgt sp, sp, #0x2c
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addgt sp, sp, #0x10
bxgt lr
mov ip, #0
mov fp, #0x20
add r0, sp, #0
add r3, sp, #4
mov r1, sl
mov r2, r8
strb ip, [sp]
strh fp, [sp, #2]
bl __num2dec
ldrb r0, [sp, #8]
add r1, sp, #9
add r0, r1, r0
b _020E6E08
_020E6DF0:
ldrb r2, [sp, #8]
ldrsh r1, [sp, #6]
sub r2, r2, #1
add r1, r1, #1
strb r2, [sp, #8]
strh r1, [sp, #6]
_020E6E08:
ldrb r1, [sp, #8]
cmp r1, #1
bls _020E6E20
ldrsb r1, [r0, #-1]!
cmp r1, #0x30
beq _020E6DF0
_020E6E20:
ldrb r0, [sp, #9]
cmp r0, #0x30
beq _020E6E40
cmp r0, #0x49
beq _020E6E4C
cmp r0, #0x4e
beq _020E6FAC
b _020E7100
_020E6E40:
mov r0, #0
strh r0, [sp, #6]
b _020E7100
_020E6E4C:
mov r2, #0
mov r0, sl
mov r1, r8
mov r3, r2
bl _dls
bhs _020E6F10
cmp r6, #0
sub r0, sb, #5
blt _020E6E78
cmp r6, #0x80
blt _020E6E80
_020E6E78:
mov r1, #0
b _020E6E90
_020E6E80:
ldr r1, _020E74B4 ; =__msl_digit
mov r2, r6, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #0x200
_020E6E90:
cmp r1, #0
beq _020E6ED4
ldr r3, _020E74B8 ; =printf_double2hex_neg_inf_upper
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E6ED4:
ldr r3, _020E74BC ; =printf_double2hex_neg_inf_lower
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E6F10:
cmp r6, #0
sub r0, sb, #4
blt _020E6F24
cmp r6, #0x80
blt _020E6F2C
_020E6F24:
mov r1, #0
b _020E6F3C
_020E6F2C:
ldr r1, _020E74B4 ; =__msl_digit
mov r2, r6, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #0x200
_020E6F3C:
cmp r1, #0
beq _020E6F78
ldr r3, _020E74C0 ; =printf_double2hex_inf_upper
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E6F78:
ldr r3, _020E74C4 ; =printf_double2hex_inf_lower
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E6FAC:
ldrsb r0, [sp, #4]
cmp r0, #0
beq _020E7064
cmp r6, #0
sub r0, sb, #5
blt _020E6FCC
cmp r6, #0x80
blt _020E6FD4
_020E6FCC:
mov r1, #0
b _020E6FE4
_020E6FD4:
ldr r1, _020E74B4 ; =__msl_digit
mov r2, r6, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #0x200
_020E6FE4:
cmp r1, #0
beq _020E7028
ldr r3, _020E74C8 ; =printf_double2hex_neg_nan_upper
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E7028:
ldr r3, _020E74CC ; =printf_double2hex_neg_nan_lower
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldrb r1, [r3, #4]
strb r1, [r0, #4]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E7064:
cmp r6, #0
sub r0, sb, #4
blt _020E7078
cmp r6, #0x80
blt _020E7080
_020E7078:
mov r1, #0
b _020E7090
_020E7080:
ldr r1, _020E74B4 ; =__msl_digit
mov r2, r6, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #0x200
_020E7090:
cmp r1, #0
beq _020E70CC
ldr r3, _020E74D0 ; =printf_double2hex_nan_upper
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E70CC:
ldr r3, _020E74D4 ; =printf_double2hex_nan_lower
add sp, sp, #0x2c
ldrb r2, [r3]
ldrb r1, [r3, #1]
strb r2, [r0]
strb r1, [r0, #1]
ldrb r2, [r3, #2]
ldrb r1, [r3, #3]
strb r2, [r0, #2]
strb r1, [r0, #3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E7100:
ldrb r0, [sp, #8]
ldrsh r1, [sp, #6]
sub r8, sb, #1
sub r0, r0, #1
add r0, r1, r0
strh r0, [sp, #6]
mov r0, #0
strb r0, [r8]
cmp r6, #0x65
bgt _020E7154
bge _020E71E0
cmp r6, #0x47
bgt _020E749C
cmp r6, #0x45
blt _020E749C
beq _020E71E0
cmp r6, #0x46
beq _020E7328
cmp r6, #0x47
beq _020E716C
b _020E749C
_020E7154:
cmp r6, #0x66
bgt _020E7164
beq _020E7328
b _020E749C
_020E7164:
cmp r6, #0x67
bne _020E749C
_020E716C:
ldrb r0, [sp, #8]
cmp r0, r7
ble _020E7184
add r0, sp, #4
mov r1, r7
bl round_decimal
_020E7184:
ldrsh r2, [sp, #6]
mvn r0, #3
cmp r2, r0
blt _020E719C
cmp r2, r7
blt _020E71BC
_020E719C:
cmp r5, #0
ldreqb r0, [sp, #8]
subne r7, r7, #1
subeq r7, r0, #1
cmp r6, #0x67
moveq r6, #0x65
movne r6, #0x45
b _020E71E0
_020E71BC:
cmp r5, #0
addne r0, r2, #1
subne r7, r7, r0
bne _020E7328
ldrb r1, [sp, #8]
add r0, r2, #1
subs r7, r1, r0
movmi r7, #0
b _020E7328
_020E71E0:
ldrb r0, [sp, #8]
add r1, r7, #1
cmp r0, r1
ble _020E71F8
add r0, sp, #4
bl round_decimal
_020E71F8:
ldrsh lr, [sp, #6]
mov fp, #0x2b
mov sl, #0
cmp lr, #0
rsblt lr, lr, #0
movlt fp, #0x2d
ldr r3, _020E74D8 ; =0x66666667
mov r0, #0xa
b _020E724C
_020E721C:
mov r1, lr, lsr #0x1f
smull r2, ip, r3, lr
add ip, r1, ip, asr #2
smull r1, r2, r0, ip
sub ip, lr, r1
add r1, ip, #0x30
strb r1, [r8, #-1]!
mov r2, lr
smull r1, lr, r3, r2
mov r1, r2, lsr #0x1f
add lr, r1, lr, asr #2
add sl, sl, #1
_020E724C:
cmp lr, #0
bne _020E721C
cmp sl, #2
blt _020E721C
strb fp, [r8, #-1]
strb r6, [r8, #-2]!
sub r1, sb, r8
ldr r0, _020E74B0 ; =0x000001FD
add r1, r7, r1
cmp r1, r0
addgt sp, sp, #0x2c
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addgt sp, sp, #0x10
bxgt lr
ldrb r1, [sp, #8]
add r0, r7, #1
cmp r1, r0
bge _020E72B8
add r0, r7, #2
sub r0, r0, r1
subs r1, r0, #1
beq _020E72B8
mov r0, #0x30
_020E72AC:
strb r0, [r8, #-1]!
subs r1, r1, #1
bne _020E72AC
_020E72B8:
ldrb r1, [sp, #8]
add r0, sp, #9
add r2, r0, r1
subs r1, r1, #1
beq _020E72DC
_020E72CC:
ldrsb r0, [r2, #-1]!
subs r1, r1, #1
strb r0, [r8, #-1]!
bne _020E72CC
_020E72DC:
cmp r7, #0
cmpeq r5, #0
movne r0, #0x2e
strneb r0, [r8, #-1]!
ldrb r0, [sp, #9]
strb r0, [r8, #-1]!
ldrsb r0, [sp, #4]
cmp r0, #0
movne r0, #0x2d
strneb r0, [r8, #-1]!
bne _020E749C
cmp r4, #1
moveq r0, #0x2b
streqb r0, [r8, #-1]!
beq _020E749C
cmp r4, #2
moveq r0, #0x20
streqb r0, [r8, #-1]!
b _020E749C
_020E7328:
ldrsh r3, [sp, #6]
ldrb r2, [sp, #8]
sub r0, r2, r3
subs r1, r0, #1
movmi r1, #0
cmp r1, r7
ble _020E7368
sub r1, r1, r7
add r0, sp, #4
sub r1, r2, r1
bl round_decimal
ldrsh r3, [sp, #6]
ldrb r2, [sp, #8]
sub r0, r2, r3
subs r1, r0, #1
movmi r1, #0
_020E7368:
adds r0, r3, #1
movmi r0, #0
ldr r3, _020E74B0 ; =0x000001FD
add r6, r0, r1
cmp r6, r3
addgt sp, sp, #0x2c
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addgt sp, sp, #0x10
bxgt lr
add r3, sp, #9
sub r6, r7, r1
cmp r6, #0
add r2, r3, r2
mov sb, #0
ble _020E73BC
mov r3, #0x30
_020E73AC:
add sb, sb, #1
cmp sb, r6
strb r3, [r8, #-1]!
blt _020E73AC
_020E73BC:
mov r6, #0
b _020E73D0
_020E73C4:
ldrsb r3, [r2, #-1]!
add r6, r6, #1
strb r3, [r8, #-1]!
_020E73D0:
cmp r6, r1
ldrltb r3, [sp, #8]
cmplt r6, r3
blt _020E73C4
cmp r6, r1
bge _020E73FC
mov r3, #0x30
_020E73EC:
add r6, r6, #1
cmp r6, r1
strb r3, [r8, #-1]!
blt _020E73EC
_020E73FC:
cmp r7, #0
cmpeq r5, #0
movne r1, #0x2e
strneb r1, [r8, #-1]!
cmp r0, #0
beq _020E7464
ldrb r1, [sp, #8]
mov r5, #0
sub r1, r0, r1
cmp r1, #0
ble _020E7444
mov r3, #0x30
_020E742C:
strb r3, [r8, #-1]!
ldrb r1, [sp, #8]
add r5, r5, #1
sub r1, r0, r1
cmp r5, r1
blt _020E742C
_020E7444:
cmp r5, r0
bge _020E746C
_020E744C:
ldrsb r1, [r2, #-1]!
add r5, r5, #1
cmp r5, r0
strb r1, [r8, #-1]!
blt _020E744C
b _020E746C
_020E7464:
mov r0, #0x30
strb r0, [r8, #-1]!
_020E746C:
ldrsb r0, [sp, #4]
cmp r0, #0
movne r0, #0x2d
strneb r0, [r8, #-1]!
bne _020E749C
cmp r4, #1
moveq r0, #0x2b
streqb r0, [r8, #-1]!
beq _020E749C
cmp r4, #2
moveq r0, #0x20
streqb r0, [r8, #-1]!
_020E749C:
mov r0, r8
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E74B0: .word 0x000001FD
_020E74B4: .word __msl_digit
_020E74B8: .word printf_double2hex_neg_inf_upper
_020E74BC: .word printf_double2hex_neg_inf_lower
_020E74C0: .word printf_double2hex_inf_upper
_020E74C4: .word printf_double2hex_inf_lower
_020E74C8: .word printf_double2hex_neg_nan_upper
_020E74CC: .word printf_double2hex_neg_nan_lower
_020E74D0: .word printf_double2hex_nan_upper
_020E74D4: .word printf_double2hex_nan_lower
_020E74D8: .word 0x66666667
arm_func_end float2str
arm_func_start __pformatter
__pformatter: ; 0x020E74DC
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x22c
mov r3, #0x20
mov fp, r2
strb r3, [sp, #0x19]
ldrsb r2, [fp]
mov sb, r0
mov r8, r1
cmp r2, #0
mov sl, #0
beq _020E7CE4
_020E750C:
mov r0, fp
mov r1, #0x25
bl strchr
str r0, [sp, #0xc]
cmp r0, #0
bne _020E7560
mov r0, fp
bl strlen
movs r2, r0
add sl, sl, r2
beq _020E7CE4
mov r0, r8
mov r1, fp
blx sb
cmp r0, #0
bne _020E7CE4
add sp, sp, #0x22c
mvn r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E7560:
subs r2, r0, fp
add sl, sl, r2
beq _020E7590
mov r0, r8
mov r1, fp
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
_020E7590:
ldr r0, [sp, #0xc]
add r1, sp, #0x25c
add r2, sp, #0x1c
bl parse_format
ldrb r1, [sp, #0x21]
mov fp, r0
cmp r1, #0x61
bgt _020E75FC
bge _020E7960
cmp r1, #0x47
bgt _020E75F0
subs r0, r1, #0x41
addpl pc, pc, r0, lsl #2
b _020E75E4
_020E75C8: ; jump table
b _020E7960 ; case 0
b _020E7B48 ; case 1
b _020E7B48 ; case 2
b _020E7B48 ; case 3
b _020E78F8 ; case 4
b _020E78F8 ; case 5
b _020E78F8 ; case 6
_020E75E4:
cmp r1, #0x25
beq _020E7B34
b _020E7B48
_020E75F0:
cmp r1, #0x58
beq _020E77BC
b _020E7B48
_020E75FC:
cmp r1, #0x75
bgt _020E7664
subs r0, r1, #0x64
addpl pc, pc, r0, lsl #2
b _020E7658
_020E7610: ; jump table
b _020E767C ; case 0
b _020E78F8 ; case 1
b _020E78F8 ; case 2
b _020E78F8 ; case 3
b _020E7B48 ; case 4
b _020E767C ; case 5
b _020E7B48 ; case 6
b _020E7B48 ; case 7
b _020E7B48 ; case 8
b _020E7B48 ; case 9
b _020E7A88 ; case 10
b _020E77BC ; case 11
b _020E7B48 ; case 12
b _020E7B48 ; case 13
b _020E7B48 ; case 14
b _020E79C8 ; case 15
b _020E7B48 ; case 16
b _020E77BC ; case 17
_020E7658:
cmp r1, #0x63
beq _020E7B14
b _020E7B48
_020E7664:
cmp r1, #0x78
bgt _020E7674
beq _020E77BC
b _020E7B48
_020E7674:
cmp r1, #0xff
b _020E7B48
_020E767C:
ldrb r0, [sp, #0x20]
cmp r0, #3
bne _020E769C
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7734
_020E769C:
cmp r0, #4
bne _020E76C4
ldr r1, [sp, #0x25c]
add r2, r1, #8
str r2, [sp, #0x25c]
ldr r1, [r2, #-8]
str r1, [sp, #0x10]
ldr r1, [r2, #-4]
str r1, [sp, #0x14]
b _020E7734
_020E76C4:
cmp r0, #6
bne _020E76EC
ldr r1, [sp, #0x25c]
add r2, r1, #8
str r2, [sp, #0x25c]
ldr r1, [r2, #-8]
str r1, [sp, #0x10]
ldr r1, [r2, #-4]
str r1, [sp, #0x14]
b _020E7734
_020E76EC:
cmp r0, #7
bne _020E7708
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7734
_020E7708:
cmp r0, #8
bne _020E7724
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7734
_020E7724:
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
_020E7734:
cmp r0, #2
moveq r1, r5, lsl #0x10
moveq r5, r1, asr #0x10
cmp r0, #1
moveq r1, r5, lsl #0x18
moveq r5, r1, asr #0x18
cmp r0, #4
cmpne r0, #6
add r0, sp, #0x1c
bne _020E7788
sub r4, sp, #4
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r3, [r4]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
add r2, sp, #0x22c
bl longlong2str
movs r7, r0
beq _020E7B48
b _020E77AC
_020E7788:
sub r4, sp, #8
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
add r1, sp, #0x22c
mov r0, r5
ldmia r4, {r2, r3}
bl long2str
movs r7, r0
beq _020E7B48
_020E77AC:
add r0, sp, #0x200
add r0, r0, #0x2b
sub r6, r0, r7
b _020E7B94
_020E77BC:
ldrb r0, [sp, #0x20]
cmp r0, #3
bne _020E77DC
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7874
_020E77DC:
cmp r0, #4
bne _020E7804
ldr r1, [sp, #0x25c]
add r2, r1, #8
str r2, [sp, #0x25c]
ldr r1, [r2, #-8]
str r1, [sp, #0x10]
ldr r1, [r2, #-4]
str r1, [sp, #0x14]
b _020E7874
_020E7804:
cmp r0, #6
bne _020E782C
ldr r1, [sp, #0x25c]
add r2, r1, #8
str r2, [sp, #0x25c]
ldr r1, [r2, #-8]
str r1, [sp, #0x10]
ldr r1, [r2, #-4]
str r1, [sp, #0x14]
b _020E7874
_020E782C:
cmp r0, #7
bne _020E7848
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7874
_020E7848:
cmp r0, #8
bne _020E7864
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
b _020E7874
_020E7864:
ldr r1, [sp, #0x25c]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r5, [r1, #-4]
_020E7874:
cmp r0, #2
moveq r1, r5, lsl #0x10
moveq r5, r1, lsr #0x10
cmp r0, #1
andeq r5, r5, #0xff
cmp r0, #4
cmpne r0, #6
add r0, sp, #0x1c
bne _020E78C4
sub r4, sp, #4
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r3, [r4]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
add r2, sp, #0x22c
bl longlong2str
movs r7, r0
beq _020E7B48
b _020E78E8
_020E78C4:
sub r4, sp, #8
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
add r1, sp, #0x22c
mov r0, r5
ldmia r4, {r2, r3}
bl long2str
movs r7, r0
beq _020E7B48
_020E78E8:
add r0, sp, #0x200
add r0, r0, #0x2b
sub r6, r0, r7
b _020E7B94
_020E78F8:
ldrb r0, [sp, #0x20]
cmp r0, #9
ldrne r0, [sp, #0x25c]
addne r0, r0, #8
strne r0, [sp, #0x25c]
bne _020E791C
ldr r0, [sp, #0x25c]
add r0, r0, #8
str r0, [sp, #0x25c]
_020E791C:
ldr r7, [r0, #-8]
ldr r6, [r0, #-4]
add r0, sp, #0x1c
sub r4, sp, #4
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r3, [r4]
mov r0, r7
mov r1, r6
add r2, sp, #0x22c
bl float2str
movs r7, r0
beq _020E7B48
add r0, sp, #0x200
add r0, r0, #0x2b
sub r6, r0, r7
b _020E7B94
_020E7960:
ldrb r0, [sp, #0x20]
cmp r0, #9
ldrne r0, [sp, #0x25c]
addne r0, r0, #8
strne r0, [sp, #0x25c]
bne _020E7984
ldr r0, [sp, #0x25c]
add r0, r0, #8
str r0, [sp, #0x25c]
_020E7984:
ldr r7, [r0, #-8]
ldr r6, [r0, #-4]
add r0, sp, #0x1c
sub r4, sp, #4
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r3, [r4]
mov r0, r7
mov r1, r6
add r2, sp, #0x22c
bl double2hex
movs r7, r0
beq _020E7B48
add r0, sp, #0x200
add r0, r0, #0x2b
sub r6, r0, r7
b _020E7B94
_020E79C8:
ldrb r0, [sp, #0x20]
cmp r0, #5
bne _020E7A08
ldr r0, [sp, #0x25c]
mov r2, #0x200
add r0, r0, #4
str r0, [sp, #0x25c]
ldr r1, [r0, #-4]
add r0, sp, #0x2c
cmp r1, #0
ldreq r1, _020E7CF8 ; =__pformatter_empty_string_1
bl wcstombs
cmp r0, #0
blt _020E7B48
add r7, sp, #0x2c
b _020E7A18
_020E7A08:
ldr r0, [sp, #0x25c]
add r0, r0, #4
str r0, [sp, #0x25c]
ldr r7, [r0, #-4]
_020E7A18:
ldrb r0, [sp, #0x1f]
cmp r7, #0
ldreq r7, _020E7CFC ; =__pformatter_empty_string_2
cmp r0, #0
beq _020E7A4C
ldrb r0, [sp, #0x1e]
ldrb r6, [r7], #1
cmp r0, #0
beq _020E7B94
ldr r0, [sp, #0x28]
cmp r6, r0
movgt r6, r0
b _020E7B94
_020E7A4C:
ldrb r0, [sp, #0x1e]
cmp r0, #0
beq _020E7A78
ldr r6, [sp, #0x28]
mov r0, r7
mov r2, r6
mov r1, #0
bl memchr
cmp r0, #0
subne r6, r0, r7
b _020E7B94
_020E7A78:
mov r0, r7
bl strlen
mov r6, r0
b _020E7B94
_020E7A88:
ldr r1, [sp, #0x25c]
ldrb r0, [sp, #0x20]
add r1, r1, #4
str r1, [sp, #0x25c]
ldr r1, [r1, #-4]
cmp r0, #8
addls pc, pc, r0, lsl #2
b _020E7CD8
_020E7AA8: ; jump table
b _020E7ACC ; case 0
b _020E7CD8 ; case 1
b _020E7AD4 ; case 2
b _020E7ADC ; case 3
b _020E7B04 ; case 4
b _020E7CD8 ; case 5
b _020E7AE4 ; case 6
b _020E7AF4 ; case 7
b _020E7AFC ; case 8
_020E7ACC:
str sl, [r1]
b _020E7CD8
_020E7AD4:
strh sl, [r1]
b _020E7CD8
_020E7ADC:
str sl, [r1]
b _020E7CD8
_020E7AE4:
str sl, [r1]
mov r0, sl, asr #0x1f
str r0, [r1, #4]
b _020E7CD8
_020E7AF4:
str sl, [r1]
b _020E7CD8
_020E7AFC:
str sl, [r1]
b _020E7CD8
_020E7B04:
str sl, [r1]
mov r0, sl, asr #0x1f
str r0, [r1, #4]
b _020E7CD8
_020E7B14:
ldr r0, [sp, #0x25c]
add r7, sp, #0x2c
add r0, r0, #4
str r0, [sp, #0x25c]
ldr r0, [r0, #-4]
mov r6, #1
strb r0, [sp, #0x2c]
b _020E7B94
_020E7B34:
mov r0, #0x25
strb r0, [sp, #0x2c]
add r7, sp, #0x2c
mov r6, #1
b _020E7B94
_020E7B48:
ldr r0, [sp, #0xc]
bl strlen
movs r4, r0
beq _020E7B80
ldr r1, [sp, #0xc]
mov r0, r8
mov r2, r4
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
_020E7B80:
add sp, sp, #0x22c
add r0, sl, r4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
_020E7B94:
ldrb r0, [sp, #0x1c]
mov r4, r6
cmp r0, #0
beq _020E7C48
cmp r0, #2
moveq r0, #0x30
movne r0, #0x20
strb r0, [sp, #0x19]
ldrsb r0, [r7]
cmp r0, #0x2b
cmpne r0, #0x2d
cmpne r0, #0x20
bne _020E7C04
ldrsb r0, [sp, #0x19]
cmp r0, #0x30
bne _020E7C04
mov r0, r8
mov r1, r7
mov r2, #1
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
add r7, r7, #1
sub r6, r6, #1
_020E7C04:
ldr r0, [sp, #0x24]
cmp r4, r0
bge _020E7C48
_020E7C10:
mov r0, r8
add r1, sp, #0x19
mov r2, #1
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
ldr r0, [sp, #0x24]
add r4, r4, #1
cmp r4, r0
blt _020E7C10
_020E7C48:
cmp r6, #0
beq _020E7C78
mov r0, r8
mov r1, r7
mov r2, r6
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
_020E7C78:
ldrb r0, [sp, #0x1c]
cmp r0, #0
bne _020E7CD4
ldr r0, [sp, #0x24]
cmp r4, r0
bge _020E7CD4
mov r6, #0x20
add r7, sp, #0x18
_020E7C98:
mov r0, r8
mov r1, r7
mov r2, #1
strb r6, [sp, #0x18]
blx sb
cmp r0, #0
addeq sp, sp, #0x22c
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
addeq sp, sp, #0x10
bxeq lr
ldr r0, [sp, #0x24]
add r4, r4, #1
cmp r4, r0
blt _020E7C98
_020E7CD4:
add sl, sl, r4
_020E7CD8:
ldrsb r0, [fp]
cmp r0, #0
bne _020E750C
_020E7CE4:
mov r0, sl
add sp, sp, #0x22c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E7CF8: .word __pformatter_empty_string_1
_020E7CFC: .word __pformatter_empty_string_2
arm_func_end __pformatter
arm_func_start __FileWrite
__FileWrite: ; 0x020E7D00
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, r1
mov r3, r5
mov r1, #1
mov r4, r2
bl __fwrite
cmp r4, r0
movne r5, #0
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
arm_func_end __FileWrite
arm_func_start __StringWrite
__StringWrite: ; 0x020E7D2C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
ldr r3, [r4, #8]
mov r5, r2
ldr r2, [r4, #4]
add r0, r3, r5
cmp r0, r2
ldr r0, [r4]
subhi r5, r2, r3
mov r2, r5
add r0, r0, r3
bl memcpy
ldr r1, [r4, #8]
mov r0, #1
add r1, r1, r5
str r1, [r4, #8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end __StringWrite
arm_func_start printf
printf: ; 0x020E7D70
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
ldr r0, _020E7E70 ; =__files + 0x4C
mvn r1, #0
bl fwide
cmp r0, #0
mvnge r0, #0
ldmgeia sp!, {r4, lr}
addge sp, sp, #0x10
bxge lr
ldr r0, _020E7E74 ; =__cs + 0x48
bl OS_TryLockMutex
cmp r0, #0
bne _020E7DCC
ldr r0, _020E7E78 ; =OSi_ThreadInfo
ldr r1, _020E7E7C ; =__cs_id
ldr r2, [r0, #4]
ldr r0, _020E7E80 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #1
str r3, [r1, #0xc]
str r2, [r0, #0xc]
b _020E7E24
_020E7DCC:
ldr r0, _020E7E78 ; =OSi_ThreadInfo
ldr r1, _020E7E7C ; =__cs_id
ldr r0, [r0, #4]
ldr r1, [r1, #0xc]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020E7DFC
ldr r0, _020E7E80 ; =__cs_ref
ldr r1, [r0, #0xc]
add r1, r1, #1
str r1, [r0, #0xc]
b _020E7E24
_020E7DFC:
ldr r0, _020E7E74 ; =__cs + 0x48
bl OS_LockMutex
ldr r0, _020E7E78 ; =OSi_ThreadInfo
ldr r1, _020E7E7C ; =__cs_id
ldr r2, [r0, #4]
ldr r0, _020E7E80 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #1
str r3, [r1, #0xc]
str r2, [r0, #0xc]
_020E7E24:
add r0, sp, #8
bic r3, r0, #3
ldr r2, [sp, #8]
ldr r0, _020E7E84 ; =__FileWrite
ldr r1, _020E7E70 ; =__files + 0x4C
add r3, r3, #4
bl __pformatter
ldr r1, _020E7E80 ; =__cs_ref
mov r4, r0
ldr r0, [r1, #0xc]
subs r0, r0, #1
str r0, [r1, #0xc]
bne _020E7E60
ldr r0, _020E7E74 ; =__cs + 0x48
bl OS_UnlockMutex
_020E7E60:
mov r0, r4
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020E7E70: .word __files + 0x4C
_020E7E74: .word __cs + 0x48
_020E7E78: .word OSi_ThreadInfo
_020E7E7C: .word __cs_id
_020E7E80: .word __cs_ref
_020E7E84: .word __FileWrite
arm_func_end printf
arm_func_start vsnprintf
vsnprintf: ; 0x020E7E88
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
mov r4, r1
mov ip, #0
ldr r0, _020E7EEC ; =__StringWrite
add r1, sp, #0
str r5, [sp]
str r4, [sp, #4]
str ip, [sp, #8]
bl __pformatter
cmp r5, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, pc}
cmp r0, r4
movlo r1, #0
addlo sp, sp, #0xc
strlob r1, [r5, r0]
ldmloia sp!, {r4, r5, pc}
cmp r4, #0
addne r1, r5, r4
movne r2, #0
strneb r2, [r1, #-1]
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020E7EEC: .word __StringWrite
arm_func_end vsnprintf
arm_func_start vsprintf
vsprintf: ; 0x020E7EF0
ldr ip, _020E7F04 ; =vsnprintf
mov r3, r2
mov r2, r1
mvn r1, #0
bx ip
.align 2, 0
_020E7F04: .word vsnprintf
arm_func_end vsprintf
arm_func_start snprintf
snprintf: ; 0x020E7F08
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r3, sp, #0x10
bic r3, r3, #3
ldr r2, [sp, #0x10]
add r3, r3, #4
bl vsnprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end snprintf
arm_func_start sprintf
sprintf: ; 0x020E7F30
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r1, sp, #0xc
bic r1, r1, #3
add r3, r1, #4
ldr r2, [sp, #0xc]
mvn r1, #0
bl vsnprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end sprintf
exception long2str, 0x024D, 0x0090FF20
exception longlong2str, 0x02FD, 0x00A0FF20
exception double2hex, 0x04DD, 0x00F07F20
exception float2str, 0x0765, 0x00C0FF20
exception __pformatter, 0x0824, __pformatter_exception
exception __FileWrite, 0x002D, 0x00200300
exception __StringWrite, 0x0045, 0x00200300
exception printf, 0x0119, 0x00300120
exception vsnprintf, 0x0069, 0x00300300
exception vsprintf, 0x0019, 0x00000000
exception snprintf, 0x0029, 0x00300020
exception sprintf, 0x002D, 0x00300020
.section .exception,4,1,2
__pformatter_exception: ; 0x020F4F84
.byte 0x20, 0xFF, 0x09, 0x60, 0x00, 0x00, 0x00, 0x00