diff options
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/MSL_abort_exit.s | 12 | ||||
-rw-r--r-- | arm9/asm/MSL_ansi_files.s | 9 | ||||
-rw-r--r-- | arm9/asm/MSL_assert.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_buffer_io.s | 9 | ||||
-rw-r--r-- | arm9/asm/MSL_direct_io.s | 15 | ||||
-rw-r--r-- | arm9/asm/MSL_file_io.s | 9 | ||||
-rw-r--r-- | arm9/asm/MSL_file_pos.s | 15 | ||||
-rw-r--r-- | arm9/asm/MSL_math.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_mbstring.s | 15 | ||||
-rw-r--r-- | arm9/asm/MSL_mem.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_printf.s | 44 | ||||
-rw-r--r-- | arm9/asm/MSL_qsort.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_scanf.s | 18 | ||||
-rw-r--r-- | arm9/asm/MSL_signal.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_strtold.s | 18 | ||||
-rw-r--r-- | arm9/asm/MSL_strtoul.s | 18 | ||||
-rw-r--r-- | arm9/asm/MSL_wctype.s | 61 | ||||
-rw-r--r-- | arm9/asm/MSL_wmem.s | 6 | ||||
-rw-r--r-- | arm9/asm/MSL_wprintf.s | 2373 | ||||
-rw-r--r-- | arm9/asm/libc.s | 2572 | ||||
-rw-r--r-- | arm9/asm/stdlibmwcc.s | 5 |
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 |