mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-24 23:17:08 -05:00
2584 lines
45 KiB
ArmAsm
2584 lines
45 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.data
|
|
|
|
.global UNK_02106DA0
|
|
UNK_02106DA0: ; 0x02106DA0
|
|
.byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
|
|
.size UNK_02106DA0,.-UNK_02106DA0
|
|
|
|
.global UNK_02106DA8
|
|
UNK_02106DA8: ; 0x02106DA8
|
|
.asciz "-INF"
|
|
.size UNK_02106DA8,.-UNK_02106DA8
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DB0
|
|
UNK_02106DB0: ; 0x02106DB0
|
|
.asciz "-inf"
|
|
.size UNK_02106DB0,.-UNK_02106DB0
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DB8
|
|
UNK_02106DB8: ; 0x02106DB8
|
|
.asciz "INF"
|
|
.size UNK_02106DB8,.-UNK_02106DB8
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DBC
|
|
UNK_02106DBC: ; 0x02106DBC
|
|
.asciz "inf"
|
|
.size UNK_02106DBC,.-UNK_02106DBC
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DC0
|
|
UNK_02106DC0: ; 0x02106DC0
|
|
.asciz "-NAN"
|
|
.size UNK_02106DC0,.-UNK_02106DC0
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DC8
|
|
UNK_02106DC8: ; 0x02106DC8
|
|
.asciz "-nan"
|
|
.size UNK_02106DC8,.-UNK_02106DC8
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DD0
|
|
UNK_02106DD0: ; 0x02106DD0
|
|
.asciz "NAN"
|
|
.size UNK_02106DD0,.-UNK_02106DD0
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DD4
|
|
UNK_02106DD4: ; 0x02106DD4
|
|
.asciz "nan"
|
|
.size UNK_02106DD4,.-UNK_02106DD4
|
|
|
|
.balign 4, 0
|
|
.global UNK_02106DD8
|
|
UNK_02106DD8: ; 0x02106DD8
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.size UNK_02106DD8,.-UNK_02106DD8
|
|
|
|
.global UNK_02106DDC
|
|
UNK_02106DDC: ; 0x02106DDC
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.size UNK_02106DDC,.-UNK_02106DDC
|
|
|
|
.text
|
|
|
|
arm_func_start parse_format
|
|
parse_format: ; 0x020DF600
|
|
stmdb sp!, {r4-r8,lr}
|
|
sub sp, sp, #0x10
|
|
ldrsb r3, [r0, #0x1]
|
|
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, #0x1
|
|
bne _020DF65C
|
|
add r0, sp, #0x0
|
|
strb r3, [sp, #0x5]
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add sp, sp, #0x10
|
|
add r0, r12, #0x1
|
|
ldmia sp!, {r4-r8,pc}
|
|
_020DF65C:
|
|
mov r2, #0x2
|
|
mov r0, r4
|
|
mov r5, r2
|
|
mov r6, r4
|
|
mov r7, #0x1
|
|
_020DF670:
|
|
mov r8, r7
|
|
cmp r3, #0x2b
|
|
bgt _020DF6A0
|
|
bge _020DF6C8
|
|
cmp r3, #0x23
|
|
bgt _020DF6F8
|
|
cmp r3, #0x20
|
|
blt _020DF6F8
|
|
beq _020DF6D0
|
|
cmp r3, #0x23
|
|
beq _020DF6E0
|
|
b _020DF6F8
|
|
_020DF6A0:
|
|
cmp r3, #0x30
|
|
bgt _020DF6F8
|
|
cmp r3, #0x2d
|
|
blt _020DF6F8
|
|
beq _020DF6C0
|
|
cmp r3, #0x30
|
|
beq _020DF6E8
|
|
b _020DF6F8
|
|
_020DF6C0:
|
|
strb r6, [sp, #0x0]
|
|
b _020DF6FC
|
|
_020DF6C8:
|
|
strb r7, [sp, #0x1]
|
|
b _020DF6FC
|
|
_020DF6D0:
|
|
ldrb r4, [sp, #0x1]
|
|
cmp r4, #0x1
|
|
strneb r5, [sp, #0x1]
|
|
b _020DF6FC
|
|
_020DF6E0:
|
|
strb r7, [sp, #0x3]
|
|
b _020DF6FC
|
|
_020DF6E8:
|
|
ldrb r4, [sp, #0x0]
|
|
cmp r4, #0x0
|
|
strneb r2, [sp, #0x0]
|
|
b _020DF6FC
|
|
_020DF6F8:
|
|
mov r8, r0
|
|
_020DF6FC:
|
|
cmp r8, #0x0
|
|
ldrnesb r3, [r12, #0x1]!
|
|
bne _020DF670
|
|
cmp r3, #0x2a
|
|
bne _020DF744
|
|
ldr r0, [r1, #0x0]
|
|
add r0, r0, #0x4
|
|
str r0, [r1, #0x0]
|
|
ldr r0, [r0, #-0x4]
|
|
str r0, [sp, #0x8]
|
|
cmp r0, #0x0
|
|
bge _020DF73C
|
|
rsb r0, r0, #0x0
|
|
mov r2, #0x0
|
|
strb r2, [sp, #0x0]
|
|
str r0, [sp, #0x8]
|
|
_020DF73C:
|
|
ldrsb r3, [r12, #0x1]!
|
|
b _020DF794
|
|
_020DF744:
|
|
ldr r4, _020DFB88 ; =__msl_digit
|
|
mov r5, #0x0
|
|
mov r0, #0xa
|
|
b _020DF768
|
|
_020DF754:
|
|
ldr r2, [sp, #0x8]
|
|
sub r3, r3, #0x30
|
|
mla r6, r2, r0, r3
|
|
ldrsb r3, [r12, #0x1]!
|
|
str r6, [sp, #0x8]
|
|
_020DF768:
|
|
cmp r3, #0x0
|
|
blt _020DF778
|
|
cmp r3, #0x80
|
|
blt _020DF780
|
|
_020DF778:
|
|
mov r2, r5
|
|
b _020DF78C
|
|
_020DF780:
|
|
mov r2, r3, lsl #0x1
|
|
ldrh r2, [r4, r2]
|
|
and r2, r2, #0x8
|
|
_020DF78C:
|
|
cmp r2, #0x0
|
|
bne _020DF754
|
|
_020DF794:
|
|
ldr r2, [sp, #0x8]
|
|
ldr r0, _020DFB8C ; =0x000001FD
|
|
cmp r2, r0
|
|
ble _020DF7C4
|
|
mov r1, #0xff
|
|
add r0, sp, #0x0
|
|
strb r1, [sp, #0x5]
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add sp, sp, #0x10
|
|
add r0, r12, #0x1
|
|
ldmia sp!, {r4-r8,pc}
|
|
_020DF7C4:
|
|
cmp r3, #0x2e
|
|
bne _020DF858
|
|
ldrsb r3, [r12, #0x1]!
|
|
mov r0, #0x1
|
|
strb r0, [sp, #0x2]
|
|
cmp r3, #0x2a
|
|
bne _020DF808
|
|
ldr r0, [r1, #0x0]
|
|
add r0, r0, #0x4
|
|
str r0, [r1, #0x0]
|
|
ldr r0, [r0, #-0x4]
|
|
ldrsb r3, [r12, #0x1]!
|
|
str r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
movlt r0, #0x0
|
|
strltb r0, [sp, #0x2]
|
|
b _020DF858
|
|
_020DF808:
|
|
ldr r2, _020DFB88 ; =__msl_digit
|
|
mov r4, #0x0
|
|
mov r0, #0xa
|
|
b _020DF82C
|
|
_020DF818:
|
|
ldr r1, [sp, #0xc]
|
|
sub r3, r3, #0x30
|
|
mla r5, r1, r0, r3
|
|
ldrsb r3, [r12, #0x1]!
|
|
str r5, [sp, #0xc]
|
|
_020DF82C:
|
|
cmp r3, #0x0
|
|
blt _020DF83C
|
|
cmp r3, #0x80
|
|
blt _020DF844
|
|
_020DF83C:
|
|
mov r1, r4
|
|
b _020DF850
|
|
_020DF844:
|
|
mov r1, r3, lsl #0x1
|
|
ldrh r1, [r2, r1]
|
|
and r1, r1, #0x8
|
|
_020DF850:
|
|
cmp r1, #0x0
|
|
bne _020DF818
|
|
_020DF858:
|
|
cmp r3, #0x6c
|
|
mov r0, #0x1
|
|
bgt _020DF890
|
|
cmp r3, #0x68
|
|
blt _020DF884
|
|
beq _020DF8AC
|
|
cmp r3, #0x6a
|
|
beq _020DF8F8
|
|
cmp r3, #0x6c
|
|
beq _020DF8C8
|
|
b _020DF91C
|
|
_020DF884:
|
|
cmp r3, #0x4c
|
|
beq _020DF8EC
|
|
b _020DF91C
|
|
_020DF890:
|
|
cmp r3, #0x74
|
|
bgt _020DF8A0
|
|
beq _020DF904
|
|
b _020DF91C
|
|
_020DF8A0:
|
|
cmp r3, #0x7a
|
|
beq _020DF910
|
|
b _020DF91C
|
|
_020DF8AC:
|
|
ldrsb r1, [r12, #0x1]
|
|
mov r2, #0x2
|
|
strb r2, [sp, #0x4]
|
|
cmp r1, #0x68
|
|
streqb r0, [sp, #0x4]
|
|
ldreqsb r3, [r12, #0x1]!
|
|
b _020DF920
|
|
_020DF8C8:
|
|
ldrsb r1, [r12, #0x1]
|
|
mov r2, #0x3
|
|
strb r2, [sp, #0x4]
|
|
cmp r1, #0x6c
|
|
bne _020DF920
|
|
mov r1, #0x4
|
|
strb r1, [sp, #0x4]
|
|
ldrsb r3, [r12, #0x1]!
|
|
b _020DF920
|
|
_020DF8EC:
|
|
mov r1, #0x9
|
|
strb r1, [sp, #0x4]
|
|
b _020DF920
|
|
_020DF8F8:
|
|
mov r1, #0x6
|
|
strb r1, [sp, #0x4]
|
|
b _020DF920
|
|
_020DF904:
|
|
mov r1, #0x8
|
|
strb r1, [sp, #0x4]
|
|
b _020DF920
|
|
_020DF910:
|
|
mov r1, #0x7
|
|
strb r1, [sp, #0x4]
|
|
b _020DF920
|
|
_020DF91C:
|
|
mov r0, #0x0
|
|
_020DF920:
|
|
cmp r0, #0x0
|
|
ldrnesb r3, [r12, #0x1]!
|
|
strb r3, [sp, #0x5]
|
|
cmp r3, #0x61
|
|
bgt _020DF974
|
|
bge _020DFA5C
|
|
cmp r3, #0x47
|
|
bgt _020DF968
|
|
subs r0, r3, #0x41
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020DFB68
|
|
b _020DFA5C ; case 65
|
|
b _020DFB68 ; case 66
|
|
b _020DFB68 ; case 67
|
|
b _020DFB68 ; case 68
|
|
b _020DFAA4 ; case 69
|
|
b _020DFA24 ; case 70
|
|
b _020DFA94 ; case 71
|
|
_020DF968:
|
|
cmp r3, #0x58
|
|
beq _020DF9E8
|
|
b _020DFB68
|
|
_020DF974:
|
|
cmp r3, #0x63
|
|
bgt _020DF984
|
|
beq _020DFB04
|
|
b _020DFB68
|
|
_020DF984:
|
|
sub r0, r3, #0x64
|
|
cmp r0, #0x14
|
|
addls pc, pc, r0, lsl #0x2
|
|
b _020DFB68
|
|
b _020DF9E8 ; case 100
|
|
b _020DFAA4 ; case 101
|
|
b _020DFA24 ; case 102
|
|
b _020DFA94 ; case 103
|
|
b _020DFB68 ; case 104
|
|
b _020DF9E8 ; case 105
|
|
b _020DFB68 ; case 106
|
|
b _020DFB68 ; case 107
|
|
b _020DFB68 ; case 108
|
|
b _020DFB68 ; case 109
|
|
b _020DFB54 ; case 110
|
|
b _020DF9E8 ; case 111
|
|
b _020DFAE0 ; case 112
|
|
b _020DFB68 ; case 113
|
|
b _020DFB68 ; case 114
|
|
b _020DFB30 ; case 115
|
|
b _020DFB68 ; case 116
|
|
b _020DF9E8 ; case 117
|
|
b _020DFB68 ; case 118
|
|
b _020DFB68 ; case 119
|
|
b _020DF9E8 ; case 120
|
|
_020DF9E8:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x9
|
|
moveq r0, #0xff
|
|
streqb r0, [sp, #0x5]
|
|
beq _020DFB70
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x1
|
|
streq r0, [sp, #0xc]
|
|
beq _020DFB70
|
|
ldrb r0, [sp, #0x0]
|
|
cmp r0, #0x2
|
|
moveq r0, #0x1
|
|
streqb r0, [sp, #0x0]
|
|
b _020DFB70
|
|
_020DFA24:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x2
|
|
cmpne r0, #0x6
|
|
cmpne r0, #0x7
|
|
cmpne r0, #0x8
|
|
cmpne r0, #0x4
|
|
moveq r0, #0xff
|
|
streqb r0, [sp, #0x5]
|
|
beq _020DFB70
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x6
|
|
streq r0, [sp, #0xc]
|
|
b _020DFB70
|
|
_020DFA5C:
|
|
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
|
|
moveq r0, #0xff
|
|
streqb r0, [sp, #0x5]
|
|
b _020DFB70
|
|
_020DFA94:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x1
|
|
streq r0, [sp, #0xc]
|
|
_020DFAA4:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x2
|
|
cmpne r0, #0x6
|
|
cmpne r0, #0x7
|
|
cmpne r0, #0x8
|
|
cmpne r0, #0x4
|
|
cmpne r0, #0x1
|
|
moveq r0, #0xff
|
|
streqb r0, [sp, #0x5]
|
|
beq _020DFB70
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
moveq r0, #0x6
|
|
streq r0, [sp, #0xc]
|
|
b _020DFB70
|
|
_020DFAE0:
|
|
mov r3, #0x78
|
|
mov r2, #0x1
|
|
mov r1, #0x3
|
|
mov r0, #0x8
|
|
strb r3, [sp, #0x5]
|
|
strb r2, [sp, #0x3]
|
|
strb r1, [sp, #0x4]
|
|
str r0, [sp, #0xc]
|
|
b _020DFB70
|
|
_020DFB04:
|
|
ldrb r1, [sp, #0x4]
|
|
cmp r1, #0x3
|
|
moveq r0, #0x5
|
|
streqb r0, [sp, #0x4]
|
|
beq _020DFB70
|
|
ldrb r0, [sp, #0x2]
|
|
cmp r0, #0x0
|
|
cmpeq r1, #0x0
|
|
movne r0, #0xff
|
|
strneb r0, [sp, #0x5]
|
|
b _020DFB70
|
|
_020DFB30:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x3
|
|
moveq r0, #0x5
|
|
streqb r0, [sp, #0x4]
|
|
beq _020DFB70
|
|
cmp r0, #0x0
|
|
movne r0, #0xff
|
|
strneb r0, [sp, #0x5]
|
|
b _020DFB70
|
|
_020DFB54:
|
|
ldrb r0, [sp, #0x4]
|
|
cmp r0, #0x9
|
|
moveq r0, #0xff
|
|
streqb r0, [sp, #0x5]
|
|
b _020DFB70
|
|
_020DFB68:
|
|
mov r0, #0xff
|
|
strb r0, [sp, #0x5]
|
|
_020DFB70:
|
|
add r0, sp, #0x0
|
|
ldmia r0, {r0-r3}
|
|
stmia lr, {r0-r3}
|
|
add r0, r12, #0x1
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4-r8,pc}
|
|
.balign 4
|
|
_020DFB88: .word __msl_digit
|
|
_020DFB8C: .word 0x000001FD
|
|
arm_func_end parse_format
|
|
|
|
arm_func_start long2str
|
|
long2str: ; 0x020DFB90
|
|
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
|
|
strb r0, [r5, #-0x1]!
|
|
ldrb r0, [sp, #0x43]
|
|
str r1, [sp, #0x0]
|
|
ldrb r8, [sp, #0x45]
|
|
str r0, [sp, #0x4]
|
|
ldr r0, [sp, #0x48]
|
|
ldrb r11, [sp, #0x41]
|
|
str r0, [sp, #0x8]
|
|
cmpeq r7, #0x0
|
|
bne _020DFC04
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020DFBF0
|
|
cmp r8, #0x6f
|
|
beq _020DFC04
|
|
_020DFBF0:
|
|
add sp, sp, #0x10
|
|
mov r0, r5
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020DFC04:
|
|
cmp r8, #0x69
|
|
bgt _020DFC2C
|
|
bge _020DFC60
|
|
cmp r8, #0x58
|
|
bgt _020DFC20
|
|
beq _020DFC8C
|
|
b _020DFC94
|
|
_020DFC20:
|
|
cmp r8, #0x64
|
|
beq _020DFC60
|
|
b _020DFC94
|
|
_020DFC2C:
|
|
cmp r8, #0x6f
|
|
bgt _020DFC40
|
|
moveq r4, #0x8
|
|
moveq r11, #0x0
|
|
b _020DFC94
|
|
_020DFC40:
|
|
cmp r8, #0x78
|
|
bgt _020DFC94
|
|
cmp r8, #0x75
|
|
blt _020DFC94
|
|
beq _020DFC80
|
|
cmp r8, #0x78
|
|
beq _020DFC8C
|
|
b _020DFC94
|
|
_020DFC60:
|
|
cmp r10, #0x0
|
|
mov r4, #0xa
|
|
bge _020DFC94
|
|
mov r0, #0x1
|
|
cmp r10, #0x80000000
|
|
rsbne r10, r10, #0x0
|
|
str r0, [sp, #0xc]
|
|
b _020DFC94
|
|
_020DFC80:
|
|
mov r4, #0xa
|
|
mov r11, #0x0
|
|
b _020DFC94
|
|
_020DFC8C:
|
|
mov r4, #0x10
|
|
mov r11, #0x0
|
|
_020DFC94:
|
|
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 _020DFCCC
|
|
cmp r8, #0x78
|
|
addeq r9, r9, #0x57
|
|
addne r9, r9, #0x37
|
|
_020DFCCC:
|
|
cmp r10, #0x0
|
|
strb r9, [r5, #-0x1]!
|
|
add r6, r6, #0x1
|
|
bne _020DFC94
|
|
cmp r4, #0x8
|
|
bne _020DFD00
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrnesb r0, [r5, #0x0]
|
|
cmpne r0, #0x30
|
|
movne r0, #0x30
|
|
strneb r0, [r5, #-0x1]!
|
|
addne r6, r6, #0x1
|
|
_020DFD00:
|
|
ldrb r0, [sp, #0x40]
|
|
cmp r0, #0x2
|
|
bne _020DFD34
|
|
ldr r0, [sp, #0xc]
|
|
ldr r7, [sp, #0x8]
|
|
cmp r0, #0x0
|
|
cmpeq r11, #0x0
|
|
subne r7, r7, #0x1
|
|
cmp r4, #0x10
|
|
bne _020DFD34
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
subne r7, r7, #0x2
|
|
_020DFD34:
|
|
ldr r0, [sp, #0x0]
|
|
sub r1, r0, r5
|
|
ldr r0, _020DFDD8 ; =0x000001FD
|
|
add r1, r7, r1
|
|
cmp r1, r0
|
|
addgt sp, sp, #0x10
|
|
movgt r0, #0x0
|
|
ldmgtia sp!, {r3-r11,lr}
|
|
addgt sp, sp, #0x10
|
|
bxgt lr
|
|
cmp r6, r7
|
|
bge _020DFD78
|
|
mov r0, #0x30
|
|
_020DFD68:
|
|
add r6, r6, #0x1
|
|
cmp r6, r7
|
|
strb r0, [r5, #-0x1]!
|
|
blt _020DFD68
|
|
_020DFD78:
|
|
cmp r4, #0x10
|
|
bne _020DFD94
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x30
|
|
strneb r8, [r5, #-0x1]
|
|
strneb r0, [r5, #-0x2]!
|
|
_020DFD94:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneb r0, [r5, #-0x1]!
|
|
bne _020DFDC4
|
|
cmp r11, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r5, #-0x1]!
|
|
beq _020DFDC4
|
|
cmp r11, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r5, #-0x1]!
|
|
_020DFDC4:
|
|
mov r0, r5
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020DFDD8: .word 0x000001FD
|
|
arm_func_end long2str
|
|
|
|
arm_func_start longlong2str
|
|
longlong2str: ; 0x020DFDDC
|
|
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
|
|
strb r0, [r6, #-0x1]!
|
|
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
|
|
ldrb r8, [sp, #0x51]
|
|
str r0, [sp, #0xc]
|
|
ldreq r0, [sp, #0x10]
|
|
cmpeq r0, #0x0
|
|
bne _020DFE6C
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020DFE58
|
|
cmp r8, #0x6f
|
|
beq _020DFE6C
|
|
_020DFE58:
|
|
add sp, sp, #0x18
|
|
mov r0, r6
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020DFE6C:
|
|
cmp r8, #0x69
|
|
bgt _020DFE94
|
|
bge _020DFEC4
|
|
cmp r8, #0x58
|
|
bgt _020DFE88
|
|
beq _020DFF18
|
|
b _020DFF24
|
|
_020DFE88:
|
|
cmp r8, #0x64
|
|
beq _020DFEC4
|
|
b _020DFF24
|
|
_020DFE94:
|
|
cmp r8, #0x6f
|
|
bgt _020DFEA4
|
|
beq _020DFEF8
|
|
b _020DFF24
|
|
_020DFEA4:
|
|
cmp r8, #0x78
|
|
bgt _020DFF24
|
|
cmp r8, #0x75
|
|
blt _020DFF24
|
|
beq _020DFF08
|
|
cmp r8, #0x78
|
|
beq _020DFF18
|
|
b _020DFF24
|
|
_020DFEC4:
|
|
subs r0, r10, #0x0
|
|
sbcs r0, r9, #0x0
|
|
mov r11, #0xa
|
|
mov r5, #0x0
|
|
bge _020DFF24
|
|
cmp r9, #0x80000000
|
|
cmpeq r10, r5
|
|
beq _020DFEEC
|
|
rsbs r10, r10, #0x0
|
|
rsc r9, r9, #0x0
|
|
_020DFEEC:
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x14]
|
|
b _020DFF24
|
|
_020DFEF8:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0x8
|
|
b _020DFF24
|
|
_020DFF08:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0xa
|
|
b _020DFF24
|
|
_020DFF18:
|
|
mov r5, #0x0
|
|
str r5, [sp, #0xc]
|
|
mov r11, #0x10
|
|
_020DFF24:
|
|
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 _020DFF70
|
|
cmp r8, #0x78
|
|
addeq r0, r4, #0x57
|
|
addne r0, r4, #0x37
|
|
_020DFF70:
|
|
strb r0, [r6, #-0x1]!
|
|
mov r0, #0x0
|
|
cmp r9, r0
|
|
cmpeq r10, r0
|
|
add r7, r7, #0x1
|
|
bne _020DFF24
|
|
cmp r5, #0x0
|
|
cmpeq r11, #0x8
|
|
bne _020DFFB0
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrnesb r0, [r6, #0x0]
|
|
cmpne r0, #0x30
|
|
movne r0, #0x30
|
|
strneb r0, [r6, #-0x1]!
|
|
addne r7, r7, #0x1
|
|
_020DFFB0:
|
|
ldrb r0, [sp, #0x4c]
|
|
cmp r0, #0x2
|
|
bne _020E0000
|
|
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 _020E0000
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
ldrne r0, [sp, #0x10]
|
|
subne r0, r0, #0x2
|
|
strne r0, [sp, #0x10]
|
|
_020E0000:
|
|
ldr r0, [sp, #0x0]
|
|
ldr r1, _020E00B8 ; =0x000001FD
|
|
sub r2, r0, r6
|
|
ldr r0, [sp, #0x10]
|
|
add r0, r0, r2
|
|
cmp r0, r1
|
|
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 _020E0050
|
|
mov r1, #0x30
|
|
_020E003C:
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #0x1
|
|
cmp r7, r0
|
|
strb r1, [r6, #-0x1]!
|
|
blt _020E003C
|
|
_020E0050:
|
|
cmp r5, #0x0
|
|
cmpeq r11, #0x10
|
|
bne _020E0070
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x30
|
|
strneb r8, [r6, #-0x1]
|
|
strneb r0, [r6, #-0x2]!
|
|
_020E0070:
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneb r0, [r6, #-0x1]!
|
|
bne _020E00A4
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r6, #-0x1]!
|
|
beq _020E00A4
|
|
cmp r0, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r6, #-0x1]!
|
|
_020E00A4:
|
|
mov r0, r6
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E00B8: .word 0x000001FD
|
|
arm_func_end longlong2str
|
|
|
|
arm_func_start double2hex
|
|
double2hex: ; 0x020E00BC
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3-r10,lr}
|
|
sub sp, sp, #0x44
|
|
ldr r7, [sp, #0x80]
|
|
ldr r0, _020E056C ; =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, #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 _020E0188
|
|
ldr r3, _020E0570 ; =UNK_02106DA0
|
|
sub r0, r8, #0x6
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
add sp, sp, #0x44
|
|
strb r2, [r8, #-0x6]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r2, [r3, #0x4]
|
|
ldrb r1, [r3, #0x5]
|
|
strb r2, [r0, #0x4]
|
|
strb r1, [r0, #0x5]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0188:
|
|
ldrb r0, [sp, #0x11]
|
|
cmp r0, #0x49
|
|
bne _020E0298
|
|
ldrsb r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
beq _020E0224
|
|
cmp r6, #0x41
|
|
sub r0, r8, #0x5
|
|
bne _020E01E8
|
|
ldr r3, _020E0574 ; =UNK_02106DA8
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E01E8:
|
|
ldr r3, _020E0578 ; =UNK_02106DB0
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0224:
|
|
cmp r6, #0x41
|
|
sub r0, r8, #0x4
|
|
bne _020E0264
|
|
ldr r3, _020E057C ; =UNK_02106DB8
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0264:
|
|
ldr r3, _020E0580 ; =UNK_02106DBC
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0298:
|
|
cmp r0, #0x4e
|
|
bne _020E03A4
|
|
ldrsb r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
beq _020E0330
|
|
cmp r6, #0x41
|
|
sub r0, r8, #0x5
|
|
bne _020E02F4
|
|
ldr r3, _020E0584 ; =UNK_02106DC0
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E02F4:
|
|
ldr r3, _020E0588 ; =UNK_02106DC8
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0330:
|
|
cmp r6, #0x41
|
|
sub r0, r8, #0x4
|
|
bne _020E0370
|
|
ldr r3, _020E058C ; =UNK_02106DD0
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0370:
|
|
ldr r3, _020E0590 ; =UNK_02106DD4
|
|
add sp, sp, #0x44
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E03A4:
|
|
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]
|
|
strb r0, [sp, #0x39]
|
|
_020E03D4:
|
|
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 _020E03D4
|
|
ldrb r0, [sp, #0x69]
|
|
ldrb r1, [sp, #0x68]
|
|
ldr sb, _020E0594 ; =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
|
|
cmp r6, #0x61
|
|
moveq r1, #0x70
|
|
movne r1, #0x50
|
|
strb r1, [r0, #-0x1]!
|
|
mov r1, r7, lsl #0x2
|
|
mov lr, r7
|
|
cmp r7, #0x1
|
|
add r8, r1, #0xb
|
|
add r12, sp, #0x68
|
|
blt _020E04E4
|
|
mov r9, #0x30
|
|
_020E045C:
|
|
cmp r8, #0x40
|
|
bge _020E04CC
|
|
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 _020E04A0
|
|
ldrb r2, [r10, #-0x1]
|
|
mov r2, r2, lsl #0x8
|
|
orr r1, r1, r2, asr r3
|
|
and r1, r1, #0xff
|
|
_020E04A0:
|
|
and r1, r1, #0xf
|
|
cmp r1, #0xa
|
|
addcc r1, r1, #0x30
|
|
andcc r1, r1, #0xff
|
|
blo _020E04D0
|
|
cmp r6, #0x61
|
|
addeq r1, r1, #0x57
|
|
andeq r1, r1, #0xff
|
|
addne r1, r1, #0x37
|
|
andne r1, r1, #0xff
|
|
b _020E04D0
|
|
_020E04CC:
|
|
mov r1, r9
|
|
_020E04D0:
|
|
sub lr, lr, #0x1
|
|
cmp lr, #0x1
|
|
strb r1, [r0, #-0x1]!
|
|
sub r8, r8, #0x4
|
|
bge _020E045C
|
|
_020E04E4:
|
|
cmp r7, #0x0
|
|
cmpeq r5, #0x0
|
|
movne r1, #0x2e
|
|
strneb r1, [r0, #-0x1]!
|
|
mov r1, #0x31
|
|
strb r1, [r0, #-0x1]
|
|
cmp r6, #0x61
|
|
moveq r1, #0x78
|
|
movne r1, #0x58
|
|
strb r1, [r0, #-0x2]!
|
|
mov r1, #0x30
|
|
strb r1, [r0, #-0x1]!
|
|
ldrsb r1, [sp, #0xc]
|
|
cmp r1, #0x0
|
|
movne r1, #0x2d
|
|
strneb r1, [r0, #-0x1]!
|
|
addne sp, sp, #0x44
|
|
ldmneia sp!, {r3-r10,lr}
|
|
addne sp, sp, #0x10
|
|
bxne lr
|
|
cmp r4, #0x1
|
|
moveq r1, #0x2b
|
|
streqb r1, [r0, #-0x1]!
|
|
addeq sp, sp, #0x44
|
|
ldmeqia sp!, {r3-r10,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
cmp r4, #0x2
|
|
moveq r1, #0x20
|
|
streqb r1, [r0, #-0x1]!
|
|
add sp, sp, #0x44
|
|
ldmia sp!, {r3-r10,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E056C: .word 0x000001FD
|
|
_020E0570: .word UNK_02106DA0
|
|
_020E0574: .word UNK_02106DA8
|
|
_020E0578: .word UNK_02106DB0
|
|
_020E057C: .word UNK_02106DB8
|
|
_020E0580: .word UNK_02106DBC
|
|
_020E0584: .word UNK_02106DC0
|
|
_020E0588: .word UNK_02106DC8
|
|
_020E058C: .word UNK_02106DD0
|
|
_020E0590: .word UNK_02106DD4
|
|
_020E0594: .word 0x000007FF
|
|
arm_func_end double2hex
|
|
|
|
arm_func_start round_decimal
|
|
round_decimal: ; 0x020E0598
|
|
stmdb sp!, {r4,lr}
|
|
cmp r1, #0x0
|
|
bge _020E05C0
|
|
_020E05A4:
|
|
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}
|
|
_020E05C0:
|
|
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 _020E0620
|
|
add r12, r12, lr
|
|
_020E05F4:
|
|
sub r12, r12, #0x1
|
|
cmp r12, r2
|
|
bls _020E060C
|
|
ldrsb r3, [r12, #0x0]
|
|
cmp r3, #0x30
|
|
beq _020E05F4
|
|
_020E060C:
|
|
cmp r12, r2
|
|
ldreqsb r3, [r2, #-0x1]
|
|
andeq r4, r3, #0x1
|
|
movne r4, #0x1
|
|
b _020E0628
|
|
_020E0620:
|
|
movgt r4, #0x1
|
|
movle r4, #0x0
|
|
_020E0628:
|
|
cmp r1, #0x0
|
|
beq _020E0684
|
|
mov r12, #0x0
|
|
mov lr, #0x1
|
|
_020E0638:
|
|
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 _020E0668
|
|
cmp r3, #0x0
|
|
bne _020E0670
|
|
_020E0668:
|
|
sub r1, r1, #0x1
|
|
b _020E067C
|
|
_020E0670:
|
|
add r3, r3, #0x30
|
|
strb r3, [r2, #0x0]
|
|
b _020E0684
|
|
_020E067C:
|
|
cmp r1, #0x0
|
|
bne _020E0638
|
|
_020E0684:
|
|
cmp r4, #0x0
|
|
beq _020E06AC
|
|
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}
|
|
_020E06AC:
|
|
cmp r1, #0x0
|
|
beq _020E05A4
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4,pc}
|
|
arm_func_end round_decimal
|
|
|
|
arm_func_start float2str
|
|
float2str: ; 0x020E06BC
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r4-r11,lr}
|
|
sub sp, sp, #0x2c
|
|
ldr r7, [sp, #0x68]
|
|
ldr r3, _020E0DF4 ; =0x000001FD
|
|
ldrb r6, [sp, #0x61]
|
|
ldrb r5, [sp, #0x5f]
|
|
ldrb r4, [sp, #0x5d]
|
|
cmp r7, r3
|
|
mov r10, r0
|
|
mov r8, r1
|
|
mov r9, r2
|
|
addgt sp, sp, #0x2c
|
|
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 _020E074C
|
|
_020E0734:
|
|
ldrb r2, [sp, #0x8]
|
|
ldrsh r1, [sp, #0x6]
|
|
sub r2, r2, #0x1
|
|
add r1, r1, #0x1
|
|
strb r2, [sp, #0x8]
|
|
strh r1, [sp, #0x6]
|
|
_020E074C:
|
|
ldrb r1, [sp, #0x8]
|
|
cmp r1, #0x1
|
|
bls _020E0764
|
|
ldrsb r1, [r0, #-0x1]!
|
|
cmp r1, #0x30
|
|
beq _020E0734
|
|
_020E0764:
|
|
ldrb r0, [sp, #0x9]
|
|
cmp r0, #0x30
|
|
beq _020E0784
|
|
cmp r0, #0x49
|
|
beq _020E0790
|
|
cmp r0, #0x4e
|
|
beq _020E08F0
|
|
b _020E0A44
|
|
_020E0784:
|
|
mov r0, #0x0
|
|
strh r0, [sp, #0x6]
|
|
b _020E0A44
|
|
_020E0790:
|
|
mov r2, #0x0
|
|
mov r0, r10
|
|
mov r1, r8
|
|
mov r3, r2
|
|
bl _dls
|
|
bhs _020E0854
|
|
cmp r6, #0x0
|
|
sub r0, r9, #0x5
|
|
blt _020E07BC
|
|
cmp r6, #0x80
|
|
blt _020E07C4
|
|
_020E07BC:
|
|
mov r1, #0x0
|
|
b _020E07D4
|
|
_020E07C4:
|
|
ldr r1, _020E0DF8 ; =__msl_digit
|
|
mov r2, r6, lsl #0x1
|
|
ldrh r1, [r1, r2]
|
|
and r1, r1, #0x200
|
|
_020E07D4:
|
|
cmp r1, #0x0
|
|
beq _020E0818
|
|
ldr r3, _020E0DFC ; =UNK_02106DA8
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0818:
|
|
ldr r3, _020E0E00 ; =UNK_02106DB0
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0854:
|
|
cmp r6, #0x0
|
|
sub r0, r9, #0x4
|
|
blt _020E0868
|
|
cmp r6, #0x80
|
|
blt _020E0870
|
|
_020E0868:
|
|
mov r1, #0x0
|
|
b _020E0880
|
|
_020E0870:
|
|
ldr r1, _020E0DF8 ; =__msl_digit
|
|
mov r2, r6, lsl #0x1
|
|
ldrh r1, [r1, r2]
|
|
and r1, r1, #0x200
|
|
_020E0880:
|
|
cmp r1, #0x0
|
|
beq _020E08BC
|
|
ldr r3, _020E0E04 ; =UNK_02106DB8
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E08BC:
|
|
ldr r3, _020E0E08 ; =UNK_02106DBC
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E08F0:
|
|
ldrsb r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020E09A8
|
|
cmp r6, #0x0
|
|
sub r0, r9, #0x5
|
|
blt _020E0910
|
|
cmp r6, #0x80
|
|
blt _020E0918
|
|
_020E0910:
|
|
mov r1, #0x0
|
|
b _020E0928
|
|
_020E0918:
|
|
ldr r1, _020E0DF8 ; =__msl_digit
|
|
mov r2, r6, lsl #0x1
|
|
ldrh r1, [r1, r2]
|
|
and r1, r1, #0x200
|
|
_020E0928:
|
|
cmp r1, #0x0
|
|
beq _020E096C
|
|
ldr r3, _020E0E0C ; =UNK_02106DC0
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E096C:
|
|
ldr r3, _020E0E10 ; =UNK_02106DC8
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldrb r1, [r3, #0x4]
|
|
strb r1, [r0, #0x4]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E09A8:
|
|
cmp r6, #0x0
|
|
sub r0, r9, #0x4
|
|
blt _020E09BC
|
|
cmp r6, #0x80
|
|
blt _020E09C4
|
|
_020E09BC:
|
|
mov r1, #0x0
|
|
b _020E09D4
|
|
_020E09C4:
|
|
ldr r1, _020E0DF8 ; =__msl_digit
|
|
mov r2, r6, lsl #0x1
|
|
ldrh r1, [r1, r2]
|
|
and r1, r1, #0x200
|
|
_020E09D4:
|
|
cmp r1, #0x0
|
|
beq _020E0A10
|
|
ldr r3, _020E0E14 ; =UNK_02106DD0
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0A10:
|
|
ldr r3, _020E0E18 ; =UNK_02106DD4
|
|
add sp, sp, #0x2c
|
|
ldrb r2, [r3, #0x0]
|
|
ldrb r1, [r3, #0x1]
|
|
strb r2, [r0, #0x0]
|
|
strb r1, [r0, #0x1]
|
|
ldrb r2, [r3, #0x2]
|
|
ldrb r1, [r3, #0x3]
|
|
strb r2, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0A44:
|
|
ldrb r0, [sp, #0x8]
|
|
ldrsh r1, [sp, #0x6]
|
|
sub r8, r9, #0x1
|
|
sub r0, r0, #0x1
|
|
add r0, r1, r0
|
|
strh r0, [sp, #0x6]
|
|
mov r0, #0x0
|
|
strb r0, [r8, #0x0]
|
|
cmp r6, #0x65
|
|
bgt _020E0A98
|
|
bge _020E0B24
|
|
cmp r6, #0x47
|
|
bgt _020E0DE0
|
|
cmp r6, #0x45
|
|
blt _020E0DE0
|
|
beq _020E0B24
|
|
cmp r6, #0x46
|
|
beq _020E0C6C
|
|
cmp r6, #0x47
|
|
beq _020E0AB0
|
|
b _020E0DE0
|
|
_020E0A98:
|
|
cmp r6, #0x66
|
|
bgt _020E0AA8
|
|
beq _020E0C6C
|
|
b _020E0DE0
|
|
_020E0AA8:
|
|
cmp r6, #0x67
|
|
bne _020E0DE0
|
|
_020E0AB0:
|
|
ldrb r0, [sp, #0x8]
|
|
cmp r0, r7
|
|
ble _020E0AC8
|
|
add r0, sp, #0x4
|
|
mov r1, r7
|
|
bl round_decimal
|
|
_020E0AC8:
|
|
ldrsh r2, [sp, #0x6]
|
|
mvn r0, #0x3
|
|
cmp r2, r0
|
|
blt _020E0AE0
|
|
cmp r2, r7
|
|
blt _020E0B00
|
|
_020E0AE0:
|
|
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 _020E0B24
|
|
_020E0B00:
|
|
cmp r5, #0x0
|
|
addne r0, r2, #0x1
|
|
subne r7, r7, r0
|
|
bne _020E0C6C
|
|
ldrb r1, [sp, #0x8]
|
|
add r0, r2, #0x1
|
|
subs r7, r1, r0
|
|
movmi r7, #0x0
|
|
b _020E0C6C
|
|
_020E0B24:
|
|
ldrb r0, [sp, #0x8]
|
|
add r1, r7, #0x1
|
|
cmp r0, r1
|
|
ble _020E0B3C
|
|
add r0, sp, #0x4
|
|
bl round_decimal
|
|
_020E0B3C:
|
|
ldrsh lr, [sp, #0x6]
|
|
mov r11, #0x2b
|
|
mov r10, #0x0
|
|
cmp lr, #0x0
|
|
rsblt lr, lr, #0x0
|
|
movlt r11, #0x2d
|
|
ldr r3, _020E0E1C ; =0x66666667
|
|
mov r0, #0xa
|
|
b _020E0B90
|
|
_020E0B60:
|
|
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
|
|
_020E0B90:
|
|
cmp lr, #0x0
|
|
bne _020E0B60
|
|
cmp r10, #0x2
|
|
blt _020E0B60
|
|
strb r11, [r8, #-0x1]
|
|
strb r6, [r8, #-0x2]!
|
|
sub r1, r9, r8
|
|
ldr r0, _020E0DF4 ; =0x000001FD
|
|
add r1, r7, r1
|
|
cmp r1, r0
|
|
addgt sp, sp, #0x2c
|
|
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 _020E0BFC
|
|
add r0, r7, #0x2
|
|
sub r0, r0, r1
|
|
subs r1, r0, #0x1
|
|
beq _020E0BFC
|
|
mov r0, #0x30
|
|
_020E0BF0:
|
|
strb r0, [r8, #-0x1]!
|
|
subs r1, r1, #0x1
|
|
bne _020E0BF0
|
|
_020E0BFC:
|
|
ldrb r1, [sp, #0x8]
|
|
add r0, sp, #0x9
|
|
add r2, r0, r1
|
|
subs r1, r1, #0x1
|
|
beq _020E0C20
|
|
_020E0C10:
|
|
ldrsb r0, [r2, #-0x1]!
|
|
subs r1, r1, #0x1
|
|
strb r0, [r8, #-0x1]!
|
|
bne _020E0C10
|
|
_020E0C20:
|
|
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 _020E0DE0
|
|
cmp r4, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r8, #-0x1]!
|
|
beq _020E0DE0
|
|
cmp r4, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r8, #-0x1]!
|
|
b _020E0DE0
|
|
_020E0C6C:
|
|
ldrsh r3, [sp, #0x6]
|
|
ldrb r2, [sp, #0x8]
|
|
sub r0, r2, r3
|
|
subs r1, r0, #0x1
|
|
movmi r1, #0x0
|
|
cmp r1, r7
|
|
ble _020E0CAC
|
|
sub r1, r1, r7
|
|
add r0, sp, #0x4
|
|
sub r1, r2, r1
|
|
bl round_decimal
|
|
ldrsh r3, [sp, #0x6]
|
|
ldrb r2, [sp, #0x8]
|
|
sub r0, r2, r3
|
|
subs r1, r0, #0x1
|
|
movmi r1, #0x0
|
|
_020E0CAC:
|
|
adds r0, r3, #0x1
|
|
movmi r0, #0x0
|
|
ldr r3, _020E0DF4 ; =0x000001FD
|
|
add r6, r0, r1
|
|
cmp r6, r3
|
|
addgt sp, sp, #0x2c
|
|
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 r9, #0x0
|
|
ble _020E0D00
|
|
mov r3, #0x30
|
|
_020E0CF0:
|
|
add r9, r9, #0x1
|
|
cmp r9, r6
|
|
strb r3, [r8, #-0x1]!
|
|
blt _020E0CF0
|
|
_020E0D00:
|
|
mov r6, #0x0
|
|
b _020E0D14
|
|
_020E0D08:
|
|
ldrsb r3, [r2, #-0x1]!
|
|
add r6, r6, #0x1
|
|
strb r3, [r8, #-0x1]!
|
|
_020E0D14:
|
|
cmp r6, r1
|
|
ldrltb r3, [sp, #0x8]
|
|
cmplt r6, r3
|
|
blt _020E0D08
|
|
cmp r6, r1
|
|
bge _020E0D40
|
|
mov r3, #0x30
|
|
_020E0D30:
|
|
add r6, r6, #0x1
|
|
cmp r6, r1
|
|
strb r3, [r8, #-0x1]!
|
|
blt _020E0D30
|
|
_020E0D40:
|
|
cmp r7, #0x0
|
|
cmpeq r5, #0x0
|
|
movne r1, #0x2e
|
|
strneb r1, [r8, #-0x1]!
|
|
cmp r0, #0x0
|
|
beq _020E0DA8
|
|
ldrb r1, [sp, #0x8]
|
|
mov r5, #0x0
|
|
sub r1, r0, r1
|
|
cmp r1, #0x0
|
|
ble _020E0D88
|
|
mov r3, #0x30
|
|
_020E0D70:
|
|
strb r3, [r8, #-0x1]!
|
|
ldrb r1, [sp, #0x8]
|
|
add r5, r5, #0x1
|
|
sub r1, r0, r1
|
|
cmp r5, r1
|
|
blt _020E0D70
|
|
_020E0D88:
|
|
cmp r5, r0
|
|
bge _020E0DB0
|
|
_020E0D90:
|
|
ldrsb r1, [r2, #-0x1]!
|
|
add r5, r5, #0x1
|
|
cmp r5, r0
|
|
strb r1, [r8, #-0x1]!
|
|
blt _020E0D90
|
|
b _020E0DB0
|
|
_020E0DA8:
|
|
mov r0, #0x30
|
|
strb r0, [r8, #-0x1]!
|
|
_020E0DB0:
|
|
ldrsb r0, [sp, #0x4]
|
|
cmp r0, #0x0
|
|
movne r0, #0x2d
|
|
strneb r0, [r8, #-0x1]!
|
|
bne _020E0DE0
|
|
cmp r4, #0x1
|
|
moveq r0, #0x2b
|
|
streqb r0, [r8, #-0x1]!
|
|
beq _020E0DE0
|
|
cmp r4, #0x2
|
|
moveq r0, #0x20
|
|
streqb r0, [r8, #-0x1]!
|
|
_020E0DE0:
|
|
mov r0, r8
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E0DF4: .word 0x000001FD
|
|
_020E0DF8: .word __msl_digit
|
|
_020E0DFC: .word UNK_02106DA8
|
|
_020E0E00: .word UNK_02106DB0
|
|
_020E0E04: .word UNK_02106DB8
|
|
_020E0E08: .word UNK_02106DBC
|
|
_020E0E0C: .word UNK_02106DC0
|
|
_020E0E10: .word UNK_02106DC8
|
|
_020E0E14: .word UNK_02106DD0
|
|
_020E0E18: .word UNK_02106DD4
|
|
_020E0E1C: .word 0x66666667
|
|
arm_func_end float2str
|
|
|
|
arm_func_start __pformatter
|
|
__pformatter:
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r4-r11,lr}
|
|
sub sp, sp, #0x22c
|
|
mov r3, #0x20
|
|
mov r11, r2
|
|
strb r3, [sp, #0x19]
|
|
ldrsb r2, [r11, #0x0]
|
|
mov r9, r0
|
|
mov r8, r1
|
|
cmp r2, #0x0
|
|
mov r10, #0x0
|
|
beq _020E1628
|
|
_020E0E50:
|
|
mov r0, r11
|
|
mov r1, #0x25
|
|
bl strchr
|
|
str r0, [sp, #0xc]
|
|
cmp r0, #0x0
|
|
bne _020E0EA4
|
|
mov r0, r11
|
|
bl strlen
|
|
movs r2, r0
|
|
add r10, r10, r2
|
|
beq _020E1628
|
|
mov r0, r8
|
|
mov r1, r11
|
|
blx r9
|
|
cmp r0, #0x0
|
|
bne _020E1628
|
|
add sp, sp, #0x22c
|
|
mvn r0, #0x0
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E0EA4:
|
|
subs r2, r0, r11
|
|
add r10, r10, r2
|
|
beq _020E0ED4
|
|
mov r0, r8
|
|
mov r1, r11
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E0ED4:
|
|
ldr r0, [sp, #0xc]
|
|
add r1, sp, #0x25c
|
|
add r2, sp, #0x1c
|
|
bl parse_format
|
|
ldrb r1, [sp, #0x21]
|
|
mov r11, r0
|
|
cmp r1, #0x61
|
|
bgt _020E0F40
|
|
bge _020E12A4
|
|
cmp r1, #0x47
|
|
bgt _020E0F34
|
|
subs r0, r1, #0x41
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020E0F28
|
|
b _020E12A4 ; case 65
|
|
b _020E148C ; case 66
|
|
b _020E148C ; case 67
|
|
b _020E148C ; case 68
|
|
b _020E123C ; case 69
|
|
b _020E123C ; case 70
|
|
b _020E123C ; case 71
|
|
_020E0F28:
|
|
cmp r1, #0x25
|
|
beq _020E1478
|
|
b _020E148C
|
|
_020E0F34:
|
|
cmp r1, #0x58
|
|
beq _020E1100
|
|
b _020E148C
|
|
_020E0F40:
|
|
cmp r1, #0x75
|
|
bgt _020E0FA8
|
|
subs r0, r1, #0x64
|
|
addpl pc, pc, r0, lsl #0x2
|
|
b _020E0F9C
|
|
b _020E0FC0 ; case 100
|
|
b _020E123C ; case 101
|
|
b _020E123C ; case 102
|
|
b _020E123C ; case 103
|
|
b _020E148C ; case 104
|
|
b _020E0FC0 ; case 105
|
|
b _020E148C ; case 106
|
|
b _020E148C ; case 107
|
|
b _020E148C ; case 108
|
|
b _020E148C ; case 109
|
|
b _020E13CC ; case 110
|
|
b _020E1100 ; case 111
|
|
b _020E148C ; case 112
|
|
b _020E148C ; case 113
|
|
b _020E148C ; case 114
|
|
b _020E130C ; case 115
|
|
b _020E148C ; case 116
|
|
b _020E1100 ; case 117
|
|
_020E0F9C:
|
|
cmp r1, #0x63
|
|
beq _020E1458
|
|
b _020E148C
|
|
_020E0FA8:
|
|
cmp r1, #0x78
|
|
bgt _020E0FB8
|
|
beq _020E1100
|
|
b _020E148C
|
|
_020E0FB8:
|
|
cmp r1, #0xff
|
|
b _020E148C
|
|
_020E0FC0:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x3
|
|
bne _020E0FE0
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E1078
|
|
_020E0FE0:
|
|
cmp r0, #0x4
|
|
bne _020E1008
|
|
ldr r1, [sp, #0x25c]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x25c]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E1078
|
|
_020E1008:
|
|
cmp r0, #0x6
|
|
bne _020E1030
|
|
ldr r1, [sp, #0x25c]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x25c]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E1078
|
|
_020E1030:
|
|
cmp r0, #0x7
|
|
bne _020E104C
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E1078
|
|
_020E104C:
|
|
cmp r0, #0x8
|
|
bne _020E1068
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E1078
|
|
_020E1068:
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
_020E1078:
|
|
cmp r0, #0x2
|
|
moveq r1, r5, lsl #0x10
|
|
moveq r5, r1, asr #0x10
|
|
cmp r0, #0x1
|
|
moveq r1, r5, lsl #0x18
|
|
moveq r5, r1, asr #0x18
|
|
cmp r0, #0x4
|
|
cmpne r0, #0x6
|
|
add r0, sp, #0x1c
|
|
bne _020E10CC
|
|
sub r4, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
ldr r3, [r4, #0x0]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x14]
|
|
add r2, sp, #0x22c
|
|
bl longlong2str
|
|
movs r7, r0
|
|
beq _020E148C
|
|
b _020E10F0
|
|
_020E10CC:
|
|
sub r4, sp, #0x8
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
add r1, sp, #0x22c
|
|
mov r0, r5
|
|
ldmia r4, {r2-r3}
|
|
bl long2str
|
|
movs r7, r0
|
|
beq _020E148C
|
|
_020E10F0:
|
|
add r0, sp, #0x200
|
|
add r0, r0, #0x2b
|
|
sub r6, r0, r7
|
|
b _020E14D8
|
|
_020E1100:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x3
|
|
bne _020E1120
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E11B8
|
|
_020E1120:
|
|
cmp r0, #0x4
|
|
bne _020E1148
|
|
ldr r1, [sp, #0x25c]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x25c]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E11B8
|
|
_020E1148:
|
|
cmp r0, #0x6
|
|
bne _020E1170
|
|
ldr r1, [sp, #0x25c]
|
|
add r2, r1, #0x8
|
|
str r2, [sp, #0x25c]
|
|
ldr r1, [r2, #-0x8]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r2, #-0x4]
|
|
str r1, [sp, #0x14]
|
|
b _020E11B8
|
|
_020E1170:
|
|
cmp r0, #0x7
|
|
bne _020E118C
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E11B8
|
|
_020E118C:
|
|
cmp r0, #0x8
|
|
bne _020E11A8
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
b _020E11B8
|
|
_020E11A8:
|
|
ldr r1, [sp, #0x25c]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r5, [r1, #-0x4]
|
|
_020E11B8:
|
|
cmp r0, #0x2
|
|
moveq r1, r5, lsl #0x10
|
|
moveq r5, r1, lsr #0x10
|
|
cmp r0, #0x1
|
|
andeq r5, r5, #0xff
|
|
cmp r0, #0x4
|
|
cmpne r0, #0x6
|
|
add r0, sp, #0x1c
|
|
bne _020E1208
|
|
sub r4, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
ldr r3, [r4, #0x0]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x14]
|
|
add r2, sp, #0x22c
|
|
bl longlong2str
|
|
movs r7, r0
|
|
beq _020E148C
|
|
b _020E122C
|
|
_020E1208:
|
|
sub r4, sp, #0x8
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
add r1, sp, #0x22c
|
|
mov r0, r5
|
|
ldmia r4, {r2-r3}
|
|
bl long2str
|
|
movs r7, r0
|
|
beq _020E148C
|
|
_020E122C:
|
|
add r0, sp, #0x200
|
|
add r0, r0, #0x2b
|
|
sub r6, r0, r7
|
|
b _020E14D8
|
|
_020E123C:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x9
|
|
ldrne r0, [sp, #0x25c]
|
|
addne r0, r0, #0x8
|
|
strne r0, [sp, #0x25c]
|
|
bne _020E1260
|
|
ldr r0, [sp, #0x25c]
|
|
add r0, r0, #0x8
|
|
str r0, [sp, #0x25c]
|
|
_020E1260:
|
|
ldr r7, [r0, #-0x8]
|
|
ldr r6, [r0, #-0x4]
|
|
add r0, sp, #0x1c
|
|
sub r4, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
ldr r3, [r4, #0x0]
|
|
mov r0, r7
|
|
mov r1, r6
|
|
add r2, sp, #0x22c
|
|
bl float2str
|
|
movs r7, r0
|
|
beq _020E148C
|
|
add r0, sp, #0x200
|
|
add r0, r0, #0x2b
|
|
sub r6, r0, r7
|
|
b _020E14D8
|
|
_020E12A4:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x9
|
|
ldrne r0, [sp, #0x25c]
|
|
addne r0, r0, #0x8
|
|
strne r0, [sp, #0x25c]
|
|
bne _020E12C8
|
|
ldr r0, [sp, #0x25c]
|
|
add r0, r0, #0x8
|
|
str r0, [sp, #0x25c]
|
|
_020E12C8:
|
|
ldr r7, [r0, #-0x8]
|
|
ldr r6, [r0, #-0x4]
|
|
add r0, sp, #0x1c
|
|
sub r4, sp, #0x4
|
|
ldmia r0, {r0-r3}
|
|
stmia r4, {r0-r3}
|
|
ldr r3, [r4, #0x0]
|
|
mov r0, r7
|
|
mov r1, r6
|
|
add r2, sp, #0x22c
|
|
bl double2hex
|
|
movs r7, r0
|
|
beq _020E148C
|
|
add r0, sp, #0x200
|
|
add r0, r0, #0x2b
|
|
sub r6, r0, r7
|
|
b _020E14D8
|
|
_020E130C:
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0x5
|
|
bne _020E134C
|
|
ldr r0, [sp, #0x25c]
|
|
mov r2, #0x200
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x25c]
|
|
ldr r1, [r0, #-0x4]
|
|
add r0, sp, #0x2c
|
|
cmp r1, #0x0
|
|
ldreq r1, _020E163C ; =UNK_02106DD8
|
|
bl wcstombs
|
|
cmp r0, #0x0
|
|
blt _020E148C
|
|
add r7, sp, #0x2c
|
|
b _020E135C
|
|
_020E134C:
|
|
ldr r0, [sp, #0x25c]
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x25c]
|
|
ldr r7, [r0, #-0x4]
|
|
_020E135C:
|
|
ldrb r0, [sp, #0x1f]
|
|
cmp r7, #0x0
|
|
ldreq r7, _020E1640 ; =UNK_02106DDC
|
|
cmp r0, #0x0
|
|
beq _020E1390
|
|
ldrb r0, [sp, #0x1e]
|
|
ldrb r6, [r7], #0x1
|
|
cmp r0, #0x0
|
|
beq _020E14D8
|
|
ldr r0, [sp, #0x28]
|
|
cmp r6, r0
|
|
movgt r6, r0
|
|
b _020E14D8
|
|
_020E1390:
|
|
ldrb r0, [sp, #0x1e]
|
|
cmp r0, #0x0
|
|
beq _020E13BC
|
|
ldr r6, [sp, #0x28]
|
|
mov r0, r7
|
|
mov r2, r6
|
|
mov r1, #0x0
|
|
bl memchr
|
|
cmp r0, #0x0
|
|
subne r6, r0, r7
|
|
b _020E14D8
|
|
_020E13BC:
|
|
mov r0, r7
|
|
bl strlen
|
|
mov r6, r0
|
|
b _020E14D8
|
|
_020E13CC:
|
|
ldr r1, [sp, #0x25c]
|
|
ldrb r0, [sp, #0x20]
|
|
add r1, r1, #0x4
|
|
str r1, [sp, #0x25c]
|
|
ldr r1, [r1, #-0x4]
|
|
cmp r0, #0x8
|
|
addls pc, pc, r0, lsl #0x2
|
|
b _020E161C
|
|
b _020E1410 ; case 0
|
|
b _020E161C ; case 1
|
|
b _020E1418 ; case 2
|
|
b _020E1420 ; case 3
|
|
b _020E1448 ; case 4
|
|
b _020E161C ; case 5
|
|
b _020E1428 ; case 6
|
|
b _020E1438 ; case 7
|
|
b _020E1440 ; case 8
|
|
_020E1410:
|
|
str r10, [r1, #0x0]
|
|
b _020E161C
|
|
_020E1418:
|
|
strh r10, [r1, #0x0]
|
|
b _020E161C
|
|
_020E1420:
|
|
str r10, [r1, #0x0]
|
|
b _020E161C
|
|
_020E1428:
|
|
str r10, [r1, #0x0]
|
|
mov r0, r10, asr #0x1f
|
|
str r0, [r1, #0x4]
|
|
b _020E161C
|
|
_020E1438:
|
|
str r10, [r1, #0x0]
|
|
b _020E161C
|
|
_020E1440:
|
|
str r10, [r1, #0x0]
|
|
b _020E161C
|
|
_020E1448:
|
|
str r10, [r1, #0x0]
|
|
mov r0, r10, asr #0x1f
|
|
str r0, [r1, #0x4]
|
|
b _020E161C
|
|
_020E1458:
|
|
ldr r0, [sp, #0x25c]
|
|
add r7, sp, #0x2c
|
|
add r0, r0, #0x4
|
|
str r0, [sp, #0x25c]
|
|
ldr r0, [r0, #-0x4]
|
|
mov r6, #0x1
|
|
strb r0, [sp, #0x2c]
|
|
b _020E14D8
|
|
_020E1478:
|
|
mov r0, #0x25
|
|
strb r0, [sp, #0x2c]
|
|
add r7, sp, #0x2c
|
|
mov r6, #0x1
|
|
b _020E14D8
|
|
_020E148C:
|
|
ldr r0, [sp, #0xc]
|
|
bl strlen
|
|
movs r4, r0
|
|
beq _020E14C4
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, r8
|
|
mov r2, r4
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E14C4:
|
|
add sp, sp, #0x22c
|
|
add r0, r10, r4
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
_020E14D8:
|
|
ldrb r0, [sp, #0x1c]
|
|
mov r4, r6
|
|
cmp r0, #0x0
|
|
beq _020E158C
|
|
cmp r0, #0x2
|
|
moveq r0, #0x30
|
|
movne r0, #0x20
|
|
strb r0, [sp, #0x19]
|
|
ldrsb r0, [r7, #0x0]
|
|
cmp r0, #0x2b
|
|
cmpne r0, #0x2d
|
|
cmpne r0, #0x20
|
|
bne _020E1548
|
|
ldrsb r0, [sp, #0x19]
|
|
cmp r0, #0x30
|
|
bne _020E1548
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x1
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
add r7, r7, #0x1
|
|
sub r6, r6, #0x1
|
|
_020E1548:
|
|
ldr r0, [sp, #0x24]
|
|
cmp r4, r0
|
|
bge _020E158C
|
|
_020E1554:
|
|
mov r0, r8
|
|
add r1, sp, #0x19
|
|
mov r2, #0x1
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
ldr r0, [sp, #0x24]
|
|
add r4, r4, #0x1
|
|
cmp r4, r0
|
|
blt _020E1554
|
|
_020E158C:
|
|
cmp r6, #0x0
|
|
beq _020E15BC
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, r6
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
_020E15BC:
|
|
ldrb r0, [sp, #0x1c]
|
|
cmp r0, #0x0
|
|
bne _020E1618
|
|
ldr r0, [sp, #0x24]
|
|
cmp r4, r0
|
|
bge _020E1618
|
|
mov r6, #0x20
|
|
add r7, sp, #0x18
|
|
_020E15DC:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x1
|
|
strb r6, [sp, #0x18]
|
|
blx r9
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x22c
|
|
mvneq r0, #0x0
|
|
ldmeqia sp!, {r4-r11,lr}
|
|
addeq sp, sp, #0x10
|
|
bxeq lr
|
|
ldr r0, [sp, #0x24]
|
|
add r4, r4, #0x1
|
|
cmp r4, r0
|
|
blt _020E15DC
|
|
_020E1618:
|
|
add r10, r10, r4
|
|
_020E161C:
|
|
ldrsb r0, [r11, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020E0E50
|
|
_020E1628:
|
|
mov r0, r10
|
|
add sp, sp, #0x22c
|
|
ldmia sp!, {r4-r11,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E163C: .word UNK_02106DD8
|
|
_020E1640: .word UNK_02106DDC
|
|
arm_func_end __pformatter
|
|
|
|
arm_func_start __FileWrite
|
|
__FileWrite: ; 0x020E1644
|
|
stmdb sp!, {r3-r5,lr}
|
|
mov r5, r0
|
|
mov r0, r1
|
|
mov r3, r5
|
|
mov r1, #0x1
|
|
mov r4, r2
|
|
bl __fwrite
|
|
cmp r4, r0
|
|
movne r5, #0x0
|
|
mov r0, r5
|
|
ldmia sp!, {r3-r5,pc}
|
|
arm_func_end __FileWrite
|
|
|
|
arm_func_start __StringWrite
|
|
__StringWrite: ; 0x020E1670
|
|
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
|
|
bl memcpy
|
|
ldr r1, [r4, #0x8]
|
|
mov r0, #0x1
|
|
add r1, r1, r5
|
|
str r1, [r4, #0x8]
|
|
ldmia sp!, {r3-r5,pc}
|
|
arm_func_end __StringWrite
|
|
|
|
arm_func_start printf
|
|
printf: ; 0x020E16B4
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r4,lr}
|
|
ldr r0, _020E17B4 ; =__files + 0x4C
|
|
mvn r1, #0x0
|
|
bl fwide
|
|
cmp r0, #0x0
|
|
mvnge r0, #0x0
|
|
ldmgeia sp!, {r4,lr}
|
|
addge sp, sp, #0x10
|
|
bxge lr
|
|
ldr r0, _020E17B8 ; =__cs + 0x48
|
|
bl OS_TryLockMutex
|
|
cmp r0, #0x0
|
|
bne _020E1710
|
|
ldr r0, _020E17BC ; =OSi_ThreadInfo
|
|
ldr r1, _020E17C0 ; =__cs_id
|
|
ldr r2, [r0, #0x4]
|
|
ldr r0, _020E17C4 ; =__cs_ref
|
|
ldr r3, [r2, #0x6c]
|
|
mov r2, #0x1
|
|
str r3, [r1, #0xc]
|
|
str r2, [r0, #0xc]
|
|
b _020E1768
|
|
_020E1710:
|
|
ldr r0, _020E17BC ; =OSi_ThreadInfo
|
|
ldr r1, _020E17C0 ; =__cs_id
|
|
ldr r0, [r0, #0x4]
|
|
ldr r1, [r1, #0xc]
|
|
ldr r0, [r0, #0x6c]
|
|
cmp r1, r0
|
|
bne _020E1740
|
|
ldr r0, _020E17C4 ; =__cs_ref
|
|
ldr r1, [r0, #0xc]
|
|
add r1, r1, #0x1
|
|
str r1, [r0, #0xc]
|
|
b _020E1768
|
|
_020E1740:
|
|
ldr r0, _020E17B8 ; =__cs + 0x48
|
|
bl OS_LockMutex
|
|
ldr r0, _020E17BC ; =OSi_ThreadInfo
|
|
ldr r1, _020E17C0 ; =__cs_id
|
|
ldr r2, [r0, #0x4]
|
|
ldr r0, _020E17C4 ; =__cs_ref
|
|
ldr r3, [r2, #0x6c]
|
|
mov r2, #0x1
|
|
str r3, [r1, #0xc]
|
|
str r2, [r0, #0xc]
|
|
_020E1768:
|
|
add r0, sp, #0x8
|
|
bic r3, r0, #0x3
|
|
ldr r2, [sp, #0x8]
|
|
ldr r0, _020E17C8 ; =__FileWrite
|
|
ldr r1, _020E17B4 ; =__files + 0x4C
|
|
add r3, r3, #0x4
|
|
bl __pformatter
|
|
ldr r1, _020E17C4 ; =__cs_ref
|
|
mov r4, r0
|
|
ldr r0, [r1, #0xc]
|
|
subs r0, r0, #0x1
|
|
str r0, [r1, #0xc]
|
|
bne _020E17A4
|
|
ldr r0, _020E17B8 ; =__cs + 0x48
|
|
bl OS_UnlockMutex
|
|
_020E17A4:
|
|
mov r0, r4
|
|
ldmia sp!, {r4,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.balign 4
|
|
_020E17B4: .word __files + 0x4C
|
|
_020E17B8: .word __cs + 0x48
|
|
_020E17BC: .word OSi_ThreadInfo
|
|
_020E17C0: .word __cs_id
|
|
_020E17C4: .word __cs_ref
|
|
_020E17C8: .word __FileWrite
|
|
arm_func_end printf
|
|
|
|
arm_func_start vsnprintf
|
|
vsnprintf: ; 0x020E17CC
|
|
stmdb sp!, {r4-r5,lr}
|
|
sub sp, sp, #0xc
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r12, #0x0
|
|
ldr r0, _020E1830 ; =__StringWrite
|
|
add r1, sp, #0x0
|
|
str r5, [sp, #0x0]
|
|
str r4, [sp, #0x4]
|
|
str r12, [sp, #0x8]
|
|
bl __pformatter
|
|
cmp r5, #0x0
|
|
addeq sp, sp, #0xc
|
|
ldmeqia sp!, {r4-r5,pc}
|
|
cmp r0, r4
|
|
movcc r1, #0x0
|
|
addcc sp, sp, #0xc
|
|
strccb r1, [r5, r0]
|
|
ldmccia sp!, {r4-r5,pc}
|
|
cmp r4, #0x0
|
|
addne r1, r5, r4
|
|
movne r2, #0x0
|
|
strneb r2, [r1, #-0x1]
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4-r5,pc}
|
|
.balign 4
|
|
_020E1830: .word __StringWrite
|
|
arm_func_end vsnprintf
|
|
|
|
arm_func_start snprintf
|
|
snprintf: ; 0x020E1834
|
|
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 vsnprintf
|
|
ldmia sp!, {r3,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end snprintf
|
|
|
|
arm_func_start sprintf
|
|
sprintf: ; 0x020E185C
|
|
stmdb sp!, {r0-r3}
|
|
stmdb sp!, {r3,lr}
|
|
add r1, sp, #0xc
|
|
bic r1, r1, #0x3
|
|
add r3, r1, #0x4
|
|
ldr r2, [sp, #0xc]
|
|
mvn r1, #0x0
|
|
bl vsnprintf
|
|
ldmia sp!, {r3,lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end sprintf
|
|
|
|
exception long2str, 589, 0x0090FF20
|
|
exception longlong2str, 737, 0x00A0FF20
|
|
exception double2hex, 1245, 0x00F07F20
|
|
exception float2str, 1893, 0x00C0FF20
|
|
exception __pformatter, 2084, UNK_020EC710
|
|
exception __FileWrite, 45, 0x00200300
|
|
exception __StringWrite, 69, 0x00200300
|
|
exception printf, 281, 0x00300120
|
|
exception vsnprintf, 105, 0x00300300
|
|
exception snprintf, 41, 0x00300020
|
|
exception sprintf, 45, 0x00300020
|
|
|
|
.section .exception,8
|
|
|
|
UNK_020EC710: ; 0x020EC710
|
|
.byte 0x20, 0xFF, 0x09, 0x60
|
|
.balign 8
|