summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-01 08:54:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-01 08:54:54 -0400
commitba0d2b10f0a4c5697aaa3a0a1da6c153c43f4ca1 (patch)
treeec4075173b297556bc652b13e5012b6dcc39faf5
parentae69fdeaea7f789815f8560044d0758d11837d70 (diff)
Split libc.s, 2
-rw-r--r--arm9/arm9.lsf9
-rw-r--r--arm9/asm/MSL_abort_exit.s18
-rw-r--r--arm9/asm/MSL_critical_regions_NITRO.s19
-rw-r--r--arm9/asm/MSL_ctype.s28
-rw-r--r--arm9/asm/MSL_errno.s9
-rw-r--r--arm9/asm/MSL_file_pos.s363
-rw-r--r--arm9/asm/MSL_float.s18
-rw-r--r--arm9/asm/MSL_mbstring.s232
-rw-r--r--arm9/asm/MSL_mem.s110
-rw-r--r--arm9/asm/MSL_mem_funcs.s61
-rw-r--r--arm9/asm/MSL_printf.s2583
-rw-r--r--arm9/asm/libc.s3735
-rw-r--r--arm9/asm/stdlibmwcc.s6
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/modules/04/asm/arm_04.s54
15 files changed, 3614 insertions, 3637 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 1513e9c1..3d32a751 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -547,13 +547,22 @@ Static arm9
### Standard libraries ###
### Bundled with CodeWarrior, so probably compiled with 2.0sp1 ###
Object MSL_abort_exit.o
+ Object MSL_critical_regions_NITRO.o
Object MSL_math.o
Object MSL_ansi_files.o
Object MSL_arith.o
Object MSL_assert.o
Object MSL_buffer_io.o
+ Object MSL_ctype.o
Object MSL_direct_io.o
+ Object MSL_errno.o
Object MSL_file_io.o
+ Object MSL_file_pos.o
+ Object MSL_float.o
+ Object MSL_mbstring.o
+ Object MSL_mem.o
+ Object MSL_mem_funcs.o
+ Object MSL_printf.o
Object libc.o
Object stdlibmwcc.o
}
diff --git a/arm9/asm/MSL_abort_exit.s b/arm9/asm/MSL_abort_exit.s
index 1be74118..92729b72 100644
--- a/arm9/asm/MSL_abort_exit.s
+++ b/arm9/asm/MSL_abort_exit.s
@@ -1,6 +1,9 @@
.include "asm/macros.inc"
.include "global.inc"
.extern OSi_ThreadInfo
+ .extern __cs
+ .extern __cs_id
+ .extern __cs_ref
.bss
@@ -29,21 +32,6 @@ __atexit_funcs: ; 0x021D6F88
.space 0x100
.size __atexit_funcs,.-__atexit_funcs
- .global __cs_id
-__cs_id: ; 0x021D7088
- .space 0x24
- .size __cs_id,.-__cs_id
-
- .global __cs_ref
-__cs_ref: ; 0x021D70AC
- .space 0x24
- .size __cs_ref,.-__cs_ref
-
- .global __cs
-__cs: ; 0x021D70D0
- .space 0xD8
- .size __cs,.-__cs
-
.text
arm_func_start abort
diff --git a/arm9/asm/MSL_critical_regions_NITRO.s b/arm9/asm/MSL_critical_regions_NITRO.s
new file mode 100644
index 00000000..046e9636
--- /dev/null
+++ b/arm9/asm/MSL_critical_regions_NITRO.s
@@ -0,0 +1,19 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __cs_id
+__cs_id: ; 0x021D7088
+ .space 0x24
+ .size __cs_id,.-__cs_id
+
+ .global __cs_ref
+__cs_ref: ; 0x021D70AC
+ .space 0x24
+ .size __cs_ref,.-__cs_ref
+
+ .global __cs
+__cs: ; 0x021D70D0
+ .space 0xD8
+ .size __cs,.-__cs
diff --git a/arm9/asm/MSL_ctype.s b/arm9/asm/MSL_ctype.s
new file mode 100644
index 00000000..f261aa8d
--- /dev/null
+++ b/arm9/asm/MSL_ctype.s
@@ -0,0 +1,28 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global __lower_mapC
+__lower_mapC: ; 0x0210420C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __lower_mapC,.-__lower_mapC
+
+ .global __upper_mapC
+__upper_mapC: ; 0x0210428C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __upper_mapC,.-__upper_mapC
diff --git a/arm9/asm/MSL_errno.s b/arm9/asm/MSL_errno.s
new file mode 100644
index 00000000..28264872
--- /dev/null
+++ b/arm9/asm/MSL_errno.s
@@ -0,0 +1,9 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global errno
+errno: ; 0x021D74A8
+ .space 0x4
+ .size errno,.-errno \ No newline at end of file
diff --git a/arm9/asm/MSL_file_pos.s b/arm9/asm/MSL_file_pos.s
new file mode 100644
index 00000000..a0c82aea
--- /dev/null
+++ b/arm9/asm/MSL_file_pos.s
@@ -0,0 +1,363 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern __files
+ .extern __cs
+ .extern __cs_id
+ .extern __cs_ref
+ .extern OSi_ThreadInfo
+ .extern errno
+
+ .text
+
+ arm_func_start _ftell
+_ftell: ; 0x020DEDE4
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ add r1, r1, #0xff
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ bhi _020DEE10
+ ldrb r1, [r0, #0xd]
+ cmp r1, #0x0
+ beq _020DEE24
+_020DEE10:
+ ldr r0, _020DEE5C ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ bx lr
+_020DEE24:
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ movs r12, r1, lsr #0x1d
+ ldreq r0, [r0, #0x18]
+ bxeq lr
+ ldr r2, [r0, #0x24]
+ ldr r1, [r0, #0x1c]
+ ldr r3, [r0, #0x34]
+ sub r0, r2, r1
+ cmp r12, #0x3
+ add r0, r3, r0
+ subcs r1, r12, #0x2
+ subcs r0, r0, r1
+ bx lr
+ .balign 4
+_020DEE5C: .word errno
+ arm_func_end _ftell
+
+ arm_func_start ftell
+ftell: ; 0x020DEE60
+ stmdb sp!, {r3-r7,lr}
+ ldr r1, _020DEF60 ; =__files
+ mov r7, r0
+ cmp r7, r1
+ moveq r6, #0x2
+ beq _020DEE98
+ ldr r0, _020DEF64 ; =__files + 0x4C
+ cmp r7, r0
+ moveq r6, #0x3
+ beq _020DEE98
+ ldr r0, _020DEF68 ; =__files + 0x98
+ cmp r7, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DEE98:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DEF6C ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DEED8
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DEF30
+_020DEED8:
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r1, _020DEF74 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DEF08
+ ldr r1, _020DEF78 ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DEF30
+_020DEF08:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DEF30:
+ mov r0, r7
+ bl _ftell
+ ldr r1, _020DEF78 ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DEF58
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DEF58:
+ mov r0, r7
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020DEF60: .word __files
+_020DEF64: .word __files + 0x4C
+_020DEF68: .word __files + 0x98
+_020DEF6C: .word __cs
+_020DEF70: .word OSi_ThreadInfo
+_020DEF74: .word __cs_id
+_020DEF78: .word __cs_ref
+ arm_func_end ftell
+
+ arm_func_start _fseek
+_fseek: ; 0x020DEF7C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r1, [r5, #0x4]
+ mov r4, r2
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ ldreqb r1, [r5, #0xd]
+ cmpeq r1, #0x0
+ beq _020DEFC8
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DEFC8:
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DF018
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DF018
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF018:
+ cmp r4, #0x1
+ bne _020DF038
+ mov r0, r5
+ mov r4, #0x0
+ bl _ftell
+ ldr r1, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+_020DF038:
+ cmp r4, #0x2
+ beq _020DF0CC
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ beq _020DF0CC
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020DF0CC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, #0x18]
+ cmp r2, r0
+ bhs _020DF088
+ ldr r0, [r5, #0x34]
+ cmp r2, r0
+ bhs _020DF098
+_020DF088:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF098:
+ ldr r1, [r5, #0x1c]
+ sub r0, r2, r0
+ add r0, r1, r0
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #0x14]
+ sub r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ orr r0, r0, #0x2
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF0CC:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+_020DF0D8:
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ movs r0, r0, lsr #0x1d
+ bne _020DF150
+ ldr r12, [r5, #0x38]
+ cmp r12, #0x0
+ beq _020DF13C
+ ldr r0, [r5, #0x0]
+ ldr r3, [r5, #0x48]
+ add r1, sp, #0x14
+ mov r2, r4
+ blx r12
+ cmp r0, #0x0
+ beq _020DF13C
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF13C:
+ mov r1, #0x0
+ strb r1, [r5, #0xc]
+ ldr r0, [sp, #0x14]
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x28]
+_020DF150:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DF160: .word errno
+ arm_func_end _fseek
+
+ arm_func_start fseek
+fseek:
+ stmdb sp!, {r3-r9,lr}
+ ldr r3, _020DF274 ; =__files
+ mov r9, r0
+ cmp r9, r3
+ mov r8, r1
+ mov r7, r2
+ moveq r6, #0x2
+ beq _020DF1A4
+ ldr r0, _020DF278 ; =__files + 0x4C
+ cmp r9, r0
+ moveq r6, #0x3
+ beq _020DF1A4
+ ldr r0, _020DF27C ; =__files + 0x98
+ cmp r9, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DF1A4:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DF280 ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DF1E4
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DF23C
+_020DF1E4:
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r1, _020DF288 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DF214
+ ldr r1, _020DF28C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DF23C
+_020DF214:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DF23C:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r7
+ bl _fseek
+ ldr r1, _020DF28C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DF26C
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DF26C:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DF274: .word __files
+_020DF278: .word __files + 0x4C
+_020DF27C: .word __files + 0x98
+_020DF280: .word __cs
+_020DF284: .word OSi_ThreadInfo
+_020DF288: .word __cs_id
+_020DF28C: .word __cs_ref
+ arm_func_end fseek
+
+ arm_func_start rewind
+rewind: ; 0x020DF290
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r4, r0
+ mov r2, r1
+ strb r1, [r4, #0xd]
+ bl fseek
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ ldmia sp!, {r4,pc}
+ arm_func_end rewind
diff --git a/arm9/asm/MSL_float.s b/arm9/asm/MSL_float.s
new file mode 100644
index 00000000..d412ffb6
--- /dev/null
+++ b/arm9/asm/MSL_float.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+ .global __float_huge
+__float_huge: ; 0x02106B74
+ .word 0x7F800000 ; inf
+ .size __float_huge,.-__float_huge
+
+ .global __float_nan
+__float_nan: ; 0x02106B78
+ .word 0x7FFFFFFF ; nan
+ .size __float_nan,.-__float_nan
+
+ .global __double_huge
+__double_huge: ; 0x02106B7C
+ .word 0x00000000, 0x7FF00000 ; inf
+ .size __double_huge,.-__double_huge
diff --git a/arm9/asm/MSL_mbstring.s b/arm9/asm/MSL_mbstring.s
new file mode 100644
index 00000000..92c017d5
--- /dev/null
+++ b/arm9/asm/MSL_mbstring.s
@@ -0,0 +1,232 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .balign 4
+ .global _loc_tim_C$timezone
+_loc_tim_C$timezone: ; 0x02106B84
+ .asciz ""
+ .size _loc_tim_C$timezone,.-_loc_tim_C$timezone
+
+ .balign 4
+ .global _loc_tim_C$timefmt2
+_loc_tim_C$timefmt2: ; 0x02106B88
+ .asciz "%T"
+ .size _loc_tim_C$timefmt2,.-_loc_tim_C$timefmt2
+
+ .balign 4
+ .global _loc_tim_C$AMPM
+_loc_tim_C$AMPM: ; 0x02106B8C
+ .asciz "AM|PM"
+ .size _loc_tim_C$AMPM,.-_loc_tim_C$AMPM
+
+ .balign 4, 0
+ .global _loc_ctyp_C
+_loc_ctyp_C: ; 0x02106B94
+ .word __mbtowc_noconv
+ .word __wctomb_noconv
+ .size _loc_ctyp_C,.-_loc_ctyp_C
+
+ .global _loc_coll_C
+_loc_coll_C: ; 0x02106B9C
+ .word 0x20
+ .word 0x6E
+ .word 0x00
+ .word char_coll_tableC
+ .size _loc_coll_C,.-_loc_coll_C
+
+ .global _loc_tim_C
+_loc_tim_C: ; 0x02106BAC
+ .word _loc_tim_C$AMPM
+ .word _loc_tim_C$datetimefmt
+ .word _loc_tim_C$timefmt
+ .word _loc_tim_C$datefmt
+ .word _loc_tim_C$timefmt2
+ .word _loc_tim_C$daynames
+ .word _loc_tim_C$monthnames
+ .word _loc_tim_C$timezone
+ .size _loc_tim_C,.-_loc_tim_C
+
+ .global char_coll_tableC
+char_coll_tableC: ; 0x02106BCC
+ .short 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008
+ .short 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010
+ .short 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028
+ .short 0x0029, 0x002A, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016
+ .short 0x0017, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0035, 0x0037
+ .short 0x0039, 0x003B, 0x003D, 0x003F, 0x0041, 0x0043, 0x0045, 0x0047
+ .short 0x0049, 0x004B, 0x004D, 0x004F, 0x0051, 0x0053, 0x0055, 0x0057
+ .short 0x0059, 0x005B, 0x005D, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C
+ .short 0x0000, 0x002C, 0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038
+ .short 0x003A, 0x003C, 0x003E, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048
+ .short 0x004A, 0x004C, 0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058
+ .short 0x005A, 0x005C, 0x005E, 0x001D, 0x001E, 0x001F, 0x0020, 0x0000
+ .size char_coll_tableC,.-char_coll_tableC
+
+ .global _loc_tim_C$datefmt
+_loc_tim_C$datefmt: ; 0x02106C8C
+ .asciz "%m/%d/%y"
+ .size _loc_tim_C$datefmt,.-_loc_tim_C$datefmt
+
+ .balign 4, 0
+ .global _current_locale
+_current_locale: ; 0x02106C98
+ .word _loc_tim_C
+ .word _loc_coll_C
+ .word _loc_ctyp_C
+ .size _current_locale,.-_current_locale
+
+ .global _loc_tim_C$timefmt
+_loc_tim_C$timefmt: ; 0x02106CA4
+ .asciz "%I:%M:%S %p"
+ .size _loc_tim_C$timefmt,.-_loc_tim_C$timefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$datetimefmt
+_loc_tim_C$datetimefmt: ; 0x02106CB0
+ .asciz "%a %b %e %T %Y"
+ .size _loc_tim_C$datetimefmt,.-_loc_tim_C$datetimefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$daynames
+_loc_tim_C$daynames: ; 0x02106CC0
+ .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
+ .size _loc_tim_C$daynames,.-_loc_tim_C$daynames
+
+ .balign 4, 0
+ .global _loc_tim_C$monthnames
+_loc_tim_C$monthnames: ; 0x02106D18
+ .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
+ .size _loc_tim_C$monthnames,.-_loc_tim_C$monthnames
+
+ .text
+
+ arm_func_start mbtowc
+mbtowc:
+ stmdb sp!, {r3,lr}
+ ldr r3, _020DF2CC ; =_current_locale
+ ldr r3, [r3, #0x8]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF2CC: .word _current_locale
+ arm_func_end mbtowc
+
+ arm_func_start __mbtowc_noconv
+__mbtowc_noconv: ; 0x020DF2D0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r2, #0x0
+ mvneq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ ldrneb r2, [r1, #0x0]
+ strneh r2, [r0, #0x0]
+ ldrsb r0, [r1, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ movne r0, #0x1
+ bx lr
+ arm_func_end __mbtowc_noconv
+
+ arm_func_start __wctomb_noconv
+__wctomb_noconv: ; 0x020DF308
+ cmp r0, #0x0
+ moveq r0, #0x0
+ strneb r1, [r0, #0x0]
+ movne r0, #0x1
+ bx lr
+ arm_func_end __wctomb_noconv
+
+ arm_func_start wctomb
+wctomb: ; 0x020DF31C
+ stmdb sp!, {r3,lr}
+ ldr r2, _020DF334 ; =_current_locale
+ ldr r2, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF334: .word _current_locale
+ arm_func_end wctomb
+
+ arm_func_start mbstowcs
+mbstowcs: ; 0x020DF338
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r1
+ mov r8, r0
+ mov r0, r7
+ mov r6, r2
+ bl strlen
+ mov r5, r0
+ cmp r8, #0x0
+ mov r4, #0x0
+ beq _020DF3B8
+ cmp r6, #0x0
+ bls _020DF3B8
+_020DF368:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _020DF3A0
+ mov r0, r8
+ mov r1, r7
+ mov r2, r5
+ bl mbtowc
+ cmp r0, #0x0
+ add r8, r8, #0x2
+ addgt r7, r7, r0
+ subgt r5, r5, r0
+ bgt _020DF3AC
+ mvn r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020DF3A0:
+ mov r0, #0x0
+ strh r0, [r8, #0x0]
+ b _020DF3B8
+_020DF3AC:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blo _020DF368
+_020DF3B8:
+ mov r0, r4
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end mbstowcs
+
+ arm_func_start wcstombs
+wcstombs:
+ stmdb sp!, {r3-r9,lr}
+ movs r4, r0
+ mov r9, r1
+ cmpne r9, #0x0
+ mov r8, r2
+ mov r7, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r9,pc}
+ add r6, sp, #0x0
+_020DF3E4:
+ ldrh r1, [r9, #0x0]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streqb r0, [r4, r7]
+ beq _020DF430
+ mov r0, r6
+ add r9, r9, #0x2
+ bl wctomb
+ mov r5, r0
+ add r0, r7, r5
+ cmp r0, r8
+ bhi _020DF430
+ mov r1, r6
+ mov r2, r5
+ add r0, r4, r7
+ bl strncpy
+ add r7, r7, r5
+ cmp r7, r8
+ bls _020DF3E4
+_020DF430:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ arm_func_end wcstombs
diff --git a/arm9/asm/MSL_mem.s b/arm9/asm/MSL_mem.s
new file mode 100644
index 00000000..39bdc299
--- /dev/null
+++ b/arm9/asm/MSL_mem.s
@@ -0,0 +1,110 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern __fill_mem
+
+ .text
+
+ arm_func_start memcpy
+memcpy: ; 0x020DF438
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF444:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF444
+ bx lr
+ arm_func_end memcpy
+
+ arm_func_start memmove
+memmove: ; 0x020DF458
+ cmp r1, r0
+ blo _020DF480
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF46C:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF46C
+ bx lr
+_020DF480:
+ cmp r2, #0x0
+ add r3, r1, r2
+ add r12, r0, r2
+ bxeq lr
+_020DF490:
+ ldrsb r1, [r3, #-0x1]!
+ subs r2, r2, #0x1
+ strb r1, [r12, #-0x1]!
+ bne _020DF490
+ bx lr
+ arm_func_end memmove
+
+ arm_func_start memset
+memset: ; 0x020DF4A4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl __fill_mem
+ mov r0, r4
+ ldmia sp!, {r4,pc}
+ arm_func_end memset
+
+ arm_func_start memchr
+memchr:
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ beq _020DF4DC
+_020DF4C4:
+ ldrb r1, [r0], #0x1
+ cmp r1, r3
+ subeq r0, r0, #0x1
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4C4
+_020DF4DC:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memchr
+
+ arm_func_start __memrchr
+__memrchr: ; 0x020DF4E4
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ add r0, r0, r2
+ beq _020DF508
+_020DF4F4:
+ ldrb r1, [r0, #-0x1]!
+ cmp r1, r3
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4F4
+_020DF508:
+ mov r0, #0x0
+ bx lr
+ arm_func_end __memrchr
+
+ arm_func_start memcmp
+memcmp: ; 0x020DF510
+ cmp r2, #0x0
+ beq _020DF548
+_020DF518:
+ ldrb r12, [r0], #0x1
+ ldrb r3, [r1], #0x1
+ cmp r12, r3
+ beq _020DF540
+ ldrb r2, [r0, #-0x1]
+ ldrb r0, [r1, #-0x1]
+ cmp r2, r0
+ mvncc r0, #0x0
+ movcs r0, #0x1
+ bx lr
+_020DF540:
+ subs r2, r2, #0x1
+ bne _020DF518
+_020DF548:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memcmp
diff --git a/arm9/asm/MSL_mem_funcs.s b/arm9/asm/MSL_mem_funcs.s
new file mode 100644
index 00000000..82dad866
--- /dev/null
+++ b/arm9/asm/MSL_mem_funcs.s
@@ -0,0 +1,61 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __fill_mem
+__fill_mem: ; 0x020DF550
+ cmp r2, #0x20
+ and r3, r1, #0xff
+ blo _020DF5E4
+ rsb r1, r0, #0x0
+ ands r12, r1, #0x3
+ beq _020DF57C
+ sub r2, r2, r12
+ and r1, r3, #0xff
+_020DF570:
+ strb r1, [r0], #0x1
+ subs r12, r12, #0x1
+ bne _020DF570
+_020DF57C:
+ cmp r3, #0x0
+ beq _020DF594
+ mov r1, r3, lsl #0x10
+ orr r1, r1, r3, lsl #0x18
+ orr r1, r1, r3, lsl #0x8
+ orr r3, r3, r1
+_020DF594:
+ movs r1, r2, lsr #0x5
+ beq _020DF5C8
+_020DF59C:
+ str r3, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r3, [r0, #0xc]
+ str r3, [r0, #0x10]
+ str r3, [r0, #0x14]
+ str r3, [r0, #0x18]
+ str r3, [r0, #0x1c]
+ add r0, r0, #0x20
+ subs r1, r1, #0x1
+ bne _020DF59C
+_020DF5C8:
+ and r1, r2, #0x1f
+ movs r1, r1, lsr #0x2
+ beq _020DF5E0
+_020DF5D4:
+ str r3, [r0], #0x4
+ subs r1, r1, #0x1
+ bne _020DF5D4
+_020DF5E0:
+ and r2, r2, #0x3
+_020DF5E4:
+ cmp r2, #0x0
+ bxeq lr
+ and r1, r3, #0xff
+_020DF5F0:
+ strb r1, [r0], #0x1
+ subs r2, r2, #0x1
+ bne _020DF5F0
+ bx lr
+ arm_func_end __fill_mem
diff --git a/arm9/asm/MSL_printf.s b/arm9/asm/MSL_printf.s
new file mode 100644
index 00000000..38bf72e5
--- /dev/null
+++ b/arm9/asm/MSL_printf.s
@@ -0,0 +1,2583 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern OSi_ThreadInfo
+ .extern __cs_id
+ .extern __cs_ref
+ .extern __cs
+ .extern __files
+ .extern memchr
+ .extern fwide
+ .extern fabs
+
+ .rodata
+
+ .global UNK_0210430C
+UNK_0210430C: ; 0x0210430C
+ .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
+ .byte 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00
+ .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
+ .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
+ .byte 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
+ .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
+ .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04
+ .byte 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
+ .byte 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02
+ .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
+ .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
+ .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
+ .byte 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00
+ .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
+ .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
+ .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00
+ .size UNK_0210430C,.-UNK_0210430C
+
+ .data
+ .global UNK_02106DA0
+UNK_02106DA0: ; 0x02106DA0
+ .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
+
+ .global UNK_02106DA8
+UNK_02106DA8: ; 0x02106DA8
+ .asciz "-INF"
+
+ .balign 4, 0
+ .global UNK_02106DB0
+UNK_02106DB0: ; 0x02106DB0
+ .asciz "-inf"
+
+ .balign 4, 0
+ .global UNK_02106DB8
+UNK_02106DB8: ; 0x02106DB8
+ .asciz "INF"
+
+ .balign 4, 0
+ .global UNK_02106DBC
+UNK_02106DBC: ; 0x02106DBC
+ .asciz "inf"
+
+ .balign 4, 0
+ .global UNK_02106DC0
+UNK_02106DC0: ; 0x02106DC0
+ .asciz "-NAN"
+
+ .balign 4, 0
+ .global UNK_02106DC8
+UNK_02106DC8: ; 0x02106DC8
+ .asciz "-nan"
+
+ .balign 4, 0
+ .global UNK_02106DD0
+UNK_02106DD0: ; 0x02106DD0
+ .asciz "NAN"
+
+ .balign 4, 0
+ .global UNK_02106DD4
+UNK_02106DD4: ; 0x02106DD4
+ .asciz "nan"
+
+ .balign 4, 0
+ .global UNK_02106DD8
+UNK_02106DD8: ; 0x02106DD8
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK_02106DDC
+UNK_02106DDC: ; 0x02106DDC
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .text
+
+ arm_func_start parse_format_printf
+parse_format_printf: ; 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 ; =UNK_0210430C
+ 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 ; =UNK_0210430C
+ 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 UNK_0210430C
+_020DFB8C: .word 0x000001FD
+ arm_func_end parse_format_printf
+
+ 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 ; =UNK_0210430C
+ 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 ; =UNK_0210430C
+ 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 ; =UNK_0210430C
+ 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 ; =UNK_0210430C
+ 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 UNK_0210430C
+_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_printf
+ 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
diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s
index aaebf38f..4145b85f 100644
--- a/arm9/asm/libc.s
+++ b/arm9/asm/libc.s
@@ -8,50 +8,13 @@
.extern __cs
.extern __files
.extern __prep_buffer
+ .extern __float_nan
+ .extern __float_huge
+ .extern __double_huge
+ .extern memchr
.section .rodata
- .global UNK_0210420C
-UNK_0210420C: ; 0x0210420C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210428C
-UNK_0210428C: ; 0x0210428C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210430C
-UNK_0210430C: ; 0x0210430C
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04
- .byte 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00
-
.global UNK_0210440C
UNK_0210440C: ; 0x0210440C
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -133,152 +96,6 @@ UNK_02104764: ; 0x02104764
.section .data
.balign 4, 0
- .global __float_huge
-__float_huge: ; 0x02106B74
- .word 0x7F800000 ; inf
-
- .global __float_nan
-__float_nan: ; 0x02106B78
- .word 0x7FFFFFFF ; nan
-
- .global __double_huge
-__double_huge: ; 0x02106B7C
- .word 0x00000000, 0x7FF00000 ; inf
-
- .balign 4
- .global UNK_02106B84
-UNK_02106B84: ; 0x02106B84
- .asciz ""
-
- .balign 4
- .global UNK_02106B88
-UNK_02106B88: ; 0x02106B88
- .asciz "%T"
-
- .balign 4
- .global UNK_02106B8C
-UNK_02106B8C: ; 0x02106B8C
- .asciz "AM|PM"
-
- .balign 4, 0
- .global UNK_02106B94
-UNK_02106B94: ; 0x02106B94
- .word __mbtowc_noconv
- .word __wctomb_noconv
-
- .global UNK_02106B9C
-UNK_02106B9C: ; 0x02106B9C
- .byte 0x20, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_02106BCC
-
- .global UNK_02106BAC
-UNK_02106BAC: ; 0x02106BAC
- .word UNK_02106B8C
- .word UNK_02106CB0
- .word UNK_02106CA4
- .word UNK_02106C8C
- .word UNK_02106B88
- .word UNK_02106CC0
- .word UNK_02106D18
- .word UNK_02106B84
-
- .global UNK_02106BCC
-UNK_02106BCC: ; 0x02106BCC
- .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00
- .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00
- .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00
- .byte 0x29, 0x00, 0x2A, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00
- .byte 0x17, 0x00, 0x2B, 0x00, 0x2D, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00
- .byte 0x39, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x47, 0x00
- .byte 0x49, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x4F, 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, 0x00
- .byte 0x59, 0x00, 0x5B, 0x00, 0x5D, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00
- .byte 0x00, 0x00, 0x2C, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x32, 0x00, 0x34, 0x00, 0x36, 0x00, 0x38, 0x00
- .byte 0x3A, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, 0x00, 0x48, 0x00
- .byte 0x4A, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, 0x00, 0x58, 0x00
- .byte 0x5A, 0x00, 0x5C, 0x00, 0x5E, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x00, 0x00
-
- .global UNK_02106C8C
-UNK_02106C8C: ; 0x02106C8C
- .asciz "%m/%d/%y"
-
- .balign 4, 0
- .global UNK_02106C98
-UNK_02106C98: ; 0x02106C98
- .word UNK_02106BAC
- .word UNK_02106B9C
- .word UNK_02106B94
-
- .global UNK_02106CA4
-UNK_02106CA4: ; 0x02106CA4
- .asciz "%I:%M:%S %p"
-
- .balign 4, 0
- .global UNK_02106CB0
-UNK_02106CB0: ; 0x02106CB0
- .asciz "%a %b %e %T %Y"
-
- .balign 4, 0
- .global UNK_02106CC0
-UNK_02106CC0: ; 0x02106CC0
- .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
-
- .balign 4, 0
- .global UNK_02106D18
-UNK_02106D18: ; 0x02106D18
- .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
-
- .balign 4, 0
- .global UNK_02106DA0
-UNK_02106DA0: ; 0x02106DA0
- .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
-
- .global UNK_02106DA8
-UNK_02106DA8: ; 0x02106DA8
- .asciz "-INF"
-
- .balign 4, 0
- .global UNK_02106DB0
-UNK_02106DB0: ; 0x02106DB0
- .asciz "-inf"
-
- .balign 4, 0
- .global UNK_02106DB8
-UNK_02106DB8: ; 0x02106DB8
- .asciz "INF"
-
- .balign 4, 0
- .global UNK_02106DBC
-UNK_02106DBC: ; 0x02106DBC
- .asciz "inf"
-
- .balign 4, 0
- .global UNK_02106DC0
-UNK_02106DC0: ; 0x02106DC0
- .asciz "-NAN"
-
- .balign 4, 0
- .global UNK_02106DC8
-UNK_02106DC8: ; 0x02106DC8
- .asciz "-nan"
-
- .balign 4, 0
- .global UNK_02106DD0
-UNK_02106DD0: ; 0x02106DD0
- .asciz "NAN"
-
- .balign 4, 0
- .global UNK_02106DD4
-UNK_02106DD4: ; 0x02106DD4
- .asciz "nan"
-
- .balign 4, 0
- .global UNK_02106DD8
-UNK_02106DD8: ; 0x02106DD8
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DDC
-UNK_02106DDC: ; 0x02106DDC
- .byte 0x00, 0x00, 0x00, 0x00
.global UNK_02106DE0
UNK_02106DE0: ; 0x02106DE0
@@ -446,10 +263,6 @@ UNK_02106F5C: ; 0x02106F5C
.section .bss
- .global UNK_021D74A8
-UNK_021D74A8: ; 0x021D74A8
- .space 0x4
-
.global UNK_021D74AC
UNK_021D74AC: ; 0x021D74AC
.space 0x1c
@@ -457,3145 +270,6 @@ UNK_021D74AC: ; 0x021D74AC
.section .text
.balign 4, 0
- arm_func_start _ftell
-_ftell: ; 0x020DEDE4
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- add r1, r1, #0xff
- and r1, r1, #0xff
- cmp r1, #0x1
- bhi _020DEE10
- ldrb r1, [r0, #0xd]
- cmp r1, #0x0
- beq _020DEE24
-_020DEE10:
- ldr r0, _020DEE5C ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- bx lr
-_020DEE24:
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- movs r12, r1, lsr #0x1d
- ldreq r0, [r0, #0x18]
- bxeq lr
- ldr r2, [r0, #0x24]
- ldr r1, [r0, #0x1c]
- ldr r3, [r0, #0x34]
- sub r0, r2, r1
- cmp r12, #0x3
- add r0, r3, r0
- subcs r1, r12, #0x2
- subcs r0, r0, r1
- bx lr
- .balign 4
-_020DEE5C: .word UNK_021D74A8
-
- arm_func_start ftell
-ftell: ; 0x020DEE60
- stmdb sp!, {r3-r7,lr}
- ldr r1, _020DEF60 ; =__files
- mov r7, r0
- cmp r7, r1
- moveq r6, #0x2
- beq _020DEE98
- ldr r0, _020DEF64 ; =__files + 0x4C
- cmp r7, r0
- moveq r6, #0x3
- beq _020DEE98
- ldr r0, _020DEF68 ; =__files + 0x98
- cmp r7, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DEE98:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DEF6C ; =__cs
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DEED8
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =__cs_id
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =__cs_ref
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DEF30
-_020DEED8:
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r1, _020DEF74 ; =__cs_id
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DEF08
- ldr r1, _020DEF78 ; =__cs_ref
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DEF30
-_020DEF08:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =__cs_id
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =__cs_ref
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DEF30:
- mov r0, r7
- bl _ftell
- ldr r1, _020DEF78 ; =__cs_ref
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DEF58
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DEF58:
- mov r0, r7
- ldmia sp!, {r3-r7,pc}
- .balign 4
-_020DEF60: .word __files
-_020DEF64: .word __files + 0x4C
-_020DEF68: .word __files + 0x98
-_020DEF6C: .word __cs
-_020DEF70: .word OSi_ThreadInfo
-_020DEF74: .word __cs_id
-_020DEF78: .word __cs_ref
-
- arm_func_start _fseek
-_fseek: ; 0x020DEF7C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r1, [r5, #0x4]
- mov r4, r2
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- cmp r1, #0x1
- ldreqb r1, [r5, #0xd]
- cmpeq r1, #0x0
- beq _020DEFC8
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DEFC8:
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DF018
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DF018
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF018:
- cmp r4, #0x1
- bne _020DF038
- mov r0, r5
- mov r4, #0x0
- bl _ftell
- ldr r1, [sp, #0x14]
- add r0, r1, r0
- str r0, [sp, #0x14]
-_020DF038:
- cmp r4, #0x2
- beq _020DF0CC
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- beq _020DF0CC
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x2
- cmp r0, #0x1
- bhi _020DF0CC
- ldr r2, [sp, #0x14]
- ldr r0, [r5, #0x18]
- cmp r2, r0
- bhs _020DF088
- ldr r0, [r5, #0x34]
- cmp r2, r0
- bhs _020DF098
-_020DF088:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF098:
- ldr r1, [r5, #0x1c]
- sub r0, r2, r0
- add r0, r1, r0
- str r0, [r5, #0x24]
- ldr r1, [r5, #0x18]
- ldr r0, [sp, #0x14]
- sub r0, r1, r0
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- orr r0, r0, #0x2
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF0CC:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
-_020DF0D8:
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- movs r0, r0, lsr #0x1d
- bne _020DF150
- ldr r12, [r5, #0x38]
- cmp r12, #0x0
- beq _020DF13C
- ldr r0, [r5, #0x0]
- ldr r3, [r5, #0x48]
- add r1, sp, #0x14
- mov r2, r4
- blx r12
- cmp r0, #0x0
- beq _020DF13C
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF13C:
- mov r1, #0x0
- strb r1, [r5, #0xc]
- ldr r0, [sp, #0x14]
- str r0, [r5, #0x18]
- str r1, [r5, #0x28]
-_020DF150:
- mov r0, #0x0
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020DF160: .word UNK_021D74A8
-
- arm_func_start fseek
-fseek:
- stmdb sp!, {r3-r9,lr}
- ldr r3, _020DF274 ; =__files
- mov r9, r0
- cmp r9, r3
- mov r8, r1
- mov r7, r2
- moveq r6, #0x2
- beq _020DF1A4
- ldr r0, _020DF278 ; =__files + 0x4C
- cmp r9, r0
- moveq r6, #0x3
- beq _020DF1A4
- ldr r0, _020DF27C ; =__files + 0x98
- cmp r9, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DF1A4:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DF280 ; =__cs
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DF1E4
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =__cs_id
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =__cs_ref
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DF23C
-_020DF1E4:
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r1, _020DF288 ; =__cs_id
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DF214
- ldr r1, _020DF28C ; =__cs_ref
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DF23C
-_020DF214:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =__cs_id
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =__cs_ref
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DF23C:
- mov r0, r9
- mov r1, r8
- mov r2, r7
- bl _fseek
- ldr r1, _020DF28C ; =__cs_ref
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DF26C
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DF26C:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DF274: .word __files
-_020DF278: .word __files + 0x4C
-_020DF27C: .word __files + 0x98
-_020DF280: .word __cs
-_020DF284: .word OSi_ThreadInfo
-_020DF288: .word __cs_id
-_020DF28C: .word __cs_ref
-
- arm_func_start rewind
-rewind: ; 0x020DF290
- stmdb sp!, {r4,lr}
- mov r1, #0x0
- mov r4, r0
- mov r2, r1
- strb r1, [r4, #0xd]
- bl fseek
- mov r0, #0x0
- strb r0, [r4, #0xd]
- ldmia sp!, {r4,pc}
-
- arm_func_start mbtowc
-mbtowc:
- stmdb sp!, {r3,lr}
- ldr r3, _020DF2CC ; =UNK_02106C98
- ldr r3, [r3, #0x8]
- ldr r3, [r3, #0x0]
- blx r3
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF2CC: .word UNK_02106C98
-
- arm_func_start __mbtowc_noconv
-__mbtowc_noconv: ; 0x020DF2D0
- cmp r1, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r2, #0x0
- mvneq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- ldrneb r2, [r1, #0x0]
- strneh r2, [r0, #0x0]
- ldrsb r0, [r1, #0x0]
- cmp r0, #0x0
- moveq r0, #0x0
- movne r0, #0x1
- bx lr
-
- arm_func_start __wctomb_noconv
-__wctomb_noconv: ; 0x020DF308
- cmp r0, #0x0
- moveq r0, #0x0
- strneb r1, [r0, #0x0]
- movne r0, #0x1
- bx lr
-
- arm_func_start wctomb
-wctomb: ; 0x020DF31C
- stmdb sp!, {r3,lr}
- ldr r2, _020DF334 ; =UNK_02106C98
- ldr r2, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF334: .word UNK_02106C98
-
- arm_func_start mbstowcs
-mbstowcs: ; 0x020DF338
- stmdb sp!, {r4-r8,lr}
- mov r7, r1
- mov r8, r0
- mov r0, r7
- mov r6, r2
- bl strlen
- mov r5, r0
- cmp r8, #0x0
- mov r4, #0x0
- beq _020DF3B8
- cmp r6, #0x0
- bls _020DF3B8
-_020DF368:
- ldrsb r0, [r7, #0x0]
- cmp r0, #0x0
- beq _020DF3A0
- mov r0, r8
- mov r1, r7
- mov r2, r5
- bl mbtowc
- cmp r0, #0x0
- add r8, r8, #0x2
- addgt r7, r7, r0
- subgt r5, r5, r0
- bgt _020DF3AC
- mvn r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020DF3A0:
- mov r0, #0x0
- strh r0, [r8, #0x0]
- b _020DF3B8
-_020DF3AC:
- add r4, r4, #0x1
- cmp r4, r6
- blo _020DF368
-_020DF3B8:
- mov r0, r4
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start wcstombs
-wcstombs:
- stmdb sp!, {r3-r9,lr}
- movs r4, r0
- mov r9, r1
- cmpne r9, #0x0
- mov r8, r2
- mov r7, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r3-r9,pc}
- add r6, sp, #0x0
-_020DF3E4:
- ldrh r1, [r9, #0x0]
- cmp r1, #0x0
- moveq r0, #0x0
- streqb r0, [r4, r7]
- beq _020DF430
- mov r0, r6
- add r9, r9, #0x2
- bl wctomb
- mov r5, r0
- add r0, r7, r5
- cmp r0, r8
- bhi _020DF430
- mov r1, r6
- mov r2, r5
- add r0, r4, r7
- bl strncpy
- add r7, r7, r5
- cmp r7, r8
- bls _020DF3E4
-_020DF430:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
-
- arm_func_start memcpy
-memcpy: ; 0x020DF438
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF444:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF444
- bx lr
-
- arm_func_start memmove
-memmove: ; 0x020DF458
- cmp r1, r0
- blo _020DF480
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF46C:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF46C
- bx lr
-_020DF480:
- cmp r2, #0x0
- add r3, r1, r2
- add r12, r0, r2
- bxeq lr
-_020DF490:
- ldrsb r1, [r3, #-0x1]!
- subs r2, r2, #0x1
- strb r1, [r12, #-0x1]!
- bne _020DF490
- bx lr
-
- arm_func_start memset
-memset: ; 0x020DF4A4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl __fill_mem
- mov r0, r4
- ldmia sp!, {r4,pc}
-
- arm_func_start memchr
-memchr:
- cmp r2, #0x0
- and r3, r1, #0xff
- beq _020DF4DC
-_020DF4C4:
- ldrb r1, [r0], #0x1
- cmp r1, r3
- subeq r0, r0, #0x1
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4C4
-_020DF4DC:
- mov r0, #0x0
- bx lr
-
- arm_func_start __memrchr
-__memrchr: ; 0x020DF4E4
- cmp r2, #0x0
- and r3, r1, #0xff
- add r0, r0, r2
- beq _020DF508
-_020DF4F4:
- ldrb r1, [r0, #-0x1]!
- cmp r1, r3
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4F4
-_020DF508:
- mov r0, #0x0
- bx lr
-
- arm_func_start memcmp
-memcmp: ; 0x020DF510
- cmp r2, #0x0
- beq _020DF548
-_020DF518:
- ldrb r12, [r0], #0x1
- ldrb r3, [r1], #0x1
- cmp r12, r3
- beq _020DF540
- ldrb r2, [r0, #-0x1]
- ldrb r0, [r1, #-0x1]
- cmp r2, r0
- mvncc r0, #0x0
- movcs r0, #0x1
- bx lr
-_020DF540:
- subs r2, r2, #0x1
- bne _020DF518
-_020DF548:
- mov r0, #0x0
- bx lr
-
- arm_func_start __fill_mem
-__fill_mem: ; 0x020DF550
- cmp r2, #0x20
- and r3, r1, #0xff
- blo _020DF5E4
- rsb r1, r0, #0x0
- ands r12, r1, #0x3
- beq _020DF57C
- sub r2, r2, r12
- and r1, r3, #0xff
-_020DF570:
- strb r1, [r0], #0x1
- subs r12, r12, #0x1
- bne _020DF570
-_020DF57C:
- cmp r3, #0x0
- beq _020DF594
- mov r1, r3, lsl #0x10
- orr r1, r1, r3, lsl #0x18
- orr r1, r1, r3, lsl #0x8
- orr r3, r3, r1
-_020DF594:
- movs r1, r2, lsr #0x5
- beq _020DF5C8
-_020DF59C:
- str r3, [r0, #0x0]
- str r3, [r0, #0x4]
- str r3, [r0, #0x8]
- str r3, [r0, #0xc]
- str r3, [r0, #0x10]
- str r3, [r0, #0x14]
- str r3, [r0, #0x18]
- str r3, [r0, #0x1c]
- add r0, r0, #0x20
- subs r1, r1, #0x1
- bne _020DF59C
-_020DF5C8:
- and r1, r2, #0x1f
- movs r1, r1, lsr #0x2
- beq _020DF5E0
-_020DF5D4:
- str r3, [r0], #0x4
- subs r1, r1, #0x1
- bne _020DF5D4
-_020DF5E0:
- and r2, r2, #0x3
-_020DF5E4:
- cmp r2, #0x0
- bxeq lr
- and r1, r3, #0xff
-_020DF5F0:
- strb r1, [r0], #0x1
- subs r2, r2, #0x1
- bne _020DF5F0
- bx lr
-
- arm_func_start parse_format_printf
-parse_format_printf: ; 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 ; =UNK_0210430C
- 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 ; =UNK_0210430C
- 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
- b _020DFB68
- b _020DFB68
- b _020DFB68
- b _020DFAA4
- b _020DFA24
- b _020DFA94
-_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
-_020DF994:
- b _020DF9E8
-_020DF998:
- b _020DFAA4
-_020DF99C:
- b _020DFA24
-_020DF9A0:
- b _020DFA94
-_020DF9A4:
- b _020DFB68
-_020DF9A8:
- b _020DF9E8
-_020DF9AC:
- b _020DFB68
-_020DF9B0:
- b _020DFB68
-_020DF9B4:
- b _020DFB68
-_020DF9B8:
- b _020DFB68
-_020DF9BC:
- b _020DFB54
-_020DF9C0:
- b _020DF9E8
-_020DF9C4:
- b _020DFAE0
-_020DF9C8:
- b _020DFB68
-_020DF9CC:
- b _020DFB68
-_020DF9D0:
- b _020DFB30
-_020DF9D4:
- b _020DFB68
-_020DF9D8:
- b _020DF9E8
-_020DF9DC:
- b _020DFB68
-_020DF9E0:
- b _020DFB68
-_020DF9E4:
- b _020DF9E8
-_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 UNK_0210430C
-_020DFB8C: .word 0x000001FD
-
- 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_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_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_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_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 ; =UNK_0210430C
- 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 ; =UNK_0210430C
- 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 ; =UNK_0210430C
- 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 ; =UNK_0210430C
- 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 UNK_0210430C
-_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_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_printf
- 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
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E123C
- b _020E123C
- b _020E123C
-_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
- b _020E123C
- b _020E123C
- b _020E123C
- b _020E148C
- b _020E0FC0
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E13CC
- b _020E1100
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E130C
- b _020E148C
- b _020E1100
-_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
-_020E13EC:
- b _020E1410
-_020E13F0:
- b _020E161C
-_020E13F4:
- b _020E1418
-_020E13F8:
- b _020E1420
-_020E13FC:
- b _020E1448
-_020E1400:
- b _020E161C
-_020E1404:
- b _020E1428
-_020E1408:
- b _020E1438
-_020E140C:
- b _020E1440
-_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_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_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_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_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_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_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_start qsort
qsort: ; 0x020E1888
stmdb sp!, {r3-r11,lr}
@@ -3908,50 +582,28 @@ _020E1CA0:
cmp r0, #0x15
addls pc, pc, r0, lsl #0x2
b _020E1EF0
-_020E1CB0:
- b _020E1D6C
-_020E1CB4:
- b _020E1D08
-_020E1CB8:
- b _020E1D1C
-_020E1CBC:
- b _020E1D1C
-_020E1CC0:
- b _020E1D1C
-_020E1CC4:
- b _020E1EF0
-_020E1CC8:
- b _020E1D08
-_020E1CCC:
- b _020E1EF0
-_020E1CD0:
- b _020E1EF0
-_020E1CD4:
- b _020E1EF0
-_020E1CD8:
- b _020E1EF0
-_020E1CDC:
- b _020E1EF8
-_020E1CE0:
- b _020E1D08
-_020E1CE4:
- b _020E1D58
-_020E1CE8:
- b _020E1EF0
-_020E1CEC:
- b _020E1EF0
-_020E1CF0:
- b _020E1D90
-_020E1CF4:
- b _020E1EF0
-_020E1CF8:
- b _020E1D08
-_020E1CFC:
- b _020E1EF0
-_020E1D00:
- b _020E1EF0
-_020E1D04:
- b _020E1D08
+ b _020E1D6C ; case
+ b _020E1D08 ; case
+ b _020E1D1C ; case
+ b _020E1D1C ; case
+ b _020E1D1C ; case
+ b _020E1EF0 ; case
+ b _020E1D08 ; case
+ b _020E1EF0 ; case
+ b _020E1EF0 ; case
+ b _020E1EF0 ; case
+ b _020E1EF0 ; case
+ b _020E1EF8 ; case
+ b _020E1D08 ; case
+ b _020E1D58 ; case
+ b _020E1EF0 ; case
+ b _020E1EF0 ; case
+ b _020E1D90 ; case
+ b _020E1EF0 ; case
+ b _020E1D08 ; case
+ b _020E1EF0 ; case
+ b _020E1EF0 ; case
+ b _020E1D08 ; case
_020E1D08:
ldrb r0, [sp, #0x2]
cmp r0, #0x9
@@ -4419,22 +1071,14 @@ _020E2364:
cmp r0, #0x7
addls pc, pc, r0, lsl #0x2
b _020E2408
-_020E237C:
- b _020E239C
-_020E2380:
- b _020E23A8
-_020E2384:
- b _020E23B4
-_020E2388:
- b _020E23C0
-_020E238C:
- b _020E23CC
-_020E2390:
- b _020E23E0
-_020E2394:
- b _020E23EC
-_020E2398:
- b _020E23F8
+ b _020E239C ; case
+ b _020E23A8 ; case
+ b _020E23B4 ; case
+ b _020E23C0 ; case
+ b _020E23CC ; case
+ b _020E23E0 ; case
+ b _020E23EC ; case
+ b _020E23F8 ; case
_020E239C:
ldr r0, [sp, #0x1c]
str r0, [r5, #0x0]
@@ -4563,22 +1207,14 @@ _020E2538:
cmp r0, #0x7
addls pc, pc, r0, lsl #0x2
b _020E25DC
-_020E2550:
- b _020E2570
-_020E2554:
- b _020E257C
-_020E2558:
- b _020E2588
-_020E255C:
- b _020E2594
-_020E2560:
- b _020E25A0
-_020E2564:
- b _020E25B4
-_020E2568:
- b _020E25C0
-_020E256C:
- b _020E25CC
+ b _020E2570 ; case
+ b _020E257C ; case
+ b _020E2588 ; case
+ b _020E2594 ; case
+ b _020E25A0 ; case
+ b _020E25B4 ; case
+ b _020E25C0 ; case
+ b _020E25CC ; case
_020E2570:
ldr r0, [sp, #0x3c]
str r0, [r5, #0x0]
@@ -5055,22 +1691,14 @@ _020E2BC8:
cmp r0, #0x7
addls pc, pc, r0, lsl #0x2
b _020E2C2C
-_020E2BE0:
- b _020E2C00
-_020E2BE4:
- b _020E2C18
-_020E2BE8:
- b _020E2C08
-_020E2BEC:
- b _020E2C10
-_020E2BF0:
- b _020E2C2C
-_020E2BF4:
- b _020E2C2C
-_020E2BF8:
- b _020E2C2C
-_020E2BFC:
- b _020E2C20
+ b _020E2C00 ; case
+ b _020E2C18 ; case
+ b _020E2C08 ; case
+ b _020E2C10 ; case
+ b _020E2C2C ; case
+ b _020E2C2C ; case
+ b _020E2C2C ; case
+ b _020E2C20 ; case
_020E2C00:
str r4, [r5, #0x0]
b _020E2C2C
@@ -5790,7 +2418,7 @@ _020E3538:
mov r0, r1
b _020E3548
_020E3540:
- ldr r0, _020E42FC ; =UNK_0210428C
+ ldr r0, _020E42FC ; =__upper_mapC
ldrb r0, [r0, r1]
_020E3548:
cmp r0, #0x49
@@ -5858,7 +2486,7 @@ _020E3604:
bne _020E3604
ldrb r2, [r7, #0x0]
add r6, sp, #0x77
- ldr r7, _020E42FC ; =UNK_0210428C
+ ldr r7, _020E42FC ; =__upper_mapC
strb r2, [r0, #0x0]
b _020E3658
_020E3638:
@@ -5960,7 +2588,7 @@ _020E3780:
mov r2, r1
b _020E3790
_020E3788:
- ldr r0, _020E42FC ; =UNK_0210428C
+ ldr r0, _020E42FC ; =__upper_mapC
ldrb r2, [r0, r1]
_020E3790:
ldrsb r0, [r7, #0x0]
@@ -6091,7 +2719,7 @@ _020E3908:
blt _020E394C
cmp r0, #0x80
bge _020E394C
- ldr r2, _020E42FC ; =UNK_0210428C
+ ldr r2, _020E42FC ; =__upper_mapC
ldrb r0, [r2, r0]
_020E394C:
cmp r0, #0x58
@@ -6228,7 +2856,7 @@ _020E3B08:
mov r0, r1
b _020E3B18
_020E3B10:
- ldr r0, _020E42FC ; =UNK_0210428C
+ ldr r0, _020E42FC ; =__upper_mapC
ldrb r0, [r0, r1]
_020E3B18:
cmp r0, #0x45
@@ -6446,7 +3074,7 @@ _020E3DE0:
blt _020E3E20
cmp r1, #0x80
bge _020E3E20
- ldr r2, _020E42FC ; =UNK_0210428C
+ ldr r2, _020E42FC ; =__upper_mapC
ldrb r1, [r2, r1]
_020E3E20:
cmp r1, #0x41
@@ -6507,7 +3135,7 @@ _020E3EBC:
blt _020E3EFC
cmp r1, #0x80
bge _020E3EFC
- ldr r2, _020E42FC ; =UNK_0210428C
+ ldr r2, _020E42FC ; =__upper_mapC
ldrb r1, [r2, r1]
_020E3EFC:
cmp r1, #0x41
@@ -6549,7 +3177,7 @@ _020E3F80:
mov r0, r1
b _020E3F90
_020E3F88:
- ldr r0, _020E42FC ; =UNK_0210428C
+ ldr r0, _020E42FC ; =__upper_mapC
ldrb r0, [r0, r1]
_020E3F90:
cmp r0, #0x50
@@ -6797,7 +3425,7 @@ _020E4298:
_020E42F0: .word UNK_02104439
_020E42F4: .word UNK_02104434
_020E42F8: .word UNK_0210430C
-_020E42FC: .word UNK_0210428C
+_020E42FC: .word __upper_mapC
_020E4300: .word __float_huge
_020E4304: .word 0x00007FFF
_020E4308: .word 0x00000E2C
@@ -7011,7 +3639,7 @@ strtold: ; 0x020E455C
bl _dgr
bls _020E4620
_020E4614:
- ldr r0, _020E4638 ; =UNK_021D74A8
+ ldr r0, _020E4638 ; =errno
mov r1, #0x22
str r1, [r0, #0x0]
_020E4620:
@@ -7022,7 +3650,7 @@ _020E4620:
.balign 4
_020E4630: .word __StringRead
_020E4634: .word 0x7FEFFFFF
-_020E4638: .word UNK_021D74A8
+_020E4638: .word errno
arm_func_start atod
atod: ; 0x020E463C
@@ -7249,7 +3877,7 @@ _020E4930:
mov r0, r6
b _020E4940
_020E4938:
- ldr r0, _020E4A30 ; =UNK_0210428C
+ ldr r0, _020E4A30 ; =__upper_mapC
ldrb r0, [r0, r6]
_020E4940:
sub r0, r0, #0x37
@@ -7265,7 +3893,7 @@ _020E495C:
blt _020E4974
cmp r6, #0x80
bge _020E4974
- ldr r0, _020E4A30 ; =UNK_0210428C
+ ldr r0, _020E4A30 ; =__upper_mapC
ldrb r6, [r0, r6]
_020E4974:
sub r6, r6, #0x37
@@ -7321,7 +3949,7 @@ _020E4A10:
ldmia sp!, {r4-r11,pc}
.balign 4
_020E4A2C: .word UNK_0210430C
-_020E4A30: .word UNK_0210428C
+_020E4A30: .word __upper_mapC
arm_func_start __strtoull
__strtoull: ; 0x020E4A34
@@ -7551,7 +4179,7 @@ _020E4D44:
mov r0, r6
b _020E4D54
_020E4D4C:
- ldr r0, _020E4E7C ; =UNK_0210428C
+ ldr r0, _020E4E7C ; =__upper_mapC
ldrb r0, [r0, r6]
_020E4D54:
sub r0, r0, #0x37
@@ -7567,7 +4195,7 @@ _020E4D70:
blt _020E4D88
cmp r6, #0x80
bge _020E4D88
- ldr r0, _020E4E7C ; =UNK_0210428C
+ ldr r0, _020E4E7C ; =__upper_mapC
ldrb r6, [r0, r6]
_020E4D88:
sub r6, r6, #0x37
@@ -7637,7 +4265,7 @@ _020E4E58:
ldmia sp!, {r4-r11,pc}
.balign 4
_020E4E78: .word UNK_0210430C
-_020E4E7C: .word UNK_0210428C
+_020E4E7C: .word __upper_mapC
arm_func_start strtoul
strtoul: ; 0x020E4E80
@@ -7666,7 +4294,7 @@ strtoul: ; 0x020E4E80
ldr r1, [sp, #0x14]
cmp r1, #0x0
beq _020E4EFC
- ldr r0, _020E4F14 ; =UNK_021D74A8
+ ldr r0, _020E4F14 ; =errno
mov r1, #0x22
str r1, [r0, #0x0]
add sp, sp, #0x20
@@ -7680,7 +4308,7 @@ _020E4EFC:
ldmia sp!, {r3-r5,pc}
.balign 4
_020E4F10: .word __StringRead
-_020E4F14: .word UNK_021D74A8
+_020E4F14: .word errno
arm_func_start strtold2
strtold2: ; 0x020E4F18
@@ -7722,7 +4350,7 @@ _020E4F94:
bls _020E4FC8
_020E4FA4:
ldr r0, [sp, #0x18]
- ldr r1, _020E4FDC ; =UNK_021D74A8
+ ldr r1, _020E4FDC ; =errno
mov r2, #0x22
cmp r0, #0x0
movne r0, #0x80000000
@@ -7737,7 +4365,7 @@ _020E4FC8:
ldmia sp!, {r3-r5,pc}
.balign 4
_020E4FD8: .word __StringRead
-_020E4FDC: .word UNK_021D74A8
+_020E4FDC: .word errno
arm_func_start atol
atol: ; 0x020E4FE0
@@ -8070,48 +4698,27 @@ _020E540C:
cmp r0, #0x14
addls pc, pc, r0, lsl #0x2
b _020E55EC
-_020E541C:
- b _020E5470
-_020E5420:
- b _020E5528
-_020E5424:
- b _020E54A8
-_020E5428:
- b _020E5518
-_020E542C:
- b _020E55EC
-_020E5430:
- b _020E5470
-_020E5434:
- b _020E55EC
-_020E5438:
- b _020E55EC
-_020E543C:
- b _020E55EC
-_020E5440:
- b _020E55EC
-_020E5444:
- b _020E55D8
-_020E5448:
- b _020E5470
-_020E544C:
- b _020E5564
-_020E5450:
- b _020E55EC
-_020E5454:
- b _020E55EC
-_020E5458:
- b _020E55B4
-_020E545C:
- b _020E55EC
-_020E5460:
- b _020E5470
-_020E5464:
- b _020E55EC
-_020E5468:
- b _020E55EC
-_020E546C:
- b _020E5470
+ b _020E5470 ; case
+ b _020E5528 ; case
+ b _020E54A8 ; case
+ b _020E5518 ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55D8 ; case
+ b _020E5470 ; case
+ b _020E5564 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55B4 ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
_020E5470:
ldrb r0, [sp, #0x4]
cmp r0, #0x9
@@ -9849,24 +6456,15 @@ _020E6C98:
cmp r0, #0x8
addls pc, pc, r0, lsl #0x2
b _020E6F18
-_020E6CB8:
- b _020E6CDC
-_020E6CBC:
- b _020E6F18
-_020E6CC0:
- b _020E6CE4
-_020E6CC4:
- b _020E6CEC
-_020E6CC8:
- b _020E6D14
-_020E6CCC:
- b _020E6F18
-_020E6CD0:
- b _020E6CF4
-_020E6CD4:
- b _020E6D04
-_020E6CD8:
- b _020E6D0C
+ b _020E6CDC ; case
+ b _020E6F18 ; case
+ b _020E6CE4 ; case
+ b _020E6CEC ; case
+ b _020E6D14 ; case
+ b _020E6F18 ; case
+ b _020E6CF4 ; case
+ b _020E6D04 ; case
+ b _020E6D0C ; case
_020E6CDC:
str r4, [r6, #0x0]
b _020E6F18
@@ -10387,7 +6985,7 @@ _020E73E8:
orrs r0, r7, r5
bne _020E7420
ldr r0, _020E764C ; =__float_nan
- ldr r1, _020E7650 ; =UNK_021D74A8
+ ldr r1, _020E7650 ; =errno
ldr r0, [r0, #0x0]
mov r2, #0x21
str r2, [r1, #0x0]
@@ -10542,7 +7140,7 @@ _020E7640: .word 0x43400000
_020E7644: .word 0xFFFFFC01
_020E7648: .word 0x3FE00000
_020E764C: .word __float_nan
-_020E7650: .word UNK_021D74A8
+_020E7650: .word errno
_020E7654: .word 0x41E00000
_020E7658: .word 0x3FEFFFFF
_020E765C: .word 0x3FD00000
@@ -11863,88 +8461,47 @@ _020E8988:
cmp r1, #0x28
addls pc, pc, r1, lsl #0x2
b _020E8BE4
-_020E8998:
- b _020E8A68
-_020E899C:
- b _020E8BE4
-_020E89A0:
- b _020E8BE4
-_020E89A4:
- b _020E8BE4
-_020E89A8:
- b _020E8BE4
-_020E89AC:
- b _020E8BE4
-_020E89B0:
- b _020E8BE4
-_020E89B4:
- b _020E8BE4
-_020E89B8:
- b _020E8BE4
-_020E89BC:
- b _020E8BE4
-_020E89C0:
- b _020E8BE4
-_020E89C4:
- b _020E8BE4
-_020E89C8:
- b _020E8BE4
-_020E89CC:
- b _020E8BE4
-_020E89D0:
- b _020E8BE4
-_020E89D4:
- b _020E8BE4
-_020E89D8:
- b _020E8A7C
-_020E89DC:
- b _020E8BE4
-_020E89E0:
- b _020E8BE4
-_020E89E4:
- b _020E8BE4
-_020E89E8:
- b _020E8BE4
-_020E89EC:
- b _020E8BE4
-_020E89F0:
- b _020E8BE4
-_020E89F4:
- b _020E8BE4
-_020E89F8:
- b _020E8A90
-_020E89FC:
- b _020E8AA4
-_020E8A00:
- b _020E8AB8
-_020E8A04:
- b _020E8ACC
-_020E8A08:
- b _020E8AE0
-_020E8A0C:
- b _020E8AF4
-_020E8A10:
- b _020E8B08
-_020E8A14:
- b _020E8B1C
-_020E8A18:
- b _020E8B30
-_020E8A1C:
- b _020E8B44
-_020E8A20:
- b _020E8B58
-_020E8A24:
- b _020E8B6C
-_020E8A28:
- b _020E8B80
-_020E8A2C:
- b _020E8B94
-_020E8A30:
- b _020E8BA8
-_020E8A34:
- b _020E8BBC
-_020E8A38:
- b _020E8BD0
+ 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
@@ -13145,7 +9702,7 @@ scalbn: ; 0x020E9AA4
arm_func_start stricmp
stricmp: ; 0x020E9AD0
stmdb sp!, {r3,lr}
- ldr r3, _020E9B34 ; =UNK_0210420C
+ ldr r3, _020E9B34 ; =__lower_mapC
_020E9AD8:
ldrb r2, [r0], #0x1
cmp r2, #0x0
@@ -13173,7 +9730,7 @@ _020E9B0C:
mov r0, #0x0
ldmia sp!, {r3,pc}
.balign 4
-_020E9B34: .word UNK_0210420C
+_020E9B34: .word __lower_mapC
arm_func_start strnicmp
strnicmp: ; 0x020E9B38
diff --git a/arm9/asm/stdlibmwcc.s b/arm9/asm/stdlibmwcc.s
index b7966e40..0af0108d 100644
--- a/arm9/asm/stdlibmwcc.s
+++ b/arm9/asm/stdlibmwcc.s
@@ -1,6 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021D74A8
+ .extern errno
.section .bss
@@ -764,7 +764,7 @@ _020EA580:
_020EA58C:
ldr r2, _020EA5AC ; =0x7FF80000
orr r1, r1, r2
- ldr r3, _020EA5B0 ; =UNK_021D74A8
+ ldr r3, _020EA5B0 ; =errno
mov r4, #0x21
str r4, [r3, #0x0]
ldmia sp!, {r4-r6,lr}
@@ -772,7 +772,7 @@ _020EA58C:
.balign 4
_020EA5A8: .word 0x7FF00000
_020EA5AC: .word 0x7FF80000
-_020EA5B0: .word UNK_021D74A8
+_020EA5B0: .word errno
arm_func_start _drsb
_drsb: ; 0x020EA5B4
diff --git a/arm9/global.inc b/arm9/global.inc
index c2c188be..5ad65da6 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -8225,10 +8225,10 @@
.extern UNK_021C93A0
.extern UNK_021C9520
.extern UNK_021C9EE0
-.extern UNK_021D74A8
+.extern errno
.extern Unk_0210683C
-.extern UNK_0210420C
-.extern UNK_0210428C
+.extern __lower_mapC
+.extern __upper_mapC
.extern UNK_0210430C
.extern Unk_02106840
.extern Unk_02106900
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 49201028..09891f6b 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -161,7 +161,7 @@ _021D8F40:
ldr r0, _021D91BC ; =UNK04_02210468
mov r2, #0
ldr r1, [r0]
- ldr r0, _021D91C4 ; =UNK_021D74A8
+ ldr r0, _021D91C4 ; =errno
str r2, [sp]
str r2, [r0]
add r0, r1, #0x1000
@@ -169,7 +169,7 @@ _021D8F40:
ldr r1, _021D91C8 ; =UNK04_0220BF3C
bl MOD04_021DA388
bl atol
- ldr r1, _021D91C4 ; =UNK_021D74A8
+ ldr r1, _021D91C4 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021D8F9C
@@ -324,7 +324,7 @@ _021D91B0:
.align 2, 0
_021D91BC: .word UNK04_02210468
_021D91C0: .word UNK04_0220BF34
-_021D91C4: .word UNK_021D74A8
+_021D91C4: .word errno
_021D91C8: .word UNK04_0220BF3C
_021D91CC: .word 0x00004E85
_021D91D0: .word 0x000059D8
@@ -3164,7 +3164,7 @@ _021DB970:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DB9A0
@@ -3653,7 +3653,7 @@ _021DC080:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DC0BC
@@ -3705,7 +3705,7 @@ _021DC118:
_021DC14C:
add r0, sp, #0x64
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC17C
@@ -3873,7 +3873,7 @@ _021DC3B4:
strb r2, [r1, r0]
mov r0, r1
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC3F0
@@ -4067,7 +4067,7 @@ _021DC680: .word UNK04_0220C36C
_021DC684: .word OSi_ThreadInfo
_021DC688: .word 0x00001B34
_021DC68C: .word UNK04_0220C418
-_021DC690: .word UNK_021D74A8
+_021DC690: .word errno
_021DC694: .word 0x0000012E
_021DC698: .word UNK04_0221048C
_021DC69C: .word UNK04_0220BEB4
@@ -4408,7 +4408,7 @@ MOD04_021DCA84: ; 0x021DCA84
mov r1, r6
bl strcpy
mov r2, #0
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
add r0, sp, #0x28
strb r2, [sp, #0x23]
strb r2, [sp, #0x27]
@@ -4418,7 +4418,7 @@ MOD04_021DCA84: ; 0x021DCA84
strb r2, [sp, #0x35]
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp]
ldr r1, [r1]
cmp r1, #0x22
@@ -4445,12 +4445,12 @@ _021DCBC4:
ldr r0, [sp, #4]
cmp r0, #0xc
bhi _021DCCA8
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
mov r2, #0
add r0, sp, #0x21
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #8]
ldr r0, [r1]
cmp r0, #0x22
@@ -4459,7 +4459,7 @@ _021DCBC4:
add r0, sp, #0x2d
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x10]
ldr r0, [r1]
cmp r0, #0x22
@@ -4468,7 +4468,7 @@ _021DCBC4:
add r0, sp, #0x30
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x14]
ldr r0, [r1]
cmp r0, #0x22
@@ -4477,7 +4477,7 @@ _021DCBC4:
add r0, sp, #0x33
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x18]
ldr r0, [r1]
cmp r0, #0x22
@@ -4505,7 +4505,7 @@ _021DCCA8:
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021DCCB4: .word UNK04_0220C580
-_021DCCB8: .word UNK_021D74A8
+_021DCCB8: .word errno
_021DCCBC: .word UNK04_0220C550
_021DCCC0: .word UNK04_022104FC
_021DCCC4: .word UNK04_022104F8
@@ -4550,7 +4550,7 @@ _021DCD20:
ldmia sp!, {r4, pc}
_021DCD4C:
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4588,7 +4588,7 @@ _021DCDA0:
_021DCDD4:
add r0, sp, #0
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4659,7 +4659,7 @@ _021DCED4: .word UNK04_02210504
_021DCED8: .word 0xFFFF9DF3
_021DCEDC: .word UNK04_0220C5A0
_021DCEE0: .word UNK04_0220C5A8
-_021DCEE4: .word UNK_021D74A8
+_021DCEE4: .word errno
_021DCEE8: .word 0xFFFF9E58
_021DCEEC: .word UNK04_0220C5B4
_021DCEF0: .word 0xFFFFA240
@@ -27563,7 +27563,7 @@ MOD04_021F01C4: ; 0x021F01C4
mov r2, r0
cmp r3, #0
beq _021F01FC
- ldr r1, _021F0204 ; =UNK_0210420C
+ ldr r1, _021F0204 ; =__lower_mapC
_021F01D8:
cmp r3, #0
blt _021F01EC
@@ -27579,7 +27579,7 @@ _021F01FC:
mov r0, r2
bx lr
.align 2, 0
-_021F0204: .word UNK_0210420C
+_021F0204: .word __lower_mapC
arm_func_end MOD04_021F01C4
arm_func_start MOD04_021F0208
@@ -33471,7 +33471,7 @@ _021F5418:
blt _021F5434
cmp r1, #0x80
bge _021F5434
- ldr r0, _021F5844 ; =UNK_0210428C
+ ldr r0, _021F5844 ; =__upper_mapC
ldrb r1, [r0, r1]
_021F5434:
mov r0, r1, lsl #0x18
@@ -33758,7 +33758,7 @@ _021F5834: .word UNK04_0220E2B8
_021F5838: .word UNK04_0220E2C4
_021F583C: .word UNK04_0220E2D0
_021F5840: .word UNK04_0220E2E8
-_021F5844: .word UNK_0210428C
+_021F5844: .word __upper_mapC
_021F5848: .word UNK04_0220E2F8
_021F584C: .word UNK04_0220E2FC
_021F5850: .word UNK04_0220E300
@@ -49986,7 +49986,7 @@ MOD04_022034F4: ; 0x022034F4
mov ip, #0
cmp lr, #0
beq _02203538
- ldr r3, _0220354C ; =UNK_0210420C
+ ldr r3, _0220354C ; =__lower_mapC
ldr r2, _02203550 ; =0x9CCF9319
_02203514:
cmp lr, #0
@@ -50006,7 +50006,7 @@ _02203538:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220354C: .word UNK_0210420C
+_0220354C: .word __lower_mapC
_02203550: .word 0x9CCF9319
arm_func_end MOD04_022034F4
@@ -53297,7 +53297,7 @@ MOD04_02206124: ; 0x02206124
mov ip, #0
cmp lr, #0
beq _02206168
- ldr r3, _0220617C ; =UNK_0210420C
+ ldr r3, _0220617C ; =__lower_mapC
ldr r2, _02206180 ; =0x9CCF9319
_02206144:
cmp lr, #0
@@ -53317,7 +53317,7 @@ _02206168:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220617C: .word UNK_0210420C
+_0220617C: .word __lower_mapC
_02206180: .word 0x9CCF9319
arm_func_end MOD04_02206124