mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 00:11:26 -05:00
1610 lines
28 KiB
ArmAsm
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
|