summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/MSL_abort_exit.s12
-rw-r--r--arm9/asm/MSL_ansi_files.s9
-rw-r--r--arm9/asm/MSL_assert.s6
-rw-r--r--arm9/asm/MSL_buffer_io.s9
-rw-r--r--arm9/asm/MSL_direct_io.s15
-rw-r--r--arm9/asm/MSL_file_io.s9
-rw-r--r--arm9/asm/MSL_file_pos.s15
-rw-r--r--arm9/asm/MSL_math.s6
-rw-r--r--arm9/asm/MSL_mbstring.s15
-rw-r--r--arm9/asm/MSL_mem.s6
-rw-r--r--arm9/asm/MSL_printf.s44
-rw-r--r--arm9/asm/MSL_qsort.s6
-rw-r--r--arm9/asm/MSL_scanf.s18
-rw-r--r--arm9/asm/MSL_signal.s6
-rw-r--r--arm9/asm/MSL_strtold.s18
-rw-r--r--arm9/asm/MSL_strtoul.s18
-rw-r--r--arm9/asm/MSL_wctype.s61
-rw-r--r--arm9/asm/MSL_wmem.s6
-rw-r--r--arm9/asm/MSL_wprintf.s2373
-rw-r--r--arm9/asm/libc.s2572
-rw-r--r--arm9/asm/stdlibmwcc.s5
22 files changed, 2664 insertions, 2567 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 0a51e907..7cb36e71 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -571,7 +571,9 @@ Static arm9
Object MSL_strtold.o
Object MSL_strtoul.o
Object MSL_wchar_io.o
+ Object MSL_wctype.o
Object MSL_wmem.o
+ Object MSL_wprintf.o
Object libc.o
Object stdlibmwcc.o
}
diff --git a/arm9/asm/MSL_abort_exit.s b/arm9/asm/MSL_abort_exit.s
index 92729b72..e4aadfe3 100644
--- a/arm9/asm/MSL_abort_exit.s
+++ b/arm9/asm/MSL_abort_exit.s
@@ -158,3 +158,15 @@ _020DE2D8: .word __cs_ref
_020DE2DC: .word __console_exit
_020DE2E0: .word __atexit_funcs
arm_func_end __exit
+
+ .section .exceptix,4
+
+ .word abort
+ .short 37
+ .word 0x00100000
+ .word exit
+ .short 77
+ .word 0x00100100
+ .word __exit
+ .short 297
+ .word 0x00200300
diff --git a/arm9/asm/MSL_ansi_files.s b/arm9/asm/MSL_ansi_files.s
index 236868e3..b93323c0 100644
--- a/arm9/asm/MSL_ansi_files.s
+++ b/arm9/asm/MSL_ansi_files.s
@@ -140,3 +140,12 @@ _020DE3DC:
.balign 4
_020DE3EC: .word __files
arm_func_end __flush_all
+
+ .section .exceptix,4
+
+ .word __flush_line_buffered_output_files
+ .short 141
+ .word 0x00403F00
+ .word __flush_all
+ .short 105
+ .word 0x00403F00
diff --git a/arm9/asm/MSL_assert.s b/arm9/asm/MSL_assert.s
index 140a07f1..161d2ab9 100644
--- a/arm9/asm/MSL_assert.s
+++ b/arm9/asm/MSL_assert.s
@@ -29,3 +29,9 @@ __msl_assertion_failed: ; 0x020DE3FC
.balign 4
_020DE434: .word __local_str__msl_assertion_failed
arm_func_end __msl_assertion_failed
+
+ .section .exceptix,4
+
+ .word __msl_assertion_failed
+ .short 61
+ .word 0x00200100
diff --git a/arm9/asm/MSL_buffer_io.s b/arm9/asm/MSL_buffer_io.s
index 5fd10b64..940daf6d 100644
--- a/arm9/asm/MSL_buffer_io.s
+++ b/arm9/asm/MSL_buffer_io.s
@@ -108,3 +108,12 @@ _020DE574:
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
arm_func_end __flush_buffer
+
+ .section .exceptix,4
+
+ .word __load_buffer
+ .short 141
+ .word 0x00200700
+ .word __flush_buffer
+ .short 137
+ .word 0x00200300
diff --git a/arm9/asm/MSL_direct_io.s b/arm9/asm/MSL_direct_io.s
index dde2da02..8e9766e5 100644
--- a/arm9/asm/MSL_direct_io.s
+++ b/arm9/asm/MSL_direct_io.s
@@ -85,6 +85,7 @@ _020DE680: .word __cs
_020DE684: .word OSi_ThreadInfo
_020DE688: .word __cs_id
_020DE68C: .word __cs_ref
+ arm_func_end fread
arm_func_start __fread
__fread: ; 0x020DE690
@@ -316,6 +317,7 @@ _020DE9C4:
bl _u32_div_f
add sp, sp, #0x4
ldmia sp!, {r3-r10,pc}
+ arm_func_end __fread
arm_func_start __fwrite
__fwrite:
@@ -504,3 +506,16 @@ _020DEC5C:
bl _u32_div_f
add sp, sp, #0x8
ldmia sp!, {r3-r11,pc}
+ arm_func_end __fwrite
+
+ .section .exceptix,4
+
+ .word fread
+ .short 269
+ .word 0x00407F00
+ .word __fread
+ .short 841
+ .word 0x00507F00
+ .word __fwrite
+ .short 689
+ .word 0x0060FF00 \ No newline at end of file
diff --git a/arm9/asm/MSL_file_io.s b/arm9/asm/MSL_file_io.s
index d722367f..ff2da087 100644
--- a/arm9/asm/MSL_file_io.s
+++ b/arm9/asm/MSL_file_io.s
@@ -104,3 +104,12 @@ _020DEDCC:
str r0, [r4, #0x28]
ldmia sp!, {r4,pc}
arm_func_end fflush
+
+ .section .exceptix,4
+
+ .word fclose
+ .short 117
+ .word 0x00200300
+ .word fflush
+ .short 233
+ .word 0x00100100
diff --git a/arm9/asm/MSL_file_pos.s b/arm9/asm/MSL_file_pos.s
index a0c82aea..a5870123 100644
--- a/arm9/asm/MSL_file_pos.s
+++ b/arm9/asm/MSL_file_pos.s
@@ -361,3 +361,18 @@ rewind: ; 0x020DF290
strb r0, [r4, #0xd]
ldmia sp!, {r4,pc}
arm_func_end rewind
+
+ .section .exceptix,4
+
+ .word ftell
+ .short 285
+ .word 0x00300F00
+ .word _fseek
+ .short 489
+ .word 0x00400320
+ .word fseek
+ .short 301
+ .word 0x00403F00
+ .word rewind
+ .short 37
+ .word 0x00100100
diff --git a/arm9/asm/MSL_math.s b/arm9/asm/MSL_math.s
index aaa97c48..36bb4071 100644
--- a/arm9/asm/MSL_math.s
+++ b/arm9/asm/MSL_math.s
@@ -14,3 +14,9 @@ nan: ; 0x020DE2E4
_020DE2F4: .word __float_nan
_020DE2F8: .word _f2d
arm_func_end nan
+
+ .section .exceptix,4
+
+ .word nan
+ .short 25
+ .word 0x00000000
diff --git a/arm9/asm/MSL_mbstring.s b/arm9/asm/MSL_mbstring.s
index 92c017d5..b63cba8a 100644
--- a/arm9/asm/MSL_mbstring.s
+++ b/arm9/asm/MSL_mbstring.s
@@ -230,3 +230,18 @@ _020DF430:
mov r0, r7
ldmia sp!, {r3-r9,pc}
arm_func_end wcstombs
+
+ .section .exceptix,4
+
+ .word mbtowc
+ .short 29
+ .word 0x00100000
+ .word wctomb
+ .short 29
+ .word 0x00100000
+ .word mbstowcs
+ .short 137
+ .word 0x00301F00
+ .word wcstombs
+ .short 121
+ .word 0x00403F00
diff --git a/arm9/asm/MSL_mem.s b/arm9/asm/MSL_mem.s
index 39bdc299..64728f18 100644
--- a/arm9/asm/MSL_mem.s
+++ b/arm9/asm/MSL_mem.s
@@ -108,3 +108,9 @@ _020DF548:
mov r0, #0x0
bx lr
arm_func_end memcmp
+
+ .section .exceptix,4
+
+ .word memset
+ .short 21
+ .word 0x00100100
diff --git a/arm9/asm/MSL_printf.s b/arm9/asm/MSL_printf.s
index b33b3841..a87b10f2 100644
--- a/arm9/asm/MSL_printf.s
+++ b/arm9/asm/MSL_printf.s
@@ -76,7 +76,7 @@ UNK_02106DDC: ; 0x02106DDC
.text
- local_arm_func_start parse_format
+ arm_func_start parse_format
parse_format: ; 0x020DF600
stmdb sp!, {r4-r8,lr}
sub sp, sp, #0x10
@@ -2571,3 +2571,45 @@ sprintf: ; 0x020E185C
add sp, sp, #0x10
bx lr
arm_func_end sprintf
+
+ .section .exceptix,4
+
+ .word long2str
+ .short 589
+ .word 0x0090FF20
+ .word longlong2str
+ .short 737
+ .word 0x00A0FF20
+ .word double2hex
+ .short 1245
+ .word 0x00F07F20
+ .word float2str
+ .short 1893
+ .word 0x00C0FF20
+ .word __pformatter
+ .short 2084
+ .word UNK_020EC710
+ .word __FileWrite
+ .short 45
+ .word 0x00200300
+ .word __StringWrite
+ .short 69
+ .word 0x00200300
+ .word printf
+ .short 281
+ .word 0x00300120
+ .word vsnprintf
+ .short 105
+ .word 0x00300300
+ .word snprintf
+ .short 41
+ .word 0x00300020
+ .word sprintf
+ .short 45
+ .word 0x00300020
+
+ .section .exception,8
+
+UNK_020EC710: ; 0x020EC710
+ .byte 0x20, 0xFF, 0x09, 0x60
+ .balign 8
diff --git a/arm9/asm/MSL_qsort.s b/arm9/asm/MSL_qsort.s
index 8494337d..8c76ad41 100644
--- a/arm9/asm/MSL_qsort.s
+++ b/arm9/asm/MSL_qsort.s
@@ -104,3 +104,9 @@ _020E19D8:
add sp, sp, #0x10
ldmia sp!, {r3-r11,pc}
arm_func_end qsort
+
+ .section .exceptix,4
+
+ .word qsort
+ .short 357
+ .word 0x0070FF00
diff --git a/arm9/asm/MSL_scanf.s b/arm9/asm/MSL_scanf.s
index f0cfa854..c0b41de4 100644
--- a/arm9/asm/MSL_scanf.s
+++ b/arm9/asm/MSL_scanf.s
@@ -1448,3 +1448,21 @@ sscanf: ; 0x020E2D54
add sp, sp, #0x10
bx lr
arm_func_end sscanf
+
+ .section .exceptix,4
+
+ .word __sformatter
+ .short 3412
+ .word UNK_020EC718
+ .word vsscanf
+ .short 85
+ .word 0x00200000
+ .word sscanf
+ .short 41
+ .word 0x00300020
+
+ .section .exception,8
+
+UNK_020EC718: ; 0x020EC718
+ .byte 0x00, 0xFF, 0x01, 0xB0
+ .balign 8
diff --git a/arm9/asm/MSL_signal.s b/arm9/asm/MSL_signal.s
index 14370643..01fd6fe8 100644
--- a/arm9/asm/MSL_signal.s
+++ b/arm9/asm/MSL_signal.s
@@ -103,3 +103,9 @@ _020E2EA0: .word __cs_id
_020E2EA4: .word __cs_ref
_020E2EA8: .word signal_funcs
arm_func_end raise
+
+ .section .exceptix,4
+
+ .word raise
+ .short 305
+ .word 0x00200300
diff --git a/arm9/asm/MSL_strtold.s b/arm9/asm/MSL_strtold.s
index b9dce779..c952c47c 100644
--- a/arm9/asm/MSL_strtold.s
+++ b/arm9/asm/MSL_strtold.s
@@ -1420,3 +1420,21 @@ atod: ; 0x020E463C
.balign 4
_020E4648: .word strtold
arm_func_end atod
+
+ .section .exceptix,4
+
+ .word __strtold
+ .short 4684
+ .word UNK_020EC720
+ .word strtold
+ .short 225
+ .word 0x00500F00
+ .word atod
+ .short 17
+ .word 0x00000000
+
+ .section .exception,8
+
+UNK_020EC720: ; 0x020EC720
+ .byte 0x00, 0xFF, 0x01, 0xD0
+ .balign 8
diff --git a/arm9/asm/MSL_strtoul.s b/arm9/asm/MSL_strtoul.s
index e74a4b4f..d0dceba1 100644
--- a/arm9/asm/MSL_strtoul.s
+++ b/arm9/asm/MSL_strtoul.s
@@ -724,3 +724,21 @@ atol: ; 0x020E4FE0
.balign 4
_020E4FF0: .word strtol
arm_func_end atol
+
+ .section .exceptix,4
+
+ .word __strtoul
+ .short 1001
+ .word 0x0060FF00
+ .word __strtoull
+ .short 1101
+ .word 0x0080FF00
+ .word strtoul
+ .short 153
+ .word 0x00600300
+ .word strtol
+ .short 201
+ .word 0x00600300
+ .word atol
+ .short 21
+ .word 0x00000000
diff --git a/arm9/asm/MSL_wctype.s b/arm9/asm/MSL_wctype.s
new file mode 100644
index 00000000..73afab83
--- /dev/null
+++ b/arm9/asm/MSL_wctype.s
@@ -0,0 +1,61 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global __wlower_mapC
+__wlower_mapC: ; 0x02104444
+ .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
+ .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
+ .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
+ .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
+ .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
+ .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
+ .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
+ .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
+ .short 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
+ .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
+ .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
+ .short 0x0078, 0x0079, 0x007A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
+ .short 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
+ .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
+ .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
+ .short 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
+
+ .global __wctype_mapC
+__wctype_mapC: ; 0x02104544
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
+ .short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
+
+ .global __wupper_mapC
+__wupper_mapC: ; 0x02104644
+ .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
+ .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
+ .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
+ .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
+ .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
+ .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
+ .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
+ .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
+ .short 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
+ .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
+ .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
+ .short 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
+ .short 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
+ .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
+ .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
+ .short 0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
diff --git a/arm9/asm/MSL_wmem.s b/arm9/asm/MSL_wmem.s
index 68bc3f0e..26230ecb 100644
--- a/arm9/asm/MSL_wmem.s
+++ b/arm9/asm/MSL_wmem.s
@@ -27,3 +27,9 @@ _020E5098:
mov r0, #0x0
bx lr
arm_func_end wmemchr
+
+ .section .exceptix,4
+
+ .word wmemcpy
+ .short 17
+ .word 0x00000000
diff --git a/arm9/asm/MSL_wprintf.s b/arm9/asm/MSL_wprintf.s
new file mode 100644
index 00000000..7b051834
--- /dev/null
+++ b/arm9/asm/MSL_wprintf.s
@@ -0,0 +1,2373 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern memchr
+ .extern wmemchr
+ .extern wcschr
+ .extern __wctype_mapC
+ .extern wcscpy
+ .extern fabs
+
+ .data
+
+wstr$6DE4: ; 0x02106DE4
+ ; L"0x0p0"
+ .short 0x0030, 0x0078, 0x0030, 0x0070, 0x0030, 0x0000
+
+wstr$6DF0: ; 0x02106DF0
+ ; L"-INF"
+ .short 0x002D, 0x0049, 0x004E, 0x0046, 0x0000, 0x0000
+
+wstr$6DFC: ; 0x02106DFC
+ ; L"-inf"
+ .short 0x002D, 0x0069, 0x006E, 0x0066, 0x0000, 0x0000
+
+wstr$6E08: ; 0x02106E08
+ ; L"INF"
+ .short 0x0049, 0x004E, 0x0046, 0x0000
+
+wstr$6E10: ; 0x02106E10
+ ; L"inf"
+ .short 0x0069, 0x006E, 0x0066, 0x0000
+
+wstr$6E18: ; 0x02106E18
+ ; L"-NAN"
+ .short 0x002D, 0x004E, 0x0041, 0x004E, 0x0000, 0x0000
+
+wstr$6E24: ; 0x02106E24
+ ; L"-nan"
+ .short 0x002D, 0x006E, 0x0061, 0x006E, 0x0000, 0x0000
+
+wstr$6E30: ; 0x02106E30
+ ; L"NAN"
+ .short 0x004E, 0x0041, 0x004E, 0x0000
+
+wstr$6E38: ; 0x02106E38
+ ; L"nan"
+ .short 0x006E, 0x0061, 0x006E, 0x0000
+
+buff_ptr$6E40: ; 0x02106E40
+ .short 0x0000, 0x0000
+
+strptr$6E44: ; 0x02106E44
+ .asciz ""
+
+ .text
+
+ arm_func_start parse_format__wide
+parse_format__wide: ; 0x020E50A0
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrh r3, [r0, #0x2]
+ 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, #0x2
+ bne _020E50FC
+ add r0, sp, #0x0
+ strh r3, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E50FC:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020E5110:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020E5140
+ bge _020E5168
+ cmp r3, #0x23
+ bgt _020E5198
+ cmp r3, #0x20
+ blt _020E5198
+ beq _020E5170
+ cmp r3, #0x23
+ beq _020E5180
+ b _020E5198
+_020E5140:
+ cmp r3, #0x30
+ bgt _020E5198
+ cmp r3, #0x2d
+ blt _020E5198
+ beq _020E5160
+ cmp r3, #0x30
+ beq _020E5188
+ b _020E5198
+_020E5160:
+ strb r6, [sp, #0x0]
+ b _020E519C
+_020E5168:
+ strb r7, [sp, #0x1]
+ b _020E519C
+_020E5170:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020E519C
+_020E5180:
+ strb r7, [sp, #0x3]
+ b _020E519C
+_020E5188:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020E519C
+_020E5198:
+ mov r8, r0
+_020E519C:
+ cmp r8, #0x0
+ ldrneh r3, [r12, #0x2]!
+ bne _020E5110
+ cmp r3, #0x2a
+ bne _020E51E4
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020E51DC
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020E51DC:
+ ldrh r3, [r12, #0x2]!
+ b _020E5228
+_020E51E4:
+ mov r2, #0x0
+ ldr r5, _020E560C ; =__wctype_mapC
+ mov r0, #0xa
+ b _020E5208
+_020E51F4:
+ ldr r4, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r4, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r6, [sp, #0x8]
+_020E5208:
+ cmp r3, #0x80
+ movcs r4, r2
+ bhs _020E5220
+ mov r4, r3, lsl #0x1
+ ldrh r4, [r5, r4]
+ and r4, r4, #0x8
+_020E5220:
+ cmp r4, #0x0
+ bne _020E51F4
+_020E5228:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E5610 ; =0x000001FD
+ cmp r2, r0
+ ble _020E5258
+ ldr r1, _020E5614 ; =0x0000FFFF
+ add r0, sp, #0x0
+ strh r1, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E5258:
+ cmp r3, #0x2e
+ bne _020E52E0
+ ldrh r3, [r12, #0x2]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020E529C
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrh r3, [r12, #0x2]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020E52E0
+_020E529C:
+ mov r1, #0x0
+ ldr r4, _020E560C ; =__wctype_mapC
+ mov r0, #0xa
+ b _020E52C0
+_020E52AC:
+ ldr r2, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r2, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r5, [sp, #0xc]
+_020E52C0:
+ cmp r3, #0x80
+ movcs r2, r1
+ bhs _020E52D8
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020E52D8:
+ cmp r2, #0x0
+ bne _020E52AC
+_020E52E0:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020E5318
+ cmp r3, #0x68
+ blt _020E530C
+ beq _020E5334
+ cmp r3, #0x6a
+ beq _020E5380
+ cmp r3, #0x6c
+ beq _020E5350
+ b _020E53A4
+_020E530C:
+ cmp r3, #0x4c
+ beq _020E5374
+ b _020E53A4
+_020E5318:
+ cmp r3, #0x74
+ bgt _020E5328
+ beq _020E538C
+ b _020E53A4
+_020E5328:
+ cmp r3, #0x7a
+ beq _020E5398
+ b _020E53A4
+_020E5334:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5350:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020E53A8
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5374:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5380:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E538C:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5398:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E53A4:
+ mov r0, #0x0
+_020E53A8:
+ cmp r0, #0x0
+ ldrneh r3, [r12, #0x2]!
+ strh r3, [sp, #0x6]
+ cmp r3, #0x61
+ bgt _020E53FC
+ bge _020E54E0
+ cmp r3, #0x47
+ bgt _020E53F0
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E55EC
+ b _020E54E0
+ b _020E55EC
+ b _020E55EC
+ b _020E55EC
+ b _020E5528
+ b _020E54A8
+ b _020E5518
+_020E53F0:
+ cmp r3, #0x58
+ beq _020E5470
+ b _020E55EC
+_020E53FC:
+ cmp r3, #0x63
+ bgt _020E540C
+ beq _020E5588
+ b _020E55EC
+_020E540C:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020E55EC
+ 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
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E55F4
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020E55F4
+_020E54A8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E54E0:
+ 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
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ b _020E55F4
+_020E5518:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020E5528:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E5564:
+ mov r3, #0x3
+ mov r2, #0x1
+ mov r1, #0x78
+ mov r0, #0x8
+ strb r3, [sp, #0x4]
+ strb r2, [sp, #0x3]
+ strh r1, [sp, #0x6]
+ str r0, [sp, #0xc]
+ b _020E55F4
+_020E5588:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55B4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ cmp r0, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55D8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ b _020E55F4
+_020E55EC:
+ ldr r0, _020E5614 ; =0x0000FFFF
+ strh r0, [sp, #0x6]
+_020E55F4:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x2
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020E560C: .word __wctype_mapC
+_020E5610: .word 0x000001FD
+_020E5614: .word 0x0000FFFF
+ arm_func_end parse_format__wide
+
+ arm_func_start long2str__wide
+long2str__wide: ; 0x020E5618
+ 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
+ strh r0, [r5, #-0x2]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrh r8, [sp, #0x46]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020E568C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E5678
+ cmp r8, #0x6f
+ beq _020E568C
+_020E5678:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E568C:
+ cmp r8, #0x69
+ bgt _020E56B4
+ bge _020E56E8
+ cmp r8, #0x58
+ bgt _020E56A8
+ beq _020E5714
+ b _020E571C
+_020E56A8:
+ cmp r8, #0x64
+ beq _020E56E8
+ b _020E571C
+_020E56B4:
+ cmp r8, #0x6f
+ bgt _020E56C8
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020E571C
+_020E56C8:
+ cmp r8, #0x78
+ bgt _020E571C
+ cmp r8, #0x75
+ blt _020E571C
+ beq _020E5708
+ cmp r8, #0x78
+ beq _020E5714
+ b _020E571C
+_020E56E8:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020E571C
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020E571C
+_020E5708:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020E571C
+_020E5714:
+ mov r4, #0x10
+ mov r11, #0x0
+_020E571C:
+ 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 _020E5754
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020E5754:
+ cmp r10, #0x0
+ strh r9, [r5, #-0x2]!
+ add r6, r6, #0x1
+ bne _020E571C
+ cmp r4, #0x8
+ bne _020E5788
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r5, #-0x2]!
+ addne r6, r6, #0x1
+_020E5788:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020E57BC
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020E57BC
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020E57BC:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E5864 ; =0x000001FD
+ sub r0, r0, r5
+ add r0, r0, r0, lsr #0x1f
+ add r0, r7, r0, asr #0x1
+ cmp r0, r1
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020E5804
+ mov r0, #0x30
+_020E57F4:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strh r0, [r5, #-0x2]!
+ blt _020E57F4
+_020E5804:
+ cmp r4, #0x10
+ bne _020E5820
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r5, #-0x2]
+ strneh r0, [r5, #-0x4]!
+_020E5820:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r5, #-0x2]!
+ bne _020E5850
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r5, #-0x2]!
+ beq _020E5850
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqh r0, [r5, #-0x2]!
+_020E5850:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5864: .word 0x000001FD
+ ; arm_func_end long2str__wide
+
+ arm_func_start longlong2str__wide
+longlong2str__wide: ; 0x020E5868
+ 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
+ strh r0, [r6, #-0x2]!
+ 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
+ ldrh r8, [sp, #0x52]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020E58F8
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E58E4
+ cmp r8, #0x6f
+ beq _020E58F8
+_020E58E4:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E58F8:
+ cmp r8, #0x69
+ bgt _020E5920
+ bge _020E5950
+ cmp r8, #0x58
+ bgt _020E5914
+ beq _020E59A4
+ b _020E59B0
+_020E5914:
+ cmp r8, #0x64
+ beq _020E5950
+ b _020E59B0
+_020E5920:
+ cmp r8, #0x6f
+ bgt _020E5930
+ beq _020E5984
+ b _020E59B0
+_020E5930:
+ cmp r8, #0x78
+ bgt _020E59B0
+ cmp r8, #0x75
+ blt _020E59B0
+ beq _020E5994
+ cmp r8, #0x78
+ beq _020E59A4
+ b _020E59B0
+_020E5950:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020E59B0
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020E5978
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020E5978:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E59B0
+_020E5984:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020E59B0
+_020E5994:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020E59B0
+_020E59A4:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020E59B0:
+ 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 _020E59FC
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020E59FC:
+ strh r0, [r6, #-0x2]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020E59B0
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020E5A3C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r6, #-0x2]!
+ addne r7, r7, #0x1
+_020E5A3C:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E5A8C
+ 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 _020E5A8C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E5A8C:
+ ldr r0, [sp, #0x0]
+ ldr r2, _020E5B48 ; =0x000001FD
+ sub r0, r0, r6
+ add r1, r0, r0, lsr #0x1f
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1, asr #0x1
+ cmp r0, r2
+ 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 _020E5AE0
+ mov r1, #0x30
+_020E5ACC:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strh r1, [r6, #-0x2]!
+ blt _020E5ACC
+_020E5AE0:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E5B00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r6, #-0x2]
+ strneh r0, [r6, #-0x4]!
+_020E5B00:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r6, #-0x2]!
+ bne _020E5B34
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r6, #-0x2]!
+ beq _020E5B34
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqh r0, [r6, #-0x2]!
+_020E5B34:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5B48: .word 0x000001FD
+ ; arm_func_end longlong2str__wide
+
+ arm_func_start double2hex__wide
+double2hex__wide: ; 0x020E5B4C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E5EB8 ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrh r6, [sp, #0x7a]
+ 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 _020E5BF4
+ sub r4, r8, #0xc
+ ldr r1, _020E5EBC ; =wstr$6DE4
+ mov r0, r4
+ bl wcscpy
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5BF4:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E5C74
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5C38
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5C28
+ ldr r1, _020E5EC0 ; =wstr$6DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C28:
+ ldr r1, _020E5EC4 ; =wstr$6DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C38:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5C54
+ ldr r1, _020E5EC8 ; =wstr$6E08
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C54:
+ ldr r1, _020E5ECC ; =wstr$6E10
+ mov r0, r4
+ bl wcscpy
+_020E5C60:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5C74:
+ cmp r0, #0x4e
+ bne _020E5CF0
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5CB4
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5CA4
+ ldr r1, _020E5ED0 ; =wstr$6E18
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CA4:
+ ldr r1, _020E5ED4 ; =wstr$6E24
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CB4:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5CD0
+ ldr r1, _020E5ED8 ; =wstr$6E30
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CD0:
+ ldr r1, _020E5EDC ; =wstr$6E38
+ mov r0, r4
+ bl wcscpy
+_020E5CDC:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5CF0:
+ 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]
+ strh r0, [sp, #0x3a]
+_020E5D20:
+ 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 _020E5D20
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E5EE0 ; =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__wide
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strh r1, [r0, #-0x2]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E5E30
+ mov r9, #0x30
+_020E5DA8:
+ cmp r8, #0x40
+ bge _020E5E18
+ 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 _020E5DEC
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E5DEC:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E5E1C
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E5E1C
+_020E5E18:
+ mov r1, r9
+_020E5E1C:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strh r1, [r0, #-0x2]!
+ sub r8, r8, #0x4
+ bge _020E5DA8
+_020E5E30:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneh r1, [r0, #-0x2]!
+ mov r1, #0x31
+ strh r1, [r0, #-0x2]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strh r1, [r0, #-0x4]!
+ mov r1, #0x30
+ strh r1, [r0, #-0x2]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneh r1, [r0, #-0x2]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqh r1, [r0, #-0x2]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqh r1, [r0, #-0x2]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5EB8: .word 0x000001FD
+_020E5EBC: .word wstr$6DE4
+_020E5EC0: .word wstr$6DF0
+_020E5EC4: .word wstr$6DFC
+_020E5EC8: .word wstr$6E08
+_020E5ECC: .word wstr$6E10
+_020E5ED0: .word wstr$6E18
+_020E5ED4: .word wstr$6E24
+_020E5ED8: .word wstr$6E30
+_020E5EDC: .word wstr$6E38
+_020E5EE0: .word 0x000007FF
+ ; arm_func_end double2hex__wide
+
+ arm_func_start round_decimal__wide
+round_decimal__wide: ; 0x020E5EE4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E5F0C
+_020E5EF0:
+ 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}
+_020E5F0C:
+ 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 _020E5F6C
+ add r12, r12, lr
+_020E5F40:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E5F58
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E5F40
+_020E5F58:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E5F74
+_020E5F6C:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E5F74:
+ cmp r1, #0x0
+ beq _020E5FD0
+ mov r12, #0x0
+ mov lr, #0x1
+_020E5F84:
+ 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 _020E5FB4
+ cmp r3, #0x0
+ bne _020E5FBC
+_020E5FB4:
+ sub r1, r1, #0x1
+ b _020E5FC8
+_020E5FBC:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E5FD0
+_020E5FC8:
+ cmp r1, #0x0
+ bne _020E5F84
+_020E5FD0:
+ cmp r4, #0x0
+ beq _020E5FF8
+ 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}
+_020E5FF8:
+ cmp r1, #0x0
+ beq _020E5EF0
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end round_decimal__wide
+
+ arm_func_start float2str__wide
+float2str__wide: ; 0x020E6008
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r10, r0
+ add r0, sp, #0x250
+ ldr r7, [sp, #0x268]
+ ldr r3, _020E6628 ; =0x000001FD
+ ldrh r6, [r0, #0x12]
+ cmp r7, r3
+ ldrb r5, [sp, #0x25f]
+ ldrb r4, [sp, #0x25d]
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x22c
+ 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 _020E609C
+_020E6084:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E609C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E60B4
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E6084
+_020E60B4:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E60D4
+ cmp r0, #0x49
+ beq _020E60E0
+ cmp r0, #0x4e
+ beq _020E6198
+ b _020E6244
+_020E60D4:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E6244
+_020E60E0:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E6140
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E6118
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6118:
+ cmp r0, #0x0
+ beq _020E6130
+ ldr r1, _020E6630 ; =wstr$6DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6130:
+ ldr r1, _020E6634 ; =wstr$6DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6140:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E6160
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6160:
+ cmp r0, #0x0
+ beq _020E6178
+ ldr r1, _020E6638 ; =wstr$6E08
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6178:
+ ldr r1, _020E663C ; =wstr$6E10
+ mov r0, r4
+ bl wcscpy
+_020E6184:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6198:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E61EC
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E61C4
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E61C4:
+ cmp r0, #0x0
+ beq _020E61DC
+ ldr r1, _020E6640 ; =wstr$6E18
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61DC:
+ ldr r1, _020E6644 ; =wstr$6E24
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61EC:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E620C
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E620C:
+ cmp r0, #0x0
+ beq _020E6224
+ ldr r1, _020E6648 ; =wstr$6E30
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E6224:
+ ldr r1, _020E664C ; =wstr$6E38
+ mov r0, r4
+ bl wcscpy
+_020E6230:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6244:
+ ldrb r1, [sp, #0x8]
+ ldrsh r2, [sp, #0x6]
+ add r0, sp, #0x200
+ sub r1, r1, #0x1
+ add r0, r0, #0x2a
+ add r1, r2, r1
+ sub r8, r0, #0x1
+ strh r1, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E62A0
+ bge _020E632C
+ cmp r6, #0x47
+ bgt _020E65EC
+ cmp r6, #0x45
+ blt _020E65EC
+ beq _020E632C
+ cmp r6, #0x46
+ beq _020E6478
+ cmp r6, #0x47
+ beq _020E62B8
+ b _020E65EC
+_020E62A0:
+ cmp r6, #0x66
+ bgt _020E62B0
+ beq _020E6478
+ b _020E65EC
+_020E62B0:
+ cmp r6, #0x67
+ bne _020E65EC
+_020E62B8:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E62D0
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal__wide
+_020E62D0:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E62E8
+ cmp r2, r7
+ blt _020E6308
+_020E62E8:
+ 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 _020E632C
+_020E6308:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E6478
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E6478
+_020E632C:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E6344
+ add r0, sp, #0x4
+ bl round_decimal__wide
+_020E6344:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E6650 ; =0x66666667
+ mov r0, #0xa
+ b _020E6398
+_020E6368:
+ 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
+_020E6398:
+ cmp lr, #0x0
+ bne _020E6368
+ cmp r10, #0x2
+ blt _020E6368
+ add r0, sp, #0x2a
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r0, r8
+ ldr r0, _020E6628 ; =0x000001FD
+ add r1, r1, r7
+ cmp r1, r0
+ addgt sp, sp, #0x22c
+ 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 _020E6408
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E6408
+ mov r0, #0x30
+_020E63FC:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E63FC
+_020E6408:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E642C
+_020E641C:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E641C
+_020E642C:
+ 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 _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E65EC
+_020E6478:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E64B8
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal__wide
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E64B8:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E6628 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x22c
+ 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 r10, #0x0
+ ble _020E650C
+ mov r3, #0x30
+_020E64FC:
+ add r10, r10, #0x1
+ cmp r10, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E64FC
+_020E650C:
+ mov r6, #0x0
+ b _020E6520
+_020E6514:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E6520:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E6514
+ cmp r6, r1
+ bge _020E654C
+ mov r3, #0x30
+_020E653C:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E653C
+_020E654C:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E65B4
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E6594
+ mov r3, #0x30
+_020E657C:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E657C
+_020E6594:
+ cmp r5, r0
+ bge _020E65BC
+_020E659C:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E659C
+ b _020E65BC
+_020E65B4:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E65BC:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E65EC:
+ mov r0, r8
+ bl strlen
+ sub r1, r9, r0, lsl #0x1
+ mov r0, r8
+ sub r4, r1, #0x2
+ bl strlen
+ mov r2, r0
+ mov r0, r4
+ mov r1, r8
+ bl mbstowcs
+ mov r0, r4
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6628: .word 0x000001FD
+_020E662C: .word __wctype_mapC
+_020E6630: .word wstr$6DF0
+_020E6634: .word wstr$6DFC
+_020E6638: .word wstr$6E08
+_020E663C: .word wstr$6E10
+_020E6640: .word wstr$6E18
+_020E6644: .word wstr$6E24
+_020E6648: .word wstr$6E30
+_020E664C: .word wstr$6E38
+_020E6650: .word 0x66666667
+ ; arm_func_end float2str__wide
+
+ arm_func_start __wpformatter
+__wpformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x430
+ mov r3, #0x20
+ mov r11, r2
+ strh r3, [sp, #0x1c]
+ ldrh r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r4, #0x0
+ beq _020E6F24
+_020E6684:
+ mov r0, r11
+ mov r1, #0x25
+ bl wcschr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E66D8
+ mov r0, r11
+ bl wcslen
+ movs r2, r0
+ add r4, r4, r2
+ beq _020E6F24
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E6F24
+ add sp, sp, #0x430
+ mvn r0, #0x0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E66D8:
+ sub r0, r0, r11
+ add r0, r0, r0, lsr #0x1f
+ movs r2, r0, asr #0x1
+ add r4, r4, r2
+ beq _020E6710
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6710:
+ add r1, sp, #0x400
+ ldr r0, [sp, #0xc]
+ add r1, r1, #0x64
+ add r2, sp, #0x20
+ bl parse_format__wide
+ ldrh r1, [sp, #0x26]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E6780
+ bge _020E6AEC
+ cmp r1, #0x47
+ bgt _020E6774
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E6768
+ b _020E6AEC
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6A7C
+_020E6768:
+ cmp r1, #0x25
+ beq _020E6D7C
+ b _020E6D90
+_020E6774:
+ cmp r1, #0x58
+ beq _020E6940
+ b _020E6D90
+_020E6780:
+ cmp r1, #0x75
+ bgt _020E67E8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E67DC
+ b _020E6804
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6D90
+ b _020E6804
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6C98
+ b _020E6940
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6B5C
+ b _020E6D90
+ b _020E6940
+_020E67DC:
+ cmp r1, #0x63
+ beq _020E6D24
+ b _020E6D90
+_020E67E8:
+ cmp r1, #0x78
+ bgt _020E67F8
+ beq _020E6940
+ b _020E6D90
+_020E67F8:
+ ldr r0, _020E6F38 ; =0x0000FFFF
+ cmp r1, r0
+ b _020E6D90
+_020E6804:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6824
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6824:
+ cmp r0, #0x4
+ bne _020E684C
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E684C:
+ cmp r0, #0x6
+ bne _020E6874
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E6874:
+ cmp r0, #0x7
+ bne _020E6890
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6890:
+ cmp r0, #0x8
+ bne _020E68AC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E68AC:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E68BC:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, asr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6904
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str__wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6928
+_020E6904:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str__wide
+ movs r6, r0
+ beq _020E6D90
+_020E6928:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6940:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6960
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E6960:
+ cmp r0, #0x4
+ bne _020E6988
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E6988:
+ cmp r0, #0x6
+ bne _020E69B0
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E69B0:
+ cmp r0, #0x7
+ bne _020E69CC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69CC:
+ cmp r0, #0x8
+ bne _020E69E8
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69E8:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E69F8:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, lsr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6A40
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str__wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6A64
+_020E6A40:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str__wide
+ movs r6, r0
+ beq _020E6D90
+_020E6A64:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6A7C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6AA0
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6AA0:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl float2str__wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6AEC:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6B10
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6B10:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl double2hex__wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6B5C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x5
+ bne _020E6BF8
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r6, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r6, #0x0
+ ldreq r6, _020E6F3C ; =buff_ptr$6E40
+ cmp r0, #0x0
+ beq _020E6BB0
+ ldrh r1, [r6], #0x2
+ ldrb r0, [sp, #0x22]
+ and r7, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6DDC
+ ldr r0, [sp, #0x2c]
+ cmp r7, r0
+ movgt r7, r0
+ b _020E6DDC
+_020E6BB0:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6BE8
+ ldr r7, [sp, #0x2c]
+ mov r0, r6
+ mov r2, r7
+ mov r1, #0x0
+ bl wmemchr
+ cmp r0, #0x0
+ beq _020E6DDC
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6BE8:
+ mov r0, r6
+ bl wcslen
+ mov r7, r0
+ b _020E6DDC
+_020E6BF8:
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r5, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r5, #0x0
+ ldreq r5, _020E6F40 ; =strptr$6E44
+ cmp r0, #0x0
+ beq _020E6C40
+ ldrh r1, [r6, #0x0]
+ ldrb r0, [sp, #0x22]
+ and r6, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6C78
+ ldr r0, [sp, #0x2c]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E6C78
+_020E6C40:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6C6C
+ ldr r6, [sp, #0x2c]
+ mov r0, r5
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+ cmp r0, #0x0
+ subne r6, r0, r5
+ b _020E6C78
+_020E6C6C:
+ mov r0, r5
+ bl strlen
+ mov r6, r0
+_020E6C78:
+ add r0, sp, #0x30
+ mov r1, r5
+ mov r2, r6
+ bl mbstowcs
+ movs r7, r0
+ bmi _020E6D90
+ add r6, sp, #0x30
+ b _020E6DDC
+_020E6C98:
+ ldr r1, [sp, #0x464]
+ ldrb r0, [sp, #0x24]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r6, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E6F18
+ 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
+_020E6CE4:
+ strh r4, [r6, #0x0]
+ b _020E6F18
+_020E6CEC:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6CF4:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D04:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D0C:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D14:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D24:
+ ldrb r0, [sp, #0x24]
+ add r6, sp, #0x30
+ cmp r0, #0x5
+ bne _020E6D50
+ ldr r0, [sp, #0x464]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r0, [r0, #-0x4]
+ strh r0, [r6, #0x0]
+ b _020E6DDC
+_020E6D50:
+ ldr r0, [sp, #0x464]
+ add r1, sp, #0x18
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r3, [r0, #-0x4]
+ mov r0, r6
+ mov r2, #0x1
+ strb r3, [sp, #0x18]
+ bl mbtowc
+ mov r7, r0
+ b _020E6DDC
+_020E6D7C:
+ mov r0, #0x25
+ strh r0, [sp, #0x30]
+ add r6, sp, #0x30
+ mov r7, #0x1
+ b _020E6DDC
+_020E6D90:
+ ldr r0, [sp, #0xc]
+ bl wcslen
+ movs r5, r0
+ beq _020E6DC8
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r5
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6DC8:
+ add sp, sp, #0x430
+ add r0, r4, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6DDC:
+ ldrb r0, [sp, #0x20]
+ mov r5, r7
+ cmp r0, #0x0
+ beq _020E6E8C
+ cmp r0, #0x2
+ moveq r1, #0x30
+ movne r1, #0x20
+ strh r1, [sp, #0x1c]
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E6E48
+ cmp r1, #0x30
+ bne _020E6E48
+ mov r0, r8
+ mov r1, r6
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r6, r6, #0x2
+ sub r7, r7, #0x1
+_020E6E48:
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6E8C
+_020E6E54:
+ mov r0, r8
+ add r1, sp, #0x1c
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6E54
+_020E6E8C:
+ cmp r7, #0x0
+ beq _020E6EBC
+ mov r0, r8
+ mov r1, r6
+ mov r2, r7
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6EBC:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _020E6F14
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6F14
+ mov r7, #0x20
+_020E6ED8:
+ mov r0, r8
+ add r1, sp, #0x1a
+ mov r2, #0x1
+ strh r7, [sp, #0x1a]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6ED8
+_020E6F14:
+ add r4, r4, r5
+_020E6F18:
+ ldrh r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E6684
+_020E6F24:
+ mov r0, r4
+ add sp, sp, #0x430
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6F38: .word 0x0000FFFF
+_020E6F3C: .word buff_ptr$6E40
+_020E6F40: .word strptr$6E44
+ arm_func_end __wpformatter
+
+ arm_func_start __wStringWrite
+__wStringWrite: ; 0x020E6F44
+ 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, lsl #0x1
+ bl wmemcpy
+ ldr r1, [r4, #0x8]
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __wStringWrite
+
+ arm_func_start swprintf
+swprintf: ; 0x020E6F84
+ 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 vswprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end swprintf
+
+ arm_func_start vswprintf
+vswprintf: ; 0x020E6FAC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E7018 ; =__wStringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __wpformatter
+ cmp r0, #0x0
+ addlt sp, sp, #0xc
+ ldmltia sp!, {r4-r5,pc}
+ cmp r0, r4
+ bhs _020E7000
+ mov r1, r0, lsl #0x1
+ mov r2, #0x0
+ add sp, sp, #0xc
+ strh r2, [r5, r1]
+ ldmia sp!, {r4-r5,pc}
+_020E7000:
+ mov r1, #0x0
+ add r0, r5, r4, lsl #0x1
+ strh r1, [r0, #-0x2]
+ sub r0, r1, #0x1
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E7018: .word __wStringWrite
+ arm_func_end vswprintf
+
+ .section .exceptix,4
+
+ .word long2str__wide
+ .short 593
+ .word 0x0090FF20
+ .word longlong2str__wide
+ .short 741
+ .word 0x00A0FF20
+ .word double2hex__wide
+ .short 921
+ .word 0x00F07F20
+ .word float2str__wide
+ .short 1612
+ .word UNK_020EC728
+ .word __wpformatter
+ .short 2288
+ .word UNK_020EC730
+ .word __wStringWrite
+ .short 65
+ .word 0x00200300
+ .word swprintf
+ .short 41
+ .word 0x00300020
+ .word vswprintf
+ .short 113
+ .word 0x00300300
+
+ .section .exception,8
+
+UNK_020EC728: ; 0x020EC728
+ .byte 0x20, 0xFF, 0x09, 0x60
+ .balign 8
+
+ .section .exception,8
+
+UNK_020EC730: ; 0x020EC730
+ .byte 0x20, 0xFF, 0x11, 0x68
+ .balign 8
diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s
index 78769683..fee47ddf 100644
--- a/arm9/asm/libc.s
+++ b/arm9/asm/libc.s
@@ -17,59 +17,6 @@
.section .rodata
-UNK_021044A4: ; 0x021044A4
- .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
- .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
- .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
- .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
- .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
- .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
- .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
- .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
- .short 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
- .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
- .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
- .short 0x0078, 0x0079, 0x007A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
- .short 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
- .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
- .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
- .short 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
-
- .global UNK_02104544
-UNK_02104544: ; 0x02104544
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
- .short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
- .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
- .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
- .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
- .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
- .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
- .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
- .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
- .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
- .short 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
- .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
- .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
- .short 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
- .short 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
- .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
- .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
- .short 0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
-
.global UNK_02104744
UNK_02104744: ; 0x02104744
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0xB8, 0xE2, 0x3F
@@ -86,50 +33,6 @@ UNK_02104764: ; 0x02104764
.balign 4, 0
- .global UNK_02106DE4
-UNK_02106DE4: ; 0x02106DE4
- .byte 0x30, 0x00, 0x78, 0x00, 0x30, 0x00, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00
-
- .global UNK_02106DF0
-UNK_02106DF0: ; 0x02106DF0
- .byte 0x2D, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DFC
-UNK_02106DFC: ; 0x02106DFC
- .byte 0x2D, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E08
-UNK_02106E08: ; 0x02106E08
- .byte 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00
-
- .global UNK_02106E10
-UNK_02106E10: ; 0x02106E10
- .byte 0x69, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_02106E18
-UNK_02106E18: ; 0x02106E18
- .byte 0x2D, 0x00, 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E24
-UNK_02106E24: ; 0x02106E24
- .byte 0x2D, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E30
-UNK_02106E30: ; 0x02106E30
- .byte 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x00, 0x00
-
- .global UNK_02106E38
-UNK_02106E38: ; 0x02106E38
- .byte 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_02106E40
-UNK_02106E40: ; 0x02106E40
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E44
-UNK_02106E44: ; 0x02106E44
- .byte 0x00, 0x00, 0x00, 0x00
-
.global UNK_02106E48
UNK_02106E48: ; 0x02106E48
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40
@@ -249,2276 +152,6 @@ UNK_02106F5C: ; 0x02106F5C
.section .text
.balign 4, 0
- arm_func_start parse_format_wprintf
-parse_format_wprintf: ; 0x020E50A0
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldrh r3, [r0, #0x2]
- 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, #0x2
- bne _020E50FC
- add r0, sp, #0x0
- strh r3, [sp, #0x6]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x2
- ldmia sp!, {r4-r8,pc}
-_020E50FC:
- mov r2, #0x2
- mov r0, r4
- mov r5, r2
- mov r6, r4
- mov r7, #0x1
-_020E5110:
- mov r8, r7
- cmp r3, #0x2b
- bgt _020E5140
- bge _020E5168
- cmp r3, #0x23
- bgt _020E5198
- cmp r3, #0x20
- blt _020E5198
- beq _020E5170
- cmp r3, #0x23
- beq _020E5180
- b _020E5198
-_020E5140:
- cmp r3, #0x30
- bgt _020E5198
- cmp r3, #0x2d
- blt _020E5198
- beq _020E5160
- cmp r3, #0x30
- beq _020E5188
- b _020E5198
-_020E5160:
- strb r6, [sp, #0x0]
- b _020E519C
-_020E5168:
- strb r7, [sp, #0x1]
- b _020E519C
-_020E5170:
- ldrb r4, [sp, #0x1]
- cmp r4, #0x1
- strneb r5, [sp, #0x1]
- b _020E519C
-_020E5180:
- strb r7, [sp, #0x3]
- b _020E519C
-_020E5188:
- ldrb r4, [sp, #0x0]
- cmp r4, #0x0
- strneb r2, [sp, #0x0]
- b _020E519C
-_020E5198:
- mov r8, r0
-_020E519C:
- cmp r8, #0x0
- ldrneh r3, [r12, #0x2]!
- bne _020E5110
- cmp r3, #0x2a
- bne _020E51E4
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- str r0, [sp, #0x8]
- cmp r0, #0x0
- bge _020E51DC
- rsb r0, r0, #0x0
- mov r2, #0x0
- strb r2, [sp, #0x0]
- str r0, [sp, #0x8]
-_020E51DC:
- ldrh r3, [r12, #0x2]!
- b _020E5228
-_020E51E4:
- mov r2, #0x0
- ldr r5, _020E560C ; =UNK_02104544
- mov r0, #0xa
- b _020E5208
-_020E51F4:
- ldr r4, [sp, #0x8]
- sub r3, r3, #0x30
- mla r6, r4, r0, r3
- ldrh r3, [r12, #0x2]!
- str r6, [sp, #0x8]
-_020E5208:
- cmp r3, #0x80
- movcs r4, r2
- bhs _020E5220
- mov r4, r3, lsl #0x1
- ldrh r4, [r5, r4]
- and r4, r4, #0x8
-_020E5220:
- cmp r4, #0x0
- bne _020E51F4
-_020E5228:
- ldr r2, [sp, #0x8]
- ldr r0, _020E5610 ; =0x000001FD
- cmp r2, r0
- ble _020E5258
- ldr r1, _020E5614 ; =0x0000FFFF
- add r0, sp, #0x0
- strh r1, [sp, #0x6]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x2
- ldmia sp!, {r4-r8,pc}
-_020E5258:
- cmp r3, #0x2e
- bne _020E52E0
- ldrh r3, [r12, #0x2]!
- mov r0, #0x1
- strb r0, [sp, #0x2]
- cmp r3, #0x2a
- bne _020E529C
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- ldrh r3, [r12, #0x2]!
- str r0, [sp, #0xc]
- cmp r0, #0x0
- movlt r0, #0x0
- strltb r0, [sp, #0x2]
- b _020E52E0
-_020E529C:
- mov r1, #0x0
- ldr r4, _020E560C ; =UNK_02104544
- mov r0, #0xa
- b _020E52C0
-_020E52AC:
- ldr r2, [sp, #0xc]
- sub r3, r3, #0x30
- mla r5, r2, r0, r3
- ldrh r3, [r12, #0x2]!
- str r5, [sp, #0xc]
-_020E52C0:
- cmp r3, #0x80
- movcs r2, r1
- bhs _020E52D8
- mov r2, r3, lsl #0x1
- ldrh r2, [r4, r2]
- and r2, r2, #0x8
-_020E52D8:
- cmp r2, #0x0
- bne _020E52AC
-_020E52E0:
- cmp r3, #0x6c
- mov r0, #0x1
- bgt _020E5318
- cmp r3, #0x68
- blt _020E530C
- beq _020E5334
- cmp r3, #0x6a
- beq _020E5380
- cmp r3, #0x6c
- beq _020E5350
- b _020E53A4
-_020E530C:
- cmp r3, #0x4c
- beq _020E5374
- b _020E53A4
-_020E5318:
- cmp r3, #0x74
- bgt _020E5328
- beq _020E538C
- b _020E53A4
-_020E5328:
- cmp r3, #0x7a
- beq _020E5398
- b _020E53A4
-_020E5334:
- ldrh r1, [r12, #0x2]
- mov r2, #0x2
- strb r2, [sp, #0x4]
- cmp r1, #0x68
- streqb r0, [sp, #0x4]
- ldreqh r3, [r12, #0x2]!
- b _020E53A8
-_020E5350:
- ldrh r1, [r12, #0x2]
- mov r2, #0x3
- strb r2, [sp, #0x4]
- cmp r1, #0x6c
- bne _020E53A8
- mov r1, #0x4
- strb r1, [sp, #0x4]
- ldrh r3, [r12, #0x2]!
- b _020E53A8
-_020E5374:
- mov r1, #0x9
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E5380:
- mov r1, #0x6
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E538C:
- mov r1, #0x8
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E5398:
- mov r1, #0x7
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E53A4:
- mov r0, #0x0
-_020E53A8:
- cmp r0, #0x0
- ldrneh r3, [r12, #0x2]!
- strh r3, [sp, #0x6]
- cmp r3, #0x61
- bgt _020E53FC
- bge _020E54E0
- cmp r3, #0x47
- bgt _020E53F0
- subs r0, r3, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E55EC
- b _020E54E0
- b _020E55EC
- b _020E55EC
- b _020E55EC
- b _020E5528
- b _020E54A8
- b _020E5518
-_020E53F0:
- cmp r3, #0x58
- beq _020E5470
- b _020E55EC
-_020E53FC:
- cmp r3, #0x63
- bgt _020E540C
- beq _020E5588
- b _020E55EC
-_020E540C:
- sub r0, r3, #0x64
- cmp r0, #0x14
- addls pc, pc, r0, lsl #0x2
- b _020E55EC
- 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
- moveq r0, #0x4
- streqb r0, [sp, #0x4]
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020E55F4
- ldrb r0, [sp, #0x0]
- cmp r0, #0x2
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- b _020E55F4
-_020E54A8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020E55F4
-_020E54E0:
- 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
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- b _020E55F4
-_020E5518:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
-_020E5528:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020E55F4
-_020E5564:
- mov r3, #0x3
- mov r2, #0x1
- mov r1, #0x78
- mov r0, #0x8
- strb r3, [sp, #0x4]
- strb r2, [sp, #0x3]
- strh r1, [sp, #0x6]
- str r0, [sp, #0xc]
- b _020E55F4
-_020E5588:
- ldrb r1, [sp, #0x4]
- cmp r1, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- cmpeq r1, #0x0
- ldrne r0, _020E5614 ; =0x0000FFFF
- strneh r0, [sp, #0x6]
- b _020E55F4
-_020E55B4:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020E55F4
- cmp r0, #0x0
- ldrne r0, _020E5614 ; =0x0000FFFF
- strneh r0, [sp, #0x6]
- b _020E55F4
-_020E55D8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0x4
- streqb r0, [sp, #0x4]
- b _020E55F4
-_020E55EC:
- ldr r0, _020E5614 ; =0x0000FFFF
- strh r0, [sp, #0x6]
-_020E55F4:
- add r0, sp, #0x0
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add r0, r12, #0x2
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020E560C: .word UNK_02104544
-_020E5610: .word 0x000001FD
-_020E5614: .word 0x0000FFFF
-
- arm_func_start long2str_wide
-long2str_wide: ; 0x020E5618
- 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
- strh r0, [r5, #-0x2]!
- ldrb r0, [sp, #0x43]
- str r1, [sp, #0x0]
- ldrh r8, [sp, #0x46]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldrb r11, [sp, #0x41]
- str r0, [sp, #0x8]
- cmpeq r7, #0x0
- bne _020E568C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E5678
- cmp r8, #0x6f
- beq _020E568C
-_020E5678:
- add sp, sp, #0x10
- mov r0, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E568C:
- cmp r8, #0x69
- bgt _020E56B4
- bge _020E56E8
- cmp r8, #0x58
- bgt _020E56A8
- beq _020E5714
- b _020E571C
-_020E56A8:
- cmp r8, #0x64
- beq _020E56E8
- b _020E571C
-_020E56B4:
- cmp r8, #0x6f
- bgt _020E56C8
- moveq r4, #0x8
- moveq r11, #0x0
- b _020E571C
-_020E56C8:
- cmp r8, #0x78
- bgt _020E571C
- cmp r8, #0x75
- blt _020E571C
- beq _020E5708
- cmp r8, #0x78
- beq _020E5714
- b _020E571C
-_020E56E8:
- cmp r10, #0x0
- mov r4, #0xa
- bge _020E571C
- mov r0, #0x1
- cmp r10, #0x80000000
- rsbne r10, r10, #0x0
- str r0, [sp, #0xc]
- b _020E571C
-_020E5708:
- mov r4, #0xa
- mov r11, #0x0
- b _020E571C
-_020E5714:
- mov r4, #0x10
- mov r11, #0x0
-_020E571C:
- 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 _020E5754
- cmp r8, #0x78
- addeq r9, r9, #0x57
- addne r9, r9, #0x37
-_020E5754:
- cmp r10, #0x0
- strh r9, [r5, #-0x2]!
- add r6, r6, #0x1
- bne _020E571C
- cmp r4, #0x8
- bne _020E5788
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrneh r0, [r5, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneh r0, [r5, #-0x2]!
- addne r6, r6, #0x1
-_020E5788:
- ldrb r0, [sp, #0x40]
- cmp r0, #0x2
- bne _020E57BC
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x8]
- cmp r0, #0x0
- cmpeq r11, #0x0
- subne r7, r7, #0x1
- cmp r4, #0x10
- bne _020E57BC
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- subne r7, r7, #0x2
-_020E57BC:
- ldr r0, [sp, #0x0]
- ldr r1, _020E5864 ; =0x000001FD
- sub r0, r0, r5
- add r0, r0, r0, lsr #0x1f
- add r0, r7, r0, asr #0x1
- cmp r0, r1
- addgt sp, sp, #0x10
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- cmp r6, r7
- bge _020E5804
- mov r0, #0x30
-_020E57F4:
- add r6, r6, #0x1
- cmp r6, r7
- strh r0, [r5, #-0x2]!
- blt _020E57F4
-_020E5804:
- cmp r4, #0x10
- bne _020E5820
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneh r8, [r5, #-0x2]
- strneh r0, [r5, #-0x4]!
-_020E5820:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- movne r0, #0x2d
- strneh r0, [r5, #-0x2]!
- bne _020E5850
- cmp r11, #0x1
- moveq r0, #0x2b
- streqh r0, [r5, #-0x2]!
- beq _020E5850
- cmp r11, #0x2
- moveq r0, #0x20
- streqh r0, [r5, #-0x2]!
-_020E5850:
- mov r0, r5
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5864: .word 0x000001FD
-
- arm_func_start longlong2str_wide
-longlong2str_wide: ; 0x020E5868
- 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
- strh r0, [r6, #-0x2]!
- 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
- ldrh r8, [sp, #0x52]
- str r0, [sp, #0xc]
- ldreq r0, [sp, #0x10]
- cmpeq r0, #0x0
- bne _020E58F8
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E58E4
- cmp r8, #0x6f
- beq _020E58F8
-_020E58E4:
- add sp, sp, #0x18
- mov r0, r6
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E58F8:
- cmp r8, #0x69
- bgt _020E5920
- bge _020E5950
- cmp r8, #0x58
- bgt _020E5914
- beq _020E59A4
- b _020E59B0
-_020E5914:
- cmp r8, #0x64
- beq _020E5950
- b _020E59B0
-_020E5920:
- cmp r8, #0x6f
- bgt _020E5930
- beq _020E5984
- b _020E59B0
-_020E5930:
- cmp r8, #0x78
- bgt _020E59B0
- cmp r8, #0x75
- blt _020E59B0
- beq _020E5994
- cmp r8, #0x78
- beq _020E59A4
- b _020E59B0
-_020E5950:
- subs r0, r10, #0x0
- sbcs r0, r9, #0x0
- mov r11, #0xa
- mov r5, #0x0
- bge _020E59B0
- cmp r9, #0x80000000
- cmpeq r10, r5
- beq _020E5978
- rsbs r10, r10, #0x0
- rsc r9, r9, #0x0
-_020E5978:
- mov r0, #0x1
- str r0, [sp, #0x14]
- b _020E59B0
-_020E5984:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x8
- b _020E59B0
-_020E5994:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0xa
- b _020E59B0
-_020E59A4:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x10
-_020E59B0:
- 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 _020E59FC
- cmp r8, #0x78
- addeq r0, r4, #0x57
- addne r0, r4, #0x37
-_020E59FC:
- strh r0, [r6, #-0x2]!
- mov r0, #0x0
- cmp r9, r0
- cmpeq r10, r0
- add r7, r7, #0x1
- bne _020E59B0
- cmp r5, #0x0
- cmpeq r11, #0x8
- bne _020E5A3C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrneh r0, [r6, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneh r0, [r6, #-0x2]!
- addne r7, r7, #0x1
-_020E5A3C:
- ldrb r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _020E5A8C
- 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 _020E5A8C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x2
- strne r0, [sp, #0x10]
-_020E5A8C:
- ldr r0, [sp, #0x0]
- ldr r2, _020E5B48 ; =0x000001FD
- sub r0, r0, r6
- add r1, r0, r0, lsr #0x1f
- ldr r0, [sp, #0x10]
- add r0, r0, r1, asr #0x1
- cmp r0, r2
- 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 _020E5AE0
- mov r1, #0x30
-_020E5ACC:
- ldr r0, [sp, #0x10]
- add r7, r7, #0x1
- cmp r7, r0
- strh r1, [r6, #-0x2]!
- blt _020E5ACC
-_020E5AE0:
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E5B00
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneh r8, [r6, #-0x2]
- strneh r0, [r6, #-0x4]!
-_020E5B00:
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- movne r0, #0x2d
- strneh r0, [r6, #-0x2]!
- bne _020E5B34
- ldr r0, [sp, #0xc]
- cmp r0, #0x1
- moveq r0, #0x2b
- streqh r0, [r6, #-0x2]!
- beq _020E5B34
- cmp r0, #0x2
- moveq r0, #0x20
- streqh r0, [r6, #-0x2]!
-_020E5B34:
- mov r0, r6
- add sp, sp, #0x18
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5B48: .word 0x000001FD
-
- arm_func_start double2hex_wide
-double2hex_wide: ; 0x020E5B4C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x44
- ldr r7, [sp, #0x80]
- ldr r0, _020E5EB8 ; =0x000001FD
- mov r8, r2
- cmp r7, r0
- ldrh r6, [sp, #0x7a]
- 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 _020E5BF4
- sub r4, r8, #0xc
- ldr r1, _020E5EBC ; =UNK_02106DE4
- mov r0, r4
- bl wcscpy
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5BF4:
- ldrb r0, [sp, #0x11]
- cmp r0, #0x49
- bne _020E5C74
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E5C38
- cmp r6, #0x41
- sub r4, r8, #0xa
- bne _020E5C28
- ldr r1, _020E5EC0 ; =UNK_02106DF0
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C28:
- ldr r1, _020E5EC4 ; =UNK_02106DFC
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C38:
- cmp r6, #0x41
- sub r4, r8, #0x8
- bne _020E5C54
- ldr r1, _020E5EC8 ; =UNK_02106E08
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C54:
- ldr r1, _020E5ECC ; =UNK_02106E10
- mov r0, r4
- bl wcscpy
-_020E5C60:
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5C74:
- cmp r0, #0x4e
- bne _020E5CF0
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E5CB4
- cmp r6, #0x41
- sub r4, r8, #0xa
- bne _020E5CA4
- ldr r1, _020E5ED0 ; =UNK_02106E18
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CA4:
- ldr r1, _020E5ED4 ; =UNK_02106E24
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CB4:
- cmp r6, #0x41
- sub r4, r8, #0x8
- bne _020E5CD0
- ldr r1, _020E5ED8 ; =UNK_02106E30
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CD0:
- ldr r1, _020E5EDC ; =UNK_02106E38
- mov r0, r4
- bl wcscpy
-_020E5CDC:
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5CF0:
- 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]
- strh r0, [sp, #0x3a]
-_020E5D20:
- 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 _020E5D20
- ldrb r0, [sp, #0x69]
- ldrb r1, [sp, #0x68]
- ldr sb, _020E5EE0 ; =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_wide
- cmp r6, #0x61
- moveq r1, #0x70
- movne r1, #0x50
- strh r1, [r0, #-0x2]!
- mov r1, r7, lsl #0x2
- mov lr, r7
- cmp r7, #0x1
- add r8, r1, #0xb
- add r12, sp, #0x68
- blt _020E5E30
- mov r9, #0x30
-_020E5DA8:
- cmp r8, #0x40
- bge _020E5E18
- 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 _020E5DEC
- ldrb r2, [r10, #-0x1]
- mov r2, r2, lsl #0x8
- orr r1, r1, r2, asr r3
- and r1, r1, #0xff
-_020E5DEC:
- and r1, r1, #0xf
- cmp r1, #0xa
- addcc r1, r1, #0x30
- andcc r1, r1, #0xff
- blo _020E5E1C
- cmp r6, #0x61
- addeq r1, r1, #0x57
- andeq r1, r1, #0xff
- addne r1, r1, #0x37
- andne r1, r1, #0xff
- b _020E5E1C
-_020E5E18:
- mov r1, r9
-_020E5E1C:
- sub lr, lr, #0x1
- cmp lr, #0x1
- strh r1, [r0, #-0x2]!
- sub r8, r8, #0x4
- bge _020E5DA8
-_020E5E30:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneh r1, [r0, #-0x2]!
- mov r1, #0x31
- strh r1, [r0, #-0x2]
- cmp r6, #0x61
- moveq r1, #0x78
- movne r1, #0x58
- strh r1, [r0, #-0x4]!
- mov r1, #0x30
- strh r1, [r0, #-0x2]!
- ldrsb r1, [sp, #0xc]
- cmp r1, #0x0
- movne r1, #0x2d
- strneh r1, [r0, #-0x2]!
- addne sp, sp, #0x44
- ldmneia sp!, {r3-r10,lr}
- addne sp, sp, #0x10
- bxne lr
- cmp r4, #0x1
- moveq r1, #0x2b
- streqh r1, [r0, #-0x2]!
- addeq sp, sp, #0x44
- ldmeqia sp!, {r3-r10,lr}
- addeq sp, sp, #0x10
- bxeq lr
- cmp r4, #0x2
- moveq r1, #0x20
- streqh r1, [r0, #-0x2]!
- add sp, sp, #0x44
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5EB8: .word 0x000001FD
-_020E5EBC: .word UNK_02106DE4
-_020E5EC0: .word UNK_02106DF0
-_020E5EC4: .word UNK_02106DFC
-_020E5EC8: .word UNK_02106E08
-_020E5ECC: .word UNK_02106E10
-_020E5ED0: .word UNK_02106E18
-_020E5ED4: .word UNK_02106E24
-_020E5ED8: .word UNK_02106E30
-_020E5EDC: .word UNK_02106E38
-_020E5EE0: .word 0x000007FF
-
- arm_func_start round_decimal_wide
-round_decimal_wide: ; 0x020E5EE4
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- bge _020E5F0C
-_020E5EF0:
- 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}
-_020E5F0C:
- 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 _020E5F6C
- add r12, r12, lr
-_020E5F40:
- sub r12, r12, #0x1
- cmp r12, r2
- bls _020E5F58
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x30
- beq _020E5F40
-_020E5F58:
- cmp r12, r2
- ldreqsb r3, [r2, #-0x1]
- andeq r4, r3, #0x1
- movne r4, #0x1
- b _020E5F74
-_020E5F6C:
- movgt r4, #0x1
- movle r4, #0x0
-_020E5F74:
- cmp r1, #0x0
- beq _020E5FD0
- mov r12, #0x0
- mov lr, #0x1
-_020E5F84:
- 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 _020E5FB4
- cmp r3, #0x0
- bne _020E5FBC
-_020E5FB4:
- sub r1, r1, #0x1
- b _020E5FC8
-_020E5FBC:
- add r3, r3, #0x30
- strb r3, [r2, #0x0]
- b _020E5FD0
-_020E5FC8:
- cmp r1, #0x0
- bne _020E5F84
-_020E5FD0:
- cmp r4, #0x0
- beq _020E5FF8
- 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}
-_020E5FF8:
- cmp r1, #0x0
- beq _020E5EF0
- strb r1, [r0, #0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start float2str_wide
-float2str_wide: ; 0x020E6008
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x22c
- mov r10, r0
- add r0, sp, #0x250
- ldr r7, [sp, #0x268]
- ldr r3, _020E6628 ; =0x000001FD
- ldrh r6, [r0, #0x12]
- cmp r7, r3
- ldrb r5, [sp, #0x25f]
- ldrb r4, [sp, #0x25d]
- mov r8, r1
- mov r9, r2
- addgt sp, sp, #0x22c
- 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 _020E609C
-_020E6084:
- ldrb r2, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r2, r2, #0x1
- add r1, r1, #0x1
- strb r2, [sp, #0x8]
- strh r1, [sp, #0x6]
-_020E609C:
- ldrb r1, [sp, #0x8]
- cmp r1, #0x1
- bls _020E60B4
- ldrsb r1, [r0, #-0x1]!
- cmp r1, #0x30
- beq _020E6084
-_020E60B4:
- ldrb r0, [sp, #0x9]
- cmp r0, #0x30
- beq _020E60D4
- cmp r0, #0x49
- beq _020E60E0
- cmp r0, #0x4e
- beq _020E6198
- b _020E6244
-_020E60D4:
- mov r0, #0x0
- strh r0, [sp, #0x6]
- b _020E6244
-_020E60E0:
- mov r2, #0x0
- mov r0, r10
- mov r1, r8
- mov r3, r2
- bl _dls
- bhs _020E6140
- cmp r6, #0x80
- sub r4, r9, #0xa
- movcs r0, #0x0
- bhs _020E6118
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E6118:
- cmp r0, #0x0
- beq _020E6130
- ldr r1, _020E6630 ; =UNK_02106DF0
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6130:
- ldr r1, _020E6634 ; =UNK_02106DFC
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6140:
- cmp r6, #0x80
- sub r4, r9, #0x8
- movcs r0, #0x0
- bhs _020E6160
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E6160:
- cmp r0, #0x0
- beq _020E6178
- ldr r1, _020E6638 ; =UNK_02106E08
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6178:
- ldr r1, _020E663C ; =UNK_02106E10
- mov r0, r4
- bl wcscpy
-_020E6184:
- add sp, sp, #0x22c
- mov r0, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6198:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E61EC
- cmp r6, #0x80
- sub r4, r9, #0xa
- movcs r0, #0x0
- bhs _020E61C4
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E61C4:
- cmp r0, #0x0
- beq _020E61DC
- ldr r1, _020E6640 ; =UNK_02106E18
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E61DC:
- ldr r1, _020E6644 ; =UNK_02106E24
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E61EC:
- cmp r6, #0x80
- sub r4, r9, #0x8
- movcs r0, #0x0
- bhs _020E620C
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E620C:
- cmp r0, #0x0
- beq _020E6224
- ldr r1, _020E6648 ; =UNK_02106E30
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E6224:
- ldr r1, _020E664C ; =UNK_02106E38
- mov r0, r4
- bl wcscpy
-_020E6230:
- add sp, sp, #0x22c
- mov r0, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6244:
- ldrb r1, [sp, #0x8]
- ldrsh r2, [sp, #0x6]
- add r0, sp, #0x200
- sub r1, r1, #0x1
- add r0, r0, #0x2a
- add r1, r2, r1
- sub r8, r0, #0x1
- strh r1, [sp, #0x6]
- mov r0, #0x0
- strb r0, [r8, #0x0]
- cmp r6, #0x65
- bgt _020E62A0
- bge _020E632C
- cmp r6, #0x47
- bgt _020E65EC
- cmp r6, #0x45
- blt _020E65EC
- beq _020E632C
- cmp r6, #0x46
- beq _020E6478
- cmp r6, #0x47
- beq _020E62B8
- b _020E65EC
-_020E62A0:
- cmp r6, #0x66
- bgt _020E62B0
- beq _020E6478
- b _020E65EC
-_020E62B0:
- cmp r6, #0x67
- bne _020E65EC
-_020E62B8:
- ldrb r0, [sp, #0x8]
- cmp r0, r7
- ble _020E62D0
- add r0, sp, #0x4
- mov r1, r7
- bl round_decimal_wide
-_020E62D0:
- ldrsh r2, [sp, #0x6]
- mvn r0, #0x3
- cmp r2, r0
- blt _020E62E8
- cmp r2, r7
- blt _020E6308
-_020E62E8:
- 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 _020E632C
-_020E6308:
- cmp r5, #0x0
- addne r0, r2, #0x1
- subne r7, r7, r0
- bne _020E6478
- ldrb r1, [sp, #0x8]
- add r0, r2, #0x1
- subs r7, r1, r0
- movmi r7, #0x0
- b _020E6478
-_020E632C:
- ldrb r0, [sp, #0x8]
- add r1, r7, #0x1
- cmp r0, r1
- ble _020E6344
- add r0, sp, #0x4
- bl round_decimal_wide
-_020E6344:
- ldrsh lr, [sp, #0x6]
- mov r11, #0x2b
- mov r10, #0x0
- cmp lr, #0x0
- rsblt lr, lr, #0x0
- movlt r11, #0x2d
- ldr r3, _020E6650 ; =0x66666667
- mov r0, #0xa
- b _020E6398
-_020E6368:
- 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
-_020E6398:
- cmp lr, #0x0
- bne _020E6368
- cmp r10, #0x2
- blt _020E6368
- add r0, sp, #0x2a
- strb r11, [r8, #-0x1]
- strb r6, [r8, #-0x2]!
- sub r1, r0, r8
- ldr r0, _020E6628 ; =0x000001FD
- add r1, r1, r7
- cmp r1, r0
- addgt sp, sp, #0x22c
- 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 _020E6408
- add r0, r7, #0x2
- sub r0, r0, r1
- subs r1, r0, #0x1
- beq _020E6408
- mov r0, #0x30
-_020E63FC:
- strb r0, [r8, #-0x1]!
- subs r1, r1, #0x1
- bne _020E63FC
-_020E6408:
- ldrb r1, [sp, #0x8]
- add r0, sp, #0x9
- add r2, r0, r1
- subs r1, r1, #0x1
- beq _020E642C
-_020E641C:
- ldrsb r0, [r2, #-0x1]!
- subs r1, r1, #0x1
- strb r0, [r8, #-0x1]!
- bne _020E641C
-_020E642C:
- 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 _020E65EC
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E65EC
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
- b _020E65EC
-_020E6478:
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
- cmp r1, r7
- ble _020E64B8
- sub r1, r1, r7
- add r0, sp, #0x4
- sub r1, r2, r1
- bl round_decimal_wide
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
-_020E64B8:
- adds r0, r3, #0x1
- movmi r0, #0x0
- ldr r3, _020E6628 ; =0x000001FD
- add r6, r0, r1
- cmp r6, r3
- addgt sp, sp, #0x22c
- 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 r10, #0x0
- ble _020E650C
- mov r3, #0x30
-_020E64FC:
- add r10, r10, #0x1
- cmp r10, r6
- strb r3, [r8, #-0x1]!
- blt _020E64FC
-_020E650C:
- mov r6, #0x0
- b _020E6520
-_020E6514:
- ldrsb r3, [r2, #-0x1]!
- add r6, r6, #0x1
- strb r3, [r8, #-0x1]!
-_020E6520:
- cmp r6, r1
- ldrltb r3, [sp, #0x8]
- cmplt r6, r3
- blt _020E6514
- cmp r6, r1
- bge _020E654C
- mov r3, #0x30
-_020E653C:
- add r6, r6, #0x1
- cmp r6, r1
- strb r3, [r8, #-0x1]!
- blt _020E653C
-_020E654C:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r8, #-0x1]!
- cmp r0, #0x0
- beq _020E65B4
- ldrb r1, [sp, #0x8]
- mov r5, #0x0
- sub r1, r0, r1
- cmp r1, #0x0
- ble _020E6594
- mov r3, #0x30
-_020E657C:
- strb r3, [r8, #-0x1]!
- ldrb r1, [sp, #0x8]
- add r5, r5, #0x1
- sub r1, r0, r1
- cmp r5, r1
- blt _020E657C
-_020E6594:
- cmp r5, r0
- bge _020E65BC
-_020E659C:
- ldrsb r1, [r2, #-0x1]!
- add r5, r5, #0x1
- cmp r5, r0
- strb r1, [r8, #-0x1]!
- blt _020E659C
- b _020E65BC
-_020E65B4:
- mov r0, #0x30
- strb r0, [r8, #-0x1]!
-_020E65BC:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E65EC
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E65EC
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
-_020E65EC:
- mov r0, r8
- bl strlen
- sub r1, r9, r0, lsl #0x1
- mov r0, r8
- sub r4, r1, #0x2
- bl strlen
- mov r2, r0
- mov r0, r4
- mov r1, r8
- bl mbstowcs
- mov r0, r4
- add sp, sp, #0x22c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E6628: .word 0x000001FD
-_020E662C: .word UNK_02104544
-_020E6630: .word UNK_02106DF0
-_020E6634: .word UNK_02106DFC
-_020E6638: .word UNK_02106E08
-_020E663C: .word UNK_02106E10
-_020E6640: .word UNK_02106E18
-_020E6644: .word UNK_02106E24
-_020E6648: .word UNK_02106E30
-_020E664C: .word UNK_02106E38
-_020E6650: .word 0x66666667
-
- arm_func_start __wpformatter
-__wpformatter:
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x430
- mov r3, #0x20
- mov r11, r2
- strh r3, [sp, #0x1c]
- ldrh r2, [r11, #0x0]
- mov r9, r0
- mov r8, r1
- cmp r2, #0x0
- mov r4, #0x0
- beq _020E6F24
-_020E6684:
- mov r0, r11
- mov r1, #0x25
- bl wcschr
- str r0, [sp, #0xc]
- cmp r0, #0x0
- bne _020E66D8
- mov r0, r11
- bl wcslen
- movs r2, r0
- add r4, r4, r2
- beq _020E6F24
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- bne _020E6F24
- add sp, sp, #0x430
- mvn r0, #0x0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E66D8:
- sub r0, r0, r11
- add r0, r0, r0, lsr #0x1f
- movs r2, r0, asr #0x1
- add r4, r4, r2
- beq _020E6710
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6710:
- add r1, sp, #0x400
- ldr r0, [sp, #0xc]
- add r1, r1, #0x64
- add r2, sp, #0x20
- bl parse_format_wprintf
- ldrh r1, [sp, #0x26]
- mov r11, r0
- cmp r1, #0x61
- bgt _020E6780
- bge _020E6AEC
- cmp r1, #0x47
- bgt _020E6774
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E6768
- b _020E6AEC
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6A7C
- b _020E6A7C
- b _020E6A7C
-_020E6768:
- cmp r1, #0x25
- beq _020E6D7C
- b _020E6D90
-_020E6774:
- cmp r1, #0x58
- beq _020E6940
- b _020E6D90
-_020E6780:
- cmp r1, #0x75
- bgt _020E67E8
- subs r0, r1, #0x64
- addpl pc, pc, r0, lsl #0x2
- b _020E67DC
- b _020E6804
- b _020E6A7C
- b _020E6A7C
- b _020E6A7C
- b _020E6D90
- b _020E6804
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6C98
- b _020E6940
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6B5C
- b _020E6D90
- b _020E6940
-_020E67DC:
- cmp r1, #0x63
- beq _020E6D24
- b _020E6D90
-_020E67E8:
- cmp r1, #0x78
- bgt _020E67F8
- beq _020E6940
- b _020E6D90
-_020E67F8:
- ldr r0, _020E6F38 ; =0x0000FFFF
- cmp r1, r0
- b _020E6D90
-_020E6804:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x3
- bne _020E6824
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E6824:
- cmp r0, #0x4
- bne _020E684C
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E68BC
-_020E684C:
- cmp r0, #0x6
- bne _020E6874
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E68BC
-_020E6874:
- cmp r0, #0x7
- bne _020E6890
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E6890:
- cmp r0, #0x8
- bne _020E68AC
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E68AC:
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
-_020E68BC:
- cmp r0, #0x2
- moveq r1, r10, lsl #0x10
- moveq r10, r1, asr #0x10
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x20
- bne _020E6904
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x430
- bl longlong2str_wide
- movs r6, r0
- beq _020E6D90
- b _020E6928
-_020E6904:
- sub r5, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- add r1, sp, #0x430
- mov r0, r10
- ldmia r5, {r2-r3}
- bl long2str_wide
- movs r6, r0
- beq _020E6D90
-_020E6928:
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6940:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x3
- bne _020E6960
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E6960:
- cmp r0, #0x4
- bne _020E6988
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E69F8
-_020E6988:
- cmp r0, #0x6
- bne _020E69B0
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E69F8
-_020E69B0:
- cmp r0, #0x7
- bne _020E69CC
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E69CC:
- cmp r0, #0x8
- bne _020E69E8
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E69E8:
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
-_020E69F8:
- cmp r0, #0x2
- moveq r1, r10, lsl #0x10
- moveq r10, r1, lsr #0x10
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x20
- bne _020E6A40
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x430
- bl longlong2str_wide
- movs r6, r0
- beq _020E6D90
- b _020E6A64
-_020E6A40:
- sub r5, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- add r1, sp, #0x430
- mov r0, r10
- ldmia r5, {r2-r3}
- bl long2str_wide
- movs r6, r0
- beq _020E6D90
-_020E6A64:
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6A7C:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x9
- ldrne r0, [sp, #0x464]
- addne r0, r0, #0x8
- strne r0, [sp, #0x464]
- bne _020E6AA0
- ldr r0, [sp, #0x464]
- add r0, r0, #0x8
- str r0, [sp, #0x464]
-_020E6AA0:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x20
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x430
- bl float2str_wide
- movs r6, r0
- beq _020E6D90
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6AEC:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x9
- ldrne r0, [sp, #0x464]
- addne r0, r0, #0x8
- strne r0, [sp, #0x464]
- bne _020E6B10
- ldr r0, [sp, #0x464]
- add r0, r0, #0x8
- str r0, [sp, #0x464]
-_020E6B10:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x20
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x430
- bl double2hex_wide
- movs r6, r0
- beq _020E6D90
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6B5C:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x5
- bne _020E6BF8
- ldr r0, [sp, #0x464]
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r6, [r0, #-0x4]
- ldrb r0, [sp, #0x23]
- cmp r6, #0x0
- ldreq r6, _020E6F3C ; =UNK_02106E40
- cmp r0, #0x0
- beq _020E6BB0
- ldrh r1, [r6], #0x2
- ldrb r0, [sp, #0x22]
- and r7, r1, #0xff
- cmp r0, #0x0
- beq _020E6DDC
- ldr r0, [sp, #0x2c]
- cmp r7, r0
- movgt r7, r0
- b _020E6DDC
-_020E6BB0:
- ldrb r0, [sp, #0x22]
- cmp r0, #0x0
- beq _020E6BE8
- ldr r7, [sp, #0x2c]
- mov r0, r6
- mov r2, r7
- mov r1, #0x0
- bl wmemchr
- cmp r0, #0x0
- beq _020E6DDC
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6BE8:
- mov r0, r6
- bl wcslen
- mov r7, r0
- b _020E6DDC
-_020E6BF8:
- ldr r0, [sp, #0x464]
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r5, [r0, #-0x4]
- ldrb r0, [sp, #0x23]
- cmp r5, #0x0
- ldreq r5, _020E6F40 ; =UNK_02106E44
- cmp r0, #0x0
- beq _020E6C40
- ldrh r1, [r6, #0x0]
- ldrb r0, [sp, #0x22]
- and r6, r1, #0xff
- cmp r0, #0x0
- beq _020E6C78
- ldr r0, [sp, #0x2c]
- cmp r6, r0
- movgt r6, r0
- b _020E6C78
-_020E6C40:
- ldrb r0, [sp, #0x22]
- cmp r0, #0x0
- beq _020E6C6C
- ldr r6, [sp, #0x2c]
- mov r0, r5
- mov r2, r6
- mov r1, #0x0
- bl memchr
- cmp r0, #0x0
- subne r6, r0, r5
- b _020E6C78
-_020E6C6C:
- mov r0, r5
- bl strlen
- mov r6, r0
-_020E6C78:
- add r0, sp, #0x30
- mov r1, r5
- mov r2, r6
- bl mbstowcs
- movs r7, r0
- bmi _020E6D90
- add r6, sp, #0x30
- b _020E6DDC
-_020E6C98:
- ldr r1, [sp, #0x464]
- ldrb r0, [sp, #0x24]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r6, [r1, #-0x4]
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020E6F18
- 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
-_020E6CE4:
- strh r4, [r6, #0x0]
- b _020E6F18
-_020E6CEC:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6CF4:
- str r4, [r6, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r6, #0x4]
- b _020E6F18
-_020E6D04:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6D0C:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6D14:
- str r4, [r6, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r6, #0x4]
- b _020E6F18
-_020E6D24:
- ldrb r0, [sp, #0x24]
- add r6, sp, #0x30
- cmp r0, #0x5
- bne _020E6D50
- ldr r0, [sp, #0x464]
- mov r7, #0x1
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r0, [r0, #-0x4]
- strh r0, [r6, #0x0]
- b _020E6DDC
-_020E6D50:
- ldr r0, [sp, #0x464]
- add r1, sp, #0x18
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r3, [r0, #-0x4]
- mov r0, r6
- mov r2, #0x1
- strb r3, [sp, #0x18]
- bl mbtowc
- mov r7, r0
- b _020E6DDC
-_020E6D7C:
- mov r0, #0x25
- strh r0, [sp, #0x30]
- add r6, sp, #0x30
- mov r7, #0x1
- b _020E6DDC
-_020E6D90:
- ldr r0, [sp, #0xc]
- bl wcslen
- movs r5, r0
- beq _020E6DC8
- ldr r1, [sp, #0xc]
- mov r0, r8
- mov r2, r5
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6DC8:
- add sp, sp, #0x430
- add r0, r4, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6DDC:
- ldrb r0, [sp, #0x20]
- mov r5, r7
- cmp r0, #0x0
- beq _020E6E8C
- cmp r0, #0x2
- moveq r1, #0x30
- movne r1, #0x20
- strh r1, [sp, #0x1c]
- ldrh r0, [r6, #0x0]
- cmp r0, #0x2b
- cmpne r0, #0x2d
- cmpne r0, #0x20
- bne _020E6E48
- cmp r1, #0x30
- bne _020E6E48
- mov r0, r8
- mov r1, r6
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- add r6, r6, #0x2
- sub r7, r7, #0x1
-_020E6E48:
- ldr r0, [sp, #0x28]
- cmp r5, r0
- bge _020E6E8C
-_020E6E54:
- mov r0, r8
- add r1, sp, #0x1c
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x28]
- add r5, r5, #0x1
- cmp r5, r0
- blt _020E6E54
-_020E6E8C:
- cmp r7, #0x0
- beq _020E6EBC
- mov r0, r8
- mov r1, r6
- mov r2, r7
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6EBC:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x0
- bne _020E6F14
- ldr r0, [sp, #0x28]
- cmp r5, r0
- bge _020E6F14
- mov r7, #0x20
-_020E6ED8:
- mov r0, r8
- add r1, sp, #0x1a
- mov r2, #0x1
- strh r7, [sp, #0x1a]
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x28]
- add r5, r5, #0x1
- cmp r5, r0
- blt _020E6ED8
-_020E6F14:
- add r4, r4, r5
-_020E6F18:
- ldrh r0, [r11, #0x0]
- cmp r0, #0x0
- bne _020E6684
-_020E6F24:
- mov r0, r4
- add sp, sp, #0x430
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E6F38: .word 0x0000FFFF
-_020E6F3C: .word UNK_02106E40
-_020E6F40: .word UNK_02106E44
-
- arm_func_start __wStringWrite
-__wStringWrite: ; 0x020E6F44
- 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, lsl #0x1
- bl wmemcpy
- ldr r1, [r4, #0x8]
- add r1, r1, r5
- str r1, [r4, #0x8]
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start swprintf
-swprintf: ; 0x020E6F84
- 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 vswprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start vswprintf
-vswprintf: ; 0x020E6FAC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r4, r1
- mov r12, #0x0
- ldr r0, _020E7018 ; =__wStringWrite
- add r1, sp, #0x0
- str r5, [sp, #0x0]
- str r4, [sp, #0x4]
- str r12, [sp, #0x8]
- bl __wpformatter
- cmp r0, #0x0
- addlt sp, sp, #0xc
- ldmltia sp!, {r4-r5,pc}
- cmp r0, r4
- bhs _020E7000
- mov r1, r0, lsl #0x1
- mov r2, #0x0
- add sp, sp, #0xc
- strh r2, [r5, r1]
- ldmia sp!, {r4-r5,pc}
-_020E7000:
- mov r1, #0x0
- add r0, r5, r4, lsl #0x1
- strh r1, [r0, #-0x2]
- sub r0, r1, #0x1
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E7018: .word __wStringWrite
-
arm_func_start wcslen
wcslen: ; 0x020E701C
mvn r2, #0x0
@@ -5551,213 +3184,22 @@ strnicmp: ; 0x020E9B38
.balign 4
_020E9B40: .word stricmp
- .section .exception
- ; 0x020EC710
- .global UNK_020EC710
-UNK_020EC710: ; 0x020EC710
- .byte 0x20, 0xFF, 0x09, 0x60
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC718
-UNK_020EC718: ; 0x020EC718
- .byte 0x00, 0xFF, 0x01, 0xB0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC720
-UNK_020EC720: ; 0x020EC720
- .byte 0x00, 0xFF, 0x01, 0xD0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC728
-UNK_020EC728: ; 0x020EC728
- .byte 0x20, 0xFF, 0x09, 0x60
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC730
-UNK_020EC730: ; 0x020EC730
- .byte 0x20, 0xFF, 0x11, 0x68
- .byte 0x00, 0x00, 0x00, 0x00
+ .section .exception,8
.global UNK_020EC738
UNK_020EC738: ; 0x020EC738
.byte 0x20, 0xFF, 0x01, 0xB8
- .byte 0x00, 0x00, 0x00, 0x00
+ .balign 8
+
+ .section .exception,8
.global UNK_020EC740
UNK_020EC740: ; 0x020EC740
.byte 0x00, 0xFF, 0x05, 0x20
- .byte 0x00, 0x00, 0x00, 0x00
+ .balign 8
+
+ .section .exceptix,4
- .global UNK_020EC748
-UNK_020EC748: ; 0x020EC748
- .word abort
- .short 37
- .word 0x00100000
- .word exit
- .short 77
- .word 0x00100100
- .word __exit
- .short 297
- .word 0x00200300
- .word nan
- .short 25
- .word 0x00000000
- .word __flush_line_buffered_output_files
- .short 141
- .word 0x00403F00
- .word __flush_all
- .short 105
- .word 0x00403F00
- .word __msl_assertion_failed
- .short 61
- .word 0x00200100
- .word __load_buffer
- .short 141
- .word 0x00200700
- .word __flush_buffer
- .short 137
- .word 0x00200300
- .word fread
- .short 269
- .word 0x00407F00
- .word __fread
- .short 841
- .word 0x00507F00
- .word __fwrite
- .short 689
- .word 0x0060FF00
- .word fclose
- .short 117
- .word 0x00200300
- .word fflush
- .short 233
- .word 0x00100100
- .word ftell
- .short 285
- .word 0x00300F00
- .word _fseek
- .short 489
- .word 0x00400320
- .word fseek
- .short 301
- .word 0x00403F00
- .word rewind
- .short 37
- .word 0x00100100
- .word mbtowc
- .short 29
- .word 0x00100000
- .word wctomb
- .short 29
- .word 0x00100000
- .word mbstowcs
- .short 137
- .word 0x00301F00
- .word wcstombs
- .short 121
- .word 0x00403F00
- .word memset
- .short 21
- .word 0x00100100
- .word long2str
- .short 589
- .word 0x0090FF20
- .word longlong2str
- .short 737
- .word 0x00A0FF20
- .word double2hex
- .short 1245
- .word 0x00F07F20
- .word float2str
- .short 1893
- .word 0x00C0FF20
- .word __pformatter
- .short 2084
- .word UNK_020EC710
- .word __FileWrite
- .short 45
- .word 0x00200300
- .word __StringWrite
- .short 69
- .word 0x00200300
- .word printf
- .short 281
- .word 0x00300120
- .word vsnprintf
- .short 105
- .word 0x00300300
- .word snprintf
- .short 41
- .word 0x00300020
- .word sprintf
- .short 45
- .word 0x00300020
- .word qsort
- .short 357
- .word 0x0070FF00
- .word __sformatter
- .short 3412
- .word UNK_020EC718
- .word vsscanf
- .short 85
- .word 0x00200000
- .word sscanf
- .short 41
- .word 0x00300020
- .word raise
- .short 305
- .word 0x00200300
- .word __strtold
- .short 4684
- .word UNK_020EC720
- .word strtold
- .short 225
- .word 0x00500F00
- .word atod
- .short 17
- .word 0x00000000
- .word __strtoul
- .short 1001
- .word 0x0060FF00
- .word __strtoull
- .short 1101
- .word 0x0080FF00
- .word strtoul
- .short 153
- .word 0x00600300
- .word strtol
- .short 201
- .word 0x00600300
- .word atol
- .short 21
- .word 0x00000000
- .word wmemcpy
- .short 17
- .word 0x00000000
- .word long2str_wide
- .short 593
- .word 0x0090FF20
- .word longlong2str_wide
- .short 741
- .word 0x00A0FF20
- .word double2hex_wide
- .short 921
- .word 0x00F07F20
- .word float2str_wide
- .short 1612
- .word UNK_020EC728
- .word __wpformatter
- .short 2288
- .word UNK_020EC730
- .word __wStringWrite
- .short 65
- .word 0x00200300
- .word swprintf
- .short 41
- .word 0x00300020
- .word vswprintf
- .short 113
- .word 0x00300300
.word __ieee754_pow
.short 4488
.word UNK_020EC738
diff --git a/arm9/asm/stdlibmwcc.s b/arm9/asm/stdlibmwcc.s
index 0af0108d..aa29d4d3 100644
--- a/arm9/asm/stdlibmwcc.s
+++ b/arm9/asm/stdlibmwcc.s
@@ -3156,7 +3156,10 @@ _ExitProcess: ; 0x020EC704
.balign 4
_020EC70C: .word sys_exit
- .section .exception
+ .section .exception,8
+
+ .section .exceptix,4
+
.word 0x00200100
.word __read_console
.short 81