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

1610 lines
28 KiB
ArmAsm

.include "global.inc"
.include "asm/macros.inc"
.data
.global UNK_02106E48
UNK_02106E48: ; 0x02106E48
.word 0x00000000, 0x40240000
.word 0x00000000, 0x40590000
.word 0x00000000, 0x408F4000
.word 0x00000000, 0x40C38800
.word 0x00000000, 0x40F86A00
.word 0x00000000, 0x412E8480
.word 0x00000000, 0x416312D0
.word 0x00000000, 0x4197D784
.global UNK_02106E88
UNK_02106E88: ; 0x02106E88
.asciz "542101086242752217003726400434970855712890625"
.balign 4, 0
.global UNK_02106EB8
UNK_02106EB8: ; 0x02106EB8
.asciz "11102230246251565404236316680908203125"
.balign 4, 0
.global UNK_02106EE0
UNK_02106EE0: ; 0x02106EE0
.asciz "23283064365386962890625"
.balign 4, 0
.global UNK_02106EF8
UNK_02106EF8: ; 0x02106EF8
.asciz "152587890625"
.balign 4, 0
.global UNK_02106F08
UNK_02106F08: ; 0x02106F08
.asciz "390625"
.balign 4, 0
.global UNK_02106F10
UNK_02106F10: ; 0x02106F10
.asciz "78125"
.balign 4, 0
.global UNK_02106F18
UNK_02106F18: ; 0x02106F18
.asciz "15625"
.balign 4, 0
.global UNK_02106F20
UNK_02106F20: ; 0x02106F20
.asciz "3125"
.balign 4, 0
.global UNK_02106F28
UNK_02106F28: ; 0x02106F28
.asciz "625"
.balign 4, 0
.global UNK_02106F2C
UNK_02106F2C: ; 0x02106F2C
.asciz "125"
.balign 4, 0
.global UNK_02106F30
UNK_02106F30: ; 0x02106F30
.asciz "25"
.balign 4, 0
.global UNK_02106F34
UNK_02106F34: ; 0x02106F34
.asciz "5"
.balign 4, 0
.global UNK_02106F38
UNK_02106F38: ; 0x02106F38
.asciz "1"
.balign 4, 0
.global UNK_02106F3C
UNK_02106F3C: ; 0x02106F3C
.asciz "2"
.balign 4, 0
.global UNK_02106F40
UNK_02106F40: ; 0x02106F40
.asciz "4"
.balign 4, 0
.global UNK_02106F44
UNK_02106F44: ; 0x02106F44
.asciz "8"
.balign 4, 0
.global UNK_02106F48
UNK_02106F48: ; 0x02106F48
.asciz "16"
.balign 4, 0
.global UNK_02106F4C
UNK_02106F4C: ; 0x02106F4C
.asciz "32"
.balign 4, 0
.global UNK_02106F50
UNK_02106F50: ; 0x02106F50
.asciz "64"
.balign 4, 0
.global UNK_02106F54
UNK_02106F54: ; 0x02106F54
.asciz "128"
.balign 4, 0
.global UNK_02106F58
UNK_02106F58: ; 0x02106F58
.asciz "256"
.balign 4, 0
.global UNK_02106F5C
UNK_02106F5C: ; 0x02106F5C
.asciz "179769313486231580793728714053034151"
.text
arm_func_start __must_round
__must_round: ; 0x020E8570
add r3, r0, #0x5
ldrb r2, [r3, r1]
add r12, r3, r1
cmp r2, #0x5
movhi r0, #0x1
bxhi lr
mvncc r0, #0x0
bxcc lr
ldrb r2, [r0, #0x4]
add r12, r12, #0x1
add r3, r3, r2
cmp r12, r3
bhs _020E85C0
_020E85A4:
ldrb r2, [r12, #0x0]
cmp r2, #0x0
movne r0, #0x1
bxne lr
add r12, r12, #0x1
cmp r12, r3
blo _020E85A4
_020E85C0:
sub r1, r1, #0x1
add r0, r0, r1
ldrb r0, [r0, #0x5]
tst r0, #0x1
movne r0, #0x1
mvneq r0, #0x0
bx lr
arm_func_end __must_round
arm_func_start __dorounddecup
__dorounddecup: ; 0x020E85DC
add r3, r0, #0x5
add r1, r3, r1
sub r12, r1, #0x1
mov r1, #0x0
_020E85EC:
ldrb r2, [r12, #0x0]
cmp r2, #0x9
addcc r0, r2, #0x1
strccb r0, [r12, #0x0]
bxcc lr
cmp r12, r3
bne _020E8620
mov r1, #0x1
strb r1, [r12, #0x0]
ldrsh r1, [r0, #0x2]
add r1, r1, #0x1
strh r1, [r0, #0x2]
bx lr
_020E8620:
strb r1, [r12], #-0x1
b _020E85EC
bx lr
arm_func_end __dorounddecup
arm_func_start __rounddec
__rounddec: ; 0x020E862C
stmdb sp!, {r3-r5,lr}
mov r4, r1
mov r5, r0
cmp r4, #0x0
ldmleia sp!, {r3-r5,pc}
ldrb r2, [r5, #0x4]
cmp r4, r2
ldmgeia sp!, {r3-r5,pc}
bl __must_round
strb r4, [r5, #0x4]
cmp r0, #0x0
ldmltia sp!, {r3-r5,pc}
mov r0, r5
mov r1, r4
bl __dorounddecup
ldmia sp!, {r3-r5,pc}
arm_func_end __rounddec
arm_func_start __ull2dec
__ull2dec: ; 0x020E866C
stmdb sp!, {r3-r11,lr}
mov r10, r0
mov r0, #0x0
mov r8, r2
strb r0, [r10, #0x0]
mov r9, r1
cmp r8, #0x0
strb r0, [r10, #0x4]
cmpeq r9, #0x0
beq _020E86F8
mov r6, #0xa
mov r11, r0
mov r5, r0
mov r4, r0
_020E86A4:
ldrb r1, [r10, #0x4]
mov r0, r9
mov r2, r6
add r3, r1, #0x1
mov r7, r1
strb r3, [r10, #0x4]
mov r1, r8
mov r3, r11
bl _ull_mod
add r1, r10, r7
strb r0, [r1, #0x5]
mov r0, r9
mov r1, r8
mov r2, #0xa
mov r3, #0x0
bl _ll_udiv
mov r8, r1
mov r9, r0
cmp r8, r5
cmpeq r9, r4
bne _020E86A4
_020E86F8:
ldrb r0, [r10, #0x4]
add r2, r10, #0x5
add r0, r2, r0
sub r3, r0, #0x1
cmp r2, r3
bhs _020E8728
_020E8710:
ldrb r0, [r3, #0x0]
ldrb r1, [r2, #0x0]
strb r0, [r2], #0x1
strb r1, [r3], #-0x1
cmp r2, r3
blo _020E8710
_020E8728:
ldrb r0, [r10, #0x4]
sub r0, r0, #0x1
strh r0, [r10, #0x2]
ldmia sp!, {r3-r11,pc}
arm_func_end __ull2dec
arm_func_start __timesdec
__timesdec: ; 0x020E8738
stmdb sp!, {r3-r11,lr}
sub sp, sp, #0x40
ldrb r6, [r1, #0x4]
ldrb r5, [r2, #0x4]
mov r4, #0x0
add r3, sp, #0x0
add r5, r6, r5
sub r5, r5, #0x1
add r3, r3, r5
add r6, r3, #0x1
mov r7, r6
strb r4, [r0, #0x0]
cmp r5, #0x0
ble _020E8800
add lr, r1, #0x5
add r11, r2, #0x5
_020E8778:
ldrb r3, [r2, #0x4]
sub r10, r3, #0x1
sub r3, r5, r10
subs r9, r3, #0x1
ldrb r3, [r1, #0x4]
movmi r9, #0x0
submi r10, r5, #0x1
add r8, r10, #0x1
sub r3, r3, r9
cmp r8, r3
movgt r8, r3
add r10, r11, r10
add r9, lr, r9
cmp r8, #0x0
ble _020E87CC
_020E87B4:
ldrb r12, [r9], #0x1
ldrb r3, [r10], #-0x1
sub r8, r8, #0x1
cmp r8, #0x0
mla r4, r12, r3, r4
bgt _020E87B4
_020E87CC:
ldr r3, _020E88B8 ; =0xCCCCCCCD
sub r5, r5, #0x1
umull r8, r9, r4, r3
mov r9, r9, lsr #0x3
cmp r5, #0x0
mov r10, #0xa
umull r8, r9, r10, r9
sub r9, r4, r8
strb r9, [r6, #-0x1]!
mov r8, r4
umull r3, r4, r8, r3
mov r4, r4, lsr #0x3
bgt _020E8778
_020E8800:
ldrsh r3, [r1, #0x2]
ldrsh r1, [r2, #0x2]
cmp r4, #0x0
add r1, r3, r1
strh r1, [r0, #0x2]
beq _020E8828
strb r4, [r6, #-0x1]!
ldrsh r1, [r0, #0x2]
add r1, r1, #0x1
strh r1, [r0, #0x2]
_020E8828:
mov r3, #0x0
b _020E8840
_020E8830:
ldrb r2, [r6], #0x1
add r1, r0, r3
add r3, r3, #0x1
strb r2, [r1, #0x5]
_020E8840:
cmp r3, #0x20
bge _020E8850
cmp r6, r7
blo _020E8830
_020E8850:
cmp r6, r7
addcs sp, sp, #0x40
strb r3, [r0, #0x4]
ldmcsia sp!, {r3-r11,pc}
ldrb r1, [r6, #0x0]
cmp r1, #0x5
addcc sp, sp, #0x40
ldmccia sp!, {r3-r11,pc}
bne _020E88A8
add r2, r6, #0x1
cmp r2, r7
bhs _020E8898
_020E8880:
ldrb r1, [r2, #0x0]
cmp r1, #0x0
bne _020E88A8
add r2, r2, #0x1
cmp r2, r7
blo _020E8880
_020E8898:
ldrb r1, [r6, #-0x1]
tst r1, #0x1
addeq sp, sp, #0x40
ldmeqia sp!, {r3-r11,pc}
_020E88A8:
ldrb r1, [r0, #0x4]
bl __dorounddecup
add sp, sp, #0x40
ldmia sp!, {r3-r11,pc}
.balign 4
_020E88B8: .word 0xCCCCCCCD
arm_func_end __timesdec
arm_func_start __str2dec
__str2dec: ; 0x020E88BC
stmdb sp!, {r3,lr}
strh r2, [r0, #0x2]
mov r12, #0x0
strb r12, [r0, #0x0]
b _020E88E4
_020E88D0:
ldrsb r3, [r1], #0x1
add r2, r0, r12
add r12, r12, #0x1
sub r3, r3, #0x30
strb r3, [r2, #0x5]
_020E88E4:
cmp r12, #0x20
bge _020E88F8
ldrsb r2, [r1, #0x0]
cmp r2, #0x0
bne _020E88D0
_020E88F8:
strb r12, [r0, #0x4]
ldrsb r2, [r1, #0x0]
cmp r2, #0x0
ldmeqia sp!, {r3,pc}
cmp r2, #0x5
ldmltia sp!, {r3,pc}
bgt _020E894C
ldrsb r2, [r1, #0x1]
add r1, r1, #0x1
cmp r2, #0x0
beq _020E8938
_020E8924:
cmp r2, #0x30
bne _020E894C
ldrsb r2, [r1, #0x1]!
cmp r2, #0x0
bne _020E8924
_020E8938:
sub r1, r12, #0x1
add r1, r0, r1
ldrb r1, [r1, #0x5]
tst r1, #0x1
ldmeqia sp!, {r3,pc}
_020E894C:
ldrb r1, [r0, #0x4]
bl __dorounddecup
ldmia sp!, {r3,pc}
arm_func_end __str2dec
arm_func_start __two_exp
__two_exp: ; 0x020E8958
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4c
mov r4, r1
mvn r2, #0x34
mov r5, r0
cmp r4, r2
bgt _020E8988
bge _020E8A54
sub r0, r2, #0xb
cmp r4, r0
beq _020E8A3C
b _020E8BE4
_020E8988:
add r1, r4, #0x20
cmp r1, #0x28
addls pc, pc, r1, lsl #0x2
b _020E8BE4
b _020E8A68 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8A7C ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8BE4 ; case
b _020E8A90 ; case
b _020E8AA4 ; case
b _020E8AB8 ; case
b _020E8ACC ; case
b _020E8AE0 ; case
b _020E8AF4 ; case
b _020E8B08 ; case
b _020E8B1C ; case
b _020E8B30 ; case
b _020E8B44 ; case
b _020E8B58 ; case
b _020E8B6C ; case
b _020E8B80 ; case
b _020E8B94 ; case
b _020E8BA8 ; case
b _020E8BBC ; case
b _020E8BD0 ; case
_020E8A3C:
ldr r1, _020E8C88 ; =UNK_02106E88
mov r0, r5
mvn r2, #0x13
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8A54:
ldr r1, _020E8C8C ; =UNK_02106EB8
add r2, r2, #0x25
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8A68:
ldr r1, _020E8C90 ; =UNK_02106EE0
add r2, r2, #0x2b
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8A7C:
ldr r1, _020E8C94 ; =UNK_02106EF8
add r2, r2, #0x30
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8A90:
ldr r1, _020E8C98 ; =UNK_02106F08
add r2, r2, #0x32
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8AA4:
ldr r1, _020E8C9C ; =UNK_02106F10
add r2, r2, #0x32
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8AB8:
ldr r1, _020E8CA0 ; =UNK_02106F18
add r2, r2, #0x33
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8ACC:
ldr r1, _020E8CA4 ; =UNK_02106F20
add r2, r2, #0x33
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8AE0:
ldr r1, _020E8CA8 ; =UNK_02106F28
add r2, r2, #0x33
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8AF4:
ldr r1, _020E8CAC ; =UNK_02106F2C
add r2, r2, #0x34
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B08:
ldr r1, _020E8CB0 ; =UNK_02106F30
add r2, r2, #0x34
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B1C:
ldr r1, _020E8CB4 ; =UNK_02106F34
add r2, r2, #0x34
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B30:
ldr r1, _020E8CB8 ; =UNK_02106F38
mov r2, #0x0
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B44:
ldr r1, _020E8CBC ; =UNK_02106F3C
mov r2, #0x0
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B58:
ldr r1, _020E8CC0 ; =UNK_02106F40
mov r2, #0x0
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B6C:
ldr r1, _020E8CC4 ; =UNK_02106F44
mov r2, #0x0
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B80:
ldr r1, _020E8CC8 ; =UNK_02106F48
mov r2, #0x1
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8B94:
ldr r1, _020E8CCC ; =UNK_02106F4C
mov r2, #0x1
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8BA8:
ldr r1, _020E8CD0 ; =UNK_02106F50
mov r2, #0x1
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8BBC:
ldr r1, _020E8CD4 ; =UNK_02106F54
mov r2, #0x2
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8BD0:
ldr r1, _020E8CD8 ; =UNK_02106F58
mov r2, #0x2
bl __str2dec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
_020E8BE4:
and r0, r4, #0x80000000
add r1, r4, r0, lsr #0x1f
add r0, sp, #0x26
mov r1, r1, asr #0x1
bl __two_exp
add r1, sp, #0x26
mov r0, r5
mov r2, r1
bl __timesdec
tst r4, #0x1
addeq sp, sp, #0x4c
ldmeqia sp!, {r4-r5,pc}
add r3, sp, #0x0
mov r12, r5
mov r2, #0x9
_020E8C20:
ldrh r1, [r12, #0x0]
ldrh r0, [r12, #0x2]
add r12, r12, #0x4
subs r2, r2, #0x1
strh r1, [r3, #0x0]
strh r0, [r3, #0x2]
add r3, r3, #0x4
bne _020E8C20
ldrh r0, [r12, #0x0]
cmp r4, #0x0
strh r0, [r3, #0x0]
add r0, sp, #0x26
ble _020E8C64
ldr r1, _020E8CBC ; =UNK_02106F3C
mov r2, #0x0
bl __str2dec
b _020E8C70
_020E8C64:
ldr r1, _020E8CB4 ; =UNK_02106F34
mvn r2, #0x0
bl __str2dec
_020E8C70:
add r1, sp, #0x0
add r2, sp, #0x26
mov r0, r5
bl __timesdec
add sp, sp, #0x4c
ldmia sp!, {r4-r5,pc}
.balign 4
_020E8C88: .word UNK_02106E88
_020E8C8C: .word UNK_02106EB8
_020E8C90: .word UNK_02106EE0
_020E8C94: .word UNK_02106EF8
_020E8C98: .word UNK_02106F08
_020E8C9C: .word UNK_02106F10
_020E8CA0: .word UNK_02106F18
_020E8CA4: .word UNK_02106F20
_020E8CA8: .word UNK_02106F28
_020E8CAC: .word UNK_02106F2C
_020E8CB0: .word UNK_02106F30
_020E8CB4: .word UNK_02106F34
_020E8CB8: .word UNK_02106F38
_020E8CBC: .word UNK_02106F3C
_020E8CC0: .word UNK_02106F40
_020E8CC4: .word UNK_02106F44
_020E8CC8: .word UNK_02106F48
_020E8CCC: .word UNK_02106F4C
_020E8CD0: .word UNK_02106F50
_020E8CD4: .word UNK_02106F54
_020E8CD8: .word UNK_02106F58
arm_func_end __two_exp
arm_func_start __equals_dec
__equals_dec:
stmdb sp!, {r4,lr}
ldrb r3, [r0, #0x5]
cmp r3, #0x0
bne _020E8D00
ldrb r0, [r1, #0x5]
cmp r0, #0x0
moveq r0, #0x1
movne r0, #0x0
ldmia sp!, {r4,pc}
_020E8D00:
ldrb r2, [r1, #0x5]
cmp r2, #0x0
bne _020E8D1C
cmp r3, #0x0
moveq r0, #0x1
movne r0, #0x0
ldmia sp!, {r4,pc}
_020E8D1C:
ldrsh r3, [r0, #0x2]
ldrsh r2, [r1, #0x2]
cmp r3, r2
bne _020E8DB4
ldrb r4, [r0, #0x4]
ldrb r2, [r1, #0x4]
mov r12, #0x0
mov lr, r4
cmp r4, r2
movgt lr, r2
cmp lr, #0x0
ble _020E8D74
_020E8D4C:
add r3, r0, r12
add r2, r1, r12
ldrb r3, [r3, #0x5]
ldrb r2, [r2, #0x5]
cmp r3, r2
movne r0, #0x0
ldmneia sp!, {r4,pc}
add r12, r12, #0x1
cmp r12, lr
blt _020E8D4C
_020E8D74:
cmp lr, r4
moveq r0, r1
ldrb r1, [r0, #0x4]
cmp r12, r1
bge _020E8DAC
_020E8D88:
add r1, r0, r12
ldrb r1, [r1, #0x5]
cmp r1, #0x0
movne r0, #0x0
ldmneia sp!, {r4,pc}
ldrb r1, [r0, #0x4]
add r12, r12, #0x1
cmp r12, r1
blt _020E8D88
_020E8DAC:
mov r0, #0x1
ldmia sp!, {r4,pc}
_020E8DB4:
mov r0, #0x0
ldmia sp!, {r4,pc}
arm_func_end __equals_dec
arm_func_start __less_dec
__less_dec:
stmdb sp!, {r3-r5,lr}
ldrb r2, [r0, #0x5]
cmp r2, #0x0
bne _020E8DE0
ldrb r0, [r1, #0x5]
cmp r0, #0x0
movne r0, #0x1
moveq r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E8DE0:
ldrb r2, [r1, #0x5]
cmp r2, #0x0
moveq r0, #0x0
ldmeqia sp!, {r3-r5,pc}
ldrsh r3, [r1, #0x2]
ldrsh r2, [r0, #0x2]
cmp r2, r3
bne _020E8E90
ldrb r5, [r0, #0x4]
ldrb r4, [r1, #0x4]
mov r12, #0x0
mov lr, r5
cmp r5, r4
movgt lr, r4
cmp lr, #0x0
ble _020E8E54
_020E8E20:
add r3, r1, r12
add r2, r0, r12
ldrb r3, [r3, #0x5]
ldrb r2, [r2, #0x5]
cmp r2, r3
movcc r0, #0x1
ldmccia sp!, {r3-r5,pc}
cmp r3, r2
movcc r0, #0x0
ldmccia sp!, {r3-r5,pc}
add r12, r12, #0x1
cmp r12, lr
blt _020E8E20
_020E8E54:
cmp lr, r5
bne _020E8E88
cmp r12, r4
bge _020E8E88
_020E8E64:
add r0, r1, r12
ldrb r0, [r0, #0x5]
cmp r0, #0x0
movne r0, #0x1
ldmneia sp!, {r3-r5,pc}
ldrb r0, [r1, #0x4]
add r12, r12, #0x1
cmp r12, r0
blt _020E8E64
_020E8E88:
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E8E90:
movlt r0, #0x1
movge r0, #0x0
ldmia sp!, {r3-r5,pc}
arm_func_end __less_dec
arm_func_start __minus_dec
__minus_dec: ; 0x020E8E9C
stmdb sp!, {r3-r7,lr}
mov r6, r0
mov r5, #0x9
_020E8EA8:
ldrh r4, [r1, #0x0]
ldrh r3, [r1, #0x2]
add r1, r1, #0x4
subs r5, r5, #0x1
strh r4, [r6, #0x0]
strh r3, [r6, #0x2]
add r6, r6, #0x4
bne _020E8EA8
ldrh r1, [r1, #0x0]
strh r1, [r6, #0x0]
ldrb r1, [r2, #0x5]
cmp r1, #0x0
ldmeqia sp!, {r3-r7,pc}
ldrb r7, [r0, #0x4]
ldrb r3, [r2, #0x4]
ldrsh r4, [r0, #0x2]
mov r1, r7
cmp r7, r3
movlt r1, r3
ldrsh r3, [r2, #0x2]
sub r6, r4, r3
add r1, r1, r6
cmp r1, #0x20
movgt r1, #0x20
cmp r7, r1
bge _020E8F34
mov r4, #0x0
_020E8F14:
ldrb r5, [r0, #0x4]
add r3, r0, r7
add r5, r5, #0x1
strb r5, [r0, #0x4]
strb r4, [r3, #0x5]
ldrb r7, [r0, #0x4]
cmp r7, r1
blt _020E8F14
_020E8F34:
ldrb r4, [r2, #0x4]
add r3, r0, #0x5
add r12, r3, r1
add r4, r4, r6
cmp r4, r1
addlt r12, r3, r4
sub r4, r12, r3
add r1, r2, #0x5
sub r4, r4, r6
add lr, r1, r4
mov r4, lr
b _020E8FC8
_020E8F64:
ldrb r7, [r12, #-0x1]!
ldrb r5, [lr, #-0x1]!
cmp r7, r5
bhs _020E8FB8
ldrb r7, [r12, #-0x1]
sub r5, r12, #0x1
cmp r7, #0x0
bne _020E8F90
_020E8F84:
ldrb r7, [r5, #-0x1]!
cmp r7, #0x0
beq _020E8F84
_020E8F90:
cmp r5, r12
beq _020E8FB8
_020E8F98:
ldrb r7, [r5, #0x0]
sub r7, r7, #0x1
strb r7, [r5, #0x0]
ldrb r7, [r5, #0x1]!
cmp r5, r12
add r7, r7, #0xa
strb r7, [r5, #0x0]
bne _020E8F98
_020E8FB8:
ldrb r7, [r12, #0x0]
ldrb r5, [lr, #0x0]
sub r5, r7, r5
strb r5, [r12, #0x0]
_020E8FC8:
cmp r12, r3
cmphi lr, r1
bhi _020E8F64
ldrb r5, [r2, #0x4]
sub lr, r4, r1
cmp lr, r5
bge _020E90A4
ldrb r1, [r4, #0x0]
mov r7, #0x0
cmp r1, #0x5
movcc r7, #0x1
blo _020E9040
bne _020E9040
add r1, r2, #0x5
add r2, r1, r5
add r4, r4, #0x1
cmp r4, r2
bhs _020E9028
_020E9010:
ldrb r1, [r4, #0x0]
cmp r1, #0x0
bne _020E90A4
add r4, r4, #0x1
cmp r4, r2
blo _020E9010
_020E9028:
add r1, r3, lr
add r2, r1, r6
ldrb r1, [r2, #-0x1]
sub r12, r2, #0x1
tst r1, #0x1
movne r7, #0x1
_020E9040:
cmp r7, #0x0
beq _020E90A4
ldrb r1, [r12, #0x0]
cmp r1, #0x1
bhs _020E9098
ldrb r1, [r12, #-0x1]
sub r2, r12, #0x1
cmp r1, #0x0
bne _020E9070
_020E9064:
ldrb r1, [r2, #-0x1]!
cmp r1, #0x0
beq _020E9064
_020E9070:
cmp r2, r12
beq _020E9098
_020E9078:
ldrb r1, [r2, #0x0]
sub r1, r1, #0x1
strb r1, [r2, #0x0]
ldrb r1, [r2, #0x1]!
cmp r2, r12
add r1, r1, #0xa
strb r1, [r2, #0x0]
bne _020E9078
_020E9098:
ldrb r1, [r12, #0x0]
sub r1, r1, #0x1
strb r1, [r12, #0x0]
_020E90A4:
ldrb r1, [r3, #0x0]
mov r5, r3
cmp r1, #0x0
bne _020E90C0
_020E90B4:
ldrb r1, [r5, #0x1]!
cmp r1, #0x0
beq _020E90B4
_020E90C0:
cmp r5, r3
bls _020E9108
ldrsh r1, [r0, #0x2]
sub r2, r5, r3
and r4, r2, #0xff
sub r1, r1, r4
strh r1, [r0, #0x2]
ldrb r1, [r0, #0x4]
add r2, r3, r1
cmp r5, r2
bhs _020E90FC
_020E90EC:
ldrb r1, [r5], #0x1
cmp r5, r2
strb r1, [r3], #0x1
blo _020E90EC
_020E90FC:
ldrb r1, [r0, #0x4]
sub r1, r1, r4
strb r1, [r0, #0x4]
_020E9108:
ldrb r1, [r0, #0x4]
add r2, r0, #0x5
add r3, r2, r1
cmp r3, r2
bls _020E9130
_020E911C:
ldrb r1, [r3, #-0x1]!
cmp r1, #0x0
bne _020E9130
cmp r3, r2
bhi _020E911C
_020E9130:
sub r1, r3, r2
add r1, r1, #0x1
strb r1, [r0, #0x4]
ldmia sp!, {r3-r7,pc}
arm_func_end __minus_dec
arm_func_start __num2dec_internal
__num2dec_internal:
stmdb sp!, {r4-r8,lr}
sub sp, sp, #0x58
mov r8, r1
mov r6, r2
mov r7, r0
mov r0, r8
mov r1, r6
bl __signbitf
cmp r0, #0x0
movne r1, #0x1
moveq r1, #0x0
mov r4, r1, lsl #0x18
mov r0, #0x0
mov r1, r0
mov r2, r8
mov r3, r6
mov r5, r4, asr #0x18
bl _deq
bne _020E91AC
strb r5, [r7, #0x0]
mov r1, #0x0
strh r1, [r7, #0x2]
mov r0, #0x1
strb r0, [r7, #0x4]
add sp, sp, #0x58
strb r1, [r7, #0x5]
ldmia sp!, {r4-r8,pc}
_020E91AC:
mov r0, r8
mov r1, r6
bl __fpclassifyf
cmp r0, #0x2
bgt _020E91F8
strb r5, [r7, #0x0]
mov r2, #0x0
strh r2, [r7, #0x2]
mov r2, #0x1
mov r0, r8
mov r1, r6
strb r2, [r7, #0x4]
bl __fpclassifyf
cmp r0, #0x1
moveq r0, #0x4e
movne r0, #0x49
add sp, sp, #0x58
strb r0, [r7, #0x5]
ldmia sp!, {r4-r8,pc}
_020E91F8:
cmp r5, #0x0
beq _020E921C
mov r0, #0x0
mov r1, r0
mov r2, r8
mov r3, r6
bl _dsub
mov r8, r0
mov r6, r1
_020E921C:
add r2, sp, #0x8
mov r0, r8
mov r1, r6
bl frexp
mov r4, r0
mov r6, r1
orr r12, r4, #0x0
rsbs r2, r12, #0x0
orr r3, r6, #0x100000
rsc r1, r3, #0x0
mov r0, #0x0
and r3, r3, r1
sub r1, r0, #0x1
and r12, r12, r2
mov r2, r1
adds r0, r12, r1
adc r1, r3, r2
str r4, [sp, #0x0]
str r6, [sp, #0x4]
bl __msl_generic_count_bits64
rsb r8, r0, #0x35
ldr r1, [sp, #0x8]
add r0, sp, #0xc
sub r1, r1, r8
bl __two_exp
mov r0, r4
mov r1, r6
mov r2, r8
bl ldexp
bl _ll_ufrom_d
mov r2, r1
mov r1, r0
add r0, sp, #0x32
bl __ull2dec
mov r0, r7
add r1, sp, #0x32
add r2, sp, #0xc
bl __timesdec
strb r5, [r7, #0x0]
add sp, sp, #0x58
ldmia sp!, {r4-r8,pc}
arm_func_end __num2dec_internal
arm_func_start __num2dec_internal2
__num2dec_internal2: ; 0x020E92C0
stmdb sp!, {r3-r5,lr}
mov r4, r3
ldrsh r5, [r0, #0x2]
mov r0, r4
bl __num2dec_internal
ldrb r0, [r4, #0x5]
cmp r0, #0x9
ldmhiia sp!, {r3-r5,pc}
cmp r5, #0x20
movgt r5, #0x20
mov r0, r4
mov r1, r5
bl __rounddec
ldrb r0, [r4, #0x4]
cmp r0, r5
bge _020E9324
mov r1, #0x0
_020E9304:
ldrb r2, [r4, #0x4]
add r0, r4, r0
add r2, r2, #0x1
strb r2, [r4, #0x4]
strb r1, [r0, #0x5]
ldrb r0, [r4, #0x4]
cmp r0, r5
blt _020E9304
_020E9324:
ldrsh r1, [r4, #0x2]
sub r0, r0, #0x1
mov r2, #0x0
sub r0, r1, r0
strh r0, [r4, #0x2]
ldrb r0, [r4, #0x4]
cmp r0, #0x0
ldmleia sp!, {r3-r5,pc}
_020E9344:
add r1, r4, r2
ldrb r0, [r1, #0x5]
add r2, r2, #0x1
add r0, r0, #0x30
strb r0, [r1, #0x5]
ldrb r0, [r4, #0x4]
cmp r2, r0
blt _020E9344
ldmia sp!, {r3-r5,pc}
arm_func_end __num2dec_internal2
arm_func_start __dec2num
__dec2num: ; 0x020E9368
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0xfc
mov r4, r0
ldrb r0, [r4, #0x4]
cmp r0, #0x0
bne _020E93A8
ldrsb r0, [r4, #0x0]
mov r2, #0x0
cmp r0, #0x0
ldreq r3, _020E996C ; =0x3FF00000
mov r0, #0x0
ldrne r3, _020E9970 ; =0xBFF00000
mov r1, r0
bl copysign
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
_020E93A8:
ldrb r0, [r4, #0x5]
cmp r0, #0x30
beq _020E93C8
cmp r0, #0x49
beq _020E93F0
cmp r0, #0x4e
beq _020E9424
b _020E946C
_020E93C8:
ldrsb r0, [r4, #0x0]
mov r2, #0x0
cmp r0, #0x0
ldreq r3, _020E996C ; =0x3FF00000
mov r0, #0x0
ldrne r3, _020E9970 ; =0xBFF00000
mov r1, r0
bl copysign
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
_020E93F0:
ldrsb r0, [r4, #0x0]
mov r5, #0x0
cmp r0, #0x0
ldreq r4, _020E996C ; =0x3FF00000
ldr r0, _020E9974 ; =__float_huge
ldrne r4, _020E9970 ; =0xBFF00000
ldr r0, [r0, #0x0]
bl _f2d
mov r2, r5
mov r3, r4
bl copysign
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
_020E9424:
ldr r1, _020E9978 ; =0x7FF00000
add r3, sp, #0x10
mov r2, #0x0
str r2, [r3, #0x0]
str r1, [r3, #0x4]
ldrsb r0, [r4, #0x0]
cmp r0, #0x0
beq _020E9454
orr r0, r1, #0x80000000
orr r1, r2, r2
str r1, [r3, #0x0]
str r0, [r3, #0x4]
_020E9454:
ldmia r3, {r0-r1}
orr r0, r0, #0x0
orr r1, r1, #0x80000
stmia r3, {r0-r1}
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
_020E946C:
add r3, sp, #0xd6
mov r5, r4
mov r2, #0x9
_020E9478:
ldrh r1, [r5, #0x0]
ldrh r0, [r5, #0x2]
add r5, r5, #0x4
subs r2, r2, #0x1
strh r1, [r3, #0x0]
strh r0, [r3, #0x2]
add r3, r3, #0x4
bne _020E9478
ldrh r0, [r5, #0x0]
add r1, sp, #0xdb
strh r0, [r3, #0x0]
ldrb r0, [sp, #0xda]
add r5, r1, r0
cmp r1, r5
bhs _020E94C8
_020E94B4:
ldrb r0, [r1, #0x0]
sub r0, r0, #0x30
strb r0, [r1], #0x1
cmp r1, r5
blo _020E94B4
_020E94C8:
ldrb r1, [sp, #0xda]
ldrsh r2, [sp, #0xd8]
add r0, sp, #0xb0
sub r1, r1, #0x1
add r1, r2, r1
strh r1, [sp, #0xd8]
ldr r1, _020E997C ; =UNK_02106F5C
mov r2, #0x134
ldrsh r11, [sp, #0xd8]
bl __str2dec
add r0, sp, #0xb0
add r1, sp, #0xd6
bl __less_dec
cmp r0, #0x0
beq _020E9538
ldrsb r0, [r4, #0x0]
mov r5, #0x0
cmp r0, #0x0
ldreq r4, _020E996C ; =0x3FF00000
ldr r0, _020E9974 ; =__float_huge
ldrne r4, _020E9970 ; =0xBFF00000
ldr r0, [r0, #0x0]
bl _f2d
mov r2, r5
mov r3, r4
bl copysign
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
_020E9538:
add r1, sp, #0xdb
ldrb r0, [r1, #0x0]
add r8, r1, #0x1
bl _dfltu
str r0, [sp, #0x8]
str r1, [sp, #0xc]
cmp r8, r5
bhs _020E9610
_020E9558:
sub r0, r5, r8
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #0x1d
adds r7, r1, r0, ror #0x1d
moveq r7, #0x8
mov r6, #0x0
mov r2, #0x0
cmp r7, #0x0
ble _020E9594
mov r0, #0xa
_020E9580:
ldrb r1, [r8], #0x1
add r2, r2, #0x1
cmp r2, r7
mla r6, r0, r6, r1
blt _020E9580
_020E9594:
ldr r0, _020E9980 ; =UNK_02106E48
ldr r1, [sp, #0xc]
add r3, r0, r7, lsl #0x3
ldr r2, [r3, #-0x8]
ldr r0, [sp, #0x8]
ldr r3, [r3, #-0x4]
bl _dmul
mov r4, r0
mov r9, r1
mov r0, r6
bl _dfltu
mov r2, r0
mov r3, r1
mov r0, r4
mov r1, r9
bl _dadd
cmp r6, #0x0
mov r6, r0
mov r10, r1
beq _020E95FC
mov r0, r4
mov r1, r9
mov r2, r6
mov r3, r10
bl _deq
beq _020E9610
_020E95FC:
str r6, [sp, #0x8]
str r10, [sp, #0xc]
cmp r8, r5
sub r11, r11, r7
blo _020E9558
_020E9610:
cmp r11, #0x0
bge _020E9654
rsb r0, r11, #0x0
bl _dflt
mov r3, r1
mov r2, r0
ldr r1, _020E9984 ; =0x40140000
mov r0, #0x0
bl pow
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x8]
ldr r1, [sp, #0xc]
bl _ddiv
str r0, [sp, #0x8]
str r1, [sp, #0xc]
b _020E968C
_020E9654:
mov r0, r11
bl _dflt
mov r3, r1
mov r2, r0
ldr r1, _020E9984 ; =0x40140000
mov r0, #0x0
bl pow
mov r2, r0
mov r3, r1
ldr r0, [sp, #0x8]
ldr r1, [sp, #0xc]
bl _dmul
str r0, [sp, #0x8]
str r1, [sp, #0xc]
_020E968C:
ldr r0, [sp, #0x8]
ldr r1, [sp, #0xc]
mov r2, r11
bl ldexp
str r0, [sp, #0x8]
str r1, [sp, #0xc]
bl __fpclassifyf
cmp r0, #0x2
bne _020E96C0
ldr r0, _020E9988 ; =0x7FEFFFFF
mvn r1, #0x0
str r1, [sp, #0x8]
str r0, [sp, #0xc]
_020E96C0:
ldr r1, [sp, #0x8]
ldr r2, [sp, #0xc]
add r0, sp, #0x8a
add r4, sp, #0x0
mov r5, #0x0
bl __num2dec_internal
add r0, sp, #0x8a
add r1, sp, #0xd6
bl __equals_dec
cmp r0, #0x0
bne _020E9934
add r0, sp, #0x8a
add r1, sp, #0xd6
bl __less_dec
cmp r0, #0x0
movne r5, #0x1
ldr r1, [sp, #0x8]
ldr r0, [sp, #0xc]
cmp r5, #0x0
moveq r6, #0x1
str r1, [sp, #0x0]
str r0, [sp, #0x4]
movne r6, #0x0
_020E971C:
cmp r6, #0x0
bne _020E9744
ldmia r4, {r0-r1}
adds r0, r0, #0x1
adc r1, r1, #0x0
stmia r4, {r0-r1}
bl __fpclassifyf
cmp r0, #0x2
beq _020E9934
b _020E975C
_020E9744:
ldr r1, [r4, #0x0]
ldr r0, [r4, #0x4]
subs r1, r1, #0x1
sbc r0, r0, #0x0
str r1, [r4, #0x0]
str r0, [r4, #0x4]
_020E975C:
ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, sp, #0x64
bl __num2dec_internal
cmp r5, #0x0
beq _020E9788
add r0, sp, #0x64
add r1, sp, #0xd6
bl __less_dec
cmp r0, #0x0
beq _020E98AC
_020E9788:
cmp r5, #0x0
bne _020E9864
add r0, sp, #0xd6
add r1, sp, #0x64
bl __less_dec
cmp r0, #0x0
bne _020E9864
add r3, sp, #0x8a
add r5, sp, #0x3e
mov r2, #0x9
_020E97B0:
ldrh r1, [r3, #0x0]
ldrh r0, [r3, #0x2]
add r3, r3, #0x4
strh r1, [r5, #0x0]
strh r0, [r5, #0x2]
add r5, r5, #0x4
subs r2, r2, #0x1
bne _020E97B0
ldrh r0, [r3, #0x0]
add r3, sp, #0x64
add r4, sp, #0x8a
strh r0, [r5, #0x0]
mov r2, #0x9
_020E97E4:
ldrh r1, [r3, #0x0]
ldrh r0, [r3, #0x2]
add r3, r3, #0x4
strh r1, [r4, #0x0]
strh r0, [r4, #0x2]
add r4, r4, #0x4
subs r2, r2, #0x1
bne _020E97E4
ldrh r0, [r3, #0x0]
add r3, sp, #0x3e
add r5, sp, #0x64
strh r0, [r4, #0x0]
mov r2, #0x9
_020E9818:
ldrh r1, [r3, #0x0]
ldrh r0, [r3, #0x2]
add r3, r3, #0x4
strh r1, [r5, #0x0]
strh r0, [r5, #0x2]
add r5, r5, #0x4
subs r2, r2, #0x1
bne _020E9818
ldrh r4, [r3, #0x0]
ldr r3, [sp, #0x8]
ldr r1, [sp, #0x0]
ldr r2, [sp, #0xc]
ldr r0, [sp, #0x4]
strh r4, [r5, #0x0]
str r1, [sp, #0x8]
str r0, [sp, #0xc]
str r3, [sp, #0x0]
str r2, [sp, #0x4]
b _020E98AC
_020E9864:
add r7, sp, #0x64
add r3, sp, #0x8a
mov r2, #0x9
_020E9870:
ldrh r1, [r7, #0x0]
ldrh r0, [r7, #0x2]
add r7, r7, #0x4
strh r1, [r3, #0x0]
strh r0, [r3, #0x2]
add r3, r3, #0x4
subs r2, r2, #0x1
bne _020E9870
ldrh r2, [r7, #0x0]
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
strh r2, [r3, #0x0]
str r1, [sp, #0x8]
str r0, [sp, #0xc]
b _020E971C
_020E98AC:
add r0, sp, #0x3e
add r1, sp, #0xd6
add r2, sp, #0x8a
bl __minus_dec
add r0, sp, #0x18
add r1, sp, #0x64
add r2, sp, #0xd6
bl __minus_dec
add r0, sp, #0x3e
add r1, sp, #0x18
bl __equals_dec
cmp r0, #0x0
beq _020E9910
ldr r1, [sp, #0x8]
ldr r0, [sp, #0xc]
and r1, r1, #0x1
and r0, r0, #0x0
cmp r0, #0x0
cmpeq r1, #0x0
beq _020E9934
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
str r1, [sp, #0x8]
str r0, [sp, #0xc]
b _020E9934
_020E9910:
add r0, sp, #0x3e
add r1, sp, #0x18
bl __less_dec
cmp r0, #0x0
bne _020E9934
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
str r1, [sp, #0x8]
str r0, [sp, #0xc]
_020E9934:
ldrsb r0, [sp, #0xd6]
cmp r0, #0x0
beq _020E995C
mov r0, #0x0
ldr r2, [sp, #0x8]
ldr r3, [sp, #0xc]
mov r1, r0
bl _dsub
str r0, [sp, #0x8]
str r1, [sp, #0xc]
_020E995C:
ldr r0, [sp, #0x8]
ldr r1, [sp, #0xc]
add sp, sp, #0xfc
ldmia sp!, {r4-r11,pc}
.balign 4
_020E996C: .word 0x3FF00000
_020E9970: .word 0xBFF00000
_020E9974: .word __float_huge
_020E9978: .word 0x7FF00000
_020E997C: .word UNK_02106F5C
_020E9980: .word UNK_02106E48
_020E9984: .word 0x40140000
_020E9988: .word 0x7FEFFFFF
arm_func_end __dec2num
.section .exception,8
.global UNK_020EC740
UNK_020EC740: ; 0x020EC740
.byte 0x00, 0xFF, 0x05, 0x20
.balign 8
exception __rounddec, 65, 0x00200300
exception __ull2dec, 205, 0x0050FF00
exception __timesdec, 389, 0x00D0FF00
exception __str2dec, 157, 0x00100000
exception __two_exp, 901, 0x00B00300
exception __num2dec_internal, 385, 0x00E01F00
exception __num2dec_internal2, 169, 0x00200300
exception __dec2num, 1572, UNK_020EC740