summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGogume1er <gogume1er@gmail.com>2021-06-05 12:06:24 +0200
committerGogume1er <gogume1er@gmail.com>2021-06-05 12:06:24 +0200
commite242303ff5f56ef258bef9ea7608b6db28889096 (patch)
treeb3e2d485e4428aac6294e03b26365d36c91d4528
parent2288e6d101397143b08ff64a38baaeedd7f2c3dd (diff)
parent33a7ec1fd719b9321357aa59460cbdb9f7779053 (diff)
Merge branch 'master' into unkk_020851B8
# Conflicts: # arm9/asm/unk_020851B8.s
-rw-r--r--arm9/arm9.lsf68
-rw-r--r--arm9/asm/CTRDG_flash_LE39FW512.s2
-rw-r--r--arm9/asm/CTRDG_flash_MX29L010.s2
-rw-r--r--arm9/asm/CTRDG_flash_MX29L512.s2
-rw-r--r--arm9/asm/CTRDG_flash_common.s2
-rw-r--r--arm9/asm/CTRDG_proc.s2
-rw-r--r--arm9/asm/CTRDG_task.s6
-rw-r--r--arm9/asm/DGT_hash1.s2
-rw-r--r--arm9/asm/DGT_hash2.s2
-rw-r--r--arm9/asm/MSL_ARM_abort_exit.s168
-rw-r--r--arm9/asm/MSL_ARM_critical_regions_NITRO.s19
-rw-r--r--arm9/asm/MSL_ARM_math.s21
-rw-r--r--arm9/asm/MSL_Common_ansi_files.s151
-rw-r--r--arm9/asm/MSL_Common_arith.s11
-rw-r--r--arm9/asm/MSL_Common_assert.s37
-rw-r--r--arm9/asm/MSL_Common_buffer_io.s119
-rw-r--r--arm9/asm/MSL_Common_ctype.s48
-rw-r--r--arm9/asm/MSL_Common_direct_io.s513
-rw-r--r--arm9/asm/MSL_Common_errno.s9
-rw-r--r--arm9/asm/MSL_Common_file_io.s113
-rw-r--r--arm9/asm/MSL_Common_file_pos.s372
-rw-r--r--arm9/asm/MSL_Common_float.s18
-rw-r--r--arm9/asm/MSL_Common_mbstring.s247
-rw-r--r--arm9/asm/MSL_Common_mem.s115
-rw-r--r--arm9/asm/MSL_Common_mem_funcs.s61
-rw-r--r--arm9/asm/MSL_Common_printf.s2607
-rw-r--r--arm9/asm/MSL_Common_qsort.s112
-rw-r--r--arm9/asm/MSL_Common_rand.s38
-rw-r--r--arm9/asm/MSL_Common_scanf.s1466
-rw-r--r--arm9/asm/MSL_Common_signal.s107
-rw-r--r--arm9/asm/MSL_Common_string.s364
-rw-r--r--arm9/asm/MSL_Common_strtold.s1436
-rw-r--r--arm9/asm/MSL_Common_strtoul.s743
-rw-r--r--arm9/asm/MSL_Common_wchar_io.s43
-rw-r--r--arm9/asm/MSL_Common_wctype.s61
-rw-r--r--arm9/asm/MSL_Common_wmem.s35
-rw-r--r--arm9/asm/MSL_Common_wprintf.s2367
-rw-r--r--arm9/asm/MSL_Common_wstring.s48
-rw-r--r--arm9/asm/MSL_DPMath_e_pow.s1193
-rw-r--r--arm9/asm/MSL_DPMath_s_copysign.s18
-rw-r--r--arm9/asm/MSL_DPMath_s_fabs.s16
-rw-r--r--arm9/asm/MSL_DPMath_s_frexp.s65
-rw-r--r--arm9/asm/MSL_DPMath_s_ldexp.s170
-rw-r--r--arm9/asm/MSL_DPMath_w_pow.s18
-rw-r--r--arm9/asm/MSL_fp_ansi.s1627
-rw-r--r--arm9/asm/MSL_math.s110
-rw-r--r--arm9/asm/MSL_string_extras.s46
-rw-r--r--arm9/asm/NNS_SND_sndarc_stream.s4
-rw-r--r--arm9/asm/RTC_external.s2
-rw-r--r--arm9/asm/RUNTIME_ARM_semihosted_console_io.s84
-rw-r--r--arm9/asm/RUNTIME_CPLUS_StaticInitializers.s60
-rw-r--r--arm9/asm/RUNTIME_NITRO_eabi_init.s17
-rw-r--r--arm9/asm/RUNTIME_d_add.s231
-rw-r--r--arm9/asm/RUNTIME_d_div.s333
-rw-r--r--arm9/asm/RUNTIME_d_dtof.s85
-rw-r--r--arm9/asm/RUNTIME_d_dtoi.s30
-rw-r--r--arm9/asm/RUNTIME_d_dtoull.s48
-rw-r--r--arm9/asm/RUNTIME_d_itod.s48
-rw-r--r--arm9/asm/RUNTIME_d_mul.s246
-rw-r--r--arm9/asm/RUNTIME_d_sqrt.s123
-rw-r--r--arm9/asm/RUNTIME_d_sub.s283
-rw-r--r--arm9/asm/RUNTIME_f_add.s165
-rw-r--r--arm9/asm/RUNTIME_f_cmp.s376
-rw-r--r--arm9/asm/RUNTIME_f_div.s225
-rw-r--r--arm9/asm/RUNTIME_f_ftod.s46
-rw-r--r--arm9/asm/RUNTIME_f_ftoi.s21
-rw-r--r--arm9/asm/RUNTIME_f_ftou.s25
-rw-r--r--arm9/asm/RUNTIME_f_itof.s51
-rw-r--r--arm9/asm/RUNTIME_f_mul.s147
-rw-r--r--arm9/asm/RUNTIME_f_sub.s195
-rw-r--r--arm9/asm/RUNTIME_ieee_status.s8
-rw-r--r--arm9/asm/RUNTIME_ll_div.s167
-rw-r--r--arm9/asm/RUNTIME_ll_mul.s15
-rw-r--r--arm9/asm/RUNTIME_ll_sll.s20
-rw-r--r--arm9/asm/RUNTIME_s32_div_f.s139
-rw-r--r--arm9/asm/RUNTIME_u32_div_f.s131
-rw-r--r--arm9/asm/SPI_tp.s2
-rw-r--r--arm9/asm/WM_dcf.s2
-rw-r--r--arm9/asm/WM_ds.s2
-rw-r--r--arm9/asm/WM_ks.s2
-rw-r--r--arm9/asm/WM_mp.s2
-rw-r--r--arm9/asm/WM_standard.s2
-rw-r--r--arm9/asm/WM_sync.s2
-rw-r--r--arm9/asm/WM_system.s2
-rw-r--r--arm9/asm/libc.s14430
-rw-r--r--arm9/asm/scrcmd_10.s4
-rw-r--r--arm9/asm/scrcmd_12.s4
-rw-r--r--arm9/asm/scrcmd_17.s4
-rw-r--r--arm9/asm/scrcmd_18.s4
-rw-r--r--arm9/asm/scrcmd_3.s4
-rw-r--r--arm9/asm/scrcmd_5.s4
-rw-r--r--arm9/asm/scrcmd_7.s4
-rw-r--r--arm9/asm/scrcmd_9.s4
-rw-r--r--arm9/asm/scrcmd_asm.s4
-rw-r--r--arm9/asm/stdlibmwcc.s3175
-rw-r--r--arm9/asm/unk_02001B80.s4
-rw-r--r--arm9/asm/unk_020023C0.s4
-rw-r--r--arm9/asm/unk_02002C14.s4
-rw-r--r--arm9/asm/unk_02002F08.s4
-rw-r--r--arm9/asm/unk_020030E8.s4
-rw-r--r--arm9/asm/unk_020051F4.s4
-rw-r--r--arm9/asm/unk_02005CFC.s4
-rw-r--r--arm9/asm/unk_02006D98.s4
-rw-r--r--arm9/asm/unk_02008AA4.s4
-rw-r--r--arm9/asm/unk_02008DEC.s4
-rw-r--r--arm9/asm/unk_02009EAC.s4
-rw-r--r--arm9/asm/unk_0200CABC.s4
-rw-r--r--arm9/asm/unk_0200E1D0.s4
-rw-r--r--arm9/asm/unk_0200E850.s4
-rw-r--r--arm9/asm/unk_0201137C.s4
-rw-r--r--arm9/asm/unk_02011744.s4
-rw-r--r--arm9/asm/unk_02012004.s4
-rw-r--r--arm9/asm/unk_02012944.s4
-rw-r--r--arm9/asm/unk_02012CC8.s4
-rw-r--r--arm9/asm/unk_02013CD4.s4
-rw-r--r--arm9/asm/unk_020142EC.s4
-rw-r--r--arm9/asm/unk_020144FC.s4
-rw-r--r--arm9/asm/unk_02014590.s4
-rw-r--r--arm9/asm/unk_02014BF4.s4
-rw-r--r--arm9/asm/unk_02015D14.s4
-rw-r--r--arm9/asm/unk_0201B1A8.s6
-rw-r--r--arm9/asm/unk_0201B4E8.s4
-rw-r--r--arm9/asm/unk_0201B6D0.s2
-rw-r--r--arm9/asm/unk_0201C24C.s2
-rw-r--r--arm9/asm/unk_0201C360.s2
-rw-r--r--arm9/asm/unk_0201C620.s2
-rw-r--r--arm9/asm/unk_0201C6B4.s2
-rw-r--r--arm9/asm/unk_0201C7A0.s2
-rw-r--r--arm9/asm/unk_0201CC08.s2
-rw-r--r--arm9/asm/unk_0201D040.s2
-rw-r--r--arm9/asm/unk_0201E00C.s2
-rw-r--r--arm9/asm/unk_0201E7D8.s2
-rw-r--r--arm9/asm/unk_0201F06C.s6
-rw-r--r--arm9/asm/unk_020208B8.s2
-rw-r--r--arm9/asm/unk_02020C44.s4
-rw-r--r--arm9/asm/unk_0202134C.s2
-rw-r--r--arm9/asm/unk_02021590.s2
-rw-r--r--arm9/asm/unk_02022244.s2
-rw-r--r--arm9/asm/unk_02022294.s2
-rw-r--r--arm9/asm/unk_020222E8.s2
-rw-r--r--arm9/asm/unk_02022318.s2
-rw-r--r--arm9/asm/unk_02022450.s2
-rw-r--r--arm9/asm/unk_02023AC4.s2
-rw-r--r--arm9/asm/unk_020250A4.s2
-rw-r--r--arm9/asm/unk_02025954.s2
-rw-r--r--arm9/asm/unk_02026CD0.s2
-rw-r--r--arm9/asm/unk_02027E30.s2
-rw-r--r--arm9/asm/unk_020281E0.s2
-rw-r--r--arm9/asm/unk_02028980.s2
-rw-r--r--arm9/asm/unk_02029A84.s2
-rw-r--r--arm9/asm/unk_02029AE0.s2
-rw-r--r--arm9/asm/unk_02029CEC.s2
-rw-r--r--arm9/asm/unk_02029FB0.s2
-rw-r--r--arm9/asm/unk_0202A1E0.s2
-rw-r--r--arm9/asm/unk_0202A924.s2
-rw-r--r--arm9/asm/unk_0202AC20.s2
-rw-r--r--arm9/asm/unk_0202B374.s2
-rw-r--r--arm9/asm/unk_0202B870.s2
-rw-r--r--arm9/asm/unk_0202BE98.s2
-rw-r--r--arm9/asm/unk_0202C198.s2
-rw-r--r--arm9/asm/unk_0202D394.s2
-rw-r--r--arm9/asm/unk_0202D4C4.s2
-rw-r--r--arm9/asm/unk_0202D8D0.s2
-rw-r--r--arm9/asm/unk_0202DB14.s2
-rw-r--r--arm9/asm/unk_020336C0.s2
-rw-r--r--arm9/asm/unk_02033874.s2
-rw-r--r--arm9/asm/unk_02033B68.s8
-rw-r--r--arm9/asm/unk_02033F50.s4
-rw-r--r--arm9/asm/unk_02034188.s4
-rw-r--r--arm9/asm/unk_020343A8.s2
-rw-r--r--arm9/asm/unk_02034A28.s2
-rw-r--r--arm9/asm/unk_02034D7C.s2
-rw-r--r--arm9/asm/unk_02034E84.s2
-rw-r--r--arm9/asm/unk_02034FE4.s2
-rw-r--r--arm9/asm/unk_02035068.s6
-rw-r--r--arm9/asm/unk_02036FA4.s2
-rw-r--r--arm9/asm/unk_02037024.s2
-rw-r--r--arm9/asm/unk_020372D4.s14
-rw-r--r--arm9/asm/unk_020377B0.s2
-rw-r--r--arm9/asm/unk_020377F0.s6
-rw-r--r--arm9/asm/unk_02038C78.s1448
-rw-r--r--arm9/asm/unk_02046030.s4
-rw-r--r--arm9/asm/unk_0204653C.s4
-rw-r--r--arm9/asm/unk_02047500.s4
-rw-r--r--arm9/asm/unk_020476CC.s4
-rw-r--r--arm9/asm/unk_02048120.s4
-rw-r--r--arm9/asm/unk_020484A8.s8
-rw-r--r--arm9/asm/unk_02048904.s4
-rw-r--r--arm9/asm/unk_0204A368.s4
-rw-r--r--arm9/asm/unk_0204A498.s4
-rw-r--r--arm9/asm/unk_0204AB0C.s4
-rw-r--r--arm9/asm/unk_0204ADE0.s4
-rw-r--r--arm9/asm/unk_0204AF24.s4
-rw-r--r--arm9/asm/unk_0204B34C.s4
-rw-r--r--arm9/asm/unk_0204B9EC.s4
-rw-r--r--arm9/asm/unk_0204C1B4.s4
-rw-r--r--arm9/asm/unk_0204CA80.s4
-rw-r--r--arm9/asm/unk_0204CB20.s4
-rw-r--r--arm9/asm/unk_0204FBA8.s8
-rw-r--r--arm9/asm/unk_02050E48.s4
-rw-r--r--arm9/asm/unk_020520AC.s8
-rw-r--r--arm9/asm/unk_02052EE8.s8
-rw-r--r--arm9/asm/unk_0205363C.s4
-rw-r--r--arm9/asm/unk_02053750.s8
-rw-r--r--arm9/asm/unk_0205478C.s4
-rw-r--r--arm9/asm/unk_02054C14.s4
-rw-r--r--arm9/asm/unk_02055068.s4
-rw-r--r--arm9/asm/unk_020557F4.s4
-rw-r--r--arm9/asm/unk_02057380.s4
-rw-r--r--arm9/asm/unk_02058EE8.s4
-rw-r--r--arm9/asm/unk_02059F04.s4
-rw-r--r--arm9/asm/unk_0205AD98.s4
-rw-r--r--arm9/asm/unk_0205BEF8.s4
-rw-r--r--arm9/asm/unk_0205C334.s4
-rw-r--r--arm9/asm/unk_0205C598.s4
-rw-r--r--arm9/asm/unk_0205CDB4.s4
-rw-r--r--arm9/asm/unk_0205CE48.s4
-rw-r--r--arm9/asm/unk_0205DD18.s4
-rw-r--r--arm9/asm/unk_0205E4EC.s4
-rw-r--r--arm9/asm/unk_0205EB38.s4
-rw-r--r--arm9/asm/unk_0205EC84.s4
-rw-r--r--arm9/asm/unk_0205F314.s4
-rw-r--r--arm9/asm/unk_0205F7A0.s4
-rw-r--r--arm9/asm/unk_02060344.s4
-rw-r--r--arm9/asm/unk_020603B0.s4
-rw-r--r--arm9/asm/unk_020606B0.s4
-rw-r--r--arm9/asm/unk_020607D4.s4
-rw-r--r--arm9/asm/unk_02060CCC.s4
-rw-r--r--arm9/asm/unk_020625EC.s8
-rw-r--r--arm9/asm/unk_0206367C.s4
-rw-r--r--arm9/asm/unk_02063888.s4
-rw-r--r--arm9/asm/unk_02063948.s4
-rw-r--r--arm9/asm/unk_020643C0.s4
-rw-r--r--arm9/asm/unk_020647A4.s4
-rw-r--r--arm9/asm/unk_02064CA8.s4
-rw-r--r--arm9/asm/unk_02064E20.s4
-rw-r--r--arm9/asm/unk_02064E90.s4
-rw-r--r--arm9/asm/unk_020653EC.s8
-rw-r--r--arm9/asm/unk_02066840.s4
-rw-r--r--arm9/asm/unk_0206BB5C.s4
-rw-r--r--arm9/asm/unk_0206BF90.s4
-rw-r--r--arm9/asm/unk_0206C700.s6
-rw-r--r--arm9/asm/unk_0206DE24.s4
-rw-r--r--arm9/asm/unk_0206E0F0.s4
-rw-r--r--arm9/asm/unk_0206E2F0.s4
-rw-r--r--arm9/asm/unk_0206F1F0.s6
-rw-r--r--arm9/asm/unk_0206F3FC.s10
-rw-r--r--arm9/asm/unk_02072548.s4
-rw-r--r--arm9/asm/unk_02073710.s4
-rw-r--r--arm9/asm/unk_02073DA8.s4
-rw-r--r--arm9/asm/unk_0207550C.s4
-rw-r--r--arm9/asm/unk_020772F0.s10
-rw-r--r--arm9/asm/unk_020799E8.s4
-rw-r--r--arm9/asm/unk_02079C70.s10
-rw-r--r--arm9/asm/unk_0207C328.s4
-rw-r--r--arm9/asm/unk_0207D5BC.s4
-rw-r--r--arm9/asm/unk_0207EF6C.s4
-rw-r--r--arm9/asm/unk_0207F95C.s4
-rw-r--r--arm9/asm/unk_0207FD00.s4
-rw-r--r--arm9/asm/unk_02080C38.s8
-rw-r--r--arm9/asm/unk_020828BC.s4
-rw-r--r--arm9/asm/unk_020834D0.s4
-rw-r--r--arm9/asm/unk_02083B84.s4
-rw-r--r--arm9/asm/unk_02083D48.s4
-rw-r--r--arm9/asm/unk_02084098.s4
-rw-r--r--arm9/asm/unk_020842D0.s4
-rw-r--r--arm9/asm/unk_02085338.s4
-rw-r--r--arm9/asm/unk_020854E0.s8
-rw-r--r--arm9/asm/unk_020859C0.s8
-rw-r--r--arm9/asm/unk_02086084.s8
-rw-r--r--arm9/asm/unk_02086414.s4
-rw-r--r--arm9/asm/unk_02086FA8.s4
-rw-r--r--arm9/asm/unk_02087A6C.s4
-rw-r--r--arm9/asm/unk_02087D00.s8
-rw-r--r--arm9/asm/unk_02088320.s4
-rw-r--r--arm9/asm/unk_02088814.s4
-rw-r--r--arm9/asm/unk_02088858.s8
-rw-r--r--arm9/asm/unk_0208898C.s8
-rw-r--r--arm9/asm/unk_02088AAC.s4
-rw-r--r--arm9/asm/unk_02088D1C.s4
-rw-r--r--arm9/asm/unk_02088DD8.s4
-rw-r--r--arm9/asm/unk_02088F0C.s4
-rw-r--r--arm9/asm/unk_020893E0.s4
-rw-r--r--arm9/asm/unk_02089498.s10
-rw-r--r--arm9/asm/unk_02089960.s10
-rw-r--r--arm9/asm/unk_02089D90.s6
-rw-r--r--arm9/asm/unk_02089F24.s8
-rw-r--r--arm9/asm/unk_0208A258.s4
-rw-r--r--arm9/asm/unk_0208A338.s4
-rw-r--r--arm9/global.inc73
-rw-r--r--arm9/lib/include/NNS_FND_allocator.h34
-rw-r--r--arm9/lib/include/NNS_FND_expheap.h55
-rw-r--r--arm9/lib/include/NNS_FND_heapcommon.h26
-rw-r--r--arm9/lib/include/NNS_FND_list.h20
-rw-r--r--arm9/lib/include/OS_irqHandler.h2
-rw-r--r--arm9/lib/include/consts.h1
-rw-r--r--arm9/lib/include/gx.h23
-rw-r--r--arm9/lib/include/registers.h38
-rw-r--r--arm9/lib/include/tp.h8
-rw-r--r--arm9/lib/src/GX.c52
-rw-r--r--arm9/modules/04/asm/arm_04.s64
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D9320.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D9A48.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DB44C.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBEF4.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E4AE4.s2
-rw-r--r--arm9/modules/05/asm/module_05.s8
-rw-r--r--arm9/modules/06/asm/module_06.s30
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s10
-rw-r--r--arm9/modules/12/asm/module_12.s24
-rw-r--r--arm9/modules/14/asm/module_14.s20
-rw-r--r--arm9/modules/15/asm/module_15.s8
-rw-r--r--arm9/modules/16/asm/module_16.s4
-rw-r--r--arm9/modules/17/asm/module_17.s24
-rw-r--r--arm9/modules/18/asm/module_18.s6
-rw-r--r--arm9/modules/19/asm/module_19.s4
-rw-r--r--arm9/modules/20/asm/module_20.s8
-rw-r--r--arm9/modules/24/asm/module_24.s20
-rw-r--r--arm9/modules/36/asm/module_36.s8
-rw-r--r--arm9/modules/52/src/module_52.c12
-rw-r--r--arm9/modules/53/asm/module_53.s6
-rw-r--r--arm9/modules/54/asm/module_54.s6
-rw-r--r--arm9/modules/55/asm/module_55.s8
-rw-r--r--arm9/modules/56/asm/module_56.s8
-rw-r--r--arm9/modules/57/asm/module_57.s6
-rw-r--r--arm9/modules/58/asm/module_58.s6
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s4
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s6
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c2
-rw-r--r--arm9/modules/60/asm/module_60.s4
-rw-r--r--arm9/modules/61/asm/module_61.s4
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s8
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s8
-rw-r--r--arm9/modules/64/asm/module_64.s6
-rw-r--r--arm9/modules/65/asm/module_65.s8
-rw-r--r--arm9/modules/66/asm/module_66.s4
-rw-r--r--arm9/modules/67/asm/module_67.s6
-rw-r--r--arm9/modules/68/asm/module_68.s6
-rw-r--r--arm9/modules/69/asm/module_69.s4
-rw-r--r--arm9/modules/70/asm/module_70.s8
-rw-r--r--arm9/modules/71/asm/module_71.s10
-rw-r--r--arm9/modules/73/asm/module_73.s4
-rw-r--r--arm9/modules/74/asm/module_74.s4
-rw-r--r--arm9/modules/75/asm/module_75.s6
-rw-r--r--arm9/modules/76/asm/module_76.s4
-rw-r--r--arm9/modules/77/asm/module_77.s6
-rw-r--r--arm9/modules/78/asm/module_78.s6
-rw-r--r--arm9/modules/79/asm/module_79_arm.s10
-rw-r--r--arm9/modules/80/asm/module_80.s6
-rw-r--r--arm9/modules/81/asm/module_81.s8
-rw-r--r--arm9/modules/82/asm/module_82.s6
-rw-r--r--arm9/modules/83/asm/module_83.s46
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s6
-rw-r--r--arm9/modules/85/asm/module_85.s4
-rw-r--r--arm9/modules/86/asm/module_86.s6
-rw-r--r--arm9/src/error_message_reset.c51
-rw-r--r--arm9/src/game_init.c284
-rw-r--r--arm9/src/heap.c363
-rw-r--r--arm9/src/main.c10
-rw-r--r--arm9/src/options.c6
-rw-r--r--arm9/src/unk_0200BB14.c4
-rw-r--r--arm9/src/unk_02016B94.c24
-rw-r--r--arm9/src/unk_0202F150.c2
-rw-r--r--arm9/src/unk_02031734.c46
-rw-r--r--include/GX_layers.h9
-rw-r--r--include/game_init.h30
-rw-r--r--include/heap.h40
-rw-r--r--include/main.h30
-rw-r--r--include/unk_02016B94.h6
370 files changed, 20253 insertions, 19522 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index fa609048..7848df11 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -545,8 +545,72 @@ Static arm9
Object MATH_crc.o
Object STD_string.o
### Standard libraries ###
- Object libc.o
- Object stdlibmwcc.o
+ ### Bundled with CodeWarrior, so probably compiled with 2.0sp1 ###
+ Object MSL_ARM_abort_exit.o
+ Object MSL_ARM_critical_regions_NITRO.o
+ Object MSL_ARM_math.o
+ Object MSL_Common_ansi_files.o
+ Object MSL_Common_arith.o
+ Object MSL_Common_assert.o
+ Object MSL_Common_buffer_io.o
+ Object MSL_Common_ctype.o
+ Object MSL_Common_direct_io.o
+ Object MSL_Common_errno.o
+ Object MSL_Common_file_io.o
+ Object MSL_Common_file_pos.o
+ Object MSL_Common_float.o
+ Object MSL_Common_mbstring.o
+ Object MSL_Common_mem.o
+ Object MSL_Common_mem_funcs.o
+ Object MSL_Common_printf.o
+ Object MSL_Common_qsort.o
+ Object MSL_Common_rand.o
+ Object MSL_Common_scanf.o
+ Object MSL_Common_signal.o
+ Object MSL_Common_string.o
+ Object MSL_Common_strtold.o
+ Object MSL_Common_strtoul.o
+ Object MSL_Common_wchar_io.o
+ Object MSL_Common_wctype.o
+ Object MSL_Common_wmem.o
+ Object MSL_Common_wprintf.o
+ Object MSL_Common_wstring.o
+ Object MSL_DPMath_e_pow.o
+ Object MSL_DPMath_s_copysign.o
+ Object MSL_DPMath_s_fabs.o
+ Object MSL_DPMath_s_frexp.o
+ Object MSL_DPMath_s_ldexp.o
+ Object MSL_DPMath_w_pow.o
+ Object MSL_fp_ansi.o
+ Object MSL_math.o
+ Object MSL_string_extras.o
+ Object RUNTIME_d_add.o
+ Object RUNTIME_d_dtof.o
+ Object RUNTIME_d_dtoi.o
+ Object RUNTIME_d_dtoull.o
+ Object RUNTIME_d_itod.o
+ Object RUNTIME_d_mul.o
+ Object RUNTIME_d_sqrt.o
+ Object RUNTIME_d_sub.o
+ Object RUNTIME_f_add.o
+ Object RUNTIME_f_cmp.o
+ Object RUNTIME_f_div.o
+ Object RUNTIME_f_ftod.o
+ Object RUNTIME_f_ftoi.o
+ Object RUNTIME_f_ftou.o
+ Object RUNTIME_f_itof.o
+ Object RUNTIME_f_mul.o
+ Object RUNTIME_f_sub.o
+ Object RUNTIME_ll_div.o
+ Object RUNTIME_ll_mul.o
+ Object RUNTIME_ll_sll.o
+ Object RUNTIME_s32_div_f.o
+ Object RUNTIME_u32_div_f.o
+ Object RUNTIME_d_div.o
+ Object RUNTIME_ieee_status.o
+ Object RUNTIME_ARM_semihosted_console_io.o
+ Object RUNTIME_CPLUS_StaticInitializers.o
+ Object RUNTIME_NITRO_eabi_init.o
}
Autoload ITCM
diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s
index 8b249e96..6f964d91 100644
--- a/arm9/asm/CTRDG_flash_LE39FW512.s
+++ b/arm9/asm/CTRDG_flash_LE39FW512.s
@@ -40,7 +40,7 @@ LE39FW512: ; 0x0210410C
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncLE
CTRDGi_WriteFlashSectorAsyncLE: ; 0x020DCC9C
diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s
index 39f792cc..9d7cd2aa 100644
--- a/arm9/asm/CTRDG_flash_MX29L010.s
+++ b/arm9/asm/CTRDG_flash_MX29L010.s
@@ -40,7 +40,7 @@ defaultFlash1M: ; 0x0210418C
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncMX
CTRDGi_WriteFlashSectorAsyncMX: ; 0x020DD2D8
diff --git a/arm9/asm/CTRDG_flash_MX29L512.s b/arm9/asm/CTRDG_flash_MX29L512.s
index a0d7a776..f5f855bc 100644
--- a/arm9/asm/CTRDG_flash_MX29L512.s
+++ b/arm9/asm/CTRDG_flash_MX29L512.s
@@ -28,7 +28,7 @@ MN63F805MNP: ; 0x021041D0
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncMX5
CTRDGi_WriteFlashSectorAsyncMX5: ; 0x020DD868
diff --git a/arm9/asm/CTRDG_flash_common.s b/arm9/asm/CTRDG_flash_common.s
index cf62c3b0..968e3512 100644
--- a/arm9/asm/CTRDG_flash_common.s
+++ b/arm9/asm/CTRDG_flash_common.s
@@ -67,7 +67,7 @@ UNK_021D6B44: ; 0x021D6B44
ctrdgi_sram_lock_id: ; 0x021D6B4C
.space 0x4
- .text
+ .text
arm_func_start CTRDG_WriteAndVerifyAgbFlashAsync
CTRDG_WriteAndVerifyAgbFlashAsync: ; 0x020DBF14
diff --git a/arm9/asm/CTRDG_proc.s b/arm9/asm/CTRDG_proc.s
index f9e981d0..88c82553 100644
--- a/arm9/asm/CTRDG_proc.s
+++ b/arm9/asm/CTRDG_proc.s
@@ -37,7 +37,7 @@ UNK_021D6964: ; 0x021D6964
UNK_021D6A20: ; 0x021D6A20
.space 0xe8
- .text
+ .text
arm_func_start CTRDGi_CallbackForSetPhi
CTRDGi_CallbackForSetPhi: ; 0x020DB978
diff --git a/arm9/asm/CTRDG_task.s b/arm9/asm/CTRDG_task.s
index c0feb88e..95c9ddb4 100644
--- a/arm9/asm/CTRDG_task.s
+++ b/arm9/asm/CTRDG_task.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021D6F78
+ .extern __console_exit
.section .bss
@@ -177,7 +177,7 @@ _020DDC04: ; 0x020DDC04
str r0, [r5, #0xc0]
mov r2, #0x400
ldr r1, _020DDC54 ; =CTRDGi_TaskThread
- ldr r3, _020DDC58 ; =UNK_021D6F78
+ ldr r3, _020DDC58 ; =__console_exit
mov r0, r5
str r2, [sp, #0x0]
mov r2, #0x14
@@ -196,4 +196,4 @@ _020DDC38:
_020DDC4C: .word UNK_021D6B50
_020DDC50: .word UNK_021D6B54
_020DDC54: .word CTRDGi_TaskThread
-_020DDC58: .word UNK_021D6F78
+_020DDC58: .word __console_exit
diff --git a/arm9/asm/DGT_hash1.s b/arm9/asm/DGT_hash1.s
index 4befbb88..6a8580c1 100644
--- a/arm9/asm/DGT_hash1.s
+++ b/arm9/asm/DGT_hash1.s
@@ -41,7 +41,7 @@ Unk_02106900: ; 0x02106900
.word 0x6FA87E4F, 0xFE2CE6E0, 0xA3014314, 0x4E0811A1
.word 0xF7537E82, 0xBD3AF235, 0x2AD7D2BB, 0xEB86D391
- .text
+ .text
arm_func_start ProcessBlock
ProcessBlock: ; 0x020D2798
diff --git a/arm9/asm/DGT_hash2.s b/arm9/asm/DGT_hash2.s
index f309204e..918b6988 100644
--- a/arm9/asm/DGT_hash2.s
+++ b/arm9/asm/DGT_hash2.s
@@ -12,7 +12,7 @@ Unk_02106A04: ; 0x02106A04
.byte 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .text
+ .text
arm_func_start DGT_Hash2CalcHmac
DGT_Hash2CalcHmac: ; 0x020D2D78
diff --git a/arm9/asm/MSL_ARM_abort_exit.s b/arm9/asm/MSL_ARM_abort_exit.s
new file mode 100644
index 00000000..2fb7796f
--- /dev/null
+++ b/arm9/asm/MSL_ARM_abort_exit.s
@@ -0,0 +1,168 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __console_exit
+__console_exit: ; 0x021D6F78
+ .space 0x4
+ .size __console_exit,.-__console_exit
+
+ .global __stdio_exit
+__stdio_exit: ; 0x021D6F7C
+ .space 0x4
+ .size __stdio_exit,.-__stdio_exit
+
+ .global __atexit_curr_func
+__atexit_curr_func: ; 0x021D6F80
+ .space 0x4
+ .size __atexit_curr_func,.-__atexit_curr_func
+
+ .global __aborting
+__aborting: ; 0x021D6F84
+ .space 0x4
+ .size __aborting,.-__aborting
+
+ .global __atexit_funcs
+__atexit_funcs: ; 0x021D6F88
+ .space 0x100
+ .size __atexit_funcs,.-__atexit_funcs
+
+ .text
+
+ arm_func_start abort
+abort: ; 0x020DE14C
+ stmdb sp!, {r3,lr}
+ mov r0, #0x1
+ bl raise
+ ldr r1, _020DE16C ; =__aborting - 0xC
+ mov r0, #0x1
+ str r0, [r1, #0xc]
+ bl exit
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DE16C: .word __aborting - 0xC
+ arm_func_end abort
+
+ arm_func_start exit
+exit: ; 0x020DE170
+ stmdb sp!, {r4,lr}
+ ldr r1, _020DE1B8 ; =__aborting - 0xC
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x0
+ bne _020DE1AC
+ bl __destroy_global_chain
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020DE1AC
+ blx r0
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+_020DE1AC:
+ mov r0, r4
+ bl __exit
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020DE1B8: .word __console_exit
+ arm_func_end exit
+
+ arm_func_start __exit
+__exit: ; 0x020DE1BC
+ stmdb sp!, {r3-r5,lr}
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE1F4
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ b _020DE24C
+_020DE1F4:
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE224
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ b _020DE24C
+_020DE224:
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_LockMutex
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+_020DE24C:
+ ldr r4, _020DE2DC ; =__console_exit
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ble _020DE280
+ ldr r5, _020DE2E0 ; =__atexit_funcs
+_020DE260:
+ ldr r0, [r4, #0x8]
+ sub r1, r0, #0x1
+ ldr r0, [r5, r1, lsl #0x2]
+ str r1, [r4, #0x8]
+ blx r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bgt _020DE260
+_020DE280:
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bne _020DE29C
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_UnlockMutex
+_020DE29C:
+ ldr r0, _020DE2DC ; =__console_exit
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020DE2BC
+ blx r0
+ ldr r0, _020DE2DC ; =__console_exit
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020DE2BC:
+ mov r0, #0x0
+ bl fflush
+ bl _ExitProcess
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020DE2CC: .word __cs
+_020DE2D0: .word OSi_ThreadInfo
+_020DE2D4: .word __cs_id
+_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_ARM_critical_regions_NITRO.s b/arm9/asm/MSL_ARM_critical_regions_NITRO.s
new file mode 100644
index 00000000..2995c55e
--- /dev/null
+++ b/arm9/asm/MSL_ARM_critical_regions_NITRO.s
@@ -0,0 +1,19 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __cs_id
+__cs_id: ; 0x021D7088
+ .space 0x24
+ .size __cs_id,.-__cs_id
+
+ .global __cs_ref
+__cs_ref: ; 0x021D70AC
+ .space 0x24
+ .size __cs_ref,.-__cs_ref
+
+ .global __cs
+__cs: ; 0x021D70D0
+ .space 0xD8
+ .size __cs,.-__cs
diff --git a/arm9/asm/MSL_ARM_math.s b/arm9/asm/MSL_ARM_math.s
new file mode 100644
index 00000000..cb9bb034
--- /dev/null
+++ b/arm9/asm/MSL_ARM_math.s
@@ -0,0 +1,21 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .text
+
+ arm_func_start nan
+nan: ; 0x020DE2E4
+ ldr r0, _020DE2F4 ; =__float_nan
+ ldr ip, _020DE2F8 ; =_f2d
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_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_Common_ansi_files.s b/arm9/asm/MSL_Common_ansi_files.s
new file mode 100644
index 00000000..70fdc293
--- /dev/null
+++ b/arm9/asm/MSL_Common_ansi_files.s
@@ -0,0 +1,151 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .data
+
+ .global __files
+__files: ; 0x02106A58
+ ; stdin
+ .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stdout
+ .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stderr
+ .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size __files,.-__files
+
+ .bss
+
+ .global stderr_buff
+stderr_buff: ; 0x021D71A8
+ .space 0x100
+ .size stderr_buff,.-stderr_buff
+
+ .global stdout_buff
+stdout_buff: ; 0x021D72A8
+ .space 0x100
+ .size stdout_buff,.-stdout_buff
+
+ .global stdin_buff
+stdin_buff: ; 0x021D73A8
+ .space 0x100
+ .size stdin_buff,.-stdin_buff
+
+ .text
+
+ arm_func_start __flush_line_buffered_output_files
+__flush_line_buffered_output_files:
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE384 ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE31C:
+ ldr r1, [r0, #0x4]
+ mov r2, r1, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ beq _020DE35C
+ mov r1, r1, lsl #0x19
+ mov r1, r1, lsr #0x1e
+ tst r1, #0x1
+ beq _020DE35C
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DE35C
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE35C:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE374
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE374:
+ cmp r0, #0x0
+ bne _020DE31C
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE384: .word __files
+ arm_func_end __flush_line_buffered_output_files
+
+ arm_func_start __flush_all
+__flush_all: ; 0x020DE388
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE3EC ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE3A8:
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ beq _020DE3C4
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE3C4:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE3DC
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE3DC:
+ cmp r0, #0x0
+ bne _020DE3A8
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .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_Common_arith.s b/arm9/asm/MSL_Common_arith.s
new file mode 100644
index 00000000..5d93a4de
--- /dev/null
+++ b/arm9/asm/MSL_Common_arith.s
@@ -0,0 +1,11 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start abs
+abs: ; 0x020DE3F0
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ bx lr
+ arm_func_end abs
diff --git a/arm9/asm/MSL_Common_assert.s b/arm9/asm/MSL_Common_assert.s
new file mode 100644
index 00000000..ded4056d
--- /dev/null
+++ b/arm9/asm/MSL_Common_assert.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+__local_str__msl_assertion_failed: ; 0x02106B3C
+ .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
+ .size __local_str__msl_assertion_failed,.-__local_str__msl_assertion_failed
+ .balign 4, 0
+
+ .text
+
+ arm_func_start __msl_assertion_failed
+__msl_assertion_failed: ; 0x020DE3FC
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ ldr r0, _020DE434 ; =__local_str__msl_assertion_failed
+ mov r1, r4
+ mov r2, lr
+ mov r3, r12
+ bl printf
+ bl abort
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ .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_Common_buffer_io.s b/arm9/asm/MSL_Common_buffer_io.s
new file mode 100644
index 00000000..7dbbcc45
--- /dev/null
+++ b/arm9/asm/MSL_Common_buffer_io.s
@@ -0,0 +1,119 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __convert_from_newlines
+__convert_from_newlines:
+ bx lr
+ arm_func_end __convert_from_newlines
+
+ arm_func_start __convert_to_newlines
+__convert_to_newlines:
+ bx lr
+ arm_func_end __convert_to_newlines
+
+ arm_func_start __prep_buffer
+__prep_buffer:
+ ldr r1, [r0, #0x1c]
+ str r1, [r0, #0x24]
+ ldr r3, [r0, #0x20]
+ str r3, [r0, #0x28]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x2c]
+ and r1, r2, r1
+ sub r1, r3, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end __prep_buffer
+
+ arm_func_start __load_buffer
+__load_buffer:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r2
+ mov r4, r0
+ mov r6, r1
+ bl __prep_buffer
+ cmp r5, #0x1
+ ldreq r0, [r4, #0x20]
+ add r2, r4, #0x28
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x1c]
+ ldr r3, [r4, #0x48]
+ ldr r12, [r4, #0x3c]
+ blx r12
+ cmp r0, #0x2
+ moveq r1, #0x0
+ streq r1, [r4, #0x28]
+ cmp r6, #0x0
+ ldrne r1, [r4, #0x28]
+ strne r1, [r6, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE4F4
+ ldr r0, [r4, #0x1c]
+ add r1, r4, #0x28
+ bl __convert_to_newlines
+_020DE4F4:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end __load_buffer
+
+ arm_func_start __flush_buffer
+__flush_buffer:
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r2, [r5, #0x24]
+ ldr r0, [r5, #0x1c]
+ mov r4, r1
+ subs r0, r2, r0
+ beq _020DE574
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE538
+ ldr r0, [r5, #0x1c]
+ add r1, r5, #0x28
+ bl __convert_from_newlines
+_020DE538:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x1c]
+ ldr r3, [r5, #0x48]
+ ldr r12, [r5, #0x40]
+ add r2, r5, #0x28
+ blx r12
+ cmp r4, #0x0
+ ldrne r1, [r5, #0x28]
+ strne r1, [r4, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x28]
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+_020DE574:
+ mov r0, r5
+ bl __prep_buffer
+ 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_Common_ctype.s b/arm9/asm/MSL_Common_ctype.s
new file mode 100644
index 00000000..7513f451
--- /dev/null
+++ b/arm9/asm/MSL_Common_ctype.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global __lower_mapC
+__lower_mapC: ; 0x0210420C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __lower_mapC,.-__lower_mapC
+
+ .global __upper_mapC
+__upper_mapC: ; 0x0210428C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __upper_mapC,.-__upper_mapC
+
+ .global __msl_digit
+__msl_digit: ; 0x0210430C
+ .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
+ .size __msl_digit,.-__msl_digit
diff --git a/arm9/asm/MSL_Common_direct_io.s b/arm9/asm/MSL_Common_direct_io.s
new file mode 100644
index 00000000..d71f0bc4
--- /dev/null
+++ b/arm9/asm/MSL_Common_direct_io.s
@@ -0,0 +1,513 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fread
+fread: ; 0x020DE584
+ stmdb sp!, {r4-r10,lr}
+ ldr r4, _020DE67C ; =__files
+ mov r7, r3
+ cmp r7, r4
+ moveq r6, #0x2
+ mov r10, r0
+ movne r6, #0x5
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DE680 ; =__cs
+ mov r9, r1
+ add r0, r5, r4
+ mov r8, r2
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE5E8
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DE640
+_020DE5E8:
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r1, _020DE688 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE618
+ ldr r1, _020DE68C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DE640
+_020DE618:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DE640:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ bl __fread
+ ldr r1, _020DE68C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DE674
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DE674:
+ mov r0, r7
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020DE67C: .word __files
+_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
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x4
+ mov r7, r3
+ mov r9, r0
+ mov r8, r1
+ mov r0, r7
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DE6C8
+ mov r0, r7
+ mvn r1, #0x0
+ bl fwide
+_020DE6C8:
+ muls r4, r8, r4
+ beq _020DE6EC
+ ldrb r0, [r7, #0xd]
+ cmp r0, #0x0
+ bne _020DE6EC
+ ldr r1, [r7, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DE6F8
+_020DE6EC:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r3-r10,pc}
+_020DE6F8:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ ldr r1, [r7, #0x8]
+ cmpne r0, #0x2
+ mov r6, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r6, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DE74C
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x1
+ beq _020DE74C
+ bic r0, r1, #0x7
+ orr r0, r0, #0x2
+ str r0, [r7, #0x8]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE74C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ bhs _020DE778
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE778:
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ tst r0, #0x1
+ beq _020DE7B0
+ bl __flush_line_buffered_output_files
+ cmp r0, #0x0
+ beq _020DE7B0
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE7B0:
+ cmp r4, #0x0
+ mov r5, #0x0
+ beq _020DE874
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ blo _020DE874
+ mov r10, r5
+_020DE7D4:
+ mov r0, r7
+ mov r1, r10
+ bl fwide
+ cmp r0, #0x1
+ ldr r0, [r7, #0x8]
+ bne _020DE808
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1c
+ ldrh r0, [r0, #0xe]
+ add r5, r5, #0x2
+ sub r4, r4, #0x2
+ strh r0, [r9], #0x2
+ b _020DE820
+_020DE808:
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1d
+ ldrb r0, [r0, #0xf]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ strb r0, [r9], #0x1
+_020DE820:
+ ldr r1, [r7, #0x8]
+ cmp r4, #0x0
+ mov r0, r1, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x1
+ bic r1, r1, #0x7
+ and r0, r0, #0x7
+ orr r0, r1, r0
+ str r0, [r7, #0x8]
+ beq _020DE85C
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ bhs _020DE7D4
+_020DE85C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ ldreq r0, [r7, #0x30]
+ streq r0, [r7, #0x28]
+_020DE874:
+ cmp r4, #0x0
+ beq _020DE938
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ cmpeq r6, #0x0
+ beq _020DE938
+ mov r10, #0x0
+_020DE890:
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ bne _020DE8E4
+ mov r0, r7
+ mov r1, r10
+ mov r2, r10
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE8E4
+ cmp r0, #0x1
+ mov r0, #0x1
+ streqb r0, [r7, #0xd]
+ beq _020DE8D4
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+_020DE8D4:
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ mov r4, #0x0
+ b _020DE938
+_020DE8E4:
+ ldr r0, [r7, #0x28]
+ str r0, [sp, #0x0]
+ cmp r0, r4
+ strhi r4, [sp, #0x0]
+ ldr r1, [r7, #0x24]
+ ldr r2, [sp, #0x0]
+ mov r0, r9
+ bl memcpy
+ ldr r2, [sp, #0x0]
+ ldr r0, [r7, #0x24]
+ subs r4, r4, r2
+ add r0, r0, r2
+ str r0, [r7, #0x24]
+ ldr r1, [r7, #0x28]
+ ldr r0, [sp, #0x0]
+ add r9, r9, r2
+ sub r0, r1, r0
+ add r5, r5, r2
+ str r0, [r7, #0x28]
+ cmpne r6, #0x0
+ bne _020DE890
+_020DE938:
+ cmp r4, #0x0
+ beq _020DE9C4
+ cmp r6, #0x0
+ bne _020DE9C4
+ ldr r6, [r7, #0x1c]
+ ldr r10, [r7, #0x20]
+ add r1, sp, #0x0
+ str r9, [r7, #0x1c]
+ mov r0, r7
+ mov r2, #0x1
+ str r4, [r7, #0x20]
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE9A4
+ cmp r0, #0x1
+ mov r0, #0x1
+ bne _020DE98C
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ b _020DE9A4
+_020DE98C:
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9A4:
+ ldr r1, [sp, #0x0]
+ mov r0, r7
+ str r6, [r7, #0x1c]
+ str r10, [r7, #0x20]
+ add r5, r5, r1
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9C4:
+ mov r0, r5
+ mov r1, r8
+ bl _u32_div_f
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r10,pc}
+ arm_func_end __fread
+
+ arm_func_start __fwrite
+__fwrite:
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x8
+ mov r9, r3
+ mov r10, r0
+ str r1, [sp, #0x0]
+ mov r0, r9
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DEA10
+ mov r0, r9
+ mvn r1, #0x0
+ bl fwide
+_020DEA10:
+ ldr r0, [sp, #0x0]
+ muls r5, r0, r4
+ beq _020DEA38
+ ldrb r0, [r9, #0xd]
+ cmp r0, #0x0
+ bne _020DEA38
+ ldr r1, [r9, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DEA44
+_020DEA38:
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r3-r11,pc}
+_020DEA44:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ cmpne r0, #0x2
+ ldr r1, [r9, #0x8]
+ cmpne r0, #0x1
+ mov r8, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r8, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DEA9C
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x2
+ beq _020DEA9C
+ bic r0, r1, #0x7
+ orr r1, r0, #0x1
+ mov r0, r9
+ str r1, [r9, #0x8]
+ bl __prep_buffer
+_020DEA9C:
+ ldr r0, [r9, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ beq _020DEAC8
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ str r0, [r9, #0x28]
+ ldmia sp!, {r3-r11,pc}
+_020DEAC8:
+ cmp r5, #0x0
+ mov r6, #0x0
+ beq _020DEBF0
+ ldr r0, [r9, #0x1c]
+ ldr r2, [r9, #0x24]
+ cmp r2, r0
+ cmpeq r8, #0x0
+ beq _020DEBF0
+ ldr r1, [r9, #0x20]
+ sub r0, r2, r0
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+ mov r11, #0xa
+ mov r4, #0x0
+_020DEB00:
+ ldr r0, [r9, #0x28]
+ mov r7, r4
+ str r0, [sp, #0x4]
+ cmp r0, r5
+ strhi r5, [sp, #0x4]
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x1
+ bne _020DEB50
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB50
+ mov r0, r10
+ mov r1, r11
+ bl __memrchr
+ movs r7, r0
+ addne r0, r7, #0x1
+ subne r0, r0, r10
+ strne r0, [sp, #0x4]
+_020DEB50:
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB90
+ ldr r0, [r9, #0x24]
+ mov r1, r10
+ bl memcpy
+ ldr r2, [sp, #0x4]
+ ldr r0, [r9, #0x24]
+ add r10, r10, r2
+ add r0, r0, r2
+ str r0, [r9, #0x24]
+ ldr r1, [r9, #0x28]
+ ldr r0, [sp, #0x4]
+ sub r5, r5, r2
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+_020DEB90:
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ beq _020DEBB4
+ cmp r7, #0x0
+ bne _020DEBB4
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ movs r0, r0, lsr #0x1e
+ bne _020DEBDC
+_020DEBB4:
+ mov r0, r9
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DEBDC
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r5, #0x0
+ str r5, [r9, #0x28]
+ b _020DEBF0
+_020DEBDC:
+ ldr r0, [sp, #0x4]
+ cmp r5, #0x0
+ add r6, r6, r0
+ cmpne r8, #0x0
+ bne _020DEB00
+_020DEBF0:
+ cmp r5, #0x0
+ beq _020DEC5C
+ cmp r8, #0x0
+ bne _020DEC5C
+ ldr r4, [r9, #0x1c]
+ ldr r7, [r9, #0x20]
+ add r2, r10, r5
+ str r10, [r9, #0x1c]
+ str r5, [r9, #0x20]
+ add r1, sp, #0x4
+ mov r0, r9
+ str r2, [r9, #0x24]
+ bl __flush_buffer
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x4]
+ addeq r6, r6, r0
+ beq _020DEC44
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC44:
+ str r4, [r9, #0x1c]
+ mov r0, r9
+ str r7, [r9, #0x20]
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC5C:
+ ldr r0, [r9, #0x4]
+ ldr r1, [sp, #0x0]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x2
+ movne r0, #0x0
+ strne r0, [r9, #0x28]
+ mov r0, r6
+ 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_Common_errno.s b/arm9/asm/MSL_Common_errno.s
new file mode 100644
index 00000000..1005e7b7
--- /dev/null
+++ b/arm9/asm/MSL_Common_errno.s
@@ -0,0 +1,9 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global errno
+errno: ; 0x021D74A8
+ .space 0x4
+ .size errno,.-errno \ No newline at end of file
diff --git a/arm9/asm/MSL_Common_file_io.s b/arm9/asm/MSL_Common_file_io.s
new file mode 100644
index 00000000..f8a76bba
--- /dev/null
+++ b/arm9/asm/MSL_Common_file_io.s
@@ -0,0 +1,113 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fclose
+fclose: ; 0x020DEC88
+ stmdb sp!, {r3-r5,lr}
+ movs r5, r0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ bl fflush
+ mov r4, r0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x44]
+ blx r1
+ ldr r1, [r5, #0x4]
+ mov r2, #0x0
+ bic r1, r1, #0x380
+ str r1, [r5, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1f
+ subne r0, r2, #0x1
+ ldmneia sp!, {r3-r5,pc}
+ cmp r4, #0x0
+ cmpeq r0, #0x0
+ movne r2, #0x1
+ rsb r0, r2, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end fclose
+
+ arm_func_start fflush
+fflush:
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ bne _020DED10
+ bl __flush_all
+ ldmia sp!, {r4,pc}
+_020DED10:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x0
+ bne _020DED2C
+ ldr r0, [r4, #0x4]
+ mov r1, r0, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ bne _020DED34
+_020DED2C:
+ mvn r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DED34:
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x3
+ biccs r0, r0, #0x7
+ orrcs r0, r0, #0x2
+ strcs r0, [r4, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ moveq r0, #0x0
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ beq _020DEDA0
+ bic r0, r0, #0x7
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DEDA0:
+ mov r0, r4
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ mov r0, #0x0
+ beq _020DEDCC
+ mov r1, #0x1
+ strb r1, [r4, #0xd]
+ str r0, [r4, #0x28]
+ sub r0, r0, #0x1
+ ldmia sp!, {r4,pc}
+_020DEDCC:
+ ldr r1, [r4, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r4, #0x8]
+ str r0, [r4, #0x18]
+ 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_Common_file_pos.s b/arm9/asm/MSL_Common_file_pos.s
new file mode 100644
index 00000000..f5a122aa
--- /dev/null
+++ b/arm9/asm/MSL_Common_file_pos.s
@@ -0,0 +1,372 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ftell
+_ftell: ; 0x020DEDE4
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ add r1, r1, #0xff
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ bhi _020DEE10
+ ldrb r1, [r0, #0xd]
+ cmp r1, #0x0
+ beq _020DEE24
+_020DEE10:
+ ldr r0, _020DEE5C ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ bx lr
+_020DEE24:
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ movs r12, r1, lsr #0x1d
+ ldreq r0, [r0, #0x18]
+ bxeq lr
+ ldr r2, [r0, #0x24]
+ ldr r1, [r0, #0x1c]
+ ldr r3, [r0, #0x34]
+ sub r0, r2, r1
+ cmp r12, #0x3
+ add r0, r3, r0
+ subcs r1, r12, #0x2
+ subcs r0, r0, r1
+ bx lr
+ .balign 4
+_020DEE5C: .word errno
+ arm_func_end _ftell
+
+ arm_func_start ftell
+ftell: ; 0x020DEE60
+ stmdb sp!, {r3-r7,lr}
+ ldr r1, _020DEF60 ; =__files
+ mov r7, r0
+ cmp r7, r1
+ moveq r6, #0x2
+ beq _020DEE98
+ ldr r0, _020DEF64 ; =__files + 0x4C
+ cmp r7, r0
+ moveq r6, #0x3
+ beq _020DEE98
+ ldr r0, _020DEF68 ; =__files + 0x98
+ cmp r7, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DEE98:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DEF6C ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DEED8
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DEF30
+_020DEED8:
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r1, _020DEF74 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DEF08
+ ldr r1, _020DEF78 ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DEF30
+_020DEF08:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DEF30:
+ mov r0, r7
+ bl _ftell
+ ldr r1, _020DEF78 ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DEF58
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DEF58:
+ mov r0, r7
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020DEF60: .word __files
+_020DEF64: .word __files + 0x4C
+_020DEF68: .word __files + 0x98
+_020DEF6C: .word __cs
+_020DEF70: .word OSi_ThreadInfo
+_020DEF74: .word __cs_id
+_020DEF78: .word __cs_ref
+ arm_func_end ftell
+
+ arm_func_start _fseek
+_fseek: ; 0x020DEF7C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r1, [r5, #0x4]
+ mov r4, r2
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ ldreqb r1, [r5, #0xd]
+ cmpeq r1, #0x0
+ beq _020DEFC8
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DEFC8:
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DF018
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DF018
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF018:
+ cmp r4, #0x1
+ bne _020DF038
+ mov r0, r5
+ mov r4, #0x0
+ bl _ftell
+ ldr r1, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+_020DF038:
+ cmp r4, #0x2
+ beq _020DF0CC
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ beq _020DF0CC
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020DF0CC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, #0x18]
+ cmp r2, r0
+ bhs _020DF088
+ ldr r0, [r5, #0x34]
+ cmp r2, r0
+ bhs _020DF098
+_020DF088:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF098:
+ ldr r1, [r5, #0x1c]
+ sub r0, r2, r0
+ add r0, r1, r0
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #0x14]
+ sub r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ orr r0, r0, #0x2
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF0CC:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+_020DF0D8:
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ movs r0, r0, lsr #0x1d
+ bne _020DF150
+ ldr r12, [r5, #0x38]
+ cmp r12, #0x0
+ beq _020DF13C
+ ldr r0, [r5, #0x0]
+ ldr r3, [r5, #0x48]
+ add r1, sp, #0x14
+ mov r2, r4
+ blx r12
+ cmp r0, #0x0
+ beq _020DF13C
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF13C:
+ mov r1, #0x0
+ strb r1, [r5, #0xc]
+ ldr r0, [sp, #0x14]
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x28]
+_020DF150:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DF160: .word errno
+ arm_func_end _fseek
+
+ arm_func_start fseek
+fseek:
+ stmdb sp!, {r3-r9,lr}
+ ldr r3, _020DF274 ; =__files
+ mov r9, r0
+ cmp r9, r3
+ mov r8, r1
+ mov r7, r2
+ moveq r6, #0x2
+ beq _020DF1A4
+ ldr r0, _020DF278 ; =__files + 0x4C
+ cmp r9, r0
+ moveq r6, #0x3
+ beq _020DF1A4
+ ldr r0, _020DF27C ; =__files + 0x98
+ cmp r9, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DF1A4:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DF280 ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DF1E4
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DF23C
+_020DF1E4:
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r1, _020DF288 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DF214
+ ldr r1, _020DF28C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DF23C
+_020DF214:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DF23C:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r7
+ bl _fseek
+ ldr r1, _020DF28C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DF26C
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DF26C:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DF274: .word __files
+_020DF278: .word __files + 0x4C
+_020DF27C: .word __files + 0x98
+_020DF280: .word __cs
+_020DF284: .word OSi_ThreadInfo
+_020DF288: .word __cs_id
+_020DF28C: .word __cs_ref
+ arm_func_end fseek
+
+ arm_func_start rewind
+rewind: ; 0x020DF290
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r4, r0
+ mov r2, r1
+ strb r1, [r4, #0xd]
+ bl fseek
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ ldmia sp!, {r4,pc}
+ arm_func_end rewind
+
+ .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_Common_float.s b/arm9/asm/MSL_Common_float.s
new file mode 100644
index 00000000..c9a1db8f
--- /dev/null
+++ b/arm9/asm/MSL_Common_float.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+ .global __float_huge
+__float_huge: ; 0x02106B74
+ .word 0x7F800000 ; inf
+ .size __float_huge,.-__float_huge
+
+ .global __float_nan
+__float_nan: ; 0x02106B78
+ .word 0x7FFFFFFF ; nan
+ .size __float_nan,.-__float_nan
+
+ .global __double_huge
+__double_huge: ; 0x02106B7C
+ .word 0x00000000, 0x7FF00000 ; inf
+ .size __double_huge,.-__double_huge
diff --git a/arm9/asm/MSL_Common_mbstring.s b/arm9/asm/MSL_Common_mbstring.s
new file mode 100644
index 00000000..e7bf6947
--- /dev/null
+++ b/arm9/asm/MSL_Common_mbstring.s
@@ -0,0 +1,247 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .balign 4
+ .global _loc_tim_C$timezone
+_loc_tim_C$timezone: ; 0x02106B84
+ .asciz ""
+ .size _loc_tim_C$timezone,.-_loc_tim_C$timezone
+
+ .balign 4
+ .global _loc_tim_C$timefmt2
+_loc_tim_C$timefmt2: ; 0x02106B88
+ .asciz "%T"
+ .size _loc_tim_C$timefmt2,.-_loc_tim_C$timefmt2
+
+ .balign 4
+ .global _loc_tim_C$AMPM
+_loc_tim_C$AMPM: ; 0x02106B8C
+ .asciz "AM|PM"
+ .size _loc_tim_C$AMPM,.-_loc_tim_C$AMPM
+
+ .balign 4, 0
+ .global _loc_ctyp_C
+_loc_ctyp_C: ; 0x02106B94
+ .word __mbtowc_noconv
+ .word __wctomb_noconv
+ .size _loc_ctyp_C,.-_loc_ctyp_C
+
+ .global _loc_coll_C
+_loc_coll_C: ; 0x02106B9C
+ .word 0x20
+ .word 0x6E
+ .word 0x00
+ .word char_coll_tableC
+ .size _loc_coll_C,.-_loc_coll_C
+
+ .global _loc_tim_C
+_loc_tim_C: ; 0x02106BAC
+ .word _loc_tim_C$AMPM
+ .word _loc_tim_C$datetimefmt
+ .word _loc_tim_C$timefmt
+ .word _loc_tim_C$datefmt
+ .word _loc_tim_C$timefmt2
+ .word _loc_tim_C$daynames
+ .word _loc_tim_C$monthnames
+ .word _loc_tim_C$timezone
+ .size _loc_tim_C,.-_loc_tim_C
+
+ .global char_coll_tableC
+char_coll_tableC: ; 0x02106BCC
+ .short 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008
+ .short 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010
+ .short 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028
+ .short 0x0029, 0x002A, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016
+ .short 0x0017, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0035, 0x0037
+ .short 0x0039, 0x003B, 0x003D, 0x003F, 0x0041, 0x0043, 0x0045, 0x0047
+ .short 0x0049, 0x004B, 0x004D, 0x004F, 0x0051, 0x0053, 0x0055, 0x0057
+ .short 0x0059, 0x005B, 0x005D, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C
+ .short 0x0000, 0x002C, 0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038
+ .short 0x003A, 0x003C, 0x003E, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048
+ .short 0x004A, 0x004C, 0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058
+ .short 0x005A, 0x005C, 0x005E, 0x001D, 0x001E, 0x001F, 0x0020, 0x0000
+ .size char_coll_tableC,.-char_coll_tableC
+
+ .global _loc_tim_C$datefmt
+_loc_tim_C$datefmt: ; 0x02106C8C
+ .asciz "%m/%d/%y"
+ .size _loc_tim_C$datefmt,.-_loc_tim_C$datefmt
+
+ .balign 4, 0
+ .global _current_locale
+_current_locale: ; 0x02106C98
+ .word _loc_tim_C
+ .word _loc_coll_C
+ .word _loc_ctyp_C
+ .size _current_locale,.-_current_locale
+
+ .global _loc_tim_C$timefmt
+_loc_tim_C$timefmt: ; 0x02106CA4
+ .asciz "%I:%M:%S %p"
+ .size _loc_tim_C$timefmt,.-_loc_tim_C$timefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$datetimefmt
+_loc_tim_C$datetimefmt: ; 0x02106CB0
+ .asciz "%a %b %e %T %Y"
+ .size _loc_tim_C$datetimefmt,.-_loc_tim_C$datetimefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$daynames
+_loc_tim_C$daynames: ; 0x02106CC0
+ .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
+ .size _loc_tim_C$daynames,.-_loc_tim_C$daynames
+
+ .balign 4, 0
+ .global _loc_tim_C$monthnames
+_loc_tim_C$monthnames: ; 0x02106D18
+ .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
+ .size _loc_tim_C$monthnames,.-_loc_tim_C$monthnames
+
+ .text
+
+ arm_func_start mbtowc
+mbtowc:
+ stmdb sp!, {r3,lr}
+ ldr r3, _020DF2CC ; =_current_locale
+ ldr r3, [r3, #0x8]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF2CC: .word _current_locale
+ arm_func_end mbtowc
+
+ arm_func_start __mbtowc_noconv
+__mbtowc_noconv: ; 0x020DF2D0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r2, #0x0
+ mvneq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ ldrneb r2, [r1, #0x0]
+ strneh r2, [r0, #0x0]
+ ldrsb r0, [r1, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ movne r0, #0x1
+ bx lr
+ arm_func_end __mbtowc_noconv
+
+ arm_func_start __wctomb_noconv
+__wctomb_noconv: ; 0x020DF308
+ cmp r0, #0x0
+ moveq r0, #0x0
+ strneb r1, [r0, #0x0]
+ movne r0, #0x1
+ bx lr
+ arm_func_end __wctomb_noconv
+
+ arm_func_start wctomb
+wctomb: ; 0x020DF31C
+ stmdb sp!, {r3,lr}
+ ldr r2, _020DF334 ; =_current_locale
+ ldr r2, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF334: .word _current_locale
+ arm_func_end wctomb
+
+ arm_func_start mbstowcs
+mbstowcs: ; 0x020DF338
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r1
+ mov r8, r0
+ mov r0, r7
+ mov r6, r2
+ bl strlen
+ mov r5, r0
+ cmp r8, #0x0
+ mov r4, #0x0
+ beq _020DF3B8
+ cmp r6, #0x0
+ bls _020DF3B8
+_020DF368:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _020DF3A0
+ mov r0, r8
+ mov r1, r7
+ mov r2, r5
+ bl mbtowc
+ cmp r0, #0x0
+ add r8, r8, #0x2
+ addgt r7, r7, r0
+ subgt r5, r5, r0
+ bgt _020DF3AC
+ mvn r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020DF3A0:
+ mov r0, #0x0
+ strh r0, [r8, #0x0]
+ b _020DF3B8
+_020DF3AC:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blo _020DF368
+_020DF3B8:
+ mov r0, r4
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end mbstowcs
+
+ arm_func_start wcstombs
+wcstombs:
+ stmdb sp!, {r3-r9,lr}
+ movs r4, r0
+ mov r9, r1
+ cmpne r9, #0x0
+ mov r8, r2
+ mov r7, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r9,pc}
+ add r6, sp, #0x0
+_020DF3E4:
+ ldrh r1, [r9, #0x0]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streqb r0, [r4, r7]
+ beq _020DF430
+ mov r0, r6
+ add r9, r9, #0x2
+ bl wctomb
+ mov r5, r0
+ add r0, r7, r5
+ cmp r0, r8
+ bhi _020DF430
+ mov r1, r6
+ mov r2, r5
+ add r0, r4, r7
+ bl strncpy
+ add r7, r7, r5
+ cmp r7, r8
+ bls _020DF3E4
+_020DF430:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ arm_func_end wcstombs
+
+ .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_Common_mem.s b/arm9/asm/MSL_Common_mem.s
new file mode 100644
index 00000000..d6449dde
--- /dev/null
+++ b/arm9/asm/MSL_Common_mem.s
@@ -0,0 +1,115 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start memcpy
+memcpy: ; 0x020DF438
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF444:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF444
+ bx lr
+ arm_func_end memcpy
+
+ arm_func_start memmove
+memmove: ; 0x020DF458
+ cmp r1, r0
+ blo _020DF480
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF46C:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF46C
+ bx lr
+_020DF480:
+ cmp r2, #0x0
+ add r3, r1, r2
+ add r12, r0, r2
+ bxeq lr
+_020DF490:
+ ldrsb r1, [r3, #-0x1]!
+ subs r2, r2, #0x1
+ strb r1, [r12, #-0x1]!
+ bne _020DF490
+ bx lr
+ arm_func_end memmove
+
+ arm_func_start memset
+memset: ; 0x020DF4A4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl __fill_mem
+ mov r0, r4
+ ldmia sp!, {r4,pc}
+ arm_func_end memset
+
+ arm_func_start memchr
+memchr:
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ beq _020DF4DC
+_020DF4C4:
+ ldrb r1, [r0], #0x1
+ cmp r1, r3
+ subeq r0, r0, #0x1
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4C4
+_020DF4DC:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memchr
+
+ arm_func_start __memrchr
+__memrchr: ; 0x020DF4E4
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ add r0, r0, r2
+ beq _020DF508
+_020DF4F4:
+ ldrb r1, [r0, #-0x1]!
+ cmp r1, r3
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4F4
+_020DF508:
+ mov r0, #0x0
+ bx lr
+ arm_func_end __memrchr
+
+ arm_func_start memcmp
+memcmp: ; 0x020DF510
+ cmp r2, #0x0
+ beq _020DF548
+_020DF518:
+ ldrb r12, [r0], #0x1
+ ldrb r3, [r1], #0x1
+ cmp r12, r3
+ beq _020DF540
+ ldrb r2, [r0, #-0x1]
+ ldrb r0, [r1, #-0x1]
+ cmp r2, r0
+ mvncc r0, #0x0
+ movcs r0, #0x1
+ bx lr
+_020DF540:
+ subs r2, r2, #0x1
+ bne _020DF518
+_020DF548:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memcmp
+
+ .section .exceptix,4
+
+ .word memset
+ .short 21
+ .word 0x00100100
diff --git a/arm9/asm/MSL_Common_mem_funcs.s b/arm9/asm/MSL_Common_mem_funcs.s
new file mode 100644
index 00000000..2a0a0efb
--- /dev/null
+++ b/arm9/asm/MSL_Common_mem_funcs.s
@@ -0,0 +1,61 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __fill_mem
+__fill_mem: ; 0x020DF550
+ cmp r2, #0x20
+ and r3, r1, #0xff
+ blo _020DF5E4
+ rsb r1, r0, #0x0
+ ands r12, r1, #0x3
+ beq _020DF57C
+ sub r2, r2, r12
+ and r1, r3, #0xff
+_020DF570:
+ strb r1, [r0], #0x1
+ subs r12, r12, #0x1
+ bne _020DF570
+_020DF57C:
+ cmp r3, #0x0
+ beq _020DF594
+ mov r1, r3, lsl #0x10
+ orr r1, r1, r3, lsl #0x18
+ orr r1, r1, r3, lsl #0x8
+ orr r3, r3, r1
+_020DF594:
+ movs r1, r2, lsr #0x5
+ beq _020DF5C8
+_020DF59C:
+ str r3, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r3, [r0, #0xc]
+ str r3, [r0, #0x10]
+ str r3, [r0, #0x14]
+ str r3, [r0, #0x18]
+ str r3, [r0, #0x1c]
+ add r0, r0, #0x20
+ subs r1, r1, #0x1
+ bne _020DF59C
+_020DF5C8:
+ and r1, r2, #0x1f
+ movs r1, r1, lsr #0x2
+ beq _020DF5E0
+_020DF5D4:
+ str r3, [r0], #0x4
+ subs r1, r1, #0x1
+ bne _020DF5D4
+_020DF5E0:
+ and r2, r2, #0x3
+_020DF5E4:
+ cmp r2, #0x0
+ bxeq lr
+ and r1, r3, #0xff
+_020DF5F0:
+ strb r1, [r0], #0x1
+ subs r2, r2, #0x1
+ bne _020DF5F0
+ bx lr
+ arm_func_end __fill_mem
diff --git a/arm9/asm/MSL_Common_printf.s b/arm9/asm/MSL_Common_printf.s
new file mode 100644
index 00000000..b9879afe
--- /dev/null
+++ b/arm9/asm/MSL_Common_printf.s
@@ -0,0 +1,2607 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .global UNK_02106DA0
+UNK_02106DA0: ; 0x02106DA0
+ .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
+ .size UNK_02106DA0,.-UNK_02106DA0
+
+ .global UNK_02106DA8
+UNK_02106DA8: ; 0x02106DA8
+ .asciz "-INF"
+ .size UNK_02106DA8,.-UNK_02106DA8
+
+ .balign 4, 0
+ .global UNK_02106DB0
+UNK_02106DB0: ; 0x02106DB0
+ .asciz "-inf"
+ .size UNK_02106DB0,.-UNK_02106DB0
+
+ .balign 4, 0
+ .global UNK_02106DB8
+UNK_02106DB8: ; 0x02106DB8
+ .asciz "INF"
+ .size UNK_02106DB8,.-UNK_02106DB8
+
+ .balign 4, 0
+ .global UNK_02106DBC
+UNK_02106DBC: ; 0x02106DBC
+ .asciz "inf"
+ .size UNK_02106DBC,.-UNK_02106DBC
+
+ .balign 4, 0
+ .global UNK_02106DC0
+UNK_02106DC0: ; 0x02106DC0
+ .asciz "-NAN"
+ .size UNK_02106DC0,.-UNK_02106DC0
+
+ .balign 4, 0
+ .global UNK_02106DC8
+UNK_02106DC8: ; 0x02106DC8
+ .asciz "-nan"
+ .size UNK_02106DC8,.-UNK_02106DC8
+
+ .balign 4, 0
+ .global UNK_02106DD0
+UNK_02106DD0: ; 0x02106DD0
+ .asciz "NAN"
+ .size UNK_02106DD0,.-UNK_02106DD0
+
+ .balign 4, 0
+ .global UNK_02106DD4
+UNK_02106DD4: ; 0x02106DD4
+ .asciz "nan"
+ .size UNK_02106DD4,.-UNK_02106DD4
+
+ .balign 4, 0
+ .global UNK_02106DD8
+UNK_02106DD8: ; 0x02106DD8
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size UNK_02106DD8,.-UNK_02106DD8
+
+ .global UNK_02106DDC
+UNK_02106DDC: ; 0x02106DDC
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size UNK_02106DDC,.-UNK_02106DDC
+
+ .text
+
+ arm_func_start parse_format
+parse_format: ; 0x020DF600
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrsb r3, [r0, #0x1]
+ mov r4, #0x0
+ mov r5, #0x1
+ mov lr, r2
+ strb r5, [sp, #0x0]
+ strb r4, [sp, #0x1]
+ strb r4, [sp, #0x2]
+ strb r4, [sp, #0x3]
+ strb r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r4, [sp, #0xc]
+ cmp r3, #0x25
+ add r12, r0, #0x1
+ bne _020DF65C
+ add r0, sp, #0x0
+ strb r3, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF65C:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020DF670:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020DF6A0
+ bge _020DF6C8
+ cmp r3, #0x23
+ bgt _020DF6F8
+ cmp r3, #0x20
+ blt _020DF6F8
+ beq _020DF6D0
+ cmp r3, #0x23
+ beq _020DF6E0
+ b _020DF6F8
+_020DF6A0:
+ cmp r3, #0x30
+ bgt _020DF6F8
+ cmp r3, #0x2d
+ blt _020DF6F8
+ beq _020DF6C0
+ cmp r3, #0x30
+ beq _020DF6E8
+ b _020DF6F8
+_020DF6C0:
+ strb r6, [sp, #0x0]
+ b _020DF6FC
+_020DF6C8:
+ strb r7, [sp, #0x1]
+ b _020DF6FC
+_020DF6D0:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020DF6FC
+_020DF6E0:
+ strb r7, [sp, #0x3]
+ b _020DF6FC
+_020DF6E8:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020DF6FC
+_020DF6F8:
+ mov r8, r0
+_020DF6FC:
+ cmp r8, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ bne _020DF670
+ cmp r3, #0x2a
+ bne _020DF744
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020DF73C
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020DF73C:
+ ldrsb r3, [r12, #0x1]!
+ b _020DF794
+_020DF744:
+ ldr r4, _020DFB88 ; =__msl_digit
+ mov r5, #0x0
+ mov r0, #0xa
+ b _020DF768
+_020DF754:
+ ldr r2, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r2, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r6, [sp, #0x8]
+_020DF768:
+ cmp r3, #0x0
+ blt _020DF778
+ cmp r3, #0x80
+ blt _020DF780
+_020DF778:
+ mov r2, r5
+ b _020DF78C
+_020DF780:
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020DF78C:
+ cmp r2, #0x0
+ bne _020DF754
+_020DF794:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020DFB8C ; =0x000001FD
+ cmp r2, r0
+ ble _020DF7C4
+ mov r1, #0xff
+ add r0, sp, #0x0
+ strb r1, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF7C4:
+ cmp r3, #0x2e
+ bne _020DF858
+ ldrsb r3, [r12, #0x1]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020DF808
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrsb r3, [r12, #0x1]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020DF858
+_020DF808:
+ ldr r2, _020DFB88 ; =__msl_digit
+ mov r4, #0x0
+ mov r0, #0xa
+ b _020DF82C
+_020DF818:
+ ldr r1, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r1, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r5, [sp, #0xc]
+_020DF82C:
+ cmp r3, #0x0
+ blt _020DF83C
+ cmp r3, #0x80
+ blt _020DF844
+_020DF83C:
+ mov r1, r4
+ b _020DF850
+_020DF844:
+ mov r1, r3, lsl #0x1
+ ldrh r1, [r2, r1]
+ and r1, r1, #0x8
+_020DF850:
+ cmp r1, #0x0
+ bne _020DF818
+_020DF858:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020DF890
+ cmp r3, #0x68
+ blt _020DF884
+ beq _020DF8AC
+ cmp r3, #0x6a
+ beq _020DF8F8
+ cmp r3, #0x6c
+ beq _020DF8C8
+ b _020DF91C
+_020DF884:
+ cmp r3, #0x4c
+ beq _020DF8EC
+ b _020DF91C
+_020DF890:
+ cmp r3, #0x74
+ bgt _020DF8A0
+ beq _020DF904
+ b _020DF91C
+_020DF8A0:
+ cmp r3, #0x7a
+ beq _020DF910
+ b _020DF91C
+_020DF8AC:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8C8:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020DF920
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8EC:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF8F8:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF904:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF910:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF91C:
+ mov r0, #0x0
+_020DF920:
+ cmp r0, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ strb r3, [sp, #0x5]
+ cmp r3, #0x61
+ bgt _020DF974
+ bge _020DFA5C
+ cmp r3, #0x47
+ bgt _020DF968
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020DFB68
+ b _020DFA5C ; case 65
+ b _020DFB68 ; case 66
+ b _020DFB68 ; case 67
+ b _020DFB68 ; case 68
+ b _020DFAA4 ; case 69
+ b _020DFA24 ; case 70
+ b _020DFA94 ; case 71
+_020DF968:
+ cmp r3, #0x58
+ beq _020DF9E8
+ b _020DFB68
+_020DF974:
+ cmp r3, #0x63
+ bgt _020DF984
+ beq _020DFB04
+ b _020DFB68
+_020DF984:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020DFB68
+ b _020DF9E8 ; case 100
+ b _020DFAA4 ; case 101
+ b _020DFA24 ; case 102
+ b _020DFA94 ; case 103
+ b _020DFB68 ; case 104
+ b _020DF9E8 ; case 105
+ b _020DFB68 ; case 106
+ b _020DFB68 ; case 107
+ b _020DFB68 ; case 108
+ b _020DFB68 ; case 109
+ b _020DFB54 ; case 110
+ b _020DF9E8 ; case 111
+ b _020DFAE0 ; case 112
+ b _020DFB68 ; case 113
+ b _020DFB68 ; case 114
+ b _020DFB30 ; case 115
+ b _020DFB68 ; case 116
+ b _020DF9E8 ; case 117
+ b _020DFB68 ; case 118
+ b _020DFB68 ; case 119
+ b _020DF9E8 ; case 120
+_020DF9E8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020DFB70
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020DFB70
+_020DFA24:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFA5C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0xd
+ streq r0, [sp, #0xc]
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFA94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020DFAA4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFAE0:
+ mov r3, #0x78
+ mov r2, #0x1
+ mov r1, #0x3
+ mov r0, #0x8
+ strb r3, [sp, #0x5]
+ strb r2, [sp, #0x3]
+ strb r1, [sp, #0x4]
+ str r0, [sp, #0xc]
+ b _020DFB70
+_020DFB04:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB30:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB54:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB68:
+ mov r0, #0xff
+ strb r0, [sp, #0x5]
+_020DFB70:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x1
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020DFB88: .word __msl_digit
+_020DFB8C: .word 0x000001FD
+ arm_func_end parse_format
+
+ arm_func_start long2str
+long2str: ; 0x020DFB90
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ movs r10, r0
+ mov r0, #0x0
+ mov r5, r1
+ str r0, [sp, #0xc]
+ ldr r7, [sp, #0x4c]
+ mov r6, r0
+ strb r0, [r5, #-0x1]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrb r8, [sp, #0x45]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020DFC04
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFBF0
+ cmp r8, #0x6f
+ beq _020DFC04
+_020DFBF0:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFC04:
+ cmp r8, #0x69
+ bgt _020DFC2C
+ bge _020DFC60
+ cmp r8, #0x58
+ bgt _020DFC20
+ beq _020DFC8C
+ b _020DFC94
+_020DFC20:
+ cmp r8, #0x64
+ beq _020DFC60
+ b _020DFC94
+_020DFC2C:
+ cmp r8, #0x6f
+ bgt _020DFC40
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020DFC94
+_020DFC40:
+ cmp r8, #0x78
+ bgt _020DFC94
+ cmp r8, #0x75
+ blt _020DFC94
+ beq _020DFC80
+ cmp r8, #0x78
+ beq _020DFC8C
+ b _020DFC94
+_020DFC60:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020DFC94
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020DFC94
+_020DFC80:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020DFC94
+_020DFC8C:
+ mov r4, #0x10
+ mov r11, #0x0
+_020DFC94:
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ mov r9, r1
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ cmp r9, #0xa
+ mov r10, r0
+ addlt r9, r9, #0x30
+ blt _020DFCCC
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020DFCCC:
+ cmp r10, #0x0
+ strb r9, [r5, #-0x1]!
+ add r6, r6, #0x1
+ bne _020DFC94
+ cmp r4, #0x8
+ bne _020DFD00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r5, #-0x1]!
+ addne r6, r6, #0x1
+_020DFD00:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020DFD34
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020DFD34
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020DFD34:
+ ldr r0, [sp, #0x0]
+ sub r1, r0, r5
+ ldr r0, _020DFDD8 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020DFD78
+ mov r0, #0x30
+_020DFD68:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strb r0, [r5, #-0x1]!
+ blt _020DFD68
+_020DFD78:
+ cmp r4, #0x10
+ bne _020DFD94
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r5, #-0x1]
+ strneb r0, [r5, #-0x2]!
+_020DFD94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r5, #-0x1]!
+ bne _020DFDC4
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r5, #-0x1]!
+ beq _020DFDC4
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqb r0, [r5, #-0x1]!
+_020DFDC4:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DFDD8: .word 0x000001FD
+ arm_func_end long2str
+
+ arm_func_start longlong2str
+longlong2str: ; 0x020DFDDC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x18
+ mov r9, r1
+ mov r1, #0x0
+ mov r10, r0
+ mov r6, r2
+ mov r0, r1
+ strb r0, [r6, #-0x1]!
+ ldr r0, [sp, #0x58]
+ cmp r9, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [sp, #0x4f]
+ cmpeq r10, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x54]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x8]
+ ldrb r0, [sp, #0x4d]
+ mov r7, r1
+ ldrb r8, [sp, #0x51]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020DFE6C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFE58
+ cmp r8, #0x6f
+ beq _020DFE6C
+_020DFE58:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFE6C:
+ cmp r8, #0x69
+ bgt _020DFE94
+ bge _020DFEC4
+ cmp r8, #0x58
+ bgt _020DFE88
+ beq _020DFF18
+ b _020DFF24
+_020DFE88:
+ cmp r8, #0x64
+ beq _020DFEC4
+ b _020DFF24
+_020DFE94:
+ cmp r8, #0x6f
+ bgt _020DFEA4
+ beq _020DFEF8
+ b _020DFF24
+_020DFEA4:
+ cmp r8, #0x78
+ bgt _020DFF24
+ cmp r8, #0x75
+ blt _020DFF24
+ beq _020DFF08
+ cmp r8, #0x78
+ beq _020DFF18
+ b _020DFF24
+_020DFEC4:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020DFF24
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020DFEEC
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020DFEEC:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020DFF24
+_020DFEF8:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020DFF24
+_020DFF08:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020DFF24
+_020DFF18:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020DFF24:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ull_mod
+ mov r4, r0
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ll_udiv
+ mov r10, r0
+ cmp r4, #0xa
+ mov r9, r1
+ addlt r0, r4, #0x30
+ blt _020DFF70
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020DFF70:
+ strb r0, [r6, #-0x1]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020DFF24
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020DFFB0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r6, #-0x1]!
+ addne r7, r7, #0x1
+_020DFFB0:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E0000
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0xc]
+ cmpeq r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x1
+ strne r0, [sp, #0x10]
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0000
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E0000:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E00B8 ; =0x000001FD
+ sub r2, r0, r6
+ ldr r0, [sp, #0x10]
+ add r0, r0, r2
+ cmp r0, r1
+ addgt sp, sp, #0x18
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldr r0, [sp, #0x10]
+ cmp r7, r0
+ bge _020E0050
+ mov r1, #0x30
+_020E003C:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strb r1, [r6, #-0x1]!
+ blt _020E003C
+_020E0050:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0070
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r6, #-0x1]
+ strneb r0, [r6, #-0x2]!
+_020E0070:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r6, #-0x1]!
+ bne _020E00A4
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r6, #-0x1]!
+ beq _020E00A4
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqb r0, [r6, #-0x1]!
+_020E00A4:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E00B8: .word 0x000001FD
+ arm_func_end longlong2str
+
+ arm_func_start double2hex
+double2hex: ; 0x020E00BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E056C ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrb r6, [sp, #0x79]
+ ldrb r5, [sp, #0x77]
+ ldrb r4, [sp, #0x75]
+ ldr r1, [sp, #0x68]
+ ldr r2, [sp, #0x6c]
+ addgt sp, sp, #0x44
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r10,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r10, #0x0
+ mov r9, #0x20
+ add r0, sp, #0x8
+ add r3, sp, #0xc
+ strb r10, [sp, #0x8]
+ strh r9, [sp, #0xa]
+ bl __num2dec_internal2
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ bl fabs
+ mov r2, r0
+ mov r0, r10
+ mov r3, r1
+ mov r1, r0
+ bl _deq
+ bne _020E0188
+ ldr r3, _020E0570 ; =UNK_02106DA0
+ sub r0, r8, #0x6
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ add sp, sp, #0x44
+ strb r2, [r8, #-0x6]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r2, [r3, #0x4]
+ ldrb r1, [r3, #0x5]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0188:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E0298
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0224
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E01E8
+ ldr r3, _020E0574 ; =UNK_02106DA8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E01E8:
+ ldr r3, _020E0578 ; =UNK_02106DB0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0224:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0264
+ ldr r3, _020E057C ; =UNK_02106DB8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0264:
+ ldr r3, _020E0580 ; =UNK_02106DBC
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0298:
+ cmp r0, #0x4e
+ bne _020E03A4
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0330
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E02F4
+ ldr r3, _020E0584 ; =UNK_02106DC0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E02F4:
+ ldr r3, _020E0588 ; =UNK_02106DC8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0330:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0370
+ ldr r3, _020E058C ; =UNK_02106DD0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0370:
+ ldr r3, _020E0590 ; =UNK_02106DD4
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E03A4:
+ mov r3, r10
+ mov r1, #0x1
+ mov r0, #0x64
+ add r9, sp, #0x68
+ strb r1, [sp, #0x34]
+ strb r1, [sp, #0x35]
+ strb r3, [sp, #0x36]
+ strb r3, [sp, #0x37]
+ strb r3, [sp, #0x38]
+ str r3, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ strb r0, [sp, #0x39]
+_020E03D4:
+ rsb r1, r3, #0x7
+ ldrsb r2, [r9, r3]
+ ldrsb r0, [r9, r1]
+ strb r0, [r9, r3]
+ add r3, r3, #0x1
+ strb r2, [r9, r1]
+ cmp r3, #0x4
+ blt _020E03D4
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E0594 ; =0x000007FF
+ mov r0, r0, lsl #0x11
+ orr r1, r0, r1, lsl #0x19
+ add r0, sp, #0x34
+ and lr, r9, r1, lsr #0x15
+ sub r12, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r12, {r0-r3}
+ rsb r0, r9, #0x400
+ mov r1, r8
+ add r0, lr, r0
+ ldmia r12, {r2-r3}
+ bl long2str
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strb r1, [r0, #-0x1]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E04E4
+ mov r9, #0x30
+_020E045C:
+ cmp r8, #0x40
+ bge _020E04CC
+ ldrb r1, [r12, r8, asr #0x3]
+ and r2, r8, #0x7
+ rsb r3, r2, #0x7
+ mov r2, r1, asr r3
+ sub r10, r8, #0x4
+ bic r1, r8, #0x7
+ bic r10, r10, #0x7
+ cmp r1, r10
+ add r10, r12, r8, asr #0x3
+ and r1, r2, #0xff
+ beq _020E04A0
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E04A0:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E04D0
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E04D0
+_020E04CC:
+ mov r1, r9
+_020E04D0:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strb r1, [r0, #-0x1]!
+ sub r8, r8, #0x4
+ bge _020E045C
+_020E04E4:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r0, #-0x1]!
+ mov r1, #0x31
+ strb r1, [r0, #-0x1]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strb r1, [r0, #-0x2]!
+ mov r1, #0x30
+ strb r1, [r0, #-0x1]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneb r1, [r0, #-0x1]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqb r1, [r0, #-0x1]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqb r1, [r0, #-0x1]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E056C: .word 0x000001FD
+_020E0570: .word UNK_02106DA0
+_020E0574: .word UNK_02106DA8
+_020E0578: .word UNK_02106DB0
+_020E057C: .word UNK_02106DB8
+_020E0580: .word UNK_02106DBC
+_020E0584: .word UNK_02106DC0
+_020E0588: .word UNK_02106DC8
+_020E058C: .word UNK_02106DD0
+_020E0590: .word UNK_02106DD4
+_020E0594: .word 0x000007FF
+ arm_func_end double2hex
+
+ arm_func_start round_decimal
+round_decimal: ; 0x020E0598
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E05C0
+_020E05A4:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ strb r1, [r0, #0x4]
+ mov r1, #0x30
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E05C0:
+ ldrb lr, [r0, #0x4]
+ cmp r1, lr
+ ldmgeia sp!, {r4,pc}
+ add r12, r0, #0x5
+ add r2, r12, r1
+ add r2, r2, #0x1
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x5
+ bne _020E0620
+ add r12, r12, lr
+_020E05F4:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E060C
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E05F4
+_020E060C:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E0628
+_020E0620:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E0628:
+ cmp r1, #0x0
+ beq _020E0684
+ mov r12, #0x0
+ mov lr, #0x1
+_020E0638:
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ add r3, r3, r4
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x9
+ movgt r4, lr
+ movle r4, r12
+ cmp r4, #0x0
+ bne _020E0668
+ cmp r3, #0x0
+ bne _020E0670
+_020E0668:
+ sub r1, r1, #0x1
+ b _020E067C
+_020E0670:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E0684
+_020E067C:
+ cmp r1, #0x0
+ bne _020E0638
+_020E0684:
+ cmp r4, #0x0
+ beq _020E06AC
+ ldrsh r3, [r0, #0x2]
+ mov r2, #0x1
+ mov r1, #0x31
+ add r3, r3, #0x1
+ strh r3, [r0, #0x2]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E06AC:
+ cmp r1, #0x0
+ beq _020E05A4
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end round_decimal
+
+ arm_func_start float2str
+float2str: ; 0x020E06BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x2c
+ ldr r7, [sp, #0x68]
+ ldr r3, _020E0DF4 ; =0x000001FD
+ ldrb r6, [sp, #0x61]
+ ldrb r5, [sp, #0x5f]
+ ldrb r4, [sp, #0x5d]
+ cmp r7, r3
+ mov r10, r0
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r12, #0x0
+ mov r11, #0x20
+ add r0, sp, #0x0
+ add r3, sp, #0x4
+ mov r1, r10
+ mov r2, r8
+ strb r12, [sp, #0x0]
+ strh r11, [sp, #0x2]
+ bl __num2dec_internal2
+ ldrb r0, [sp, #0x8]
+ add r1, sp, #0x9
+ add r0, r1, r0
+ b _020E074C
+_020E0734:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E074C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E0764
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E0734
+_020E0764:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E0784
+ cmp r0, #0x49
+ beq _020E0790
+ cmp r0, #0x4e
+ beq _020E08F0
+ b _020E0A44
+_020E0784:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E0A44
+_020E0790:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E0854
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E07BC
+ cmp r6, #0x80
+ blt _020E07C4
+_020E07BC:
+ mov r1, #0x0
+ b _020E07D4
+_020E07C4:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E07D4:
+ cmp r1, #0x0
+ beq _020E0818
+ ldr r3, _020E0DFC ; =UNK_02106DA8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0818:
+ ldr r3, _020E0E00 ; =UNK_02106DB0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0854:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E0868
+ cmp r6, #0x80
+ blt _020E0870
+_020E0868:
+ mov r1, #0x0
+ b _020E0880
+_020E0870:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0880:
+ cmp r1, #0x0
+ beq _020E08BC
+ ldr r3, _020E0E04 ; =UNK_02106DB8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08BC:
+ ldr r3, _020E0E08 ; =UNK_02106DBC
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08F0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E09A8
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E0910
+ cmp r6, #0x80
+ blt _020E0918
+_020E0910:
+ mov r1, #0x0
+ b _020E0928
+_020E0918:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0928:
+ cmp r1, #0x0
+ beq _020E096C
+ ldr r3, _020E0E0C ; =UNK_02106DC0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E096C:
+ ldr r3, _020E0E10 ; =UNK_02106DC8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E09A8:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E09BC
+ cmp r6, #0x80
+ blt _020E09C4
+_020E09BC:
+ mov r1, #0x0
+ b _020E09D4
+_020E09C4:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E09D4:
+ cmp r1, #0x0
+ beq _020E0A10
+ ldr r3, _020E0E14 ; =UNK_02106DD0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A10:
+ ldr r3, _020E0E18 ; =UNK_02106DD4
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A44:
+ ldrb r0, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r8, r9, #0x1
+ sub r0, r0, #0x1
+ add r0, r1, r0
+ strh r0, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E0A98
+ bge _020E0B24
+ cmp r6, #0x47
+ bgt _020E0DE0
+ cmp r6, #0x45
+ blt _020E0DE0
+ beq _020E0B24
+ cmp r6, #0x46
+ beq _020E0C6C
+ cmp r6, #0x47
+ beq _020E0AB0
+ b _020E0DE0
+_020E0A98:
+ cmp r6, #0x66
+ bgt _020E0AA8
+ beq _020E0C6C
+ b _020E0DE0
+_020E0AA8:
+ cmp r6, #0x67
+ bne _020E0DE0
+_020E0AB0:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E0AC8
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal
+_020E0AC8:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E0AE0
+ cmp r2, r7
+ blt _020E0B00
+_020E0AE0:
+ cmp r5, #0x0
+ ldreqb r0, [sp, #0x8]
+ subne r7, r7, #0x1
+ subeq r7, r0, #0x1
+ cmp r6, #0x67
+ moveq r6, #0x65
+ movne r6, #0x45
+ b _020E0B24
+_020E0B00:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E0C6C
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E0C6C
+_020E0B24:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E0B3C
+ add r0, sp, #0x4
+ bl round_decimal
+_020E0B3C:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E0E1C ; =0x66666667
+ mov r0, #0xa
+ b _020E0B90
+_020E0B60:
+ mov r1, lr, lsr #0x1f
+ smull r2, r12, r3, lr
+ add r12, r1, r12, asr #0x2
+ smull r1, r2, r0, r12
+ sub r12, lr, r1
+ add r1, r12, #0x30
+ strb r1, [r8, #-0x1]!
+ mov r2, lr
+ smull r1, lr, r3, r2
+ mov r1, r2, lsr #0x1f
+ add lr, r1, lr, asr #0x2
+ add r10, r10, #0x1
+_020E0B90:
+ cmp lr, #0x0
+ bne _020E0B60
+ cmp r10, #0x2
+ blt _020E0B60
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r9, r8
+ ldr r0, _020E0DF4 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldrb r1, [sp, #0x8]
+ add r0, r7, #0x1
+ cmp r1, r0
+ bge _020E0BFC
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E0BFC
+ mov r0, #0x30
+_020E0BF0:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E0BF0
+_020E0BFC:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E0C20
+_020E0C10:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E0C10
+_020E0C20:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r0, #0x2e
+ strneb r0, [r8, #-0x1]!
+ ldrb r0, [sp, #0x9]
+ strb r0, [r8, #-0x1]!
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E0DE0
+_020E0C6C:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E0CAC
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E0CAC:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E0DF4 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ add r3, sp, #0x9
+ sub r6, r7, r1
+ cmp r6, #0x0
+ add r2, r3, r2
+ mov r9, #0x0
+ ble _020E0D00
+ mov r3, #0x30
+_020E0CF0:
+ add r9, r9, #0x1
+ cmp r9, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E0CF0
+_020E0D00:
+ mov r6, #0x0
+ b _020E0D14
+_020E0D08:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E0D14:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E0D08
+ cmp r6, r1
+ bge _020E0D40
+ mov r3, #0x30
+_020E0D30:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E0D30
+_020E0D40:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E0DA8
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E0D88
+ mov r3, #0x30
+_020E0D70:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E0D70
+_020E0D88:
+ cmp r5, r0
+ bge _020E0DB0
+_020E0D90:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E0D90
+ b _020E0DB0
+_020E0DA8:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E0DB0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E0DE0:
+ mov r0, r8
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E0DF4: .word 0x000001FD
+_020E0DF8: .word __msl_digit
+_020E0DFC: .word UNK_02106DA8
+_020E0E00: .word UNK_02106DB0
+_020E0E04: .word UNK_02106DB8
+_020E0E08: .word UNK_02106DBC
+_020E0E0C: .word UNK_02106DC0
+_020E0E10: .word UNK_02106DC8
+_020E0E14: .word UNK_02106DD0
+_020E0E18: .word UNK_02106DD4
+_020E0E1C: .word 0x66666667
+ arm_func_end float2str
+
+ arm_func_start __pformatter
+__pformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r3, #0x20
+ mov r11, r2
+ strb r3, [sp, #0x19]
+ ldrsb r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r10, #0x0
+ beq _020E1628
+_020E0E50:
+ mov r0, r11
+ mov r1, #0x25
+ bl strchr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E0EA4
+ mov r0, r11
+ bl strlen
+ movs r2, r0
+ add r10, r10, r2
+ beq _020E1628
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E1628
+ add sp, sp, #0x22c
+ mvn r0, #0x0
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0EA4:
+ subs r2, r0, r11
+ add r10, r10, r2
+ beq _020E0ED4
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E0ED4:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x25c
+ add r2, sp, #0x1c
+ bl parse_format
+ ldrb r1, [sp, #0x21]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E0F40
+ bge _020E12A4
+ cmp r1, #0x47
+ bgt _020E0F34
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F28
+ b _020E12A4 ; case 65
+ b _020E148C ; case 66
+ b _020E148C ; case 67
+ b _020E148C ; case 68
+ b _020E123C ; case 69
+ b _020E123C ; case 70
+ b _020E123C ; case 71
+_020E0F28:
+ cmp r1, #0x25
+ beq _020E1478
+ b _020E148C
+_020E0F34:
+ cmp r1, #0x58
+ beq _020E1100
+ b _020E148C
+_020E0F40:
+ cmp r1, #0x75
+ bgt _020E0FA8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F9C
+ b _020E0FC0 ; case 100
+ b _020E123C ; case 101
+ b _020E123C ; case 102
+ b _020E123C ; case 103
+ b _020E148C ; case 104
+ b _020E0FC0 ; case 105
+ b _020E148C ; case 106
+ b _020E148C ; case 107
+ b _020E148C ; case 108
+ b _020E148C ; case 109
+ b _020E13CC ; case 110
+ b _020E1100 ; case 111
+ b _020E148C ; case 112
+ b _020E148C ; case 113
+ b _020E148C ; case 114
+ b _020E130C ; case 115
+ b _020E148C ; case 116
+ b _020E1100 ; case 117
+_020E0F9C:
+ cmp r1, #0x63
+ beq _020E1458
+ b _020E148C
+_020E0FA8:
+ cmp r1, #0x78
+ bgt _020E0FB8
+ beq _020E1100
+ b _020E148C
+_020E0FB8:
+ cmp r1, #0xff
+ b _020E148C
+_020E0FC0:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E0FE0
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E0FE0:
+ cmp r0, #0x4
+ bne _020E1008
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1008:
+ cmp r0, #0x6
+ bne _020E1030
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1030:
+ cmp r0, #0x7
+ bne _020E104C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E104C:
+ cmp r0, #0x8
+ bne _020E1068
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E1068:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E1078:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, asr #0x10
+ cmp r0, #0x1
+ moveq r1, r5, lsl #0x18
+ moveq r5, r1, asr #0x18
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E10CC
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E10F0
+_020E10CC:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E10F0:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E1100:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E1120
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E1120:
+ cmp r0, #0x4
+ bne _020E1148
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1148:
+ cmp r0, #0x6
+ bne _020E1170
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1170:
+ cmp r0, #0x7
+ bne _020E118C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E118C:
+ cmp r0, #0x8
+ bne _020E11A8
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E11A8:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E11B8:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, lsr #0x10
+ cmp r0, #0x1
+ andeq r5, r5, #0xff
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E1208
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E122C
+_020E1208:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E122C:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E123C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E1260
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E1260:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl float2str
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E12A4:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E12C8
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E12C8:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl double2hex
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E130C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x5
+ bne _020E134C
+ ldr r0, [sp, #0x25c]
+ mov r2, #0x200
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r1, [r0, #-0x4]
+ add r0, sp, #0x2c
+ cmp r1, #0x0
+ ldreq r1, _020E163C ; =UNK_02106DD8
+ bl wcstombs
+ cmp r0, #0x0
+ blt _020E148C
+ add r7, sp, #0x2c
+ b _020E135C
+_020E134C:
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r7, [r0, #-0x4]
+_020E135C:
+ ldrb r0, [sp, #0x1f]
+ cmp r7, #0x0
+ ldreq r7, _020E1640 ; =UNK_02106DDC
+ cmp r0, #0x0
+ beq _020E1390
+ ldrb r0, [sp, #0x1e]
+ ldrb r6, [r7], #0x1
+ cmp r0, #0x0
+ beq _020E14D8
+ ldr r0, [sp, #0x28]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E14D8
+_020E1390:
+ ldrb r0, [sp, #0x1e]
+ cmp r0, #0x0
+ beq _020E13BC
+ ldr r6, [sp, #0x28]
+ mov r0, r7
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+ cmp r0, #0x0
+ subne r6, r0, r7
+ b _020E14D8
+_020E13BC:
+ mov r0, r7
+ bl strlen
+ mov r6, r0
+ b _020E14D8
+_020E13CC:
+ ldr r1, [sp, #0x25c]
+ ldrb r0, [sp, #0x20]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r1, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E161C
+ b _020E1410 ; case 0
+ b _020E161C ; case 1
+ b _020E1418 ; case 2
+ b _020E1420 ; case 3
+ b _020E1448 ; case 4
+ b _020E161C ; case 5
+ b _020E1428 ; case 6
+ b _020E1438 ; case 7
+ b _020E1440 ; case 8
+_020E1410:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1418:
+ strh r10, [r1, #0x0]
+ b _020E161C
+_020E1420:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1428:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1438:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1440:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1448:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1458:
+ ldr r0, [sp, #0x25c]
+ add r7, sp, #0x2c
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r0, [r0, #-0x4]
+ mov r6, #0x1
+ strb r0, [sp, #0x2c]
+ b _020E14D8
+_020E1478:
+ mov r0, #0x25
+ strb r0, [sp, #0x2c]
+ add r7, sp, #0x2c
+ mov r6, #0x1
+ b _020E14D8
+_020E148C:
+ ldr r0, [sp, #0xc]
+ bl strlen
+ movs r4, r0
+ beq _020E14C4
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r4
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E14C4:
+ add sp, sp, #0x22c
+ add r0, r10, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E14D8:
+ ldrb r0, [sp, #0x1c]
+ mov r4, r6
+ cmp r0, #0x0
+ beq _020E158C
+ cmp r0, #0x2
+ moveq r0, #0x30
+ movne r0, #0x20
+ strb r0, [sp, #0x19]
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E1548
+ ldrsb r0, [sp, #0x19]
+ cmp r0, #0x30
+ bne _020E1548
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r7, r7, #0x1
+ sub r6, r6, #0x1
+_020E1548:
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E158C
+_020E1554:
+ mov r0, r8
+ add r1, sp, #0x19
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E1554
+_020E158C:
+ cmp r6, #0x0
+ beq _020E15BC
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E15BC:
+ ldrb r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _020E1618
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E1618
+ mov r6, #0x20
+ add r7, sp, #0x18
+_020E15DC:
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ strb r6, [sp, #0x18]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E15DC
+_020E1618:
+ add r10, r10, r4
+_020E161C:
+ ldrsb r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E0E50
+_020E1628:
+ mov r0, r10
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E163C: .word UNK_02106DD8
+_020E1640: .word UNK_02106DDC
+ arm_func_end __pformatter
+
+ arm_func_start __FileWrite
+__FileWrite: ; 0x020E1644
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ mov r0, r1
+ mov r3, r5
+ mov r1, #0x1
+ mov r4, r2
+ bl __fwrite
+ cmp r4, r0
+ movne r5, #0x0
+ mov r0, r5
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __FileWrite
+
+ arm_func_start __StringWrite
+__StringWrite: ; 0x020E1670
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ mov r5, r2
+ ldr r2, [r4, #0x4]
+ add r0, r3, r5
+ cmp r0, r2
+ ldr r0, [r4, #0x0]
+ subhi r5, r2, r3
+ mov r2, r5
+ add r0, r0, r3
+ bl memcpy
+ ldr r1, [r4, #0x8]
+ mov r0, #0x1
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __StringWrite
+
+ arm_func_start printf
+printf: ; 0x020E16B4
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, _020E17B4 ; =__files + 0x4C
+ mvn r1, #0x0
+ bl fwide
+ cmp r0, #0x0
+ mvnge r0, #0x0
+ ldmgeia sp!, {r4,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020E1710
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+ b _020E1768
+_020E1710:
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0xc]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E1740
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x1
+ str r1, [r0, #0xc]
+ b _020E1768
+_020E1740:
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_LockMutex
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+_020E1768:
+ add r0, sp, #0x8
+ bic r3, r0, #0x3
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E17C8 ; =__FileWrite
+ ldr r1, _020E17B4 ; =__files + 0x4C
+ add r3, r3, #0x4
+ bl __pformatter
+ ldr r1, _020E17C4 ; =__cs_ref
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ subs r0, r0, #0x1
+ str r0, [r1, #0xc]
+ bne _020E17A4
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_UnlockMutex
+_020E17A4:
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E17B4: .word __files + 0x4C
+_020E17B8: .word __cs + 0x48
+_020E17BC: .word OSi_ThreadInfo
+_020E17C0: .word __cs_id
+_020E17C4: .word __cs_ref
+_020E17C8: .word __FileWrite
+ arm_func_end printf
+
+ arm_func_start vsnprintf
+vsnprintf: ; 0x020E17CC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E1830 ; =__StringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __pformatter
+ cmp r5, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r5,pc}
+ cmp r0, r4
+ movcc r1, #0x0
+ addcc sp, sp, #0xc
+ strccb r1, [r5, r0]
+ ldmccia sp!, {r4-r5,pc}
+ cmp r4, #0x0
+ addne r1, r5, r4
+ movne r2, #0x0
+ strneb r2, [r1, #-0x1]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E1830: .word __StringWrite
+ arm_func_end vsnprintf
+
+ arm_func_start snprintf
+snprintf: ; 0x020E1834
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end snprintf
+
+ arm_func_start sprintf
+sprintf: ; 0x020E185C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r1, sp, #0xc
+ bic r1, r1, #0x3
+ add r3, r1, #0x4
+ ldr r2, [sp, #0xc]
+ mvn r1, #0x0
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end sprintf
+
+ .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_Common_qsort.s b/arm9/asm/MSL_Common_qsort.s
new file mode 100644
index 00000000..edfc142b
--- /dev/null
+++ b/arm9/asm/MSL_Common_qsort.s
@@ -0,0 +1,112 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start qsort
+qsort: ; 0x020E1888
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ mov r9, r1
+ cmp r9, #0x2
+ mov r10, r0
+ mov r8, r2
+ mov r7, r3
+ addcc sp, sp, #0x10
+ ldmccia sp!, {r3-r11,pc}
+ mov r0, r9, lsr #0x1
+ add r11, r0, #0x1
+ sub r0, r11, #0x1
+ mla r0, r8, r0, r10
+ sub r2, r9, #0x1
+ str r0, [sp, #0xc]
+ mla r0, r8, r2, r10
+ str r0, [sp, #0x8]
+ mul r0, r11, r8
+ mvn r1, #0x0
+ str r0, [sp, #0x4]
+ mul r0, r8, r1
+ str r0, [sp, #0x0]
+_020E18E0:
+ cmp r11, #0x1
+ bls _020E1908
+ ldr r0, [sp, #0x4]
+ sub r11, r11, #0x1
+ sub r0, r0, r8
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ sub r0, r0, r8
+ str r0, [sp, #0xc]
+ b _020E1950
+_020E1908:
+ mov r2, r8
+ ldr r4, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ cmp r8, #0x0
+ beq _020E1934
+_020E191C:
+ ldrsb r0, [r4, #0x0]
+ ldrsb r1, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r3], #0x1
+ strb r1, [r4], #0x1
+ bne _020E191C
+_020E1934:
+ sub r9, r9, #0x1
+ cmp r9, #0x1
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r3-r11,pc}
+ ldr r0, [sp, #0x8]
+ sub r0, r0, r8
+ str r0, [sp, #0x8]
+_020E1950:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r4, r11
+ add r0, r1, r0
+ cmp r9, r11, lsl #0x1
+ add r5, r10, r0
+ blo _020E18E0
+_020E196C:
+ mov r4, r4, lsl #0x1
+ sub r0, r4, #0x1
+ mov r6, r5
+ mla r5, r8, r0, r10
+ cmp r9, r4
+ bls _020E199C
+ mov r0, r5
+ add r1, r5, r8
+ blx r7
+ cmp r0, #0x0
+ addlt r4, r4, #0x1
+ addlt r5, r5, r8
+_020E199C:
+ mov r0, r6
+ mov r1, r5
+ blx r7
+ cmp r0, #0x0
+ bge _020E18E0
+ mov r2, r8
+ mov r3, r5
+ cmp r8, #0x0
+ beq _020E19D8
+_020E19C0:
+ ldrsb r1, [r6, #0x0]
+ ldrsb r0, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r6], #0x1
+ strb r1, [r3], #0x1
+ bne _020E19C0
+_020E19D8:
+ cmp r9, r4, lsl #0x1
+ bhs _020E196C
+ b _020E18E0
+ 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_Common_rand.s b/arm9/asm/MSL_Common_rand.s
new file mode 100644
index 00000000..8191a5a4
--- /dev/null
+++ b/arm9/asm/MSL_Common_rand.s
@@ -0,0 +1,38 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .global random_next
+random_next: ; 0x02106DE0
+ .word 0x00000001
+ .size random_next,.-random_next
+
+ .text
+
+ arm_func_start rand
+rand: ; 0x020E19EC
+ ldr r2, _020E1A14 ; =random_next
+ ldr r0, _020E1A18 ; =0x41C64E6D
+ ldr r3, [r2, #0x0]
+ ldr r1, _020E1A1C ; =0x00007FFF
+ mul r0, r3, r0
+ add r0, r0, #0x39
+ add r0, r0, #0x3000
+ str r0, [r2, #0x0]
+ and r0, r1, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020E1A14: .word random_next
+_020E1A18: .word 0x41C64E6D
+_020E1A1C: .word 0x00007FFF
+ arm_func_end rand
+
+ arm_func_start srand
+srand: ; 0x020E1A20
+ ldr r1, _020E1A2C ; =random_next
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020E1A2C: .word random_next
+ arm_func_end srand
diff --git a/arm9/asm/MSL_Common_scanf.s b/arm9/asm/MSL_Common_scanf.s
new file mode 100644
index 00000000..8d9a8fe3
--- /dev/null
+++ b/arm9/asm/MSL_Common_scanf.s
@@ -0,0 +1,1466 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+parse_format$f: ; 0x0210440C
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word 0x7FFFFFFF
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .size parse_format$f,.-parse_format$f
+
+ .text
+
+ local_arm_func_start parse_format
+parse_format: ; 0x020E1A30
+ stmdb sp!, {r3-r7,lr}
+ sub sp, sp, #0x28
+ ldr r6, _020E1F20 ; =parse_format$f
+ add r5, sp, #0x0
+ mov r7, r0
+ mov lr, r1
+ mov r4, r5
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6, {r0-r1}
+ stmia r5, {r0-r1}
+ ldrsb r0, [r7, #0x1]
+ add r12, r7, #0x1
+ cmp r0, #0x25
+ bne _020E1A9C
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1A9C:
+ cmp r0, #0x2a
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ ldreqsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1ABC
+ cmp r0, #0x80
+ blt _020E1AC4
+_020E1ABC:
+ mov r1, #0x0
+ b _020E1AD4
+_020E1AC4:
+ ldr r1, _020E1F24 ; =__msl_digit
+ mov r2, r0, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x8
+_020E1AD4:
+ cmp r1, #0x0
+ beq _020E1B74
+ mov r1, #0x0
+ ldr r3, _020E1F24 ; =__msl_digit
+ str r1, [sp, #0x4]
+ mov r4, r1
+ mov r1, #0xa
+_020E1AF0:
+ ldr r2, [sp, #0x4]
+ sub r0, r0, #0x30
+ mla r0, r2, r1, r0
+ str r0, [sp, #0x4]
+ ldrsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1B14
+ cmp r0, #0x80
+ blt _020E1B1C
+_020E1B14:
+ mov r2, r4
+ b _020E1B28
+_020E1B1C:
+ mov r2, r0, lsl #0x1
+ ldrh r2, [r3, r2]
+ and r2, r2, #0x8
+_020E1B28:
+ cmp r2, #0x0
+ bne _020E1AF0
+ ldr r1, [sp, #0x4]
+ cmp r1, #0x0
+ bne _020E1B6C
+ mov r0, #0xff
+ add r4, sp, #0x0
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1B6C:
+ mov r1, #0x1
+ strb r1, [sp, #0x1]
+_020E1B74:
+ cmp r0, #0x6c
+ mov r1, #0x1
+ bgt _020E1BAC
+ cmp r0, #0x68
+ blt _020E1BA0
+ beq _020E1BC8
+ cmp r0, #0x6a
+ beq _020E1C14
+ cmp r0, #0x6c
+ beq _020E1BE4
+ b _020E1C38
+_020E1BA0:
+ cmp r0, #0x4c
+ beq _020E1C08
+ b _020E1C38
+_020E1BAC:
+ cmp r0, #0x74
+ bgt _020E1BBC
+ beq _020E1C2C
+ b _020E1C38
+_020E1BBC:
+ cmp r0, #0x7a
+ beq _020E1C20
+ b _020E1C38
+_020E1BC8:
+ mov r2, #0x2
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x68
+ streqb r1, [sp, #0x2]
+ ldreqsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1BE4:
+ mov r2, #0x3
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x6c
+ bne _020E1C3C
+ mov r0, #0x7
+ strb r0, [sp, #0x2]
+ ldrsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1C08:
+ mov r2, #0x9
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C14:
+ mov r2, #0x4
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C20:
+ mov r2, #0x5
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C2C:
+ mov r2, #0x6
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C38:
+ mov r1, #0x0
+_020E1C3C:
+ cmp r1, #0x0
+ ldrnesb r0, [r12, #0x1]!
+ strb r0, [sp, #0x3]
+ cmp r0, #0x5b
+ bgt _020E1C90
+ bge _020E1DE0
+ cmp r0, #0x47
+ bgt _020E1C84
+ subs r1, r0, #0x41
+ addpl pc, pc, r1, lsl #0x2
+ b _020E1EF0
+ b _020E1D1C ; case 65
+ b _020E1EF0 ; case 66
+ b _020E1EF0 ; case 67
+ b _020E1EF0 ; case 68
+ b _020E1D1C ; case 69
+ b _020E1D1C ; case 70
+ b _020E1D1C ; case 71
+_020E1C84:
+ cmp r0, #0x58
+ beq _020E1D08
+ b _020E1EF0
+_020E1C90:
+ cmp r0, #0x61
+ bgt _020E1CA0
+ beq _020E1D1C
+ b _020E1EF0
+_020E1CA0:
+ sub r0, r0, #0x63
+ cmp r0, #0x15
+ addls pc, pc, r0, lsl #0x2
+ b _020E1EF0
+ b _020E1D6C ; case 99
+ b _020E1D08 ; case 100
+ b _020E1D1C ; case 101
+ b _020E1D1C ; case 102
+ b _020E1D1C ; case 103
+ b _020E1EF0 ; case 104
+ b _020E1D08 ; case 105
+ b _020E1EF0 ; case 106
+ b _020E1EF0 ; case 107
+ b _020E1EF0 ; case 108
+ b _020E1EF0 ; case 109
+ b _020E1EF8 ; case 110
+ b _020E1D08 ; case 111
+ b _020E1D58 ; case 112
+ b _020E1EF0 ; case 113
+ b _020E1EF0 ; case 114
+ b _020E1D90 ; case 115
+ b _020E1EF0 ; case 116
+ b _020E1D08 ; case 117
+ b _020E1EF0 ; case 118
+ b _020E1EF0 ; case 119
+ b _020E1D08 ; case 120
+_020E1D08:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D1C:
+ ldrb r1, [sp, #0x2]
+ cmp r1, #0x1
+ cmpne r1, #0x2
+ beq _020E1D3C
+ add r0, r1, #0xfc
+ and r0, r0, #0xff
+ cmp r0, #0x3
+ bhi _020E1D48
+_020E1D3C:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D48:
+ cmp r1, #0x3
+ moveq r0, #0x8
+ streqb r0, [sp, #0x2]
+ b _020E1EF8
+_020E1D58:
+ mov r1, #0x3
+ mov r0, #0x78
+ strb r1, [sp, #0x2]
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D6C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1EF8
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D90:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1DB0
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1DB0:
+ add r2, sp, #0x8
+ mov r1, #0x20
+ mov r0, #0xff
+_020E1DBC:
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ strb r0, [r2], #0x1
+ bgt _020E1DBC
+ mov r1, #0xc1
+ mov r0, #0xfe
+ strb r1, [sp, #0x9]
+ strb r0, [sp, #0xc]
+ b _020E1EF8
+_020E1DE0:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1E00
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1E00:
+ ldrsb r2, [r12, #0x1]!
+ mov r1, #0x0
+ cmp r2, #0x5e
+ ldreqsb r2, [r12, #0x1]!
+ moveq r1, #0x1
+ cmp r2, #0x5d
+ bne _020E1EA8
+ ldrb r0, [sp, #0x13]
+ orr r0, r0, #0x20
+ strb r0, [sp, #0x13]
+ ldrsb r2, [r12, #0x1]!
+ b _020E1EA8
+_020E1E30:
+ add r0, sp, #0x0
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ mov r4, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ ldrsb r3, [r12, #0x1]
+ cmp r3, #0x2d
+ bne _020E1EA4
+ ldrsb r7, [r12, #0x2]
+ cmp r7, #0x0
+ cmpne r7, #0x5d
+ beq _020E1EA4
+ add r2, r2, #0x1
+ cmp r2, r7
+ bgt _020E1E9C
+_020E1E78:
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ add r2, r2, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ cmp r2, r7
+ ble _020E1E78
+_020E1E9C:
+ ldrsb r2, [r12, #0x3]!
+ b _020E1EA8
+_020E1EA4:
+ ldrsb r2, [r12, #0x1]!
+_020E1EA8:
+ cmp r2, #0x0
+ cmpne r2, #0x5d
+ bne _020E1E30
+ cmp r2, #0x0
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ beq _020E1EF8
+ cmp r1, #0x0
+ beq _020E1EF8
+ add r2, sp, #0x8
+ mov r1, #0x20
+_020E1ED4:
+ ldrb r0, [r2, #0x0]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ mvn r0, r0
+ strb r0, [r2], #0x1
+ bgt _020E1ED4
+ b _020E1EF8
+_020E1EF0:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+_020E1EF8:
+ add r4, sp, #0x0
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add r0, r12, #0x1
+ add sp, sp, #0x28
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020E1F20: .word parse_format$f
+_020E1F24: .word __msl_digit
+ arm_func_end parse_format
+
+ arm_func_start __sformatter
+__sformatter: ; 0x020E1F28
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x88
+ ldrsb r5, [r2, #0x0]
+ str r2, [sp, #0xc]
+ mov r2, #0x0
+ mov r9, r0
+ mov r0, r2
+ str r2, [sp, #0x20]
+ mov r8, r1
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x24]
+ cmp r5, #0x0
+ ldr r10, [sp, #0xb0]
+ str r0, [sp, #0x30]
+ mov r4, r2
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x40]
+ beq _020E2C3C
+_020E1F70:
+ cmp r5, #0x0
+ mov r0, #0x1
+ blt _020E1F84
+ cmp r5, #0x80
+ movlt r0, #0x0
+_020E1F84:
+ cmp r0, #0x0
+ movne r0, #0x0
+ bne _020E1FA0
+ mov r1, r5, lsl #0x1
+ ldr r0, _020E2C74 ; =__msl_digit
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E1FA0:
+ cmp r0, #0x0
+ beq _020E2060
+ mov r2, #0x0
+ ldr r1, _020E2C74 ; =__msl_digit
+ mov r12, r2
+ mov r3, #0x1
+_020E1FB8:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x1]!
+ str r0, [sp, #0xc]
+ mov r0, r3
+ cmp r5, #0x0
+ blt _020E1FD8
+ cmp r5, #0x80
+ movlt r0, r2
+_020E1FD8:
+ cmp r0, #0x0
+ movne r0, r12
+ moveq r0, r5, lsl #0x1
+ ldreqh r0, [r1, r0]
+ andeq r0, r0, #0x100
+ cmp r0, #0x0
+ bne _020E1FB8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =__msl_digit
+ b _020E200C
+_020E2008:
+ add r4, r4, #0x1
+_020E200C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2034
+ cmp r1, #0x80
+ blt _020E203C
+_020E2034:
+ mov r0, #0x0
+ b _020E2048
+_020E203C:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E2048:
+ cmp r0, #0x0
+ bne _020E2008
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2060:
+ cmp r5, #0x25
+ beq _020E20D8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E20D8
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ and r0, r5, #0xff
+ ldrsb r1, [sp, #0x50]
+ cmp r0, r1
+ beq _020E20C4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20C4:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20D8:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x60
+ bl parse_format
+ str r0, [sp, #0xc]
+ ldrb r0, [sp, #0x60]
+ cmp r0, #0x0
+ bne _020E2114
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x25
+ beq _020E2114
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r5, [r0, #-0x4]
+ b _020E2118
+_020E2114:
+ mov r5, #0x0
+_020E2118:
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x6e
+ beq _020E2158
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2158
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2158
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+_020E2158:
+ ldrb r1, [sp, #0x63]
+ cmp r1, #0x5b
+ bgt _020E21B0
+ bge _020E2984
+ cmp r1, #0x47
+ bgt _020E21A4
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E2198
+ b _020E2600 ; case 65
+ b _020E2C3C ; case 66
+ b _020E2C3C ; case 67
+ b _020E2C3C ; case 68
+ b _020E2600 ; case 69
+ b _020E2600 ; case 70
+ b _020E2600 ; case 71
+_020E2198:
+ cmp r1, #0x25
+ beq _020E287C
+ b _020E2C3C
+_020E21A4:
+ cmp r1, #0x58
+ beq _020E243C
+ b _020E2C3C
+_020E21B0:
+ cmp r1, #0x78
+ bgt _020E2228
+ subs r0, r1, #0x63
+ addpl pc, pc, r0, lsl #0x2
+ b _020E221C
+ b _020E26C4 ; case 99
+ b _020E2230 ; case 100
+ b _020E2600 ; case 101
+ b _020E2600 ; case 102
+ b _020E2600 ; case 103
+ b _020E2C3C ; case 104
+ b _020E2238 ; case 105
+ b _020E2C3C ; case 106
+ b _020E2C3C ; case 107
+ b _020E2C3C ; case 108
+ b _020E2C3C ; case 109
+ b _020E2BC8 ; case 110
+ b _020E242C ; case 111
+ b _020E2C3C ; case 112
+ b _020E2C3C ; case 113
+ b _020E2C3C ; case 114
+ b _020E2908 ; case 115
+ b _020E2C3C ; case 116
+ b _020E2434 ; case 117
+ b _020E2C3C ; case 118
+ b _020E2C3C ; case 119
+ b _020E243C ; case 120
+_020E221C:
+ cmp r1, #0x61
+ beq _020E2600
+ b _020E2C3C
+_020E2228:
+ cmp r1, #0xff
+ b _020E2C3C
+_020E2230:
+ mov r0, #0xa
+ b _020E223C
+_020E2238:
+ mov r0, #0x0
+_020E223C:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E225C
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E225C:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E22A0
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E22C4
+_020E22A0:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E22C4:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E22F4
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E22F4:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ cmpne r0, #0x4
+ bne _020E2344
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2330
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2330:
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2344:
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x3c]
+ streq r0, [sp, #0x1c]
+ beq _020E2364
+ ldr r0, [sp, #0x3c]
+ rsb r0, r0, #0x0
+ str r0, [sp, #0x1c]
+_020E2364:
+ cmp r5, #0x0
+ beq _020E241C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2408
+ b _020E239C ; case 0
+ b _020E23A8 ; case 1
+ b _020E23B4 ; case 2
+ b _020E23C0 ; case 3
+ b _020E23CC ; case 4
+ b _020E23E0 ; case 5
+ b _020E23EC ; case 6
+ b _020E23F8 ; case 7
+_020E239C:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23A8:
+ ldr r0, [sp, #0x1c]
+ strb r0, [r5, #0x0]
+ b _020E2408
+_020E23B4:
+ ldr r0, [sp, #0x1c]
+ strh r0, [r5, #0x0]
+ b _020E2408
+_020E23C0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23CC:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+ b _020E2408
+_020E23E0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23EC:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23F8:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+_020E2408:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E241C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E242C:
+ mov r0, #0x8
+ b _020E2440
+_020E2434:
+ mov r0, #0xa
+ b _020E2440
+_020E243C:
+ mov r0, #0x10
+_020E2440:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E2460
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E2460:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E24A4
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E24C8
+_020E24A4:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E24C8:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E24F8
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E24F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2538
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ ldrne r0, [sp, #0x3c]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x3c]
+ bne _020E2538
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x18]
+_020E2538:
+ cmp r5, #0x0
+ beq _020E25F0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E25DC
+ b _020E2570 ; case 0
+ b _020E257C ; case 1
+ b _020E2588 ; case 2
+ b _020E2594 ; case 3
+ b _020E25A0 ; case 4
+ b _020E25B4 ; case 5
+ b _020E25C0 ; case 6
+ b _020E25CC ; case 7
+_020E2570:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E257C:
+ ldr r0, [sp, #0x3c]
+ strb r0, [r5, #0x0]
+ b _020E25DC
+_020E2588:
+ ldr r0, [sp, #0x3c]
+ strh r0, [r5, #0x0]
+ b _020E25DC
+_020E2594:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25A0:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+ b _020E25DC
+_020E25B4:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25C0:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25CC:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+_020E25DC:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E25F0:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2600:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _020E261C
+ ldr r0, _020E2C78 ; =__float_nan
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ b _020E2668
+_020E261C:
+ add r0, sp, #0x54
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x64]
+ mov r1, r9
+ mov r2, r8
+ add r3, sp, #0x5c
+ bl __strtold
+ ldr r2, [sp, #0x5c]
+ cmp r2, #0x0
+ bne _020E2664
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, _020E2C78 ; =__float_nan
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ b _020E2668
+_020E2664:
+ add r4, r4, r2
+_020E2668:
+ cmp r5, #0x0
+ beq _020E26B4
+ ldrb r2, [sp, #0x62]
+ cmp r2, #0x0
+ beq _020E2690
+ cmp r2, #0x8
+ beq _020E269C
+ cmp r2, #0x9
+ stmeqia r5, {r0-r1}
+ b _020E26A0
+_020E2690:
+ bl _d2f
+ str r0, [r5, #0x0]
+ b _020E26A0
+_020E269C:
+ stmia r5, {r0-r1}
+_020E26A0:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E26B4:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E26C4:
+ ldrb r0, [sp, #0x61]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0x64]
+ cmp r5, #0x0
+ beq _020E280C
+ cmp r10, #0x0
+ beq _020E26F8
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ ldr r11, [r0, #-0x4]
+ str r0, [sp, #0x10]
+_020E26F8:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E2718
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E2718:
+ mvn r0, #0x0
+ str r5, [sp, #0x2c]
+ str r0, [sp, #0x48]
+ b _020E2760
+_020E2728:
+ ldrb r0, [sp, #0x62]
+ strb r6, [sp, #0x50]
+ cmp r0, #0xa
+ ldrnesb r0, [sp, #0x50]
+ strneb r0, [r5], #0x1
+ bne _020E2754
+ mov r0, r5
+ add r1, sp, #0x50
+ mov r2, #0x1
+ bl mbtowc
+ add r5, r5, #0x1
+_020E2754:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2760:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E27B0
+ cmp r10, #0x0
+ beq _020E2790
+ cmp r11, r1
+ movhi r7, #0x1
+ movls r7, #0x0
+ cmp r7, #0x0
+ beq _020E27B0
+_020E2790:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x48]
+ cmp r6, r0
+ bne _020E2728
+_020E27B0:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E27D0
+ cmp r10, #0x0
+ beq _020E27F8
+ cmp r7, #0x0
+ bne _020E27F8
+_020E27D0:
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x2c]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E27F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E286C
+_020E280C:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E282C
+_020E281C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E282C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E285C
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E281C
+_020E285C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2C3C
+_020E286C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E287C:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =__msl_digit
+ b _020E2894
+_020E2890:
+ add r4, r4, #0x1
+_020E2894:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E28BC
+ cmp r1, #0x80
+ blt _020E28C4
+_020E28BC:
+ mov r0, #0x0
+ b _020E28D0
+_020E28C4:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E28D0:
+ cmp r0, #0x0
+ bne _020E2890
+ cmp r1, #0x25
+ beq _020E2900
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ b _020E2C2C
+_020E2900:
+ add r4, r4, #0x1
+ b _020E2C2C
+_020E2908:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2984
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ b _020E2944
+_020E292C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ strb r0, [sp, #0x50]
+_020E2944:
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2958
+ cmp r1, #0x80
+ blt _020E2960
+_020E2958:
+ mov r0, #0x0
+ b _020E2970
+_020E2960:
+ ldr r0, _020E2C74 ; =__msl_digit
+ mov r2, r1, lsl #0x1
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E2970:
+ cmp r0, #0x0
+ bne _020E292C
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+_020E2984:
+ cmp r5, #0x0
+ beq _020E2B00
+ cmp r10, #0x0
+ beq _020E29AC
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #-0x4]
+ sub r11, r0, #0x1
+_020E29AC:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E29CC
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E29CC:
+ mvn r0, #0x0
+ str r5, [sp, #0x28]
+ str r0, [sp, #0x4c]
+ b _020E2A30
+_020E29DC:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ add r2, sp, #0x60
+ and r3, r1, #0xff
+ add r2, r2, r3, asr #0x3
+ ldrb r3, [r2, #0x8]
+ and r0, r1, #0x7
+ mov r2, #0x1
+ tst r3, r2, lsl r0
+ beq _020E2A80
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ strneb r1, [r5], #0x1
+ bne _020E2A24
+ mov r0, r5
+ add r1, sp, #0x50
+ bl mbtowc
+ add r5, r5, #0x2
+_020E2A24:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2A30:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2A80
+ cmp r10, #0x0
+ beq _020E2A60
+ cmp r11, r1
+ movcs r7, #0x1
+ movcc r7, #0x0
+ cmp r7, #0x0
+ beq _020E2A80
+_020E2A60:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x4c]
+ cmp r6, r0
+ bne _020E29DC
+_020E2A80:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2AA0
+ cmp r10, #0x0
+ beq _020E2AD8
+ cmp r7, #0x0
+ bne _020E2AD8
+_020E2AA0:
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x28]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E2AD8:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ mov r0, #0x0
+ streqh r0, [r5, #0x0]
+ strneb r0, [r5, #0x0]
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E2B9C
+_020E2B00:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E2B44
+_020E2B10:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ and r0, r1, #0x7
+ and r2, r1, #0xff
+ add r1, sp, #0x60
+ add r1, r1, r2, asr #0x3
+ ldrb r2, [r1, #0x8]
+ mov r1, #0x1
+ tst r2, r1, lsl r0
+ beq _020E2B74
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E2B44:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2B74
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E2B10
+_020E2B74:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E2B98
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2B98:
+ add r4, r4, r0
+_020E2B9C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ blt _020E2BB8
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+_020E2BB8:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2BC8:
+ cmp r5, #0x0
+ beq _020E2C2C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2C2C
+ b _020E2C00 ; case 0
+ b _020E2C18 ; case 1
+ b _020E2C08 ; case 2
+ b _020E2C10 ; case 3
+ b _020E2C2C ; case 4
+ b _020E2C2C ; case 5
+ b _020E2C2C ; case 6
+ b _020E2C20 ; case 7
+_020E2C00:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C08:
+ strh r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C10:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C18:
+ strb r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C20:
+ str r4, [r5, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r5, #0x4]
+_020E2C2C:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x0]
+ cmp r5, #0x0
+ bne _020E1F70
+_020E2C3C:
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2C68
+ ldr r0, [sp, #0x40]
+ cmp r0, #0x0
+ addeq sp, sp, #0x88
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,pc}
+_020E2C68:
+ ldr r0, [sp, #0x44]
+ add sp, sp, #0x88
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E2C74: .word __msl_digit
+_020E2C78: .word __float_nan
+ arm_func_end __sformatter
+
+ arm_func_start __StringRead
+__StringRead: ; 0x020E2C7C
+ cmp r2, #0x0
+ beq _020E2C98
+ cmp r2, #0x1
+ beq _020E2CC8
+ cmp r2, #0x2
+ beq _020E2CF0
+ b _020E2CF8
+_020E2C98:
+ ldr r1, [r0, #0x0]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E2CB8
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ sub r0, r1, #0x2
+ bx lr
+_020E2CB8:
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ and r0, r2, #0xff
+ bx lr
+_020E2CC8:
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ movne r2, #0x0
+ strne r2, [r0, #0x4]
+ bne _020E2CE8
+ ldr r2, [r0, #0x0]
+ sub r2, r2, #0x1
+ str r2, [r0, #0x0]
+_020E2CE8:
+ mov r0, r1
+ bx lr
+_020E2CF0:
+ ldr r0, [r0, #0x4]
+ bx lr
+_020E2CF8:
+ mov r0, #0x0
+ bx lr
+ arm_func_end __StringRead
+
+ arm_func_start vsscanf
+vsscanf: ; 0x020E2D00
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r0, #0x0]
+ mov lr, r1
+ mov r3, r2
+ cmpne r0, #0x0
+ addeq sp, sp, #0xc
+ mvneq r0, #0x0
+ ldmeqia sp!, {pc}
+ mov r12, #0x0
+ str r12, [sp, #0x8]
+ ldr r0, _020E2D50 ; =__StringRead
+ add r1, sp, #0x4
+ mov r2, lr
+ str r12, [sp, #0x0]
+ bl __sformatter
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .balign 4
+_020E2D50: .word __StringRead
+ arm_func_end vsscanf
+
+ arm_func_start sscanf
+sscanf: ; 0x020E2D54
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r2, sp, #0xc
+ bic r2, r2, #0x3
+ ldr r1, [sp, #0xc]
+ add r2, r2, #0x4
+ bl vsscanf
+ ldmia sp!, {r3,lr}
+ 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_Common_signal.s b/arm9/asm/MSL_Common_signal.s
new file mode 100644
index 00000000..8fd03917
--- /dev/null
+++ b/arm9/asm/MSL_Common_signal.s
@@ -0,0 +1,107 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global signal_funcs
+signal_funcs: ; 0x021D74AC
+ .space 0x1c
+ .size signal_funcs,.-signal_funcs
+
+ .text
+
+ arm_func_start raise
+raise: ; 0x020E2D7C
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ cmp r5, #0x1
+ blt _020E2D94
+ cmp r5, #0x7
+ ble _020E2D9C
+_020E2D94:
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2D9C:
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020E2DD0
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+ b _020E2E28
+_020E2DD0:
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x1c]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E2E00
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r1, [r0, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ b _020E2E28
+_020E2E00:
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_LockMutex
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+_020E2E28:
+ ldr r1, _020E2EA8 ; =signal_funcs
+ sub r2, r5, #0x1
+ ldr r4, [r1, r2, lsl #0x2]
+ cmp r4, #0x1
+ movne r0, #0x0
+ strne r0, [r1, r2, lsl #0x2]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r1, [r0, #0x1c]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ bne _020E2E5C
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_UnlockMutex
+_020E2E5C:
+ cmp r4, #0x1
+ beq _020E2E70
+ cmp r4, #0x0
+ cmpeq r5, #0x1
+ bne _020E2E78
+_020E2E70:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2E78:
+ cmp r4, #0x0
+ bne _020E2E88
+ mov r0, #0x0
+ bl exit
+_020E2E88:
+ mov r0, r5
+ blx r4
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2E98: .word __cs + 0xA8
+_020E2E9C: .word OSi_ThreadInfo
+_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_Common_string.s b/arm9/asm/MSL_Common_string.s
new file mode 100644
index 00000000..d8371d05
--- /dev/null
+++ b/arm9/asm/MSL_Common_string.s
@@ -0,0 +1,364 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start strlen
+strlen: ; 0x020E2EAC
+ mvn r2, #0x0
+_020E2EB0:
+ ldrsb r1, [r0], #0x1
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E2EB0
+ mov r0, r2
+ bx lr
+ arm_func_end strlen
+
+ arm_func_start strcpy
+strcpy: ; 0x020E2EC8
+ stmdb sp!, {r3-r5,lr}
+ and r4, r1, #0x3
+ and r3, r0, #0x3
+ mov r2, r0
+ cmp r3, r4
+ bne _020E2F64
+ cmp r4, #0x0
+ beq _020E2F20
+ ldrb r3, [r1, #0x0]
+ strb r3, [r0, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ rsbs r4, r4, #0x3
+ beq _020E2F18
+_020E2F00:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ ldmeqia sp!, {r3-r5,pc}
+ subs r4, r4, #0x1
+ bne _020E2F00
+_020E2F18:
+ add r2, r2, #0x1
+ add r1, r1, #0x1
+_020E2F20:
+ ldr r5, [r1, #0x0]
+ ldr r3, _020E2F88 ; =0xFEFEFEFF
+ mvn r4, r5
+ add lr, r5, r3
+ ldr ip, _020E2F8C ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ bne _020E2F64
+ sub r2, r2, #0x4
+_020E2F44:
+ str r5, [r2, #0x4]!
+ ldr r5, [r1, #0x4]!
+ add r4, r5, r3
+ mvn lr, r5
+ and lr, r4, lr
+ tst lr, r12
+ beq _020E2F44
+ add r2, r2, #0x4
+_020E2F64:
+ ldrb r3, [r1, #0x0]
+ strb r3, [r2, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020E2F74:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ bne _020E2F74
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2F88: .word 0xFEFEFEFF
+_020E2F8C: .word 0x80808080
+ arm_func_end strcpy
+
+ arm_func_start strncpy
+strncpy: ; 0x020E2F90
+ stmdb sp!, {r3,lr}
+ mov lr, r0
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+_020E2FA0:
+ ldrsb r3, [r1], #0x1
+ mov r12, lr
+ strb r3, [lr], #0x1
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x0
+ bne _020E2FD4
+ subs r2, r2, #0x1
+ ldmeqia sp!, {r3,pc}
+ mov r1, #0x0
+_020E2FC4:
+ strb r1, [lr], #0x1
+ subs r2, r2, #0x1
+ bne _020E2FC4
+ ldmia sp!, {r3,pc}
+_020E2FD4:
+ subs r2, r2, #0x1
+ bne _020E2FA0
+ ldmia sp!, {r3,pc}
+ arm_func_end strncpy
+
+ arm_func_start strcat
+strcat: ; 0x020E2FE0
+ mov r3, r0
+_020E2FE4:
+ ldrsb r2, [r3], #0x1
+ cmp r2, #0x0
+ bne _020E2FE4
+ sub r3, r3, #0x1
+_020E2FF4:
+ ldrsb r2, [r1], #0x1
+ mov r12, r3
+ strb r2, [r3], #0x1
+ ldrsb r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E2FF4
+ bx lr
+ arm_func_end strcat
+
+ arm_func_start strncat
+strncat: ; 0x020E3010
+ stmdb sp!, {r3,lr}
+ mov r12, r0
+_020E3018:
+ ldrsb r3, [r12], #0x1
+ cmp r3, #0x0
+ bne _020E3018
+ cmp r2, #0x0
+ sub r12, r12, #0x1
+ beq _020E3054
+_020E3030:
+ ldrsb r3, [r1], #0x1
+ mov lr, r12
+ strb r3, [r12], #0x1
+ ldrsb r3, [lr, #0x0]
+ cmp r3, #0x0
+ subeq r12, r12, #0x1
+ beq _020E3054
+ subs r2, r2, #0x1
+ bne _020E3030
+_020E3054:
+ mov r1, #0x0
+ strb r1, [r12, #0x0]
+ ldmia sp!, {r3,pc}
+ arm_func_end strncat
+
+ arm_func_start strcmp
+strcmp: ; 0x020E3060
+ stmdb sp!, {r4,lr}
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+ and r4, r0, #0x3
+ and r3, r1, #0x3
+ cmp r3, r4
+ bne _020E313C
+ cmp r4, #0x0
+ beq _020E30D4
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ rsbs r4, r4, #0x3
+ beq _020E30CC
+_020E30A4:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+ cmp r3, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ subs r4, r4, #0x1
+ bne _020E30A4
+_020E30CC:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+_020E30D4:
+ ldr r2, [r0, #0x0]
+ ldr r3, _020E316C ; =0xFEFEFEFF
+ mvn r4, r2
+ add lr, r2, r3
+ ldr ip, _020E3170 ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ ldr r4, [r1, #0x0]
+ bne _020E3128
+ cmp r2, r4
+ bne _020E311C
+_020E3100:
+ ldr r2, [r0, #0x4]!
+ ldr r4, [r1, #0x4]!
+ add lr, r2, r3
+ tst lr, r12
+ bne _020E3128
+ cmp r2, r4
+ beq _020E3100
+_020E311C:
+ sub r0, r0, #0x1
+ sub r1, r1, #0x1
+ b _020E313C
+_020E3128:
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+_020E313C:
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E3148:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+ cmp r3, #0x0
+ bne _020E3148
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020E316C: .word 0xFEFEFEFF
+_020E3170: .word 0x80808080
+ arm_func_end strcmp
+
+ arm_func_start strncmp
+strncmp: ; 0x020E3174
+ cmp r2, #0x0
+ beq _020E31A0
+_020E317C:
+ ldrb r12, [r1], #0x1
+ ldrb r3, [r0], #0x1
+ cmp r3, r12
+ subne r0, r3, r12
+ bxne lr
+ cmp r3, #0x0
+ beq _020E31A0
+ subs r2, r2, #0x1
+ bne _020E317C
+_020E31A0:
+ mov r0, #0x0
+ bx lr
+ arm_func_end strncmp
+
+ arm_func_start strchr
+strchr: ; 0x020E31A8
+ ldrsb r2, [r0], #0x1
+ mov r1, r1, lsl #0x18
+ mov r1, r1, asr #0x18
+ cmp r2, #0x0
+ beq _020E31D4
+_020E31BC:
+ cmp r2, r1
+ subeq r0, r0, #0x1
+ bxeq lr
+ ldrsb r2, [r0], #0x1
+ cmp r2, #0x0
+ bne _020E31BC
+_020E31D4:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x1
+ bx lr
+ arm_func_end strchr
+
+ arm_func_start strspn
+strspn: ; 0x020E31E4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x20
+ add r12, sp, #0x0
+ mov r3, #0x8
+ mov r2, #0x0
+_020E31F8:
+ strb r2, [r12, #0x0]
+ strb r2, [r12, #0x1]
+ strb r2, [r12, #0x2]
+ strb r2, [r12, #0x3]
+ add r12, r12, #0x4
+ subs r3, r3, #0x1
+ bne _020E31F8
+ ldrb r3, [r1, #0x0]
+ add r4, r1, #0x1
+ cmp r3, #0x0
+ beq _020E3254
+ add lr, sp, #0x0
+ mov r2, #0x1
+_020E322C:
+ and r12, r3, #0xff
+ and r1, r3, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [lr, r12, asr #0x3]
+ and r1, r1, #0xff
+ orr r1, r3, r1
+ strb r1, [lr, r12, asr #0x3]
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E322C
+_020E3254:
+ ldrb r1, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r1, #0x0
+ beq _020E3294
+ add r12, sp, #0x0
+ mov r2, #0x1
+_020E326C:
+ and r3, r1, #0xff
+ and r1, r1, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [r12, r3, asr #0x3]
+ and r1, r1, #0xff
+ tst r3, r1
+ bne _020E3294
+ ldrb r1, [r4], #0x1
+ cmp r1, #0x0
+ bne _020E326C
+_020E3294:
+ sub r0, r4, r0
+ sub r0, r0, #0x1
+ add sp, sp, #0x20
+ ldmia sp!, {r4,pc}
+ arm_func_end strspn
+
+ arm_func_start strstr
+strstr: ; 0x020E32A4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ ldrneb r2, [r1, #0x0]
+ cmpne r2, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldrb r3, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r3, #0x0
+ beq _020E3308
+_020E32C8:
+ cmp r3, r2
+ bne _020E32FC
+ mov lr, r4
+ add r12, r1, #0x1
+_020E32D8:
+ ldrb r3, [r12], #0x1
+ ldrb r0, [lr], #0x1
+ cmp r0, r3
+ bne _020E32F0
+ cmp r0, #0x0
+ bne _020E32D8
+_020E32F0:
+ cmp r3, #0x0
+ subeq r0, r4, #0x1
+ ldmeqia sp!, {r4,pc}
+_020E32FC:
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E32C8
+_020E3308:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ arm_func_end strstr
diff --git a/arm9/asm/MSL_Common_strtold.s b/arm9/asm/MSL_Common_strtold.s
new file mode 100644
index 00000000..424c3a19
--- /dev/null
+++ b/arm9/asm/MSL_Common_strtold.s
@@ -0,0 +1,1436 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+model$4434: ; 0x02104434
+ .asciz "NAN("
+ .size model$4434,.-model$4434
+
+model$4439: ; 0x02104439
+ .asciz "INFINITY"
+ .size model$4439,.-model$4439
+
+ .text
+
+ arm_func_start __strtold
+__strtold: ; 0x020E3310
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0xa8
+ ldr r4, [sp, #0xd0]
+ mov r10, #0x0
+ str r4, [sp, #0xd0]
+ str r0, [sp, #0x0]
+ add r6, sp, #0x80
+ mov r9, r1
+ mov r8, r2
+ str r3, [sp, #0x4]
+ mov r4, r10
+ str r10, [sp, #0x2c]
+ mov r5, #0x1
+ mov r0, #0x4
+_020E3348:
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ strh r10, [r6, #0x4]
+ strh r10, [r6, #0x6]
+ add r6, r6, #0x8
+ subs r0, r0, #0x1
+ bne _020E3348
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ ldr r2, [sp, #0x28]
+ ldr r1, [sp, #0xd0]
+ strh r10, [r6, #0x4]
+ str r2, [r1, #0x0]
+ mov r1, r2
+ mov r0, r8
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x8]
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ ldr r7, _020E42F0 ; =model$4439
+ add r0, sp, #0x4d
+ mov r6, #0x4
+_020E33C0:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E33C0
+ ldrb r3, [r7, #0x0]
+ ldr r2, _020E42F4 ; =model$4434
+ strb r3, [r0, #0x0]
+ ldrb r3, [r2, #0x1]
+ ldrb r0, [r2, #0x2]
+ ldrb r6, [r2, #0x0]
+ strb r3, [sp, #0x31]
+ strb r0, [sp, #0x32]
+ ldrb r3, [r2, #0x3]
+ ldrb r0, [r2, #0x4]
+ strb r6, [sp, #0x30]
+ strb r3, [sp, #0x33]
+ strb r0, [sp, #0x34]
+ b _020E4104
+_020E3418:
+ cmp r5, #0x100
+ bgt _020E3490
+ bge _020E3B98
+ cmp r5, #0x20
+ bgt _020E3474
+ bge _020E3A6C
+ cmp r5, #0x8
+ bgt _020E3468
+ cmp r5, #0x0
+ addge pc, pc, r5, lsl #0x2
+ b _020E4104
+ b _020E4104 ; case 0
+ b _020E34D4 ; case 1
+ b _020E38B8 ; case 2
+ b _020E4104 ; case 3
+ b _020E3968 ; case 4
+ b _020E4104 ; case 5
+ b _020E4104 ; case 6
+ b _020E4104 ; case 7
+ b _020E3990 ; case 8
+_020E3468:
+ cmp r5, #0x10
+ beq _020E3A34
+ b _020E4104
+_020E3474:
+ cmp r5, #0x40
+ bgt _020E3484
+ beq _020E3AF8
+ b _020E4104
+_020E3484:
+ cmp r5, #0x80
+ beq _020E3B44
+ b _020E4104
+_020E3490:
+ cmp r5, #0x2000
+ bgt _020E34B8
+ bge _020E36EC
+ cmp r5, #0x200
+ bgt _020E34AC
+ beq _020E3BF8
+ b _020E4104
+_020E34AC:
+ cmp r5, #0x400
+ beq _020E3C20
+ b _020E4104
+_020E34B8:
+ cmp r5, #0x4000
+ bgt _020E34C8
+ beq _020E35F4
+ b _020E4104
+_020E34C8:
+ cmp r5, #0x8000
+ beq _020E3C98
+ b _020E4104
+_020E34D4:
+ cmp r1, #0x0
+ blt _020E34E4
+ cmp r1, #0x80
+ blt _020E34EC
+_020E34E4:
+ mov r0, #0x0
+ b _020E34FC
+_020E34EC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E34FC:
+ cmp r0, #0x0
+ beq _020E3528
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x2c]
+ b _020E4104
+_020E3528:
+ cmp r1, #0x0
+ blt _020E3538
+ cmp r1, #0x80
+ blt _020E3540
+_020E3538:
+ mov r0, r1
+ b _020E3548
+_020E3540:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3548:
+ cmp r0, #0x49
+ bgt _020E3574
+ bge _020E35AC
+ cmp r0, #0x2d
+ bgt _020E35EC
+ cmp r0, #0x2b
+ blt _020E35EC
+ beq _020E3588
+ cmp r0, #0x2d
+ beq _020E3580
+ b _020E35EC
+_020E3574:
+ cmp r0, #0x4e
+ beq _020E35CC
+ b _020E35EC
+_020E3580:
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+_020E3588:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+ b _020E4104
+_020E35AC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x4000
+ b _020E4104
+_020E35CC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x2000
+ b _020E4104
+_020E35EC:
+ mov r5, #0x2
+ b _020E4104
+_020E35F4:
+ mov r5, #0x1
+ add r7, sp, #0x4d
+ add r0, sp, #0x76
+ mov r6, #0x4
+_020E3604:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E3604
+ ldrb r2, [r7, #0x0]
+ add r6, sp, #0x77
+ ldr r7, _020E42FC ; =__upper_mapC
+ strb r2, [r0, #0x0]
+ b _020E3658
+_020E3638:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3658:
+ cmp r5, #0x8
+ bge _020E3688
+ cmp r1, #0x0
+ blt _020E3670
+ cmp r1, #0x80
+ blt _020E3678
+_020E3670:
+ mov r2, r1
+ b _020E367C
+_020E3678:
+ ldrb r2, [r7, r1]
+_020E367C:
+ ldrsb r0, [r6, #0x0]
+ cmp r0, r2
+ beq _020E3638
+_020E3688:
+ cmp r5, #0x3
+ cmpne r5, #0x8
+ bne _020E36E4
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E36B8
+ ldr r1, _020E4300 ; =__float_huge
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl _fsub
+ bl _f2d
+ b _020E36C4
+_020E36B8:
+ ldr r0, _020E4300 ; =__float_huge
+ ldr r0, [r0, #0x0]
+ bl _f2d
+_020E36C4:
+ ldr r2, [sp, #0x2c]
+ add r3, r2, r5
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E36E4:
+ mov r5, #0x1000
+ b _020E4104
+_020E36EC:
+ ldrb r3, [sp, #0x30]
+ ldrb r0, [sp, #0x32]
+ ldrb r2, [sp, #0x31]
+ strb r3, [sp, #0x40]
+ strb r0, [sp, #0x42]
+ ldrb r3, [sp, #0x33]
+ ldrb r0, [sp, #0x34]
+ strb r2, [sp, #0x41]
+ mov r5, #0x1
+ strb r0, [sp, #0x44]
+ mov r6, #0x0
+ add r2, sp, #0x56
+ strb r3, [sp, #0x43]
+ mov r0, #0x8
+_020E3724:
+ strb r6, [r2, #0x0]
+ strb r6, [r2, #0x1]
+ strb r6, [r2, #0x2]
+ strb r6, [r2, #0x3]
+ add r2, r2, #0x4
+ subs r0, r0, #0x1
+ bne _020E3724
+ add r7, sp, #0x41
+ b _020E3768
+_020E3748:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r7, r7, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3768:
+ cmp r5, #0x4
+ bge _020E379C
+ cmp r1, #0x0
+ blt _020E3780
+ cmp r1, #0x80
+ blt _020E3788
+_020E3780:
+ mov r2, r1
+ b _020E3790
+_020E3788:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r2, [r0, r1]
+_020E3790:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, r2
+ beq _020E3748
+_020E379C:
+ sub r0, r5, #0x3
+ cmp r0, #0x1
+ bhi _020E38B0
+ cmp r5, #0x4
+ bne _020E3854
+ ldr r7, _020E42F8 ; =__msl_digit
+ b _020E37DC
+_020E37B8:
+ add r0, sp, #0x56
+ strb r1, [r0, r6]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E37DC:
+ cmp r6, #0x20
+ bge _020E3844
+ cmp r1, #0x0
+ blt _020E37F4
+ cmp r1, #0x80
+ blt _020E37FC
+_020E37F4:
+ mov r0, #0x0
+ b _020E3808
+_020E37FC:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x8
+_020E3808:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x0
+ blt _020E3820
+ cmp r1, #0x80
+ blt _020E3828
+_020E3820:
+ mov r0, #0x0
+ b _020E3834
+_020E3828:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x1
+_020E3834:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x2e
+ beq _020E37B8
+_020E3844:
+ cmp r1, #0x29
+ movne r5, #0x1000
+ bne _020E4104
+ add r6, r6, #0x1
+_020E3854:
+ add r0, sp, #0x56
+ mov r1, #0x0
+ strb r1, [r0, r6]
+ ldr r1, [sp, #0x28]
+ cmp r1, #0x0
+ beq _020E3888
+ bl nan
+ mov r2, r0
+ mov r0, #0x0
+ mov r3, r1
+ mov r1, r0
+ bl _dsub
+ b _020E388C
+_020E3888:
+ bl nan
+_020E388C:
+ ldr r2, [sp, #0x2c]
+ add r2, r2, r5
+ add r3, r6, r2
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E38B0:
+ mov r5, #0x1000
+ b _020E4104
+_020E38B8:
+ cmp r1, #0x2e
+ bne _020E38E0
+ mov r5, #0x10
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E38E0:
+ cmp r1, #0x0
+ blt _020E38F0
+ cmp r1, #0x80
+ blt _020E38F8
+_020E38F0:
+ mov r0, #0x0
+ b _020E3908
+_020E38F8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3908:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ bne _020E3960
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ cmp r0, #0x0
+ mov r1, r0
+ blt _020E394C
+ cmp r0, #0x80
+ bge _020E394C
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r0, [r2, r0]
+_020E394C:
+ cmp r0, #0x58
+ moveq r5, #0x8000
+ moveq r10, #0x1
+ movne r5, #0x4
+ b _020E4104
+_020E3960:
+ mov r5, #0x8
+ b _020E4104
+_020E3968:
+ cmp r1, #0x30
+ movne r5, #0x8
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3990:
+ cmp r1, #0x0
+ blt _020E39A0
+ cmp r1, #0x80
+ blt _020E39A8
+_020E39A0:
+ mov r0, #0x0
+ b _020E39B8
+_020E39A8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E39B8:
+ cmp r0, #0x0
+ bne _020E39EC
+ cmp r1, #0x2e
+ movne r5, #0x40
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E39EC:
+ ldrb r2, [sp, #0x84]
+ cmp r2, #0x14
+ ldrcs r0, [sp, #0x1c]
+ addcs r0, r0, #0x1
+ strcs r0, [sp, #0x1c]
+ bhs _020E3A18
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r2
+ strb r1, [r0, #0x5]
+_020E3A18:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3A34:
+ cmp r1, #0x0
+ blt _020E3A44
+ cmp r1, #0x80
+ blt _020E3A4C
+_020E3A44:
+ mov r0, #0x0
+ b _020E3A5C
+_020E3A4C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A5C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ movne r5, #0x20
+ b _020E4104
+_020E3A6C:
+ cmp r1, #0x0
+ blt _020E3A7C
+ cmp r1, #0x80
+ blt _020E3A84
+_020E3A7C:
+ mov r0, #0x0
+ b _020E3A94
+_020E3A84:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A94:
+ cmp r0, #0x0
+ moveq r5, #0x40
+ beq _020E4104
+ ldrb r3, [sp, #0x84]
+ cmp r3, #0x14
+ bhs _020E3ADC
+ cmp r1, #0x30
+ cmpeq r3, #0x0
+ beq _020E3AD0
+ ldrb r2, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r3
+ add r2, r2, #0x1
+ strb r2, [sp, #0x84]
+ strb r1, [r0, #0x5]
+_020E3AD0:
+ ldr r0, [sp, #0x1c]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E3ADC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3AF8:
+ cmp r1, #0x0
+ blt _020E3B08
+ cmp r1, #0x80
+ blt _020E3B10
+_020E3B08:
+ mov r0, r1
+ b _020E3B18
+_020E3B10:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3B18:
+ cmp r0, #0x45
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3B44:
+ cmp r1, #0x2b
+ bne _020E3B68
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E3B90
+_020E3B68:
+ cmp r1, #0x2d
+ bne _020E3B90
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x24]
+_020E3B90:
+ mov r5, #0x100
+ b _020E4104
+_020E3B98:
+ cmp r1, #0x0
+ blt _020E3BA8
+ cmp r1, #0x80
+ blt _020E3BB0
+_020E3BA8:
+ mov r0, #0x0
+ b _020E3BC0
+_020E3BB0:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3BC0:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x200
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3BF8:
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C20:
+ cmp r1, #0x0
+ blt _020E3C30
+ cmp r1, #0x80
+ blt _020E3C38
+_020E3C30:
+ mov r0, #0x0
+ b _020E3C48
+_020E3C38:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3C48:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x20]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ ldr r1, _020E4304 ; =0x00007FFF
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C98:
+ cmp r10, #0x20
+ bgt _020E3CE8
+ bge _020E3FBC
+ cmp r10, #0x8
+ bgt _020E3CDC
+ cmp r10, #0x0
+ addge pc, pc, r10, lsl #0x2
+ b _020E4104
+ b _020E4104 ; case 0
+ b _020E3D0C ; case 1
+ b _020E3D5C ; case 2
+ b _020E4104 ; case 3
+ b _020E3D84 ; case 4
+ b _020E4104 ; case 5
+ b _020E4104 ; case 6
+ b _020E4104 ; case 7
+ b _020E3E94 ; case 8
+_020E3CDC:
+ cmp r10, #0x10
+ beq _020E3F70
+ b _020E4104
+_020E3CE8:
+ cmp r10, #0x80
+ bgt _020E3D00
+ bge _020E4064
+ cmp r10, #0x40
+ beq _020E4004
+ b _020E4104
+_020E3D00:
+ cmp r10, #0x100
+ beq _020E408C
+ b _020E4104
+_020E3D0C:
+ mov r1, #0x0
+ add r0, sp, #0x45
+ str r0, [sp, #0x14]
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ mov r0, r8
+ mov r2, r1
+ str r1, [sp, #0x8]
+ mov r11, r1
+ mov r10, #0x2
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D5C:
+ cmp r1, #0x30
+ movne r10, #0x4
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D84:
+ cmp r1, #0x0
+ blt _020E3D94
+ cmp r1, #0x80
+ blt _020E3D9C
+_020E3D94:
+ mov r0, #0x0
+ b _020E3DAC
+_020E3D9C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3DAC:
+ cmp r0, #0x0
+ bne _020E3DE0
+ cmp r1, #0x2e
+ movne r10, #0x10
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x8
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3DE0:
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3E78
+ mov r0, r2
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3E20
+ cmp r1, #0x80
+ bge _020E3E20
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r1, [r2, r1]
+_020E3E20:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E78:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E94:
+ cmp r1, #0x0
+ blt _020E3EA4
+ cmp r1, #0x80
+ blt _020E3EAC
+_020E3EA4:
+ mov r0, #0x0
+ b _020E3EBC
+_020E3EAC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3EBC:
+ cmp r0, #0x0
+ moveq r10, #0x10
+ beq _020E4104
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3F54
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3EFC
+ cmp r1, #0x80
+ bge _020E3EFC
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r1, [r2, r1]
+_020E3EFC:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F54:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F70:
+ cmp r1, #0x0
+ blt _020E3F80
+ cmp r1, #0x80
+ blt _020E3F88
+_020E3F80:
+ mov r0, r1
+ b _020E3F90
+_020E3F88:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3F90:
+ cmp r0, #0x50
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3FBC:
+ cmp r1, #0x2d
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E3FE4
+ cmp r1, #0x2b
+ beq _020E3FE4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ sub r4, r4, #0x1
+_020E3FE4:
+ mov r10, #0x40
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4004:
+ cmp r1, #0x0
+ blt _020E4014
+ cmp r1, #0x80
+ blt _020E401C
+_020E4014:
+ mov r0, #0x0
+ b _020E402C
+_020E401C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E402C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4064:
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E408C:
+ cmp r1, #0x0
+ blt _020E409C
+ cmp r1, #0x80
+ blt _020E40A4
+_020E409C:
+ mov r0, #0x0
+ b _020E40B4
+_020E40A4:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E40B4:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x10]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ str r0, [sp, #0x10]
+ ldr r1, _020E4304 ; =0x00007FFF
+ ldr r0, [sp, #0x20]
+ add r4, r4, #0x1
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+_020E4104:
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ bgt _020E4124
+ mvn r0, #0x0
+ cmp r1, r0
+ beq _020E4124
+ tst r5, #0x1800
+ beq _020E3418
+_020E4124:
+ cmp r5, #0x8000
+ beq _020E4140
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ b _020E4164
+_020E4140:
+ sub r0, r4, #0x1
+ cmp r0, #0x2
+ ble _020E4158
+ ldr r0, _020E430C ; =0x0000018E
+ tst r10, r0
+ bne _020E4160
+_020E4158:
+ mov r0, #0x1
+ b _020E4164
+_020E4160:
+ mov r0, #0x0
+_020E4164:
+ cmp r0, #0x0
+ movne r2, #0x0
+ ldrne r0, [sp, #0x4]
+ bne _020E4184
+ ldr r0, [sp, #0x2c]
+ sub r2, r4, #0x1
+ add r2, r2, r0
+ ldr r0, [sp, #0x4]
+_020E4184:
+ str r2, [r0, #0x0]
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ bne _020E4388
+ ldr r0, [sp, #0x24]
+ ldrb r2, [sp, #0x84]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x20]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x20]
+ add r0, sp, #0x85
+ add r1, r0, r2
+ b _020E41CC
+_020E41C0:
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E41CC:
+ cmp r2, #0x0
+ sub r2, r2, #0x1
+ beq _020E41E4
+ ldrb r0, [r1, #-0x1]!
+ cmp r0, #0x30
+ beq _020E41C0
+_020E41E4:
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ ands r2, r0, #0xff
+ bne _020E4208
+ add r1, r2, #0x1
+ strb r1, [sp, #0x84]
+ add r0, sp, #0x85
+ mov r1, #0x30
+ strb r1, [r0, r2]
+_020E4208:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ mov r2, #0x8000
+ add r0, r1, r0
+ rsb r2, r2, #0x0
+ str r0, [sp, #0x20]
+ cmp r0, r2
+ blt _020E4230
+ cmp r0, r2, lsr #0x11
+ ble _020E423C
+_020E4230:
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E423C:
+ ldr r0, [sp, #0xd0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020E4298
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ movne r0, #0x0
+ addne sp, sp, #0xa8
+ movne r1, r0
+ ldmneia sp!, {r3-r11,pc}
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ ldreq r1, _020E4310 ; =__double_huge
+ addeq sp, sp, #0xa8
+ ldmeqia r1, {r0-r1}
+ ldmeqia sp!, {r3-r11,pc}
+ ldr r1, _020E4310 ; =__double_huge
+ mov r0, #0x0
+ ldmia r1, {r2-r3}
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+_020E4298:
+ ldr r1, [sp, #0x20]
+ add r0, sp, #0x80
+ strh r1, [sp, #0x82]
+ bl __dec2num
+ mov r4, r0
+ mov r6, r1
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dneq
+ beq _020E4318
+ mov r0, r4
+ mov r1, r6
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ bhs _020E4318
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ b _020E4344
+ .balign 4
+_020E42F0: .word model$4439
+_020E42F4: .word model$4434
+_020E42F8: .word __msl_digit
+_020E42FC: .word __upper_mapC
+_020E4300: .word __float_huge
+_020E4304: .word 0x00007FFF
+_020E4308: .word 0x00000E2C
+_020E430C: .word 0x0000018E
+_020E4310: .word __double_huge
+_020E4314: .word 0x7FEFFFFF
+_020E4318:
+ ldr r3, _020E4314 ; =0x7FEFFFFF
+ mov r0, r4
+ mov r1, r6
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4344
+ ldr r0, [sp, #0xd0]
+ mov r2, #0x1
+ ldr r1, _020E4310 ; =__double_huge
+ str r2, [r0, #0x0]
+ ldmia r1, {r4,r6}
+_020E4344:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E4378
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ beq _020E4378
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dsub
+ mov r4, r0
+ mov r6, r1
+_020E4378:
+ add sp, sp, #0xa8
+ mov r0, r4
+ mov r1, r6
+ ldmia sp!, {r3-r11,pc}
+_020E4388:
+ ldr r0, [sp, #0xc]
+ add r4, sp, #0x38
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ ldrb r3, [sp, #0x45]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x8]
+ mov r2, #0x0
+ add r0, r1, r0, lsl #0x2
+ str r0, [sp, #0x10]
+ mov r1, #0x80
+ b _020E43D0
+_020E43C0:
+ ldr r0, [sp, #0x10]
+ add r2, r2, #0x1
+ sub r0, r0, #0x1
+ str r0, [sp, #0x10]
+_020E43D0:
+ cmp r2, #0x4
+ bhs _020E43E0
+ tst r3, r1, asr r2
+ beq _020E43C0
+_020E43E0:
+ adds r5, r2, #0x1
+ beq _020E442C
+ add r0, sp, #0x4c
+ add r3, sp, #0x45
+ str r0, [sp, #0x14]
+ mov r1, #0x0
+ cmp r0, r3
+ blo _020E442C
+ rsb r6, r5, #0x8
+_020E4404:
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x0]
+ orr r2, r1, r0, lsl r5
+ mov r1, r0, asr r6
+ ldr r0, [sp, #0x14]
+ and r1, r1, #0xff
+ strb r2, [r0], #-0x1
+ str r0, [sp, #0x14]
+ cmp r0, r3
+ bhs _020E4404
+_020E442C:
+ mov r2, #0x0
+ mov r6, r2
+ strb r2, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ strb r2, [r4, #0x2]
+ strb r2, [r4, #0x3]
+ strb r2, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ mov r3, #0xc
+ mov r7, #0x1
+ mov r0, #0xff
+ add r1, sp, #0x45
+_020E4464:
+ add r5, r2, #0x8
+ cmp r5, #0x34
+ ldrb r5, [r1, r6]
+ rsbhi r8, r2, #0x34
+ and r11, r3, #0x7
+ andhi r5, r5, r0, lsl r8
+ andhi r5, r5, #0xff
+ mov r8, r5, asr r11
+ and r9, r8, #0xff
+ ldrb r10, [r4, r7]
+ rsb r8, r11, #0x8
+ mov r5, r5, lsl r8
+ orr r9, r10, r9
+ strb r9, [r4, r7]
+ add r7, r7, #0x1
+ add r2, r2, #0x8
+ ldrb r8, [r4, r7]
+ and r5, r5, #0xff
+ cmp r2, #0x34
+ orr r5, r8, r5
+ strb r5, [r4, r7]
+ add r3, r3, #0x8
+ add r6, r6, #0x1
+ blo _020E4464
+ ldr r0, [sp, #0x10]
+ mov r1, #0x800
+ add r0, r0, #0xfe
+ add r2, r0, #0x300
+ rsb r1, r1, #0x0
+ tst r2, r1
+ beq _020E44FC
+ ldr r2, [sp, #0xd0]
+ mov r3, #0x1
+ mov r0, #0x0
+ add sp, sp, #0xa8
+ mov r1, r0
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E44FC:
+ ldrb r0, [r4, #0x1]
+ mov r2, r2, lsl #0x15
+ ldrb r1, [r4, #0x0]
+ orr r0, r0, r2, lsr #0x11
+ strb r0, [r4, #0x1]
+ ldr r0, [sp, #0x28]
+ orr r1, r1, r2, lsr #0x19
+ cmp r0, #0x0
+ andne r0, r1, #0xff
+ strb r1, [r4, #0x0]
+ orrne r0, r0, #0x80
+ strneb r0, [r4, #0x0]
+ mov r3, #0x0
+_020E4530:
+ rsb r1, r3, #0x7
+ ldrb r2, [r4, r3]
+ ldrb r0, [r4, r1]
+ strb r0, [r4, r3]
+ add r3, r3, #0x1
+ strb r2, [r4, r1]
+ cmp r3, #0x4
+ blt _020E4530
+ ldmia r4, {r0-r1}
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end __strtold
+
+ arm_func_start strtold
+strtold: ; 0x020E455C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ mov r7, r0
+ mov r0, #0x0
+ mov r6, r1
+ str r0, [sp, #0x8]
+ add r4, sp, #0xc
+ str r7, [sp, #0x4]
+ ldr r1, _020E4630 ; =__StringRead
+ add r2, sp, #0x4
+ add r3, sp, #0x10
+ sub r0, r0, #0x80000001
+ str r4, [sp, #0x0]
+ bl __strtold
+ mov r5, r1
+ mov r4, r0
+ cmp r6, #0x0
+ ldrne r0, [sp, #0x10]
+ mov r1, r5
+ addne r0, r7, r0
+ strne r0, [r6, #0x0]
+ mov r0, r4
+ bl fabs
+ ldr r2, [sp, #0xc]
+ mov r6, r0
+ mov r7, r1
+ cmp r2, #0x0
+ bne _020E4614
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r5
+ bl _dneq
+ beq _020E4620
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ blo _020E4614
+ ldr r3, _020E4634 ; =0x7FEFFFFF
+ mov r0, r6
+ mov r1, r7
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4620
+_020E4614:
+ ldr r0, _020E4638 ; =errno
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+_020E4620:
+ mov r0, r4
+ mov r1, r5
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020E4630: .word __StringRead
+_020E4634: .word 0x7FEFFFFF
+_020E4638: .word errno
+ arm_func_end strtold
+
+ arm_func_start atod
+atod: ; 0x020E463C
+ ldr ip, _020E4648 ; =strtold
+ mov r1, #0x0
+ bx r12
+ .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_Common_strtoul.s b/arm9/asm/MSL_Common_strtoul.s
new file mode 100644
index 00000000..ab4a1bbf
--- /dev/null
+++ b/arm9/asm/MSL_Common_strtoul.s
@@ -0,0 +1,743 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __strtoul
+__strtoul:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ ldr r4, [sp, #0x38]
+ movs r9, r0
+ ldr r0, [sp, #0x34]
+ str r4, [sp, #0x38]
+ mov r4, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x34]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x30]
+ str r4, [sp, #0x8]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ str r0, [sp, #0x30]
+ mov r4, #0x1
+ bmi _020E46CC
+ cmp r9, #0x1
+ beq _020E46CC
+ cmp r9, #0x24
+ bgt _020E46CC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E46D4
+_020E46CC:
+ mov r4, #0x40
+ b _020E46F0
+_020E46D4:
+ ldr r1, [sp, #0x8]
+ mov r0, r7
+ mov r3, r1
+ mov r2, r1
+ add r5, r3, #0x1
+ blx r8
+ mov r6, r0
+_020E46F0:
+ cmp r9, #0x0
+ beq _020E4708
+ mov r1, r9
+ mvn r0, #0x0
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E4708:
+ mvn r11, #0x0
+ b _020E49C8
+_020E4710:
+ cmp r4, #0x8
+ bgt _020E4748
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E49C8
+ b _020E49C8
+ b _020E4754
+ b _020E4800
+ b _020E49C8
+ b _020E483C
+ b _020E49C8
+ b _020E49C8
+ b _020E49C8
+ b _020E487C
+_020E4748:
+ cmp r4, #0x10
+ beq _020E487C
+ b _020E49C8
+_020E4754:
+ cmp r6, #0x0
+ blt _020E4764
+ cmp r6, #0x80
+ blt _020E476C
+_020E4764:
+ mov r0, #0x0
+ b _020E477C
+_020E476C:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E477C:
+ cmp r0, #0x0
+ beq _020E47A8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ b _020E49C8
+_020E47A8:
+ cmp r6, #0x2b
+ bne _020E47CC
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E47F8
+_020E47CC:
+ cmp r6, #0x2d
+ bne _020E47F8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x34]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E47F8:
+ mov r4, #0x2
+ b _020E49C8
+_020E4800:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4834
+ cmp r6, #0x30
+ bne _020E4834
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E4834:
+ mov r4, #0x8
+ b _020E49C8
+_020E483C:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E486C
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E486C:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E49C8
+_020E487C:
+ ldr r0, [sp, #0x4]
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r0, #0x0
+ bne _020E48A0
+ mov r0, r11
+ mov r1, r9
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E48A0:
+ cmp r6, #0x0
+ blt _020E48B0
+ cmp r6, #0x80
+ blt _020E48B8
+_020E48B0:
+ mov r0, #0x0
+ b _020E48C8
+_020E48B8:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E48C8:
+ cmp r0, #0x0
+ beq _020E48F0
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4978
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E49C8
+_020E48F0:
+ cmp r6, #0x0
+ blt _020E4900
+ cmp r6, #0x80
+ blt _020E4908
+_020E4900:
+ mov r0, #0x0
+ b _020E4918
+_020E4908:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4918:
+ cmp r0, #0x0
+ beq _020E494C
+ cmp r6, #0x0
+ blt _020E4930
+ cmp r6, #0x80
+ blt _020E4938
+_020E4930:
+ mov r0, r6
+ b _020E4940
+_020E4938:
+ ldr r0, _020E4A30 ; =__upper_mapC
+ ldrb r0, [r0, r6]
+_020E4940:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E495C
+_020E494C:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E49C8
+_020E495C:
+ cmp r6, #0x0
+ blt _020E4974
+ cmp r6, #0x80
+ bge _020E4974
+ ldr r0, _020E4A30 ; =__upper_mapC
+ ldrb r6, [r0, r6]
+_020E4974:
+ sub r6, r6, #0x37
+_020E4978:
+ ldr r0, [sp, #0x4]
+ mov r4, #0x10
+ cmp r10, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mul r0, r10, r9
+ mov r10, r0
+ sub r0, r11, r0
+ cmp r6, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r10, r10, r6
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E49C8:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E49E4
+ cmp r6, r11
+ beq _020E49E4
+ tst r4, #0x60
+ beq _020E4710
+_020E49E4:
+ tst r4, #0x34
+ bne _020E49FC
+ ldr r0, [sp, #0x30]
+ mov r10, #0x0
+ str r10, [r0, #0x0]
+ b _020E4A10
+_020E49FC:
+ ldr r0, [sp, #0x8]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r1, [r0, #0x0]
+_020E4A10:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4A2C: .word __msl_digit
+_020E4A30: .word __upper_mapC
+ arm_func_end __strtoul
+
+ arm_func_start __strtoull
+__strtoull: ; 0x020E4A34
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r4, [sp, #0x48]
+ movs r9, r0
+ ldr r0, [sp, #0x44]
+ str r4, [sp, #0x48]
+ mov r4, #0x0
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #0x14]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ mov r11, r4
+ str r0, [sp, #0x40]
+ mov r4, #0x1
+ bmi _020E4ABC
+ cmp r9, #0x1
+ beq _020E4ABC
+ cmp r9, #0x24
+ bgt _020E4ABC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E4AC4
+_020E4ABC:
+ mov r4, #0x40
+ b _020E4ADC
+_020E4AC4:
+ ldr r1, [sp, #0x14]
+ mov r0, r7
+ mov r2, r1
+ add r5, r1, #0x1
+ blx r8
+ mov r6, r0
+_020E4ADC:
+ cmp r9, #0x0
+ beq _020E4B00
+ mvn r0, #0x0
+ mov r1, r0
+ mov r3, r9, asr #0x1f
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4B00:
+ mvn r0, #0x0
+ str r0, [sp, #0x18]
+ b _020E4E08
+_020E4B0C:
+ cmp r4, #0x8
+ bgt _020E4B44
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E4E08
+ b _020E4E08
+ b _020E4B50
+ b _020E4BFC
+ b _020E4E08
+ b _020E4C38
+ b _020E4E08
+ b _020E4E08
+ b _020E4E08
+ b _020E4C78
+_020E4B44:
+ cmp r4, #0x10
+ beq _020E4C78
+ b _020E4E08
+_020E4B50:
+ cmp r6, #0x0
+ blt _020E4B60
+ cmp r6, #0x80
+ blt _020E4B68
+_020E4B60:
+ mov r0, #0x0
+ b _020E4B78
+_020E4B68:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E4B78:
+ cmp r0, #0x0
+ beq _020E4BA4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E4E08
+_020E4BA4:
+ cmp r6, #0x2b
+ bne _020E4BC8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4BF4
+_020E4BC8:
+ cmp r6, #0x2d
+ bne _020E4BF4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x44]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E4BF4:
+ mov r4, #0x2
+ b _020E4E08
+_020E4BFC:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4C30
+ cmp r6, #0x30
+ bne _020E4C30
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C30:
+ mov r4, #0x8
+ b _020E4E08
+_020E4C38:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E4C68
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C68:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E4E08
+_020E4C78:
+ ldr r1, [sp, #0x8]
+ mov r0, #0x0
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r1, r0
+ ldr r1, [sp, #0xc]
+ cmpeq r1, r0
+ bne _020E4CB4
+ ldr r0, [sp, #0x18]
+ mov r3, r9, asr #0x1f
+ mov r1, r0
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4CB4:
+ cmp r6, #0x0
+ blt _020E4CC4
+ cmp r6, #0x80
+ blt _020E4CCC
+_020E4CC4:
+ mov r0, #0x0
+ b _020E4CDC
+_020E4CCC:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E4CDC:
+ cmp r0, #0x0
+ beq _020E4D04
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4D8C
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E4E08
+_020E4D04:
+ cmp r6, #0x0
+ blt _020E4D14
+ cmp r6, #0x80
+ blt _020E4D1C
+_020E4D14:
+ mov r0, #0x0
+ b _020E4D2C
+_020E4D1C:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4D2C:
+ cmp r0, #0x0
+ beq _020E4D60
+ cmp r6, #0x0
+ blt _020E4D44
+ cmp r6, #0x80
+ blt _020E4D4C
+_020E4D44:
+ mov r0, r6
+ b _020E4D54
+_020E4D4C:
+ ldr r0, _020E4E7C ; =__upper_mapC
+ ldrb r0, [r0, r6]
+_020E4D54:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E4D70
+_020E4D60:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E4E08
+_020E4D70:
+ cmp r6, #0x0
+ blt _020E4D88
+ cmp r6, #0x80
+ bge _020E4D88
+ ldr r0, _020E4E7C ; =__upper_mapC
+ ldrb r6, [r0, r6]
+_020E4D88:
+ sub r6, r6, #0x37
+_020E4D8C:
+ ldr r0, [sp, #0x8]
+ umull r2, r3, r10, r9
+ cmp r11, r0
+ ldr r0, [sp, #0xc]
+ mov r4, #0x10
+ cmpeq r10, r0
+ ldrhi r0, [sp, #0x48]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, r9, asr #0x1f
+ mla r3, r10, r1, r3
+ mla r3, r11, r9, r3
+ ldr r1, [sp, #0x18]
+ mov r10, r2
+ subs r2, r1, r2
+ mov r0, r6, asr #0x1f
+ sbc r1, r1, r3
+ cmp r0, r1
+ cmpeq r6, r2
+ ldrhi r1, [sp, #0x48]
+ movhi r2, #0x1
+ strhi r2, [r1, #0x0]
+ mov r1, #0x0
+ mov r11, r3
+ adds r10, r10, r6
+ adc r11, r11, r0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E4E08:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E4E28
+ ldr r0, [sp, #0x18]
+ cmp r6, r0
+ beq _020E4E28
+ tst r4, #0x60
+ beq _020E4B0C
+_020E4E28:
+ tst r4, #0x34
+ bne _020E4E44
+ ldr r0, [sp, #0x40]
+ mov r10, #0x0
+ mov r11, r10
+ str r10, [r0, #0x0]
+ b _020E4E58
+_020E4E44:
+ ldr r0, [sp, #0x14]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x40]
+ str r1, [r0, #0x0]
+_020E4E58:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ mov r1, r11
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4E78: .word __msl_digit
+_020E4E7C: .word __upper_mapC
+ arm_func_end __strtoull
+
+ arm_func_start strtoul
+strtoul: ; 0x020E4E80
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4F10 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ beq _020E4EFC
+ ldr r0, _020E4F14 ; =errno
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+ add sp, sp, #0x20
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E4EFC:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4F10: .word __StringRead
+_020E4F14: .word errno
+ arm_func_end strtoul
+
+ arm_func_start strtol
+strtol: ; 0x020E4F18
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4FD8 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ bne _020E4FA4
+ ldr r2, [sp, #0x18]
+ cmp r2, #0x0
+ bne _020E4F94
+ mvn r1, #0x80000000
+ cmp r0, r1
+ bhi _020E4FA4
+_020E4F94:
+ cmp r2, #0x0
+ beq _020E4FC8
+ cmp r0, #0x80000000
+ bls _020E4FC8
+_020E4FA4:
+ ldr r0, [sp, #0x18]
+ ldr r1, _020E4FDC ; =errno
+ mov r2, #0x22
+ cmp r0, #0x0
+ movne r0, #0x80000000
+ str r2, [r1, #0x0]
+ add sp, sp, #0x20
+ mvneq r0, #0x80000000
+ ldmia sp!, {r3-r5,pc}
+_020E4FC8:
+ cmp r2, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4FD8: .word __StringRead
+_020E4FDC: .word errno
+ arm_func_end strtol
+
+ arm_func_start atol
+atol: ; 0x020E4FE0
+ ldr ip, _020E4FF0 ; =strtol
+ mov r1, #0x0
+ mov r2, #0xa
+ bx r12
+ .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_Common_wchar_io.s b/arm9/asm/MSL_Common_wchar_io.s
new file mode 100644
index 00000000..92f47ac4
--- /dev/null
+++ b/arm9/asm/MSL_Common_wchar_io.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fwide
+fwide:
+ cmp r0, #0x0
+ beq _020E500C
+ ldr r3, [r0, #0x4]
+ mov r2, r3, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ bne _020E5014
+_020E500C:
+ mov r0, #0x0
+ bx lr
+_020E5014:
+ mov r2, r3, lsl #0x14
+ movs r2, r2, lsr #0x1e
+ beq _020E5034
+ cmp r2, #0x1
+ beq _020E505C
+ cmp r2, #0x2
+ moveq r1, #0x1
+ b _020E5060
+_020E5034:
+ cmp r1, #0x0
+ ble _020E504C
+ bic r2, r3, #0xc00
+ orr r2, r2, #0x800
+ str r2, [r0, #0x4]
+ b _020E5060
+_020E504C:
+ biclt r2, r3, #0xc00
+ orrlt r2, r2, #0x400
+ strlt r2, [r0, #0x4]
+ b _020E5060
+_020E505C:
+ mvn r1, #0x0
+_020E5060:
+ mov r0, r1
+ bx lr
+ arm_func_end fwide
diff --git a/arm9/asm/MSL_Common_wctype.s b/arm9/asm/MSL_Common_wctype.s
new file mode 100644
index 00000000..7b671940
--- /dev/null
+++ b/arm9/asm/MSL_Common_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_Common_wmem.s b/arm9/asm/MSL_Common_wmem.s
new file mode 100644
index 00000000..7c02c344
--- /dev/null
+++ b/arm9/asm/MSL_Common_wmem.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start wmemcpy
+wmemcpy: ; 0x020E5068
+ ldr ip, _020E5074 ; =memcpy
+ mov r2, r2, lsl #0x1
+ bx r12
+ .balign 4
+_020E5074: .word memcpy
+ arm_func_end wmemcpy
+
+ arm_func_start wmemchr
+wmemchr:
+ cmp r2, #0x0
+ beq _020E5098
+_020E5080:
+ ldrh r3, [r0, #0x0]
+ cmp r3, r1
+ bxeq lr
+ add r0, r0, #0x2
+ subs r2, r2, #0x1
+ bne _020E5080
+_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_Common_wprintf.s b/arm9/asm/MSL_Common_wprintf.s
new file mode 100644
index 00000000..95d115e6
--- /dev/null
+++ b/arm9/asm/MSL_Common_wprintf.s
@@ -0,0 +1,2367 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .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/MSL_Common_wstring.s b/arm9/asm/MSL_Common_wstring.s
new file mode 100644
index 00000000..d01c034b
--- /dev/null
+++ b/arm9/asm/MSL_Common_wstring.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start wcslen
+wcslen: ; 0x020E701C
+ mvn r2, #0x0
+_020E7020:
+ ldrh r1, [r0], #0x2
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E7020
+ mov r0, r2
+ bx lr
+ arm_func_end wcslen
+
+ arm_func_start wcscpy
+wcscpy: ; 0x020E7038
+ mov r3, r0
+_020E703C:
+ ldrh r2, [r1], #0x2
+ mov r12, r3
+ strh r2, [r3], #0x2
+ ldrh r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E703C
+ bx lr
+ arm_func_end wcscpy
+
+ arm_func_start wcschr
+wcschr: ; 0x020E7058
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ beq _020E707C
+_020E7064:
+ cmp r2, r1
+ subeq r0, r0, #0x2
+ bxeq lr
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ bne _020E7064
+_020E707C:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x2
+ bx lr
+ arm_func_end wcschr
diff --git a/arm9/asm/MSL_DPMath_e_pow.s b/arm9/asm/MSL_DPMath_e_pow.s
new file mode 100644
index 00000000..fedcbb10
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_e_pow.s
@@ -0,0 +1,1193 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global UNK_02104744
+UNK_02104744: ; 0x02104744
+ .word 0x00000000, 0x00000000
+ .word 0x40000000, 0x3FE2B803
+ .size UNK_02104744,.-UNK_02104744
+
+ .global UNK_02104754
+UNK_02104754: ; 0x02104754
+ .word 0x00000000, 0x3FF00000
+ .word 0x00000000, 0x3FF80000
+ .size UNK_02104754,.-UNK_02104754
+
+ .global UNK_02104764
+UNK_02104764: ; 0x02104764
+ .word 0x00000000, 0x00000000
+ .word 0x43CFD006, 0x3E4CFDEB
+ .size UNK_02104764,.-UNK_02104764
+
+ .text
+
+ arm_func_start __ieee754_pow
+__ieee754_pow: ; 0x020E708C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x80
+ ldr r8, [sp, #0xb4]
+ ldr r6, [sp, #0xac]
+ ldr r0, [sp, #0xb0]
+ bic r9, r8, #0x80000000
+ orrs r1, r9, r0
+ ldr r7, [sp, #0xa8]
+ bic r4, r6, #0x80000000
+ addeq sp, sp, #0x80
+ moveq r0, #0x0
+ ldreq r1, _020E7638 ; =0x3FF00000
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r4, r1
+ bgt _020E70FC
+ bne _020E70E4
+ cmp r7, #0x0
+ bne _020E70FC
+_020E70E4:
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bgt _020E70FC
+ bne _020E7120
+ cmp r0, #0x0
+ beq _020E7120
+_020E70FC:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ bl _dadd
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7120:
+ cmp r6, #0x0
+ mov r5, #0x0
+ bge _020E7188
+ ldr r1, _020E7640 ; =0x43400000
+ cmp r9, r1
+ movge r5, #0x2
+ bge _020E7188
+ sub r1, r1, #0x3500000
+ cmp r9, r1
+ blt _020E7188
+ ldr r1, _020E7644 ; =0xFFFFFC01
+ add r1, r1, r9, asr #0x14
+ cmp r1, #0x14
+ ble _020E7170
+ rsb r2, r1, #0x34
+ mov r1, r0, lsr r2
+ cmp r0, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+ b _020E7188
+_020E7170:
+ cmp r0, #0x0
+ rsbeq r2, r1, #0x14
+ moveq r1, r9, asr r2
+ cmpeq r9, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+_020E7188:
+ cmp r0, #0x0
+ bne _020E72E4
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bne _020E723C
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r7
+ bne _020E71D0
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E71D0:
+ sub r0, r1, #0x40000000
+ cmp r4, r0
+ blt _020E7200
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xb0]
+ ldrge r1, [sp, #0xb4]
+ movlt r0, #0x0
+ add sp, sp, #0x80
+ movlt r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7200:
+ cmp r8, #0x0
+ mov r0, #0x0
+ addge sp, sp, #0x80
+ movge r1, r0
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E723C:
+ sub r0, r1, #0x40000000
+ cmp r9, r0
+ bne _020E7288
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xa8]
+ ldrge r1, [sp, #0xac]
+ addge sp, sp, #0x80
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xa8]
+ ldr r3, [sp, #0xac]
+ sub r1, r1, #0x40000000
+ mov r0, #0x0
+ bl _ddiv
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7288:
+ cmp r8, #0x40000000
+ bne _020E72B4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72B4:
+ ldr r0, _020E7648 ; =0x3FE00000
+ cmp r8, r0
+ bne _020E72E4
+ cmp r6, #0x0
+ blt _020E72E4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl _dsqrt
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72E4:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl fabs
+ str r0, [sp, #0x70]
+ str r1, [sp, #0x74]
+ cmp r7, #0x0
+ bne _020E73E8
+ ldr r0, _020E763C ; =0x7FF00000
+ cmp r4, r0
+ cmpne r4, #0x0
+ subne r0, r0, #0x40000000
+ cmpne r4, r0
+ bne _020E73E8
+ ldr r2, [sp, #0x70]
+ ldr r3, [sp, #0x74]
+ str r2, [sp, #0x78]
+ str r3, [sp, #0x7c]
+ cmp r8, #0x0
+ bge _020E7344
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E7344:
+ cmp r6, #0x0
+ bge _020E73D0
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r5
+ bne _020E73AC
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r4, r0
+ mov r5, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r5
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ b _020E73D0
+_020E73AC:
+ cmp r5, #0x1
+ bne _020E73D0
+ mov r0, #0x0
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E73D0:
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E73E8:
+ mov r0, r6, asr #0x1f
+ add r7, r0, #0x1
+ orrs r0, r7, r5
+ bne _020E7420
+ ldr r0, _020E764C ; =__float_nan
+ ldr r1, _020E7650 ; =errno
+ ldr r0, [r0, #0x0]
+ mov r2, #0x21
+ str r2, [r1, #0x0]
+ bl _f2d
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7420:
+ ldr r3, _020E7654 ; =0x41E00000
+ cmp r9, r3
+ ble _020E7724
+ add r0, r3, #0x2100000
+ cmp r9, r0
+ ble _020E7490
+ ldr r1, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r1
+ bgt _020E7464
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7464:
+ add r0, r1, #0x1
+ cmp r4, r0
+ blt _020E7490
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7490:
+ ldr r2, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r2
+ bge _020E74BC
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74BC:
+ add r0, r2, #0x1
+ cmp r4, r0
+ ble _020E74E8
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74E8:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ add r3, r2, #0x1
+ mov r2, #0x0
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ bl _dmul
+ mov r6, r1
+ mov r4, r0
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ ldr r1, _020E765C ; =0x3FD00000
+ mov r0, #0x0
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7660 ; =0x55555555
+ sub r1, r0, #0x15800000
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E7648 ; =0x3FE00000
+ bl _dsub
+ mov r2, r0
+ mov r0, r4
+ mov r3, r1
+ mov r1, r6
+ bl _dmul
+ mov r6, r0
+ mov r8, r1
+ mov r0, #0x60000000
+ ldr r1, _020E7664 ; =0x3FF71547
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E7668 ; =0xF85DDF44
+ ldr r1, _020E766C ; =0x3E54AE0B
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E7664 ; =0x3FF71547
+ mov r2, r6
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dsub
+ mov r6, r0
+ mov r8, r1
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r8
+ bl _dadd
+ mov r2, r4
+ mov r3, r9
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ bl _dsub
+ mov r2, r0
+ mov r0, r6
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+ b _020E7C80
+ .balign 4
+_020E7638: .word 0x3FF00000
+_020E763C: .word 0x7FF00000
+_020E7640: .word 0x43400000
+_020E7644: .word 0xFFFFFC01
+_020E7648: .word 0x3FE00000
+_020E764C: .word __float_nan
+_020E7650: .word errno
+_020E7654: .word 0x41E00000
+_020E7658: .word 0x3FEFFFFF
+_020E765C: .word 0x3FD00000
+_020E7660: .word 0x55555555
+_020E7664: .word 0x3FF71547
+_020E7668: .word 0xF85DDF44
+_020E766C: .word 0x3E54AE0B
+_020E7670: .word 0x652B82FE
+_020E7674: .word 0x0003988E
+_020E7678: .word 0x000BB67A
+_020E767C: .word UNK_02104754
+_020E7680: .word 0x4A454EEF
+_020E7684: .word 0x3FCA7E28
+_020E7688: .word 0x93C9DB65
+_020E768C: .word 0x3FCD864A
+_020E7690: .word 0xA91D4101
+_020E7694: .word 0x3FD17460
+_020E7698: .word 0x518F264D
+_020E769C: .word 0x3FD55555
+_020E76A0: .word 0xDB6FABFF
+_020E76A4: .word 0x3FDB6DB6
+_020E76A8: .word 0x33333303
+_020E76AC: .word 0x3FE33333
+_020E76B0: .word 0x40080000
+_020E76B4: .word 0x3FEEC709
+_020E76B8: .word 0x145B01F5
+_020E76BC: .word 0xBE3E2FE0
+_020E76C0: .word 0xDC3A03FD
+_020E76C4: .word UNK_02104764
+_020E76C8: .word UNK_02104744
+_020E76CC: .word 0x40900000
+_020E76D0: .word 0x8800759C
+_020E76D4: .word 0x7E37E43C
+_020E76D8: .word 0x3C971547
+_020E76DC: .word 0x3F6F3400
+_020E76E0: .word 0xC2F8F359
+_020E76E4: .word 0x01A56E1F
+_020E76E8: .word 0x3FE62E43
+_020E76EC: .word 0xFEFA39EF
+_020E76F0: .word 0x3FE62E42
+_020E76F4: .word 0x0CA86C39
+_020E76F8: .word 0xBE205C61
+_020E76FC: .word 0x72BEA4D0
+_020E7700: .word 0x3E663769
+_020E7704: .word 0xC5D26BF1
+_020E7708: .word 0xBEBBBD41
+_020E770C: .word 0xAF25DE2C
+_020E7710: .word 0x3F11566A
+_020E7714: .word 0x16BEBD93
+_020E7718: .word 0xBF66C16C
+_020E771C: .word 0x5555553E
+_020E7720: .word 0x3FC55555
+_020E7724:
+ cmp r4, #0x100000
+ mov r6, #0x0
+ bge _020E7754
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ mov r2, r6
+ add r3, r3, #0x1600000
+ bl _dmul
+ mov r4, r1
+ str r0, [sp, #0x70]
+ str r4, [sp, #0x74]
+ sub r6, r6, #0x35
+_020E7754:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ ldr r1, _020E7674 ; =0x0003988E
+ and r2, r4, r0, lsr #0xc
+ add r0, r0, r4, asr #0x14
+ orr r9, r2, #0xff00000
+ cmp r2, r1
+ add r6, r6, r0
+ orr r9, r9, #0x30000000
+ movle r8, #0x0
+ ble _020E7794
+ ldr r0, _020E7678 ; =0x000BB67A
+ cmp r2, r0
+ movlt r8, #0x1
+ addge r6, r6, #0x1
+ subge r9, r9, #0x100000
+ movge r8, #0x0
+_020E7794:
+ ldr r2, _020E767C ; =UNK_02104754
+ ldr r0, [sp, #0x70]
+ add r1, r2, r8, lsl #0x3
+ ldr r3, [r1, #0x4]
+ ldr r2, [r2, r8, lsl #0x3]
+ mov r1, r9
+ str r9, [sp, #0x74]
+ bl _dsub
+ ldr r2, _020E767C ; =UNK_02104754
+ mov r10, r0
+ add r3, r2, r8, lsl #0x3
+ mov r4, r1
+ ldr r0, [sp, #0x70]
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ mov r1, r9
+ bl _dadd
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r1, [sp, #0x24]
+ mov r11, r0
+ ldr r3, [sp, #0x24]
+ mov r0, r10
+ mov r1, r4
+ mov r2, r11
+ bl _dmul
+ mov r2, r9, asr #0x1
+ orr r2, r2, #0x20000000
+ mov r9, r1
+ add r2, r2, #0x80000
+ add r1, r2, r8, lsl #0x12
+ ldr r2, _020E767C ; =UNK_02104754
+ str r0, [sp, #0x28]
+ add r3, r2, r8, lsl #0x3
+ mov r0, #0x0
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ str r9, [sp, #0x4c]
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x40]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ bl _dsub
+ str r0, [sp, #0x2c]
+ str r1, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r10, r0
+ mov r4, r1
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, [sp, #0x24]
+ mov r0, r11
+ bl _dmul
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x14]
+ mov r1, r9
+ mov r2, r0
+ mov r3, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ str r0, [sp, #0x34]
+ mov r11, r1
+ ldr r0, _020E7680 ; =0x4A454EEF
+ ldr r1, _020E7684 ; =0x3FCA7E28
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7688 ; =0x93C9DB65
+ ldr r1, _020E768C ; =0x3FCD864A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7690 ; =0xA91D4101
+ ldr r1, _020E7694 ; =0x3FD17460
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7698 ; =0x518F264D
+ ldr r1, _020E769C ; =0x3FD55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A0 ; =0xDB6FABFF
+ ldr r1, _020E76A4 ; =0x3FDB6DB6
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A8 ; =0x33333303
+ ldr r1, _020E76AC ; =0x3FE33333
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x34]
+ mov r1, r11
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x28]
+ mov r1, r9
+ mov r3, r9
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dadd
+ mov r4, r0
+ ldr r0, [sp, #0x48]
+ mov r10, r1
+ mov r1, r9
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ str r1, [sp, #0xc]
+ mov r11, r0
+ ldr r1, _020E76B0 ; =0x40080000
+ ldr r3, [sp, #0xc]
+ mov r0, #0x0
+ mov r2, r11
+ bl _dadd
+ mov r2, r4
+ mov r3, r10
+ bl _dadd
+ mov r0, #0x0
+ ldr r3, _020E76B0 ; =0x40080000
+ mov r2, r0
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+ bl _dsub
+ ldr r3, [sp, #0xc]
+ mov r2, r11
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dsub
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ bl _dmul
+ str r0, [sp, #0x3c]
+ mov r11, r1
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x28]
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x3c]
+ mov r1, r11
+ bl _dadd
+ mov r9, r0
+ mov r11, r1
+ mov r0, r4
+ mov r1, r10
+ mov r2, r9
+ mov r3, r11
+ bl _dadd
+ mov r0, #0x0
+ mov r2, r4
+ mov r3, r10
+ str r1, [sp, #0x6c]
+ str r0, [sp, #0x68]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r9
+ mov r1, r11
+ bl _dsub
+ mov r10, r1
+ mov r11, r0
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, #0xe0000000
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E76B8 ; =0x145B01F5
+ ldr r1, _020E76BC ; =0xBE3E2FE0
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dmul
+ mov r2, r11
+ mov r3, r10
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E76C0 ; =0xDC3A03FD
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76C4 ; =UNK_02104764
+ add r1, r0, r8, lsl #0x3
+ ldr r0, [r0, r8, lsl #0x3]
+ ldr r1, [r1, #0x4]
+ bl _dadd
+ mov r11, r0
+ mov r10, r1
+ mov r0, r6
+ bl _dflt
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ mov r0, r4
+ mov r1, r9
+ mov r2, r11
+ mov r3, r10
+ bl _dadd
+ ldr r2, _020E76C8 ; =UNK_02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dadd
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dsub
+ ldr r2, _020E76C8 ; =UNK_02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dsub
+ mov r2, r4
+ mov r3, r9
+ bl _dsub
+ mov r2, r0
+ mov r0, r11
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+_020E7C80:
+ sub r0, r5, #0x1
+ ldr r1, [sp, #0xb4]
+ orrs r0, r7, r0
+ ldr r5, _020E7638 ; =0x3FF00000
+ mov r2, #0x0
+ ldr r0, [sp, #0xb0]
+ mov r3, r1
+ mov r6, #0x0
+ subeq r5, r5, #0x80000000
+ str r1, [sp, #0x64]
+ str r2, [sp, #0x60]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ bl _dmul
+ mov r7, r0
+ mov r9, r1
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r4
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r9
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x64]
+ ldr r2, [sp, #0x58]
+ ldr r3, [sp, #0x5c]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ str r2, [sp, #0x68]
+ str r3, [sp, #0x6c]
+ bl _dadd
+ mov r9, r1
+ ldr r2, _020E76CC ; =0x40900000
+ str r0, [sp, #0x78]
+ str r9, [sp, #0x7c]
+ cmp r9, r2
+ blt _020E7E0C
+ add r1, r9, #0xf700000
+ add r1, r1, #0xb0000000
+ orrs r0, r1, r0
+ beq _020E7D8C
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7D8C:
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E76D8 ; =0x3C971547
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r1, r9
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dgr
+ bls _020E7EC0
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E0C:
+ bic r3, r9, #0x80000000
+ add r2, r2, #0xcc00
+ cmp r3, r2
+ blt _020E7EC0
+ ldr r2, _020E76DC ; =0x3F6F3400
+ add r2, r9, r2
+ orrs r2, r2, r0
+ beq _020E7E64
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E64:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dleq
+ bhi _020E7EC0
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7EC0:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ bic r3, r9, #0x80000000
+ ldr r1, _020E7648 ; =0x3FE00000
+ add r2, r0, r3, asr #0x14
+ cmp r3, r1
+ mov r4, #0x0
+ ble _020E7F3C
+ mov r1, #0x100000
+ add r2, r2, #0x1
+ add r2, r9, r1, asr r2
+ bic r3, r2, #0x80000000
+ add r0, r0, r3, asr #0x14
+ sub r3, r1, #0x1
+ mvn r3, r3, asr r0
+ sub r1, r1, #0x1
+ and r1, r2, r1
+ and r2, r2, r3
+ str r2, [sp, #0x54]
+ str r4, [sp, #0x50]
+ orr r1, r1, #0x100000
+ rsb r0, r0, #0x14
+ mov r4, r1, asr r0
+ cmp r9, #0x0
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ rsblt r4, r4, #0x0
+ bl _dsub
+ str r0, [sp, #0x68]
+ str r1, [sp, #0x6c]
+_020E7F3C:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, r7
+ mov r1, r8
+ bl _dadd
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E76E8 ; =0x3FE62E43
+ mov r2, r0
+ str r3, [sp, #0x54]
+ str r0, [sp, #0x50]
+ bl _dmul
+ mov r9, r0
+ mov r10, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76EC ; =0xFEFA39EF
+ ldr r1, _020E76F0 ; =0x3FE62E42
+ bl _dmul
+ mov r7, r0
+ mov r8, r1
+ ldr r0, _020E76F4 ; =0x0CA86C39
+ ldr r1, _020E76F8 ; =0xBE205C61
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ mov r0, r9
+ mov r1, r10
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r2, r9
+ mov r3, r10
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dsub
+ mov r8, r0
+ mov r9, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ mov r2, r0
+ str r2, [sp, #0x50]
+ mov r3, r1
+ str r3, [sp, #0x54]
+ ldr r0, _020E76FC ; =0x72BEA4D0
+ ldr r1, _020E7700 ; =0x3E663769
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7704 ; =0xC5D26BF1
+ ldr r1, _020E7708 ; =0xBEBBBD41
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E770C ; =0xAF25DE2C
+ ldr r1, _020E7710 ; =0x3F11566A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7714 ; =0x16BEBD93
+ ldr r1, _020E7718 ; =0xBF66C16C
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E771C ; =0x5555553E
+ ldr r1, _020E7720 ; =0x3FC55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ str r2, [sp, #0x58]
+ mov r3, r1
+ str r3, [sp, #0x5c]
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dmul
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ mov r2, #0x0
+ mov r3, #0x40000000
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _ddiv
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r8
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r0, r8
+ mov r3, r1
+ mov r1, r9
+ bl _dadd
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _dsub
+ add r3, r1, r4, lsl #0x14
+ mov r2, r3, asr #0x14
+ str r0, [sp, #0x78]
+ cmp r2, #0x0
+ str r1, [sp, #0x7c]
+ addgt r0, sp, #0x78
+ strgt r3, [r0, #0x4]
+ bgt _020E81F0
+ mov r2, r4
+ bl scalbn
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E81F0:
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r0, r6
+ mov r1, r5
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end __ieee754_pow
+
+ .section .exceptix,4
+ .word __ieee754_pow
+ .short 4488
+ .word UNK_020EC738
+
+ .section .exception,8
+
+ .global UNK_020EC738
+UNK_020EC738: ; 0x020EC738
+ .byte 0x20, 0xFF, 0x01, 0xB8
+ .balign 8
diff --git a/arm9/asm/MSL_DPMath_s_copysign.s b/arm9/asm/MSL_DPMath_s_copysign.s
new file mode 100644
index 00000000..b8afdb31
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_copysign.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start copysign
+copysign: ; 0x020E8214
+ stmdb sp!, {r0-r3}
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ bic r1, r1, #0x80000000
+ and r0, r0, #0x80000000
+ orr r1, r1, r0
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end copysign
diff --git a/arm9/asm/MSL_DPMath_s_fabs.s b/arm9/asm/MSL_DPMath_s_fabs.s
new file mode 100644
index 00000000..049675a4
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_fabs.s
@@ -0,0 +1,16 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fabs
+fabs: ; 0x020E823C
+ stmdb sp!, {r0-r3}
+ add r2, sp, #0x0
+ ldr r1, [r2, #0x4]
+ ldr r0, [sp, #0x0]
+ bic r1, r1, #0x80000000
+ str r1, [r2, #0x4]
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end fabs
diff --git a/arm9/asm/MSL_DPMath_s_frexp.s b/arm9/asm/MSL_DPMath_s_frexp.s
new file mode 100644
index 00000000..b0c22aac
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_frexp.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start frexp
+frexp: ; 0x020E825C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r1, [sp, #0xc]
+ ldr r0, _020E8308 ; =0x7FF00000
+ mov r4, r2
+ bic r3, r1, #0x80000000
+ mov r2, #0x0
+ str r2, [r4, #0x0]
+ cmp r3, r0
+ ldr r0, [sp, #0x8]
+ bge _020E8290
+ orrs r0, r3, r0
+ bne _020E82A4
+_020E8290:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E82A4:
+ cmp r3, #0x100000
+ bge _020E82D0
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E830C ; =0x43500000
+ bl _dmul
+ mvn r2, #0x35
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ str r2, [r4, #0x0]
+ bic r3, r1, #0x80000000
+_020E82D0:
+ ldr r2, _020E8310 ; =0x800FFFFF
+ ldr r0, _020E8314 ; =0xFFFFFC02
+ and r1, r1, r2
+ orr r1, r1, #0xfe00000
+ orr r1, r1, #0x30000000
+ ldr r2, [r4, #0x0]
+ add r0, r0, r3, asr #0x14
+ add r2, r2, r0
+ ldr r0, [sp, #0x8]
+ str r2, [r4, #0x0]
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8308: .word 0x7FF00000
+_020E830C: .word 0x43500000
+_020E8310: .word 0x800FFFFF
+_020E8314: .word 0xFFFFFC02
+ arm_func_end frexp
+
+ .section .exceptix,4
+
+ .word frexp
+ .short 189
+ .word 0x00300120
diff --git a/arm9/asm/MSL_DPMath_s_ldexp.s b/arm9/asm/MSL_DPMath_s_ldexp.s
new file mode 100644
index 00000000..fc3a4713
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_ldexp.s
@@ -0,0 +1,170 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start ldexp
+ldexp: ; 0x020E8318
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r4, r2
+ bl __fpclassifyf
+ cmp r0, #0x2
+ ble _020E8350
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _deq
+ bne _020E8364
+_020E8350:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8364:
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8538 ; =0x7FF00000
+ ldr r1, [sp, #0x8]
+ and r0, r3, r0
+ movs r12, r0, asr #0x14
+ bne _020E83F0
+ bic r0, r3, #0x80000000
+ orrs r0, r1, r0
+ ldreq r0, [sp, #0x8]
+ ldreq r1, [sp, #0xc]
+ ldmeqia sp!, {r4,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E853C ; =0x43500000
+ mov r2, #0x0
+ bl _dmul
+ mov r3, r1
+ ldr r1, _020E8538 ; =0x7FF00000
+ ldr ip, _020E8540 ; =0xFFFF3CB0
+ and r1, r3, r1
+ mov r2, r0
+ mov r0, r1, asr #0x14
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ cmp r4, r12
+ sub r12, r0, #0x36
+ bge _020E83F0
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E83F0:
+ ldr r0, _020E854C ; =0x000007FF
+ cmp r12, r0
+ bne _020E841C
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r0
+ mov r3, r1
+ bl _dadd
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E841C:
+ add r2, r12, r4
+ sub r0, r0, #0x1
+ cmp r2, r0
+ ble _020E8460
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8460:
+ cmp r2, #0x0
+ ble _020E8488
+ ldr r1, _020E8558 ; =0x800FFFFF
+ ldr r0, [sp, #0x8]
+ and r1, r3, r1
+ orr r1, r1, r2, lsl #0x14
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8488:
+ mvn r0, #0x35
+ cmp r2, r0
+ bgt _020E8508
+ ldr r0, _020E855C ; =0x0000C350
+ cmp r4, r0
+ ble _020E84D4
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E84D4:
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8508:
+ ldr r0, _020E8558 ; =0x800FFFFF
+ add r1, r2, #0x36
+ and r0, r3, r0
+ orr r3, r0, r1, lsl #0x14
+ ldr r2, [sp, #0x8]
+ ldr r1, _020E8560 ; =0x3C900000
+ mov r0, #0x0
+ str r3, [sp, #0xc]
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8538: .word 0x7FF00000
+_020E853C: .word 0x43500000
+_020E8540: .word 0xFFFF3CB0
+_020E8544: .word 0xC2F8F359
+_020E8548: .word 0x01A56E1F
+_020E854C: .word 0x000007FF
+_020E8550: .word 0x8800759C
+_020E8554: .word 0x7E37E43C
+_020E8558: .word 0x800FFFFF
+_020E855C: .word 0x0000C350
+_020E8560: .word 0x3C900000
+ arm_func_end ldexp
+
+ .section .exceptix,4
+
+ .word ldexp
+ .short 589
+ .word 0x00300120
diff --git a/arm9/asm/MSL_DPMath_w_pow.s b/arm9/asm/MSL_DPMath_w_pow.s
new file mode 100644
index 00000000..8a6625ad
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_w_pow.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start pow
+pow: ; 0x020E8564
+ ldr ip, _020E856C ; =__ieee754_pow
+ bx r12
+ .balign 4
+_020E856C: .word __ieee754_pow
+ arm_func_end pow
+
+ .section .exceptix,4
+
+ .word pow
+ .short 13
+ .word 0x00000000
diff --git a/arm9/asm/MSL_fp_ansi.s b/arm9/asm/MSL_fp_ansi.s
new file mode 100644
index 00000000..b10a364e
--- /dev/null
+++ b/arm9/asm/MSL_fp_ansi.s
@@ -0,0 +1,1627 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .data
+
+ .global UNK_02106E48
+UNK_02106E48: ; 0x02106E48
+ .word 0x00000000, 0x40240000
+ .word 0x00000000, 0x40590000
+ .word 0x00000000, 0x408F4000
+ .word 0x00000000, 0x40C38800
+ .word 0x00000000, 0x40F86A00
+ .word 0x00000000, 0x412E8480
+ .word 0x00000000, 0x416312D0
+ .word 0x00000000, 0x4197D784
+
+ .global UNK_02106E88
+UNK_02106E88: ; 0x02106E88
+ .asciz "542101086242752217003726400434970855712890625"
+
+ .balign 4, 0
+ .global UNK_02106EB8
+UNK_02106EB8: ; 0x02106EB8
+ .asciz "11102230246251565404236316680908203125"
+
+ .balign 4, 0
+ .global UNK_02106EE0
+UNK_02106EE0: ; 0x02106EE0
+ .asciz "23283064365386962890625"
+
+ .balign 4, 0
+ .global UNK_02106EF8
+UNK_02106EF8: ; 0x02106EF8
+ .asciz "152587890625"
+
+ .balign 4, 0
+ .global UNK_02106F08
+UNK_02106F08: ; 0x02106F08
+ .asciz "390625"
+
+ .balign 4, 0
+ .global UNK_02106F10
+UNK_02106F10: ; 0x02106F10
+ .asciz "78125"
+
+ .balign 4, 0
+ .global UNK_02106F18
+UNK_02106F18: ; 0x02106F18
+ .asciz "15625"
+
+ .balign 4, 0
+ .global UNK_02106F20
+UNK_02106F20: ; 0x02106F20
+ .asciz "3125"
+
+ .balign 4, 0
+ .global UNK_02106F28
+UNK_02106F28: ; 0x02106F28
+ .asciz "625"
+
+ .balign 4, 0
+ .global UNK_02106F2C
+UNK_02106F2C: ; 0x02106F2C
+ .asciz "125"
+
+ .balign 4, 0
+ .global UNK_02106F30
+UNK_02106F30: ; 0x02106F30
+ .asciz "25"
+
+ .balign 4, 0
+ .global UNK_02106F34
+UNK_02106F34: ; 0x02106F34
+ .asciz "5"
+
+ .balign 4, 0
+ .global UNK_02106F38
+UNK_02106F38: ; 0x02106F38
+ .asciz "1"
+
+ .balign 4, 0
+ .global UNK_02106F3C
+UNK_02106F3C: ; 0x02106F3C
+ .asciz "2"
+
+ .balign 4, 0
+ .global UNK_02106F40
+UNK_02106F40: ; 0x02106F40
+ .asciz "4"
+
+ .balign 4, 0
+ .global UNK_02106F44
+UNK_02106F44: ; 0x02106F44
+ .asciz "8"
+
+ .balign 4, 0
+ .global UNK_02106F48
+UNK_02106F48: ; 0x02106F48
+ .asciz "16"
+
+ .balign 4, 0
+ .global UNK_02106F4C
+UNK_02106F4C: ; 0x02106F4C
+ .asciz "32"
+
+ .balign 4, 0
+ .global UNK_02106F50
+UNK_02106F50: ; 0x02106F50
+ .asciz "64"
+
+ .balign 4, 0
+ .global UNK_02106F54
+UNK_02106F54: ; 0x02106F54
+ .asciz "128"
+
+ .balign 4, 0
+ .global UNK_02106F58
+UNK_02106F58: ; 0x02106F58
+ .asciz "256"
+
+ .balign 4, 0
+ .global UNK_02106F5C
+UNK_02106F5C: ; 0x02106F5C
+ .asciz "179769313486231580793728714053034151"
+
+ .text
+
+ arm_func_start __must_round
+__must_round: ; 0x020E8570
+ add r3, r0, #0x5
+ ldrb r2, [r3, r1]
+ add r12, r3, r1
+ cmp r2, #0x5
+ movhi r0, #0x1
+ bxhi lr
+ mvncc r0, #0x0
+ bxcc lr
+ ldrb r2, [r0, #0x4]
+ add r12, r12, #0x1
+ add r3, r3, r2
+ cmp r12, r3
+ bhs _020E85C0
+_020E85A4:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x0
+ movne r0, #0x1
+ bxne lr
+ add r12, r12, #0x1
+ cmp r12, r3
+ blo _020E85A4
+_020E85C0:
+ sub r1, r1, #0x1
+ add r0, r0, r1
+ ldrb r0, [r0, #0x5]
+ tst r0, #0x1
+ movne r0, #0x1
+ mvneq r0, #0x0
+ bx lr
+ arm_func_end __must_round
+
+ arm_func_start __dorounddecup
+__dorounddecup: ; 0x020E85DC
+ add r3, r0, #0x5
+ add r1, r3, r1
+ sub r12, r1, #0x1
+ mov r1, #0x0
+_020E85EC:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x9
+ addcc r0, r2, #0x1
+ strccb r0, [r12, #0x0]
+ bxcc lr
+ cmp r12, r3
+ bne _020E8620
+ mov r1, #0x1
+ strb r1, [r12, #0x0]
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+ bx lr
+_020E8620:
+ strb r1, [r12], #-0x1
+ b _020E85EC
+ bx lr
+ arm_func_end __dorounddecup
+
+ arm_func_start __rounddec
+__rounddec: ; 0x020E862C
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r1
+ mov r5, r0
+ cmp r4, #0x0
+ ldmleia sp!, {r3-r5,pc}
+ ldrb r2, [r5, #0x4]
+ cmp r4, r2
+ ldmgeia sp!, {r3-r5,pc}
+ bl __must_round
+ strb r4, [r5, #0x4]
+ cmp r0, #0x0
+ ldmltia sp!, {r3-r5,pc}
+ mov r0, r5
+ mov r1, r4
+ bl __dorounddecup
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __rounddec
+
+ arm_func_start __ull2dec
+__ull2dec: ; 0x020E866C
+ stmdb sp!, {r3-r11,lr}
+ mov r10, r0
+ mov r0, #0x0
+ mov r8, r2
+ strb r0, [r10, #0x0]
+ mov r9, r1
+ cmp r8, #0x0
+ strb r0, [r10, #0x4]
+ cmpeq r9, #0x0
+ beq _020E86F8
+ mov r6, #0xa
+ mov r11, r0
+ mov r5, r0
+ mov r4, r0
+_020E86A4:
+ ldrb r1, [r10, #0x4]
+ mov r0, r9
+ mov r2, r6
+ add r3, r1, #0x1
+ mov r7, r1
+ strb r3, [r10, #0x4]
+ mov r1, r8
+ mov r3, r11
+ bl _ull_mod
+ add r1, r10, r7
+ strb r0, [r1, #0x5]
+ mov r0, r9
+ mov r1, r8
+ mov r2, #0xa
+ mov r3, #0x0
+ bl _ll_udiv
+ mov r8, r1
+ mov r9, r0
+ cmp r8, r5
+ cmpeq r9, r4
+ bne _020E86A4
+_020E86F8:
+ ldrb r0, [r10, #0x4]
+ add r2, r10, #0x5
+ add r0, r2, r0
+ sub r3, r0, #0x1
+ cmp r2, r3
+ bhs _020E8728
+_020E8710:
+ ldrb r0, [r3, #0x0]
+ ldrb r1, [r2, #0x0]
+ strb r0, [r2], #0x1
+ strb r1, [r3], #-0x1
+ cmp r2, r3
+ blo _020E8710
+_020E8728:
+ ldrb r0, [r10, #0x4]
+ sub r0, r0, #0x1
+ strh r0, [r10, #0x2]
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end __ull2dec
+
+ arm_func_start __timesdec
+__timesdec: ; 0x020E8738
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x40
+ ldrb r6, [r1, #0x4]
+ ldrb r5, [r2, #0x4]
+ mov r4, #0x0
+ add r3, sp, #0x0
+ add r5, r6, r5
+ sub r5, r5, #0x1
+ add r3, r3, r5
+ add r6, r3, #0x1
+ mov r7, r6
+ strb r4, [r0, #0x0]
+ cmp r5, #0x0
+ ble _020E8800
+ add lr, r1, #0x5
+ add r11, r2, #0x5
+_020E8778:
+ ldrb r3, [r2, #0x4]
+ sub r10, r3, #0x1
+ sub r3, r5, r10
+ subs r9, r3, #0x1
+ ldrb r3, [r1, #0x4]
+ movmi r9, #0x0
+ submi r10, r5, #0x1
+ add r8, r10, #0x1
+ sub r3, r3, r9
+ cmp r8, r3
+ movgt r8, r3
+ add r10, r11, r10
+ add r9, lr, r9
+ cmp r8, #0x0
+ ble _020E87CC
+_020E87B4:
+ ldrb r12, [r9], #0x1
+ ldrb r3, [r10], #-0x1
+ sub r8, r8, #0x1
+ cmp r8, #0x0
+ mla r4, r12, r3, r4
+ bgt _020E87B4
+_020E87CC:
+ ldr r3, _020E88B8 ; =0xCCCCCCCD
+ sub r5, r5, #0x1
+ umull r8, r9, r4, r3
+ mov r9, r9, lsr #0x3
+ cmp r5, #0x0
+ mov r10, #0xa
+ umull r8, r9, r10, r9
+ sub r9, r4, r8
+ strb r9, [r6, #-0x1]!
+ mov r8, r4
+ umull r3, r4, r8, r3
+ mov r4, r4, lsr #0x3
+ bgt _020E8778
+_020E8800:
+ ldrsh r3, [r1, #0x2]
+ ldrsh r1, [r2, #0x2]
+ cmp r4, #0x0
+ add r1, r3, r1
+ strh r1, [r0, #0x2]
+ beq _020E8828
+ strb r4, [r6, #-0x1]!
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+_020E8828:
+ mov r3, #0x0
+ b _020E8840
+_020E8830:
+ ldrb r2, [r6], #0x1
+ add r1, r0, r3
+ add r3, r3, #0x1
+ strb r2, [r1, #0x5]
+_020E8840:
+ cmp r3, #0x20
+ bge _020E8850
+ cmp r6, r7
+ blo _020E8830
+_020E8850:
+ cmp r6, r7
+ addcs sp, sp, #0x40
+ strb r3, [r0, #0x4]
+ ldmcsia sp!, {r3-r11,pc}
+ ldrb r1, [r6, #0x0]
+ cmp r1, #0x5
+ addcc sp, sp, #0x40
+ ldmccia sp!, {r3-r11,pc}
+ bne _020E88A8
+ add r2, r6, #0x1
+ cmp r2, r7
+ bhs _020E8898
+_020E8880:
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ bne _020E88A8
+ add r2, r2, #0x1
+ cmp r2, r7
+ blo _020E8880
+_020E8898:
+ ldrb r1, [r6, #-0x1]
+ tst r1, #0x1
+ addeq sp, sp, #0x40
+ ldmeqia sp!, {r3-r11,pc}
+_020E88A8:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ add sp, sp, #0x40
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E88B8: .word 0xCCCCCCCD
+ arm_func_end __timesdec
+
+ arm_func_start __str2dec
+__str2dec: ; 0x020E88BC
+ stmdb sp!, {r3,lr}
+ strh r2, [r0, #0x2]
+ mov r12, #0x0
+ strb r12, [r0, #0x0]
+ b _020E88E4
+_020E88D0:
+ ldrsb r3, [r1], #0x1
+ add r2, r0, r12
+ add r12, r12, #0x1
+ sub r3, r3, #0x30
+ strb r3, [r2, #0x5]
+_020E88E4:
+ cmp r12, #0x20
+ bge _020E88F8
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E88D0
+_020E88F8:
+ strb r12, [r0, #0x4]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+ cmp r2, #0x5
+ ldmltia sp!, {r3,pc}
+ bgt _020E894C
+ ldrsb r2, [r1, #0x1]
+ add r1, r1, #0x1
+ cmp r2, #0x0
+ beq _020E8938
+_020E8924:
+ cmp r2, #0x30
+ bne _020E894C
+ ldrsb r2, [r1, #0x1]!
+ cmp r2, #0x0
+ bne _020E8924
+_020E8938:
+ sub r1, r12, #0x1
+ add r1, r0, r1
+ ldrb r1, [r1, #0x5]
+ tst r1, #0x1
+ ldmeqia sp!, {r3,pc}
+_020E894C:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ ldmia sp!, {r3,pc}
+ arm_func_end __str2dec
+
+ arm_func_start __two_exp
+__two_exp: ; 0x020E8958
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4c
+ mov r4, r1
+ mvn r2, #0x34
+ mov r5, r0
+ cmp r4, r2
+ bgt _020E8988
+ bge _020E8A54
+ sub r0, r2, #0xb
+ cmp r4, r0
+ beq _020E8A3C
+ b _020E8BE4
+_020E8988:
+ add r1, r4, #0x20
+ cmp r1, #0x28
+ addls pc, pc, r1, lsl #0x2
+ b _020E8BE4
+ b _020E8A68 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8A7C ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8A90 ; case
+ b _020E8AA4 ; case
+ b _020E8AB8 ; case
+ b _020E8ACC ; case
+ b _020E8AE0 ; case
+ b _020E8AF4 ; case
+ b _020E8B08 ; case
+ b _020E8B1C ; case
+ b _020E8B30 ; case
+ b _020E8B44 ; case
+ b _020E8B58 ; case
+ b _020E8B6C ; case
+ b _020E8B80 ; case
+ b _020E8B94 ; case
+ b _020E8BA8 ; case
+ b _020E8BBC ; case
+ b _020E8BD0 ; case
+_020E8A3C:
+ ldr r1, _020E8C88 ; =UNK_02106E88
+ mov r0, r5
+ mvn r2, #0x13
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A54:
+ ldr r1, _020E8C8C ; =UNK_02106EB8
+ add r2, r2, #0x25
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A68:
+ ldr r1, _020E8C90 ; =UNK_02106EE0
+ add r2, r2, #0x2b
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A7C:
+ ldr r1, _020E8C94 ; =UNK_02106EF8
+ add r2, r2, #0x30
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A90:
+ ldr r1, _020E8C98 ; =UNK_02106F08
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AA4:
+ ldr r1, _020E8C9C ; =UNK_02106F10
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AB8:
+ ldr r1, _020E8CA0 ; =UNK_02106F18
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8ACC:
+ ldr r1, _020E8CA4 ; =UNK_02106F20
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AE0:
+ ldr r1, _020E8CA8 ; =UNK_02106F28
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AF4:
+ ldr r1, _020E8CAC ; =UNK_02106F2C
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B08:
+ ldr r1, _020E8CB0 ; =UNK_02106F30
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B1C:
+ ldr r1, _020E8CB4 ; =UNK_02106F34
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B30:
+ ldr r1, _020E8CB8 ; =UNK_02106F38
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B44:
+ ldr r1, _020E8CBC ; =UNK_02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B58:
+ ldr r1, _020E8CC0 ; =UNK_02106F40
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B6C:
+ ldr r1, _020E8CC4 ; =UNK_02106F44
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B80:
+ ldr r1, _020E8CC8 ; =UNK_02106F48
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B94:
+ ldr r1, _020E8CCC ; =UNK_02106F4C
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BA8:
+ ldr r1, _020E8CD0 ; =UNK_02106F50
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BBC:
+ ldr r1, _020E8CD4 ; =UNK_02106F54
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BD0:
+ ldr r1, _020E8CD8 ; =UNK_02106F58
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BE4:
+ and r0, r4, #0x80000000
+ add r1, r4, r0, lsr #0x1f
+ add r0, sp, #0x26
+ mov r1, r1, asr #0x1
+ bl __two_exp
+ add r1, sp, #0x26
+ mov r0, r5
+ mov r2, r1
+ bl __timesdec
+ tst r4, #0x1
+ addeq sp, sp, #0x4c
+ ldmeqia sp!, {r4-r5,pc}
+ add r3, sp, #0x0
+ mov r12, r5
+ mov r2, #0x9
+_020E8C20:
+ ldrh r1, [r12, #0x0]
+ ldrh r0, [r12, #0x2]
+ add r12, r12, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E8C20
+ ldrh r0, [r12, #0x0]
+ cmp r4, #0x0
+ strh r0, [r3, #0x0]
+ add r0, sp, #0x26
+ ble _020E8C64
+ ldr r1, _020E8CBC ; =UNK_02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ b _020E8C70
+_020E8C64:
+ ldr r1, _020E8CB4 ; =UNK_02106F34
+ mvn r2, #0x0
+ bl __str2dec
+_020E8C70:
+ add r1, sp, #0x0
+ add r2, sp, #0x26
+ mov r0, r5
+ bl __timesdec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E8C88: .word UNK_02106E88
+_020E8C8C: .word UNK_02106EB8
+_020E8C90: .word UNK_02106EE0
+_020E8C94: .word UNK_02106EF8
+_020E8C98: .word UNK_02106F08
+_020E8C9C: .word UNK_02106F10
+_020E8CA0: .word UNK_02106F18
+_020E8CA4: .word UNK_02106F20
+_020E8CA8: .word UNK_02106F28
+_020E8CAC: .word UNK_02106F2C
+_020E8CB0: .word UNK_02106F30
+_020E8CB4: .word UNK_02106F34
+_020E8CB8: .word UNK_02106F38
+_020E8CBC: .word UNK_02106F3C
+_020E8CC0: .word UNK_02106F40
+_020E8CC4: .word UNK_02106F44
+_020E8CC8: .word UNK_02106F48
+_020E8CCC: .word UNK_02106F4C
+_020E8CD0: .word UNK_02106F50
+_020E8CD4: .word UNK_02106F54
+_020E8CD8: .word UNK_02106F58
+ arm_func_end __two_exp
+
+ arm_func_start __equals_dec
+__equals_dec:
+ stmdb sp!, {r4,lr}
+ ldrb r3, [r0, #0x5]
+ cmp r3, #0x0
+ bne _020E8D00
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D00:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ bne _020E8D1C
+ cmp r3, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D1C:
+ ldrsh r3, [r0, #0x2]
+ ldrsh r2, [r1, #0x2]
+ cmp r3, r2
+ bne _020E8DB4
+ ldrb r4, [r0, #0x4]
+ ldrb r2, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r4
+ cmp r4, r2
+ movgt lr, r2
+ cmp lr, #0x0
+ ble _020E8D74
+_020E8D4C:
+ add r3, r0, r12
+ add r2, r1, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r3, r2
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8D4C
+_020E8D74:
+ cmp lr, r4
+ moveq r0, r1
+ ldrb r1, [r0, #0x4]
+ cmp r12, r1
+ bge _020E8DAC
+_020E8D88:
+ add r1, r0, r12
+ ldrb r1, [r1, #0x5]
+ cmp r1, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ ldrb r1, [r0, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r1
+ blt _020E8D88
+_020E8DAC:
+ mov r0, #0x1
+ ldmia sp!, {r4,pc}
+_020E8DB4:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ arm_func_end __equals_dec
+
+ arm_func_start __less_dec
+__less_dec:
+ stmdb sp!, {r3-r5,lr}
+ ldrb r2, [r0, #0x5]
+ cmp r2, #0x0
+ bne _020E8DE0
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8DE0:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ ldrsh r3, [r1, #0x2]
+ ldrsh r2, [r0, #0x2]
+ cmp r2, r3
+ bne _020E8E90
+ ldrb r5, [r0, #0x4]
+ ldrb r4, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r5
+ cmp r5, r4
+ movgt lr, r4
+ cmp lr, #0x0
+ ble _020E8E54
+_020E8E20:
+ add r3, r1, r12
+ add r2, r0, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r2, r3
+ movcc r0, #0x1
+ ldmccia sp!, {r3-r5,pc}
+ cmp r3, r2
+ movcc r0, #0x0
+ ldmccia sp!, {r3-r5,pc}
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8E20
+_020E8E54:
+ cmp lr, r5
+ bne _020E8E88
+ cmp r12, r4
+ bge _020E8E88
+_020E8E64:
+ add r0, r1, r12
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ ldmneia sp!, {r3-r5,pc}
+ ldrb r0, [r1, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r0
+ blt _020E8E64
+_020E8E88:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8E90:
+ movlt r0, #0x1
+ movge r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __less_dec
+
+ arm_func_start __minus_dec
+__minus_dec: ; 0x020E8E9C
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r0
+ mov r5, #0x9
+_020E8EA8:
+ ldrh r4, [r1, #0x0]
+ ldrh r3, [r1, #0x2]
+ add r1, r1, #0x4
+ subs r5, r5, #0x1
+ strh r4, [r6, #0x0]
+ strh r3, [r6, #0x2]
+ add r6, r6, #0x4
+ bne _020E8EA8
+ ldrh r1, [r1, #0x0]
+ strh r1, [r6, #0x0]
+ ldrb r1, [r2, #0x5]
+ cmp r1, #0x0
+ ldmeqia sp!, {r3-r7,pc}
+ ldrb r7, [r0, #0x4]
+ ldrb r3, [r2, #0x4]
+ ldrsh r4, [r0, #0x2]
+ mov r1, r7
+ cmp r7, r3
+ movlt r1, r3
+ ldrsh r3, [r2, #0x2]
+ sub r6, r4, r3
+ add r1, r1, r6
+ cmp r1, #0x20
+ movgt r1, #0x20
+ cmp r7, r1
+ bge _020E8F34
+ mov r4, #0x0
+_020E8F14:
+ ldrb r5, [r0, #0x4]
+ add r3, r0, r7
+ add r5, r5, #0x1
+ strb r5, [r0, #0x4]
+ strb r4, [r3, #0x5]
+ ldrb r7, [r0, #0x4]
+ cmp r7, r1
+ blt _020E8F14
+_020E8F34:
+ ldrb r4, [r2, #0x4]
+ add r3, r0, #0x5
+ add r12, r3, r1
+ add r4, r4, r6
+ cmp r4, r1
+ addlt r12, r3, r4
+ sub r4, r12, r3
+ add r1, r2, #0x5
+ sub r4, r4, r6
+ add lr, r1, r4
+ mov r4, lr
+ b _020E8FC8
+_020E8F64:
+ ldrb r7, [r12, #-0x1]!
+ ldrb r5, [lr, #-0x1]!
+ cmp r7, r5
+ bhs _020E8FB8
+ ldrb r7, [r12, #-0x1]
+ sub r5, r12, #0x1
+ cmp r7, #0x0
+ bne _020E8F90
+_020E8F84:
+ ldrb r7, [r5, #-0x1]!
+ cmp r7, #0x0
+ beq _020E8F84
+_020E8F90:
+ cmp r5, r12
+ beq _020E8FB8
+_020E8F98:
+ ldrb r7, [r5, #0x0]
+ sub r7, r7, #0x1
+ strb r7, [r5, #0x0]
+ ldrb r7, [r5, #0x1]!
+ cmp r5, r12
+ add r7, r7, #0xa
+ strb r7, [r5, #0x0]
+ bne _020E8F98
+_020E8FB8:
+ ldrb r7, [r12, #0x0]
+ ldrb r5, [lr, #0x0]
+ sub r5, r7, r5
+ strb r5, [r12, #0x0]
+_020E8FC8:
+ cmp r12, r3
+ cmphi lr, r1
+ bhi _020E8F64
+ ldrb r5, [r2, #0x4]
+ sub lr, r4, r1
+ cmp lr, r5
+ bge _020E90A4
+ ldrb r1, [r4, #0x0]
+ mov r7, #0x0
+ cmp r1, #0x5
+ movcc r7, #0x1
+ blo _020E9040
+ bne _020E9040
+ add r1, r2, #0x5
+ add r2, r1, r5
+ add r4, r4, #0x1
+ cmp r4, r2
+ bhs _020E9028
+_020E9010:
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _020E90A4
+ add r4, r4, #0x1
+ cmp r4, r2
+ blo _020E9010
+_020E9028:
+ add r1, r3, lr
+ add r2, r1, r6
+ ldrb r1, [r2, #-0x1]
+ sub r12, r2, #0x1
+ tst r1, #0x1
+ movne r7, #0x1
+_020E9040:
+ cmp r7, #0x0
+ beq _020E90A4
+ ldrb r1, [r12, #0x0]
+ cmp r1, #0x1
+ bhs _020E9098
+ ldrb r1, [r12, #-0x1]
+ sub r2, r12, #0x1
+ cmp r1, #0x0
+ bne _020E9070
+_020E9064:
+ ldrb r1, [r2, #-0x1]!
+ cmp r1, #0x0
+ beq _020E9064
+_020E9070:
+ cmp r2, r12
+ beq _020E9098
+_020E9078:
+ ldrb r1, [r2, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r2, #0x0]
+ ldrb r1, [r2, #0x1]!
+ cmp r2, r12
+ add r1, r1, #0xa
+ strb r1, [r2, #0x0]
+ bne _020E9078
+_020E9098:
+ ldrb r1, [r12, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r12, #0x0]
+_020E90A4:
+ ldrb r1, [r3, #0x0]
+ mov r5, r3
+ cmp r1, #0x0
+ bne _020E90C0
+_020E90B4:
+ ldrb r1, [r5, #0x1]!
+ cmp r1, #0x0
+ beq _020E90B4
+_020E90C0:
+ cmp r5, r3
+ bls _020E9108
+ ldrsh r1, [r0, #0x2]
+ sub r2, r5, r3
+ and r4, r2, #0xff
+ sub r1, r1, r4
+ strh r1, [r0, #0x2]
+ ldrb r1, [r0, #0x4]
+ add r2, r3, r1
+ cmp r5, r2
+ bhs _020E90FC
+_020E90EC:
+ ldrb r1, [r5], #0x1
+ cmp r5, r2
+ strb r1, [r3], #0x1
+ blo _020E90EC
+_020E90FC:
+ ldrb r1, [r0, #0x4]
+ sub r1, r1, r4
+ strb r1, [r0, #0x4]
+_020E9108:
+ ldrb r1, [r0, #0x4]
+ add r2, r0, #0x5
+ add r3, r2, r1
+ cmp r3, r2
+ bls _020E9130
+_020E911C:
+ ldrb r1, [r3, #-0x1]!
+ cmp r1, #0x0
+ bne _020E9130
+ cmp r3, r2
+ bhi _020E911C
+_020E9130:
+ sub r1, r3, r2
+ add r1, r1, #0x1
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r7,pc}
+ arm_func_end __minus_dec
+
+ arm_func_start __num2dec_internal
+__num2dec_internal:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x58
+ mov r8, r1
+ mov r6, r2
+ mov r7, r0
+ mov r0, r8
+ mov r1, r6
+ bl __signbitf
+ cmp r0, #0x0
+ movne r1, #0x1
+ moveq r1, #0x0
+ mov r4, r1, lsl #0x18
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ mov r5, r4, asr #0x18
+ bl _deq
+ bne _020E91AC
+ strb r5, [r7, #0x0]
+ mov r1, #0x0
+ strh r1, [r7, #0x2]
+ mov r0, #0x1
+ strb r0, [r7, #0x4]
+ add sp, sp, #0x58
+ strb r1, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91AC:
+ mov r0, r8
+ mov r1, r6
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bgt _020E91F8
+ strb r5, [r7, #0x0]
+ mov r2, #0x0
+ strh r2, [r7, #0x2]
+ mov r2, #0x1
+ mov r0, r8
+ mov r1, r6
+ strb r2, [r7, #0x4]
+ bl __fpclassifyf
+ cmp r0, #0x1
+ moveq r0, #0x4e
+ movne r0, #0x49
+ add sp, sp, #0x58
+ strb r0, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91F8:
+ cmp r5, #0x0
+ beq _020E921C
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ bl _dsub
+ mov r8, r0
+ mov r6, r1
+_020E921C:
+ add r2, sp, #0x8
+ mov r0, r8
+ mov r1, r6
+ bl frexp
+ mov r4, r0
+ mov r6, r1
+ orr r12, r4, #0x0
+ rsbs r2, r12, #0x0
+ orr r3, r6, #0x100000
+ rsc r1, r3, #0x0
+ mov r0, #0x0
+ and r3, r3, r1
+ sub r1, r0, #0x1
+ and r12, r12, r2
+ mov r2, r1
+ adds r0, r12, r1
+ adc r1, r3, r2
+ str r4, [sp, #0x0]
+ str r6, [sp, #0x4]
+ bl __msl_generic_count_bits64
+ rsb r8, r0, #0x35
+ ldr r1, [sp, #0x8]
+ add r0, sp, #0xc
+ sub r1, r1, r8
+ bl __two_exp
+ mov r0, r4
+ mov r1, r6
+ mov r2, r8
+ bl ldexp
+ bl _ll_ufrom_d
+ mov r2, r1
+ mov r1, r0
+ add r0, sp, #0x32
+ bl __ull2dec
+ mov r0, r7
+ add r1, sp, #0x32
+ add r2, sp, #0xc
+ bl __timesdec
+ strb r5, [r7, #0x0]
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end __num2dec_internal
+
+ arm_func_start __num2dec_internal2
+__num2dec_internal2: ; 0x020E92C0
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r3
+ ldrsh r5, [r0, #0x2]
+ mov r0, r4
+ bl __num2dec_internal
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x9
+ ldmhiia sp!, {r3-r5,pc}
+ cmp r5, #0x20
+ movgt r5, #0x20
+ mov r0, r4
+ mov r1, r5
+ bl __rounddec
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ bge _020E9324
+ mov r1, #0x0
+_020E9304:
+ ldrb r2, [r4, #0x4]
+ add r0, r4, r0
+ add r2, r2, #0x1
+ strb r2, [r4, #0x4]
+ strb r1, [r0, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ blt _020E9304
+_020E9324:
+ ldrsh r1, [r4, #0x2]
+ sub r0, r0, #0x1
+ mov r2, #0x0
+ sub r0, r1, r0
+ strh r0, [r4, #0x2]
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ ldmleia sp!, {r3-r5,pc}
+_020E9344:
+ add r1, r4, r2
+ ldrb r0, [r1, #0x5]
+ add r2, r2, #0x1
+ add r0, r0, #0x30
+ strb r0, [r1, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r2, r0
+ blt _020E9344
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __num2dec_internal2
+
+ arm_func_start __dec2num
+__dec2num: ; 0x020E9368
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xfc
+ mov r4, r0
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _020E93A8
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93A8:
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x30
+ beq _020E93C8
+ cmp r0, #0x49
+ beq _020E93F0
+ cmp r0, #0x4e
+ beq _020E9424
+ b _020E946C
+_020E93C8:
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93F0:
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =__float_huge
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9424:
+ ldr r1, _020E9978 ; =0x7FF00000
+ add r3, sp, #0x10
+ mov r2, #0x0
+ str r2, [r3, #0x0]
+ str r1, [r3, #0x4]
+ ldrsb r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020E9454
+ orr r0, r1, #0x80000000
+ orr r1, r2, r2
+ str r1, [r3, #0x0]
+ str r0, [r3, #0x4]
+_020E9454:
+ ldmia r3, {r0-r1}
+ orr r0, r0, #0x0
+ orr r1, r1, #0x80000
+ stmia r3, {r0-r1}
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E946C:
+ add r3, sp, #0xd6
+ mov r5, r4
+ mov r2, #0x9
+_020E9478:
+ ldrh r1, [r5, #0x0]
+ ldrh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E9478
+ ldrh r0, [r5, #0x0]
+ add r1, sp, #0xdb
+ strh r0, [r3, #0x0]
+ ldrb r0, [sp, #0xda]
+ add r5, r1, r0
+ cmp r1, r5
+ bhs _020E94C8
+_020E94B4:
+ ldrb r0, [r1, #0x0]
+ sub r0, r0, #0x30
+ strb r0, [r1], #0x1
+ cmp r1, r5
+ blo _020E94B4
+_020E94C8:
+ ldrb r1, [sp, #0xda]
+ ldrsh r2, [sp, #0xd8]
+ add r0, sp, #0xb0
+ sub r1, r1, #0x1
+ add r1, r2, r1
+ strh r1, [sp, #0xd8]
+ ldr r1, _020E997C ; =UNK_02106F5C
+ mov r2, #0x134
+ ldrsh r11, [sp, #0xd8]
+ bl __str2dec
+ add r0, sp, #0xb0
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ beq _020E9538
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =__float_huge
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9538:
+ add r1, sp, #0xdb
+ ldrb r0, [r1, #0x0]
+ add r8, r1, #0x1
+ bl _dfltu
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ cmp r8, r5
+ bhs _020E9610
+_020E9558:
+ sub r0, r5, r8
+ mov r1, r0, lsr #0x1f
+ rsb r0, r1, r0, lsl #0x1d
+ adds r7, r1, r0, ror #0x1d
+ moveq r7, #0x8
+ mov r6, #0x0
+ mov r2, #0x0
+ cmp r7, #0x0
+ ble _020E9594
+ mov r0, #0xa
+_020E9580:
+ ldrb r1, [r8], #0x1
+ add r2, r2, #0x1
+ cmp r2, r7
+ mla r6, r0, r6, r1
+ blt _020E9580
+_020E9594:
+ ldr r0, _020E9980 ; =UNK_02106E48
+ ldr r1, [sp, #0xc]
+ add r3, r0, r7, lsl #0x3
+ ldr r2, [r3, #-0x8]
+ ldr r0, [sp, #0x8]
+ ldr r3, [r3, #-0x4]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ mov r0, r6
+ bl _dfltu
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r9
+ bl _dadd
+ cmp r6, #0x0
+ mov r6, r0
+ mov r10, r1
+ beq _020E95FC
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r10
+ bl _deq
+ beq _020E9610
+_020E95FC:
+ str r6, [sp, #0x8]
+ str r10, [sp, #0xc]
+ cmp r8, r5
+ sub r11, r11, r7
+ blo _020E9558
+_020E9610:
+ cmp r11, #0x0
+ bge _020E9654
+ rsb r0, r11, #0x0
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _ddiv
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ b _020E968C
+_020E9654:
+ mov r0, r11
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _dmul
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E968C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r11
+ bl ldexp
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bne _020E96C0
+ ldr r0, _020E9988 ; =0x7FEFFFFF
+ mvn r1, #0x0
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E96C0:
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x8a
+ add r4, sp, #0x0
+ mov r5, #0x0
+ bl __num2dec_internal
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __equals_dec
+ cmp r0, #0x0
+ bne _020E9934
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ movne r5, #0x1
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ cmp r5, #0x0
+ moveq r6, #0x1
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ movne r6, #0x0
+_020E971C:
+ cmp r6, #0x0
+ bne _020E9744
+ ldmia r4, {r0-r1}
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ stmia r4, {r0-r1}
+ bl __fpclassifyf
+ cmp r0, #0x2
+ beq _020E9934
+ b _020E975C
+_020E9744:
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ subs r1, r1, #0x1
+ sbc r0, r0, #0x0
+ str r1, [r4, #0x0]
+ str r0, [r4, #0x4]
+_020E975C:
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, sp, #0x64
+ bl __num2dec_internal
+ cmp r5, #0x0
+ beq _020E9788
+ add r0, sp, #0x64
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ beq _020E98AC
+_020E9788:
+ cmp r5, #0x0
+ bne _020E9864
+ add r0, sp, #0xd6
+ add r1, sp, #0x64
+ bl __less_dec
+ cmp r0, #0x0
+ bne _020E9864
+ add r3, sp, #0x8a
+ add r5, sp, #0x3e
+ mov r2, #0x9
+_020E97B0:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E97B0
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x64
+ add r4, sp, #0x8a
+ strh r0, [r5, #0x0]
+ mov r2, #0x9
+_020E97E4:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r4, #0x0]
+ strh r0, [r4, #0x2]
+ add r4, r4, #0x4
+ subs r2, r2, #0x1
+ bne _020E97E4
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x3e
+ add r5, sp, #0x64
+ strh r0, [r4, #0x0]
+ mov r2, #0x9
+_020E9818:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E9818
+ ldrh r4, [r3, #0x0]
+ ldr r3, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ strh r4, [r5, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x0]
+ str r2, [sp, #0x4]
+ b _020E98AC
+_020E9864:
+ add r7, sp, #0x64
+ add r3, sp, #0x8a
+ mov r2, #0x9
+_020E9870:
+ ldrh r1, [r7, #0x0]
+ ldrh r0, [r7, #0x2]
+ add r7, r7, #0x4
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ subs r2, r2, #0x1
+ bne _020E9870
+ ldrh r2, [r7, #0x0]
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r2, [r3, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E971C
+_020E98AC:
+ add r0, sp, #0x3e
+ add r1, sp, #0xd6
+ add r2, sp, #0x8a
+ bl __minus_dec
+ add r0, sp, #0x18
+ add r1, sp, #0x64
+ add r2, sp, #0xd6
+ bl __minus_dec
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __equals_dec
+ cmp r0, #0x0
+ beq _020E9910
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ and r1, r1, #0x1
+ and r0, r0, #0x0
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ beq _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E9934
+_020E9910:
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __less_dec
+ cmp r0, #0x0
+ bne _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E9934:
+ ldrsb r0, [sp, #0xd6]
+ cmp r0, #0x0
+ beq _020E995C
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E995C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E996C: .word 0x3FF00000
+_020E9970: .word 0xBFF00000
+_020E9974: .word __float_huge
+_020E9978: .word 0x7FF00000
+_020E997C: .word UNK_02106F5C
+_020E9980: .word UNK_02106E48
+_020E9984: .word 0x40140000
+_020E9988: .word 0x7FEFFFFF
+ arm_func_end __dec2num
+
+ .section .exception,8
+
+ .global UNK_020EC740
+UNK_020EC740: ; 0x020EC740
+ .byte 0x00, 0xFF, 0x05, 0x20
+ .balign 8
+
+ .section .exceptix,4
+
+ .word __rounddec
+ .short 65
+ .word 0x00200300
+ .word __ull2dec
+ .short 205
+ .word 0x0050FF00
+ .word __timesdec
+ .short 389
+ .word 0x00D0FF00
+ .word __str2dec
+ .short 157
+ .word 0x00100000
+ .word __two_exp
+ .short 901
+ .word 0x00B00300
+ .word __num2dec_internal
+ .short 385
+ .word 0x00E01F00
+ .word __num2dec_internal2
+ .short 169
+ .word 0x00200300
+ .word __dec2num
+ .short 1572
+ .word UNK_020EC740
diff --git a/arm9/asm/MSL_math.s b/arm9/asm/MSL_math.s
new file mode 100644
index 00000000..260034e5
--- /dev/null
+++ b/arm9/asm/MSL_math.s
@@ -0,0 +1,110 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .text
+
+ arm_func_start __msl_generic_count_bits64
+__msl_generic_count_bits64: ; 0x020E998C
+ mov r3, r0, lsr #0x1
+ ldr r2, _020E9A14 ; =0x55555555
+ orr r3, r3, r1, lsl #0x1f
+ and r3, r3, r2
+ subs r12, r0, r3
+ and r2, r2, r1, lsr #0x1
+ ldr r0, _020E9A18 ; =0x33333333
+ sbc r3, r1, r2
+ mov r1, r12, lsr #0x2
+ orr r1, r1, r3, lsl #0x1e
+ and r2, r12, r0
+ and r1, r1, r0
+ adds r2, r2, r1
+ and r1, r3, r0
+ and r0, r0, r3, lsr #0x2
+ adc r1, r1, r0
+ mov r0, r2, lsr #0x4
+ orr r0, r0, r1, lsl #0x1c
+ adds r2, r2, r0
+ ldr r0, _020E9A1C ; =0x0F0F0F0F
+ adc r1, r1, r1, lsr #0x4
+ and r3, r2, r0
+ and r2, r1, r0
+ mov r0, r3, lsr #0x8
+ orr r0, r0, r2, lsl #0x18
+ adds r1, r3, r0
+ adc r2, r2, r2, lsr #0x8
+ mov r0, r1, lsr #0x10
+ orr r0, r0, r2, lsl #0x10
+ adds r1, r1, r0
+ adc r0, r2, r2, lsr #0x10
+ adds r0, r1, r0
+ and r0, r0, #0xff
+ bx lr
+ .balign 4
+_020E9A14: .word 0x55555555
+_020E9A18: .word 0x33333333
+_020E9A1C: .word 0x0F0F0F0F
+ arm_func_end __msl_generic_count_bits64
+
+ arm_func_start __signbitf
+__signbitf:
+ stmdb sp!, {r0-r3}
+ ldr r0, [sp, #0x4]
+ and r0, r0, #0x80000000
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end __signbitf
+
+ arm_func_start __fpclassifyf
+__fpclassifyf: ; 0x020E9A34
+ stmdb sp!, {r0-r3}
+ ldr r2, [sp, #0x4]
+ ldr r0, _020E9A9C ; =0x7FF00000
+ ands r1, r2, r0
+ beq _020E9A70
+ cmp r1, r0
+ bne _020E9A90
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x2
+ bx lr
+_020E9A70:
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x5
+ moveq r0, #0x3
+ bx lr
+_020E9A90:
+ mov r0, #0x4
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E9A9C: .word 0x7FF00000
+_020E9AA0: .word 0x000FFFFF
+ arm_func_end __fpclassifyf
+
+ arm_func_start scalbn
+scalbn: ; 0x020E9AA4
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r2
+ add r2, sp, #0x0
+ bl frexp
+ ldr r2, [sp, #0x0]
+ add r2, r2, r4
+ str r2, [sp, #0x0]
+ bl ldexp
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ arm_func_end scalbn
+
+ .section .exceptix,4
+ .word scalbn
+ .short 45
+ .word 0x00200100
diff --git a/arm9/asm/MSL_string_extras.s b/arm9/asm/MSL_string_extras.s
new file mode 100644
index 00000000..c3b09fe9
--- /dev/null
+++ b/arm9/asm/MSL_string_extras.s
@@ -0,0 +1,46 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start stricmp
+stricmp: ; 0x020E9AD0
+ stmdb sp!, {r3,lr}
+ ldr r3, _020E9B34 ; =__lower_mapC
+_020E9AD8:
+ ldrb r2, [r0], #0x1
+ cmp r2, #0x0
+ blt _020E9AF0
+ cmp r2, #0x80
+ bge _020E9AF0
+ ldrb r2, [r3, r2]
+_020E9AF0:
+ ldrb lr, [r1], #0x1
+ and r12, r2, #0xff
+ cmp lr, #0x0
+ blt _020E9B0C
+ cmp lr, #0x80
+ bge _020E9B0C
+ ldrb lr, [r3, lr]
+_020E9B0C:
+ and r2, lr, #0xff
+ cmp r12, r2
+ mvncc r0, #0x0
+ ldmccia sp!, {r3,pc}
+ movhi r0, #0x1
+ ldmhiia sp!, {r3,pc}
+ cmp r12, #0x0
+ bne _020E9AD8
+ mov r0, #0x0
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020E9B34: .word __lower_mapC
+ arm_func_end stricmp
+
+ arm_func_start strnicmp
+strnicmp: ; 0x020E9B38
+ ldr ip, _020E9B40 ; =stricmp
+ bx r12
+ .balign 4
+_020E9B40: .word stricmp
+ arm_func_end strnicmp
diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s
index 1962bdcc..9ae2274f 100644
--- a/arm9/asm/NNS_SND_sndarc_stream.s
+++ b/arm9/asm/NNS_SND_sndarc_stream.s
@@ -10,8 +10,8 @@ sPrepareThread: ; 0x021D2900
.global sFreeCommandList
sFreeCommandList: ; 0x021D2904
.space 0xC
- ; sStrmThread
- .global sStrmThread
+ ; sStrmThread
+ .global sStrmThread
sStrmThread: ; 0x021D2910
.space 0x4EC
diff --git a/arm9/asm/RTC_external.s b/arm9/asm/RTC_external.s
index 91605f14..f5124044 100644
--- a/arm9/asm/RTC_external.s
+++ b/arm9/asm/RTC_external.s
@@ -11,7 +11,7 @@ UNK_021D5534: ; 0x021D5534
UNK_021D5538: ; 0x021D5538
.space 0x24
- .text
+ .text
arm_func_start RtcWaitBusy
RtcWaitBusy: ; 0x020D5914
diff --git a/arm9/asm/RUNTIME_ARM_semihosted_console_io.s b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
new file mode 100644
index 00000000..7bd44bdb
--- /dev/null
+++ b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
@@ -0,0 +1,84 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start sys_writec
+sys_writec: ; 0x020EC5D0
+ str lr, [sp, #-0x4]!
+ mov r1, r0
+ mov r0, #0x3
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_readc
+sys_readc: ; 0x020EC5E4
+ str lr, [sp, #-0x4]!
+ mov r1, #0x0
+ mov r0, #0x7
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_exit
+sys_exit: ; 0x020EC5F8
+ mov r1, #0x0
+ mov r0, #0x18
+ swi 0x123456
+ mov pc, lr
+
+ arm_func_start __read_console
+__read_console: ; 0x020EC608
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r2
+ ldr r5, [r6, #0x0]
+ mov r7, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC650
+_020EC624:
+ bl sys_readc
+ and r1, r0, #0xff
+ cmp r1, #0xd
+ strb r0, [r7, r4]
+ cmpne r1, #0xa
+ addeq r0, r4, #0x1
+ streq r0, [r6, #0x0]
+ beq _020EC650
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC624
+_020EC650:
+ mov r0, #0x0
+ ldmia sp!, {r3-r7,pc}
+
+ arm_func_start __write_console
+__write_console: ; 0x020EC658
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r2, #0x0]
+ mov r6, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC684
+_020EC670:
+ add r0, r6, r4
+ bl sys_writec
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC670
+_020EC684:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start __close_console
+__close_console: ; 0x020EC68C
+ mov r0, #0x0
+ bx lr
+
+ .section .exceptix,4
+
+ .word __read_console
+ .short 81
+ .word 0x00300F00
+ .word __write_console
+ .short 53
+ .word 0x00200700 \ No newline at end of file
diff --git a/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
new file mode 100644
index 00000000..403e0812
--- /dev/null
+++ b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
@@ -0,0 +1,60 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __global_destructor_chain
+__global_destructor_chain: ; 0x021D74C8
+ .space 0x18
+
+ .text
+
+ .extern __sinit__
+ arm_func_start __call_static_initializers
+__call_static_initializers: ; 0x020EC694
+ stmdb sp!, {r4,lr}
+ ldr r4, _020EC6BC ; =__sinit__
+ b _020EC6A8
+_020EC6A0:
+ blx r0
+ add r4, r4, #0x4
+_020EC6A8:
+ cmp r4, #0x0
+ ldrne r0, [r4, #0x0]
+ cmpne r0, #0x0
+ bne _020EC6A0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020EC6BC: .word __sinit__
+
+ arm_func_start __destroy_global_chain
+__destroy_global_chain: ; 0x020EC6C0
+ stmdb sp!, {r3-r5,lr}
+ ldr r4, _020EC700 ; =__global_destructor_chain
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020EC6D4: ; 0x020EC6D4
+ mvn r5, #0x0
+_020EC6D8:
+ ldr r0, [r2, #0x0]
+ mov r1, r5
+ str r0, [r4, #0x0]
+ ldr r0, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ bne _020EC6D8
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020EC700: .word __global_destructor_chain
+
+ .section .exceptix,4
+
+ .word __call_static_initializers
+ .short 45
+ .word 0x00100100
+ .word __destroy_global_chain
+ .short 69
+ .word 0x00200300
diff --git a/arm9/asm/RUNTIME_NITRO_eabi_init.s b/arm9/asm/RUNTIME_NITRO_eabi_init.s
new file mode 100644
index 00000000..1bd26818
--- /dev/null
+++ b/arm9/asm/RUNTIME_NITRO_eabi_init.s
@@ -0,0 +1,17 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ExitProcess
+_ExitProcess: ; 0x020EC704
+ ldr ip, _020EC70C ; =sys_exit
+ bx r12
+ .balign 4
+_020EC70C: .word sys_exit
+
+ .section .exceptix,4
+
+ .word _ExitProcess
+ .short 13
+ .word 0x00000000
diff --git a/arm9/asm/RUNTIME_d_add.s b/arm9/asm/RUNTIME_d_add.s
new file mode 100644
index 00000000..3d2e24b1
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_add.s
@@ -0,0 +1,231 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __dsub_start
+
+ .text
+
+ arm_func_start _dadd
+_dadd:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi __dsub_start
+ .global __dadd_start
+__dadd_start:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020E9B70
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020E9B70:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020E9C6C
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020E9CB4
+_020E9BA8:
+ subs r4, r12, r4
+ beq _020E9C00
+ cmp r4, #0x20
+ ble _020E9BE4
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ adds r0, r0, r2
+ adcs r1, r1, #0x0
+ blo _020E9C28
+ b _020E9C0C
+_020E9BE4:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+_020E9C00:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9C28
+_020E9C0C:
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ orr r0, r4, r0, rrx
+ mov lr, r12, lsl #0x15
+ cmn lr, #0x200000
+ beq _020E9E38
+_020E9C28:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9C6C:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020E9CD8
+ orrs r4, r0, r1, lsl #0x1
+ bne _020E9E14
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020E9E00
+ cmn r4, #0x200000
+ bne _020E9E00
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9E00
+ b _020E9E14
+_020E9CB4:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020E9D44
+ orrs r4, r2, r3, lsl #0x1
+ bne _020E9E14
+ b _020E9E00
+_020E9CD8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9D18
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020E9CB4
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020E9BA8
+_020E9D18:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020E9DCC
+ cmn r4, #0x200000
+ bne _020E9DCC
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9E00
+ b _020E9E18
+_020E9D44:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9DDC
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ cmp r1, #0x0
+ bpl _020E9D68
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020E9BA8
+_020E9D68:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9D88
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ mov r0, r0, rrx
+ orr r0, r0, r4
+_020E9D88:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020E9DCC:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9DDC:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E00:
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E14:
+ mov r1, r3
+_020E9E18:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E28: ; 0x020E9E28
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E38:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020E9E58: .word 0x7FF00000
+ arm_func_end _dadd
diff --git a/arm9/asm/RUNTIME_d_div.s b/arm9/asm/RUNTIME_d_div.s
new file mode 100644
index 00000000..0259c528
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_div.s
@@ -0,0 +1,333 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _drdiv
+_drdiv: ; 0x020EC070
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+ arm_func_start _ddiv
+_ddiv: ; 0x020EC088
+ stmdb sp!, {r4-r6,lr}
+ ldr lr, _020EC5C8 ; =0x00000FFE
+ eor r4, r1, r3
+ ands r12, lr, r1, lsr #0x13
+ cmpne r12, lr
+ beq _020EC434
+ bic r1, r1, lr, lsl #0x14
+ orr r1, r1, #0x100000
+ add r12, r12, r4, lsr #0x1f
+_020EC0AC:
+ ands r4, lr, r3, lsr #0x13
+ cmpne r4, lr
+ beq _020EC4CC
+ bic r3, r3, lr, lsl #0x14
+ orr r3, r3, #0x100000
+_020EC0C0:
+ sub r12, r12, r4
+ cmp r1, r3
+ cmpeq r0, r2
+ bhs _020EC0DC
+ adds r0, r0, r0
+ adc r1, r1, r1
+ sub r12, r12, #0x2
+_020EC0DC:
+ sub r4, pc, #0x24 ; _020EC1C0 - #0x100
+ ldrb lr, [r4, r3, lsr #0xc]
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ mov r4, #0x20000000
+ mla r5, lr, r3, r4
+ mov r6, r3, lsl #0xa
+ mov r5, r5, lsr #0x7
+ mul lr, r5, lr
+ orr r6, r6, r2, lsr #0x16
+ mov lr, lr, lsr #0xd
+ mul r5, lr, r6
+ mov r6, r1, lsl #0xa
+ orr r6, r6, r0, lsr #0x16
+ mov r5, r5, lsr #0x10
+ mul r5, lr, r5
+ mov lr, lr, lsl #0xe
+ add lr, lr, r5, lsr #0x10
+ umull r5, r6, lr, r6
+ umull r4, r5, r6, r2
+ mla r5, r3, r6, r5
+ mov r4, r4, lsr #0x1a
+ orr r4, r4, r5, lsl #0x6
+ add r4, r4, r0, lsl #0x2
+ umull lr, r5, r4, lr
+ mov r4, #0x0
+ adds r5, r5, r6, lsl #0x18
+ adc r4, r4, r6, lsr #0x8
+ cmp r12, #0x800
+ bge _020EC2C0
+ add r12, r12, #0x7f0
+ adds r12, r12, #0xc
+ bmi _020EC2D8
+ orr r1, r4, r12, lsl #0x1f
+ bic r12, r12, #0x1
+ add r1, r1, r12, lsl #0x13
+ tst lr, #0x80000000
+ bne _020EC1B0
+ rsbs r2, r2, #0x0
+ mov r4, r4, lsl #0x1
+ add r4, r4, r5, lsr #0x1f
+ mul lr, r2, r4
+ mov r6, #0x0
+ mov r4, r5, lsl #0x1
+ orr r4, r4, #0x1
+ umlal r6, lr, r4, r2
+ rsc r3, r3, #0x0
+ mla lr, r4, r3, lr
+ cmp lr, r0, lsl #0x15
+ bmi _020EC1B0
+ mov r0, r5
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1B0:
+ adds r0, r5, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1C0: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
+ .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
+ .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
+ .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
+ .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
+ .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
+ .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
+ .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
+ .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
+ .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
+ .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
+ .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
+ .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
+ .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
+ .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
+ .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EC2C0:
+ movs r1, r12, lsl #0x1f
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf00000
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC2D8:
+ mvn r6, r12, asr #0x1
+ cmp r6, #0x34
+ bgt _020EC424
+ beq _020EC400
+ cmp r6, #0x14
+ bge _020EC320
+ rsb r6, r6, #0x13
+ mov lr, r0, lsl r6
+ rsb r6, r6, #0x14
+ mov r0, r5, lsr r6
+ rsb r6, r6, #0x20
+ orr r0, r0, r4, lsl r6
+ rsb r6, r6, #0x20
+ mov r4, r4, lsr r6
+ orr r1, r4, r12, lsl #0x1f
+ mov r12, lr
+ mov lr, #0x0
+ b _020EC350
+_020EC320:
+ rsb r6, r6, #0x33
+ mov lr, r1, lsl r6
+ mov r1, r12, lsl #0x1f
+ rsb r6, r6, #0x20
+ orr r12, lr, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov lr, r0, lsl r6
+ mov r5, r5, lsr #0x15
+ orr r5, r5, r4, lsl #0xb
+ rsb r6, r6, #0x1f
+ mov r0, r5, lsr r6
+ mov r4, #0x0
+_020EC350:
+ rsbs r2, r2, #0x0
+ mul r4, r2, r4
+ mov r5, #0x0
+ umlal r5, r4, r2, r0
+ rsc r3, r3, #0x0
+ mla r4, r0, r3, r4
+ cmp r4, r12
+ cmpeq r5, lr
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ adds r5, r5, r2
+ adc r4, r4, r3
+ cmp r4, r12
+ bmi _020EC3F4
+ bne _020EC398
+ cmp r5, lr
+ beq _020EC3E4
+ blo _020EC3F4
+_020EC398:
+ subs r5, r5, r2
+ sbc r4, r4, r3
+_020EC3A0:
+ adds r5, r5, r5
+ adc r4, r4, r4
+ adds r5, r5, r2
+ adc r4, r4, r3
+ adds lr, lr, lr
+ adc r12, r12, r12
+ cmp r4, r12
+ bmi _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ cmp r5, lr
+ blo _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ tst r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EC3E4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC3F4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ b _020EC3A0
+_020EC400:
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ cmp r1, r3
+ cmpeq r0, r2
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ movne r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC424:
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC434:
+ orrs r5, r0, r1, lsl #0x1
+ beq _020EC558
+ cmp r12, lr
+ beq _020EC49C
+ movs r1, r1, lsl #0xc
+ beq _020EC478
+ clz r5, r1
+ movs r1, r1, lsl r5
+ sub r12, r12, r5
+ add r5, r12, #0x1f
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r5
+ rsb r5, r5, #0x20
+ mov r0, r0, lsl r5
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC478:
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC49C:
+ orrs r5, r0, r1, lsl #0xc
+ bne _020EC580
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ bhs _020EC4C0
+ and r5, r3, #0x80000000
+ eor r1, r5, r1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC4C0:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ b _020EC5B8
+_020EC4CC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC544
+ cmp r4, lr
+ beq _020EC52C
+ movs r3, r3, lsl #0xc
+ beq _020EC50C
+ clz r5, r3
+ movs r3, r3, lsl r5
+ sub r4, r4, r5
+ add r5, r4, #0x1f
+ mov r3, r3, lsr #0xb
+ orr r3, r3, r2, lsr r5
+ rsb r5, r5, #0x20
+ mov r2, r2, lsl r5
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC50C:
+ mvn r4, #0x13
+ clz r5, r2
+ movs r2, r2, lsl r5
+ sub r4, r4, r5
+ mov r3, r2, lsr #0xb
+ mov r2, r2, lsl #0x15
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC52C:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC544:
+ mov r1, r12, lsl #0x1f
+ orr r1, r1, lr, lsl #0x13
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC558:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ eor r1, r1, r3
+ and r1, r1, #0x80000000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC580:
+ tst r1, #0x80000
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5A0:
+ tst r3, #0x80000
+ beq _020EC5B8
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5B8:
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf80000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EC5C8: .word 0x00000FFE
diff --git a/arm9/asm/RUNTIME_d_dtof.s b/arm9/asm/RUNTIME_d_dtof.s
new file mode 100644
index 00000000..b4e98ca9
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtof.s
@@ -0,0 +1,85 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _d2f
+_d2f:
+ and r2, r1, #0x80000000
+ mov r12, r1, lsr #0x14
+ bics r12, r12, #0x800
+ beq _020E9ED4
+ mov r3, r12, lsl #0x15
+ cmn r3, #0x200000
+ bhs _020E9EB8
+ subs r12, r12, #0x380
+ bls _020E9EE4
+ cmp r12, #0xff
+ bge _020E9F54
+ mov r1, r1, lsl #0xc
+ orr r3, r2, r1, lsr #0x9
+ orr r3, r3, r0, lsr #0x1d
+ movs r1, r0, lsl #0x3
+ orr r0, r3, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9EB8:
+ orrs r3, r0, r1, lsl #0xc
+ bne _020E9ECC
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020E9ECC:
+ mvn r0, #0x80000000
+ bx lr
+_020E9ED4:
+ orrs r3, r0, r1, lsl #0xc
+ bne __f_underflow
+ .global __f_result_zero
+__f_result_zero:
+ mov r0, r2
+ bx lr
+_020E9EE4:
+ cmn r12, #0x17
+ beq _020E9F38
+ bmi __f_underflow
+ mov r1, r1, lsl #0xb
+ orr r1, r1, #0x80000000
+ mov r3, r1, lsr #0x8
+ orr r3, r3, r0, lsr #0x1d
+ rsb r12, r12, #0x1
+ movs r1, r0, lsl #0x3
+ orr r0, r2, r3, lsr r12
+ rsb r12, r12, #0x20
+ mov r3, r3, lsl r12
+ orrne r3, r3, #0x1
+ movs r1, r3
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9F38:
+ orr r0, r0, r1, lsl #0xc
+ .global __f_very_tiny_result
+__f_very_tiny_result:
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+ .global __f_underflow
+__f_underflow:
+ mov r0, r2
+ bx lr
+_020E9F54:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+ arm_func_end _d2f
diff --git a/arm9/asm/RUNTIME_d_dtoi.s b/arm9/asm/RUNTIME_d_dtoi.s
new file mode 100644
index 00000000..825c11cd
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtoi.s
@@ -0,0 +1,30 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dfix
+_dfix: ; 0x020E9F60
+ bic r3, r1, #0x80000000
+ ldr r2, _020E9FA8 ; =0x0000041E
+ subs r2, r2, r3, lsr #0x14
+ ble _020E9F9C
+ cmp r2, #0x20
+ bge _020E9F94
+ mov r3, r1, lsl #0xb
+ orr r3, r3, #0x80000000
+ orr r3, r3, r0, lsr #0x15
+ cmp r1, #0x0
+ mov r0, r3, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020E9F94:
+ mov r0, #0x0
+ bx lr
+_020E9F9C:
+ mvn r0, r1, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
+ .balign 4
+_020E9FA8: .word 0x0000041E
+ arm_func_end _dfix
diff --git a/arm9/asm/RUNTIME_d_dtoull.s b/arm9/asm/RUNTIME_d_dtoull.s
new file mode 100644
index 00000000..c9ef3f7b
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtoull.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_ufrom_d
+_ll_ufrom_d: ; 0x020E9FAC
+ tst r1, #0x80000000
+ bne _020EA010
+ ldr r2, _020EA034 ; =0x0000043E
+ subs r2, r2, r1, lsr #0x14
+ blt _020EA028
+ cmp r2, #0x40
+ bge _020EA004
+ mov r12, r1, lsl #0xb
+ orr r12, r12, #0x80000000
+ orr r12, r12, r0, lsr #0x15
+ cmp r2, #0x20
+ ble _020E9FEC
+ sub r2, r2, #0x20
+ mov r1, #0x0
+ mov r0, r12, lsr r2
+ bx lr
+_020E9FEC:
+ mov r3, r0, lsl #0xb
+ mov r1, r12, lsr r2
+ mov r0, r3, lsr r2
+ rsb r2, r2, #0x20
+ orr r0, r0, r12, lsl r2
+ bx lr
+_020EA004:
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA010:
+ cmn r1, #0x100000
+ cmpeq r0, #0x0
+ bhi _020EA028
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA028:
+ mvn r1, #0x0
+ mvn r0, #0x0
+ bx lr
+ .balign 4
+_020EA034: .word 0x0000043E
+ arm_func_end _ll_ufrom_d
diff --git a/arm9/asm/RUNTIME_d_itod.s b/arm9/asm/RUNTIME_d_itod.s
new file mode 100644
index 00000000..5a9c241d
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_itod.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dflt
+_dflt: ; 0x020EA038
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ .global __d_itod_common
+__d_itod_common:
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ movs r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, r2, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+ arm_func_end _dflt
+
+ arm_func_start _dfltu
+_dfltu: ; 0x020EA078
+ cmp r0, #0x0
+ .global __d_utod_common
+__d_utod_common:
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ bmi _020EA09C
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EA09C:
+ mov r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+ arm_func_end _dfltu
diff --git a/arm9/asm/RUNTIME_d_mul.s b/arm9/asm/RUNTIME_d_mul.s
new file mode 100644
index 00000000..eb46c3ab
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_mul.s
@@ -0,0 +1,246 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dmul
+_dmul: ; 0x020EA0B4
+ stmdb sp!, {r4-r7,lr}
+ eor lr, r1, r3
+ and lr, lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ mov r1, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r6, r12, lsl #0x15
+ cmnne r6, #0x200000
+ beq _020EA1BC
+ orr r1, r1, #0x80000000
+ bic r12, r12, #0x800
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+_020EA108:
+ add r12, r4, r12
+ umull r5, r4, r0, r2
+ umull r7, r6, r0, r3
+ adds r4, r7, r4
+ adc r6, r6, #0x0
+ umull r7, r0, r1, r2
+ adds r4, r7, r4
+ adcs r0, r0, r6
+ umull r7, r2, r1, r3
+ adc r1, r2, #0x0
+ adds r0, r0, r7
+ adc r1, r1, #0x0
+ orrs r4, r4, r5
+ orrne r0, r0, #0x1
+ cmp r1, #0x0
+ blt _020EA154
+ sub r12, r12, #0x1
+ adds r0, r0, r0
+ adc r1, r1, r1
+_020EA154:
+ add r12, r12, #0x2
+ subs r12, r12, #0x400
+ bmi _020EA2F0
+ beq _020EA2F0
+ mov r6, r12, lsl #0x14
+ cmn r6, #0x100000
+ bmi _020EA3F0
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA1BC:
+ bics r12, r12, #0x800
+ beq _020EA218
+ orrs r6, r0, r1, lsl #0x1
+ bne _020EA3A4
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA1F8
+ cmn r5, #0x200000
+ bne _020EA390
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA390
+ b _020EA3A4
+_020EA1F8:
+ orrs r5, r3, r2
+ beq _020EA3B8
+ b _020EA390
+_020EA204:
+ bics r4, r4, #0x800
+ beq _020EA2AC
+ orrs r6, r2, r3, lsl #0x1
+ bne _020EA3A4
+ b _020EA390
+_020EA218:
+ orrs r6, r0, r1, lsl #0x1
+ beq _020EA280
+ mov r12, #0x1
+ cmp r1, #0x0
+ bne _020EA23C
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA258
+_020EA23C:
+ clz r6, r1
+ movs r1, r1, lsl r6
+ rsb r6, r6, #0x20
+ orr r1, r1, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov r0, r0, lsl r6
+ sub r12, r12, r6
+_020EA258:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+ b _020EA108
+_020EA280:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA404
+ cmn r5, #0x200000
+ bne _020EA404
+ orrs r6, r2, r3, lsl #0x1
+ beq _020EA3B8
+ b _020EA3A4
+_020EA2AC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA404
+ mov r4, #0x1
+ cmp r3, #0x0
+ bne _020EA2D0
+ sub r4, r4, #0x20
+ movs r3, r2
+ mov r2, #0x0
+ bmi _020EA108
+_020EA2D0:
+ clz r6, r3
+ movs r3, r3, lsl r6
+ rsb r6, r6, #0x20
+ orr r3, r3, r2, lsr r6
+ rsb r6, r6, #0x20
+ mov r2, r2, lsl r6
+ sub r4, r4, r6
+ b _020EA108
+_020EA2F0:
+ cmn r12, #0x34
+ beq _020EA388
+ bmi _020EA3E0
+ mov r2, r1
+ mov r3, r0
+ add r4, r12, #0x34
+ cmp r4, #0x20
+ movge r2, r3
+ movge r3, #0x0
+ subge r4, r4, #0x20
+ rsb r5, r4, #0x20
+ mov r2, r2, lsl r4
+ orr r2, r2, r3, lsr r5
+ movs r3, r3, lsl r4
+ orrne r2, r2, #0x1
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ cmp r2, #0x0
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA388:
+ orr r0, r0, r1, lsl #0x1
+ b _020EA3C8
+_020EA390:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3A4:
+ mov r1, r3
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3B8:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3C8:
+ movs r2, r0
+ mov r1, lr
+ mov r0, #0x0
+ addne r0, r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3E0:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3F0:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA404:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020EA414: .word 0x7FF00000
+ arm_func_end _dmul
diff --git a/arm9/asm/RUNTIME_d_sqrt.s b/arm9/asm/RUNTIME_d_sqrt.s
new file mode 100644
index 00000000..8cc562a7
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_sqrt.s
@@ -0,0 +1,123 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dsqrt
+_dsqrt: ; 0x020EA418
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020EA5A8 ; =0x7FF00000
+ cmp r1, r2
+ bhs _020EA564
+ movs r12, r1, lsr #0x14
+ beq _020EA510
+ bic r1, r1, r2
+ orr r1, r1, #0x100000
+_020EA438:
+ movs r12, r12, asr #0x1
+ bhs _020EA44C
+ sub r12, r12, #0x1
+ movs r0, r0, lsl #0x1
+ adc r1, r1, r1
+_020EA44C:
+ movs r3, r0, lsl #0x1
+ adc r1, r1, r1
+ mov r2, #0x0
+ mov r4, #0x0
+ mov lr, #0x200000
+_020EA460:
+ add r6, r4, lr
+ cmp r6, r1
+ addle r4, r6, lr
+ suble r1, r1, r6
+ addle r2, r2, lr
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA460
+ mov r0, #0x0
+ mov r5, #0x0
+ cmp r1, r4
+ cmpeq r3, #0x80000000
+ blo _020EA4A8
+ subs r3, r3, #0x80000000
+ sbc r1, r1, r4
+ add r4, r4, #0x1
+ mov r0, #0x80000000
+_020EA4A8:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ mov lr, #0x40000000
+_020EA4B4:
+ add r6, r5, lr
+ cmp r4, r1
+ cmpeq r6, r3
+ bhi _020EA4D4
+ add r5, r6, lr
+ subs r3, r3, r6
+ sbc r1, r1, r4
+ add r0, r0, lr
+_020EA4D4:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA4B4
+ orrs r1, r1, r3
+ biceq r0, r0, #0x1
+ movs r1, r2, lsr #0x1
+ movs r0, r0, rrx
+ adcs r0, r0, #0x0
+ adc r1, r1, #0x0
+ add r1, r1, #0x20000000
+ sub r1, r1, #0x100000
+ add r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EA510:
+ cmp r1, #0x0
+ bne _020EA540
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ b _020EA438
+_020EA540:
+ clz r2, r1
+ movs r1, r1, lsl r2
+ rsb r2, r2, #0x2b
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r2
+ rsb r2, r2, #0x20
+ mov r0, r0, lsl r2
+ rsb r12, r2, #0x1
+ b _020EA438
+_020EA564:
+ tst r1, #0x80000000
+ beq _020EA580
+ bics r3, r1, #0x80000000
+ cmpeq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ b _020EA58C
+_020EA580:
+ orrs r2, r0, r1, lsl #0xc
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EA58C:
+ ldr r2, _020EA5AC ; =0x7FF80000
+ orr r1, r1, r2
+ ldr r3, _020EA5B0 ; =errno
+ mov r4, #0x21
+ str r4, [r3, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EA5A8: .word 0x7FF00000
+_020EA5AC: .word 0x7FF80000
+_020EA5B0: .word errno
+ arm_func_end _dsqrt
diff --git a/arm9/asm/RUNTIME_d_sub.s b/arm9/asm/RUNTIME_d_sub.s
new file mode 100644
index 00000000..c9388ffa
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_sub.s
@@ -0,0 +1,283 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __dadd_start
+
+ .text
+
+ arm_func_start _drsb
+_drsb: ; 0x020EA5B4
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+ arm_func_start _dsub
+_dsub:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi __dadd_start
+ .global __dsub_start
+__dsub_start:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020EA5FC
+ eor lr, lr, #0x80000000
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020EA5FC:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020EA800
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020EA848
+_020EA634:
+ subs r4, r12, r4
+ beq _020EA6DC
+ cmp r4, #0x20
+ ble _020EA670
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, #0x0
+ bmi _020EA698
+ b _020EA788
+_020EA670:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ bpl _020EA788
+_020EA698:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA6DC:
+ subs r0, r0, r2
+ sbc r1, r1, r3
+ orrs lr, r1, r0
+ beq _020EA96C
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bmi _020EA764
+ bne _020EA714
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA730
+_020EA714:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA730:
+ cmp r12, #0x0
+ bgt _020EA76C
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA764:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+_020EA76C:
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA788:
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bne _020EA7AC
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA7C8
+_020EA7AC:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA7C8:
+ cmp r12, #0x0
+ orrgt r12, r12, lr, lsr #0x14
+ bgt _020EA698
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA800:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020EA86C
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA948
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020EA934
+ cmn r4, #0x200000
+ bne _020EA934
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA95C
+ b _020EA948
+_020EA848:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020EA8E4
+ orrs r4, r2, r3, lsl #0x1
+ bne _020EA948
+ b _020EA934
+_020EA86C:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA8AC
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020EA848
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020EA634
+_020EA8AC:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020EA8D8
+ cmn r4, #0x200000
+ bne _020EA900
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA94C
+ b _020EA934
+_020EA8D8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA96C
+ b _020EA900
+_020EA8E4:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA910
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020EA634
+_020EA900:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA910:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA934:
+ ldr r1, _020EA97C ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA948:
+ mov r1, r3
+_020EA94C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA95C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA96C:
+ mov r1, #0x0
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020EA97C: .word 0x7FF00000
diff --git a/arm9/asm/RUNTIME_f_add.s b/arm9/asm/RUNTIME_f_add.s
new file mode 100644
index 00000000..f54dfb58
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_add.s
@@ -0,0 +1,165 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __fsub_start
+
+ .text
+
+ arm_func_start _fadd
+_fadd: ; 0x020EA980
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi __fsub_start
+ .global __fadd_start
+__fadd_start:
+ subs r12, r0, r1
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EAA20
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EAA60
+_020EA9C0:
+ subs r12, r3, r12
+ beq _020EA9D8
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+_020EA9D8:
+ adds r0, r0, r1
+ blo _020EA9F8
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r3, r3, #0x1
+ and r2, r3, #0xff
+ cmp r2, #0xff
+ beq _020EAB68
+_020EA9F8:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAA20:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EAA84
+ movs r0, r0, lsl #0x1
+ bne _020EAB94
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EAB88
+ cmp r12, #0xff
+ blt _020EAB88
+ cmp r1, #0x0
+ beq _020EAB88
+ b _020EAB94
+_020EAA60:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EAAE0
+_020EAA78:
+ movs r1, r1, lsl #0x1
+ bne _020EAB94
+ b _020EAB88
+_020EAA84:
+ movs r0, r0, lsl #0x1
+ beq _020EAABC
+ mov r3, #0x1
+ mov r0, r0, lsr #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EAAE0
+ cmp r12, #0xff
+ beq _020EAA78
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EA9C0
+_020EAABC:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r3, r3, #0xff
+ beq _020EAB48
+ cmp r3, #0xff
+ blt _020EAB48
+ cmp r0, #0x0
+ beq _020EAB88
+ b _020EAB80
+_020EAAE0:
+ movs r1, r1, lsl #0x1
+ beq _020EAB50
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ cmp r0, #0x0
+ bmi _020EA9C0
+ adds r0, r0, r1
+ blo _020EAB14
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r12, r12, #0x1
+_020EAB14:
+ cmp r0, #0x0
+ subge r12, r12, #0x1
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAB48:
+ mov r0, r1
+ bx lr
+_020EAB50:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EAB68:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB80:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB88:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB94:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB9C: ; 0x020EAB9C
+ mvn r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_cmp.s b/arm9/asm/RUNTIME_f_cmp.s
new file mode 100644
index 00000000..696d0af1
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_cmp.s
@@ -0,0 +1,376 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dgr
+_dgr: ; 0x020EABA4
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAC18
+ cmn r12, r3, lsl #0x1
+ bhs _020EAC2C
+_020EABB8:
+ orrs r12, r3, r1
+ bmi _020EABE8
+ cmp r1, r3
+ cmpeq r0, r2
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EABD4:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EABE8:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EAC18:
+ bne _020EABD4
+ cmp r0, #0x0
+ bhi _020EABD4
+ cmn r12, r3, lsl #0x1
+ blo _020EABB8
+_020EAC2C:
+ bne _020EABD4
+ cmp r2, #0x0
+ bhi _020EABD4
+ b _020EABB8
+
+ arm_func_start _dleq
+_dleq: ; 0x020EAC3C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EACBC
+ cmn r12, r3, lsl #0x1
+ bhs _020EACD0
+_020EAC50:
+ orrs r12, r3, r1
+ bmi _020EAC84
+ cmp r1, r3
+ cmpeq r0, r2
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EAC6C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAC84:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bne _020EACA8
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EACA8:
+ cmp r3, r1
+ cmpeq r2, r0
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EACBC:
+ bne _020EAC6C
+ cmp r0, #0x0
+ bhi _020EAC6C
+ cmn r12, r3, lsl #0x1
+ blo _020EAC50
+_020EACD0:
+ bne _020EAC6C
+ cmp r2, #0x0
+ bhi _020EAC6C
+ b _020EAC50
+
+ arm_func_start _dls
+_dls: ; 0x020EACE0
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAD58
+ cmn r12, r3, lsl #0x1
+ bhs _020EAD6C
+_020EACF4:
+ orrs r12, r3, r1
+ bmi _020EAD24
+ cmp r1, r3
+ cmpeq r0, r2
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD10:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAD24:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bne _020EAD44
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EAD44:
+ cmp r3, r1
+ cmpeq r2, r0
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD58:
+ bne _020EAD10
+ cmp r0, #0x0
+ bhi _020EAD10
+ cmn r12, r3, lsl #0x1
+ blo _020EACF4
+_020EAD6C:
+ bne _020EAD10
+ cmp r2, #0x0
+ bhi _020EAD10
+ b _020EACF4
+
+ arm_func_start _deq
+_deq: ; 0x020EAD7C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EADE4
+ cmn r12, r3, lsl #0x1
+ bhs _020EADF8
+_020EAD90:
+ orrs r12, r3, r1
+ bmi _020EADC0
+ cmp r1, r3
+ cmpeq r0, r2
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADAC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EADC0:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADE4:
+ bne _020EADAC
+ cmp r0, #0x0
+ bhi _020EADAC
+ cmn r12, r3, lsl #0x1
+ blo _020EAD90
+_020EADF8:
+ bne _020EADAC
+ cmp r2, #0x0
+ bhi _020EADAC
+ b _020EAD90
+
+ arm_func_start _dneq
+_dneq: ; 0x020EAE08
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAE70
+ cmn r12, r3, lsl #0x1
+ bhs _020EAE84
+_020EAE1C:
+ orrs r12, r3, r1
+ bmi _020EAE4C
+ cmp r1, r3
+ cmpeq r0, r2
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE38:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAE4C:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE70:
+ bne _020EAE38
+ cmp r0, #0x0
+ bhi _020EAE38
+ cmn r12, r3, lsl #0x1
+ blo _020EAE1C
+_020EAE84:
+ bne _020EAE38
+ cmp r2, #0x0
+ bhi _020EAE38
+ b _020EAE1C
+
+ arm_func_start _fgeq
+_fgeq: ; 0x020EAE94
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAEDC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movge r0, #0x1
+ movlt r0, #0x0
+ mrs r12, cpsr
+ biclt r12, r12, #0x20000000
+ orrge r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAEDC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fgr
+_fgr: ; 0x020EAEF0
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF38
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movgt r0, #0x1
+ movle r0, #0x0
+ mrs r12, cpsr
+ bicle r12, r12, #0x20000000
+ orrgt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF38:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fleq
+_fleq: ; 0x020EAF4C
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF9C
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movle r0, #0x1
+ movgt r0, #0x0
+ mrs r12, cpsr
+ orrgt r12, r12, #0x20000000
+ bicgt r12, r12, #0x40000000
+ bicle r12, r12, #0x20000000
+ orrle r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF9C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fls
+_fls: ; 0x020EAFB4
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAFFC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+ mrs r12, cpsr
+ orrge r12, r12, #0x20000000
+ biclt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAFFC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _feq
+_feq: ; 0x020EB010
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ blo _020EB064
+ cmp r3, r1, lsl #0x1
+ blo _020EB064
+ orr r3, r0, r1
+ movs r3, r3, lsl #0x1
+ moveq r0, #0x0
+ bne _020EB044
+ mrs r12, cpsr
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB044:
+ cmp r0, r1
+ movne r0, #0x1
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bicne r12, r12, #0x40000000
+ orreq r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB064:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_div.s b/arm9/asm/RUNTIME_f_div.s
new file mode 100644
index 00000000..4f7c6d15
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_div.s
@@ -0,0 +1,225 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _frdiv
+_frdiv: ; 0x020EB078
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fdiv
+_fdiv: ; 0x020EB084
+ stmdb sp!, {lr}
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ cmpne r3, #0xff
+ beq _020EB258
+ ands r12, r12, r1, lsr #0x17
+ cmpne r12, #0xff
+ beq _020EB294
+ orr r1, r1, #0x800000
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ bic lr, r1, #0xff000000
+_020EB0B4:
+ cmp r2, lr
+ movcc r2, r2, lsl #0x1
+ subcc r3, r3, #0x1
+ teq r0, r1
+ sub r0, pc, #0x94 ; _020EB138 - #0x100
+ ldrb r1, [r0, lr, lsr #0xf]
+ rsb lr, lr, #0x0
+ mov r0, lr, asr #0x1
+ mul r0, r1, r0
+ add r0, r0, #0x80000000
+ mov r0, r0, lsr #0x6
+ mul r0, r1, r0
+ mov r0, r0, lsr #0xe
+ mul r1, lr, r0
+ sub r12, r3, r12
+ mov r1, r1, lsr #0xc
+ mul r1, r0, r1
+ mov r0, r0, lsl #0xe
+ add r0, r0, r1, lsr #0xf
+ umull r1, r0, r2, r0
+ mov r3, r0
+ orrmi r0, r0, #0x80000000
+ adds r12, r12, #0x7e
+ bmi _020EB35C
+ cmp r12, #0xfe
+ bge _020EB410
+ add r0, r0, r12, lsl #0x17
+ mov r12, r1, lsr #0x1c
+ cmp r12, #0x7
+ beq _020EB238
+ add r0, r0, r1, lsr #0x1f
+ ldmia sp!, {lr}
+ bx lr
+_020EB138: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
+ .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
+ .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
+ .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
+ .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
+ .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
+ .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
+ .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
+ .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
+ .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
+ .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
+ .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
+ .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
+ .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
+ .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
+ .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
+ .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EB238:
+ mov r1, r3, lsl #0x1
+ add r1, r1, #0x1
+ rsb lr, lr, #0x0
+ mul r1, lr, r1
+ cmp r1, r2, lsl #0x18
+ addmi r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB258:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r3, #0x0
+ beq _020EB2B0
+ movs r0, r0, lsl #0x9
+ bne _020EB3F8
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB3E8
+ cmp r12, #0xff
+ blt _020EB3E8
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB3E0
+_020EB294:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r12, #0x0
+ beq _020EB314
+_020EB2A4:
+ movs r1, r1, lsl #0x9
+ bne _020EB3E0
+ b _020EB430
+_020EB2B0:
+ movs r2, r0, lsl #0x9
+ beq _020EB2E4
+ clz r3, r2
+ movs r2, r2, lsl r3
+ rsb r3, r3, #0x0
+ mov r2, r2, lsr #0x8
+ ands r12, r12, r1, lsr #0x17
+ beq _020EB33C
+ cmp r12, #0xff
+ beq _020EB2A4
+ orr r1, r1, #0x800000
+ bic lr, r1, #0xff000000
+ b _020EB0B4
+_020EB2E4:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB308
+ cmp r12, #0xff
+ blt _020EB430
+ cmp r1, #0x0
+ beq _020EB430
+ b _020EB3E0
+_020EB308:
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB430
+_020EB314:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ b _020EB0B4
+_020EB33C:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ b _020EB0B4
+_020EB35C:
+ and r0, r0, #0x80000000
+ cmn r12, #0x18
+ beq _020EB3D0
+ bmi _020EB428
+ add r1, r12, #0x17
+ mov r2, r2, lsl r1
+ rsb r12, r12, #0x0
+ mov r3, r3, lsr r12
+ orr r0, r0, r3
+ rsb lr, lr, #0x0
+ mul r1, lr, r3
+ cmp r1, r2
+ ldmeqia sp!, {lr}
+ bxeq lr
+ add r1, r1, lr
+ cmp r1, r2
+ beq _020EB3C4
+ addmi r0, r0, #0x1
+ subpl r1, r1, lr
+ add r1, lr, r1, lsl #0x1
+ cmp r1, r2, lsl #0x1
+ and r3, r0, #0x1
+ addmi r0, r0, #0x1
+ addeq r0, r0, r3
+ ldmia sp!, {lr}
+ bx lr
+_020EB3C4:
+ add r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3D0:
+ cmn r2, lr
+ addne r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3E0:
+ mov r0, r1
+ b _020EB3F8
+_020EB3E8:
+ mov r0, #0xff000000
+ orr r0, lr, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3F8:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB404:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB410:
+ tst r0, #0x80000000
+ mov r0, #0xff000000
+ movne r0, r0, asr #0x1
+ moveq r0, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB428:
+ ldmia sp!, {lr}
+ bx lr
+_020EB430:
+ mov r0, lr
+ ldmia sp!, {lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_ftod.s b/arm9/asm/RUNTIME_f_ftod.s
new file mode 100644
index 00000000..fe3a7224
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftod.s
@@ -0,0 +1,46 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _f2d
+_f2d:
+ and r2, r0, #0x80000000
+ mov r12, r0, lsr #0x17
+ mov r3, r0, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB46C
+ cmp r12, #0xff
+ beq _020EB498
+_020EB458:
+ add r12, r12, #0x380
+ mov r0, r3, lsl #0x14
+ orr r1, r2, r3, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ bx lr
+_020EB46C:
+ cmp r3, #0x0
+ bne _020EB480
+ mov r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB480:
+ mov r3, r3, lsr #0x1
+ clz r12, r3
+ movs r3, r3, lsl r12
+ rsb r12, r12, #0x1
+ add r3, r3, r3
+ b _020EB458
+_020EB498:
+ cmp r3, #0x0
+ bhi _020EB4B0
+ ldr r1, _020EB4BC ; =0x7FF00000
+ orr r1, r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB4B0:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ bx lr
+ .balign 4
+_020EB4BC: .word 0x7FF00000
diff --git a/arm9/asm/RUNTIME_f_ftoi.s b/arm9/asm/RUNTIME_f_ftoi.s
new file mode 100644
index 00000000..d7503ede
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftoi.s
@@ -0,0 +1,21 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ffix
+_ffix: ; 0x020EB4C0
+ bic r1, r0, #0x80000000
+ mov r2, #0x9e
+ subs r2, r2, r1, lsr #0x17
+ ble _020EB4E8
+ mov r1, r1, lsl #0x8
+ orr r1, r1, #0x80000000
+ cmp r0, #0x0
+ mov r0, r1, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020EB4E8:
+ mvn r0, r0, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_ftou.s b/arm9/asm/RUNTIME_f_ftou.s
new file mode 100644
index 00000000..74c7277f
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftou.s
@@ -0,0 +1,25 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ffixu
+_ffixu: ; 0x020EB4F4
+ tst r0, #0x80000000
+ bne _020EB518
+ mov r1, #0x9e
+ subs r1, r1, r0, lsr #0x17
+ blt _020EB52C
+ mov r2, r0, lsl #0x8
+ orr r0, r2, #0x80000000
+ mov r0, r0, lsr r1
+ bx lr
+_020EB518:
+ mov r2, #0xff000000
+ cmp r2, r0, lsl #0x1
+ movcs r0, #0x0
+ mvncc r0, #0x0
+ bx lr
+_020EB52C:
+ mvn r0, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_itof.s b/arm9/asm/RUNTIME_f_itof.s
new file mode 100644
index 00000000..370e7ea1
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_itof.s
@@ -0,0 +1,51 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fflt
+_fflt: ; 0x020EB534
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ .global __f_itof_common
+__f_itof_common:
+ bxeq lr
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x9e
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r3, r1, #0x7f
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+
+ arm_func_start _ffltu
+_ffltu: ; 0x020EB57C
+ cmp r0, #0x0
+ .global __f_utof_common
+__f_utof_common:
+ bxeq lr
+ mov r3, #0x9e
+ bmi _020EB598
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EB598:
+ ands r2, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r2, #0x80
+ bxeq lr
+ ands r1, r2, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_mul.s b/arm9/asm/RUNTIME_f_mul.s
new file mode 100644
index 00000000..ef48250f
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_mul.s
@@ -0,0 +1,147 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fmul
+_fmul: ; 0x020EB5C4
+ eor r2, r0, r1
+ and r2, r2, #0x80000000
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ mov r0, r0, lsl #0x8
+ cmpne r3, #0xff
+ beq _020EB640
+ orr r0, r0, #0x80000000
+ ands r12, r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ cmpne r12, #0xff
+ beq _020EB680
+ orr r1, r1, #0x80000000
+_020EB5F8:
+ add r12, r3, r12
+ umull r1, r3, r0, r1
+ movs r0, r3
+ addpl r0, r0, r0
+ subpl r12, r12, #0x1
+ subs r12, r12, #0x7f
+ bmi _020EB70C
+ cmp r12, #0xfe
+ bge _020EB778
+ ands r3, r0, #0xff
+ orr r0, r2, r0, lsr #0x8
+ add r0, r0, r12, lsl #0x17
+ tst r3, #0x80
+ bxeq lr
+ orrs r1, r1, r3, lsl #0x19
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB640:
+ cmp r3, #0x0
+ beq _020EB694
+ movs r0, r0, lsl #0x1
+ bne __f_result_x_NaN
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB674
+ cmp r12, #0xff
+ blt __f_result_INF
+ cmp r1, #0x0
+ beq __f_result_INF
+ b __f_result_x_NaN
+_020EB674:
+ cmp r1, #0x0
+ beq __f_result_invalid
+ b __f_result_INF
+_020EB680:
+ cmp r12, #0x0
+ beq _020EB6F0
+_020EB688:
+ movs r1, r1, lsl #0x1
+ bne __f_result_x_NaN
+ b __f_result_INF
+_020EB694:
+ movs r0, r0, lsl #0x1
+ beq _020EB6CC
+ mov r0, r0, lsr #0x1
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB6F0
+ cmp r12, #0xff
+ beq _020EB688
+ orr r1, r1, #0x80000000
+ b _020EB5F8
+_020EB6CC:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB79C
+ cmp r12, #0xff
+ blt _020EB79C
+ cmp r1, #0x0
+ beq __f_result_invalid
+ b __f_result_x_NaN
+_020EB6F0:
+ movs r1, r1, lsl #0x1
+ beq _020EB79C
+ mov r1, r1, lsr #0x1
+ clz r12, r1
+ movs r1, r1, lsl r12
+ rsb r12, r12, #0x1
+ b _020EB5F8
+_020EB70C:
+ cmn r12, #0x18
+ beq _020EB754
+ bmi _020EB794
+ cmp r1, #0x0
+ orrne r0, r0, #0x1
+ mov r3, r0
+ mov r0, r0, lsr #0x8
+ rsb r12, r12, #0x0
+ orr r0, r2, r0, lsr r12
+ rsb r12, r12, #0x18
+ movs r1, r3, lsl r12
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB754:
+ mov r0, r0, lsl #0x1
+ b _020EB784
+ .global __f_result_INF
+__f_result_INF:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+ .global __f_result_x_NaN
+__f_result_x_NaN:
+ mvn r0, #0x80000000
+ bx lr
+ .global __f_result_invalid
+__f_result_invalid:
+ mvn r0, #0x80000000
+ bx lr
+_020EB778:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EB784:
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+_020EB794:
+ mov r0, r2
+ bx lr
+_020EB79C:
+ mov r0, r2
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_sub.s b/arm9/asm/RUNTIME_f_sub.s
new file mode 100644
index 00000000..e3c6560e
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_sub.s
@@ -0,0 +1,195 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __fadd_start
+
+ .text
+
+ arm_func_start _frsb
+_frsb: ; 0x020EB7A4
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fsub
+_fsub: ; 0x020EB7B0
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi __fadd_start
+ .global __fsub_start
+__fsub_start:
+ subs r12, r0, r1
+ eorcc r12, r12, #0x80000000
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EB8D8
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EB918
+_020EB7F4:
+ subs r12, r3, r12
+ beq _020EB83C
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+ subs r0, r0, r1
+ bpl _020EB880
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB83C:
+ subs r0, r0, r1
+ beq _020EB9E4
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB870
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB870:
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB880:
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB8AC
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB8AC:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB8D8:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EB940
+ movs r0, r0, lsl #0x1
+ bne _020EBA18
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EBA0C
+ cmp r12, #0xff
+ blt _020EBA0C
+ cmp r1, #0x0
+ beq _020EBA20
+ b _020EBA18
+_020EB918:
+ cmp r12, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EB9A8
+_020EB930:
+ eor r2, r2, #0x80000000
+ movs r1, r1, lsl #0x1
+ bne _020EBA18
+ b _020EBA0C
+_020EB940:
+ movs r0, r0, lsl #0x1
+ beq _020EB978
+ mov r0, r0, lsr #0x1
+ mov r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB9A8
+ cmp r12, #0xff
+ beq _020EB930
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EB7F4
+_020EB978:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r2, r3, #0xff
+ beq _020EB99C
+ cmp r2, #0xff
+ blt _020EB9C4
+ cmp r0, #0x0
+ bne _020EBA04
+ b _020EBA0C
+_020EB99C:
+ cmp r0, #0x0
+ beq _020EB9E4
+ b _020EB9C4
+_020EB9A8:
+ movs r1, r1, lsl #0x1
+ beq _020EB9CC
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r12, r12, r2, lsr #0x17
+ orr r3, r3, r2, lsr #0x17
+ b _020EB7F4
+_020EB9C4:
+ mov r0, r1
+ bx lr
+_020EB9CC:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB9E4:
+ mov r0, #0x0
+ bx lr
+_020EB9EC: ; 0x020EB9EC
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EBA04:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA0C:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EBA18:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA20:
+ mvn r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_ieee_status.s b/arm9/asm/RUNTIME_ieee_status.s
new file mode 100644
index 00000000..652bb8e3
--- /dev/null
+++ b/arm9/asm/RUNTIME_ieee_status.s
@@ -0,0 +1,8 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fp_init
+_fp_init: ; 0x020EC5CC
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_div.s b/arm9/asm/RUNTIME_ll_div.s
new file mode 100644
index 00000000..9b53d21b
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_div.s
@@ -0,0 +1,167 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_mod
+_ll_mod: ; 0x020EBA28
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, r1
+ orr r4, r4, #0x1
+ b _020EBA48
+
+ arm_func_start _ll_sdiv
+_ll_sdiv: ; 0x020EBA38
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ eor r4, r1, r3
+ mov r4, r4, asr #0x1
+ mov r4, r4, lsl #0x1
+_020EBA48:
+ orrs r5, r3, r2
+ bne _020EBA58
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA58:
+ mov r5, r0, lsr #0x1f
+ add r5, r5, r1
+ mov r6, r2, lsr #0x1f
+ add r6, r6, r3
+ orrs r6, r5, r6
+ bne _020EBA8C
+ mov r1, r2
+ bl _s32_div_f
+ ands r4, r4, #0x1
+ movne r0, r1
+ mov r1, r0, asr #0x1f
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA8C:
+ cmp r1, #0x0
+ bge _020EBA9C
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+_020EBA9C:
+ cmp r3, #0x0
+ bge _020EBAAC
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+_020EBAAC:
+ orrs r5, r1, r0
+ beq _020EBBD0
+ mov r5, #0x0
+ mov r6, #0x1
+ cmp r3, #0x0
+ bmi _020EBAD8
+_020EBAC4:
+ add r5, r5, #0x1
+ adds r2, r2, r2
+ adcs r3, r3, r3
+ bpl _020EBAC4
+ add r6, r6, r5
+_020EBAD8:
+ cmp r1, #0x0
+ blt _020EBAF8
+_020EBAE0:
+ cmp r6, #0x1
+ beq _020EBAF8
+ sub r6, r6, #0x1
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ bpl _020EBAE0
+_020EBAF8:
+ mov r7, #0x0
+ mov r12, #0x0
+ mov r11, #0x0
+ b _020EBB20
+_020EBB08:
+ orr r12, r12, #0x1
+ subs r6, r6, #0x1
+ beq _020EBB78
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adcs r7, r7, r7
+_020EBB20:
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ sbcs r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+_020EBB3C:
+ subs r6, r6, #0x1
+ beq _020EBB70
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adc r7, r7, r7
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ adc r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+ b _020EBB3C
+_020EBB70:
+ adds r0, r0, r2
+ adc r1, r1, r3
+_020EBB78:
+ ands r7, r4, #0x1
+ moveq r0, r12
+ moveq r1, r11
+ beq _020EBBB0
+ subs r7, r5, #0x20
+ movge r0, r1, lsr r7
+ bge _020EBBD4
+ rsb r7, r5, #0x20
+ mov r0, r0, lsr r5
+ orr r0, r0, r1, lsl r7
+ mov r1, r1, lsr r5
+ b _020EBBB0
+_020EBBA8: ; 0x020EBBA8
+ mov r0, r1, lsr r7
+ mov r1, #0x0
+_020EBBB0:
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBC0:
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBD0:
+ mov r0, #0x0
+_020EBBD4:
+ mov r1, #0x0
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+
+ arm_func_start _ll_udiv
+_ll_udiv: ; 0x020EBBE8
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x0
+ b _020EBBFC
+
+ arm_func_start _ull_mod
+_ull_mod: ; 0x020EBBF4
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x1
+_020EBBFC:
+ orrs r5, r3, r2
+ bne _020EBC0C
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBC0C:
+ orrs r5, r1, r3
+ bne _020EBAAC
+ mov r1, r2
+ bl _u32_div_not_0_f
+ cmp r4, #0x0
+ movne r0, r1
+ mov r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_mul.s b/arm9/asm/RUNTIME_ll_mul.s
new file mode 100644
index 00000000..965efe9e
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_mul.s
@@ -0,0 +1,15 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_mul
+_ll_mul: ; 0x020EBC30
+ stmdb sp!, {r4-r5,lr}
+ umull r5, r4, r0, r2
+ mla r4, r0, r3, r4
+ mla r4, r2, r1, r4
+ mov r1, r4
+ mov r0, r5
+ ldmia sp!, {r4-r5,lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_sll.s b/arm9/asm/RUNTIME_ll_sll.s
new file mode 100644
index 00000000..c4f37ead
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_sll.s
@@ -0,0 +1,20 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_shl
+_ll_shl: ; 0x020EBC50
+ ands r2, r2, #0x3f
+ bxeq lr
+ subs r3, r2, #0x20
+ bge _020EBC74
+ rsb r3, r2, #0x20
+ mov r1, r1, lsl r2
+ orr r1, r1, r0, lsr r3
+ mov r0, r0, lsl r2
+ bx lr
+_020EBC74:
+ mov r1, r0, lsl r3
+ mov r0, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_s32_div_f.s b/arm9/asm/RUNTIME_s32_div_f.s
new file mode 100644
index 00000000..2dc6cc7e
--- /dev/null
+++ b/arm9/asm/RUNTIME_s32_div_f.s
@@ -0,0 +1,139 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _s32_div_f
+_s32_div_f: ; 0x020EBC80
+ eor r12, r0, r1
+ and r12, r12, #0x80000000
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ addlt r12, r12, #0x1
+ cmp r1, #0x0
+ rsblt r1, r1, #0x0
+ beq _020EBE78
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ blo _020EBE78
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+_020EBE78:
+ ands r3, r12, #0x80000000
+ rsbne r0, r0, #0x0
+ ands r3, r12, #0x1
+ rsbne r1, r1, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_u32_div_f.s b/arm9/asm/RUNTIME_u32_div_f.s
new file mode 100644
index 00000000..5042c504
--- /dev/null
+++ b/arm9/asm/RUNTIME_u32_div_f.s
@@ -0,0 +1,131 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _u32_div_f
+_u32_div_f: ; 0x020EBE8C
+ cmp r1, #0x0
+ bxeq lr
+
+ arm_func_start _u32_div_not_0_f
+_u32_div_not_0_f:
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ bxcc lr
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+ bx lr
diff --git a/arm9/asm/SPI_tp.s b/arm9/asm/SPI_tp.s
index 233da29f..7766abdd 100644
--- a/arm9/asm/SPI_tp.s
+++ b/arm9/asm/SPI_tp.s
@@ -15,7 +15,7 @@ UNK_021D5474: ; 0x021D5474
UNK_021D548C: ; 0x021D548C
.space 0x20
- .text
+ .text
arm_func_start TP_CheckError
TP_CheckError: ; 0x020D36C4
diff --git a/arm9/asm/WM_dcf.s b/arm9/asm/WM_dcf.s
index eb802550..779bb2ec 100644
--- a/arm9/asm/WM_dcf.s
+++ b/arm9/asm/WM_dcf.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndDCF
WM_EndDCF: ; 0x020D9DDC
diff --git a/arm9/asm/WM_ds.s b/arm9/asm/WM_ds.s
index c2a26eb4..f83211ee 100644
--- a/arm9/asm/WM_ds.s
+++ b/arm9/asm/WM_ds.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WmGetSharedDataAddress
WmGetSharedDataAddress: ; 0x020DA00C
diff --git a/arm9/asm/WM_ks.s b/arm9/asm/WM_ks.s
index ba5fdb5c..3dd46c1b 100644
--- a/arm9/asm/WM_ks.s
+++ b/arm9/asm/WM_ks.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndKeySharing
WM_EndKeySharing: ; 0x020DAD3C
diff --git a/arm9/asm/WM_mp.s b/arm9/asm/WM_mp.s
index 0c2fca76..46b44fed 100644
--- a/arm9/asm/WM_mp.s
+++ b/arm9/asm/WM_mp.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndMP
WM_EndMP: ; 0x020D9960
diff --git a/arm9/asm/WM_standard.s b/arm9/asm/WM_standard.s
index 5d7e8db9..869015a6 100644
--- a/arm9/asm/WM_standard.s
+++ b/arm9/asm/WM_standard.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_Disconnect
WM_Disconnect: ; 0x020D9060
diff --git a/arm9/asm/WM_sync.s b/arm9/asm/WM_sync.s
index 65163b4f..c50663c4 100644
--- a/arm9/asm/WM_sync.s
+++ b/arm9/asm/WM_sync.s
@@ -7,7 +7,7 @@
UNK_02106A54: ; 0x02106A54
.word 0x00010000
- .text
+ .text
arm_func_start WM_GetNextTgid
WM_GetNextTgid: ; 0x020D8868
diff --git a/arm9/asm/WM_system.s b/arm9/asm/WM_system.s
index e3792814..9b77b7c4 100644
--- a/arm9/asm/WM_system.s
+++ b/arm9/asm/WM_system.s
@@ -35,7 +35,7 @@ UNK_021D5E9C: ; 0x021D5E9C
UNK_021D5EC0: ; 0x021D5EC0
.space 0xa00
- .text
+ .text
arm_func_start WMi_GetMPReadyAIDs
WMi_GetMPReadyAIDs: ; 0x020D7DE0
diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s
deleted file mode 100644
index 39c2decb..00000000
--- a/arm9/asm/libc.s
+++ /dev/null
@@ -1,14430 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .extern OSi_ThreadInfo
-
- .section .rodata
-
- .global UNK_0210420C
-UNK_0210420C: ; 0x0210420C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210428C
-UNK_0210428C: ; 0x0210428C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210430C
-UNK_0210430C: ; 0x0210430C
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04
- .byte 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00
-
- .global UNK_0210440C
-UNK_0210440C: ; 0x0210440C
- .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02104434
-UNK_02104434: ; 0x02104434
- .asciz "NAN("
-
- .global UNK_02104439
-UNK_02104439: ; 0x02104439
- .asciz "INFINITY"
- .balign 4
- .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
-
- .global UNK_02104754
-UNK_02104754: ; 0x02104754
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F
-
- .global UNK_02104764
-UNK_02104764: ; 0x02104764
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xD0, 0xCF, 0x43, 0xEB, 0xFD, 0x4C, 0x3E
-
- .section .data
-
- .global UNK_02106A58
-UNK_02106A58: ; 0x02106A58
- .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AA4
-UNK_02106AA4: ; 0x02106AA4
- .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AF0
-UNK_02106AF0: ; 0x02106AF0
- .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106B3C
-UNK_02106B3C: ; 0x02106B3C
- .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
-
- .balign 4, 0
- .global UNK_02106B74
-UNK_02106B74: ; 0x02106B74
- .word 0x7F800000 ; inf
-
- .global UNK_02106B78
-UNK_02106B78: ; 0x02106B78
- .word 0x7FFFFFFF ; nan
-
- .global UNK_02106B7C
-UNK_02106B7C: ; 0x02106B7C
- .word 0x00000000, 0x7FF00000 ; 1.06047983e-314
-
- .global UNK_02106B84
-UNK_02106B84: ; 0x02106B84
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106B88
-UNK_02106B88: ; 0x02106B88
- .byte 0x25, 0x54, 0x00, 0x00
-
- .global UNK_02106B8C
-UNK_02106B8C: ; 0x02106B8C
- .asciz "AM|PM"
-
- .balign 4, 0
- .global UNK_02106B94
-UNK_02106B94: ; 0x02106B94
- .word __mbtowc_noconv
- .word __wctomb_noconv
-
- .global UNK_02106B9C
-UNK_02106B9C: ; 0x02106B9C
- .byte 0x20, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_02106BCC
-
- .global UNK_02106BAC
-UNK_02106BAC: ; 0x02106BAC
- .word UNK_02106B8C
- .word UNK_02106CB0
- .word UNK_02106CA4
- .word UNK_02106C8C
- .word UNK_02106B88
- .word UNK_02106CC0
- .word UNK_02106D18
- .word UNK_02106B84
-
- .global UNK_02106BCC
-UNK_02106BCC: ; 0x02106BCC
- .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00
- .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00
- .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00
- .byte 0x29, 0x00, 0x2A, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00
- .byte 0x17, 0x00, 0x2B, 0x00, 0x2D, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00
- .byte 0x39, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x47, 0x00
- .byte 0x49, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x4F, 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, 0x00
- .byte 0x59, 0x00, 0x5B, 0x00, 0x5D, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00
- .byte 0x00, 0x00, 0x2C, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x32, 0x00, 0x34, 0x00, 0x36, 0x00, 0x38, 0x00
- .byte 0x3A, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, 0x00, 0x48, 0x00
- .byte 0x4A, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, 0x00, 0x58, 0x00
- .byte 0x5A, 0x00, 0x5C, 0x00, 0x5E, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x00, 0x00
-
- .global UNK_02106C8C
-UNK_02106C8C: ; 0x02106C8C
- .asciz "%m/%d/%y"
-
- .balign 4, 0
- .global UNK_02106C98
-UNK_02106C98: ; 0x02106C98
- .word UNK_02106BAC
- .word UNK_02106B9C
- .word UNK_02106B94
-
- .global UNK_02106CA4
-UNK_02106CA4: ; 0x02106CA4
- .asciz "%I:%M:%S %p"
-
- .balign 4, 0
- .global UNK_02106CB0
-UNK_02106CB0: ; 0x02106CB0
- .asciz "%a %b %e %T %Y"
-
- .balign 4, 0
- .global UNK_02106CC0
-UNK_02106CC0: ; 0x02106CC0
- .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
-
- .balign 4, 0
- .global UNK_02106D18
-UNK_02106D18: ; 0x02106D18
- .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
-
- .balign 4, 0
- .global UNK_02106DA0
-UNK_02106DA0: ; 0x02106DA0
- .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
-
- .global UNK_02106DA8
-UNK_02106DA8: ; 0x02106DA8
- .asciz "-INF"
-
- .balign 4, 0
- .global UNK_02106DB0
-UNK_02106DB0: ; 0x02106DB0
- .asciz "-inf"
-
- .balign 4, 0
- .global UNK_02106DB8
-UNK_02106DB8: ; 0x02106DB8
- .asciz "INF"
-
- .balign 4, 0
- .global UNK_02106DBC
-UNK_02106DBC: ; 0x02106DBC
- .asciz "inf"
-
- .balign 4, 0
- .global UNK_02106DC0
-UNK_02106DC0: ; 0x02106DC0
- .asciz "-NAN"
-
- .balign 4, 0
- .global UNK_02106DC8
-UNK_02106DC8: ; 0x02106DC8
- .asciz "-nan"
-
- .balign 4, 0
- .global UNK_02106DD0
-UNK_02106DD0: ; 0x02106DD0
- .asciz "NAN"
-
- .balign 4, 0
- .global UNK_02106DD4
-UNK_02106DD4: ; 0x02106DD4
- .asciz "nan"
-
- .balign 4, 0
- .global UNK_02106DD8
-UNK_02106DD8: ; 0x02106DD8
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DDC
-UNK_02106DDC: ; 0x02106DDC
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DE0
-UNK_02106DE0: ; 0x02106DE0
- .byte 0x01, 0x00, 0x00, 0x00
-
- .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
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC3, 0x40
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xF8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x2E, 0x41
- .byte 0x00, 0x00, 0x00, 0x00, 0xD0, 0x12, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0x84, 0xD7, 0x97, 0x41
-
- .global UNK_02106E88
-UNK_02106E88: ; 0x02106E88
- .asciz "542101086242752217003726400434970855712890625"
-
- .balign 4, 0
- .global UNK_02106EB8
-UNK_02106EB8: ; 0x02106EB8
- .asciz "11102230246251565404236316680908203125"
-
- .balign 4, 0
- .global UNK_02106EE0
-UNK_02106EE0: ; 0x02106EE0
- .asciz "23283064365386962890625"
-
- .balign 4, 0
- .global UNK_02106EF8
-UNK_02106EF8: ; 0x02106EF8
- .asciz "152587890625"
-
- .balign 4, 0
- .global UNK_02106F08
-UNK_02106F08: ; 0x02106F08
- .asciz "390625"
-
- .balign 4, 0
- .global UNK_02106F10
-UNK_02106F10: ; 0x02106F10
- .asciz "78125"
-
- .balign 4, 0
- .global UNK_02106F18
-UNK_02106F18: ; 0x02106F18
- .asciz "15625"
-
- .balign 4, 0
- .global UNK_02106F20
-UNK_02106F20: ; 0x02106F20
- .asciz "3125"
-
- .balign 4, 0
- .global UNK_02106F28
-UNK_02106F28: ; 0x02106F28
- .asciz "625"
-
- .balign 4, 0
- .global UNK_02106F2C
-UNK_02106F2C: ; 0x02106F2C
- .asciz "125"
-
- .balign 4, 0
- .global UNK_02106F30
-UNK_02106F30: ; 0x02106F30
- .asciz "25"
-
- .balign 4, 0
- .global UNK_02106F34
-UNK_02106F34: ; 0x02106F34
- .asciz "5"
-
- .balign 4, 0
- .global UNK_02106F38
-UNK_02106F38: ; 0x02106F38
- .asciz "1"
-
- .balign 4, 0
- .global UNK_02106F3C
-UNK_02106F3C: ; 0x02106F3C
- .asciz "2"
-
- .balign 4, 0
- .global UNK_02106F40
-UNK_02106F40: ; 0x02106F40
- .asciz "4"
-
- .balign 4, 0
- .global UNK_02106F44
-UNK_02106F44: ; 0x02106F44
- .asciz "8"
-
- .balign 4, 0
- .global UNK_02106F48
-UNK_02106F48: ; 0x02106F48
- .asciz "16"
-
- .balign 4, 0
- .global UNK_02106F4C
-UNK_02106F4C: ; 0x02106F4C
- .asciz "32"
-
- .balign 4, 0
- .global UNK_02106F50
-UNK_02106F50: ; 0x02106F50
- .asciz "64"
-
- .balign 4, 0
- .global UNK_02106F54
-UNK_02106F54: ; 0x02106F54
- .asciz "128"
-
- .balign 4, 0
- .global UNK_02106F58
-UNK_02106F58: ; 0x02106F58
- .asciz "256"
-
- .balign 4, 0
- .global UNK_02106F5C
-UNK_02106F5C: ; 0x02106F5C
- .asciz "179769313486231580793728714053034151"
-
- .section .bss
-
- .global UNK_021D6F78
-UNK_021D6F78: ; 0x021D6F78
- .space 0x10
-
- .global UNK_021D6F88
-UNK_021D6F88: ; 0x021D6F88
- .space 0x100
-
- .global UNK_021D7088
-UNK_021D7088: ; 0x021D7088
- .space 0x24
-
- .global UNK_021D70AC
-UNK_021D70AC: ; 0x021D70AC
- .space 0x24
-
- .global UNK_021D70D0
-UNK_021D70D0: ; 0x021D70D0
- .space 0x48
-
- .global UNK_021D7118
-UNK_021D7118: ; 0x021D7118
- .space 0x60
-
- .global UNK_021D7178
-UNK_021D7178: ; 0x021D7178
- .space 0x30
-
- .global UNK_021D71A8
-UNK_021D71A8: ; 0x021D71A8
- .space 0x100
-
- .global UNK_021D72A8
-UNK_021D72A8: ; 0x021D72A8
- .space 0x100
-
- .global UNK_021D73A8
-UNK_021D73A8: ; 0x021D73A8
- .space 0x100
-
- .global UNK_021D74A8
-UNK_021D74A8: ; 0x021D74A8
- .space 0x4
-
- .global UNK_021D74AC
-UNK_021D74AC: ; 0x021D74AC
- .space 0x1c
-
- .section .text
- .balign 4, 0
-
- arm_func_start abort
-abort: ; 0x020DE14C
- stmdb sp!, {r3,lr}
- mov r0, #0x1
- bl raise
- ldr r1, _020DE16C ; =UNK_021D6F78
- mov r0, #0x1
- str r0, [r1, #0xc]
- bl exit
- ldmia sp!, {r3,pc}
- .balign 4
-_020DE16C: .word UNK_021D6F78
-
- arm_func_start exit
-exit: ; 0x020DE170
- stmdb sp!, {r4,lr}
- ldr r1, _020DE1B8 ; =UNK_021D6F78
- mov r4, r0
- ldr r0, [r1, #0xc]
- cmp r0, #0x0
- bne _020DE1AC
- bl __destroy_global_chain
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _020DE1AC
- blx r0
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x4]
-_020DE1AC:
- mov r0, r4
- bl __exit
- ldmia sp!, {r4,pc}
- .balign 4
-_020DE1B8: .word UNK_021D6F78
-
- arm_func_start __exit
-__exit: ; 0x020DE1BC
- stmdb sp!, {r3-r5,lr}
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE1F4
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- b _020DE24C
-_020DE1F4:
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0x0]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE224
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- b _020DE24C
-_020DE224:
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_LockMutex
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
-_020DE24C:
- ldr r4, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- ble _020DE280
- ldr r5, _020DE2E0 ; =UNK_021D6F88
-_020DE260:
- ldr r0, [r4, #0x8]
- sub r1, r0, #0x1
- ldr r0, [r5, r1, lsl #0x2]
- str r1, [r4, #0x8]
- blx r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- bgt _020DE260
-_020DE280:
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- subs r1, r1, #0x1
- str r1, [r0, #0x0]
- bne _020DE29C
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_UnlockMutex
-_020DE29C:
- ldr r0, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020DE2BC
- blx r0
- ldr r0, _020DE2DC ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x0]
-_020DE2BC:
- mov r0, #0x0
- bl fflush
- bl _ExitProcess
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020DE2CC: .word UNK_021D70D0
-_020DE2D0: .word OSi_ThreadInfo
-_020DE2D4: .word UNK_021D7088
-_020DE2D8: .word UNK_021D70AC
-_020DE2DC: .word UNK_021D6F78
-_020DE2E0: .word UNK_021D6F88
-
- arm_func_start nan
-nan: ; 0x020DE2E4
- ldr r0, _020DE2F4 ; =UNK_02106B78
- ldr ip, _020DE2F8 ; =_f2d
- ldr r0, [r0, #0x0]
- bx r12
- .balign 4
-_020DE2F4: .word UNK_02106B78
-_020DE2F8: .word _f2d
-
- arm_func_start __flush_line_buffered_output_files
-__flush_line_buffered_output_files:
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE384 ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE31C:
- ldr r1, [r0, #0x4]
- mov r2, r1, lsl #0x16
- movs r2, r2, lsr #0x1d
- beq _020DE35C
- mov r1, r1, lsl #0x19
- mov r1, r1, lsr #0x1e
- tst r1, #0x1
- beq _020DE35C
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DE35C
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE35C:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE374
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE374:
- cmp r0, #0x0
- bne _020DE31C
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE384: .word UNK_02106A58
-
- arm_func_start __flush_all
-__flush_all: ; 0x020DE388
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE3EC ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE3A8:
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- beq _020DE3C4
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE3C4:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE3DC
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE3DC:
- cmp r0, #0x0
- bne _020DE3A8
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE3EC: .word UNK_02106A58
-
- arm_func_start abs
-abs: ; 0x020DE3F0
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- bx lr
-
- arm_func_start __msl_assertion_failed
-__msl_assertion_failed: ; 0x020DE3FC
- stmdb sp!, {r3-r4,lr}
- sub sp, sp, #0x4
- mov r4, r0
- mov lr, r1
- mov r12, r2
- str r3, [sp, #0x0]
- ldr r0, _020DE434 ; =UNK_02106B3C
- mov r1, r4
- mov r2, lr
- mov r3, r12
- bl printf
- bl abort
- add sp, sp, #0x4
- ldmia sp!, {r3-r4,pc}
- .balign 4
-_020DE434: .word UNK_02106B3C
-
- arm_func_start __convert_from_newlines
-__convert_from_newlines:
- bx lr
-
- arm_func_start __convert_to_newlines
-__convert_to_newlines:
- bx lr
-
- arm_func_start __prep_buffer
-__prep_buffer:
- ldr r1, [r0, #0x1c]
- str r1, [r0, #0x24]
- ldr r3, [r0, #0x20]
- str r3, [r0, #0x28]
- ldr r2, [r0, #0x18]
- ldr r1, [r0, #0x2c]
- and r1, r2, r1
- sub r1, r3, r1
- str r1, [r0, #0x28]
- ldr r1, [r0, #0x18]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start __load_buffer
-__load_buffer:
- stmdb sp!, {r4-r6,lr}
- mov r5, r2
- mov r4, r0
- mov r6, r1
- bl __prep_buffer
- cmp r5, #0x1
- ldreq r0, [r4, #0x20]
- add r2, r4, #0x28
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x1c]
- ldr r3, [r4, #0x48]
- ldr r12, [r4, #0x3c]
- blx r12
- cmp r0, #0x2
- moveq r1, #0x0
- streq r1, [r4, #0x28]
- cmp r6, #0x0
- ldrne r1, [r4, #0x28]
- strne r1, [r6, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- ldr r1, [r4, #0x18]
- ldr r0, [r4, #0x28]
- add r0, r1, r0
- str r0, [r4, #0x18]
- ldr r0, [r4, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE4F4
- ldr r0, [r4, #0x1c]
- add r1, r4, #0x28
- bl __convert_to_newlines
-_020DE4F4:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __flush_buffer
-__flush_buffer:
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r2, [r5, #0x24]
- ldr r0, [r5, #0x1c]
- mov r4, r1
- subs r0, r2, r0
- beq _020DE574
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE538
- ldr r0, [r5, #0x1c]
- add r1, r5, #0x28
- bl __convert_from_newlines
-_020DE538:
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x1c]
- ldr r3, [r5, #0x48]
- ldr r12, [r5, #0x40]
- add r2, r5, #0x28
- blx r12
- cmp r4, #0x0
- ldrne r1, [r5, #0x28]
- strne r1, [r4, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x18]
- ldr r0, [r5, #0x28]
- add r0, r1, r0
- str r0, [r5, #0x18]
-_020DE574:
- mov r0, r5
- bl __prep_buffer
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fread
-fread: ; 0x020DE584
- stmdb sp!, {r4-r10,lr}
- ldr r4, _020DE67C ; =UNK_02106A58
- mov r7, r3
- cmp r7, r4
- moveq r6, #0x2
- mov r10, r0
- movne r6, #0x5
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DE680 ; =UNK_021D70D0
- mov r9, r1
- add r0, r5, r4
- mov r8, r2
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE5E8
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DE640
-_020DE5E8:
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r1, _020DE688 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE618
- ldr r1, _020DE68C ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DE640
-_020DE618:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DE640:
- mov r0, r10
- mov r1, r9
- mov r2, r8
- mov r3, r7
- bl __fread
- ldr r1, _020DE68C ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DE674
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DE674:
- mov r0, r7
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020DE67C: .word UNK_02106A58
-_020DE680: .word UNK_021D70D0
-_020DE684: .word OSi_ThreadInfo
-_020DE688: .word UNK_021D7088
-_020DE68C: .word UNK_021D70AC
-
- arm_func_start __fread
-__fread: ; 0x020DE690
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x4
- mov r7, r3
- mov r9, r0
- mov r8, r1
- mov r0, r7
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DE6C8
- mov r0, r7
- mvn r1, #0x0
- bl fwide
-_020DE6C8:
- muls r4, r8, r4
- beq _020DE6EC
- ldrb r0, [r7, #0xd]
- cmp r0, #0x0
- bne _020DE6EC
- ldr r1, [r7, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DE6F8
-_020DE6EC:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r3-r10,pc}
-_020DE6F8:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- ldr r1, [r7, #0x8]
- cmpne r0, #0x2
- mov r6, #0x1
- mov r0, r1, lsl #0x1d
- movne r6, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DE74C
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x1
- beq _020DE74C
- bic r0, r1, #0x7
- orr r0, r0, #0x2
- str r0, [r7, #0x8]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE74C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- bhs _020DE778
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE778:
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- tst r0, #0x1
- beq _020DE7B0
- bl __flush_line_buffered_output_files
- cmp r0, #0x0
- beq _020DE7B0
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE7B0:
- cmp r4, #0x0
- mov r5, #0x0
- beq _020DE874
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- blo _020DE874
- mov r10, r5
-_020DE7D4:
- mov r0, r7
- mov r1, r10
- bl fwide
- cmp r0, #0x1
- ldr r0, [r7, #0x8]
- bne _020DE808
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1c
- ldrh r0, [r0, #0xe]
- add r5, r5, #0x2
- sub r4, r4, #0x2
- strh r0, [r9], #0x2
- b _020DE820
-_020DE808:
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1d
- ldrb r0, [r0, #0xf]
- add r5, r5, #0x1
- sub r4, r4, #0x1
- strb r0, [r9], #0x1
-_020DE820:
- ldr r1, [r7, #0x8]
- cmp r4, #0x0
- mov r0, r1, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x1
- bic r1, r1, #0x7
- and r0, r0, #0x7
- orr r0, r1, r0
- str r0, [r7, #0x8]
- beq _020DE85C
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- bhs _020DE7D4
-_020DE85C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- ldreq r0, [r7, #0x30]
- streq r0, [r7, #0x28]
-_020DE874:
- cmp r4, #0x0
- beq _020DE938
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- cmpeq r6, #0x0
- beq _020DE938
- mov r10, #0x0
-_020DE890:
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- bne _020DE8E4
- mov r0, r7
- mov r1, r10
- mov r2, r10
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE8E4
- cmp r0, #0x1
- mov r0, #0x1
- streqb r0, [r7, #0xd]
- beq _020DE8D4
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
-_020DE8D4:
- mov r0, #0x0
- str r0, [r7, #0x28]
- mov r4, #0x0
- b _020DE938
-_020DE8E4:
- ldr r0, [r7, #0x28]
- str r0, [sp, #0x0]
- cmp r0, r4
- strhi r4, [sp, #0x0]
- ldr r1, [r7, #0x24]
- ldr r2, [sp, #0x0]
- mov r0, r9
- bl memcpy
- ldr r2, [sp, #0x0]
- ldr r0, [r7, #0x24]
- subs r4, r4, r2
- add r0, r0, r2
- str r0, [r7, #0x24]
- ldr r1, [r7, #0x28]
- ldr r0, [sp, #0x0]
- add r9, r9, r2
- sub r0, r1, r0
- add r5, r5, r2
- str r0, [r7, #0x28]
- cmpne r6, #0x0
- bne _020DE890
-_020DE938:
- cmp r4, #0x0
- beq _020DE9C4
- cmp r6, #0x0
- bne _020DE9C4
- ldr r6, [r7, #0x1c]
- ldr r10, [r7, #0x20]
- add r1, sp, #0x0
- str r9, [r7, #0x1c]
- mov r0, r7
- mov r2, #0x1
- str r4, [r7, #0x20]
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE9A4
- cmp r0, #0x1
- mov r0, #0x1
- bne _020DE98C
- strb r0, [r7, #0xd]
- mov r0, #0x0
- str r0, [r7, #0x28]
- b _020DE9A4
-_020DE98C:
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9A4:
- ldr r1, [sp, #0x0]
- mov r0, r7
- str r6, [r7, #0x1c]
- str r10, [r7, #0x20]
- add r5, r5, r1
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9C4:
- mov r0, r5
- mov r1, r8
- bl _u32_div_f
- add sp, sp, #0x4
- ldmia sp!, {r3-r10,pc}
-
- arm_func_start __fwrite
-__fwrite:
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x8
- mov r9, r3
- mov r10, r0
- str r1, [sp, #0x0]
- mov r0, r9
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DEA10
- mov r0, r9
- mvn r1, #0x0
- bl fwide
-_020DEA10:
- ldr r0, [sp, #0x0]
- muls r5, r0, r4
- beq _020DEA38
- ldrb r0, [r9, #0xd]
- cmp r0, #0x0
- bne _020DEA38
- ldr r1, [r9, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DEA44
-_020DEA38:
- add sp, sp, #0x8
- mov r0, #0x0
- ldmia sp!, {r3-r11,pc}
-_020DEA44:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- cmpne r0, #0x2
- ldr r1, [r9, #0x8]
- cmpne r0, #0x1
- mov r8, #0x1
- mov r0, r1, lsl #0x1d
- movne r8, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DEA9C
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x2
- beq _020DEA9C
- bic r0, r1, #0x7
- orr r1, r0, #0x1
- mov r0, r9
- str r1, [r9, #0x8]
- bl __prep_buffer
-_020DEA9C:
- ldr r0, [r9, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- beq _020DEAC8
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- add sp, sp, #0x8
- str r0, [r9, #0x28]
- ldmia sp!, {r3-r11,pc}
-_020DEAC8:
- cmp r5, #0x0
- mov r6, #0x0
- beq _020DEBF0
- ldr r0, [r9, #0x1c]
- ldr r2, [r9, #0x24]
- cmp r2, r0
- cmpeq r8, #0x0
- beq _020DEBF0
- ldr r1, [r9, #0x20]
- sub r0, r2, r0
- sub r0, r1, r0
- str r0, [r9, #0x28]
- mov r11, #0xa
- mov r4, #0x0
-_020DEB00:
- ldr r0, [r9, #0x28]
- mov r7, r4
- str r0, [sp, #0x4]
- cmp r0, r5
- strhi r5, [sp, #0x4]
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x1
- bne _020DEB50
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB50
- mov r0, r10
- mov r1, r11
- bl __memrchr
- movs r7, r0
- addne r0, r7, #0x1
- subne r0, r0, r10
- strne r0, [sp, #0x4]
-_020DEB50:
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB90
- ldr r0, [r9, #0x24]
- mov r1, r10
- bl memcpy
- ldr r2, [sp, #0x4]
- ldr r0, [r9, #0x24]
- add r10, r10, r2
- add r0, r0, r2
- str r0, [r9, #0x24]
- ldr r1, [r9, #0x28]
- ldr r0, [sp, #0x4]
- sub r5, r5, r2
- sub r0, r1, r0
- str r0, [r9, #0x28]
-_020DEB90:
- ldr r0, [r9, #0x28]
- cmp r0, #0x0
- beq _020DEBB4
- cmp r7, #0x0
- bne _020DEBB4
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- movs r0, r0, lsr #0x1e
- bne _020DEBDC
-_020DEBB4:
- mov r0, r9
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DEBDC
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r5, #0x0
- str r5, [r9, #0x28]
- b _020DEBF0
-_020DEBDC:
- ldr r0, [sp, #0x4]
- cmp r5, #0x0
- add r6, r6, r0
- cmpne r8, #0x0
- bne _020DEB00
-_020DEBF0:
- cmp r5, #0x0
- beq _020DEC5C
- cmp r8, #0x0
- bne _020DEC5C
- ldr r4, [r9, #0x1c]
- ldr r7, [r9, #0x20]
- add r2, r10, r5
- str r10, [r9, #0x1c]
- str r5, [r9, #0x20]
- add r1, sp, #0x4
- mov r0, r9
- str r2, [r9, #0x24]
- bl __flush_buffer
- cmp r0, #0x0
- ldreq r0, [sp, #0x4]
- addeq r6, r6, r0
- beq _020DEC44
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC44:
- str r4, [r9, #0x1c]
- mov r0, r9
- str r7, [r9, #0x20]
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC5C:
- ldr r0, [r9, #0x4]
- ldr r1, [sp, #0x0]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x2
- movne r0, #0x0
- strne r0, [r9, #0x28]
- mov r0, r6
- bl _u32_div_f
- add sp, sp, #0x8
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start fclose
-fclose: ; 0x020DEC88
- stmdb sp!, {r3-r5,lr}
- movs r5, r0
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- moveq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- bl fflush
- mov r4, r0
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x44]
- blx r1
- ldr r1, [r5, #0x4]
- mov r2, #0x0
- bic r1, r1, #0x380
- str r1, [r5, #0x4]
- str r2, [r5, #0x0]
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1c
- movs r1, r1, lsr #0x1f
- subne r0, r2, #0x1
- ldmneia sp!, {r3-r5,pc}
- cmp r4, #0x0
- cmpeq r0, #0x0
- movne r2, #0x1
- rsb r0, r2, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fflush
-fflush:
- stmdb sp!, {r4,lr}
- movs r4, r0
- bne _020DED10
- bl __flush_all
- ldmia sp!, {r4,pc}
-_020DED10:
- ldrb r0, [r4, #0xd]
- cmp r0, #0x0
- bne _020DED2C
- ldr r0, [r4, #0x4]
- mov r1, r0, lsl #0x16
- movs r1, r1, lsr #0x1d
- bne _020DED34
-_020DED2C:
- mvn r0, #0x0
- ldmia sp!, {r4,pc}
-_020DED34:
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x3
- biccs r0, r0, #0x7
- orrcs r0, r0, #0x2
- strcs r0, [r4, #0x8]
- ldr r0, [r4, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- moveq r0, #0x0
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- beq _020DEDA0
- bic r0, r0, #0x7
- str r0, [r4, #0x8]
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-_020DEDA0:
- mov r0, r4
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- mov r0, #0x0
- beq _020DEDCC
- mov r1, #0x1
- strb r1, [r4, #0xd]
- str r0, [r4, #0x28]
- sub r0, r0, #0x1
- ldmia sp!, {r4,pc}
-_020DEDCC:
- ldr r1, [r4, #0x8]
- bic r1, r1, #0x7
- str r1, [r4, #0x8]
- str r0, [r4, #0x18]
- str r0, [r4, #0x28]
- ldmia sp!, {r4,pc}
-
- arm_func_start _ftell
-_ftell: ; 0x020DEDE4
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- add r1, r1, #0xff
- and r1, r1, #0xff
- cmp r1, #0x1
- bhi _020DEE10
- ldrb r1, [r0, #0xd]
- cmp r1, #0x0
- beq _020DEE24
-_020DEE10:
- ldr r0, _020DEE5C ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- bx lr
-_020DEE24:
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- movs r12, r1, lsr #0x1d
- ldreq r0, [r0, #0x18]
- bxeq lr
- ldr r2, [r0, #0x24]
- ldr r1, [r0, #0x1c]
- ldr r3, [r0, #0x34]
- sub r0, r2, r1
- cmp r12, #0x3
- add r0, r3, r0
- subcs r1, r12, #0x2
- subcs r0, r0, r1
- bx lr
- .balign 4
-_020DEE5C: .word UNK_021D74A8
-
- arm_func_start ftell
-ftell: ; 0x020DEE60
- stmdb sp!, {r3-r7,lr}
- ldr r1, _020DEF60 ; =UNK_02106A58
- mov r7, r0
- cmp r7, r1
- moveq r6, #0x2
- beq _020DEE98
- ldr r0, _020DEF64 ; =UNK_02106AA4
- cmp r7, r0
- moveq r6, #0x3
- beq _020DEE98
- ldr r0, _020DEF68 ; =UNK_02106AF0
- cmp r7, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DEE98:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DEF6C ; =UNK_021D70D0
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DEED8
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DEF30
-_020DEED8:
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r1, _020DEF74 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DEF08
- ldr r1, _020DEF78 ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DEF30
-_020DEF08:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DEF30:
- mov r0, r7
- bl _ftell
- ldr r1, _020DEF78 ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DEF58
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DEF58:
- mov r0, r7
- ldmia sp!, {r3-r7,pc}
- .balign 4
-_020DEF60: .word UNK_02106A58
-_020DEF64: .word UNK_02106AA4
-_020DEF68: .word UNK_02106AF0
-_020DEF6C: .word UNK_021D70D0
-_020DEF70: .word OSi_ThreadInfo
-_020DEF74: .word UNK_021D7088
-_020DEF78: .word UNK_021D70AC
-
- arm_func_start _fseek
-_fseek: ; 0x020DEF7C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r1, [r5, #0x4]
- mov r4, r2
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- cmp r1, #0x1
- ldreqb r1, [r5, #0xd]
- cmpeq r1, #0x0
- beq _020DEFC8
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DEFC8:
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DF018
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DF018
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF018:
- cmp r4, #0x1
- bne _020DF038
- mov r0, r5
- mov r4, #0x0
- bl _ftell
- ldr r1, [sp, #0x14]
- add r0, r1, r0
- str r0, [sp, #0x14]
-_020DF038:
- cmp r4, #0x2
- beq _020DF0CC
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- beq _020DF0CC
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x2
- cmp r0, #0x1
- bhi _020DF0CC
- ldr r2, [sp, #0x14]
- ldr r0, [r5, #0x18]
- cmp r2, r0
- bhs _020DF088
- ldr r0, [r5, #0x34]
- cmp r2, r0
- bhs _020DF098
-_020DF088:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF098:
- ldr r1, [r5, #0x1c]
- sub r0, r2, r0
- add r0, r1, r0
- str r0, [r5, #0x24]
- ldr r1, [r5, #0x18]
- ldr r0, [sp, #0x14]
- sub r0, r1, r0
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- orr r0, r0, #0x2
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF0CC:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
-_020DF0D8:
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- movs r0, r0, lsr #0x1d
- bne _020DF150
- ldr r12, [r5, #0x38]
- cmp r12, #0x0
- beq _020DF13C
- ldr r0, [r5, #0x0]
- ldr r3, [r5, #0x48]
- add r1, sp, #0x14
- mov r2, r4
- blx r12
- cmp r0, #0x0
- beq _020DF13C
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF13C:
- mov r1, #0x0
- strb r1, [r5, #0xc]
- ldr r0, [sp, #0x14]
- str r0, [r5, #0x18]
- str r1, [r5, #0x28]
-_020DF150:
- mov r0, #0x0
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020DF160: .word UNK_021D74A8
-
- arm_func_start fseek
-fseek:
- stmdb sp!, {r3-r9,lr}
- ldr r3, _020DF274 ; =UNK_02106A58
- mov r9, r0
- cmp r9, r3
- mov r8, r1
- mov r7, r2
- moveq r6, #0x2
- beq _020DF1A4
- ldr r0, _020DF278 ; =UNK_02106AA4
- cmp r9, r0
- moveq r6, #0x3
- beq _020DF1A4
- ldr r0, _020DF27C ; =UNK_02106AF0
- cmp r9, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DF1A4:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DF280 ; =UNK_021D70D0
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DF1E4
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DF23C
-_020DF1E4:
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r1, _020DF288 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DF214
- ldr r1, _020DF28C ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DF23C
-_020DF214:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DF23C:
- mov r0, r9
- mov r1, r8
- mov r2, r7
- bl _fseek
- ldr r1, _020DF28C ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DF26C
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DF26C:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DF274: .word UNK_02106A58
-_020DF278: .word UNK_02106AA4
-_020DF27C: .word UNK_02106AF0
-_020DF280: .word UNK_021D70D0
-_020DF284: .word OSi_ThreadInfo
-_020DF288: .word UNK_021D7088
-_020DF28C: .word UNK_021D70AC
-
- arm_func_start rewind
-rewind: ; 0x020DF290
- stmdb sp!, {r4,lr}
- mov r1, #0x0
- mov r4, r0
- mov r2, r1
- strb r1, [r4, #0xd]
- bl fseek
- mov r0, #0x0
- strb r0, [r4, #0xd]
- ldmia sp!, {r4,pc}
-
- arm_func_start mbtowc
-mbtowc:
- stmdb sp!, {r3,lr}
- ldr r3, _020DF2CC ; =UNK_02106C98
- ldr r3, [r3, #0x8]
- ldr r3, [r3, #0x0]
- blx r3
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF2CC: .word UNK_02106C98
-
- arm_func_start __mbtowc_noconv
-__mbtowc_noconv: ; 0x020DF2D0
- cmp r1, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r2, #0x0
- mvneq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- ldrneb r2, [r1, #0x0]
- strneh r2, [r0, #0x0]
- ldrsb r0, [r1, #0x0]
- cmp r0, #0x0
- moveq r0, #0x0
- movne r0, #0x1
- bx lr
-
- arm_func_start __wctomb_noconv
-__wctomb_noconv: ; 0x020DF308
- cmp r0, #0x0
- moveq r0, #0x0
- strneb r1, [r0, #0x0]
- movne r0, #0x1
- bx lr
-
- arm_func_start wctomb
-wctomb: ; 0x020DF31C
- stmdb sp!, {r3,lr}
- ldr r2, _020DF334 ; =UNK_02106C98
- ldr r2, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF334: .word UNK_02106C98
-
- arm_func_start mbstowcs
-mbstowcs: ; 0x020DF338
- stmdb sp!, {r4-r8,lr}
- mov r7, r1
- mov r8, r0
- mov r0, r7
- mov r6, r2
- bl strlen
- mov r5, r0
- cmp r8, #0x0
- mov r4, #0x0
- beq _020DF3B8
- cmp r6, #0x0
- bls _020DF3B8
-_020DF368:
- ldrsb r0, [r7, #0x0]
- cmp r0, #0x0
- beq _020DF3A0
- mov r0, r8
- mov r1, r7
- mov r2, r5
- bl mbtowc
- cmp r0, #0x0
- add r8, r8, #0x2
- addgt r7, r7, r0
- subgt r5, r5, r0
- bgt _020DF3AC
- mvn r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020DF3A0:
- mov r0, #0x0
- strh r0, [r8, #0x0]
- b _020DF3B8
-_020DF3AC:
- add r4, r4, #0x1
- cmp r4, r6
- blo _020DF368
-_020DF3B8:
- mov r0, r4
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start wcstombs
-wcstombs:
- stmdb sp!, {r3-r9,lr}
- movs r4, r0
- mov r9, r1
- cmpne r9, #0x0
- mov r8, r2
- mov r7, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r3-r9,pc}
- add r6, sp, #0x0
-_020DF3E4:
- ldrh r1, [r9, #0x0]
- cmp r1, #0x0
- moveq r0, #0x0
- streqb r0, [r4, r7]
- beq _020DF430
- mov r0, r6
- add r9, r9, #0x2
- bl wctomb
- mov r5, r0
- add r0, r7, r5
- cmp r0, r8
- bhi _020DF430
- mov r1, r6
- mov r2, r5
- add r0, r4, r7
- bl strncpy
- add r7, r7, r5
- cmp r7, r8
- bls _020DF3E4
-_020DF430:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
-
- arm_func_start memcpy
-memcpy: ; 0x020DF438
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF444:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF444
- bx lr
-
- arm_func_start memmove
-memmove: ; 0x020DF458
- cmp r1, r0
- blo _020DF480
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF46C:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF46C
- bx lr
-_020DF480:
- cmp r2, #0x0
- add r3, r1, r2
- add r12, r0, r2
- bxeq lr
-_020DF490:
- ldrsb r1, [r3, #-0x1]!
- subs r2, r2, #0x1
- strb r1, [r12, #-0x1]!
- bne _020DF490
- bx lr
-
- arm_func_start memset
-memset: ; 0x020DF4A4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl __fill_mem
- mov r0, r4
- ldmia sp!, {r4,pc}
-
- arm_func_start memchr
-memchr:
- cmp r2, #0x0
- and r3, r1, #0xff
- beq _020DF4DC
-_020DF4C4:
- ldrb r1, [r0], #0x1
- cmp r1, r3
- subeq r0, r0, #0x1
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4C4
-_020DF4DC:
- mov r0, #0x0
- bx lr
-
- arm_func_start __memrchr
-__memrchr: ; 0x020DF4E4
- cmp r2, #0x0
- and r3, r1, #0xff
- add r0, r0, r2
- beq _020DF508
-_020DF4F4:
- ldrb r1, [r0, #-0x1]!
- cmp r1, r3
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4F4
-_020DF508:
- mov r0, #0x0
- bx lr
-
- arm_func_start memcmp
-memcmp: ; 0x020DF510
- cmp r2, #0x0
- beq _020DF548
-_020DF518:
- ldrb r12, [r0], #0x1
- ldrb r3, [r1], #0x1
- cmp r12, r3
- beq _020DF540
- ldrb r2, [r0, #-0x1]
- ldrb r0, [r1, #-0x1]
- cmp r2, r0
- mvncc r0, #0x0
- movcs r0, #0x1
- bx lr
-_020DF540:
- subs r2, r2, #0x1
- bne _020DF518
-_020DF548:
- mov r0, #0x0
- bx lr
-
- arm_func_start __fill_mem
-__fill_mem: ; 0x020DF550
- cmp r2, #0x20
- and r3, r1, #0xff
- blo _020DF5E4
- rsb r1, r0, #0x0
- ands r12, r1, #0x3
- beq _020DF57C
- sub r2, r2, r12
- and r1, r3, #0xff
-_020DF570:
- strb r1, [r0], #0x1
- subs r12, r12, #0x1
- bne _020DF570
-_020DF57C:
- cmp r3, #0x0
- beq _020DF594
- mov r1, r3, lsl #0x10
- orr r1, r1, r3, lsl #0x18
- orr r1, r1, r3, lsl #0x8
- orr r3, r3, r1
-_020DF594:
- movs r1, r2, lsr #0x5
- beq _020DF5C8
-_020DF59C:
- str r3, [r0, #0x0]
- str r3, [r0, #0x4]
- str r3, [r0, #0x8]
- str r3, [r0, #0xc]
- str r3, [r0, #0x10]
- str r3, [r0, #0x14]
- str r3, [r0, #0x18]
- str r3, [r0, #0x1c]
- add r0, r0, #0x20
- subs r1, r1, #0x1
- bne _020DF59C
-_020DF5C8:
- and r1, r2, #0x1f
- movs r1, r1, lsr #0x2
- beq _020DF5E0
-_020DF5D4:
- str r3, [r0], #0x4
- subs r1, r1, #0x1
- bne _020DF5D4
-_020DF5E0:
- and r2, r2, #0x3
-_020DF5E4:
- cmp r2, #0x0
- bxeq lr
- and r1, r3, #0xff
-_020DF5F0:
- strb r1, [r0], #0x1
- subs r2, r2, #0x1
- bne _020DF5F0
- bx lr
-
- arm_func_start parse_format_printf
-parse_format_printf: ; 0x020DF600
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldrsb r3, [r0, #0x1]
- mov r4, #0x0
- mov r5, #0x1
- mov lr, r2
- strb r5, [sp, #0x0]
- strb r4, [sp, #0x1]
- strb r4, [sp, #0x2]
- strb r4, [sp, #0x3]
- strb r4, [sp, #0x4]
- str r4, [sp, #0x8]
- str r4, [sp, #0xc]
- cmp r3, #0x25
- add r12, r0, #0x1
- bne _020DF65C
- add r0, sp, #0x0
- strb r3, [sp, #0x5]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x1
- ldmia sp!, {r4-r8,pc}
-_020DF65C:
- mov r2, #0x2
- mov r0, r4
- mov r5, r2
- mov r6, r4
- mov r7, #0x1
-_020DF670:
- mov r8, r7
- cmp r3, #0x2b
- bgt _020DF6A0
- bge _020DF6C8
- cmp r3, #0x23
- bgt _020DF6F8
- cmp r3, #0x20
- blt _020DF6F8
- beq _020DF6D0
- cmp r3, #0x23
- beq _020DF6E0
- b _020DF6F8
-_020DF6A0:
- cmp r3, #0x30
- bgt _020DF6F8
- cmp r3, #0x2d
- blt _020DF6F8
- beq _020DF6C0
- cmp r3, #0x30
- beq _020DF6E8
- b _020DF6F8
-_020DF6C0:
- strb r6, [sp, #0x0]
- b _020DF6FC
-_020DF6C8:
- strb r7, [sp, #0x1]
- b _020DF6FC
-_020DF6D0:
- ldrb r4, [sp, #0x1]
- cmp r4, #0x1
- strneb r5, [sp, #0x1]
- b _020DF6FC
-_020DF6E0:
- strb r7, [sp, #0x3]
- b _020DF6FC
-_020DF6E8:
- ldrb r4, [sp, #0x0]
- cmp r4, #0x0
- strneb r2, [sp, #0x0]
- b _020DF6FC
-_020DF6F8:
- mov r8, r0
-_020DF6FC:
- cmp r8, #0x0
- ldrnesb r3, [r12, #0x1]!
- bne _020DF670
- cmp r3, #0x2a
- bne _020DF744
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- str r0, [sp, #0x8]
- cmp r0, #0x0
- bge _020DF73C
- rsb r0, r0, #0x0
- mov r2, #0x0
- strb r2, [sp, #0x0]
- str r0, [sp, #0x8]
-_020DF73C:
- ldrsb r3, [r12, #0x1]!
- b _020DF794
-_020DF744:
- ldr r4, _020DFB88 ; =UNK_0210430C
- mov r5, #0x0
- mov r0, #0xa
- b _020DF768
-_020DF754:
- ldr r2, [sp, #0x8]
- sub r3, r3, #0x30
- mla r6, r2, r0, r3
- ldrsb r3, [r12, #0x1]!
- str r6, [sp, #0x8]
-_020DF768:
- cmp r3, #0x0
- blt _020DF778
- cmp r3, #0x80
- blt _020DF780
-_020DF778:
- mov r2, r5
- b _020DF78C
-_020DF780:
- mov r2, r3, lsl #0x1
- ldrh r2, [r4, r2]
- and r2, r2, #0x8
-_020DF78C:
- cmp r2, #0x0
- bne _020DF754
-_020DF794:
- ldr r2, [sp, #0x8]
- ldr r0, _020DFB8C ; =0x000001FD
- cmp r2, r0
- ble _020DF7C4
- mov r1, #0xff
- add r0, sp, #0x0
- strb r1, [sp, #0x5]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x1
- ldmia sp!, {r4-r8,pc}
-_020DF7C4:
- cmp r3, #0x2e
- bne _020DF858
- ldrsb r3, [r12, #0x1]!
- mov r0, #0x1
- strb r0, [sp, #0x2]
- cmp r3, #0x2a
- bne _020DF808
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- ldrsb r3, [r12, #0x1]!
- str r0, [sp, #0xc]
- cmp r0, #0x0
- movlt r0, #0x0
- strltb r0, [sp, #0x2]
- b _020DF858
-_020DF808:
- ldr r2, _020DFB88 ; =UNK_0210430C
- mov r4, #0x0
- mov r0, #0xa
- b _020DF82C
-_020DF818:
- ldr r1, [sp, #0xc]
- sub r3, r3, #0x30
- mla r5, r1, r0, r3
- ldrsb r3, [r12, #0x1]!
- str r5, [sp, #0xc]
-_020DF82C:
- cmp r3, #0x0
- blt _020DF83C
- cmp r3, #0x80
- blt _020DF844
-_020DF83C:
- mov r1, r4
- b _020DF850
-_020DF844:
- mov r1, r3, lsl #0x1
- ldrh r1, [r2, r1]
- and r1, r1, #0x8
-_020DF850:
- cmp r1, #0x0
- bne _020DF818
-_020DF858:
- cmp r3, #0x6c
- mov r0, #0x1
- bgt _020DF890
- cmp r3, #0x68
- blt _020DF884
- beq _020DF8AC
- cmp r3, #0x6a
- beq _020DF8F8
- cmp r3, #0x6c
- beq _020DF8C8
- b _020DF91C
-_020DF884:
- cmp r3, #0x4c
- beq _020DF8EC
- b _020DF91C
-_020DF890:
- cmp r3, #0x74
- bgt _020DF8A0
- beq _020DF904
- b _020DF91C
-_020DF8A0:
- cmp r3, #0x7a
- beq _020DF910
- b _020DF91C
-_020DF8AC:
- ldrsb r1, [r12, #0x1]
- mov r2, #0x2
- strb r2, [sp, #0x4]
- cmp r1, #0x68
- streqb r0, [sp, #0x4]
- ldreqsb r3, [r12, #0x1]!
- b _020DF920
-_020DF8C8:
- ldrsb r1, [r12, #0x1]
- mov r2, #0x3
- strb r2, [sp, #0x4]
- cmp r1, #0x6c
- bne _020DF920
- mov r1, #0x4
- strb r1, [sp, #0x4]
- ldrsb r3, [r12, #0x1]!
- b _020DF920
-_020DF8EC:
- mov r1, #0x9
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF8F8:
- mov r1, #0x6
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF904:
- mov r1, #0x8
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF910:
- mov r1, #0x7
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF91C:
- mov r0, #0x0
-_020DF920:
- cmp r0, #0x0
- ldrnesb r3, [r12, #0x1]!
- strb r3, [sp, #0x5]
- cmp r3, #0x61
- bgt _020DF974
- bge _020DFA5C
- cmp r3, #0x47
- bgt _020DF968
- subs r0, r3, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020DFB68
- b _020DFA5C
- b _020DFB68
- b _020DFB68
- b _020DFB68
- b _020DFAA4
- b _020DFA24
- b _020DFA94
-_020DF968:
- cmp r3, #0x58
- beq _020DF9E8
- b _020DFB68
-_020DF974:
- cmp r3, #0x63
- bgt _020DF984
- beq _020DFB04
- b _020DFB68
-_020DF984:
- sub r0, r3, #0x64
- cmp r0, #0x14
- addls pc, pc, r0, lsl #0x2
- b _020DFB68
-_020DF994:
- b _020DF9E8
-_020DF998:
- b _020DFAA4
-_020DF99C:
- b _020DFA24
-_020DF9A0:
- b _020DFA94
-_020DF9A4:
- b _020DFB68
-_020DF9A8:
- b _020DF9E8
-_020DF9AC:
- b _020DFB68
-_020DF9B0:
- b _020DFB68
-_020DF9B4:
- b _020DFB68
-_020DF9B8:
- b _020DFB68
-_020DF9BC:
- b _020DFB54
-_020DF9C0:
- b _020DF9E8
-_020DF9C4:
- b _020DFAE0
-_020DF9C8:
- b _020DFB68
-_020DF9CC:
- b _020DFB68
-_020DF9D0:
- b _020DFB30
-_020DF9D4:
- b _020DFB68
-_020DF9D8:
- b _020DF9E8
-_020DF9DC:
- b _020DFB68
-_020DF9E0:
- b _020DFB68
-_020DF9E4:
- b _020DF9E8
-_020DF9E8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020DFB70
- ldrb r0, [sp, #0x0]
- cmp r0, #0x2
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- b _020DFB70
-_020DFA24:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020DFB70
-_020DFA5C:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0xd
- streq r0, [sp, #0xc]
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- b _020DFB70
-_020DFA94:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
-_020DFAA4:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020DFB70
-_020DFAE0:
- mov r3, #0x78
- mov r2, #0x1
- mov r1, #0x3
- mov r0, #0x8
- strb r3, [sp, #0x5]
- strb r2, [sp, #0x3]
- strb r1, [sp, #0x4]
- str r0, [sp, #0xc]
- b _020DFB70
-_020DFB04:
- ldrb r1, [sp, #0x4]
- cmp r1, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- cmpeq r1, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x5]
- b _020DFB70
-_020DFB30:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020DFB70
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x5]
- b _020DFB70
-_020DFB54:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- b _020DFB70
-_020DFB68:
- mov r0, #0xff
- strb r0, [sp, #0x5]
-_020DFB70:
- add r0, sp, #0x0
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add r0, r12, #0x1
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020DFB88: .word UNK_0210430C
-_020DFB8C: .word 0x000001FD
-
- arm_func_start long2str
-long2str: ; 0x020DFB90
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x10
- movs r10, r0
- mov r0, #0x0
- mov r5, r1
- str r0, [sp, #0xc]
- ldr r7, [sp, #0x4c]
- mov r6, r0
- strb r0, [r5, #-0x1]!
- ldrb r0, [sp, #0x43]
- str r1, [sp, #0x0]
- ldrb r8, [sp, #0x45]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldrb r11, [sp, #0x41]
- str r0, [sp, #0x8]
- cmpeq r7, #0x0
- bne _020DFC04
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020DFBF0
- cmp r8, #0x6f
- beq _020DFC04
-_020DFBF0:
- add sp, sp, #0x10
- mov r0, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020DFC04:
- cmp r8, #0x69
- bgt _020DFC2C
- bge _020DFC60
- cmp r8, #0x58
- bgt _020DFC20
- beq _020DFC8C
- b _020DFC94
-_020DFC20:
- cmp r8, #0x64
- beq _020DFC60
- b _020DFC94
-_020DFC2C:
- cmp r8, #0x6f
- bgt _020DFC40
- moveq r4, #0x8
- moveq r11, #0x0
- b _020DFC94
-_020DFC40:
- cmp r8, #0x78
- bgt _020DFC94
- cmp r8, #0x75
- blt _020DFC94
- beq _020DFC80
- cmp r8, #0x78
- beq _020DFC8C
- b _020DFC94
-_020DFC60:
- cmp r10, #0x0
- mov r4, #0xa
- bge _020DFC94
- mov r0, #0x1
- cmp r10, #0x80000000
- rsbne r10, r10, #0x0
- str r0, [sp, #0xc]
- b _020DFC94
-_020DFC80:
- mov r4, #0xa
- mov r11, #0x0
- b _020DFC94
-_020DFC8C:
- mov r4, #0x10
- mov r11, #0x0
-_020DFC94:
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- mov r9, r1
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- cmp r9, #0xa
- mov r10, r0
- addlt r9, r9, #0x30
- blt _020DFCCC
- cmp r8, #0x78
- addeq r9, r9, #0x57
- addne r9, r9, #0x37
-_020DFCCC:
- cmp r10, #0x0
- strb r9, [r5, #-0x1]!
- add r6, r6, #0x1
- bne _020DFC94
- cmp r4, #0x8
- bne _020DFD00
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r5, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneb r0, [r5, #-0x1]!
- addne r6, r6, #0x1
-_020DFD00:
- ldrb r0, [sp, #0x40]
- cmp r0, #0x2
- bne _020DFD34
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x8]
- cmp r0, #0x0
- cmpeq r11, #0x0
- subne r7, r7, #0x1
- cmp r4, #0x10
- bne _020DFD34
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- subne r7, r7, #0x2
-_020DFD34:
- ldr r0, [sp, #0x0]
- sub r1, r0, r5
- ldr r0, _020DFDD8 ; =0x000001FD
- add r1, r7, r1
- cmp r1, r0
- addgt sp, sp, #0x10
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- cmp r6, r7
- bge _020DFD78
- mov r0, #0x30
-_020DFD68:
- add r6, r6, #0x1
- cmp r6, r7
- strb r0, [r5, #-0x1]!
- blt _020DFD68
-_020DFD78:
- cmp r4, #0x10
- bne _020DFD94
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneb r8, [r5, #-0x1]
- strneb r0, [r5, #-0x2]!
-_020DFD94:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r5, #-0x1]!
- bne _020DFDC4
- cmp r11, #0x1
- moveq r0, #0x2b
- streqb r0, [r5, #-0x1]!
- beq _020DFDC4
- cmp r11, #0x2
- moveq r0, #0x20
- streqb r0, [r5, #-0x1]!
-_020DFDC4:
- mov r0, r5
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020DFDD8: .word 0x000001FD
-
- arm_func_start longlong2str
-longlong2str: ; 0x020DFDDC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x18
- mov r9, r1
- mov r1, #0x0
- mov r10, r0
- mov r6, r2
- mov r0, r1
- strb r0, [r6, #-0x1]!
- ldr r0, [sp, #0x58]
- cmp r9, #0x0
- str r0, [sp, #0x10]
- ldrb r0, [sp, #0x4f]
- cmpeq r10, #0x0
- str r2, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x54]
- str r1, [sp, #0x14]
- str r0, [sp, #0x8]
- ldrb r0, [sp, #0x4d]
- mov r7, r1
- ldrb r8, [sp, #0x51]
- str r0, [sp, #0xc]
- ldreq r0, [sp, #0x10]
- cmpeq r0, #0x0
- bne _020DFE6C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020DFE58
- cmp r8, #0x6f
- beq _020DFE6C
-_020DFE58:
- add sp, sp, #0x18
- mov r0, r6
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020DFE6C:
- cmp r8, #0x69
- bgt _020DFE94
- bge _020DFEC4
- cmp r8, #0x58
- bgt _020DFE88
- beq _020DFF18
- b _020DFF24
-_020DFE88:
- cmp r8, #0x64
- beq _020DFEC4
- b _020DFF24
-_020DFE94:
- cmp r8, #0x6f
- bgt _020DFEA4
- beq _020DFEF8
- b _020DFF24
-_020DFEA4:
- cmp r8, #0x78
- bgt _020DFF24
- cmp r8, #0x75
- blt _020DFF24
- beq _020DFF08
- cmp r8, #0x78
- beq _020DFF18
- b _020DFF24
-_020DFEC4:
- subs r0, r10, #0x0
- sbcs r0, r9, #0x0
- mov r11, #0xa
- mov r5, #0x0
- bge _020DFF24
- cmp r9, #0x80000000
- cmpeq r10, r5
- beq _020DFEEC
- rsbs r10, r10, #0x0
- rsc r9, r9, #0x0
-_020DFEEC:
- mov r0, #0x1
- str r0, [sp, #0x14]
- b _020DFF24
-_020DFEF8:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x8
- b _020DFF24
-_020DFF08:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0xa
- b _020DFF24
-_020DFF18:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x10
-_020DFF24:
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ull_mod
- mov r4, r0
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ll_udiv
- mov r10, r0
- cmp r4, #0xa
- mov r9, r1
- addlt r0, r4, #0x30
- blt _020DFF70
- cmp r8, #0x78
- addeq r0, r4, #0x57
- addne r0, r4, #0x37
-_020DFF70:
- strb r0, [r6, #-0x1]!
- mov r0, #0x0
- cmp r9, r0
- cmpeq r10, r0
- add r7, r7, #0x1
- bne _020DFF24
- cmp r5, #0x0
- cmpeq r11, #0x8
- bne _020DFFB0
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r6, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneb r0, [r6, #-0x1]!
- addne r7, r7, #0x1
-_020DFFB0:
- ldrb r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _020E0000
- ldr r0, [sp, #0x8]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- ldreq r0, [sp, #0xc]
- cmpeq r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x1
- strne r0, [sp, #0x10]
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E0000
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x2
- strne r0, [sp, #0x10]
-_020E0000:
- ldr r0, [sp, #0x0]
- ldr r1, _020E00B8 ; =0x000001FD
- sub r2, r0, r6
- ldr r0, [sp, #0x10]
- add r0, r0, r2
- cmp r0, r1
- addgt sp, sp, #0x18
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldr r0, [sp, #0x10]
- cmp r7, r0
- bge _020E0050
- mov r1, #0x30
-_020E003C:
- ldr r0, [sp, #0x10]
- add r7, r7, #0x1
- cmp r7, r0
- strb r1, [r6, #-0x1]!
- blt _020E003C
-_020E0050:
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E0070
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneb r8, [r6, #-0x1]
- strneb r0, [r6, #-0x2]!
-_020E0070:
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r6, #-0x1]!
- bne _020E00A4
- ldr r0, [sp, #0xc]
- cmp r0, #0x1
- moveq r0, #0x2b
- streqb r0, [r6, #-0x1]!
- beq _020E00A4
- cmp r0, #0x2
- moveq r0, #0x20
- streqb r0, [r6, #-0x1]!
-_020E00A4:
- mov r0, r6
- add sp, sp, #0x18
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E00B8: .word 0x000001FD
-
- arm_func_start double2hex
-double2hex: ; 0x020E00BC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x44
- ldr r7, [sp, #0x80]
- ldr r0, _020E056C ; =0x000001FD
- mov r8, r2
- cmp r7, r0
- ldrb r6, [sp, #0x79]
- ldrb r5, [sp, #0x77]
- ldrb r4, [sp, #0x75]
- ldr r1, [sp, #0x68]
- ldr r2, [sp, #0x6c]
- addgt sp, sp, #0x44
- movgt r0, #0x0
- ldmgtia sp!, {r3-r10,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r10, #0x0
- mov r9, #0x20
- add r0, sp, #0x8
- add r3, sp, #0xc
- strb r10, [sp, #0x8]
- strh r9, [sp, #0xa]
- bl __num2dec_internal2
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- bl fabs
- mov r2, r0
- mov r0, r10
- mov r3, r1
- mov r1, r0
- bl _deq
- bne _020E0188
- ldr r3, _020E0570 ; =UNK_02106DA0
- sub r0, r8, #0x6
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- add sp, sp, #0x44
- strb r2, [r8, #-0x6]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r2, [r3, #0x4]
- ldrb r1, [r3, #0x5]
- strb r2, [r0, #0x4]
- strb r1, [r0, #0x5]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0188:
- ldrb r0, [sp, #0x11]
- cmp r0, #0x49
- bne _020E0298
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E0224
- cmp r6, #0x41
- sub r0, r8, #0x5
- bne _020E01E8
- ldr r3, _020E0574 ; =UNK_02106DA8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E01E8:
- ldr r3, _020E0578 ; =UNK_02106DB0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0224:
- cmp r6, #0x41
- sub r0, r8, #0x4
- bne _020E0264
- ldr r3, _020E057C ; =UNK_02106DB8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0264:
- ldr r3, _020E0580 ; =UNK_02106DBC
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0298:
- cmp r0, #0x4e
- bne _020E03A4
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E0330
- cmp r6, #0x41
- sub r0, r8, #0x5
- bne _020E02F4
- ldr r3, _020E0584 ; =UNK_02106DC0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E02F4:
- ldr r3, _020E0588 ; =UNK_02106DC8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0330:
- cmp r6, #0x41
- sub r0, r8, #0x4
- bne _020E0370
- ldr r3, _020E058C ; =UNK_02106DD0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0370:
- ldr r3, _020E0590 ; =UNK_02106DD4
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E03A4:
- mov r3, r10
- mov r1, #0x1
- mov r0, #0x64
- add r9, sp, #0x68
- strb r1, [sp, #0x34]
- strb r1, [sp, #0x35]
- strb r3, [sp, #0x36]
- strb r3, [sp, #0x37]
- strb r3, [sp, #0x38]
- str r3, [sp, #0x3c]
- str r1, [sp, #0x40]
- strb r0, [sp, #0x39]
-_020E03D4:
- rsb r1, r3, #0x7
- ldrsb r2, [r9, r3]
- ldrsb r0, [r9, r1]
- strb r0, [r9, r3]
- add r3, r3, #0x1
- strb r2, [r9, r1]
- cmp r3, #0x4
- blt _020E03D4
- ldrb r0, [sp, #0x69]
- ldrb r1, [sp, #0x68]
- ldr sb, _020E0594 ; =0x000007FF
- mov r0, r0, lsl #0x11
- orr r1, r0, r1, lsl #0x19
- add r0, sp, #0x34
- and lr, r9, r1, lsr #0x15
- sub r12, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r12, {r0-r3}
- rsb r0, r9, #0x400
- mov r1, r8
- add r0, lr, r0
- ldmia r12, {r2-r3}
- bl long2str
- cmp r6, #0x61
- moveq r1, #0x70
- movne r1, #0x50
- strb r1, [r0, #-0x1]!
- mov r1, r7, lsl #0x2
- mov lr, r7
- cmp r7, #0x1
- add r8, r1, #0xb
- add r12, sp, #0x68
- blt _020E04E4
- mov r9, #0x30
-_020E045C:
- cmp r8, #0x40
- bge _020E04CC
- ldrb r1, [r12, r8, asr #0x3]
- and r2, r8, #0x7
- rsb r3, r2, #0x7
- mov r2, r1, asr r3
- sub r10, r8, #0x4
- bic r1, r8, #0x7
- bic r10, r10, #0x7
- cmp r1, r10
- add r10, r12, r8, asr #0x3
- and r1, r2, #0xff
- beq _020E04A0
- ldrb r2, [r10, #-0x1]
- mov r2, r2, lsl #0x8
- orr r1, r1, r2, asr r3
- and r1, r1, #0xff
-_020E04A0:
- and r1, r1, #0xf
- cmp r1, #0xa
- addcc r1, r1, #0x30
- andcc r1, r1, #0xff
- blo _020E04D0
- cmp r6, #0x61
- addeq r1, r1, #0x57
- andeq r1, r1, #0xff
- addne r1, r1, #0x37
- andne r1, r1, #0xff
- b _020E04D0
-_020E04CC:
- mov r1, r9
-_020E04D0:
- sub lr, lr, #0x1
- cmp lr, #0x1
- strb r1, [r0, #-0x1]!
- sub r8, r8, #0x4
- bge _020E045C
-_020E04E4:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r0, #-0x1]!
- mov r1, #0x31
- strb r1, [r0, #-0x1]
- cmp r6, #0x61
- moveq r1, #0x78
- movne r1, #0x58
- strb r1, [r0, #-0x2]!
- mov r1, #0x30
- strb r1, [r0, #-0x1]!
- ldrsb r1, [sp, #0xc]
- cmp r1, #0x0
- movne r1, #0x2d
- strneb r1, [r0, #-0x1]!
- addne sp, sp, #0x44
- ldmneia sp!, {r3-r10,lr}
- addne sp, sp, #0x10
- bxne lr
- cmp r4, #0x1
- moveq r1, #0x2b
- streqb r1, [r0, #-0x1]!
- addeq sp, sp, #0x44
- ldmeqia sp!, {r3-r10,lr}
- addeq sp, sp, #0x10
- bxeq lr
- cmp r4, #0x2
- moveq r1, #0x20
- streqb r1, [r0, #-0x1]!
- add sp, sp, #0x44
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E056C: .word 0x000001FD
-_020E0570: .word UNK_02106DA0
-_020E0574: .word UNK_02106DA8
-_020E0578: .word UNK_02106DB0
-_020E057C: .word UNK_02106DB8
-_020E0580: .word UNK_02106DBC
-_020E0584: .word UNK_02106DC0
-_020E0588: .word UNK_02106DC8
-_020E058C: .word UNK_02106DD0
-_020E0590: .word UNK_02106DD4
-_020E0594: .word 0x000007FF
-
- arm_func_start round_decimal
-round_decimal: ; 0x020E0598
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- bge _020E05C0
-_020E05A4:
- mov r1, #0x0
- strh r1, [r0, #0x2]
- mov r1, #0x1
- strb r1, [r0, #0x4]
- mov r1, #0x30
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E05C0:
- ldrb lr, [r0, #0x4]
- cmp r1, lr
- ldmgeia sp!, {r4,pc}
- add r12, r0, #0x5
- add r2, r12, r1
- add r2, r2, #0x1
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x5
- bne _020E0620
- add r12, r12, lr
-_020E05F4:
- sub r12, r12, #0x1
- cmp r12, r2
- bls _020E060C
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x30
- beq _020E05F4
-_020E060C:
- cmp r12, r2
- ldreqsb r3, [r2, #-0x1]
- andeq r4, r3, #0x1
- movne r4, #0x1
- b _020E0628
-_020E0620:
- movgt r4, #0x1
- movle r4, #0x0
-_020E0628:
- cmp r1, #0x0
- beq _020E0684
- mov r12, #0x0
- mov lr, #0x1
-_020E0638:
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- add r3, r3, r4
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x9
- movgt r4, lr
- movle r4, r12
- cmp r4, #0x0
- bne _020E0668
- cmp r3, #0x0
- bne _020E0670
-_020E0668:
- sub r1, r1, #0x1
- b _020E067C
-_020E0670:
- add r3, r3, #0x30
- strb r3, [r2, #0x0]
- b _020E0684
-_020E067C:
- cmp r1, #0x0
- bne _020E0638
-_020E0684:
- cmp r4, #0x0
- beq _020E06AC
- ldrsh r3, [r0, #0x2]
- mov r2, #0x1
- mov r1, #0x31
- add r3, r3, #0x1
- strh r3, [r0, #0x2]
- strb r2, [r0, #0x4]
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E06AC:
- cmp r1, #0x0
- beq _020E05A4
- strb r1, [r0, #0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start float2str
-float2str: ; 0x020E06BC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x2c
- ldr r7, [sp, #0x68]
- ldr r3, _020E0DF4 ; =0x000001FD
- ldrb r6, [sp, #0x61]
- ldrb r5, [sp, #0x5f]
- ldrb r4, [sp, #0x5d]
- cmp r7, r3
- mov r10, r0
- mov r8, r1
- mov r9, r2
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r12, #0x0
- mov r11, #0x20
- add r0, sp, #0x0
- add r3, sp, #0x4
- mov r1, r10
- mov r2, r8
- strb r12, [sp, #0x0]
- strh r11, [sp, #0x2]
- bl __num2dec_internal2
- ldrb r0, [sp, #0x8]
- add r1, sp, #0x9
- add r0, r1, r0
- b _020E074C
-_020E0734:
- ldrb r2, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r2, r2, #0x1
- add r1, r1, #0x1
- strb r2, [sp, #0x8]
- strh r1, [sp, #0x6]
-_020E074C:
- ldrb r1, [sp, #0x8]
- cmp r1, #0x1
- bls _020E0764
- ldrsb r1, [r0, #-0x1]!
- cmp r1, #0x30
- beq _020E0734
-_020E0764:
- ldrb r0, [sp, #0x9]
- cmp r0, #0x30
- beq _020E0784
- cmp r0, #0x49
- beq _020E0790
- cmp r0, #0x4e
- beq _020E08F0
- b _020E0A44
-_020E0784:
- mov r0, #0x0
- strh r0, [sp, #0x6]
- b _020E0A44
-_020E0790:
- mov r2, #0x0
- mov r0, r10
- mov r1, r8
- mov r3, r2
- bl _dls
- bhs _020E0854
- cmp r6, #0x0
- sub r0, r9, #0x5
- blt _020E07BC
- cmp r6, #0x80
- blt _020E07C4
-_020E07BC:
- mov r1, #0x0
- b _020E07D4
-_020E07C4:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E07D4:
- cmp r1, #0x0
- beq _020E0818
- ldr r3, _020E0DFC ; =UNK_02106DA8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0818:
- ldr r3, _020E0E00 ; =UNK_02106DB0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0854:
- cmp r6, #0x0
- sub r0, r9, #0x4
- blt _020E0868
- cmp r6, #0x80
- blt _020E0870
-_020E0868:
- mov r1, #0x0
- b _020E0880
-_020E0870:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E0880:
- cmp r1, #0x0
- beq _020E08BC
- ldr r3, _020E0E04 ; =UNK_02106DB8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E08BC:
- ldr r3, _020E0E08 ; =UNK_02106DBC
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E08F0:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E09A8
- cmp r6, #0x0
- sub r0, r9, #0x5
- blt _020E0910
- cmp r6, #0x80
- blt _020E0918
-_020E0910:
- mov r1, #0x0
- b _020E0928
-_020E0918:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E0928:
- cmp r1, #0x0
- beq _020E096C
- ldr r3, _020E0E0C ; =UNK_02106DC0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E096C:
- ldr r3, _020E0E10 ; =UNK_02106DC8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E09A8:
- cmp r6, #0x0
- sub r0, r9, #0x4
- blt _020E09BC
- cmp r6, #0x80
- blt _020E09C4
-_020E09BC:
- mov r1, #0x0
- b _020E09D4
-_020E09C4:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E09D4:
- cmp r1, #0x0
- beq _020E0A10
- ldr r3, _020E0E14 ; =UNK_02106DD0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0A10:
- ldr r3, _020E0E18 ; =UNK_02106DD4
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0A44:
- ldrb r0, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r8, r9, #0x1
- sub r0, r0, #0x1
- add r0, r1, r0
- strh r0, [sp, #0x6]
- mov r0, #0x0
- strb r0, [r8, #0x0]
- cmp r6, #0x65
- bgt _020E0A98
- bge _020E0B24
- cmp r6, #0x47
- bgt _020E0DE0
- cmp r6, #0x45
- blt _020E0DE0
- beq _020E0B24
- cmp r6, #0x46
- beq _020E0C6C
- cmp r6, #0x47
- beq _020E0AB0
- b _020E0DE0
-_020E0A98:
- cmp r6, #0x66
- bgt _020E0AA8
- beq _020E0C6C
- b _020E0DE0
-_020E0AA8:
- cmp r6, #0x67
- bne _020E0DE0
-_020E0AB0:
- ldrb r0, [sp, #0x8]
- cmp r0, r7
- ble _020E0AC8
- add r0, sp, #0x4
- mov r1, r7
- bl round_decimal
-_020E0AC8:
- ldrsh r2, [sp, #0x6]
- mvn r0, #0x3
- cmp r2, r0
- blt _020E0AE0
- cmp r2, r7
- blt _020E0B00
-_020E0AE0:
- cmp r5, #0x0
- ldreqb r0, [sp, #0x8]
- subne r7, r7, #0x1
- subeq r7, r0, #0x1
- cmp r6, #0x67
- moveq r6, #0x65
- movne r6, #0x45
- b _020E0B24
-_020E0B00:
- cmp r5, #0x0
- addne r0, r2, #0x1
- subne r7, r7, r0
- bne _020E0C6C
- ldrb r1, [sp, #0x8]
- add r0, r2, #0x1
- subs r7, r1, r0
- movmi r7, #0x0
- b _020E0C6C
-_020E0B24:
- ldrb r0, [sp, #0x8]
- add r1, r7, #0x1
- cmp r0, r1
- ble _020E0B3C
- add r0, sp, #0x4
- bl round_decimal
-_020E0B3C:
- ldrsh lr, [sp, #0x6]
- mov r11, #0x2b
- mov r10, #0x0
- cmp lr, #0x0
- rsblt lr, lr, #0x0
- movlt r11, #0x2d
- ldr r3, _020E0E1C ; =0x66666667
- mov r0, #0xa
- b _020E0B90
-_020E0B60:
- mov r1, lr, lsr #0x1f
- smull r2, r12, r3, lr
- add r12, r1, r12, asr #0x2
- smull r1, r2, r0, r12
- sub r12, lr, r1
- add r1, r12, #0x30
- strb r1, [r8, #-0x1]!
- mov r2, lr
- smull r1, lr, r3, r2
- mov r1, r2, lsr #0x1f
- add lr, r1, lr, asr #0x2
- add r10, r10, #0x1
-_020E0B90:
- cmp lr, #0x0
- bne _020E0B60
- cmp r10, #0x2
- blt _020E0B60
- strb r11, [r8, #-0x1]
- strb r6, [r8, #-0x2]!
- sub r1, r9, r8
- ldr r0, _020E0DF4 ; =0x000001FD
- add r1, r7, r1
- cmp r1, r0
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldrb r1, [sp, #0x8]
- add r0, r7, #0x1
- cmp r1, r0
- bge _020E0BFC
- add r0, r7, #0x2
- sub r0, r0, r1
- subs r1, r0, #0x1
- beq _020E0BFC
- mov r0, #0x30
-_020E0BF0:
- strb r0, [r8, #-0x1]!
- subs r1, r1, #0x1
- bne _020E0BF0
-_020E0BFC:
- ldrb r1, [sp, #0x8]
- add r0, sp, #0x9
- add r2, r0, r1
- subs r1, r1, #0x1
- beq _020E0C20
-_020E0C10:
- ldrsb r0, [r2, #-0x1]!
- subs r1, r1, #0x1
- strb r0, [r8, #-0x1]!
- bne _020E0C10
-_020E0C20:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r0, #0x2e
- strneb r0, [r8, #-0x1]!
- ldrb r0, [sp, #0x9]
- strb r0, [r8, #-0x1]!
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E0DE0
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E0DE0
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
- b _020E0DE0
-_020E0C6C:
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
- cmp r1, r7
- ble _020E0CAC
- sub r1, r1, r7
- add r0, sp, #0x4
- sub r1, r2, r1
- bl round_decimal
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
-_020E0CAC:
- adds r0, r3, #0x1
- movmi r0, #0x0
- ldr r3, _020E0DF4 ; =0x000001FD
- add r6, r0, r1
- cmp r6, r3
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- add r3, sp, #0x9
- sub r6, r7, r1
- cmp r6, #0x0
- add r2, r3, r2
- mov r9, #0x0
- ble _020E0D00
- mov r3, #0x30
-_020E0CF0:
- add r9, r9, #0x1
- cmp r9, r6
- strb r3, [r8, #-0x1]!
- blt _020E0CF0
-_020E0D00:
- mov r6, #0x0
- b _020E0D14
-_020E0D08:
- ldrsb r3, [r2, #-0x1]!
- add r6, r6, #0x1
- strb r3, [r8, #-0x1]!
-_020E0D14:
- cmp r6, r1
- ldrltb r3, [sp, #0x8]
- cmplt r6, r3
- blt _020E0D08
- cmp r6, r1
- bge _020E0D40
- mov r3, #0x30
-_020E0D30:
- add r6, r6, #0x1
- cmp r6, r1
- strb r3, [r8, #-0x1]!
- blt _020E0D30
-_020E0D40:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r8, #-0x1]!
- cmp r0, #0x0
- beq _020E0DA8
- ldrb r1, [sp, #0x8]
- mov r5, #0x0
- sub r1, r0, r1
- cmp r1, #0x0
- ble _020E0D88
- mov r3, #0x30
-_020E0D70:
- strb r3, [r8, #-0x1]!
- ldrb r1, [sp, #0x8]
- add r5, r5, #0x1
- sub r1, r0, r1
- cmp r5, r1
- blt _020E0D70
-_020E0D88:
- cmp r5, r0
- bge _020E0DB0
-_020E0D90:
- ldrsb r1, [r2, #-0x1]!
- add r5, r5, #0x1
- cmp r5, r0
- strb r1, [r8, #-0x1]!
- blt _020E0D90
- b _020E0DB0
-_020E0DA8:
- mov r0, #0x30
- strb r0, [r8, #-0x1]!
-_020E0DB0:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E0DE0
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E0DE0
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
-_020E0DE0:
- mov r0, r8
- add sp, sp, #0x2c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E0DF4: .word 0x000001FD
-_020E0DF8: .word UNK_0210430C
-_020E0DFC: .word UNK_02106DA8
-_020E0E00: .word UNK_02106DB0
-_020E0E04: .word UNK_02106DB8
-_020E0E08: .word UNK_02106DBC
-_020E0E0C: .word UNK_02106DC0
-_020E0E10: .word UNK_02106DC8
-_020E0E14: .word UNK_02106DD0
-_020E0E18: .word UNK_02106DD4
-_020E0E1C: .word 0x66666667
-
- arm_func_start __pformatter
-__pformatter:
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x22c
- mov r3, #0x20
- mov r11, r2
- strb r3, [sp, #0x19]
- ldrsb r2, [r11, #0x0]
- mov r9, r0
- mov r8, r1
- cmp r2, #0x0
- mov r10, #0x0
- beq _020E1628
-_020E0E50:
- mov r0, r11
- mov r1, #0x25
- bl strchr
- str r0, [sp, #0xc]
- cmp r0, #0x0
- bne _020E0EA4
- mov r0, r11
- bl strlen
- movs r2, r0
- add r10, r10, r2
- beq _020E1628
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- bne _020E1628
- add sp, sp, #0x22c
- mvn r0, #0x0
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0EA4:
- subs r2, r0, r11
- add r10, r10, r2
- beq _020E0ED4
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E0ED4:
- ldr r0, [sp, #0xc]
- add r1, sp, #0x25c
- add r2, sp, #0x1c
- bl parse_format_printf
- ldrb r1, [sp, #0x21]
- mov r11, r0
- cmp r1, #0x61
- bgt _020E0F40
- bge _020E12A4
- cmp r1, #0x47
- bgt _020E0F34
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E0F28
- b _020E12A4
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E123C
- b _020E123C
- b _020E123C
-_020E0F28:
- cmp r1, #0x25
- beq _020E1478
- b _020E148C
-_020E0F34:
- cmp r1, #0x58
- beq _020E1100
- b _020E148C
-_020E0F40:
- cmp r1, #0x75
- bgt _020E0FA8
- subs r0, r1, #0x64
- addpl pc, pc, r0, lsl #0x2
- b _020E0F9C
- b _020E0FC0
- b _020E123C
- b _020E123C
- b _020E123C
- b _020E148C
- b _020E0FC0
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E13CC
- b _020E1100
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E130C
- b _020E148C
- b _020E1100
-_020E0F9C:
- cmp r1, #0x63
- beq _020E1458
- b _020E148C
-_020E0FA8:
- cmp r1, #0x78
- bgt _020E0FB8
- beq _020E1100
- b _020E148C
-_020E0FB8:
- cmp r1, #0xff
- b _020E148C
-_020E0FC0:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x3
- bne _020E0FE0
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E0FE0:
- cmp r0, #0x4
- bne _020E1008
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E1078
-_020E1008:
- cmp r0, #0x6
- bne _020E1030
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E1078
-_020E1030:
- cmp r0, #0x7
- bne _020E104C
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E104C:
- cmp r0, #0x8
- bne _020E1068
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E1068:
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
-_020E1078:
- cmp r0, #0x2
- moveq r1, r5, lsl #0x10
- moveq r5, r1, asr #0x10
- cmp r0, #0x1
- moveq r1, r5, lsl #0x18
- moveq r5, r1, asr #0x18
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x1c
- bne _020E10CC
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x22c
- bl longlong2str
- movs r7, r0
- beq _020E148C
- b _020E10F0
-_020E10CC:
- sub r4, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- add r1, sp, #0x22c
- mov r0, r5
- ldmia r4, {r2-r3}
- bl long2str
- movs r7, r0
- beq _020E148C
-_020E10F0:
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E1100:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x3
- bne _020E1120
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E1120:
- cmp r0, #0x4
- bne _020E1148
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E11B8
-_020E1148:
- cmp r0, #0x6
- bne _020E1170
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E11B8
-_020E1170:
- cmp r0, #0x7
- bne _020E118C
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E118C:
- cmp r0, #0x8
- bne _020E11A8
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E11A8:
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
-_020E11B8:
- cmp r0, #0x2
- moveq r1, r5, lsl #0x10
- moveq r5, r1, lsr #0x10
- cmp r0, #0x1
- andeq r5, r5, #0xff
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x1c
- bne _020E1208
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x22c
- bl longlong2str
- movs r7, r0
- beq _020E148C
- b _020E122C
-_020E1208:
- sub r4, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- add r1, sp, #0x22c
- mov r0, r5
- ldmia r4, {r2-r3}
- bl long2str
- movs r7, r0
- beq _020E148C
-_020E122C:
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E123C:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x9
- ldrne r0, [sp, #0x25c]
- addne r0, r0, #0x8
- strne r0, [sp, #0x25c]
- bne _020E1260
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x8
- str r0, [sp, #0x25c]
-_020E1260:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x1c
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x22c
- bl float2str
- movs r7, r0
- beq _020E148C
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E12A4:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x9
- ldrne r0, [sp, #0x25c]
- addne r0, r0, #0x8
- strne r0, [sp, #0x25c]
- bne _020E12C8
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x8
- str r0, [sp, #0x25c]
-_020E12C8:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x1c
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x22c
- bl double2hex
- movs r7, r0
- beq _020E148C
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E130C:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x5
- bne _020E134C
- ldr r0, [sp, #0x25c]
- mov r2, #0x200
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r1, [r0, #-0x4]
- add r0, sp, #0x2c
- cmp r1, #0x0
- ldreq r1, _020E163C ; =UNK_02106DD8
- bl wcstombs
- cmp r0, #0x0
- blt _020E148C
- add r7, sp, #0x2c
- b _020E135C
-_020E134C:
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r7, [r0, #-0x4]
-_020E135C:
- ldrb r0, [sp, #0x1f]
- cmp r7, #0x0
- ldreq r7, _020E1640 ; =UNK_02106DDC
- cmp r0, #0x0
- beq _020E1390
- ldrb r0, [sp, #0x1e]
- ldrb r6, [r7], #0x1
- cmp r0, #0x0
- beq _020E14D8
- ldr r0, [sp, #0x28]
- cmp r6, r0
- movgt r6, r0
- b _020E14D8
-_020E1390:
- ldrb r0, [sp, #0x1e]
- cmp r0, #0x0
- beq _020E13BC
- ldr r6, [sp, #0x28]
- mov r0, r7
- mov r2, r6
- mov r1, #0x0
- bl memchr
- cmp r0, #0x0
- subne r6, r0, r7
- b _020E14D8
-_020E13BC:
- mov r0, r7
- bl strlen
- mov r6, r0
- b _020E14D8
-_020E13CC:
- ldr r1, [sp, #0x25c]
- ldrb r0, [sp, #0x20]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r1, [r1, #-0x4]
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020E161C
-_020E13EC:
- b _020E1410
-_020E13F0:
- b _020E161C
-_020E13F4:
- b _020E1418
-_020E13F8:
- b _020E1420
-_020E13FC:
- b _020E1448
-_020E1400:
- b _020E161C
-_020E1404:
- b _020E1428
-_020E1408:
- b _020E1438
-_020E140C:
- b _020E1440
-_020E1410:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1418:
- strh r10, [r1, #0x0]
- b _020E161C
-_020E1420:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1428:
- str r10, [r1, #0x0]
- mov r0, r10, asr #0x1f
- str r0, [r1, #0x4]
- b _020E161C
-_020E1438:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1440:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1448:
- str r10, [r1, #0x0]
- mov r0, r10, asr #0x1f
- str r0, [r1, #0x4]
- b _020E161C
-_020E1458:
- ldr r0, [sp, #0x25c]
- add r7, sp, #0x2c
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r0, [r0, #-0x4]
- mov r6, #0x1
- strb r0, [sp, #0x2c]
- b _020E14D8
-_020E1478:
- mov r0, #0x25
- strb r0, [sp, #0x2c]
- add r7, sp, #0x2c
- mov r6, #0x1
- b _020E14D8
-_020E148C:
- ldr r0, [sp, #0xc]
- bl strlen
- movs r4, r0
- beq _020E14C4
- ldr r1, [sp, #0xc]
- mov r0, r8
- mov r2, r4
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E14C4:
- add sp, sp, #0x22c
- add r0, r10, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E14D8:
- ldrb r0, [sp, #0x1c]
- mov r4, r6
- cmp r0, #0x0
- beq _020E158C
- cmp r0, #0x2
- moveq r0, #0x30
- movne r0, #0x20
- strb r0, [sp, #0x19]
- ldrsb r0, [r7, #0x0]
- cmp r0, #0x2b
- cmpne r0, #0x2d
- cmpne r0, #0x20
- bne _020E1548
- ldrsb r0, [sp, #0x19]
- cmp r0, #0x30
- bne _020E1548
- mov r0, r8
- mov r1, r7
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- add r7, r7, #0x1
- sub r6, r6, #0x1
-_020E1548:
- ldr r0, [sp, #0x24]
- cmp r4, r0
- bge _020E158C
-_020E1554:
- mov r0, r8
- add r1, sp, #0x19
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x24]
- add r4, r4, #0x1
- cmp r4, r0
- blt _020E1554
-_020E158C:
- cmp r6, #0x0
- beq _020E15BC
- mov r0, r8
- mov r1, r7
- mov r2, r6
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E15BC:
- ldrb r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _020E1618
- ldr r0, [sp, #0x24]
- cmp r4, r0
- bge _020E1618
- mov r6, #0x20
- add r7, sp, #0x18
-_020E15DC:
- mov r0, r8
- mov r1, r7
- mov r2, #0x1
- strb r6, [sp, #0x18]
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x24]
- add r4, r4, #0x1
- cmp r4, r0
- blt _020E15DC
-_020E1618:
- add r10, r10, r4
-_020E161C:
- ldrsb r0, [r11, #0x0]
- cmp r0, #0x0
- bne _020E0E50
-_020E1628:
- mov r0, r10
- add sp, sp, #0x22c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E163C: .word UNK_02106DD8
-_020E1640: .word UNK_02106DDC
-
- arm_func_start __FileWrite
-__FileWrite: ; 0x020E1644
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- mov r0, r1
- mov r3, r5
- mov r1, #0x1
- mov r4, r2
- bl __fwrite
- cmp r4, r0
- movne r5, #0x0
- mov r0, r5
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __StringWrite
-__StringWrite: ; 0x020E1670
- stmdb sp!, {r3-r5,lr}
- mov r4, r0
- ldr r3, [r4, #0x8]
- mov r5, r2
- ldr r2, [r4, #0x4]
- add r0, r3, r5
- cmp r0, r2
- ldr r0, [r4, #0x0]
- subhi r5, r2, r3
- mov r2, r5
- add r0, r0, r3
- bl memcpy
- ldr r1, [r4, #0x8]
- mov r0, #0x1
- add r1, r1, r5
- str r1, [r4, #0x8]
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start printf
-printf: ; 0x020E16B4
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r0, _020E17B4 ; =UNK_02106AA4
- mvn r1, #0x0
- bl fwide
- cmp r0, #0x0
- mvnge r0, #0x0
- ldmgeia sp!, {r4,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020E1710
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0xc]
- str r2, [r0, #0xc]
- b _020E1768
-_020E1710:
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0xc]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020E1740
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r1, [r0, #0xc]
- add r1, r1, #0x1
- str r1, [r0, #0xc]
- b _020E1768
-_020E1740:
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_LockMutex
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0xc]
- str r2, [r0, #0xc]
-_020E1768:
- add r0, sp, #0x8
- bic r3, r0, #0x3
- ldr r2, [sp, #0x8]
- ldr r0, _020E17C8 ; =__FileWrite
- ldr r1, _020E17B4 ; =UNK_02106AA4
- add r3, r3, #0x4
- bl __pformatter
- ldr r1, _020E17C4 ; =UNK_021D70AC
- mov r4, r0
- ldr r0, [r1, #0xc]
- subs r0, r0, #0x1
- str r0, [r1, #0xc]
- bne _020E17A4
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_UnlockMutex
-_020E17A4:
- mov r0, r4
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E17B4: .word UNK_02106AA4
-_020E17B8: .word UNK_021D7118
-_020E17BC: .word OSi_ThreadInfo
-_020E17C0: .word UNK_021D7088
-_020E17C4: .word UNK_021D70AC
-_020E17C8: .word __FileWrite
-
- arm_func_start vsnprintf
-vsnprintf: ; 0x020E17CC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r4, r1
- mov r12, #0x0
- ldr r0, _020E1830 ; =__StringWrite
- add r1, sp, #0x0
- str r5, [sp, #0x0]
- str r4, [sp, #0x4]
- str r12, [sp, #0x8]
- bl __pformatter
- cmp r5, #0x0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4-r5,pc}
- cmp r0, r4
- movcc r1, #0x0
- addcc sp, sp, #0xc
- strccb r1, [r5, r0]
- ldmccia sp!, {r4-r5,pc}
- cmp r4, #0x0
- addne r1, r5, r4
- movne r2, #0x0
- strneb r2, [r1, #-0x1]
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E1830: .word __StringWrite
-
- arm_func_start snprintf
-snprintf: ; 0x020E1834
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r3, sp, #0x10
- bic r3, r3, #0x3
- ldr r2, [sp, #0x10]
- add r3, r3, #0x4
- bl vsnprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start sprintf
-sprintf: ; 0x020E185C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r1, sp, #0xc
- bic r1, r1, #0x3
- add r3, r1, #0x4
- ldr r2, [sp, #0xc]
- mvn r1, #0x0
- bl vsnprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start qsort
-qsort: ; 0x020E1888
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x10
- mov r9, r1
- cmp r9, #0x2
- mov r10, r0
- mov r8, r2
- mov r7, r3
- addcc sp, sp, #0x10
- ldmccia sp!, {r3-r11,pc}
- mov r0, r9, lsr #0x1
- add r11, r0, #0x1
- sub r0, r11, #0x1
- mla r0, r8, r0, r10
- sub r2, r9, #0x1
- str r0, [sp, #0xc]
- mla r0, r8, r2, r10
- str r0, [sp, #0x8]
- mul r0, r11, r8
- mvn r1, #0x0
- str r0, [sp, #0x4]
- mul r0, r8, r1
- str r0, [sp, #0x0]
-_020E18E0:
- cmp r11, #0x1
- bls _020E1908
- ldr r0, [sp, #0x4]
- sub r11, r11, #0x1
- sub r0, r0, r8
- str r0, [sp, #0x4]
- ldr r0, [sp, #0xc]
- sub r0, r0, r8
- str r0, [sp, #0xc]
- b _020E1950
-_020E1908:
- mov r2, r8
- ldr r4, [sp, #0x8]
- ldr r3, [sp, #0xc]
- cmp r8, #0x0
- beq _020E1934
-_020E191C:
- ldrsb r0, [r4, #0x0]
- ldrsb r1, [r3, #0x0]
- subs r2, r2, #0x1
- strb r0, [r3], #0x1
- strb r1, [r4], #0x1
- bne _020E191C
-_020E1934:
- sub r9, r9, #0x1
- cmp r9, #0x1
- addeq sp, sp, #0x10
- ldmeqia sp!, {r3-r11,pc}
- ldr r0, [sp, #0x8]
- sub r0, r0, r8
- str r0, [sp, #0x8]
-_020E1950:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x0]
- mov r4, r11
- add r0, r1, r0
- cmp r9, r11, lsl #0x1
- add r5, r10, r0
- blo _020E18E0
-_020E196C:
- mov r4, r4, lsl #0x1
- sub r0, r4, #0x1
- mov r6, r5
- mla r5, r8, r0, r10
- cmp r9, r4
- bls _020E199C
- mov r0, r5
- add r1, r5, r8
- blx r7
- cmp r0, #0x0
- addlt r4, r4, #0x1
- addlt r5, r5, r8
-_020E199C:
- mov r0, r6
- mov r1, r5
- blx r7
- cmp r0, #0x0
- bge _020E18E0
- mov r2, r8
- mov r3, r5
- cmp r8, #0x0
- beq _020E19D8
-_020E19C0:
- ldrsb r1, [r6, #0x0]
- ldrsb r0, [r3, #0x0]
- subs r2, r2, #0x1
- strb r0, [r6], #0x1
- strb r1, [r3], #0x1
- bne _020E19C0
-_020E19D8:
- cmp r9, r4, lsl #0x1
- bhs _020E196C
- b _020E18E0
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start rand
-rand: ; 0x020E19EC
- ldr r2, _020E1A14 ; =UNK_02106DE0
- ldr r0, _020E1A18 ; =0x41C64E6D
- ldr r3, [r2, #0x0]
- ldr r1, _020E1A1C ; =0x00007FFF
- mul r0, r3, r0
- add r0, r0, #0x39
- add r0, r0, #0x3000
- str r0, [r2, #0x0]
- and r0, r1, r0, lsr #0x10
- bx lr
- .balign 4
-_020E1A14: .word UNK_02106DE0
-_020E1A18: .word 0x41C64E6D
-_020E1A1C: .word 0x00007FFF
-
- arm_func_start srand
-srand: ; 0x020E1A20
- ldr r1, _020E1A2C ; =UNK_02106DE0
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020E1A2C: .word UNK_02106DE0
-
- arm_func_start parse_format_scanf
-parse_format_scanf: ; 0x020E1A30
- stmdb sp!, {r3-r7,lr}
- sub sp, sp, #0x28
- ldr r6, _020E1F20 ; =UNK_0210440C
- add r5, sp, #0x0
- mov r7, r0
- mov lr, r1
- mov r4, r5
- ldmia r6!, {r0-r3}
- stmia r5!, {r0-r3}
- ldmia r6!, {r0-r3}
- stmia r5!, {r0-r3}
- ldmia r6, {r0-r1}
- stmia r5, {r0-r1}
- ldrsb r0, [r7, #0x1]
- add r12, r7, #0x1
- cmp r0, #0x25
- bne _020E1A9C
- strb r0, [sp, #0x3]
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add sp, sp, #0x28
- add r0, r12, #0x1
- ldmia sp!, {r3-r7,pc}
-_020E1A9C:
- cmp r0, #0x2a
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- ldreqsb r0, [r12, #0x1]!
- cmp r0, #0x0
- blt _020E1ABC
- cmp r0, #0x80
- blt _020E1AC4
-_020E1ABC:
- mov r1, #0x0
- b _020E1AD4
-_020E1AC4:
- ldr r1, _020E1F24 ; =UNK_0210430C
- mov r2, r0, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x8
-_020E1AD4:
- cmp r1, #0x0
- beq _020E1B74
- mov r1, #0x0
- ldr r3, _020E1F24 ; =UNK_0210430C
- str r1, [sp, #0x4]
- mov r4, r1
- mov r1, #0xa
-_020E1AF0:
- ldr r2, [sp, #0x4]
- sub r0, r0, #0x30
- mla r0, r2, r1, r0
- str r0, [sp, #0x4]
- ldrsb r0, [r12, #0x1]!
- cmp r0, #0x0
- blt _020E1B14
- cmp r0, #0x80
- blt _020E1B1C
-_020E1B14:
- mov r2, r4
- b _020E1B28
-_020E1B1C:
- mov r2, r0, lsl #0x1
- ldrh r2, [r3, r2]
- and r2, r2, #0x8
-_020E1B28:
- cmp r2, #0x0
- bne _020E1AF0
- ldr r1, [sp, #0x4]
- cmp r1, #0x0
- bne _020E1B6C
- mov r0, #0xff
- add r4, sp, #0x0
- strb r0, [sp, #0x3]
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add sp, sp, #0x28
- add r0, r12, #0x1
- ldmia sp!, {r3-r7,pc}
-_020E1B6C:
- mov r1, #0x1
- strb r1, [sp, #0x1]
-_020E1B74:
- cmp r0, #0x6c
- mov r1, #0x1
- bgt _020E1BAC
- cmp r0, #0x68
- blt _020E1BA0
- beq _020E1BC8
- cmp r0, #0x6a
- beq _020E1C14
- cmp r0, #0x6c
- beq _020E1BE4
- b _020E1C38
-_020E1BA0:
- cmp r0, #0x4c
- beq _020E1C08
- b _020E1C38
-_020E1BAC:
- cmp r0, #0x74
- bgt _020E1BBC
- beq _020E1C2C
- b _020E1C38
-_020E1BBC:
- cmp r0, #0x7a
- beq _020E1C20
- b _020E1C38
-_020E1BC8:
- mov r2, #0x2
- strb r2, [sp, #0x2]
- ldrsb r2, [r12, #0x1]
- cmp r2, #0x68
- streqb r1, [sp, #0x2]
- ldreqsb r0, [r12, #0x1]!
- b _020E1C3C
-_020E1BE4:
- mov r2, #0x3
- strb r2, [sp, #0x2]
- ldrsb r2, [r12, #0x1]
- cmp r2, #0x6c
- bne _020E1C3C
- mov r0, #0x7
- strb r0, [sp, #0x2]
- ldrsb r0, [r12, #0x1]!
- b _020E1C3C
-_020E1C08:
- mov r2, #0x9
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C14:
- mov r2, #0x4
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C20:
- mov r2, #0x5
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C2C:
- mov r2, #0x6
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C38:
- mov r1, #0x0
-_020E1C3C:
- cmp r1, #0x0
- ldrnesb r0, [r12, #0x1]!
- strb r0, [sp, #0x3]
- cmp r0, #0x5b
- bgt _020E1C90
- bge _020E1DE0
- cmp r0, #0x47
- bgt _020E1C84
- subs r1, r0, #0x41
- addpl pc, pc, r1, lsl #0x2
- b _020E1EF0
- b _020E1D1C
- b _020E1EF0
- b _020E1EF0
- b _020E1EF0
- b _020E1D1C
- b _020E1D1C
- b _020E1D1C
-_020E1C84:
- cmp r0, #0x58
- beq _020E1D08
- b _020E1EF0
-_020E1C90:
- cmp r0, #0x61
- bgt _020E1CA0
- beq _020E1D1C
- b _020E1EF0
-_020E1CA0:
- sub r0, r0, #0x63
- cmp r0, #0x15
- addls pc, pc, r0, lsl #0x2
- b _020E1EF0
-_020E1CB0:
- b _020E1D6C
-_020E1CB4:
- b _020E1D08
-_020E1CB8:
- b _020E1D1C
-_020E1CBC:
- b _020E1D1C
-_020E1CC0:
- b _020E1D1C
-_020E1CC4:
- b _020E1EF0
-_020E1CC8:
- b _020E1D08
-_020E1CCC:
- b _020E1EF0
-_020E1CD0:
- b _020E1EF0
-_020E1CD4:
- b _020E1EF0
-_020E1CD8:
- b _020E1EF0
-_020E1CDC:
- b _020E1EF8
-_020E1CE0:
- b _020E1D08
-_020E1CE4:
- b _020E1D58
-_020E1CE8:
- b _020E1EF0
-_020E1CEC:
- b _020E1EF0
-_020E1CF0:
- b _020E1D90
-_020E1CF4:
- b _020E1EF0
-_020E1CF8:
- b _020E1D08
-_020E1CFC:
- b _020E1EF0
-_020E1D00:
- b _020E1EF0
-_020E1D04:
- b _020E1D08
-_020E1D08:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D1C:
- ldrb r1, [sp, #0x2]
- cmp r1, #0x1
- cmpne r1, #0x2
- beq _020E1D3C
- add r0, r1, #0xfc
- and r0, r0, #0xff
- cmp r0, #0x3
- bhi _020E1D48
-_020E1D3C:
- mov r0, #0xff
- strb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D48:
- cmp r1, #0x3
- moveq r0, #0x8
- streqb r0, [sp, #0x2]
- b _020E1EF8
-_020E1D58:
- mov r1, #0x3
- mov r0, #0x78
- strb r1, [sp, #0x2]
- strb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D6C:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1EF8
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D90:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1DB0
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
-_020E1DB0:
- add r2, sp, #0x8
- mov r1, #0x20
- mov r0, #0xff
-_020E1DBC:
- sub r1, r1, #0x1
- cmp r1, #0x0
- strb r0, [r2], #0x1
- bgt _020E1DBC
- mov r1, #0xc1
- mov r0, #0xfe
- strb r1, [sp, #0x9]
- strb r0, [sp, #0xc]
- b _020E1EF8
-_020E1DE0:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1E00
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
-_020E1E00:
- ldrsb r2, [r12, #0x1]!
- mov r1, #0x0
- cmp r2, #0x5e
- ldreqsb r2, [r12, #0x1]!
- moveq r1, #0x1
- cmp r2, #0x5d
- bne _020E1EA8
- ldrb r0, [sp, #0x13]
- orr r0, r0, #0x20
- strb r0, [sp, #0x13]
- ldrsb r2, [r12, #0x1]!
- b _020E1EA8
-_020E1E30:
- add r0, sp, #0x0
- and r3, r2, #0xff
- add r6, r0, r3, asr #0x3
- ldrb r5, [r6, #0x8]
- and r3, r2, #0x7
- mov r4, #0x1
- orr r3, r5, r4, lsl r3
- strb r3, [r6, #0x8]
- ldrsb r3, [r12, #0x1]
- cmp r3, #0x2d
- bne _020E1EA4
- ldrsb r7, [r12, #0x2]
- cmp r7, #0x0
- cmpne r7, #0x5d
- beq _020E1EA4
- add r2, r2, #0x1
- cmp r2, r7
- bgt _020E1E9C
-_020E1E78:
- and r3, r2, #0xff
- add r6, r0, r3, asr #0x3
- ldrb r5, [r6, #0x8]
- and r3, r2, #0x7
- add r2, r2, #0x1
- orr r3, r5, r4, lsl r3
- strb r3, [r6, #0x8]
- cmp r2, r7
- ble _020E1E78
-_020E1E9C:
- ldrsb r2, [r12, #0x3]!
- b _020E1EA8
-_020E1EA4:
- ldrsb r2, [r12, #0x1]!
-_020E1EA8:
- cmp r2, #0x0
- cmpne r2, #0x5d
- bne _020E1E30
- cmp r2, #0x0
- moveq r0, #0xff
- streqb r0, [sp, #0x3]
- beq _020E1EF8
- cmp r1, #0x0
- beq _020E1EF8
- add r2, sp, #0x8
- mov r1, #0x20
-_020E1ED4:
- ldrb r0, [r2, #0x0]
- sub r1, r1, #0x1
- cmp r1, #0x0
- mvn r0, r0
- strb r0, [r2], #0x1
- bgt _020E1ED4
- b _020E1EF8
-_020E1EF0:
- mov r0, #0xff
- strb r0, [sp, #0x3]
-_020E1EF8:
- add r4, sp, #0x0
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add r0, r12, #0x1
- add sp, sp, #0x28
- ldmia sp!, {r3-r7,pc}
- .balign 4
-_020E1F20: .word UNK_0210440C
-_020E1F24: .word UNK_0210430C
-
- arm_func_start __sformatter
-__sformatter: ; 0x020E1F28
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x88
- ldrsb r5, [r2, #0x0]
- str r2, [sp, #0xc]
- mov r2, #0x0
- mov r9, r0
- mov r0, r2
- str r2, [sp, #0x20]
- mov r8, r1
- str r3, [sp, #0x10]
- str r0, [sp, #0x24]
- cmp r5, #0x0
- ldr r10, [sp, #0xb0]
- str r0, [sp, #0x30]
- mov r4, r2
- str r0, [sp, #0x44]
- str r0, [sp, #0x40]
- beq _020E2C3C
-_020E1F70:
- cmp r5, #0x0
- mov r0, #0x1
- blt _020E1F84
- cmp r5, #0x80
- movlt r0, #0x0
-_020E1F84:
- cmp r0, #0x0
- movne r0, #0x0
- bne _020E1FA0
- mov r1, r5, lsl #0x1
- ldr r0, _020E2C74 ; =UNK_0210430C
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E1FA0:
- cmp r0, #0x0
- beq _020E2060
- mov r2, #0x0
- ldr r1, _020E2C74 ; =UNK_0210430C
- mov r12, r2
- mov r3, #0x1
-_020E1FB8:
- ldr r0, [sp, #0xc]
- ldrsb r5, [r0, #0x1]!
- str r0, [sp, #0xc]
- mov r0, r3
- cmp r5, #0x0
- blt _020E1FD8
- cmp r5, #0x80
- movlt r0, r2
-_020E1FD8:
- cmp r0, #0x0
- movne r0, r12
- moveq r0, r5, lsl #0x1
- ldreqh r0, [r1, r0]
- andeq r0, r0, #0x100
- cmp r0, #0x0
- bne _020E1FB8
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2C2C
- ldr r5, _020E2C74 ; =UNK_0210430C
- b _020E200C
-_020E2008:
- add r4, r4, #0x1
-_020E200C:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E2034
- cmp r1, #0x80
- blt _020E203C
-_020E2034:
- mov r0, #0x0
- b _020E2048
-_020E203C:
- mov r0, r1, lsl #0x1
- ldrh r0, [r5, r0]
- and r0, r0, #0x100
-_020E2048:
- cmp r0, #0x0
- bne _020E2008
- mov r0, r8
- mov r2, #0x1
- blx r9
- b _020E2C2C
-_020E2060:
- cmp r5, #0x25
- beq _020E20D8
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E20D8
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- and r0, r5, #0xff
- ldrsb r1, [sp, #0x50]
- cmp r0, r1
- beq _020E20C4
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- b _020E2C2C
-_020E20C4:
- ldr r0, [sp, #0xc]
- add r4, r4, #0x1
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- b _020E2C2C
-_020E20D8:
- ldr r0, [sp, #0xc]
- add r1, sp, #0x60
- bl parse_format_scanf
- str r0, [sp, #0xc]
- ldrb r0, [sp, #0x60]
- cmp r0, #0x0
- bne _020E2114
- ldrb r0, [sp, #0x63]
- cmp r0, #0x25
- beq _020E2114
- ldr r0, [sp, #0x10]
- add r0, r0, #0x4
- str r0, [sp, #0x10]
- ldr r5, [r0, #-0x4]
- b _020E2118
-_020E2114:
- mov r5, #0x0
-_020E2118:
- ldrb r0, [sp, #0x63]
- cmp r0, #0x6e
- beq _020E2158
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2158
- mov r0, r8
- mov r1, #0x0
- mov r2, #0x2
- blx r9
- cmp r0, #0x0
- beq _020E2158
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
-_020E2158:
- ldrb r1, [sp, #0x63]
- cmp r1, #0x5b
- bgt _020E21B0
- bge _020E2984
- cmp r1, #0x47
- bgt _020E21A4
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E2198
- b _020E2600
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2600
- b _020E2600
- b _020E2600
-_020E2198:
- cmp r1, #0x25
- beq _020E287C
- b _020E2C3C
-_020E21A4:
- cmp r1, #0x58
- beq _020E243C
- b _020E2C3C
-_020E21B0:
- cmp r1, #0x78
- bgt _020E2228
- subs r0, r1, #0x63
- addpl pc, pc, r0, lsl #0x2
- b _020E221C
- b _020E26C4
- b _020E2230
- b _020E2600
- b _020E2600
- b _020E2600
- b _020E2C3C
- b _020E2238
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2BC8
- b _020E242C
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2908
- b _020E2C3C
- b _020E2434
- b _020E2C3C
- b _020E2C3C
- b _020E243C
-_020E221C:
- cmp r1, #0x61
- beq _020E2600
- b _020E2C3C
-_020E2228:
- cmp r1, #0xff
- b _020E2C3C
-_020E2230:
- mov r0, #0xa
- b _020E223C
-_020E2238:
- mov r0, #0x0
-_020E223C:
- ldr r1, [sp, #0x30]
- cmp r1, #0x0
- beq _020E225C
- mov r0, #0x0
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- str r0, [sp, #0x24]
- b _020E2364
-_020E225C:
- ldrb r1, [sp, #0x62]
- add r2, sp, #0x5c
- cmp r1, #0x7
- cmpne r1, #0x4
- add r1, sp, #0x58
- bne _020E22A0
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoull
- str r0, [sp, #0x34]
- str r1, [sp, #0x18]
- b _020E22C4
-_020E22A0:
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoul
- str r0, [sp, #0x3c]
-_020E22C4:
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E22F4
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- mov r0, #0x0
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- str r0, [sp, #0x24]
- b _020E2364
-_020E22F4:
- add r4, r4, r0
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- cmpne r0, #0x4
- bne _020E2344
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- beq _020E2330
- ldr r0, [sp, #0x34]
- rsbs r0, r0, #0x0
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x18]
- rsc r0, r0, #0x0
- str r0, [sp, #0x24]
- b _020E2364
-_020E2330:
- ldr r0, [sp, #0x34]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x18]
- str r0, [sp, #0x24]
- b _020E2364
-_020E2344:
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- ldreq r0, [sp, #0x3c]
- streq r0, [sp, #0x1c]
- beq _020E2364
- ldr r0, [sp, #0x3c]
- rsb r0, r0, #0x0
- str r0, [sp, #0x1c]
-_020E2364:
- cmp r5, #0x0
- beq _020E241C
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E2408
-_020E237C:
- b _020E239C
-_020E2380:
- b _020E23A8
-_020E2384:
- b _020E23B4
-_020E2388:
- b _020E23C0
-_020E238C:
- b _020E23CC
-_020E2390:
- b _020E23E0
-_020E2394:
- b _020E23EC
-_020E2398:
- b _020E23F8
-_020E239C:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23A8:
- ldr r0, [sp, #0x1c]
- strb r0, [r5, #0x0]
- b _020E2408
-_020E23B4:
- ldr r0, [sp, #0x1c]
- strh r0, [r5, #0x0]
- b _020E2408
-_020E23C0:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23CC:
- ldr r0, [sp, #0x20]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x4]
- b _020E2408
-_020E23E0:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23EC:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23F8:
- ldr r0, [sp, #0x20]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x4]
-_020E2408:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E241C:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E242C:
- mov r0, #0x8
- b _020E2440
-_020E2434:
- mov r0, #0xa
- b _020E2440
-_020E243C:
- mov r0, #0x10
-_020E2440:
- ldr r1, [sp, #0x30]
- cmp r1, #0x0
- beq _020E2460
- mov r0, #0x0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x34]
- str r0, [sp, #0x18]
- b _020E2538
-_020E2460:
- ldrb r1, [sp, #0x62]
- add r2, sp, #0x5c
- cmp r1, #0x7
- cmpne r1, #0x4
- add r1, sp, #0x58
- bne _020E24A4
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoull
- str r0, [sp, #0x34]
- str r1, [sp, #0x18]
- b _020E24C8
-_020E24A4:
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoul
- str r0, [sp, #0x3c]
-_020E24C8:
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E24F8
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- mov r0, #0x0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x34]
- str r0, [sp, #0x18]
- b _020E2538
-_020E24F8:
- add r4, r4, r0
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- beq _020E2538
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- ldrne r0, [sp, #0x3c]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x3c]
- bne _020E2538
- ldr r0, [sp, #0x34]
- rsbs r0, r0, #0x0
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x18]
- rsc r0, r0, #0x0
- str r0, [sp, #0x18]
-_020E2538:
- cmp r5, #0x0
- beq _020E25F0
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E25DC
-_020E2550:
- b _020E2570
-_020E2554:
- b _020E257C
-_020E2558:
- b _020E2588
-_020E255C:
- b _020E2594
-_020E2560:
- b _020E25A0
-_020E2564:
- b _020E25B4
-_020E2568:
- b _020E25C0
-_020E256C:
- b _020E25CC
-_020E2570:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E257C:
- ldr r0, [sp, #0x3c]
- strb r0, [r5, #0x0]
- b _020E25DC
-_020E2588:
- ldr r0, [sp, #0x3c]
- strh r0, [r5, #0x0]
- b _020E25DC
-_020E2594:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25A0:
- ldr r0, [sp, #0x34]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x18]
- str r0, [r5, #0x4]
- b _020E25DC
-_020E25B4:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25C0:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25CC:
- ldr r0, [sp, #0x34]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x18]
- str r0, [r5, #0x4]
-_020E25DC:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E25F0:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E2600:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- beq _020E261C
- ldr r0, _020E2C78 ; =UNK_02106B78
- ldr r0, [r0, #0x0]
- bl _f2d
- b _020E2668
-_020E261C:
- add r0, sp, #0x54
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x64]
- mov r1, r9
- mov r2, r8
- add r3, sp, #0x5c
- bl __strtold
- ldr r2, [sp, #0x5c]
- cmp r2, #0x0
- bne _020E2664
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- ldr r0, _020E2C78 ; =UNK_02106B78
- ldr r0, [r0, #0x0]
- bl _f2d
- b _020E2668
-_020E2664:
- add r4, r4, r2
-_020E2668:
- cmp r5, #0x0
- beq _020E26B4
- ldrb r2, [sp, #0x62]
- cmp r2, #0x0
- beq _020E2690
- cmp r2, #0x8
- beq _020E269C
- cmp r2, #0x9
- stmeqia r5, {r0-r1}
- b _020E26A0
-_020E2690:
- bl _d2f
- str r0, [r5, #0x0]
- b _020E26A0
-_020E269C:
- stmia r5, {r0-r1}
-_020E26A0:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E26B4:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E26C4:
- ldrb r0, [sp, #0x61]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0x64]
- cmp r5, #0x0
- beq _020E280C
- cmp r10, #0x0
- beq _020E26F8
- ldr r0, [sp, #0x10]
- mov r7, #0x1
- add r0, r0, #0x4
- ldr r11, [r0, #-0x4]
- str r0, [sp, #0x10]
-_020E26F8:
- ldr r0, [sp, #0x30]
- mov r1, #0x0
- cmp r0, #0x0
- str r1, [sp, #0x5c]
- beq _020E2718
- cmp r11, #0x0
- strneb r1, [r5, #0x0]
- b _020E2C2C
-_020E2718:
- mvn r0, #0x0
- str r5, [sp, #0x2c]
- str r0, [sp, #0x48]
- b _020E2760
-_020E2728:
- ldrb r0, [sp, #0x62]
- strb r6, [sp, #0x50]
- cmp r0, #0xa
- ldrnesb r0, [sp, #0x50]
- strneb r0, [r5], #0x1
- bne _020E2754
- mov r0, r5
- add r1, sp, #0x50
- mov r2, #0x1
- bl mbtowc
- add r5, r5, #0x1
-_020E2754:
- ldr r0, [sp, #0x5c]
- add r1, r0, #0x1
- str r1, [sp, #0x5c]
-_020E2760:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E27B0
- cmp r10, #0x0
- beq _020E2790
- cmp r11, r1
- movhi r7, #0x1
- movls r7, #0x0
- cmp r7, #0x0
- beq _020E27B0
-_020E2790:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- ldr r0, [sp, #0x48]
- cmp r6, r0
- bne _020E2728
-_020E27B0:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E27D0
- cmp r10, #0x0
- beq _020E27F8
- cmp r7, #0x0
- bne _020E27F8
-_020E27D0:
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- cmp r11, #0x0
- str r0, [sp, #0x30]
- beq _020E2C2C
- ldr r0, [sp, #0x2c]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- b _020E2C2C
-_020E27F8:
- add r4, r4, r0
- ldr r0, [sp, #0x44]
- add r0, r0, #0x1
- str r0, [sp, #0x44]
- b _020E286C
-_020E280C:
- mov r0, #0x0
- str r0, [sp, #0x5c]
- mvn r5, #0x0
- b _020E282C
-_020E281C:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- add r0, r0, #0x1
- str r0, [sp, #0x5c]
-_020E282C:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E285C
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- cmp r6, r5
- bne _020E281C
-_020E285C:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E2C3C
-_020E286C:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E287C:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2C2C
- ldr r5, _020E2C74 ; =UNK_0210430C
- b _020E2894
-_020E2890:
- add r4, r4, #0x1
-_020E2894:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E28BC
- cmp r1, #0x80
- blt _020E28C4
-_020E28BC:
- mov r0, #0x0
- b _020E28D0
-_020E28C4:
- mov r0, r1, lsl #0x1
- ldrh r0, [r5, r0]
- and r0, r0, #0x100
-_020E28D0:
- cmp r0, #0x0
- bne _020E2890
- cmp r1, #0x25
- beq _020E2900
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- b _020E2C2C
-_020E2900:
- add r4, r4, #0x1
- b _020E2C2C
-_020E2908:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2984
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- b _020E2944
-_020E292C:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- strb r0, [sp, #0x50]
-_020E2944:
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E2958
- cmp r1, #0x80
- blt _020E2960
-_020E2958:
- mov r0, #0x0
- b _020E2970
-_020E2960:
- ldr r0, _020E2C74 ; =UNK_0210430C
- mov r2, r1, lsl #0x1
- ldrh r0, [r0, r2]
- and r0, r0, #0x100
-_020E2970:
- cmp r0, #0x0
- bne _020E292C
- mov r0, r8
- mov r2, #0x1
- blx r9
-_020E2984:
- cmp r5, #0x0
- beq _020E2B00
- cmp r10, #0x0
- beq _020E29AC
- ldr r0, [sp, #0x10]
- mov r7, #0x1
- add r0, r0, #0x4
- str r0, [sp, #0x10]
- ldr r0, [r0, #-0x4]
- sub r11, r0, #0x1
-_020E29AC:
- ldr r0, [sp, #0x30]
- mov r1, #0x0
- cmp r0, #0x0
- str r1, [sp, #0x5c]
- beq _020E29CC
- cmp r11, #0x0
- strneb r1, [r5, #0x0]
- b _020E2C2C
-_020E29CC:
- mvn r0, #0x0
- str r5, [sp, #0x28]
- str r0, [sp, #0x4c]
- b _020E2A30
-_020E29DC:
- strb r6, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- add r2, sp, #0x60
- and r3, r1, #0xff
- add r2, r2, r3, asr #0x3
- ldrb r3, [r2, #0x8]
- and r0, r1, #0x7
- mov r2, #0x1
- tst r3, r2, lsl r0
- beq _020E2A80
- ldrb r0, [sp, #0x62]
- cmp r0, #0xa
- strneb r1, [r5], #0x1
- bne _020E2A24
- mov r0, r5
- add r1, sp, #0x50
- bl mbtowc
- add r5, r5, #0x2
-_020E2A24:
- ldr r0, [sp, #0x5c]
- add r1, r0, #0x1
- str r1, [sp, #0x5c]
-_020E2A30:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E2A80
- cmp r10, #0x0
- beq _020E2A60
- cmp r11, r1
- movcs r7, #0x1
- movcc r7, #0x0
- cmp r7, #0x0
- beq _020E2A80
-_020E2A60:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- ldr r0, [sp, #0x4c]
- cmp r6, r0
- bne _020E29DC
-_020E2A80:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E2AA0
- cmp r10, #0x0
- beq _020E2AD8
- cmp r7, #0x0
- bne _020E2AD8
-_020E2AA0:
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- cmp r11, #0x0
- str r0, [sp, #0x30]
- beq _020E2C2C
- ldr r0, [sp, #0x28]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- b _020E2C2C
-_020E2AD8:
- add r4, r4, r0
- ldrb r0, [sp, #0x62]
- cmp r0, #0xa
- mov r0, #0x0
- streqh r0, [r5, #0x0]
- strneb r0, [r5, #0x0]
- ldr r0, [sp, #0x44]
- add r0, r0, #0x1
- str r0, [sp, #0x44]
- b _020E2B9C
-_020E2B00:
- mov r0, #0x0
- str r0, [sp, #0x5c]
- mvn r5, #0x0
- b _020E2B44
-_020E2B10:
- strb r6, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- and r0, r1, #0x7
- and r2, r1, #0xff
- add r1, sp, #0x60
- add r1, r1, r2, asr #0x3
- ldrb r2, [r1, #0x8]
- mov r1, #0x1
- tst r2, r1, lsl r0
- beq _020E2B74
- ldr r0, [sp, #0x5c]
- add r0, r0, #0x1
- str r0, [sp, #0x5c]
-_020E2B44:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E2B74
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- cmp r6, r5
- bne _020E2B10
-_020E2B74:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E2B98
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
- b _020E2C2C
-_020E2B98:
- add r4, r4, r0
-_020E2B9C:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- blt _020E2BB8
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
-_020E2BB8:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E2BC8:
- cmp r5, #0x0
- beq _020E2C2C
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E2C2C
-_020E2BE0:
- b _020E2C00
-_020E2BE4:
- b _020E2C18
-_020E2BE8:
- b _020E2C08
-_020E2BEC:
- b _020E2C10
-_020E2BF0:
- b _020E2C2C
-_020E2BF4:
- b _020E2C2C
-_020E2BF8:
- b _020E2C2C
-_020E2BFC:
- b _020E2C20
-_020E2C00:
- str r4, [r5, #0x0]
- b _020E2C2C
-_020E2C08:
- strh r4, [r5, #0x0]
- b _020E2C2C
-_020E2C10:
- str r4, [r5, #0x0]
- b _020E2C2C
-_020E2C18:
- strb r4, [r5, #0x0]
- b _020E2C2C
-_020E2C20:
- str r4, [r5, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r5, #0x4]
-_020E2C2C:
- ldr r0, [sp, #0xc]
- ldrsb r5, [r0, #0x0]
- cmp r5, #0x0
- bne _020E1F70
-_020E2C3C:
- mov r0, r8
- mov r1, #0x0
- mov r2, #0x2
- blx r9
- cmp r0, #0x0
- beq _020E2C68
- ldr r0, [sp, #0x40]
- cmp r0, #0x0
- addeq sp, sp, #0x88
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,pc}
-_020E2C68:
- ldr r0, [sp, #0x44]
- add sp, sp, #0x88
- ldmia sp!, {r3-r11,pc}
- .balign 4
-_020E2C74: .word UNK_0210430C
-_020E2C78: .word UNK_02106B78
-
- arm_func_start __StringRead
-__StringRead: ; 0x020E2C7C
- cmp r2, #0x0
- beq _020E2C98
- cmp r2, #0x1
- beq _020E2CC8
- cmp r2, #0x2
- beq _020E2CF0
- b _020E2CF8
-_020E2C98:
- ldr r1, [r0, #0x0]
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- bne _020E2CB8
- mov r1, #0x1
- str r1, [r0, #0x4]
- sub r0, r1, #0x2
- bx lr
-_020E2CB8:
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- and r0, r2, #0xff
- bx lr
-_020E2CC8:
- ldr r2, [r0, #0x4]
- cmp r2, #0x0
- movne r2, #0x0
- strne r2, [r0, #0x4]
- bne _020E2CE8
- ldr r2, [r0, #0x0]
- sub r2, r2, #0x1
- str r2, [r0, #0x0]
-_020E2CE8:
- mov r0, r1
- bx lr
-_020E2CF0:
- ldr r0, [r0, #0x4]
- bx lr
-_020E2CF8:
- mov r0, #0x0
- bx lr
-
- arm_func_start vsscanf
-vsscanf: ; 0x020E2D00
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- str r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r0, #0x0]
- mov lr, r1
- mov r3, r2
- cmpne r0, #0x0
- addeq sp, sp, #0xc
- mvneq r0, #0x0
- ldmeqia sp!, {pc}
- mov r12, #0x0
- str r12, [sp, #0x8]
- ldr r0, _020E2D50 ; =__StringRead
- add r1, sp, #0x4
- mov r2, lr
- str r12, [sp, #0x0]
- bl __sformatter
- add sp, sp, #0xc
- ldmia sp!, {pc}
- .balign 4
-_020E2D50: .word __StringRead
-
- arm_func_start sscanf
-sscanf: ; 0x020E2D54
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r2, sp, #0xc
- bic r2, r2, #0x3
- ldr r1, [sp, #0xc]
- add r2, r2, #0x4
- bl vsscanf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start raise
-raise: ; 0x020E2D7C
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- cmp r5, #0x1
- blt _020E2D94
- cmp r5, #0x7
- ble _020E2D9C
-_020E2D94:
- mvn r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E2D9C:
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020E2DD0
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x1c]
- str r2, [r0, #0x1c]
- b _020E2E28
-_020E2DD0:
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0x1c]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020E2E00
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r1, [r0, #0x1c]
- add r1, r1, #0x1
- str r1, [r0, #0x1c]
- b _020E2E28
-_020E2E00:
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_LockMutex
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x1c]
- str r2, [r0, #0x1c]
-_020E2E28:
- ldr r1, _020E2EA8 ; =UNK_021D74AC
- sub r2, r5, #0x1
- ldr r4, [r1, r2, lsl #0x2]
- cmp r4, #0x1
- movne r0, #0x0
- strne r0, [r1, r2, lsl #0x2]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r1, [r0, #0x1c]
- subs r1, r1, #0x1
- str r1, [r0, #0x1c]
- bne _020E2E5C
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_UnlockMutex
-_020E2E5C:
- cmp r4, #0x1
- beq _020E2E70
- cmp r4, #0x0
- cmpeq r5, #0x1
- bne _020E2E78
-_020E2E70:
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E2E78:
- cmp r4, #0x0
- bne _020E2E88
- mov r0, #0x0
- bl exit
-_020E2E88:
- mov r0, r5
- blx r4
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E2E98: .word UNK_021D7178
-_020E2E9C: .word OSi_ThreadInfo
-_020E2EA0: .word UNK_021D7088
-_020E2EA4: .word UNK_021D70AC
-_020E2EA8: .word UNK_021D74AC
-
- arm_func_start strlen
-strlen: ; 0x020E2EAC
- mvn r2, #0x0
-_020E2EB0:
- ldrsb r1, [r0], #0x1
- add r2, r2, #0x1
- cmp r1, #0x0
- bne _020E2EB0
- mov r0, r2
- bx lr
-
- arm_func_start strcpy
-strcpy: ; 0x020E2EC8
- stmdb sp!, {r3-r5,lr}
- and r4, r1, #0x3
- and r3, r0, #0x3
- mov r2, r0
- cmp r3, r4
- bne _020E2F64
- cmp r4, #0x0
- beq _020E2F20
- ldrb r3, [r1, #0x0]
- strb r3, [r0, #0x0]
- cmp r3, #0x0
- ldmeqia sp!, {r3-r5,pc}
- rsbs r4, r4, #0x3
- beq _020E2F18
-_020E2F00:
- ldrb r3, [r1, #0x1]!
- cmp r3, #0x0
- strb r3, [r2, #0x1]!
- ldmeqia sp!, {r3-r5,pc}
- subs r4, r4, #0x1
- bne _020E2F00
-_020E2F18:
- add r2, r2, #0x1
- add r1, r1, #0x1
-_020E2F20:
- ldr r5, [r1, #0x0]
- ldr r3, _020E2F88 ; =0xFEFEFEFF
- mvn r4, r5
- add lr, r5, r3
- ldr ip, _020E2F8C ; =0x80808080
- and r4, lr, r4
- tst r4, r12
- bne _020E2F64
- sub r2, r2, #0x4
-_020E2F44:
- str r5, [r2, #0x4]!
- ldr r5, [r1, #0x4]!
- add r4, r5, r3
- mvn lr, r5
- and lr, r4, lr
- tst lr, r12
- beq _020E2F44
- add r2, r2, #0x4
-_020E2F64:
- ldrb r3, [r1, #0x0]
- strb r3, [r2, #0x0]
- cmp r3, #0x0
- ldmeqia sp!, {r3-r5,pc}
-_020E2F74:
- ldrb r3, [r1, #0x1]!
- cmp r3, #0x0
- strb r3, [r2, #0x1]!
- bne _020E2F74
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E2F88: .word 0xFEFEFEFF
-_020E2F8C: .word 0x80808080
-
- arm_func_start strncpy
-strncpy: ; 0x020E2F90
- stmdb sp!, {r3,lr}
- mov lr, r0
- cmp r2, #0x0
- ldmeqia sp!, {r3,pc}
-_020E2FA0:
- ldrsb r3, [r1], #0x1
- mov r12, lr
- strb r3, [lr], #0x1
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x0
- bne _020E2FD4
- subs r2, r2, #0x1
- ldmeqia sp!, {r3,pc}
- mov r1, #0x0
-_020E2FC4:
- strb r1, [lr], #0x1
- subs r2, r2, #0x1
- bne _020E2FC4
- ldmia sp!, {r3,pc}
-_020E2FD4:
- subs r2, r2, #0x1
- bne _020E2FA0
- ldmia sp!, {r3,pc}
-
- arm_func_start strcat
-strcat: ; 0x020E2FE0
- mov r3, r0
-_020E2FE4:
- ldrsb r2, [r3], #0x1
- cmp r2, #0x0
- bne _020E2FE4
- sub r3, r3, #0x1
-_020E2FF4:
- ldrsb r2, [r1], #0x1
- mov r12, r3
- strb r2, [r3], #0x1
- ldrsb r2, [r12, #0x0]
- cmp r2, #0x0
- bne _020E2FF4
- bx lr
-
- arm_func_start strncat
-strncat: ; 0x020E3010
- stmdb sp!, {r3,lr}
- mov r12, r0
-_020E3018:
- ldrsb r3, [r12], #0x1
- cmp r3, #0x0
- bne _020E3018
- cmp r2, #0x0
- sub r12, r12, #0x1
- beq _020E3054
-_020E3030:
- ldrsb r3, [r1], #0x1
- mov lr, r12
- strb r3, [r12], #0x1
- ldrsb r3, [lr, #0x0]
- cmp r3, #0x0
- subeq r12, r12, #0x1
- beq _020E3054
- subs r2, r2, #0x1
- bne _020E3030
-_020E3054:
- mov r1, #0x0
- strb r1, [r12, #0x0]
- ldmia sp!, {r3,pc}
-
- arm_func_start strcmp
-strcmp: ; 0x020E3060
- stmdb sp!, {r4,lr}
- ldrb r2, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- subs r3, r2, r3
- movne r0, r3
- ldmneia sp!, {r4,pc}
- and r4, r0, #0x3
- and r3, r1, #0x3
- cmp r3, r4
- bne _020E313C
- cmp r4, #0x0
- beq _020E30D4
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- rsbs r4, r4, #0x3
- beq _020E30CC
-_020E30A4:
- ldrb r3, [r0, #0x1]!
- ldrb r2, [r1, #0x1]!
- subs r2, r3, r2
- movne r0, r2
- ldmneia sp!, {r4,pc}
- cmp r3, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- subs r4, r4, #0x1
- bne _020E30A4
-_020E30CC:
- add r0, r0, #0x1
- add r1, r1, #0x1
-_020E30D4:
- ldr r2, [r0, #0x0]
- ldr r3, _020E316C ; =0xFEFEFEFF
- mvn r4, r2
- add lr, r2, r3
- ldr ip, _020E3170 ; =0x80808080
- and r4, lr, r4
- tst r4, r12
- ldr r4, [r1, #0x0]
- bne _020E3128
- cmp r2, r4
- bne _020E311C
-_020E3100:
- ldr r2, [r0, #0x4]!
- ldr r4, [r1, #0x4]!
- add lr, r2, r3
- tst lr, r12
- bne _020E3128
- cmp r2, r4
- beq _020E3100
-_020E311C:
- sub r0, r0, #0x1
- sub r1, r1, #0x1
- b _020E313C
-_020E3128:
- ldrb r2, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- subs r3, r2, r3
- movne r0, r3
- ldmneia sp!, {r4,pc}
-_020E313C:
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
-_020E3148:
- ldrb r3, [r0, #0x1]!
- ldrb r2, [r1, #0x1]!
- subs r2, r3, r2
- movne r0, r2
- ldmneia sp!, {r4,pc}
- cmp r3, #0x0
- bne _020E3148
- mov r0, #0x0
- ldmia sp!, {r4,pc}
- .balign 4
-_020E316C: .word 0xFEFEFEFF
-_020E3170: .word 0x80808080
-
- arm_func_start strncmp
-strncmp: ; 0x020E3174
- cmp r2, #0x0
- beq _020E31A0
-_020E317C:
- ldrb r12, [r1], #0x1
- ldrb r3, [r0], #0x1
- cmp r3, r12
- subne r0, r3, r12
- bxne lr
- cmp r3, #0x0
- beq _020E31A0
- subs r2, r2, #0x1
- bne _020E317C
-_020E31A0:
- mov r0, #0x0
- bx lr
-
- arm_func_start strchr
-strchr: ; 0x020E31A8
- ldrsb r2, [r0], #0x1
- mov r1, r1, lsl #0x18
- mov r1, r1, asr #0x18
- cmp r2, #0x0
- beq _020E31D4
-_020E31BC:
- cmp r2, r1
- subeq r0, r0, #0x1
- bxeq lr
- ldrsb r2, [r0], #0x1
- cmp r2, #0x0
- bne _020E31BC
-_020E31D4:
- cmp r1, #0x0
- movne r0, #0x0
- subeq r0, r0, #0x1
- bx lr
-
- arm_func_start strspn
-strspn: ; 0x020E31E4
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x20
- add r12, sp, #0x0
- mov r3, #0x8
- mov r2, #0x0
-_020E31F8:
- strb r2, [r12, #0x0]
- strb r2, [r12, #0x1]
- strb r2, [r12, #0x2]
- strb r2, [r12, #0x3]
- add r12, r12, #0x4
- subs r3, r3, #0x1
- bne _020E31F8
- ldrb r3, [r1, #0x0]
- add r4, r1, #0x1
- cmp r3, #0x0
- beq _020E3254
- add lr, sp, #0x0
- mov r2, #0x1
-_020E322C:
- and r12, r3, #0xff
- and r1, r3, #0x7
- mov r1, r2, lsl r1
- ldrb r3, [lr, r12, asr #0x3]
- and r1, r1, #0xff
- orr r1, r3, r1
- strb r1, [lr, r12, asr #0x3]
- ldrb r3, [r4], #0x1
- cmp r3, #0x0
- bne _020E322C
-_020E3254:
- ldrb r1, [r0, #0x0]
- add r4, r0, #0x1
- cmp r1, #0x0
- beq _020E3294
- add r12, sp, #0x0
- mov r2, #0x1
-_020E326C:
- and r3, r1, #0xff
- and r1, r1, #0x7
- mov r1, r2, lsl r1
- ldrb r3, [r12, r3, asr #0x3]
- and r1, r1, #0xff
- tst r3, r1
- bne _020E3294
- ldrb r1, [r4], #0x1
- cmp r1, #0x0
- bne _020E326C
-_020E3294:
- sub r0, r4, r0
- sub r0, r0, #0x1
- add sp, sp, #0x20
- ldmia sp!, {r4,pc}
-
- arm_func_start strstr
-strstr: ; 0x020E32A4
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- ldrneb r2, [r1, #0x0]
- cmpne r2, #0x0
- ldmeqia sp!, {r4,pc}
- ldrb r3, [r0, #0x0]
- add r4, r0, #0x1
- cmp r3, #0x0
- beq _020E3308
-_020E32C8:
- cmp r3, r2
- bne _020E32FC
- mov lr, r4
- add r12, r1, #0x1
-_020E32D8:
- ldrb r3, [r12], #0x1
- ldrb r0, [lr], #0x1
- cmp r0, r3
- bne _020E32F0
- cmp r0, #0x0
- bne _020E32D8
-_020E32F0:
- cmp r3, #0x0
- subeq r0, r4, #0x1
- ldmeqia sp!, {r4,pc}
-_020E32FC:
- ldrb r3, [r4], #0x1
- cmp r3, #0x0
- bne _020E32C8
-_020E3308:
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-
- arm_func_start __strtold
-__strtold: ; 0x020E3310
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0xa8
- ldr r4, [sp, #0xd0]
- mov r10, #0x0
- str r4, [sp, #0xd0]
- str r0, [sp, #0x0]
- add r6, sp, #0x80
- mov r9, r1
- mov r8, r2
- str r3, [sp, #0x4]
- mov r4, r10
- str r10, [sp, #0x2c]
- mov r5, #0x1
- mov r0, #0x4
-_020E3348:
- strh r10, [r6, #0x0]
- strh r10, [r6, #0x2]
- strh r10, [r6, #0x4]
- strh r10, [r6, #0x6]
- add r6, r6, #0x8
- subs r0, r0, #0x1
- bne _020E3348
- mov r0, #0x0
- str r0, [sp, #0x28]
- strh r10, [r6, #0x0]
- strh r10, [r6, #0x2]
- ldr r2, [sp, #0x28]
- ldr r1, [sp, #0xd0]
- strh r10, [r6, #0x4]
- str r2, [r1, #0x0]
- mov r1, r2
- mov r0, r8
- str r1, [sp, #0x24]
- str r1, [sp, #0x20]
- str r1, [sp, #0x1c]
- str r1, [sp, #0x18]
- str r1, [sp, #0x10]
- str r1, [sp, #0xc]
- str r1, [sp, #0x8]
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- ldr r7, _020E42F0 ; =UNK_02104439
- add r0, sp, #0x4d
- mov r6, #0x4
-_020E33C0:
- ldrb r3, [r7, #0x0]
- ldrb r2, [r7, #0x1]
- add r7, r7, #0x2
- strb r3, [r0, #0x0]
- strb r2, [r0, #0x1]
- add r0, r0, #0x2
- subs r6, r6, #0x1
- bne _020E33C0
- ldrb r3, [r7, #0x0]
- ldr r2, _020E42F4 ; =UNK_02104434
- strb r3, [r0, #0x0]
- ldrb r3, [r2, #0x1]
- ldrb r0, [r2, #0x2]
- ldrb r6, [r2, #0x0]
- strb r3, [sp, #0x31]
- strb r0, [sp, #0x32]
- ldrb r3, [r2, #0x3]
- ldrb r0, [r2, #0x4]
- strb r6, [sp, #0x30]
- strb r3, [sp, #0x33]
- strb r0, [sp, #0x34]
- b _020E4104
-_020E3418:
- cmp r5, #0x100
- bgt _020E3490
- bge _020E3B98
- cmp r5, #0x20
- bgt _020E3474
- bge _020E3A6C
- cmp r5, #0x8
- bgt _020E3468
- cmp r5, #0x0
- addge pc, pc, r5, lsl #0x2
- b _020E4104
- b _020E4104
- b _020E34D4
- b _020E38B8
- b _020E4104
- b _020E3968
- b _020E4104
- b _020E4104
- b _020E4104
- b _020E3990
-_020E3468:
- cmp r5, #0x10
- beq _020E3A34
- b _020E4104
-_020E3474:
- cmp r5, #0x40
- bgt _020E3484
- beq _020E3AF8
- b _020E4104
-_020E3484:
- cmp r5, #0x80
- beq _020E3B44
- b _020E4104
-_020E3490:
- cmp r5, #0x2000
- bgt _020E34B8
- bge _020E36EC
- cmp r5, #0x200
- bgt _020E34AC
- beq _020E3BF8
- b _020E4104
-_020E34AC:
- cmp r5, #0x400
- beq _020E3C20
- b _020E4104
-_020E34B8:
- cmp r5, #0x4000
- bgt _020E34C8
- beq _020E35F4
- b _020E4104
-_020E34C8:
- cmp r5, #0x8000
- beq _020E3C98
- b _020E4104
-_020E34D4:
- cmp r1, #0x0
- blt _020E34E4
- cmp r1, #0x80
- blt _020E34EC
-_020E34E4:
- mov r0, #0x0
- b _020E34FC
-_020E34EC:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x100
-_020E34FC:
- cmp r0, #0x0
- beq _020E3528
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r1, r0
- ldr r0, [sp, #0x2c]
- add r0, r0, #0x1
- str r0, [sp, #0x2c]
- b _020E4104
-_020E3528:
- cmp r1, #0x0
- blt _020E3538
- cmp r1, #0x80
- blt _020E3540
-_020E3538:
- mov r0, r1
- b _020E3548
-_020E3540:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3548:
- cmp r0, #0x49
- bgt _020E3574
- bge _020E35AC
- cmp r0, #0x2d
- bgt _020E35EC
- cmp r0, #0x2b
- blt _020E35EC
- beq _020E3588
- cmp r0, #0x2d
- beq _020E3580
- b _020E35EC
-_020E3574:
- cmp r0, #0x4e
- beq _020E35CC
- b _020E35EC
-_020E3580:
- mov r0, #0x1
- str r0, [sp, #0x28]
-_020E3588:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- mov r0, #0x1
- str r0, [sp, #0x18]
- b _020E4104
-_020E35AC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- mov r5, #0x4000
- b _020E4104
-_020E35CC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- mov r5, #0x2000
- b _020E4104
-_020E35EC:
- mov r5, #0x2
- b _020E4104
-_020E35F4:
- mov r5, #0x1
- add r7, sp, #0x4d
- add r0, sp, #0x76
- mov r6, #0x4
-_020E3604:
- ldrb r3, [r7, #0x0]
- ldrb r2, [r7, #0x1]
- add r7, r7, #0x2
- strb r3, [r0, #0x0]
- strb r2, [r0, #0x1]
- add r0, r0, #0x2
- subs r6, r6, #0x1
- bne _020E3604
- ldrb r2, [r7, #0x0]
- add r6, sp, #0x77
- ldr r7, _020E42FC ; =UNK_0210428C
- strb r2, [r0, #0x0]
- b _020E3658
-_020E3638:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r6, r6, #0x1
- add r5, r5, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E3658:
- cmp r5, #0x8
- bge _020E3688
- cmp r1, #0x0
- blt _020E3670
- cmp r1, #0x80
- blt _020E3678
-_020E3670:
- mov r2, r1
- b _020E367C
-_020E3678:
- ldrb r2, [r7, r1]
-_020E367C:
- ldrsb r0, [r6, #0x0]
- cmp r0, r2
- beq _020E3638
-_020E3688:
- cmp r5, #0x3
- cmpne r5, #0x8
- bne _020E36E4
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- beq _020E36B8
- ldr r1, _020E4300 ; =UNK_02106B74
- mov r0, #0x0
- ldr r1, [r1, #0x0]
- bl _fsub
- bl _f2d
- b _020E36C4
-_020E36B8:
- ldr r0, _020E4300 ; =UNK_02106B74
- ldr r0, [r0, #0x0]
- bl _f2d
-_020E36C4:
- ldr r2, [sp, #0x2c]
- add r3, r2, r5
- ldr r2, [sp, #0x18]
- add r3, r2, r3
- ldr r2, [sp, #0x4]
- add sp, sp, #0xa8
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E36E4:
- mov r5, #0x1000
- b _020E4104
-_020E36EC:
- ldrb r3, [sp, #0x30]
- ldrb r0, [sp, #0x32]
- ldrb r2, [sp, #0x31]
- strb r3, [sp, #0x40]
- strb r0, [sp, #0x42]
- ldrb r3, [sp, #0x33]
- ldrb r0, [sp, #0x34]
- strb r2, [sp, #0x41]
- mov r5, #0x1
- strb r0, [sp, #0x44]
- mov r6, #0x0
- add r2, sp, #0x56
- strb r3, [sp, #0x43]
- mov r0, #0x8
-_020E3724:
- strb r6, [r2, #0x0]
- strb r6, [r2, #0x1]
- strb r6, [r2, #0x2]
- strb r6, [r2, #0x3]
- add r2, r2, #0x4
- subs r0, r0, #0x1
- bne _020E3724
- add r7, sp, #0x41
- b _020E3768
-_020E3748:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r7, r7, #0x1
- add r5, r5, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E3768:
- cmp r5, #0x4
- bge _020E379C
- cmp r1, #0x0
- blt _020E3780
- cmp r1, #0x80
- blt _020E3788
-_020E3780:
- mov r2, r1
- b _020E3790
-_020E3788:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r2, [r0, r1]
-_020E3790:
- ldrsb r0, [r7, #0x0]
- cmp r0, r2
- beq _020E3748
-_020E379C:
- sub r0, r5, #0x3
- cmp r0, #0x1
- bhi _020E38B0
- cmp r5, #0x4
- bne _020E3854
- ldr r7, _020E42F8 ; =UNK_0210430C
- b _020E37DC
-_020E37B8:
- add r0, sp, #0x56
- strb r1, [r0, r6]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r6, r6, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E37DC:
- cmp r6, #0x20
- bge _020E3844
- cmp r1, #0x0
- blt _020E37F4
- cmp r1, #0x80
- blt _020E37FC
-_020E37F4:
- mov r0, #0x0
- b _020E3808
-_020E37FC:
- mov r0, r1, lsl #0x1
- ldrh r0, [r7, r0]
- and r0, r0, #0x8
-_020E3808:
- cmp r0, #0x0
- bne _020E37B8
- cmp r1, #0x0
- blt _020E3820
- cmp r1, #0x80
- blt _020E3828
-_020E3820:
- mov r0, #0x0
- b _020E3834
-_020E3828:
- mov r0, r1, lsl #0x1
- ldrh r0, [r7, r0]
- and r0, r0, #0x1
-_020E3834:
- cmp r0, #0x0
- bne _020E37B8
- cmp r1, #0x2e
- beq _020E37B8
-_020E3844:
- cmp r1, #0x29
- movne r5, #0x1000
- bne _020E4104
- add r6, r6, #0x1
-_020E3854:
- add r0, sp, #0x56
- mov r1, #0x0
- strb r1, [r0, r6]
- ldr r1, [sp, #0x28]
- cmp r1, #0x0
- beq _020E3888
- bl nan
- mov r2, r0
- mov r0, #0x0
- mov r3, r1
- mov r1, r0
- bl _dsub
- b _020E388C
-_020E3888:
- bl nan
-_020E388C:
- ldr r2, [sp, #0x2c]
- add r2, r2, r5
- add r3, r6, r2
- ldr r2, [sp, #0x18]
- add r3, r2, r3
- ldr r2, [sp, #0x4]
- add sp, sp, #0xa8
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E38B0:
- mov r5, #0x1000
- b _020E4104
-_020E38B8:
- cmp r1, #0x2e
- bne _020E38E0
- mov r5, #0x10
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E38E0:
- cmp r1, #0x0
- blt _020E38F0
- cmp r1, #0x80
- blt _020E38F8
-_020E38F0:
- mov r0, #0x0
- b _020E3908
-_020E38F8:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3908:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- bne _020E3960
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- cmp r0, #0x0
- mov r1, r0
- blt _020E394C
- cmp r0, #0x80
- bge _020E394C
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r0, [r2, r0]
-_020E394C:
- cmp r0, #0x58
- moveq r5, #0x8000
- moveq r10, #0x1
- movne r5, #0x4
- b _020E4104
-_020E3960:
- mov r5, #0x8
- b _020E4104
-_020E3968:
- cmp r1, #0x30
- movne r5, #0x8
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3990:
- cmp r1, #0x0
- blt _020E39A0
- cmp r1, #0x80
- blt _020E39A8
-_020E39A0:
- mov r0, #0x0
- b _020E39B8
-_020E39A8:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E39B8:
- cmp r0, #0x0
- bne _020E39EC
- cmp r1, #0x2e
- movne r5, #0x40
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x20
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E39EC:
- ldrb r2, [sp, #0x84]
- cmp r2, #0x14
- ldrcs r0, [sp, #0x1c]
- addcs r0, r0, #0x1
- strcs r0, [sp, #0x1c]
- bhs _020E3A18
- add r0, r2, #0x1
- strb r0, [sp, #0x84]
- add r0, sp, #0x80
- add r0, r0, r2
- strb r1, [r0, #0x5]
-_020E3A18:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3A34:
- cmp r1, #0x0
- blt _020E3A44
- cmp r1, #0x80
- blt _020E3A4C
-_020E3A44:
- mov r0, #0x0
- b _020E3A5C
-_020E3A4C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3A5C:
- cmp r0, #0x0
- moveq r5, #0x1000
- movne r5, #0x20
- b _020E4104
-_020E3A6C:
- cmp r1, #0x0
- blt _020E3A7C
- cmp r1, #0x80
- blt _020E3A84
-_020E3A7C:
- mov r0, #0x0
- b _020E3A94
-_020E3A84:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3A94:
- cmp r0, #0x0
- moveq r5, #0x40
- beq _020E4104
- ldrb r3, [sp, #0x84]
- cmp r3, #0x14
- bhs _020E3ADC
- cmp r1, #0x30
- cmpeq r3, #0x0
- beq _020E3AD0
- ldrb r2, [sp, #0x84]
- add r0, sp, #0x80
- add r0, r0, r3
- add r2, r2, #0x1
- strb r2, [sp, #0x84]
- strb r1, [r0, #0x5]
-_020E3AD0:
- ldr r0, [sp, #0x1c]
- sub r0, r0, #0x1
- str r0, [sp, #0x1c]
-_020E3ADC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3AF8:
- cmp r1, #0x0
- blt _020E3B08
- cmp r1, #0x80
- blt _020E3B10
-_020E3B08:
- mov r0, r1
- b _020E3B18
-_020E3B10:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3B18:
- cmp r0, #0x45
- movne r5, #0x800
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x80
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3B44:
- cmp r1, #0x2b
- bne _020E3B68
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E3B90
-_020E3B68:
- cmp r1, #0x2d
- bne _020E3B90
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- mov r0, #0x1
- str r0, [sp, #0x24]
-_020E3B90:
- mov r5, #0x100
- b _020E4104
-_020E3B98:
- cmp r1, #0x0
- blt _020E3BA8
- cmp r1, #0x80
- blt _020E3BB0
-_020E3BA8:
- mov r0, #0x0
- b _020E3BC0
-_020E3BB0:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3BC0:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- movne r5, #0x400
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x200
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3BF8:
- cmp r1, #0x30
- movne r5, #0x400
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3C20:
- cmp r1, #0x0
- blt _020E3C30
- cmp r1, #0x80
- blt _020E3C38
-_020E3C30:
- mov r0, #0x0
- b _020E3C48
-_020E3C38:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3C48:
- cmp r0, #0x0
- moveq r5, #0x800
- beq _020E4104
- ldr r0, [sp, #0x20]
- sub r2, r1, #0x30
- mov r1, #0xa
- mla r0, r1, r0, r2
- ldr r1, _020E4304 ; =0x00007FFF
- str r0, [sp, #0x20]
- cmp r0, r1
- ldrgt r0, [sp, #0xd0]
- movgt r1, #0x1
- strgt r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3C98:
- cmp r10, #0x20
- bgt _020E3CE8
- bge _020E3FBC
- cmp r10, #0x8
- bgt _020E3CDC
- cmp r10, #0x0
- addge pc, pc, r10, lsl #0x2
- b _020E4104
- b _020E4104
- b _020E3D0C
- b _020E3D5C
- b _020E4104
- b _020E3D84
- b _020E4104
- b _020E4104
- b _020E4104
- b _020E3E94
-_020E3CDC:
- cmp r10, #0x10
- beq _020E3F70
- b _020E4104
-_020E3CE8:
- cmp r10, #0x80
- bgt _020E3D00
- bge _020E4064
- cmp r10, #0x40
- beq _020E4004
- b _020E4104
-_020E3D00:
- cmp r10, #0x100
- beq _020E408C
- b _020E4104
-_020E3D0C:
- mov r1, #0x0
- add r0, sp, #0x45
- str r0, [sp, #0x14]
- strb r1, [r0, #0x0]
- strb r1, [r0, #0x1]
- strb r1, [r0, #0x2]
- strb r1, [r0, #0x3]
- strb r1, [r0, #0x4]
- strb r1, [r0, #0x5]
- strb r1, [r0, #0x6]
- strb r1, [r0, #0x7]
- mov r0, r8
- mov r2, r1
- str r1, [sp, #0x8]
- mov r11, r1
- mov r10, #0x2
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3D5C:
- cmp r1, #0x30
- movne r10, #0x4
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3D84:
- cmp r1, #0x0
- blt _020E3D94
- cmp r1, #0x80
- blt _020E3D9C
-_020E3D94:
- mov r0, #0x0
- b _020E3DAC
-_020E3D9C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x400
-_020E3DAC:
- cmp r0, #0x0
- bne _020E3DE0
- cmp r1, #0x2e
- movne r10, #0x10
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x8
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3DE0:
- ldr r2, [sp, #0x8]
- mov r0, #0xe
- cmp r2, r0
- bhs _020E3E78
- mov r0, r2
- add r0, r0, #0x1
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x14]
- add r2, r11, r11, lsr #0x1f
- cmp r1, #0x0
- ldrb r0, [r0, r2, asr #0x1]
- blt _020E3E20
- cmp r1, #0x80
- bge _020E3E20
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r1, [r2, r1]
-_020E3E20:
- cmp r1, #0x41
- subge r1, r1, #0x37
- sublt r1, r1, #0x30
- mov r2, r11, lsr #0x1f
- and r3, r1, #0xff
- rsb r1, r2, r11, lsl #0x1f
- adds r1, r2, r1, ror #0x1f
- moveq r1, r3, lsl #0x4
- add r2, r11, r11, lsr #0x1f
- orrne r0, r0, r3
- andeq r1, r1, #0xff
- orreq r0, r0, r1
- ldr r1, [sp, #0x14]
- add r11, r11, #0x1
- strb r0, [r1, r2, asr #0x1]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3E78:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3E94:
- cmp r1, #0x0
- blt _020E3EA4
- cmp r1, #0x80
- blt _020E3EAC
-_020E3EA4:
- mov r0, #0x0
- b _020E3EBC
-_020E3EAC:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x400
-_020E3EBC:
- cmp r0, #0x0
- moveq r10, #0x10
- beq _020E4104
- ldr r2, [sp, #0x8]
- mov r0, #0xe
- cmp r2, r0
- bhs _020E3F54
- ldr r0, [sp, #0x14]
- add r2, r11, r11, lsr #0x1f
- cmp r1, #0x0
- ldrb r0, [r0, r2, asr #0x1]
- blt _020E3EFC
- cmp r1, #0x80
- bge _020E3EFC
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r1, [r2, r1]
-_020E3EFC:
- cmp r1, #0x41
- subge r1, r1, #0x37
- sublt r1, r1, #0x30
- mov r2, r11, lsr #0x1f
- and r3, r1, #0xff
- rsb r1, r2, r11, lsl #0x1f
- adds r1, r2, r1, ror #0x1f
- moveq r1, r3, lsl #0x4
- add r2, r11, r11, lsr #0x1f
- orrne r0, r0, r3
- andeq r1, r1, #0xff
- orreq r0, r0, r1
- ldr r1, [sp, #0x14]
- add r11, r11, #0x1
- strb r0, [r1, r2, asr #0x1]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3F54:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3F70:
- cmp r1, #0x0
- blt _020E3F80
- cmp r1, #0x80
- blt _020E3F88
-_020E3F80:
- mov r0, r1
- b _020E3F90
-_020E3F88:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3F90:
- cmp r0, #0x50
- movne r5, #0x800
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x20
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3FBC:
- cmp r1, #0x2d
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020E3FE4
- cmp r1, #0x2b
- beq _020E3FE4
- mov r0, r8
- mov r2, #0x1
- blx r9
- sub r4, r4, #0x1
-_020E3FE4:
- mov r10, #0x40
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E4004:
- cmp r1, #0x0
- blt _020E4014
- cmp r1, #0x80
- blt _020E401C
-_020E4014:
- mov r0, #0x0
- b _020E402C
-_020E401C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E402C:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- movne r10, #0x100
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x80
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E4064:
- cmp r1, #0x30
- movne r10, #0x100
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E408C:
- cmp r1, #0x0
- blt _020E409C
- cmp r1, #0x80
- blt _020E40A4
-_020E409C:
- mov r0, #0x0
- b _020E40B4
-_020E40A4:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E40B4:
- cmp r0, #0x0
- moveq r5, #0x800
- beq _020E4104
- ldr r0, [sp, #0x10]
- sub r2, r1, #0x30
- mov r1, #0xa
- mla r0, r1, r0, r2
- str r0, [sp, #0x10]
- ldr r1, _020E4304 ; =0x00007FFF
- ldr r0, [sp, #0x20]
- add r4, r4, #0x1
- cmp r0, r1
- ldrgt r0, [sp, #0xd0]
- movgt r1, #0x1
- strgt r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r1, r0
-_020E4104:
- ldr r0, [sp, #0x0]
- cmp r4, r0
- bgt _020E4124
- mvn r0, #0x0
- cmp r1, r0
- beq _020E4124
- tst r5, #0x1800
- beq _020E3418
-_020E4124:
- cmp r5, #0x8000
- beq _020E4140
- ldr r0, _020E4308 ; =0x00000E2C
- tst r5, r0
- moveq r0, #0x1
- movne r0, #0x0
- b _020E4164
-_020E4140:
- sub r0, r4, #0x1
- cmp r0, #0x2
- ble _020E4158
- ldr r0, _020E430C ; =0x0000018E
- tst r10, r0
- bne _020E4160
-_020E4158:
- mov r0, #0x1
- b _020E4164
-_020E4160:
- mov r0, #0x0
-_020E4164:
- cmp r0, #0x0
- movne r2, #0x0
- ldrne r0, [sp, #0x4]
- bne _020E4184
- ldr r0, [sp, #0x2c]
- sub r2, r4, #0x1
- add r2, r2, r0
- ldr r0, [sp, #0x4]
-_020E4184:
- str r2, [r0, #0x0]
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- bne _020E4388
- ldr r0, [sp, #0x24]
- ldrb r2, [sp, #0x84]
- cmp r0, #0x0
- ldrne r0, [sp, #0x20]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x20]
- add r0, sp, #0x85
- add r1, r0, r2
- b _020E41CC
-_020E41C0:
- ldr r0, [sp, #0x1c]
- add r0, r0, #0x1
- str r0, [sp, #0x1c]
-_020E41CC:
- cmp r2, #0x0
- sub r2, r2, #0x1
- beq _020E41E4
- ldrb r0, [r1, #-0x1]!
- cmp r0, #0x30
- beq _020E41C0
-_020E41E4:
- add r0, r2, #0x1
- strb r0, [sp, #0x84]
- ands r2, r0, #0xff
- bne _020E4208
- add r1, r2, #0x1
- strb r1, [sp, #0x84]
- add r0, sp, #0x85
- mov r1, #0x30
- strb r1, [r0, r2]
-_020E4208:
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x1c]
- mov r2, #0x8000
- add r0, r1, r0
- rsb r2, r2, #0x0
- str r0, [sp, #0x20]
- cmp r0, r2
- blt _020E4230
- cmp r0, r2, lsr #0x11
- ble _020E423C
-_020E4230:
- ldr r0, [sp, #0xd0]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E423C:
- ldr r0, [sp, #0xd0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020E4298
- ldr r0, [sp, #0x24]
- cmp r0, #0x0
- movne r0, #0x0
- addne sp, sp, #0xa8
- movne r1, r0
- ldmneia sp!, {r3-r11,pc}
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- ldreq r1, _020E4310 ; =UNK_02106B7C
- addeq sp, sp, #0xa8
- ldmeqia r1, {r0-r1}
- ldmeqia sp!, {r3-r11,pc}
- ldr r1, _020E4310 ; =UNK_02106B7C
- mov r0, #0x0
- ldmia r1, {r2-r3}
- mov r1, r0
- bl _dsub
- add sp, sp, #0xa8
- ldmia sp!, {r3-r11,pc}
-_020E4298:
- ldr r1, [sp, #0x20]
- add r0, sp, #0x80
- strh r1, [sp, #0x82]
- bl __dec2num
- mov r4, r0
- mov r6, r1
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r6
- bl _dneq
- beq _020E4318
- mov r0, r4
- mov r1, r6
- mov r2, #0x0
- mov r3, #0x100000
- bl _dls
- bhs _020E4318
- ldr r0, [sp, #0xd0]
- mov r1, #0x1
- str r1, [r0, #0x0]
- b _020E4344
- .balign 4
-_020E42F0: .word UNK_02104439
-_020E42F4: .word UNK_02104434
-_020E42F8: .word UNK_0210430C
-_020E42FC: .word UNK_0210428C
-_020E4300: .word UNK_02106B74
-_020E4304: .word 0x00007FFF
-_020E4308: .word 0x00000E2C
-_020E430C: .word 0x0000018E
-_020E4310: .word UNK_02106B7C
-_020E4314: .word 0x7FEFFFFF
-_020E4318:
- ldr r3, _020E4314 ; =0x7FEFFFFF
- mov r0, r4
- mov r1, r6
- mvn r2, #0x0
- bl _dgr
- bls _020E4344
- ldr r0, [sp, #0xd0]
- mov r2, #0x1
- ldr r1, _020E4310 ; =UNK_02106B7C
- str r2, [r0, #0x0]
- ldmia r1, {r4,r6}
-_020E4344:
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- beq _020E4378
- ldr r0, _020E4308 ; =0x00000E2C
- tst r5, r0
- beq _020E4378
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r6
- bl _dsub
- mov r4, r0
- mov r6, r1
-_020E4378:
- add sp, sp, #0xa8
- mov r0, r4
- mov r1, r6
- ldmia sp!, {r3-r11,pc}
-_020E4388:
- ldr r0, [sp, #0xc]
- add r4, sp, #0x38
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- ldrb r3, [sp, #0x45]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x10]
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x8]
- mov r2, #0x0
- add r0, r1, r0, lsl #0x2
- str r0, [sp, #0x10]
- mov r1, #0x80
- b _020E43D0
-_020E43C0:
- ldr r0, [sp, #0x10]
- add r2, r2, #0x1
- sub r0, r0, #0x1
- str r0, [sp, #0x10]
-_020E43D0:
- cmp r2, #0x4
- bhs _020E43E0
- tst r3, r1, asr r2
- beq _020E43C0
-_020E43E0:
- adds r5, r2, #0x1
- beq _020E442C
- add r0, sp, #0x4c
- add r3, sp, #0x45
- str r0, [sp, #0x14]
- mov r1, #0x0
- cmp r0, r3
- blo _020E442C
- rsb r6, r5, #0x8
-_020E4404:
- ldr r0, [sp, #0x14]
- ldrb r0, [r0, #0x0]
- orr r2, r1, r0, lsl r5
- mov r1, r0, asr r6
- ldr r0, [sp, #0x14]
- and r1, r1, #0xff
- strb r2, [r0], #-0x1
- str r0, [sp, #0x14]
- cmp r0, r3
- bhs _020E4404
-_020E442C:
- mov r2, #0x0
- mov r6, r2
- strb r2, [r4, #0x0]
- strb r2, [r4, #0x1]
- strb r2, [r4, #0x2]
- strb r2, [r4, #0x3]
- strb r2, [r4, #0x4]
- strb r2, [r4, #0x5]
- strb r2, [r4, #0x6]
- strb r2, [r4, #0x7]
- mov r3, #0xc
- mov r7, #0x1
- mov r0, #0xff
- add r1, sp, #0x45
-_020E4464:
- add r5, r2, #0x8
- cmp r5, #0x34
- ldrb r5, [r1, r6]
- rsbhi r8, r2, #0x34
- and r11, r3, #0x7
- andhi r5, r5, r0, lsl r8
- andhi r5, r5, #0xff
- mov r8, r5, asr r11
- and r9, r8, #0xff
- ldrb r10, [r4, r7]
- rsb r8, r11, #0x8
- mov r5, r5, lsl r8
- orr r9, r10, r9
- strb r9, [r4, r7]
- add r7, r7, #0x1
- add r2, r2, #0x8
- ldrb r8, [r4, r7]
- and r5, r5, #0xff
- cmp r2, #0x34
- orr r5, r8, r5
- strb r5, [r4, r7]
- add r3, r3, #0x8
- add r6, r6, #0x1
- blo _020E4464
- ldr r0, [sp, #0x10]
- mov r1, #0x800
- add r0, r0, #0xfe
- add r2, r0, #0x300
- rsb r1, r1, #0x0
- tst r2, r1
- beq _020E44FC
- ldr r2, [sp, #0xd0]
- mov r3, #0x1
- mov r0, #0x0
- add sp, sp, #0xa8
- mov r1, r0
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E44FC:
- ldrb r0, [r4, #0x1]
- mov r2, r2, lsl #0x15
- ldrb r1, [r4, #0x0]
- orr r0, r0, r2, lsr #0x11
- strb r0, [r4, #0x1]
- ldr r0, [sp, #0x28]
- orr r1, r1, r2, lsr #0x19
- cmp r0, #0x0
- andne r0, r1, #0xff
- strb r1, [r4, #0x0]
- orrne r0, r0, #0x80
- strneb r0, [r4, #0x0]
- mov r3, #0x0
-_020E4530:
- rsb r1, r3, #0x7
- ldrb r2, [r4, r3]
- ldrb r0, [r4, r1]
- strb r0, [r4, r3]
- add r3, r3, #0x1
- strb r2, [r4, r1]
- cmp r3, #0x4
- blt _020E4530
- ldmia r4, {r0-r1}
- add sp, sp, #0xa8
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start strtold
-strtold: ; 0x020E455C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x14
- mov r7, r0
- mov r0, #0x0
- mov r6, r1
- str r0, [sp, #0x8]
- add r4, sp, #0xc
- str r7, [sp, #0x4]
- ldr r1, _020E4630 ; =__StringRead
- add r2, sp, #0x4
- add r3, sp, #0x10
- sub r0, r0, #0x80000001
- str r4, [sp, #0x0]
- bl __strtold
- mov r5, r1
- mov r4, r0
- cmp r6, #0x0
- ldrne r0, [sp, #0x10]
- mov r1, r5
- addne r0, r7, r0
- strne r0, [r6, #0x0]
- mov r0, r4
- bl fabs
- ldr r2, [sp, #0xc]
- mov r6, r0
- mov r7, r1
- cmp r2, #0x0
- bne _020E4614
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r5
- bl _dneq
- beq _020E4620
- mov r0, r6
- mov r1, r7
- mov r2, #0x0
- mov r3, #0x100000
- bl _dls
- blo _020E4614
- ldr r3, _020E4634 ; =0x7FEFFFFF
- mov r0, r6
- mov r1, r7
- mvn r2, #0x0
- bl _dgr
- bls _020E4620
-_020E4614:
- ldr r0, _020E4638 ; =UNK_021D74A8
- mov r1, #0x22
- str r1, [r0, #0x0]
-_020E4620:
- mov r0, r4
- mov r1, r5
- add sp, sp, #0x14
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020E4630: .word __StringRead
-_020E4634: .word 0x7FEFFFFF
-_020E4638: .word UNK_021D74A8
-
- arm_func_start atod
-atod: ; 0x020E463C
- ldr ip, _020E4648 ; =strtold
- mov r1, #0x0
- bx r12
- .balign 4
-_020E4648: .word strtold
-
- arm_func_start __strtoul
-__strtoul:
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- ldr r4, [sp, #0x38]
- movs r9, r0
- ldr r0, [sp, #0x34]
- str r4, [sp, #0x38]
- mov r4, #0x0
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x38]
- str r1, [sp, #0x0]
- str r4, [r0, #0x0]
- mov r0, r4
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x34]
- mov r1, r4
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x30]
- str r4, [sp, #0x8]
- mov r8, r2
- mov r7, r3
- mov r5, r4
- mov r10, r4
- str r0, [sp, #0x30]
- mov r4, #0x1
- bmi _020E46CC
- cmp r9, #0x1
- beq _020E46CC
- cmp r9, #0x24
- bgt _020E46CC
- ldr r0, [sp, #0x0]
- cmp r0, #0x1
- bge _020E46D4
-_020E46CC:
- mov r4, #0x40
- b _020E46F0
-_020E46D4:
- ldr r1, [sp, #0x8]
- mov r0, r7
- mov r3, r1
- mov r2, r1
- add r5, r3, #0x1
- blx r8
- mov r6, r0
-_020E46F0:
- cmp r9, #0x0
- beq _020E4708
- mov r1, r9
- mvn r0, #0x0
- bl _u32_div_f
- str r0, [sp, #0x4]
-_020E4708:
- mvn r11, #0x0
- b _020E49C8
-_020E4710:
- cmp r4, #0x8
- bgt _020E4748
- cmp r4, #0x0
- addge pc, pc, r4, lsl #0x2
- b _020E49C8
- b _020E49C8
- b _020E4754
- b _020E4800
- b _020E49C8
- b _020E483C
- b _020E49C8
- b _020E49C8
- b _020E49C8
- b _020E487C
-_020E4748:
- cmp r4, #0x10
- beq _020E487C
- b _020E49C8
-_020E4754:
- cmp r6, #0x0
- blt _020E4764
- cmp r6, #0x80
- blt _020E476C
-_020E4764:
- mov r0, #0x0
- b _020E477C
-_020E476C:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E477C:
- cmp r0, #0x0
- beq _020E47A8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- str r0, [sp, #0x8]
- b _020E49C8
-_020E47A8:
- cmp r6, #0x2b
- bne _020E47CC
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E47F8
-_020E47CC:
- cmp r6, #0x2d
- bne _020E47F8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x34]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E47F8:
- mov r4, #0x2
- b _020E49C8
-_020E4800:
- cmp r9, #0x0
- cmpne r9, #0x10
- bne _020E4834
- cmp r6, #0x30
- bne _020E4834
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r4, #0x4
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E49C8
-_020E4834:
- mov r4, #0x8
- b _020E49C8
-_020E483C:
- cmp r6, #0x58
- cmpne r6, #0x78
- bne _020E486C
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r9, #0x10
- mov r4, #0x8
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E49C8
-_020E486C:
- cmp r9, #0x0
- moveq r9, #0x8
- mov r4, #0x10
- b _020E49C8
-_020E487C:
- ldr r0, [sp, #0x4]
- cmp r9, #0x0
- moveq r9, #0xa
- cmp r0, #0x0
- bne _020E48A0
- mov r0, r11
- mov r1, r9
- bl _u32_div_f
- str r0, [sp, #0x4]
-_020E48A0:
- cmp r6, #0x0
- blt _020E48B0
- cmp r6, #0x80
- blt _020E48B8
-_020E48B0:
- mov r0, #0x0
- b _020E48C8
-_020E48B8:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x8
-_020E48C8:
- cmp r0, #0x0
- beq _020E48F0
- sub r6, r6, #0x30
- cmp r6, r9
- blt _020E4978
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- add r6, r6, #0x30
- b _020E49C8
-_020E48F0:
- cmp r6, #0x0
- blt _020E4900
- cmp r6, #0x80
- blt _020E4908
-_020E4900:
- mov r0, #0x0
- b _020E4918
-_020E4908:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x1
-_020E4918:
- cmp r0, #0x0
- beq _020E494C
- cmp r6, #0x0
- blt _020E4930
- cmp r6, #0x80
- blt _020E4938
-_020E4930:
- mov r0, r6
- b _020E4940
-_020E4938:
- ldr r0, _020E4A30 ; =UNK_0210428C
- ldrb r0, [r0, r6]
-_020E4940:
- sub r0, r0, #0x37
- cmp r0, r9
- blt _020E495C
-_020E494C:
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- b _020E49C8
-_020E495C:
- cmp r6, #0x0
- blt _020E4974
- cmp r6, #0x80
- bge _020E4974
- ldr r0, _020E4A30 ; =UNK_0210428C
- ldrb r6, [r0, r6]
-_020E4974:
- sub r6, r6, #0x37
-_020E4978:
- ldr r0, [sp, #0x4]
- mov r4, #0x10
- cmp r10, r0
- ldrhi r0, [sp, #0x38]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mul r0, r10, r9
- mov r10, r0
- sub r0, r11, r0
- cmp r6, r0
- ldrhi r0, [sp, #0x38]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r10, r10, r6
- add r5, r5, #0x1
- blx r8
- mov r6, r0
-_020E49C8:
- ldr r0, [sp, #0x0]
- cmp r5, r0
- bgt _020E49E4
- cmp r6, r11
- beq _020E49E4
- tst r4, #0x60
- beq _020E4710
-_020E49E4:
- tst r4, #0x34
- bne _020E49FC
- ldr r0, [sp, #0x30]
- mov r10, #0x0
- str r10, [r0, #0x0]
- b _020E4A10
-_020E49FC:
- ldr r0, [sp, #0x8]
- sub r1, r5, #0x1
- add r1, r1, r0
- ldr r0, [sp, #0x30]
- str r1, [r0, #0x0]
-_020E4A10:
- mov r0, r7
- mov r1, r6
- mov r2, #0x1
- blx r8
- mov r0, r10
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E4A2C: .word UNK_0210430C
-_020E4A30: .word UNK_0210428C
-
- arm_func_start __strtoull
-__strtoull: ; 0x020E4A34
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x1c
- ldr r4, [sp, #0x48]
- movs r9, r0
- ldr r0, [sp, #0x44]
- str r4, [sp, #0x48]
- mov r4, #0x0
- str r0, [sp, #0x44]
- ldr r0, [sp, #0x48]
- str r1, [sp, #0x0]
- str r4, [r0, #0x0]
- mov r0, r4
- str r0, [sp, #0xc]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x44]
- mov r1, r4
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x40]
- str r4, [sp, #0x14]
- mov r8, r2
- mov r7, r3
- mov r5, r4
- mov r10, r4
- mov r11, r4
- str r0, [sp, #0x40]
- mov r4, #0x1
- bmi _020E4ABC
- cmp r9, #0x1
- beq _020E4ABC
- cmp r9, #0x24
- bgt _020E4ABC
- ldr r0, [sp, #0x0]
- cmp r0, #0x1
- bge _020E4AC4
-_020E4ABC:
- mov r4, #0x40
- b _020E4ADC
-_020E4AC4:
- ldr r1, [sp, #0x14]
- mov r0, r7
- mov r2, r1
- add r5, r1, #0x1
- blx r8
- mov r6, r0
-_020E4ADC:
- cmp r9, #0x0
- beq _020E4B00
- mvn r0, #0x0
- mov r1, r0
- mov r3, r9, asr #0x1f
- mov r2, r9
- bl _ll_udiv
- str r0, [sp, #0xc]
- str r1, [sp, #0x8]
-_020E4B00:
- mvn r0, #0x0
- str r0, [sp, #0x18]
- b _020E4E08
-_020E4B0C:
- cmp r4, #0x8
- bgt _020E4B44
- cmp r4, #0x0
- addge pc, pc, r4, lsl #0x2
- b _020E4E08
- b _020E4E08
- b _020E4B50
- b _020E4BFC
- b _020E4E08
- b _020E4C38
- b _020E4E08
- b _020E4E08
- b _020E4E08
- b _020E4C78
-_020E4B44:
- cmp r4, #0x10
- beq _020E4C78
- b _020E4E08
-_020E4B50:
- cmp r6, #0x0
- blt _020E4B60
- cmp r6, #0x80
- blt _020E4B68
-_020E4B60:
- mov r0, #0x0
- b _020E4B78
-_020E4B68:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E4B78:
- cmp r0, #0x0
- beq _020E4BA4
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x14]
- add r0, r0, #0x1
- str r0, [sp, #0x14]
- b _020E4E08
-_020E4BA4:
- cmp r6, #0x2b
- bne _020E4BC8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4BF4
-_020E4BC8:
- cmp r6, #0x2d
- bne _020E4BF4
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x44]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E4BF4:
- mov r4, #0x2
- b _020E4E08
-_020E4BFC:
- cmp r9, #0x0
- cmpne r9, #0x10
- bne _020E4C30
- cmp r6, #0x30
- bne _020E4C30
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r4, #0x4
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4E08
-_020E4C30:
- mov r4, #0x8
- b _020E4E08
-_020E4C38:
- cmp r6, #0x58
- cmpne r6, #0x78
- bne _020E4C68
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r9, #0x10
- mov r4, #0x8
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4E08
-_020E4C68:
- cmp r9, #0x0
- moveq r9, #0x8
- mov r4, #0x10
- b _020E4E08
-_020E4C78:
- ldr r1, [sp, #0x8]
- mov r0, #0x0
- cmp r9, #0x0
- moveq r9, #0xa
- cmp r1, r0
- ldr r1, [sp, #0xc]
- cmpeq r1, r0
- bne _020E4CB4
- ldr r0, [sp, #0x18]
- mov r3, r9, asr #0x1f
- mov r1, r0
- mov r2, r9
- bl _ll_udiv
- str r0, [sp, #0xc]
- str r1, [sp, #0x8]
-_020E4CB4:
- cmp r6, #0x0
- blt _020E4CC4
- cmp r6, #0x80
- blt _020E4CCC
-_020E4CC4:
- mov r0, #0x0
- b _020E4CDC
-_020E4CCC:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x8
-_020E4CDC:
- cmp r0, #0x0
- beq _020E4D04
- sub r6, r6, #0x30
- cmp r6, r9
- blt _020E4D8C
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- add r6, r6, #0x30
- b _020E4E08
-_020E4D04:
- cmp r6, #0x0
- blt _020E4D14
- cmp r6, #0x80
- blt _020E4D1C
-_020E4D14:
- mov r0, #0x0
- b _020E4D2C
-_020E4D1C:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x1
-_020E4D2C:
- cmp r0, #0x0
- beq _020E4D60
- cmp r6, #0x0
- blt _020E4D44
- cmp r6, #0x80
- blt _020E4D4C
-_020E4D44:
- mov r0, r6
- b _020E4D54
-_020E4D4C:
- ldr r0, _020E4E7C ; =UNK_0210428C
- ldrb r0, [r0, r6]
-_020E4D54:
- sub r0, r0, #0x37
- cmp r0, r9
- blt _020E4D70
-_020E4D60:
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- b _020E4E08
-_020E4D70:
- cmp r6, #0x0
- blt _020E4D88
- cmp r6, #0x80
- bge _020E4D88
- ldr r0, _020E4E7C ; =UNK_0210428C
- ldrb r6, [r0, r6]
-_020E4D88:
- sub r6, r6, #0x37
-_020E4D8C:
- ldr r0, [sp, #0x8]
- umull r2, r3, r10, r9
- cmp r11, r0
- ldr r0, [sp, #0xc]
- mov r4, #0x10
- cmpeq r10, r0
- ldrhi r0, [sp, #0x48]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mov r1, r9, asr #0x1f
- mla r3, r10, r1, r3
- mla r3, r11, r9, r3
- ldr r1, [sp, #0x18]
- mov r10, r2
- subs r2, r1, r2
- mov r0, r6, asr #0x1f
- sbc r1, r1, r3
- cmp r0, r1
- cmpeq r6, r2
- ldrhi r1, [sp, #0x48]
- movhi r2, #0x1
- strhi r2, [r1, #0x0]
- mov r1, #0x0
- mov r11, r3
- adds r10, r10, r6
- adc r11, r11, r0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
-_020E4E08:
- ldr r0, [sp, #0x0]
- cmp r5, r0
- bgt _020E4E28
- ldr r0, [sp, #0x18]
- cmp r6, r0
- beq _020E4E28
- tst r4, #0x60
- beq _020E4B0C
-_020E4E28:
- tst r4, #0x34
- bne _020E4E44
- ldr r0, [sp, #0x40]
- mov r10, #0x0
- mov r11, r10
- str r10, [r0, #0x0]
- b _020E4E58
-_020E4E44:
- ldr r0, [sp, #0x14]
- sub r1, r5, #0x1
- add r1, r1, r0
- ldr r0, [sp, #0x40]
- str r1, [r0, #0x0]
-_020E4E58:
- mov r0, r7
- mov r1, r6
- mov r2, #0x1
- blx r8
- mov r0, r10
- mov r1, r11
- add sp, sp, #0x1c
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E4E78: .word UNK_0210430C
-_020E4E7C: .word UNK_0210428C
-
- arm_func_start strtoul
-strtoul: ; 0x020E4E80
- stmdb sp!, {r3-r5,lr}
- sub sp, sp, #0x20
- mov r5, r0
- mov lr, #0x0
- mov r0, r2
- mov r4, r1
- add r2, sp, #0x1c
- str r5, [sp, #0xc]
- str lr, [sp, #0x10]
- str r2, [sp, #0x0]
- add r1, sp, #0x18
- str r1, [sp, #0x4]
- add r12, sp, #0x14
- ldr r2, _020E4F10 ; =__StringRead
- add r3, sp, #0xc
- sub r1, lr, #0x80000001
- str r12, [sp, #0x8]
- bl __strtoul
- cmp r4, #0x0
- ldrne r1, [sp, #0x1c]
- addne r1, r5, r1
- strne r1, [r4, #0x0]
- ldr r1, [sp, #0x14]
- cmp r1, #0x0
- beq _020E4EFC
- ldr r0, _020E4F14 ; =UNK_021D74A8
- mov r1, #0x22
- str r1, [r0, #0x0]
- add sp, sp, #0x20
- mvn r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E4EFC:
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- rsbne r0, r0, #0x0
- add sp, sp, #0x20
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E4F10: .word __StringRead
-_020E4F14: .word UNK_021D74A8
-
- arm_func_start strtold2
-strtold2: ; 0x020E4F18
- stmdb sp!, {r3-r5,lr}
- sub sp, sp, #0x20
- mov r5, r0
- mov lr, #0x0
- mov r0, r2
- mov r4, r1
- add r2, sp, #0x1c
- str r5, [sp, #0xc]
- str lr, [sp, #0x10]
- str r2, [sp, #0x0]
- add r1, sp, #0x18
- str r1, [sp, #0x4]
- add r12, sp, #0x14
- ldr r2, _020E4FD8 ; =__StringRead
- add r3, sp, #0xc
- sub r1, lr, #0x80000001
- str r12, [sp, #0x8]
- bl __strtoul
- cmp r4, #0x0
- ldrne r1, [sp, #0x1c]
- addne r1, r5, r1
- strne r1, [r4, #0x0]
- ldr r1, [sp, #0x14]
- cmp r1, #0x0
- bne _020E4FA4
- ldr r2, [sp, #0x18]
- cmp r2, #0x0
- bne _020E4F94
- mvn r1, #0x80000000
- cmp r0, r1
- bhi _020E4FA4
-_020E4F94:
- cmp r2, #0x0
- beq _020E4FC8
- cmp r0, #0x80000000
- bls _020E4FC8
-_020E4FA4:
- ldr r0, [sp, #0x18]
- ldr r1, _020E4FDC ; =UNK_021D74A8
- mov r2, #0x22
- cmp r0, #0x0
- movne r0, #0x80000000
- str r2, [r1, #0x0]
- add sp, sp, #0x20
- mvneq r0, #0x80000000
- ldmia sp!, {r3-r5,pc}
-_020E4FC8:
- cmp r2, #0x0
- rsbne r0, r0, #0x0
- add sp, sp, #0x20
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E4FD8: .word __StringRead
-_020E4FDC: .word UNK_021D74A8
-
- arm_func_start atol
-atol: ; 0x020E4FE0
- ldr ip, _020E4FF0 ; =strtold
- mov r1, #0x0
- mov r2, #0xa
- bx r12
- .balign 4
-_020E4FF0: .word strtold2
-
- arm_func_start fwide
-fwide:
- cmp r0, #0x0
- beq _020E500C
- ldr r3, [r0, #0x4]
- mov r2, r3, lsl #0x16
- movs r2, r2, lsr #0x1d
- bne _020E5014
-_020E500C:
- mov r0, #0x0
- bx lr
-_020E5014:
- mov r2, r3, lsl #0x14
- movs r2, r2, lsr #0x1e
- beq _020E5034
- cmp r2, #0x1
- beq _020E505C
- cmp r2, #0x2
- moveq r1, #0x1
- b _020E5060
-_020E5034:
- cmp r1, #0x0
- ble _020E504C
- bic r2, r3, #0xc00
- orr r2, r2, #0x800
- str r2, [r0, #0x4]
- b _020E5060
-_020E504C:
- biclt r2, r3, #0xc00
- orrlt r2, r2, #0x400
- strlt r2, [r0, #0x4]
- b _020E5060
-_020E505C:
- mvn r1, #0x0
-_020E5060:
- mov r0, r1
- bx lr
-
- arm_func_start wmemcpy
-wmemcpy: ; 0x020E5068
- ldr ip, _020E5074 ; =memcpy
- mov r2, r2, lsl #0x1
- bx r12
- .balign 4
-_020E5074: .word memcpy
-
- arm_func_start wmemchr
-wmemchr:
- cmp r2, #0x0
- beq _020E5098
-_020E5080:
- ldrh r3, [r0, #0x0]
- cmp r3, r1
- bxeq lr
- add r0, r0, #0x2
- subs r2, r2, #0x1
- bne _020E5080
-_020E5098:
- mov r0, #0x0
- bx lr
-
- 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
-_020E541C:
- b _020E5470
-_020E5420:
- b _020E5528
-_020E5424:
- b _020E54A8
-_020E5428:
- b _020E5518
-_020E542C:
- b _020E55EC
-_020E5430:
- b _020E5470
-_020E5434:
- b _020E55EC
-_020E5438:
- b _020E55EC
-_020E543C:
- b _020E55EC
-_020E5440:
- b _020E55EC
-_020E5444:
- b _020E55D8
-_020E5448:
- b _020E5470
-_020E544C:
- b _020E5564
-_020E5450:
- b _020E55EC
-_020E5454:
- b _020E55EC
-_020E5458:
- b _020E55B4
-_020E545C:
- b _020E55EC
-_020E5460:
- b _020E5470
-_020E5464:
- b _020E55EC
-_020E5468:
- b _020E55EC
-_020E546C:
- b _020E5470
-_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
-_020E6CB8:
- b _020E6CDC
-_020E6CBC:
- b _020E6F18
-_020E6CC0:
- b _020E6CE4
-_020E6CC4:
- b _020E6CEC
-_020E6CC8:
- b _020E6D14
-_020E6CCC:
- b _020E6F18
-_020E6CD0:
- b _020E6CF4
-_020E6CD4:
- b _020E6D04
-_020E6CD8:
- b _020E6D0C
-_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
-_020E7020:
- ldrh r1, [r0], #0x2
- add r2, r2, #0x1
- cmp r1, #0x0
- bne _020E7020
- mov r0, r2
- bx lr
-
- arm_func_start wcscpy
-wcscpy: ; 0x020E7038
- mov r3, r0
-_020E703C:
- ldrh r2, [r1], #0x2
- mov r12, r3
- strh r2, [r3], #0x2
- ldrh r2, [r12, #0x0]
- cmp r2, #0x0
- bne _020E703C
- bx lr
-
- arm_func_start wcschr
-wcschr: ; 0x020E7058
- ldrh r2, [r0], #0x2
- cmp r2, #0x0
- beq _020E707C
-_020E7064:
- cmp r2, r1
- subeq r0, r0, #0x2
- bxeq lr
- ldrh r2, [r0], #0x2
- cmp r2, #0x0
- bne _020E7064
-_020E707C:
- cmp r1, #0x0
- movne r0, #0x0
- subeq r0, r0, #0x2
- bx lr
-
- arm_func_start __ieee754_pow
-__ieee754_pow: ; 0x020E708C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x80
- ldr r8, [sp, #0xb4]
- ldr r6, [sp, #0xac]
- ldr r0, [sp, #0xb0]
- bic r9, r8, #0x80000000
- orrs r1, r9, r0
- ldr r7, [sp, #0xa8]
- bic r4, r6, #0x80000000
- addeq sp, sp, #0x80
- moveq r0, #0x0
- ldreq r1, _020E7638 ; =0x3FF00000
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r1, _020E763C ; =0x7FF00000
- cmp r4, r1
- bgt _020E70FC
- bne _020E70E4
- cmp r7, #0x0
- bne _020E70FC
-_020E70E4:
- ldr r1, _020E763C ; =0x7FF00000
- cmp r9, r1
- bgt _020E70FC
- bne _020E7120
- cmp r0, #0x0
- beq _020E7120
-_020E70FC:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- ldr r2, [sp, #0xb0]
- ldr r3, [sp, #0xb4]
- bl _dadd
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7120:
- cmp r6, #0x0
- mov r5, #0x0
- bge _020E7188
- ldr r1, _020E7640 ; =0x43400000
- cmp r9, r1
- movge r5, #0x2
- bge _020E7188
- sub r1, r1, #0x3500000
- cmp r9, r1
- blt _020E7188
- ldr r1, _020E7644 ; =0xFFFFFC01
- add r1, r1, r9, asr #0x14
- cmp r1, #0x14
- ble _020E7170
- rsb r2, r1, #0x34
- mov r1, r0, lsr r2
- cmp r0, r1, lsl r2
- andeq r1, r1, #0x1
- rsbeq r5, r1, #0x2
- b _020E7188
-_020E7170:
- cmp r0, #0x0
- rsbeq r2, r1, #0x14
- moveq r1, r9, asr r2
- cmpeq r9, r1, lsl r2
- andeq r1, r1, #0x1
- rsbeq r5, r1, #0x2
-_020E7188:
- cmp r0, #0x0
- bne _020E72E4
- ldr r1, _020E763C ; =0x7FF00000
- cmp r9, r1
- bne _020E723C
- add r0, r4, #0x100000
- add r0, r0, #0xc0000000
- orrs r0, r0, r7
- bne _020E71D0
- ldr r0, [sp, #0xb0]
- ldr r1, [sp, #0xb4]
- mov r2, r0
- mov r3, r1
- bl _dsub
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E71D0:
- sub r0, r1, #0x40000000
- cmp r4, r0
- blt _020E7200
- cmp r8, #0x0
- ldrge r0, [sp, #0xb0]
- ldrge r1, [sp, #0xb4]
- movlt r0, #0x0
- add sp, sp, #0x80
- movlt r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7200:
- cmp r8, #0x0
- mov r0, #0x0
- addge sp, sp, #0x80
- movge r1, r0
- ldmgeia sp!, {r3-r11,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r2, [sp, #0xb0]
- ldr r3, [sp, #0xb4]
- mov r1, r0
- bl _dsub
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E723C:
- sub r0, r1, #0x40000000
- cmp r9, r0
- bne _020E7288
- cmp r8, #0x0
- ldrge r0, [sp, #0xa8]
- ldrge r1, [sp, #0xac]
- addge sp, sp, #0x80
- ldmgeia sp!, {r3-r11,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r2, [sp, #0xa8]
- ldr r3, [sp, #0xac]
- sub r1, r1, #0x40000000
- mov r0, #0x0
- bl _ddiv
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7288:
- cmp r8, #0x40000000
- bne _020E72B4
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- mov r2, r0
- mov r3, r1
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E72B4:
- ldr r0, _020E7648 ; =0x3FE00000
- cmp r8, r0
- bne _020E72E4
- cmp r6, #0x0
- blt _020E72E4
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- bl _dsqrt
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E72E4:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- bl fabs
- str r0, [sp, #0x70]
- str r1, [sp, #0x74]
- cmp r7, #0x0
- bne _020E73E8
- ldr r0, _020E763C ; =0x7FF00000
- cmp r4, r0
- cmpne r4, #0x0
- subne r0, r0, #0x40000000
- cmpne r4, r0
- bne _020E73E8
- ldr r2, [sp, #0x70]
- ldr r3, [sp, #0x74]
- str r2, [sp, #0x78]
- str r3, [sp, #0x7c]
- cmp r8, #0x0
- bge _020E7344
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _ddiv
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E7344:
- cmp r6, #0x0
- bge _020E73D0
- add r0, r4, #0x100000
- add r0, r0, #0xc0000000
- orrs r0, r0, r5
- bne _020E73AC
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dsub
- mov r4, r0
- mov r5, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r5
- bl _ddiv
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
- b _020E73D0
-_020E73AC:
- cmp r5, #0x1
- bne _020E73D0
- mov r0, #0x0
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- mov r1, r0
- bl _dsub
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E73D0:
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E73E8:
- mov r0, r6, asr #0x1f
- add r7, r0, #0x1
- orrs r0, r7, r5
- bne _020E7420
- ldr r0, _020E764C ; =UNK_02106B78
- ldr r1, _020E7650 ; =UNK_021D74A8
- ldr r0, [r0, #0x0]
- mov r2, #0x21
- str r2, [r1, #0x0]
- bl _f2d
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7420:
- ldr r3, _020E7654 ; =0x41E00000
- cmp r9, r3
- ble _020E7724
- add r0, r3, #0x2100000
- cmp r9, r0
- ble _020E7490
- ldr r1, _020E7658 ; =0x3FEFFFFF
- cmp r4, r1
- bgt _020E7464
- cmp r8, #0x0
- mov r0, #0x0
- addlt r1, r1, #0x40000001
- add sp, sp, #0x80
- movge r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7464:
- add r0, r1, #0x1
- cmp r4, r0
- blt _020E7490
- cmp r8, #0x0
- mov r0, #0x0
- addgt r1, r1, #0x40000001
- add sp, sp, #0x80
- movle r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7490:
- ldr r2, _020E7658 ; =0x3FEFFFFF
- cmp r4, r2
- bge _020E74BC
- cmp r8, #0x0
- mov r0, #0x0
- addlt r1, r2, #0x40000001
- add sp, sp, #0x80
- movge r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E74BC:
- add r0, r2, #0x1
- cmp r4, r0
- ble _020E74E8
- cmp r8, #0x0
- mov r0, #0x0
- addgt r1, r2, #0x40000001
- add sp, sp, #0x80
- movle r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E74E8:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- add r3, r2, #0x1
- mov r2, #0x0
- bl _dsub
- mov r2, r0
- mov r3, r1
- str r0, [sp, #0x50]
- str r1, [sp, #0x54]
- bl _dmul
- mov r6, r1
- mov r4, r0
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- ldr r1, _020E765C ; =0x3FD00000
- mov r0, #0x0
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7660 ; =0x55555555
- sub r1, r0, #0x15800000
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, #0x0
- ldr r1, _020E7648 ; =0x3FE00000
- bl _dsub
- mov r2, r0
- mov r0, r4
- mov r3, r1
- mov r1, r6
- bl _dmul
- mov r6, r0
- mov r8, r1
- mov r0, #0x60000000
- ldr r1, _020E7664 ; =0x3FF71547
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r4, r0
- mov r9, r1
- ldr r0, _020E7668 ; =0xF85DDF44
- ldr r1, _020E766C ; =0x3E54AE0B
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r11, r0
- mov r10, r1
- ldr r0, _020E7670 ; =0x652B82FE
- ldr r1, _020E7664 ; =0x3FF71547
- mov r2, r6
- mov r3, r8
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r11
- mov r1, r10
- bl _dsub
- mov r6, r0
- mov r8, r1
- mov r0, r4
- mov r1, r9
- mov r2, r6
- mov r3, r8
- bl _dadd
- mov r2, r4
- mov r3, r9
- str r1, [sp, #0x5c]
- mov r0, #0x0
- str r0, [sp, #0x58]
- bl _dsub
- mov r2, r0
- mov r0, r6
- mov r3, r1
- mov r1, r8
- bl _dsub
- mov r4, r0
- mov r8, r1
- b _020E7C80
- .balign 4
-_020E7638: .word 0x3FF00000
-_020E763C: .word 0x7FF00000
-_020E7640: .word 0x43400000
-_020E7644: .word 0xFFFFFC01
-_020E7648: .word 0x3FE00000
-_020E764C: .word UNK_02106B78
-_020E7650: .word UNK_021D74A8
-_020E7654: .word 0x41E00000
-_020E7658: .word 0x3FEFFFFF
-_020E765C: .word 0x3FD00000
-_020E7660: .word 0x55555555
-_020E7664: .word 0x3FF71547
-_020E7668: .word 0xF85DDF44
-_020E766C: .word 0x3E54AE0B
-_020E7670: .word 0x652B82FE
-_020E7674: .word 0x0003988E
-_020E7678: .word 0x000BB67A
-_020E767C: .word UNK_02104754
-_020E7680: .word 0x4A454EEF
-_020E7684: .word 0x3FCA7E28
-_020E7688: .word 0x93C9DB65
-_020E768C: .word 0x3FCD864A
-_020E7690: .word 0xA91D4101
-_020E7694: .word 0x3FD17460
-_020E7698: .word 0x518F264D
-_020E769C: .word 0x3FD55555
-_020E76A0: .word 0xDB6FABFF
-_020E76A4: .word 0x3FDB6DB6
-_020E76A8: .word 0x33333303
-_020E76AC: .word 0x3FE33333
-_020E76B0: .word 0x40080000
-_020E76B4: .word 0x3FEEC709
-_020E76B8: .word 0x145B01F5
-_020E76BC: .word 0xBE3E2FE0
-_020E76C0: .word 0xDC3A03FD
-_020E76C4: .word UNK_02104764
-_020E76C8: .word UNK_02104744
-_020E76CC: .word 0x40900000
-_020E76D0: .word 0x8800759C
-_020E76D4: .word 0x7E37E43C
-_020E76D8: .word 0x3C971547
-_020E76DC: .word 0x3F6F3400
-_020E76E0: .word 0xC2F8F359
-_020E76E4: .word 0x01A56E1F
-_020E76E8: .word 0x3FE62E43
-_020E76EC: .word 0xFEFA39EF
-_020E76F0: .word 0x3FE62E42
-_020E76F4: .word 0x0CA86C39
-_020E76F8: .word 0xBE205C61
-_020E76FC: .word 0x72BEA4D0
-_020E7700: .word 0x3E663769
-_020E7704: .word 0xC5D26BF1
-_020E7708: .word 0xBEBBBD41
-_020E770C: .word 0xAF25DE2C
-_020E7710: .word 0x3F11566A
-_020E7714: .word 0x16BEBD93
-_020E7718: .word 0xBF66C16C
-_020E771C: .word 0x5555553E
-_020E7720: .word 0x3FC55555
-_020E7724:
- cmp r4, #0x100000
- mov r6, #0x0
- bge _020E7754
- ldr r0, [sp, #0x70]
- ldr r1, [sp, #0x74]
- mov r2, r6
- add r3, r3, #0x1600000
- bl _dmul
- mov r4, r1
- str r0, [sp, #0x70]
- str r4, [sp, #0x74]
- sub r6, r6, #0x35
-_020E7754:
- ldr r0, _020E7644 ; =0xFFFFFC01
- ldr r1, _020E7674 ; =0x0003988E
- and r2, r4, r0, lsr #0xc
- add r0, r0, r4, asr #0x14
- orr r9, r2, #0xff00000
- cmp r2, r1
- add r6, r6, r0
- orr r9, r9, #0x30000000
- movle r8, #0x0
- ble _020E7794
- ldr r0, _020E7678 ; =0x000BB67A
- cmp r2, r0
- movlt r8, #0x1
- addge r6, r6, #0x1
- subge r9, r9, #0x100000
- movge r8, #0x0
-_020E7794:
- ldr r2, _020E767C ; =UNK_02104754
- ldr r0, [sp, #0x70]
- add r1, r2, r8, lsl #0x3
- ldr r3, [r1, #0x4]
- ldr r2, [r2, r8, lsl #0x3]
- mov r1, r9
- str r9, [sp, #0x74]
- bl _dsub
- ldr r2, _020E767C ; =UNK_02104754
- mov r10, r0
- add r3, r2, r8, lsl #0x3
- mov r4, r1
- ldr r0, [sp, #0x70]
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- mov r1, r9
- bl _dadd
- mov r3, r1
- mov r2, r0
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _ddiv
- str r1, [sp, #0x24]
- mov r11, r0
- ldr r3, [sp, #0x24]
- mov r0, r10
- mov r1, r4
- mov r2, r11
- bl _dmul
- mov r2, r9, asr #0x1
- orr r2, r2, #0x20000000
- mov r9, r1
- add r2, r2, #0x80000
- add r1, r2, r8, lsl #0x12
- ldr r2, _020E767C ; =UNK_02104754
- str r0, [sp, #0x28]
- add r3, r2, r8, lsl #0x3
- mov r0, #0x0
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- str r9, [sp, #0x4c]
- str r1, [sp, #0x44]
- str r0, [sp, #0x48]
- str r0, [sp, #0x40]
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x70]
- ldr r1, [sp, #0x74]
- bl _dsub
- str r0, [sp, #0x2c]
- str r1, [sp, #0x1c]
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- mov r1, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r10
- mov r1, r4
- bl _dsub
- mov r10, r0
- mov r4, r1
- ldr r2, [sp, #0x2c]
- ldr r3, [sp, #0x1c]
- ldr r0, [sp, #0x48]
- mov r1, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r10
- mov r1, r4
- bl _dsub
- mov r3, r1
- mov r2, r0
- ldr r1, [sp, #0x24]
- mov r0, r11
- bl _dmul
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x28]
- str r1, [sp, #0x14]
- mov r1, r9
- mov r2, r0
- mov r3, r9
- bl _dmul
- mov r4, r0
- mov r10, r1
- mov r2, r4
- mov r3, r10
- bl _dmul
- str r0, [sp, #0x34]
- mov r11, r1
- ldr r0, _020E7680 ; =0x4A454EEF
- ldr r1, _020E7684 ; =0x3FCA7E28
- mov r2, r4
- mov r3, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7688 ; =0x93C9DB65
- ldr r1, _020E768C ; =0x3FCD864A
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7690 ; =0xA91D4101
- ldr r1, _020E7694 ; =0x3FD17460
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7698 ; =0x518F264D
- ldr r1, _020E769C ; =0x3FD55555
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76A0 ; =0xDB6FABFF
- ldr r1, _020E76A4 ; =0x3FDB6DB6
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76A8 ; =0x33333303
- ldr r1, _020E76AC ; =0x3FE33333
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x34]
- mov r1, r11
- bl _dmul
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x28]
- mov r1, r9
- mov r3, r9
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0x14]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dadd
- mov r4, r0
- ldr r0, [sp, #0x48]
- mov r10, r1
- mov r1, r9
- mov r2, r0
- mov r3, r1
- bl _dmul
- str r1, [sp, #0xc]
- mov r11, r0
- ldr r1, _020E76B0 ; =0x40080000
- ldr r3, [sp, #0xc]
- mov r0, #0x0
- mov r2, r11
- bl _dadd
- mov r2, r4
- mov r3, r10
- bl _dadd
- mov r0, #0x0
- ldr r3, _020E76B0 ; =0x40080000
- mov r2, r0
- str r1, [sp, #0x44]
- str r0, [sp, #0x40]
- bl _dsub
- ldr r3, [sp, #0xc]
- mov r2, r11
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dsub
- str r0, [sp, #0x38]
- str r1, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- mov r1, r9
- bl _dmul
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- bl _dmul
- str r0, [sp, #0x3c]
- mov r11, r1
- ldr r0, [sp, #0x38]
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x28]
- mov r3, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x3c]
- mov r1, r11
- bl _dadd
- mov r9, r0
- mov r11, r1
- mov r0, r4
- mov r1, r10
- mov r2, r9
- mov r3, r11
- bl _dadd
- mov r0, #0x0
- mov r2, r4
- mov r3, r10
- str r1, [sp, #0x6c]
- str r0, [sp, #0x68]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r9
- mov r1, r11
- bl _dsub
- mov r10, r1
- mov r11, r0
- ldr r1, _020E76B4 ; =0x3FEEC709
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r0, #0xe0000000
- bl _dmul
- mov r4, r0
- mov r9, r1
- ldr r0, _020E76B8 ; =0x145B01F5
- ldr r1, _020E76BC ; =0xBE3E2FE0
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dmul
- mov r2, r11
- mov r3, r10
- mov r11, r0
- mov r10, r1
- ldr r0, _020E76C0 ; =0xDC3A03FD
- ldr r1, _020E76B4 ; =0x3FEEC709
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r11
- mov r1, r10
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76C4 ; =UNK_02104764
- add r1, r0, r8, lsl #0x3
- ldr r0, [r0, r8, lsl #0x3]
- ldr r1, [r1, #0x4]
- bl _dadd
- mov r11, r0
- mov r10, r1
- mov r0, r6
- bl _dflt
- str r0, [sp, #0x50]
- str r1, [sp, #0x54]
- mov r0, r4
- mov r1, r9
- mov r2, r11
- mov r3, r10
- bl _dadd
- ldr r2, _020E76C8 ; =UNK_02104744
- add r3, r2, r8, lsl #0x3
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dadd
- str r1, [sp, #0x5c]
- mov r0, #0x0
- str r0, [sp, #0x58]
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dsub
- ldr r2, _020E76C8 ; =UNK_02104744
- add r3, r2, r8, lsl #0x3
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- bl _dsub
- mov r2, r4
- mov r3, r9
- bl _dsub
- mov r2, r0
- mov r0, r11
- mov r3, r1
- mov r1, r10
- bl _dsub
- mov r4, r0
- mov r8, r1
-_020E7C80:
- sub r0, r5, #0x1
- ldr r1, [sp, #0xb4]
- orrs r0, r7, r0
- ldr r5, _020E7638 ; =0x3FF00000
- mov r2, #0x0
- ldr r0, [sp, #0xb0]
- mov r3, r1
- mov r6, #0x0
- subeq r5, r5, #0x80000000
- str r1, [sp, #0x64]
- str r2, [sp, #0x60]
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x58]
- ldr r1, [sp, #0x5c]
- bl _dmul
- mov r7, r0
- mov r9, r1
- ldr r0, [sp, #0xb0]
- ldr r1, [sp, #0xb4]
- mov r2, r4
- mov r3, r8
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r9
- bl _dadd
- mov r7, r0
- mov r8, r1
- ldr r0, [sp, #0x60]
- ldr r1, [sp, #0x64]
- ldr r2, [sp, #0x58]
- ldr r3, [sp, #0x5c]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- str r2, [sp, #0x68]
- str r3, [sp, #0x6c]
- bl _dadd
- mov r9, r1
- ldr r2, _020E76CC ; =0x40900000
- str r0, [sp, #0x78]
- str r9, [sp, #0x7c]
- cmp r9, r2
- blt _020E7E0C
- add r1, r9, #0xf700000
- add r1, r1, #0xb0000000
- orrs r0, r1, r0
- beq _020E7D8C
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7D8C:
- ldr r0, _020E7670 ; =0x652B82FE
- ldr r1, _020E76D8 ; =0x3C971547
- mov r2, r7
- mov r3, r8
- bl _dadd
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x78]
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r1, r9
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dgr
- bls _020E7EC0
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7E0C:
- bic r3, r9, #0x80000000
- add r2, r2, #0xcc00
- cmp r3, r2
- blt _020E7EC0
- ldr r2, _020E76DC ; =0x3F6F3400
- add r2, r9, r2
- orrs r2, r2, r0
- beq _020E7E64
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7E64:
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- bl _dleq
- bhi _020E7EC0
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7EC0:
- ldr r0, _020E7644 ; =0xFFFFFC01
- bic r3, r9, #0x80000000
- ldr r1, _020E7648 ; =0x3FE00000
- add r2, r0, r3, asr #0x14
- cmp r3, r1
- mov r4, #0x0
- ble _020E7F3C
- mov r1, #0x100000
- add r2, r2, #0x1
- add r2, r9, r1, asr r2
- bic r3, r2, #0x80000000
- add r0, r0, r3, asr #0x14
- sub r3, r1, #0x1
- mvn r3, r3, asr r0
- sub r1, r1, #0x1
- and r1, r2, r1
- and r2, r2, r3
- str r2, [sp, #0x54]
- str r4, [sp, #0x50]
- orr r1, r1, #0x100000
- rsb r0, r0, #0x14
- mov r4, r1, asr r0
- cmp r9, #0x0
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- rsblt r4, r4, #0x0
- bl _dsub
- str r0, [sp, #0x68]
- str r1, [sp, #0x6c]
-_020E7F3C:
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r0, r7
- mov r1, r8
- bl _dadd
- mov r3, r1
- mov r0, #0x0
- ldr r1, _020E76E8 ; =0x3FE62E43
- mov r2, r0
- str r3, [sp, #0x54]
- str r0, [sp, #0x50]
- bl _dmul
- mov r9, r0
- mov r10, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dsub
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r8
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76EC ; =0xFEFA39EF
- ldr r1, _020E76F0 ; =0x3FE62E42
- bl _dmul
- mov r7, r0
- mov r8, r1
- ldr r0, _020E76F4 ; =0x0CA86C39
- ldr r1, _020E76F8 ; =0xBE205C61
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r8
- bl _dadd
- mov r7, r0
- mov r8, r1
- mov r0, r9
- mov r1, r10
- mov r2, r7
- mov r3, r8
- bl _dadd
- mov r2, r9
- mov r3, r10
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- bl _dsub
- mov r8, r0
- mov r9, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dmul
- mov r2, r0
- str r2, [sp, #0x50]
- mov r3, r1
- str r3, [sp, #0x54]
- ldr r0, _020E76FC ; =0x72BEA4D0
- ldr r1, _020E7700 ; =0x3E663769
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7704 ; =0xC5D26BF1
- ldr r1, _020E7708 ; =0xBEBBBD41
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E770C ; =0xAF25DE2C
- ldr r1, _020E7710 ; =0x3F11566A
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7714 ; =0x16BEBD93
- ldr r1, _020E7718 ; =0xBF66C16C
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E771C ; =0x5555553E
- ldr r1, _020E7720 ; =0x3FC55555
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- bl _dsub
- mov r2, r0
- str r2, [sp, #0x58]
- mov r3, r1
- str r3, [sp, #0x5c]
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- bl _dmul
- mov r7, r0
- mov r10, r1
- ldr r0, [sp, #0x58]
- ldr r1, [sp, #0x5c]
- mov r2, #0x0
- mov r3, #0x40000000
- bl _dsub
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r10
- bl _ddiv
- mov r7, r0
- mov r10, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r8
- mov r3, r9
- bl _dmul
- mov r2, r0
- mov r0, r8
- mov r3, r1
- mov r1, r9
- bl _dadd
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r10
- bl _dsub
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- bl _dsub
- mov r3, r1
- mov r2, r0
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _dsub
- add r3, r1, r4, lsl #0x14
- mov r2, r3, asr #0x14
- str r0, [sp, #0x78]
- cmp r2, #0x0
- str r1, [sp, #0x7c]
- addgt r0, sp, #0x78
- strgt r3, [r0, #0x4]
- bgt _020E81F0
- mov r2, r4
- bl scalbn
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E81F0:
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- mov r0, r6
- mov r1, r5
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start copysign
-copysign: ; 0x020E8214
- stmdb sp!, {r0-r3}
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0xc]
- bic r1, r1, #0x80000000
- and r0, r0, #0x80000000
- orr r1, r1, r0
- ldr r0, [sp, #0x0]
- str r1, [sp, #0x4]
- add sp, sp, #0x10
- bx lr
-
- arm_func_start fabs
-fabs: ; 0x020E823C
- stmdb sp!, {r0-r3}
- add r2, sp, #0x0
- ldr r1, [r2, #0x4]
- ldr r0, [sp, #0x0]
- bic r1, r1, #0x80000000
- str r1, [r2, #0x4]
- add sp, sp, #0x10
- bx lr
-
- arm_func_start frexp
-frexp: ; 0x020E825C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r1, [sp, #0xc]
- ldr r0, _020E8308 ; =0x7FF00000
- mov r4, r2
- bic r3, r1, #0x80000000
- mov r2, #0x0
- str r2, [r4, #0x0]
- cmp r3, r0
- ldr r0, [sp, #0x8]
- bge _020E8290
- orrs r0, r3, r0
- bne _020E82A4
-_020E8290:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E82A4:
- cmp r3, #0x100000
- bge _020E82D0
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldr r3, _020E830C ; =0x43500000
- bl _dmul
- mvn r2, #0x35
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- str r2, [r4, #0x0]
- bic r3, r1, #0x80000000
-_020E82D0:
- ldr r2, _020E8310 ; =0x800FFFFF
- ldr r0, _020E8314 ; =0xFFFFFC02
- and r1, r1, r2
- orr r1, r1, #0xfe00000
- orr r1, r1, #0x30000000
- ldr r2, [r4, #0x0]
- add r0, r0, r3, asr #0x14
- add r2, r2, r0
- ldr r0, [sp, #0x8]
- str r2, [r4, #0x0]
- str r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E8308: .word 0x7FF00000
-_020E830C: .word 0x43500000
-_020E8310: .word 0x800FFFFF
-_020E8314: .word 0xFFFFFC02
-
- arm_func_start ldexp
-ldexp: ; 0x020E8318
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r4, r2
- bl __fpclassifyf
- cmp r0, #0x2
- ble _020E8350
- mov r0, #0x0
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- mov r1, r0
- bl _deq
- bne _020E8364
-_020E8350:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8364:
- ldr r3, [sp, #0xc]
- ldr r0, _020E8538 ; =0x7FF00000
- ldr r1, [sp, #0x8]
- and r0, r3, r0
- movs r12, r0, asr #0x14
- bne _020E83F0
- bic r0, r3, #0x80000000
- orrs r0, r1, r0
- ldreq r0, [sp, #0x8]
- ldreq r1, [sp, #0xc]
- ldmeqia sp!, {r4,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldr r3, _020E853C ; =0x43500000
- mov r2, #0x0
- bl _dmul
- mov r3, r1
- ldr r1, _020E8538 ; =0x7FF00000
- ldr ip, _020E8540 ; =0xFFFF3CB0
- and r1, r3, r1
- mov r2, r0
- mov r0, r1, asr #0x14
- str r2, [sp, #0x8]
- str r3, [sp, #0xc]
- cmp r4, r12
- sub r12, r0, #0x36
- bge _020E83F0
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E83F0:
- ldr r0, _020E854C ; =0x000007FF
- cmp r12, r0
- bne _020E841C
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r2, r0
- mov r3, r1
- bl _dadd
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E841C:
- add r2, r12, r4
- sub r0, r0, #0x1
- cmp r2, r0
- ble _020E8460
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8460:
- cmp r2, #0x0
- ble _020E8488
- ldr r1, _020E8558 ; =0x800FFFFF
- ldr r0, [sp, #0x8]
- and r1, r3, r1
- orr r1, r1, r2, lsl #0x14
- str r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8488:
- mvn r0, #0x35
- cmp r2, r0
- bgt _020E8508
- ldr r0, _020E855C ; =0x0000C350
- cmp r4, r0
- ble _020E84D4
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E84D4:
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8508:
- ldr r0, _020E8558 ; =0x800FFFFF
- add r1, r2, #0x36
- and r0, r3, r0
- orr r3, r0, r1, lsl #0x14
- ldr r2, [sp, #0x8]
- ldr r1, _020E8560 ; =0x3C900000
- mov r0, #0x0
- str r3, [sp, #0xc]
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E8538: .word 0x7FF00000
-_020E853C: .word 0x43500000
-_020E8540: .word 0xFFFF3CB0
-_020E8544: .word 0xC2F8F359
-_020E8548: .word 0x01A56E1F
-_020E854C: .word 0x000007FF
-_020E8550: .word 0x8800759C
-_020E8554: .word 0x7E37E43C
-_020E8558: .word 0x800FFFFF
-_020E855C: .word 0x0000C350
-_020E8560: .word 0x3C900000
-
- arm_func_start pow
-pow: ; 0x020E8564
- ldr ip, _020E856C ; =__ieee754_pow
- bx r12
- .balign 4
-_020E856C: .word __ieee754_pow
-
- arm_func_start __must_round
-__must_round: ; 0x020E8570
- add r3, r0, #0x5
- ldrb r2, [r3, r1]
- add r12, r3, r1
- cmp r2, #0x5
- movhi r0, #0x1
- bxhi lr
- mvncc r0, #0x0
- bxcc lr
- ldrb r2, [r0, #0x4]
- add r12, r12, #0x1
- add r3, r3, r2
- cmp r12, r3
- bhs _020E85C0
-_020E85A4:
- ldrb r2, [r12, #0x0]
- cmp r2, #0x0
- movne r0, #0x1
- bxne lr
- add r12, r12, #0x1
- cmp r12, r3
- blo _020E85A4
-_020E85C0:
- sub r1, r1, #0x1
- add r0, r0, r1
- ldrb r0, [r0, #0x5]
- tst r0, #0x1
- movne r0, #0x1
- mvneq r0, #0x0
- bx lr
-
- arm_func_start __dorounddecup
-__dorounddecup: ; 0x020E85DC
- add r3, r0, #0x5
- add r1, r3, r1
- sub r12, r1, #0x1
- mov r1, #0x0
-_020E85EC:
- ldrb r2, [r12, #0x0]
- cmp r2, #0x9
- addcc r0, r2, #0x1
- strccb r0, [r12, #0x0]
- bxcc lr
- cmp r12, r3
- bne _020E8620
- mov r1, #0x1
- strb r1, [r12, #0x0]
- ldrsh r1, [r0, #0x2]
- add r1, r1, #0x1
- strh r1, [r0, #0x2]
- bx lr
-_020E8620:
- strb r1, [r12], #-0x1
- b _020E85EC
- bx lr
-
- arm_func_start __rounddec
-__rounddec: ; 0x020E862C
- stmdb sp!, {r3-r5,lr}
- mov r4, r1
- mov r5, r0
- cmp r4, #0x0
- ldmleia sp!, {r3-r5,pc}
- ldrb r2, [r5, #0x4]
- cmp r4, r2
- ldmgeia sp!, {r3-r5,pc}
- bl __must_round
- strb r4, [r5, #0x4]
- cmp r0, #0x0
- ldmltia sp!, {r3-r5,pc}
- mov r0, r5
- mov r1, r4
- bl __dorounddecup
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __ull2dec
-__ull2dec: ; 0x020E866C
- stmdb sp!, {r3-r11,lr}
- mov r10, r0
- mov r0, #0x0
- mov r8, r2
- strb r0, [r10, #0x0]
- mov r9, r1
- cmp r8, #0x0
- strb r0, [r10, #0x4]
- cmpeq r9, #0x0
- beq _020E86F8
- mov r6, #0xa
- mov r11, r0
- mov r5, r0
- mov r4, r0
-_020E86A4:
- ldrb r1, [r10, #0x4]
- mov r0, r9
- mov r2, r6
- add r3, r1, #0x1
- mov r7, r1
- strb r3, [r10, #0x4]
- mov r1, r8
- mov r3, r11
- bl _ull_mod
- add r1, r10, r7
- strb r0, [r1, #0x5]
- mov r0, r9
- mov r1, r8
- mov r2, #0xa
- mov r3, #0x0
- bl _ll_udiv
- mov r8, r1
- mov r9, r0
- cmp r8, r5
- cmpeq r9, r4
- bne _020E86A4
-_020E86F8:
- ldrb r0, [r10, #0x4]
- add r2, r10, #0x5
- add r0, r2, r0
- sub r3, r0, #0x1
- cmp r2, r3
- bhs _020E8728
-_020E8710:
- ldrb r0, [r3, #0x0]
- ldrb r1, [r2, #0x0]
- strb r0, [r2], #0x1
- strb r1, [r3], #-0x1
- cmp r2, r3
- blo _020E8710
-_020E8728:
- ldrb r0, [r10, #0x4]
- sub r0, r0, #0x1
- strh r0, [r10, #0x2]
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start __timesdec
-__timesdec: ; 0x020E8738
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x40
- ldrb r6, [r1, #0x4]
- ldrb r5, [r2, #0x4]
- mov r4, #0x0
- add r3, sp, #0x0
- add r5, r6, r5
- sub r5, r5, #0x1
- add r3, r3, r5
- add r6, r3, #0x1
- mov r7, r6
- strb r4, [r0, #0x0]
- cmp r5, #0x0
- ble _020E8800
- add lr, r1, #0x5
- add r11, r2, #0x5
-_020E8778:
- ldrb r3, [r2, #0x4]
- sub r10, r3, #0x1
- sub r3, r5, r10
- subs r9, r3, #0x1
- ldrb r3, [r1, #0x4]
- movmi r9, #0x0
- submi r10, r5, #0x1
- add r8, r10, #0x1
- sub r3, r3, r9
- cmp r8, r3
- movgt r8, r3
- add r10, r11, r10
- add r9, lr, r9
- cmp r8, #0x0
- ble _020E87CC
-_020E87B4:
- ldrb r12, [r9], #0x1
- ldrb r3, [r10], #-0x1
- sub r8, r8, #0x1
- cmp r8, #0x0
- mla r4, r12, r3, r4
- bgt _020E87B4
-_020E87CC:
- ldr r3, _020E88B8 ; =0xCCCCCCCD
- sub r5, r5, #0x1
- umull r8, r9, r4, r3
- mov r9, r9, lsr #0x3
- cmp r5, #0x0
- mov r10, #0xa
- umull r8, r9, r10, r9
- sub r9, r4, r8
- strb r9, [r6, #-0x1]!
- mov r8, r4
- umull r3, r4, r8, r3
- mov r4, r4, lsr #0x3
- bgt _020E8778
-_020E8800:
- ldrsh r3, [r1, #0x2]
- ldrsh r1, [r2, #0x2]
- cmp r4, #0x0
- add r1, r3, r1
- strh r1, [r0, #0x2]
- beq _020E8828
- strb r4, [r6, #-0x1]!
- ldrsh r1, [r0, #0x2]
- add r1, r1, #0x1
- strh r1, [r0, #0x2]
-_020E8828:
- mov r3, #0x0
- b _020E8840
-_020E8830:
- ldrb r2, [r6], #0x1
- add r1, r0, r3
- add r3, r3, #0x1
- strb r2, [r1, #0x5]
-_020E8840:
- cmp r3, #0x20
- bge _020E8850
- cmp r6, r7
- blo _020E8830
-_020E8850:
- cmp r6, r7
- addcs sp, sp, #0x40
- strb r3, [r0, #0x4]
- ldmcsia sp!, {r3-r11,pc}
- ldrb r1, [r6, #0x0]
- cmp r1, #0x5
- addcc sp, sp, #0x40
- ldmccia sp!, {r3-r11,pc}
- bne _020E88A8
- add r2, r6, #0x1
- cmp r2, r7
- bhs _020E8898
-_020E8880:
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- bne _020E88A8
- add r2, r2, #0x1
- cmp r2, r7
- blo _020E8880
-_020E8898:
- ldrb r1, [r6, #-0x1]
- tst r1, #0x1
- addeq sp, sp, #0x40
- ldmeqia sp!, {r3-r11,pc}
-_020E88A8:
- ldrb r1, [r0, #0x4]
- bl __dorounddecup
- add sp, sp, #0x40
- ldmia sp!, {r3-r11,pc}
- .balign 4
-_020E88B8: .word 0xCCCCCCCD
-
- arm_func_start __str2dec
-__str2dec: ; 0x020E88BC
- stmdb sp!, {r3,lr}
- strh r2, [r0, #0x2]
- mov r12, #0x0
- strb r12, [r0, #0x0]
- b _020E88E4
-_020E88D0:
- ldrsb r3, [r1], #0x1
- add r2, r0, r12
- add r12, r12, #0x1
- sub r3, r3, #0x30
- strb r3, [r2, #0x5]
-_020E88E4:
- cmp r12, #0x20
- bge _020E88F8
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- bne _020E88D0
-_020E88F8:
- strb r12, [r0, #0x4]
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- ldmeqia sp!, {r3,pc}
- cmp r2, #0x5
- ldmltia sp!, {r3,pc}
- bgt _020E894C
- ldrsb r2, [r1, #0x1]
- add r1, r1, #0x1
- cmp r2, #0x0
- beq _020E8938
-_020E8924:
- cmp r2, #0x30
- bne _020E894C
- ldrsb r2, [r1, #0x1]!
- cmp r2, #0x0
- bne _020E8924
-_020E8938:
- sub r1, r12, #0x1
- add r1, r0, r1
- ldrb r1, [r1, #0x5]
- tst r1, #0x1
- ldmeqia sp!, {r3,pc}
-_020E894C:
- ldrb r1, [r0, #0x4]
- bl __dorounddecup
- ldmia sp!, {r3,pc}
-
- arm_func_start __two_exp
-__two_exp: ; 0x020E8958
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4c
- mov r4, r1
- mvn r2, #0x34
- mov r5, r0
- cmp r4, r2
- bgt _020E8988
- bge _020E8A54
- sub r0, r2, #0xb
- cmp r4, r0
- beq _020E8A3C
- b _020E8BE4
-_020E8988:
- add r1, r4, #0x20
- cmp r1, #0x28
- addls pc, pc, r1, lsl #0x2
- b _020E8BE4
-_020E8998:
- b _020E8A68
-_020E899C:
- b _020E8BE4
-_020E89A0:
- b _020E8BE4
-_020E89A4:
- b _020E8BE4
-_020E89A8:
- b _020E8BE4
-_020E89AC:
- b _020E8BE4
-_020E89B0:
- b _020E8BE4
-_020E89B4:
- b _020E8BE4
-_020E89B8:
- b _020E8BE4
-_020E89BC:
- b _020E8BE4
-_020E89C0:
- b _020E8BE4
-_020E89C4:
- b _020E8BE4
-_020E89C8:
- b _020E8BE4
-_020E89CC:
- b _020E8BE4
-_020E89D0:
- b _020E8BE4
-_020E89D4:
- b _020E8BE4
-_020E89D8:
- b _020E8A7C
-_020E89DC:
- b _020E8BE4
-_020E89E0:
- b _020E8BE4
-_020E89E4:
- b _020E8BE4
-_020E89E8:
- b _020E8BE4
-_020E89EC:
- b _020E8BE4
-_020E89F0:
- b _020E8BE4
-_020E89F4:
- b _020E8BE4
-_020E89F8:
- b _020E8A90
-_020E89FC:
- b _020E8AA4
-_020E8A00:
- b _020E8AB8
-_020E8A04:
- b _020E8ACC
-_020E8A08:
- b _020E8AE0
-_020E8A0C:
- b _020E8AF4
-_020E8A10:
- b _020E8B08
-_020E8A14:
- b _020E8B1C
-_020E8A18:
- b _020E8B30
-_020E8A1C:
- b _020E8B44
-_020E8A20:
- b _020E8B58
-_020E8A24:
- b _020E8B6C
-_020E8A28:
- b _020E8B80
-_020E8A2C:
- b _020E8B94
-_020E8A30:
- b _020E8BA8
-_020E8A34:
- b _020E8BBC
-_020E8A38:
- b _020E8BD0
-_020E8A3C:
- ldr r1, _020E8C88 ; =UNK_02106E88
- mov r0, r5
- mvn r2, #0x13
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A54:
- ldr r1, _020E8C8C ; =UNK_02106EB8
- add r2, r2, #0x25
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A68:
- ldr r1, _020E8C90 ; =UNK_02106EE0
- add r2, r2, #0x2b
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A7C:
- ldr r1, _020E8C94 ; =UNK_02106EF8
- add r2, r2, #0x30
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A90:
- ldr r1, _020E8C98 ; =UNK_02106F08
- add r2, r2, #0x32
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AA4:
- ldr r1, _020E8C9C ; =UNK_02106F10
- add r2, r2, #0x32
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AB8:
- ldr r1, _020E8CA0 ; =UNK_02106F18
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8ACC:
- ldr r1, _020E8CA4 ; =UNK_02106F20
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AE0:
- ldr r1, _020E8CA8 ; =UNK_02106F28
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AF4:
- ldr r1, _020E8CAC ; =UNK_02106F2C
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B08:
- ldr r1, _020E8CB0 ; =UNK_02106F30
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B1C:
- ldr r1, _020E8CB4 ; =UNK_02106F34
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B30:
- ldr r1, _020E8CB8 ; =UNK_02106F38
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B44:
- ldr r1, _020E8CBC ; =UNK_02106F3C
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B58:
- ldr r1, _020E8CC0 ; =UNK_02106F40
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B6C:
- ldr r1, _020E8CC4 ; =UNK_02106F44
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B80:
- ldr r1, _020E8CC8 ; =UNK_02106F48
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B94:
- ldr r1, _020E8CCC ; =UNK_02106F4C
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BA8:
- ldr r1, _020E8CD0 ; =UNK_02106F50
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BBC:
- ldr r1, _020E8CD4 ; =UNK_02106F54
- mov r2, #0x2
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BD0:
- ldr r1, _020E8CD8 ; =UNK_02106F58
- mov r2, #0x2
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BE4:
- and r0, r4, #0x80000000
- add r1, r4, r0, lsr #0x1f
- add r0, sp, #0x26
- mov r1, r1, asr #0x1
- bl __two_exp
- add r1, sp, #0x26
- mov r0, r5
- mov r2, r1
- bl __timesdec
- tst r4, #0x1
- addeq sp, sp, #0x4c
- ldmeqia sp!, {r4-r5,pc}
- add r3, sp, #0x0
- mov r12, r5
- mov r2, #0x9
-_020E8C20:
- ldrh r1, [r12, #0x0]
- ldrh r0, [r12, #0x2]
- add r12, r12, #0x4
- subs r2, r2, #0x1
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- bne _020E8C20
- ldrh r0, [r12, #0x0]
- cmp r4, #0x0
- strh r0, [r3, #0x0]
- add r0, sp, #0x26
- ble _020E8C64
- ldr r1, _020E8CBC ; =UNK_02106F3C
- mov r2, #0x0
- bl __str2dec
- b _020E8C70
-_020E8C64:
- ldr r1, _020E8CB4 ; =UNK_02106F34
- mvn r2, #0x0
- bl __str2dec
-_020E8C70:
- add r1, sp, #0x0
- add r2, sp, #0x26
- mov r0, r5
- bl __timesdec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E8C88: .word UNK_02106E88
-_020E8C8C: .word UNK_02106EB8
-_020E8C90: .word UNK_02106EE0
-_020E8C94: .word UNK_02106EF8
-_020E8C98: .word UNK_02106F08
-_020E8C9C: .word UNK_02106F10
-_020E8CA0: .word UNK_02106F18
-_020E8CA4: .word UNK_02106F20
-_020E8CA8: .word UNK_02106F28
-_020E8CAC: .word UNK_02106F2C
-_020E8CB0: .word UNK_02106F30
-_020E8CB4: .word UNK_02106F34
-_020E8CB8: .word UNK_02106F38
-_020E8CBC: .word UNK_02106F3C
-_020E8CC0: .word UNK_02106F40
-_020E8CC4: .word UNK_02106F44
-_020E8CC8: .word UNK_02106F48
-_020E8CCC: .word UNK_02106F4C
-_020E8CD0: .word UNK_02106F50
-_020E8CD4: .word UNK_02106F54
-_020E8CD8: .word UNK_02106F58
-
- arm_func_start __equals_dec
-__equals_dec:
- stmdb sp!, {r4,lr}
- ldrb r3, [r0, #0x5]
- cmp r3, #0x0
- bne _020E8D00
- ldrb r0, [r1, #0x5]
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- ldmia sp!, {r4,pc}
-_020E8D00:
- ldrb r2, [r1, #0x5]
- cmp r2, #0x0
- bne _020E8D1C
- cmp r3, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- ldmia sp!, {r4,pc}
-_020E8D1C:
- ldrsh r3, [r0, #0x2]
- ldrsh r2, [r1, #0x2]
- cmp r3, r2
- bne _020E8DB4
- ldrb r4, [r0, #0x4]
- ldrb r2, [r1, #0x4]
- mov r12, #0x0
- mov lr, r4
- cmp r4, r2
- movgt lr, r2
- cmp lr, #0x0
- ble _020E8D74
-_020E8D4C:
- add r3, r0, r12
- add r2, r1, r12
- ldrb r3, [r3, #0x5]
- ldrb r2, [r2, #0x5]
- cmp r3, r2
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- add r12, r12, #0x1
- cmp r12, lr
- blt _020E8D4C
-_020E8D74:
- cmp lr, r4
- moveq r0, r1
- ldrb r1, [r0, #0x4]
- cmp r12, r1
- bge _020E8DAC
-_020E8D88:
- add r1, r0, r12
- ldrb r1, [r1, #0x5]
- cmp r1, #0x0
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- ldrb r1, [r0, #0x4]
- add r12, r12, #0x1
- cmp r12, r1
- blt _020E8D88
-_020E8DAC:
- mov r0, #0x1
- ldmia sp!, {r4,pc}
-_020E8DB4:
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-
- arm_func_start __less_dec
-__less_dec:
- stmdb sp!, {r3-r5,lr}
- ldrb r2, [r0, #0x5]
- cmp r2, #0x0
- bne _020E8DE0
- ldrb r0, [r1, #0x5]
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E8DE0:
- ldrb r2, [r1, #0x5]
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- ldrsh r3, [r1, #0x2]
- ldrsh r2, [r0, #0x2]
- cmp r2, r3
- bne _020E8E90
- ldrb r5, [r0, #0x4]
- ldrb r4, [r1, #0x4]
- mov r12, #0x0
- mov lr, r5
- cmp r5, r4
- movgt lr, r4
- cmp lr, #0x0
- ble _020E8E54
-_020E8E20:
- add r3, r1, r12
- add r2, r0, r12
- ldrb r3, [r3, #0x5]
- ldrb r2, [r2, #0x5]
- cmp r2, r3
- movcc r0, #0x1
- ldmccia sp!, {r3-r5,pc}
- cmp r3, r2
- movcc r0, #0x0
- ldmccia sp!, {r3-r5,pc}
- add r12, r12, #0x1
- cmp r12, lr
- blt _020E8E20
-_020E8E54:
- cmp lr, r5
- bne _020E8E88
- cmp r12, r4
- bge _020E8E88
-_020E8E64:
- add r0, r1, r12
- ldrb r0, [r0, #0x5]
- cmp r0, #0x0
- movne r0, #0x1
- ldmneia sp!, {r3-r5,pc}
- ldrb r0, [r1, #0x4]
- add r12, r12, #0x1
- cmp r12, r0
- blt _020E8E64
-_020E8E88:
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E8E90:
- movlt r0, #0x1
- movge r0, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __minus_dec
-__minus_dec: ; 0x020E8E9C
- stmdb sp!, {r3-r7,lr}
- mov r6, r0
- mov r5, #0x9
-_020E8EA8:
- ldrh r4, [r1, #0x0]
- ldrh r3, [r1, #0x2]
- add r1, r1, #0x4
- subs r5, r5, #0x1
- strh r4, [r6, #0x0]
- strh r3, [r6, #0x2]
- add r6, r6, #0x4
- bne _020E8EA8
- ldrh r1, [r1, #0x0]
- strh r1, [r6, #0x0]
- ldrb r1, [r2, #0x5]
- cmp r1, #0x0
- ldmeqia sp!, {r3-r7,pc}
- ldrb r7, [r0, #0x4]
- ldrb r3, [r2, #0x4]
- ldrsh r4, [r0, #0x2]
- mov r1, r7
- cmp r7, r3
- movlt r1, r3
- ldrsh r3, [r2, #0x2]
- sub r6, r4, r3
- add r1, r1, r6
- cmp r1, #0x20
- movgt r1, #0x20
- cmp r7, r1
- bge _020E8F34
- mov r4, #0x0
-_020E8F14:
- ldrb r5, [r0, #0x4]
- add r3, r0, r7
- add r5, r5, #0x1
- strb r5, [r0, #0x4]
- strb r4, [r3, #0x5]
- ldrb r7, [r0, #0x4]
- cmp r7, r1
- blt _020E8F14
-_020E8F34:
- ldrb r4, [r2, #0x4]
- add r3, r0, #0x5
- add r12, r3, r1
- add r4, r4, r6
- cmp r4, r1
- addlt r12, r3, r4
- sub r4, r12, r3
- add r1, r2, #0x5
- sub r4, r4, r6
- add lr, r1, r4
- mov r4, lr
- b _020E8FC8
-_020E8F64:
- ldrb r7, [r12, #-0x1]!
- ldrb r5, [lr, #-0x1]!
- cmp r7, r5
- bhs _020E8FB8
- ldrb r7, [r12, #-0x1]
- sub r5, r12, #0x1
- cmp r7, #0x0
- bne _020E8F90
-_020E8F84:
- ldrb r7, [r5, #-0x1]!
- cmp r7, #0x0
- beq _020E8F84
-_020E8F90:
- cmp r5, r12
- beq _020E8FB8
-_020E8F98:
- ldrb r7, [r5, #0x0]
- sub r7, r7, #0x1
- strb r7, [r5, #0x0]
- ldrb r7, [r5, #0x1]!
- cmp r5, r12
- add r7, r7, #0xa
- strb r7, [r5, #0x0]
- bne _020E8F98
-_020E8FB8:
- ldrb r7, [r12, #0x0]
- ldrb r5, [lr, #0x0]
- sub r5, r7, r5
- strb r5, [r12, #0x0]
-_020E8FC8:
- cmp r12, r3
- cmphi lr, r1
- bhi _020E8F64
- ldrb r5, [r2, #0x4]
- sub lr, r4, r1
- cmp lr, r5
- bge _020E90A4
- ldrb r1, [r4, #0x0]
- mov r7, #0x0
- cmp r1, #0x5
- movcc r7, #0x1
- blo _020E9040
- bne _020E9040
- add r1, r2, #0x5
- add r2, r1, r5
- add r4, r4, #0x1
- cmp r4, r2
- bhs _020E9028
-_020E9010:
- ldrb r1, [r4, #0x0]
- cmp r1, #0x0
- bne _020E90A4
- add r4, r4, #0x1
- cmp r4, r2
- blo _020E9010
-_020E9028:
- add r1, r3, lr
- add r2, r1, r6
- ldrb r1, [r2, #-0x1]
- sub r12, r2, #0x1
- tst r1, #0x1
- movne r7, #0x1
-_020E9040:
- cmp r7, #0x0
- beq _020E90A4
- ldrb r1, [r12, #0x0]
- cmp r1, #0x1
- bhs _020E9098
- ldrb r1, [r12, #-0x1]
- sub r2, r12, #0x1
- cmp r1, #0x0
- bne _020E9070
-_020E9064:
- ldrb r1, [r2, #-0x1]!
- cmp r1, #0x0
- beq _020E9064
-_020E9070:
- cmp r2, r12
- beq _020E9098
-_020E9078:
- ldrb r1, [r2, #0x0]
- sub r1, r1, #0x1
- strb r1, [r2, #0x0]
- ldrb r1, [r2, #0x1]!
- cmp r2, r12
- add r1, r1, #0xa
- strb r1, [r2, #0x0]
- bne _020E9078
-_020E9098:
- ldrb r1, [r12, #0x0]
- sub r1, r1, #0x1
- strb r1, [r12, #0x0]
-_020E90A4:
- ldrb r1, [r3, #0x0]
- mov r5, r3
- cmp r1, #0x0
- bne _020E90C0
-_020E90B4:
- ldrb r1, [r5, #0x1]!
- cmp r1, #0x0
- beq _020E90B4
-_020E90C0:
- cmp r5, r3
- bls _020E9108
- ldrsh r1, [r0, #0x2]
- sub r2, r5, r3
- and r4, r2, #0xff
- sub r1, r1, r4
- strh r1, [r0, #0x2]
- ldrb r1, [r0, #0x4]
- add r2, r3, r1
- cmp r5, r2
- bhs _020E90FC
-_020E90EC:
- ldrb r1, [r5], #0x1
- cmp r5, r2
- strb r1, [r3], #0x1
- blo _020E90EC
-_020E90FC:
- ldrb r1, [r0, #0x4]
- sub r1, r1, r4
- strb r1, [r0, #0x4]
-_020E9108:
- ldrb r1, [r0, #0x4]
- add r2, r0, #0x5
- add r3, r2, r1
- cmp r3, r2
- bls _020E9130
-_020E911C:
- ldrb r1, [r3, #-0x1]!
- cmp r1, #0x0
- bne _020E9130
- cmp r3, r2
- bhi _020E911C
-_020E9130:
- sub r1, r3, r2
- add r1, r1, #0x1
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r7,pc}
-
- arm_func_start __num2dec_internal
-__num2dec_internal:
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x58
- mov r8, r1
- mov r6, r2
- mov r7, r0
- mov r0, r8
- mov r1, r6
- bl __signbitf
- cmp r0, #0x0
- movne r1, #0x1
- moveq r1, #0x0
- mov r4, r1, lsl #0x18
- mov r0, #0x0
- mov r1, r0
- mov r2, r8
- mov r3, r6
- mov r5, r4, asr #0x18
- bl _deq
- bne _020E91AC
- strb r5, [r7, #0x0]
- mov r1, #0x0
- strh r1, [r7, #0x2]
- mov r0, #0x1
- strb r0, [r7, #0x4]
- add sp, sp, #0x58
- strb r1, [r7, #0x5]
- ldmia sp!, {r4-r8,pc}
-_020E91AC:
- mov r0, r8
- mov r1, r6
- bl __fpclassifyf
- cmp r0, #0x2
- bgt _020E91F8
- strb r5, [r7, #0x0]
- mov r2, #0x0
- strh r2, [r7, #0x2]
- mov r2, #0x1
- mov r0, r8
- mov r1, r6
- strb r2, [r7, #0x4]
- bl __fpclassifyf
- cmp r0, #0x1
- moveq r0, #0x4e
- movne r0, #0x49
- add sp, sp, #0x58
- strb r0, [r7, #0x5]
- ldmia sp!, {r4-r8,pc}
-_020E91F8:
- cmp r5, #0x0
- beq _020E921C
- mov r0, #0x0
- mov r1, r0
- mov r2, r8
- mov r3, r6
- bl _dsub
- mov r8, r0
- mov r6, r1
-_020E921C:
- add r2, sp, #0x8
- mov r0, r8
- mov r1, r6
- bl frexp
- mov r4, r0
- mov r6, r1
- orr r12, r4, #0x0
- rsbs r2, r12, #0x0
- orr r3, r6, #0x100000
- rsc r1, r3, #0x0
- mov r0, #0x0
- and r3, r3, r1
- sub r1, r0, #0x1
- and r12, r12, r2
- mov r2, r1
- adds r0, r12, r1
- adc r1, r3, r2
- str r4, [sp, #0x0]
- str r6, [sp, #0x4]
- bl __msl_generic_count_bits64
- rsb r8, r0, #0x35
- ldr r1, [sp, #0x8]
- add r0, sp, #0xc
- sub r1, r1, r8
- bl __two_exp
- mov r0, r4
- mov r1, r6
- mov r2, r8
- bl ldexp
- bl _ll_ufrom_d
- mov r2, r1
- mov r1, r0
- add r0, sp, #0x32
- bl __ull2dec
- mov r0, r7
- add r1, sp, #0x32
- add r2, sp, #0xc
- bl __timesdec
- strb r5, [r7, #0x0]
- add sp, sp, #0x58
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start __num2dec_internal2
-__num2dec_internal2: ; 0x020E92C0
- stmdb sp!, {r3-r5,lr}
- mov r4, r3
- ldrsh r5, [r0, #0x2]
- mov r0, r4
- bl __num2dec_internal
- ldrb r0, [r4, #0x5]
- cmp r0, #0x9
- ldmhiia sp!, {r3-r5,pc}
- cmp r5, #0x20
- movgt r5, #0x20
- mov r0, r4
- mov r1, r5
- bl __rounddec
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- bge _020E9324
- mov r1, #0x0
-_020E9304:
- ldrb r2, [r4, #0x4]
- add r0, r4, r0
- add r2, r2, #0x1
- strb r2, [r4, #0x4]
- strb r1, [r0, #0x5]
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- blt _020E9304
-_020E9324:
- ldrsh r1, [r4, #0x2]
- sub r0, r0, #0x1
- mov r2, #0x0
- sub r0, r1, r0
- strh r0, [r4, #0x2]
- ldrb r0, [r4, #0x4]
- cmp r0, #0x0
- ldmleia sp!, {r3-r5,pc}
-_020E9344:
- add r1, r4, r2
- ldrb r0, [r1, #0x5]
- add r2, r2, #0x1
- add r0, r0, #0x30
- strb r0, [r1, #0x5]
- ldrb r0, [r4, #0x4]
- cmp r2, r0
- blt _020E9344
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __dec2num
-__dec2num: ; 0x020E9368
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xfc
- mov r4, r0
- ldrb r0, [r4, #0x4]
- cmp r0, #0x0
- bne _020E93A8
- ldrsb r0, [r4, #0x0]
- mov r2, #0x0
- cmp r0, #0x0
- ldreq r3, _020E996C ; =0x3FF00000
- mov r0, #0x0
- ldrne r3, _020E9970 ; =0xBFF00000
- mov r1, r0
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E93A8:
- ldrb r0, [r4, #0x5]
- cmp r0, #0x30
- beq _020E93C8
- cmp r0, #0x49
- beq _020E93F0
- cmp r0, #0x4e
- beq _020E9424
- b _020E946C
-_020E93C8:
- ldrsb r0, [r4, #0x0]
- mov r2, #0x0
- cmp r0, #0x0
- ldreq r3, _020E996C ; =0x3FF00000
- mov r0, #0x0
- ldrne r3, _020E9970 ; =0xBFF00000
- mov r1, r0
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E93F0:
- ldrsb r0, [r4, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
- ldrne r4, _020E9970 ; =0xBFF00000
- ldr r0, [r0, #0x0]
- bl _f2d
- mov r2, r5
- mov r3, r4
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E9424:
- ldr r1, _020E9978 ; =0x7FF00000
- add r3, sp, #0x10
- mov r2, #0x0
- str r2, [r3, #0x0]
- str r1, [r3, #0x4]
- ldrsb r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020E9454
- orr r0, r1, #0x80000000
- orr r1, r2, r2
- str r1, [r3, #0x0]
- str r0, [r3, #0x4]
-_020E9454:
- ldmia r3, {r0-r1}
- orr r0, r0, #0x0
- orr r1, r1, #0x80000
- stmia r3, {r0-r1}
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E946C:
- add r3, sp, #0xd6
- mov r5, r4
- mov r2, #0x9
-_020E9478:
- ldrh r1, [r5, #0x0]
- ldrh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- bne _020E9478
- ldrh r0, [r5, #0x0]
- add r1, sp, #0xdb
- strh r0, [r3, #0x0]
- ldrb r0, [sp, #0xda]
- add r5, r1, r0
- cmp r1, r5
- bhs _020E94C8
-_020E94B4:
- ldrb r0, [r1, #0x0]
- sub r0, r0, #0x30
- strb r0, [r1], #0x1
- cmp r1, r5
- blo _020E94B4
-_020E94C8:
- ldrb r1, [sp, #0xda]
- ldrsh r2, [sp, #0xd8]
- add r0, sp, #0xb0
- sub r1, r1, #0x1
- add r1, r2, r1
- strh r1, [sp, #0xd8]
- ldr r1, _020E997C ; =UNK_02106F5C
- mov r2, #0x134
- ldrsh r11, [sp, #0xd8]
- bl __str2dec
- add r0, sp, #0xb0
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- beq _020E9538
- ldrsb r0, [r4, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
- ldrne r4, _020E9970 ; =0xBFF00000
- ldr r0, [r0, #0x0]
- bl _f2d
- mov r2, r5
- mov r3, r4
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E9538:
- add r1, sp, #0xdb
- ldrb r0, [r1, #0x0]
- add r8, r1, #0x1
- bl _dfltu
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- cmp r8, r5
- bhs _020E9610
-_020E9558:
- sub r0, r5, r8
- mov r1, r0, lsr #0x1f
- rsb r0, r1, r0, lsl #0x1d
- adds r7, r1, r0, ror #0x1d
- moveq r7, #0x8
- mov r6, #0x0
- mov r2, #0x0
- cmp r7, #0x0
- ble _020E9594
- mov r0, #0xa
-_020E9580:
- ldrb r1, [r8], #0x1
- add r2, r2, #0x1
- cmp r2, r7
- mla r6, r0, r6, r1
- blt _020E9580
-_020E9594:
- ldr r0, _020E9980 ; =UNK_02106E48
- ldr r1, [sp, #0xc]
- add r3, r0, r7, lsl #0x3
- ldr r2, [r3, #-0x8]
- ldr r0, [sp, #0x8]
- ldr r3, [r3, #-0x4]
- bl _dmul
- mov r4, r0
- mov r9, r1
- mov r0, r6
- bl _dfltu
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r9
- bl _dadd
- cmp r6, #0x0
- mov r6, r0
- mov r10, r1
- beq _020E95FC
- mov r0, r4
- mov r1, r9
- mov r2, r6
- mov r3, r10
- bl _deq
- beq _020E9610
-_020E95FC:
- str r6, [sp, #0x8]
- str r10, [sp, #0xc]
- cmp r8, r5
- sub r11, r11, r7
- blo _020E9558
-_020E9610:
- cmp r11, #0x0
- bge _020E9654
- rsb r0, r11, #0x0
- bl _dflt
- mov r3, r1
- mov r2, r0
- ldr r1, _020E9984 ; =0x40140000
- mov r0, #0x0
- bl pow
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- bl _ddiv
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- b _020E968C
-_020E9654:
- mov r0, r11
- bl _dflt
- mov r3, r1
- mov r2, r0
- ldr r1, _020E9984 ; =0x40140000
- mov r0, #0x0
- bl pow
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- bl _dmul
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
-_020E968C:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r2, r11
- bl ldexp
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- bl __fpclassifyf
- cmp r0, #0x2
- bne _020E96C0
- ldr r0, _020E9988 ; =0x7FEFFFFF
- mvn r1, #0x0
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
-_020E96C0:
- ldr r1, [sp, #0x8]
- ldr r2, [sp, #0xc]
- add r0, sp, #0x8a
- add r4, sp, #0x0
- mov r5, #0x0
- bl __num2dec_internal
- add r0, sp, #0x8a
- add r1, sp, #0xd6
- bl __equals_dec
- cmp r0, #0x0
- bne _020E9934
- add r0, sp, #0x8a
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- movne r5, #0x1
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- cmp r5, #0x0
- moveq r6, #0x1
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- movne r6, #0x0
-_020E971C:
- cmp r6, #0x0
- bne _020E9744
- ldmia r4, {r0-r1}
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- stmia r4, {r0-r1}
- bl __fpclassifyf
- cmp r0, #0x2
- beq _020E9934
- b _020E975C
-_020E9744:
- ldr r1, [r4, #0x0]
- ldr r0, [r4, #0x4]
- subs r1, r1, #0x1
- sbc r0, r0, #0x0
- str r1, [r4, #0x0]
- str r0, [r4, #0x4]
-_020E975C:
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0x4]
- add r0, sp, #0x64
- bl __num2dec_internal
- cmp r5, #0x0
- beq _020E9788
- add r0, sp, #0x64
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- beq _020E98AC
-_020E9788:
- cmp r5, #0x0
- bne _020E9864
- add r0, sp, #0xd6
- add r1, sp, #0x64
- bl __less_dec
- cmp r0, #0x0
- bne _020E9864
- add r3, sp, #0x8a
- add r5, sp, #0x3e
- mov r2, #0x9
-_020E97B0:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r5, #0x0]
- strh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- bne _020E97B0
- ldrh r0, [r3, #0x0]
- add r3, sp, #0x64
- add r4, sp, #0x8a
- strh r0, [r5, #0x0]
- mov r2, #0x9
-_020E97E4:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r4, #0x0]
- strh r0, [r4, #0x2]
- add r4, r4, #0x4
- subs r2, r2, #0x1
- bne _020E97E4
- ldrh r0, [r3, #0x0]
- add r3, sp, #0x3e
- add r5, sp, #0x64
- strh r0, [r4, #0x0]
- mov r2, #0x9
-_020E9818:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r5, #0x0]
- strh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- bne _020E9818
- ldrh r4, [r3, #0x0]
- ldr r3, [sp, #0x8]
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0xc]
- ldr r0, [sp, #0x4]
- strh r4, [r5, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- str r3, [sp, #0x0]
- str r2, [sp, #0x4]
- b _020E98AC
-_020E9864:
- add r7, sp, #0x64
- add r3, sp, #0x8a
- mov r2, #0x9
-_020E9870:
- ldrh r1, [r7, #0x0]
- ldrh r0, [r7, #0x2]
- add r7, r7, #0x4
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- subs r2, r2, #0x1
- bne _020E9870
- ldrh r2, [r7, #0x0]
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- strh r2, [r3, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- b _020E971C
-_020E98AC:
- add r0, sp, #0x3e
- add r1, sp, #0xd6
- add r2, sp, #0x8a
- bl __minus_dec
- add r0, sp, #0x18
- add r1, sp, #0x64
- add r2, sp, #0xd6
- bl __minus_dec
- add r0, sp, #0x3e
- add r1, sp, #0x18
- bl __equals_dec
- cmp r0, #0x0
- beq _020E9910
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- and r1, r1, #0x1
- and r0, r0, #0x0
- cmp r0, #0x0
- cmpeq r1, #0x0
- beq _020E9934
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- b _020E9934
-_020E9910:
- add r0, sp, #0x3e
- add r1, sp, #0x18
- bl __less_dec
- cmp r0, #0x0
- bne _020E9934
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
-_020E9934:
- ldrsb r0, [sp, #0xd6]
- cmp r0, #0x0
- beq _020E995C
- mov r0, #0x0
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- mov r1, r0
- bl _dsub
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
-_020E995C:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E996C: .word 0x3FF00000
-_020E9970: .word 0xBFF00000
-_020E9974: .word UNK_02106B74
-_020E9978: .word 0x7FF00000
-_020E997C: .word UNK_02106F5C
-_020E9980: .word UNK_02106E48
-_020E9984: .word 0x40140000
-_020E9988: .word 0x7FEFFFFF
-
- arm_func_start __msl_generic_count_bits64
-__msl_generic_count_bits64: ; 0x020E998C
- mov r3, r0, lsr #0x1
- ldr r2, _020E9A14 ; =0x55555555
- orr r3, r3, r1, lsl #0x1f
- and r3, r3, r2
- subs r12, r0, r3
- and r2, r2, r1, lsr #0x1
- ldr r0, _020E9A18 ; =0x33333333
- sbc r3, r1, r2
- mov r1, r12, lsr #0x2
- orr r1, r1, r3, lsl #0x1e
- and r2, r12, r0
- and r1, r1, r0
- adds r2, r2, r1
- and r1, r3, r0
- and r0, r0, r3, lsr #0x2
- adc r1, r1, r0
- mov r0, r2, lsr #0x4
- orr r0, r0, r1, lsl #0x1c
- adds r2, r2, r0
- ldr r0, _020E9A1C ; =0x0F0F0F0F
- adc r1, r1, r1, lsr #0x4
- and r3, r2, r0
- and r2, r1, r0
- mov r0, r3, lsr #0x8
- orr r0, r0, r2, lsl #0x18
- adds r1, r3, r0
- adc r2, r2, r2, lsr #0x8
- mov r0, r1, lsr #0x10
- orr r0, r0, r2, lsl #0x10
- adds r1, r1, r0
- adc r0, r2, r2, lsr #0x10
- adds r0, r1, r0
- and r0, r0, #0xff
- bx lr
- .balign 4
-_020E9A14: .word 0x55555555
-_020E9A18: .word 0x33333333
-_020E9A1C: .word 0x0F0F0F0F
-
- arm_func_start __signbitf
-__signbitf:
- stmdb sp!, {r0-r3}
- ldr r0, [sp, #0x4]
- and r0, r0, #0x80000000
- add sp, sp, #0x10
- bx lr
-
- arm_func_start __fpclassifyf
-__fpclassifyf: ; 0x020E9A34
- stmdb sp!, {r0-r3}
- ldr r2, [sp, #0x4]
- ldr r0, _020E9A9C ; =0x7FF00000
- ands r1, r2, r0
- beq _020E9A70
- cmp r1, r0
- bne _020E9A90
- ldr r0, _020E9AA0 ; =0x000FFFFF
- tst r2, r0
- ldreq r0, [sp, #0x0]
- add sp, sp, #0x10
- cmpeq r0, #0x0
- movne r0, #0x1
- moveq r0, #0x2
- bx lr
-_020E9A70:
- ldr r0, _020E9AA0 ; =0x000FFFFF
- tst r2, r0
- ldreq r0, [sp, #0x0]
- add sp, sp, #0x10
- cmpeq r0, #0x0
- movne r0, #0x5
- moveq r0, #0x3
- bx lr
-_020E9A90:
- mov r0, #0x4
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E9A9C: .word 0x7FF00000
-_020E9AA0: .word 0x000FFFFF
-
- arm_func_start scalbn
-scalbn: ; 0x020E9AA4
- stmdb sp!, {r3-r4,lr}
- sub sp, sp, #0x4
- mov r4, r2
- add r2, sp, #0x0
- bl frexp
- ldr r2, [sp, #0x0]
- add r2, r2, r4
- str r2, [sp, #0x0]
- bl ldexp
- add sp, sp, #0x4
- ldmia sp!, {r3-r4,pc}
-
- arm_func_start stricmp
-stricmp: ; 0x020E9AD0
- stmdb sp!, {r3,lr}
- ldr r3, _020E9B34 ; =UNK_0210420C
-_020E9AD8:
- ldrb r2, [r0], #0x1
- cmp r2, #0x0
- blt _020E9AF0
- cmp r2, #0x80
- bge _020E9AF0
- ldrb r2, [r3, r2]
-_020E9AF0:
- ldrb lr, [r1], #0x1
- and r12, r2, #0xff
- cmp lr, #0x0
- blt _020E9B0C
- cmp lr, #0x80
- bge _020E9B0C
- ldrb lr, [r3, lr]
-_020E9B0C:
- and r2, lr, #0xff
- cmp r12, r2
- mvncc r0, #0x0
- ldmccia sp!, {r3,pc}
- movhi r0, #0x1
- ldmhiia sp!, {r3,pc}
- cmp r12, #0x0
- bne _020E9AD8
- mov r0, #0x0
- ldmia sp!, {r3,pc}
- .balign 4
-_020E9B34: .word UNK_0210420C
-
- arm_func_start strnicmp
-strnicmp: ; 0x020E9B38
- ldr ip, _020E9B40 ; =stricmp
- bx r12
- .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
-
- .global UNK_020EC738
-UNK_020EC738: ; 0x020EC738
- .byte 0x20, 0xFF, 0x01, 0xB8
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC740
-UNK_020EC740: ; 0x020EC740
- .byte 0x00, 0xFF, 0x05, 0x20
- .byte 0x00, 0x00, 0x00, 0x00
-
- .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 strtold2
- .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
- .word frexp
- .short 189
- .word 0x00300120
- .word ldexp
- .short 589
- .word 0x00300120
- .word pow
- .short 13
- .word 0x00000000
- .word __rounddec
- .short 65
- .word 0x00200300
- .word __ull2dec
- .short 205
- .word 0x0050FF00
- .word __timesdec
- .short 389
- .word 0x00D0FF00
- .word __str2dec
- .short 157
- .word 0x00100000
- .word __two_exp
- .short 901
- .word 0x00B00300
- .word __num2dec_internal
- .short 385
- .word 0x00E01F00
- .word __num2dec_internal2
- .short 169
- .word 0x00200300
- .word __dec2num
- .short 1572
- .word UNK_020EC740
- .word scalbn
- .short 45
diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s
index 3235f5ae..e400a88b 100644
--- a/arm9/asm/scrcmd_10.s
+++ b/arm9/asm/scrcmd_10.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index 25911feb..68f9dca8 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s
index 3df4d6e4..794a16de 100644
--- a/arm9/asm/scrcmd_17.s
+++ b/arm9/asm/scrcmd_17.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s
index 25fe86b8..0101d717 100644
--- a/arm9/asm/scrcmd_18.s
+++ b/arm9/asm/scrcmd_18.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s
index b0a515ef..918354ff 100644
--- a/arm9/asm/scrcmd_3.s
+++ b/arm9/asm/scrcmd_3.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s
index 2f3bd42c..cfce1cf5 100644
--- a/arm9/asm/scrcmd_5.s
+++ b/arm9/asm/scrcmd_5.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/scrcmd_7.s b/arm9/asm/scrcmd_7.s
index 58f8b6dc..b253dab5 100644
--- a/arm9/asm/scrcmd_7.s
+++ b/arm9/asm/scrcmd_7.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s
index bad1ef47..c3d8c4ba 100644
--- a/arm9/asm/scrcmd_9.s
+++ b/arm9/asm/scrcmd_9.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index af0e7940..ef0c42fa 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F34FC
.extern UNK_020F3538
diff --git a/arm9/asm/stdlibmwcc.s b/arm9/asm/stdlibmwcc.s
deleted file mode 100644
index b7966e40..00000000
--- a/arm9/asm/stdlibmwcc.s
+++ /dev/null
@@ -1,3175 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .extern UNK_021D74A8
-
- .section .bss
-
- .global __global_destructor_chain
-__global_destructor_chain: ; 0x021D74C8
- .space 0x18
-
- .section .text
- .balign 4, 0
-
- arm_func_start _dadd
-_dadd:
- stmdb sp!, {r4,lr}
- eors r12, r1, r3
- eormi r3, r3, #0x80000000
- bmi _020EA5DC
-_020E9B54:
- subs r12, r0, r2
- sbcs lr, r1, r3
- bhs _020E9B70
- adds r2, r2, r12
- adc r3, r3, lr
- subs r0, r0, r12
- sbc r1, r1, lr
-_020E9B70:
- mov lr, #0x80000000
- mov r12, r1, lsr #0x14
- orr r1, lr, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r4, r12, lsl #0x15
- cmnne r4, #0x200000
- beq _020E9C6C
- mov r4, r3, lsr #0x14
- orr r3, lr, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs lr, r4, lsl #0x15
- beq _020E9CB4
-_020E9BA8:
- subs r4, r12, r4
- beq _020E9C00
- cmp r4, #0x20
- ble _020E9BE4
- cmp r4, #0x38
- movge r4, #0x3f
- sub r4, r4, #0x20
- rsb lr, r4, #0x20
- orrs lr, r2, r3, lsl lr
- mov r2, r3, lsr r4
- orrne r2, r2, #0x1
- adds r0, r0, r2
- adcs r1, r1, #0x0
- blo _020E9C28
- b _020E9C0C
-_020E9BE4:
- rsb lr, r4, #0x20
- movs lr, r2, lsl lr
- rsb lr, r4, #0x20
- mov r2, r2, lsr r4
- orr r2, r2, r3, lsl lr
- mov r3, r3, lsr r4
- orrne r2, r2, #0x1
-_020E9C00:
- adds r0, r0, r2
- adcs r1, r1, r3
- blo _020E9C28
-_020E9C0C:
- add r12, r12, #0x1
- and r4, r0, #0x1
- movs r1, r1, rrx
- orr r0, r4, r0, rrx
- mov lr, r12, lsl #0x15
- cmn lr, #0x200000
- beq _020E9E38
-_020E9C28:
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020E9C6C:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bics r12, r12, #0x800
- beq _020E9CD8
- orrs r4, r0, r1, lsl #0x1
- bne _020E9E14
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- beq _020E9E00
- cmn r4, #0x200000
- bne _020E9E00
- orrs r4, r2, r3, lsl #0x1
- beq _020E9E00
- b _020E9E14
-_020E9CB4:
- cmp r4, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bic r12, r12, #0x800
- bics r4, r4, #0x800
- beq _020E9D44
- orrs r4, r2, r3, lsl #0x1
- bne _020E9E14
- b _020E9E00
-_020E9CD8:
- orrs r4, r0, r1, lsl #0x1
- beq _020E9D18
- mov r12, #0x1
- bic r1, r1, #0x80000000
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- cmnne r4, #0x200000
- mov r4, r4, lsr #0x15
- orr r4, r4, lr, lsr #0x14
- beq _020E9CB4
- orr r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- b _020E9BA8
-_020E9D18:
- mov r12, r3, lsr #0x14
- mov r1, r3, lsl #0xb
- orr r1, r1, r2, lsr #0x15
- mov r0, r2, lsl #0xb
- movs r4, r12, lsl #0x15
- beq _020E9DCC
- cmn r4, #0x200000
- bne _020E9DCC
- orrs r4, r0, r1, lsl #0x1
- beq _020E9E00
- b _020E9E18
-_020E9D44:
- orrs r4, r2, r3, lsl #0x1
- beq _020E9DDC
- mov r4, #0x1
- bic r3, r3, #0x80000000
- cmp r1, #0x0
- bpl _020E9D68
- orr r12, r12, lr, lsr #0x14
- orr r4, r4, lr, lsr #0x14
- b _020E9BA8
-_020E9D68:
- adds r0, r0, r2
- adcs r1, r1, r3
- blo _020E9D88
- add r12, r12, #0x1
- and r4, r0, #0x1
- movs r1, r1, rrx
- mov r0, r0, rrx
- orr r0, r0, r4
-_020E9D88:
- cmp r1, #0x0
- subges r12, r12, #0x1
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmeqia sp!, {r4,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
-_020E9DCC:
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4,lr}
- bx lr
-_020E9DDC:
- cmp r1, #0x0
- subges r12, r12, #0x1
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E00:
- ldr r1, _020E9E58 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E14:
- mov r1, r3
-_020E9E18:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E28: ; 0x020E9E28
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E38:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- ldr r1, _020E9E58 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020E9E58: .word 0x7FF00000
-
- arm_func_start _d2f
-_d2f:
- and r2, r1, #0x80000000
- mov r12, r1, lsr #0x14
- bics r12, r12, #0x800
- beq _020E9ED4
- mov r3, r12, lsl #0x15
- cmn r3, #0x200000
- bhs _020E9EB8
- subs r12, r12, #0x380
- bls _020E9EE4
- cmp r12, #0xff
- bge _020E9F54
- mov r1, r1, lsl #0xc
- orr r3, r2, r1, lsr #0x9
- orr r3, r3, r0, lsr #0x1d
- movs r1, r0, lsl #0x3
- orr r0, r3, r12, lsl #0x17
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020E9EB8:
- orrs r3, r0, r1, lsl #0xc
- bne _020E9ECC
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020E9ECC:
- mvn r0, #0x80000000
- bx lr
-_020E9ED4:
- orrs r3, r0, r1, lsl #0xc
- bne _020E9F4C
- mov r0, r2
- bx lr
-_020E9EE4:
- cmn r12, #0x17
- beq _020E9F38
- bmi _020E9F4C
- mov r1, r1, lsl #0xb
- orr r1, r1, #0x80000000
- mov r3, r1, lsr #0x8
- orr r3, r3, r0, lsr #0x1d
- rsb r12, r12, #0x1
- movs r1, r0, lsl #0x3
- orr r0, r2, r3, lsr r12
- rsb r12, r12, #0x20
- mov r3, r3, lsl r12
- orrne r3, r3, #0x1
- movs r1, r3
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020E9F38:
- orr r0, r0, r1, lsl #0xc
- movs r1, r0
- mov r0, r2
- addne r0, r0, #0x1
- bx lr
-_020E9F4C:
- mov r0, r2
- bx lr
-_020E9F54:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-
- arm_func_start _dfix
-_dfix: ; 0x020E9F60
- bic r3, r1, #0x80000000
- ldr r2, _020E9FA8 ; =0x0000041E
- subs r2, r2, r3, lsr #0x14
- ble _020E9F9C
- cmp r2, #0x20
- bge _020E9F94
- mov r3, r1, lsl #0xb
- orr r3, r3, #0x80000000
- orr r3, r3, r0, lsr #0x15
- cmp r1, #0x0
- mov r0, r3, lsr r2
- rsbmi r0, r0, #0x0
- bx lr
-_020E9F94:
- mov r0, #0x0
- bx lr
-_020E9F9C:
- mvn r0, r1, asr #0x1f
- add r0, r0, #0x80000000
- bx lr
- .balign 4
-_020E9FA8: .word 0x0000041E
-
- arm_func_start _ll_ufrom_d
-_ll_ufrom_d: ; 0x020E9FAC
- tst r1, #0x80000000
- bne _020EA010
- ldr r2, _020EA034 ; =0x0000043E
- subs r2, r2, r1, lsr #0x14
- blt _020EA028
- cmp r2, #0x40
- bge _020EA004
- mov r12, r1, lsl #0xb
- orr r12, r12, #0x80000000
- orr r12, r12, r0, lsr #0x15
- cmp r2, #0x20
- ble _020E9FEC
- sub r2, r2, #0x20
- mov r1, #0x0
- mov r0, r12, lsr r2
- bx lr
-_020E9FEC:
- mov r3, r0, lsl #0xb
- mov r1, r12, lsr r2
- mov r0, r3, lsr r2
- rsb r2, r2, #0x20
- orr r0, r0, r12, lsl r2
- bx lr
-_020EA004:
- mov r1, #0x0
- mov r0, #0x0
- bx lr
-_020EA010:
- cmn r1, #0x100000
- cmpeq r0, #0x0
- bhi _020EA028
- mov r1, #0x0
- mov r0, #0x0
- bx lr
-_020EA028:
- mvn r1, #0x0
- mvn r0, #0x0
- bx lr
- .balign 4
-_020EA034: .word 0x0000043E
-
- arm_func_start _dflt
-_dflt: ; 0x020EA038
- ands r2, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r0, #0x0
- mov r1, #0x0
- bxeq lr
- mov r3, #0x400
- add r3, r3, #0x1e
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- movs r1, r0
- mov r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, r2, r1, lsr #0xc
- orr r1, r1, r3, lsl #0x14
- bx lr
-
- arm_func_start _dfltu
-_dfltu: ; 0x020EA078
- cmp r0, #0x0
- mov r1, #0x0
- bxeq lr
- mov r3, #0x400
- add r3, r3, #0x1e
- bmi _020EA09C
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
-_020EA09C:
- mov r1, r0
- mov r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r3, lsl #0x14
- bx lr
-
- arm_func_start _dmul
-_dmul: ; 0x020EA0B4
- stmdb sp!, {r4-r7,lr}
- eor lr, r1, r3
- and lr, lr, #0x80000000
- mov r12, r1, lsr #0x14
- mov r1, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r6, r12, lsl #0x15
- cmnne r6, #0x200000
- beq _020EA1BC
- orr r1, r1, #0x80000000
- bic r12, r12, #0x800
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- cmnne r5, #0x200000
- beq _020EA204
- orr r3, r3, #0x80000000
- bic r4, r4, #0x800
-_020EA108:
- add r12, r4, r12
- umull r5, r4, r0, r2
- umull r7, r6, r0, r3
- adds r4, r7, r4
- adc r6, r6, #0x0
- umull r7, r0, r1, r2
- adds r4, r7, r4
- adcs r0, r0, r6
- umull r7, r2, r1, r3
- adc r1, r2, #0x0
- adds r0, r0, r7
- adc r1, r1, #0x0
- orrs r4, r4, r5
- orrne r0, r0, #0x1
- cmp r1, #0x0
- blt _020EA154
- sub r12, r12, #0x1
- adds r0, r0, r0
- adc r1, r1, r1
-_020EA154:
- add r12, r12, #0x2
- subs r12, r12, #0x400
- bmi _020EA2F0
- beq _020EA2F0
- mov r6, r12, lsl #0x14
- cmn r6, #0x100000
- bmi _020EA3F0
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA1BC:
- bics r12, r12, #0x800
- beq _020EA218
- orrs r6, r0, r1, lsl #0x1
- bne _020EA3A4
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- beq _020EA1F8
- cmn r5, #0x200000
- bne _020EA390
- orrs r5, r2, r3, lsl #0x1
- beq _020EA390
- b _020EA3A4
-_020EA1F8:
- orrs r5, r3, r2
- beq _020EA3B8
- b _020EA390
-_020EA204:
- bics r4, r4, #0x800
- beq _020EA2AC
- orrs r6, r2, r3, lsl #0x1
- bne _020EA3A4
- b _020EA390
-_020EA218:
- orrs r6, r0, r1, lsl #0x1
- beq _020EA280
- mov r12, #0x1
- cmp r1, #0x0
- bne _020EA23C
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA258
-_020EA23C:
- clz r6, r1
- movs r1, r1, lsl r6
- rsb r6, r6, #0x20
- orr r1, r1, r0, lsr r6
- rsb r6, r6, #0x20
- mov r0, r0, lsl r6
- sub r12, r12, r6
-_020EA258:
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- cmnne r5, #0x200000
- beq _020EA204
- orr r3, r3, #0x80000000
- bic r4, r4, #0x800
- b _020EA108
-_020EA280:
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- beq _020EA404
- cmn r5, #0x200000
- bne _020EA404
- orrs r6, r2, r3, lsl #0x1
- beq _020EA3B8
- b _020EA3A4
-_020EA2AC:
- orrs r5, r2, r3, lsl #0x1
- beq _020EA404
- mov r4, #0x1
- cmp r3, #0x0
- bne _020EA2D0
- sub r4, r4, #0x20
- movs r3, r2
- mov r2, #0x0
- bmi _020EA108
-_020EA2D0:
- clz r6, r3
- movs r3, r3, lsl r6
- rsb r6, r6, #0x20
- orr r3, r3, r2, lsr r6
- rsb r6, r6, #0x20
- mov r2, r2, lsl r6
- sub r4, r4, r6
- b _020EA108
-_020EA2F0:
- cmn r12, #0x34
- beq _020EA388
- bmi _020EA3E0
- mov r2, r1
- mov r3, r0
- add r4, r12, #0x34
- cmp r4, #0x20
- movge r2, r3
- movge r3, #0x0
- subge r4, r4, #0x20
- rsb r5, r4, #0x20
- mov r2, r2, lsl r4
- orr r2, r2, r3, lsr r5
- movs r3, r3, lsl r4
- orrne r2, r2, #0x1
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- cmp r2, #0x0
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA388:
- orr r0, r0, r1, lsl #0x1
- b _020EA3C8
-_020EA390:
- ldr r1, _020EA414 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3A4:
- mov r1, r3
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3B8:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3C8:
- movs r2, r0
- mov r1, lr
- mov r0, #0x0
- addne r0, r0, #0x1
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3E0:
- mov r1, lr
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3F0:
- ldr r1, _020EA414 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA404:
- mov r1, lr
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020EA414: .word 0x7FF00000
-
- arm_func_start _dsqrt
-_dsqrt: ; 0x020EA418
- stmdb sp!, {r4-r6,lr}
- ldr r2, _020EA5A8 ; =0x7FF00000
- cmp r1, r2
- bhs _020EA564
- movs r12, r1, lsr #0x14
- beq _020EA510
- bic r1, r1, r2
- orr r1, r1, #0x100000
-_020EA438:
- movs r12, r12, asr #0x1
- bhs _020EA44C
- sub r12, r12, #0x1
- movs r0, r0, lsl #0x1
- adc r1, r1, r1
-_020EA44C:
- movs r3, r0, lsl #0x1
- adc r1, r1, r1
- mov r2, #0x0
- mov r4, #0x0
- mov lr, #0x200000
-_020EA460:
- add r6, r4, lr
- cmp r6, r1
- addle r4, r6, lr
- suble r1, r1, r6
- addle r2, r2, lr
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- movs lr, lr, lsr #0x1
- bne _020EA460
- mov r0, #0x0
- mov r5, #0x0
- cmp r1, r4
- cmpeq r3, #0x80000000
- blo _020EA4A8
- subs r3, r3, #0x80000000
- sbc r1, r1, r4
- add r4, r4, #0x1
- mov r0, #0x80000000
-_020EA4A8:
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- mov lr, #0x40000000
-_020EA4B4:
- add r6, r5, lr
- cmp r4, r1
- cmpeq r6, r3
- bhi _020EA4D4
- add r5, r6, lr
- subs r3, r3, r6
- sbc r1, r1, r4
- add r0, r0, lr
-_020EA4D4:
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- movs lr, lr, lsr #0x1
- bne _020EA4B4
- orrs r1, r1, r3
- biceq r0, r0, #0x1
- movs r1, r2, lsr #0x1
- movs r0, r0, rrx
- adcs r0, r0, #0x0
- adc r1, r1, #0x0
- add r1, r1, #0x20000000
- sub r1, r1, #0x100000
- add r1, r1, r12, lsl #0x14
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EA510:
- cmp r1, #0x0
- bne _020EA540
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- mvn r12, #0x13
- clz r5, r0
- movs r0, r0, lsl r5
- sub r12, r12, r5
- mov r1, r0, lsr #0xb
- mov r0, r0, lsl #0x15
- b _020EA438
-_020EA540:
- clz r2, r1
- movs r1, r1, lsl r2
- rsb r2, r2, #0x2b
- mov r1, r1, lsr #0xb
- orr r1, r1, r0, lsr r2
- rsb r2, r2, #0x20
- mov r0, r0, lsl r2
- rsb r12, r2, #0x1
- b _020EA438
-_020EA564:
- tst r1, #0x80000000
- beq _020EA580
- bics r3, r1, #0x80000000
- cmpeq r0, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- b _020EA58C
-_020EA580:
- orrs r2, r0, r1, lsl #0xc
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
-_020EA58C:
- ldr r2, _020EA5AC ; =0x7FF80000
- orr r1, r1, r2
- ldr r3, _020EA5B0 ; =UNK_021D74A8
- mov r4, #0x21
- str r4, [r3, #0x0]
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020EA5A8: .word 0x7FF00000
-_020EA5AC: .word 0x7FF80000
-_020EA5B0: .word UNK_021D74A8
-
- arm_func_start _drsb
-_drsb: ; 0x020EA5B4
- eor r1, r1, r3
- eor r3, r1, r3
- eor r1, r1, r3
- eor r0, r0, r2
- eor r2, r0, r2
- eor r0, r0, r2
-
- arm_func_start _dsub
-_dsub:
- stmdb sp!, {r4,lr}
- eors r12, r1, r3
- eormi r3, r3, #0x80000000
- bmi _020E9B54
-_020EA5DC:
- subs r12, r0, r2
- sbcs lr, r1, r3
- bhs _020EA5FC
- eor lr, lr, #0x80000000
- adds r2, r2, r12
- adc r3, r3, lr
- subs r0, r0, r12
- sbc r1, r1, lr
-_020EA5FC:
- mov lr, #0x80000000
- mov r12, r1, lsr #0x14
- orr r1, lr, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r4, r12, lsl #0x15
- cmnne r4, #0x200000
- beq _020EA800
- mov r4, r3, lsr #0x14
- orr r3, lr, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs lr, r4, lsl #0x15
- beq _020EA848
-_020EA634:
- subs r4, r12, r4
- beq _020EA6DC
- cmp r4, #0x20
- ble _020EA670
- cmp r4, #0x38
- movge r4, #0x3f
- sub r4, r4, #0x20
- rsb lr, r4, #0x20
- orrs lr, r2, r3, lsl lr
- mov r2, r3, lsr r4
- orrne r2, r2, #0x1
- subs r0, r0, r2
- sbcs r1, r1, #0x0
- bmi _020EA698
- b _020EA788
-_020EA670:
- rsb lr, r4, #0x20
- movs lr, r2, lsl lr
- rsb lr, r4, #0x20
- mov r2, r2, lsr r4
- orr r2, r2, r3, lsl lr
- mov r3, r3, lsr r4
- orrne r2, r2, #0x1
- subs r0, r0, r2
- sbcs r1, r1, r3
- bpl _020EA788
-_020EA698:
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020EA6DC:
- subs r0, r0, r2
- sbc r1, r1, r3
- orrs lr, r1, r0
- beq _020EA96C
- mov lr, r12, lsl #0x14
- and lr, lr, #0x80000000
- bic r12, r12, #0x800
- cmp r1, #0x0
- bmi _020EA764
- bne _020EA714
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA730
-_020EA714:
- clz r4, r1
- movs r1, r1, lsl r4
- rsb r4, r4, #0x20
- orr r1, r1, r0, lsr r4
- rsb r4, r4, #0x20
- mov r0, r0, lsl r4
- sub r12, r12, r4
-_020EA730:
- cmp r12, #0x0
- bgt _020EA76C
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- ldmia sp!, {r4,lr}
- bx lr
-_020EA764:
- cmp r1, #0x0
- subges r12, r12, #0x1
-_020EA76C:
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020EA788:
- mov lr, r12, lsl #0x14
- and lr, lr, #0x80000000
- bic r12, r12, #0x800
- cmp r1, #0x0
- bne _020EA7AC
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA7C8
-_020EA7AC:
- clz r4, r1
- movs r1, r1, lsl r4
- rsb r4, r4, #0x20
- orr r1, r1, r0, lsr r4
- rsb r4, r4, #0x20
- mov r0, r0, lsl r4
- sub r12, r12, r4
-_020EA7C8:
- cmp r12, #0x0
- orrgt r12, r12, lr, lsr #0x14
- bgt _020EA698
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- ldmia sp!, {r4,lr}
- bx lr
-_020EA800:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bics r12, r12, #0x800
- beq _020EA86C
- orrs r4, r0, r1, lsl #0x1
- bne _020EA948
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- beq _020EA934
- cmn r4, #0x200000
- bne _020EA934
- orrs r4, r2, r3, lsl #0x1
- beq _020EA95C
- b _020EA948
-_020EA848:
- cmp r4, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bic r12, r12, #0x800
- bics r4, r4, #0x800
- beq _020EA8E4
- orrs r4, r2, r3, lsl #0x1
- bne _020EA948
- b _020EA934
-_020EA86C:
- orrs r4, r0, r1, lsl #0x1
- beq _020EA8AC
- mov r12, #0x1
- bic r1, r1, #0x80000000
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- cmnne r4, #0x200000
- mov r4, r4, lsr #0x15
- orr r4, r4, lr, lsr #0x14
- beq _020EA848
- orr r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- b _020EA634
-_020EA8AC:
- mov r12, r3, lsr #0x14
- mov r1, r3, lsl #0xb
- orr r1, r1, r2, lsr #0x15
- mov r0, r2, lsl #0xb
- movs r4, r12, lsl #0x15
- beq _020EA8D8
- cmn r4, #0x200000
- bne _020EA900
- orrs r4, r0, r1, lsl #0x1
- bne _020EA94C
- b _020EA934
-_020EA8D8:
- orrs r4, r0, r1, lsl #0x1
- beq _020EA96C
- b _020EA900
-_020EA8E4:
- orrs r4, r2, r3, lsl #0x1
- beq _020EA910
- mov r4, #0x1
- bic r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- orr r4, r4, lr, lsr #0x14
- b _020EA634
-_020EA900:
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4,lr}
- bx lr
-_020EA910:
- cmp r1, #0x0
- subges r12, r12, #0x1
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020EA934:
- ldr r1, _020EA97C ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020EA948:
- mov r1, r3
-_020EA94C:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020EA95C:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020EA96C:
- mov r1, #0x0
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020EA97C: .word 0x7FF00000
-
- arm_func_start _fadd
-_fadd: ; 0x020EA980
- eors r2, r0, r1
- eormi r1, r1, #0x80000000
- bmi _020EB7BC
-_020EA98C:
- subs r12, r0, r1
- subcc r0, r0, r12
- addcc r1, r1, r12
- mov r2, #0x80000000
- mov r3, r0, lsr #0x17
- orr r0, r2, r0, lsl #0x8
- ands r12, r3, #0xff
- cmpne r12, #0xff
- beq _020EAA20
- mov r12, r1, lsr #0x17
- orr r1, r2, r1, lsl #0x8
- ands r2, r12, #0xff
- beq _020EAA60
-_020EA9C0:
- subs r12, r3, r12
- beq _020EA9D8
- rsb r2, r12, #0x20
- movs r2, r1, lsl r2
- mov r1, r1, lsr r12
- orrne r1, r1, #0x1
-_020EA9D8:
- adds r0, r0, r1
- blo _020EA9F8
- and r1, r0, #0x1
- orr r0, r1, r0, rrx
- add r3, r3, #0x1
- and r2, r3, #0xff
- cmp r2, #0xff
- beq _020EAB68
-_020EA9F8:
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EAA20:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- ands r3, r3, #0xff
- beq _020EAA84
- movs r0, r0, lsl #0x1
- bne _020EAB94
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EAB88
- cmp r12, #0xff
- blt _020EAB88
- cmp r1, #0x0
- beq _020EAB88
- b _020EAB94
-_020EAA60:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- and r3, r3, #0xff
- ands r12, r12, #0xff
- beq _020EAAE0
-_020EAA78:
- movs r1, r1, lsl #0x1
- bne _020EAB94
- b _020EAB88
-_020EAA84:
- movs r0, r0, lsl #0x1
- beq _020EAABC
- mov r3, #0x1
- mov r0, r0, lsr #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EAAE0
- cmp r12, #0xff
- beq _020EAA78
- orr r1, r1, #0x80000000
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- b _020EA9C0
-_020EAABC:
- mov r3, r1, lsr #0x17
- mov r0, r1, lsl #0x9
- ands r3, r3, #0xff
- beq _020EAB48
- cmp r3, #0xff
- blt _020EAB48
- cmp r0, #0x0
- beq _020EAB88
- b _020EAB80
-_020EAAE0:
- movs r1, r1, lsl #0x1
- beq _020EAB50
- mov r1, r1, lsr #0x1
- mov r12, #0x1
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- cmp r0, #0x0
- bmi _020EA9C0
- adds r0, r0, r1
- blo _020EAB14
- and r1, r0, #0x1
- orr r0, r1, r0, rrx
- add r12, r12, #0x1
-_020EAB14:
- cmp r0, #0x0
- subge r12, r12, #0x1
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r12, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EAB48:
- mov r0, r1
- bx lr
-_020EAB50:
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EAB68:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EAB80:
- mvn r0, #0x80000000
- bx lr
-_020EAB88:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EAB94:
- mvn r0, #0x80000000
- bx lr
-_020EAB9C: ; 0x020EAB9C
- mvn r0, #0x80000000
- bx lr
-
- arm_func_start _dgr
-_dgr: ; 0x020EABA4
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAC18
- cmn r12, r3, lsl #0x1
- bhs _020EAC2C
-_020EABB8:
- orrs r12, r3, r1
- bmi _020EABE8
- cmp r1, r3
- cmpeq r0, r2
- movhi r0, #0x1
- movls r0, #0x0
- bx lr
-_020EABD4:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EABE8:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- movhi r0, #0x1
- movls r0, #0x0
- bx lr
-_020EAC18:
- bne _020EABD4
- cmp r0, #0x0
- bhi _020EABD4
- cmn r12, r3, lsl #0x1
- blo _020EABB8
-_020EAC2C:
- bne _020EABD4
- cmp r2, #0x0
- bhi _020EABD4
- b _020EABB8
-
- arm_func_start _dleq
-_dleq: ; 0x020EAC3C
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EACBC
- cmn r12, r3, lsl #0x1
- bhs _020EACD0
-_020EAC50:
- orrs r12, r3, r1
- bmi _020EAC84
- cmp r1, r3
- cmpeq r0, r2
- movls r0, #0x1
- movhi r0, #0x0
- bx lr
-_020EAC6C:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAC84:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x1
- bne _020EACA8
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- orr r12, r12, #0x40000000
- msr cpsr_f, r12
- bxeq lr
-_020EACA8:
- cmp r3, r1
- cmpeq r2, r0
- movls r0, #0x1
- movhi r0, #0x0
- bx lr
-_020EACBC:
- bne _020EAC6C
- cmp r0, #0x0
- bhi _020EAC6C
- cmn r12, r3, lsl #0x1
- blo _020EAC50
-_020EACD0:
- bne _020EAC6C
- cmp r2, #0x0
- bhi _020EAC6C
- b _020EAC50
-
- arm_func_start _dls
-_dls: ; 0x020EACE0
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAD58
- cmn r12, r3, lsl #0x1
- bhs _020EAD6C
-_020EACF4:
- orrs r12, r3, r1
- bmi _020EAD24
- cmp r1, r3
- cmpeq r0, r2
- movcc r0, #0x1
- movcs r0, #0x0
- bx lr
-_020EAD10:
- mov r0, #0x0
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAD24:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- bne _020EAD44
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bxeq lr
-_020EAD44:
- cmp r3, r1
- cmpeq r2, r0
- movcc r0, #0x1
- movcs r0, #0x0
- bx lr
-_020EAD58:
- bne _020EAD10
- cmp r0, #0x0
- bhi _020EAD10
- cmn r12, r3, lsl #0x1
- blo _020EACF4
-_020EAD6C:
- bne _020EAD10
- cmp r2, #0x0
- bhi _020EAD10
- b _020EACF4
-
- arm_func_start _deq
-_deq: ; 0x020EAD7C
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EADE4
- cmn r12, r3, lsl #0x1
- bhs _020EADF8
-_020EAD90:
- orrs r12, r3, r1
- bmi _020EADC0
- cmp r1, r3
- cmpeq r0, r2
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-_020EADAC:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EADC0:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x1
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-_020EADE4:
- bne _020EADAC
- cmp r0, #0x0
- bhi _020EADAC
- cmn r12, r3, lsl #0x1
- blo _020EAD90
-_020EADF8:
- bne _020EADAC
- cmp r2, #0x0
- bhi _020EADAC
- b _020EAD90
-
- arm_func_start _dneq
-_dneq: ; 0x020EAE08
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAE70
- cmn r12, r3, lsl #0x1
- bhs _020EAE84
-_020EAE1C:
- orrs r12, r3, r1
- bmi _020EAE4C
- cmp r1, r3
- cmpeq r0, r2
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-_020EAE38:
- mov r0, #0x1
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EAE4C:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-_020EAE70:
- bne _020EAE38
- cmp r0, #0x0
- bhi _020EAE38
- cmn r12, r3, lsl #0x1
- blo _020EAE1C
-_020EAE84:
- bne _020EAE38
- cmp r2, #0x0
- bhi _020EAE38
- b _020EAE1C
-
- arm_func_start _fgeq
-_fgeq: ; 0x020EAE94
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAEDC
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movge r0, #0x1
- movlt r0, #0x0
- mrs r12, cpsr
- biclt r12, r12, #0x20000000
- orrge r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAEDC:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fgr
-_fgr: ; 0x020EAEF0
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAF38
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movgt r0, #0x1
- movle r0, #0x0
- mrs r12, cpsr
- bicle r12, r12, #0x20000000
- orrgt r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAF38:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fleq
-_fleq: ; 0x020EAF4C
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAF9C
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movle r0, #0x1
- movgt r0, #0x0
- mrs r12, cpsr
- orrgt r12, r12, #0x20000000
- bicgt r12, r12, #0x40000000
- bicle r12, r12, #0x20000000
- orrle r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EAF9C:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fls
-_fls: ; 0x020EAFB4
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAFFC
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movlt r0, #0x1
- movge r0, #0x0
- mrs r12, cpsr
- orrge r12, r12, #0x20000000
- biclt r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAFFC:
- mov r0, #0x0
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _feq
-_feq: ; 0x020EB010
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- blo _020EB064
- cmp r3, r1, lsl #0x1
- blo _020EB064
- orr r3, r0, r1
- movs r3, r3, lsl #0x1
- moveq r0, #0x0
- bne _020EB044
- mrs r12, cpsr
- orr r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EB044:
- cmp r0, r1
- movne r0, #0x1
- moveq r0, #0x0
- mrs r12, cpsr
- bicne r12, r12, #0x40000000
- orreq r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EB064:
- mov r0, #0x1
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _frdiv
-_frdiv: ; 0x020EB078
- eor r0, r0, r1
- eor r1, r0, r1
- eor r0, r0, r1
-
- arm_func_start _fdiv
-_fdiv: ; 0x020EB084
- stmdb sp!, {lr}
- mov r12, #0xff
- ands r3, r12, r0, lsr #0x17
- cmpne r3, #0xff
- beq _020EB258
- ands r12, r12, r1, lsr #0x17
- cmpne r12, #0xff
- beq _020EB294
- orr r1, r1, #0x800000
- orr r0, r0, #0x800000
- bic r2, r0, #0xff000000
- bic lr, r1, #0xff000000
-_020EB0B4:
- cmp r2, lr
- movcc r2, r2, lsl #0x1
- subcc r3, r3, #0x1
- teq r0, r1
- sub r0, pc, #0x94
- ldrb r1, [r0, lr, lsr #0xf]
- rsb lr, lr, #0x0
- mov r0, lr, asr #0x1
- mul r0, r1, r0
- add r0, r0, #0x80000000
- mov r0, r0, lsr #0x6
- mul r0, r1, r0
- mov r0, r0, lsr #0xe
- mul r1, lr, r0
- sub r12, r3, r12
- mov r1, r1, lsr #0xc
- mul r1, r0, r1
- mov r0, r0, lsl #0xe
- add r0, r0, r1, lsr #0xf
- umull r1, r0, r2, r0
- mov r3, r0
- orrmi r0, r0, #0x80000000
- adds r12, r12, #0x7e
- bmi _020EB35C
- cmp r12, #0xfe
- bge _020EB410
- add r0, r0, r12, lsl #0x17
- mov r12, r1, lsr #0x1c
- cmp r12, #0x7
- beq _020EB238
- add r0, r0, r1, lsr #0x1f
- ldmia sp!, {lr}
- bx lr
-_020EB138: ; not code
- .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
- .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
- .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
- .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
- .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
- .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
- .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
- .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
- .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
- .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
- .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
- .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
- .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
- .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
- .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
- .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
- .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
-_020EB238:
- mov r1, r3, lsl #0x1
- add r1, r1, #0x1
- rsb lr, lr, #0x0
- mul r1, lr, r1
- cmp r1, r2, lsl #0x18
- addmi r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB258:
- eor lr, r0, r1
- and lr, lr, #0x80000000
- cmp r3, #0x0
- beq _020EB2B0
- movs r0, r0, lsl #0x9
- bne _020EB3F8
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB3E8
- cmp r12, #0xff
- blt _020EB3E8
- cmp r1, #0x0
- beq _020EB404
- b _020EB3E0
-_020EB294:
- eor lr, r0, r1
- and lr, lr, #0x80000000
- cmp r12, #0x0
- beq _020EB314
-_020EB2A4:
- movs r1, r1, lsl #0x9
- bne _020EB3E0
- b _020EB430
-_020EB2B0:
- movs r2, r0, lsl #0x9
- beq _020EB2E4
- clz r3, r2
- movs r2, r2, lsl r3
- rsb r3, r3, #0x0
- mov r2, r2, lsr #0x8
- ands r12, r12, r1, lsr #0x17
- beq _020EB33C
- cmp r12, #0xff
- beq _020EB2A4
- orr r1, r1, #0x800000
- bic lr, r1, #0xff000000
- b _020EB0B4
-_020EB2E4:
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB308
- cmp r12, #0xff
- blt _020EB430
- cmp r1, #0x0
- beq _020EB430
- b _020EB3E0
-_020EB308:
- cmp r1, #0x0
- beq _020EB404
- b _020EB430
-_020EB314:
- movs r12, r1, lsl #0x9
- beq _020EB3E8
- mov lr, r12
- clz r12, lr
- movs lr, lr, lsl r12
- rsb r12, r12, #0x0
- mov lr, lr, lsr #0x8
- orr r0, r0, #0x800000
- bic r2, r0, #0xff000000
- b _020EB0B4
-_020EB33C:
- movs r12, r1, lsl #0x9
- beq _020EB3E8
- mov lr, r12
- clz r12, lr
- movs lr, lr, lsl r12
- rsb r12, r12, #0x0
- mov lr, lr, lsr #0x8
- b _020EB0B4
-_020EB35C:
- and r0, r0, #0x80000000
- cmn r12, #0x18
- beq _020EB3D0
- bmi _020EB428
- add r1, r12, #0x17
- mov r2, r2, lsl r1
- rsb r12, r12, #0x0
- mov r3, r3, lsr r12
- orr r0, r0, r3
- rsb lr, lr, #0x0
- mul r1, lr, r3
- cmp r1, r2
- ldmeqia sp!, {lr}
- bxeq lr
- add r1, r1, lr
- cmp r1, r2
- beq _020EB3C4
- addmi r0, r0, #0x1
- subpl r1, r1, lr
- add r1, lr, r1, lsl #0x1
- cmp r1, r2, lsl #0x1
- and r3, r0, #0x1
- addmi r0, r0, #0x1
- addeq r0, r0, r3
- ldmia sp!, {lr}
- bx lr
-_020EB3C4:
- add r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3D0:
- cmn r2, lr
- addne r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3E0:
- mov r0, r1
- b _020EB3F8
-_020EB3E8:
- mov r0, #0xff000000
- orr r0, lr, r0, lsr #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3F8:
- mvn r0, #0x80000000
- ldmia sp!, {lr}
- bx lr
-_020EB404:
- mvn r0, #0x80000000
- ldmia sp!, {lr}
- bx lr
-_020EB410:
- tst r0, #0x80000000
- mov r0, #0xff000000
- movne r0, r0, asr #0x1
- moveq r0, r0, lsr #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB428:
- ldmia sp!, {lr}
- bx lr
-_020EB430:
- mov r0, lr
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start _f2d
-_f2d:
- and r2, r0, #0x80000000
- mov r12, r0, lsr #0x17
- mov r3, r0, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB46C
- cmp r12, #0xff
- beq _020EB498
-_020EB458:
- add r12, r12, #0x380
- mov r0, r3, lsl #0x14
- orr r1, r2, r3, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- bx lr
-_020EB46C:
- cmp r3, #0x0
- bne _020EB480
- mov r1, r2
- mov r0, #0x0
- bx lr
-_020EB480:
- mov r3, r3, lsr #0x1
- clz r12, r3
- movs r3, r3, lsl r12
- rsb r12, r12, #0x1
- add r3, r3, r3
- b _020EB458
-_020EB498:
- cmp r3, #0x0
- bhi _020EB4B0
- ldr r1, _020EB4BC ; =0x7FF00000
- orr r1, r1, r2
- mov r0, #0x0
- bx lr
-_020EB4B0:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- bx lr
- .balign 4
-_020EB4BC: .word 0x7FF00000
-
- arm_func_start _ffix
-_ffix: ; 0x020EB4C0
- bic r1, r0, #0x80000000
- mov r2, #0x9e
- subs r2, r2, r1, lsr #0x17
- ble _020EB4E8
- mov r1, r1, lsl #0x8
- orr r1, r1, #0x80000000
- cmp r0, #0x0
- mov r0, r1, lsr r2
- rsbmi r0, r0, #0x0
- bx lr
-_020EB4E8:
- mvn r0, r0, asr #0x1f
- add r0, r0, #0x80000000
- bx lr
-
- arm_func_start _ffixu
-_ffixu: ; 0x020EB4F4
- tst r0, #0x80000000
- bne _020EB518
- mov r1, #0x9e
- subs r1, r1, r0, lsr #0x17
- blt _020EB52C
- mov r2, r0, lsl #0x8
- orr r0, r2, #0x80000000
- mov r0, r0, lsr r1
- bx lr
-_020EB518:
- mov r2, #0xff000000
- cmp r2, r0, lsl #0x1
- movcs r0, #0x0
- mvncc r0, #0x0
- bx lr
-_020EB52C:
- mvn r0, #0x0
- bx lr
-
- arm_func_start _fflt
-_fflt: ; 0x020EB534
- ands r2, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r0, #0x0
- bxeq lr
- clz r3, r0
- movs r0, r0, lsl r3
- rsb r3, r3, #0x9e
- ands r1, r0, #0xff
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r3, r1, #0x7f
- andeqs r3, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-
- arm_func_start _ffltu
-_ffltu: ; 0x020EB57C
- cmp r0, #0x0
- bxeq lr
- mov r3, #0x9e
- bmi _020EB598
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
-_020EB598:
- ands r2, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r2, #0x80
- bxeq lr
- ands r1, r2, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-
- arm_func_start _fmul
-_fmul: ; 0x020EB5C4
- eor r2, r0, r1
- and r2, r2, #0x80000000
- mov r12, #0xff
- ands r3, r12, r0, lsr #0x17
- mov r0, r0, lsl #0x8
- cmpne r3, #0xff
- beq _020EB640
- orr r0, r0, #0x80000000
- ands r12, r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- cmpne r12, #0xff
- beq _020EB680
- orr r1, r1, #0x80000000
-_020EB5F8:
- add r12, r3, r12
- umull r1, r3, r0, r1
- movs r0, r3
- addpl r0, r0, r0
- subpl r12, r12, #0x1
- subs r12, r12, #0x7f
- bmi _020EB70C
- cmp r12, #0xfe
- bge _020EB778
- ands r3, r0, #0xff
- orr r0, r2, r0, lsr #0x8
- add r0, r0, r12, lsl #0x17
- tst r3, #0x80
- bxeq lr
- orrs r1, r1, r3, lsl #0x19
- andeqs r3, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB640:
- cmp r3, #0x0
- beq _020EB694
- movs r0, r0, lsl #0x1
- bne _020EB768
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB674
- cmp r12, #0xff
- blt _020EB75C
- cmp r1, #0x0
- beq _020EB75C
- b _020EB768
-_020EB674:
- cmp r1, #0x0
- beq _020EB770
- b _020EB75C
-_020EB680:
- cmp r12, #0x0
- beq _020EB6F0
-_020EB688:
- movs r1, r1, lsl #0x1
- bne _020EB768
- b _020EB75C
-_020EB694:
- movs r0, r0, lsl #0x1
- beq _020EB6CC
- mov r0, r0, lsr #0x1
- clz r3, r0
- movs r0, r0, lsl r3
- rsb r3, r3, #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EB6F0
- cmp r12, #0xff
- beq _020EB688
- orr r1, r1, #0x80000000
- b _020EB5F8
-_020EB6CC:
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB79C
- cmp r12, #0xff
- blt _020EB79C
- cmp r1, #0x0
- beq _020EB770
- b _020EB768
-_020EB6F0:
- movs r1, r1, lsl #0x1
- beq _020EB79C
- mov r1, r1, lsr #0x1
- clz r12, r1
- movs r1, r1, lsl r12
- rsb r12, r12, #0x1
- b _020EB5F8
-_020EB70C:
- cmn r12, #0x18
- beq _020EB754
- bmi _020EB794
- cmp r1, #0x0
- orrne r0, r0, #0x1
- mov r3, r0
- mov r0, r0, lsr #0x8
- rsb r12, r12, #0x0
- orr r0, r2, r0, lsr r12
- rsb r12, r12, #0x18
- movs r1, r3, lsl r12
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB754:
- mov r0, r0, lsl #0x1
- b _020EB784
-_020EB75C:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EB768:
- mvn r0, #0x80000000
- bx lr
-_020EB770:
- mvn r0, #0x80000000
- bx lr
-_020EB778:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EB784:
- movs r1, r0
- mov r0, r2
- addne r0, r0, #0x1
- bx lr
-_020EB794:
- mov r0, r2
- bx lr
-_020EB79C:
- mov r0, r2
- bx lr
-
- arm_func_start _frsb
-_frsb: ; 0x020EB7A4
- eor r0, r0, r1
- eor r1, r0, r1
- eor r0, r0, r1
-
- arm_func_start _fsub
-_fsub: ; 0x020EB7B0
- eors r2, r0, r1
- eormi r1, r1, #0x80000000
- bmi _020EA98C
-_020EB7BC:
- subs r12, r0, r1
- eorcc r12, r12, #0x80000000
- subcc r0, r0, r12
- addcc r1, r1, r12
- mov r2, #0x80000000
- mov r3, r0, lsr #0x17
- orr r0, r2, r0, lsl #0x8
- ands r12, r3, #0xff
- cmpne r12, #0xff
- beq _020EB8D8
- mov r12, r1, lsr #0x17
- orr r1, r2, r1, lsl #0x8
- ands r2, r12, #0xff
- beq _020EB918
-_020EB7F4:
- subs r12, r3, r12
- beq _020EB83C
- rsb r2, r12, #0x20
- movs r2, r1, lsl r2
- mov r1, r1, lsr r12
- orrne r1, r1, #0x1
- subs r0, r0, r1
- bpl _020EB880
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB83C:
- subs r0, r0, r1
- beq _020EB9E4
- mov r2, r3, lsl #0x17
- and r2, r2, #0x80000000
- bic r3, r3, #0x100
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- cmp r3, #0x0
- bgt _020EB870
- rsb r3, r3, #0x9
- orr r0, r2, r0, lsr r3
- bx lr
-_020EB870:
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EB880:
- mov r2, r3, lsl #0x17
- and r2, r2, #0x80000000
- bic r3, r3, #0x100
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- cmp r3, #0x0
- bgt _020EB8AC
- rsb r3, r3, #0x9
- orr r0, r2, r0, lsr r3
- bx lr
-_020EB8AC:
- ands r1, r0, #0xff
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB8D8:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- ands r3, r3, #0xff
- beq _020EB940
- movs r0, r0, lsl #0x1
- bne _020EBA18
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EBA0C
- cmp r12, #0xff
- blt _020EBA0C
- cmp r1, #0x0
- beq _020EBA20
- b _020EBA18
-_020EB918:
- cmp r12, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- and r3, r3, #0xff
- ands r12, r12, #0xff
- beq _020EB9A8
-_020EB930:
- eor r2, r2, #0x80000000
- movs r1, r1, lsl #0x1
- bne _020EBA18
- b _020EBA0C
-_020EB940:
- movs r0, r0, lsl #0x1
- beq _020EB978
- mov r0, r0, lsr #0x1
- mov r3, #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EB9A8
- cmp r12, #0xff
- beq _020EB930
- orr r1, r1, #0x80000000
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- b _020EB7F4
-_020EB978:
- mov r3, r1, lsr #0x17
- mov r0, r1, lsl #0x9
- ands r2, r3, #0xff
- beq _020EB99C
- cmp r2, #0xff
- blt _020EB9C4
- cmp r0, #0x0
- bne _020EBA04
- b _020EBA0C
-_020EB99C:
- cmp r0, #0x0
- beq _020EB9E4
- b _020EB9C4
-_020EB9A8:
- movs r1, r1, lsl #0x1
- beq _020EB9CC
- mov r1, r1, lsr #0x1
- mov r12, #0x1
- orr r12, r12, r2, lsr #0x17
- orr r3, r3, r2, lsr #0x17
- b _020EB7F4
-_020EB9C4:
- mov r0, r1
- bx lr
-_020EB9CC:
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EB9E4:
- mov r0, #0x0
- bx lr
-_020EB9EC: ; 0x020EB9EC
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EBA04:
- mvn r0, #0x80000000
- bx lr
-_020EBA0C:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EBA18:
- mvn r0, #0x80000000
- bx lr
-_020EBA20:
- mvn r0, #0x80000000
- bx lr
-
- arm_func_start _ll_mod
-_ll_mod: ; 0x020EBA28
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, r1
- orr r4, r4, #0x1
- b _020EBA48
-
- arm_func_start _ll_sdiv
-_ll_sdiv: ; 0x020EBA38
- stmdb sp!, {r4-r7,r11-r12,lr}
- eor r4, r1, r3
- mov r4, r4, asr #0x1
- mov r4, r4, lsl #0x1
-_020EBA48:
- orrs r5, r3, r2
- bne _020EBA58
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBA58:
- mov r5, r0, lsr #0x1f
- add r5, r5, r1
- mov r6, r2, lsr #0x1f
- add r6, r6, r3
- orrs r6, r5, r6
- bne _020EBA8C
- mov r1, r2
- bl _s32_div_f
- ands r4, r4, #0x1
- movne r0, r1
- mov r1, r0, asr #0x1f
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBA8C:
- cmp r1, #0x0
- bge _020EBA9C
- rsbs r0, r0, #0x0
- rsc r1, r1, #0x0
-_020EBA9C:
- cmp r3, #0x0
- bge _020EBAAC
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
-_020EBAAC:
- orrs r5, r1, r0
- beq _020EBBD0
- mov r5, #0x0
- mov r6, #0x1
- cmp r3, #0x0
- bmi _020EBAD8
-_020EBAC4:
- add r5, r5, #0x1
- adds r2, r2, r2
- adcs r3, r3, r3
- bpl _020EBAC4
- add r6, r6, r5
-_020EBAD8:
- cmp r1, #0x0
- blt _020EBAF8
-_020EBAE0:
- cmp r6, #0x1
- beq _020EBAF8
- sub r6, r6, #0x1
- adds r0, r0, r0
- adcs r1, r1, r1
- bpl _020EBAE0
-_020EBAF8:
- mov r7, #0x0
- mov r12, #0x0
- mov r11, #0x0
- b _020EBB20
-_020EBB08:
- orr r12, r12, #0x1
- subs r6, r6, #0x1
- beq _020EBB78
- adds r0, r0, r0
- adcs r1, r1, r1
- adcs r7, r7, r7
-_020EBB20:
- subs r0, r0, r2
- sbcs r1, r1, r3
- sbcs r7, r7, #0x0
- adds r12, r12, r12
- adc r11, r11, r11
- cmp r7, #0x0
- bge _020EBB08
-_020EBB3C:
- subs r6, r6, #0x1
- beq _020EBB70
- adds r0, r0, r0
- adcs r1, r1, r1
- adc r7, r7, r7
- adds r0, r0, r2
- adcs r1, r1, r3
- adc r7, r7, #0x0
- adds r12, r12, r12
- adc r11, r11, r11
- cmp r7, #0x0
- bge _020EBB08
- b _020EBB3C
-_020EBB70:
- adds r0, r0, r2
- adc r1, r1, r3
-_020EBB78:
- ands r7, r4, #0x1
- moveq r0, r12
- moveq r1, r11
- beq _020EBBB0
- subs r7, r5, #0x20
- movge r0, r1, lsr r7
- bge _020EBBD4
- rsb r7, r5, #0x20
- mov r0, r0, lsr r5
- orr r0, r0, r1, lsl r7
- mov r1, r1, lsr r5
- b _020EBBB0
-_020EBBA8: ; 0x020EBBA8
- mov r0, r1, lsr r7
- mov r1, #0x0
-_020EBBB0:
- cmp r4, #0x0
- blt _020EBBC0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBBC0:
- rsbs r0, r0, #0x0
- rsc r1, r1, #0x0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBBD0:
- mov r0, #0x0
-_020EBBD4:
- mov r1, #0x0
- cmp r4, #0x0
- blt _020EBBC0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-
- arm_func_start _ll_udiv
-_ll_udiv: ; 0x020EBBE8
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, #0x0
- b _020EBBFC
-
- arm_func_start _ull_mod
-_ull_mod: ; 0x020EBBF4
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, #0x1
-_020EBBFC:
- orrs r5, r3, r2
- bne _020EBC0C
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBC0C:
- orrs r5, r1, r3
- bne _020EBAAC
- mov r1, r2
- bl _u32_div_not_0_f
- cmp r4, #0x0
- movne r0, r1
- mov r1, #0x0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-
- arm_func_start _ll_mul
-_ll_mul: ; 0x020EBC30
- stmdb sp!, {r4-r5,lr}
- umull r5, r4, r0, r2
- mla r4, r0, r3, r4
- mla r4, r2, r1, r4
- mov r1, r4
- mov r0, r5
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start _ll_shl
-_ll_shl: ; 0x020EBC50
- ands r2, r2, #0x3f
- bxeq lr
- subs r3, r2, #0x20
- bge _020EBC74
- rsb r3, r2, #0x20
- mov r1, r1, lsl r2
- orr r1, r1, r0, lsr r3
- mov r0, r0, lsl r2
- bx lr
-_020EBC74:
- mov r1, r0, lsl r3
- mov r0, #0x0
- bx lr
-
- arm_func_start _s32_div_f
-_s32_div_f: ; 0x020EBC80
- eor r12, r0, r1
- and r12, r12, #0x80000000
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- addlt r12, r12, #0x1
- cmp r1, #0x0
- rsblt r1, r1, #0x0
- beq _020EBE78
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- blo _020EBE78
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- mov r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- mov r1, r3
-_020EBE78:
- ands r3, r12, #0x80000000
- rsbne r0, r0, #0x0
- ands r3, r12, #0x1
- rsbne r1, r1, #0x0
- bx lr
-
- arm_func_start _u32_div_f
-_u32_div_f: ; 0x020EBE8C
- cmp r1, #0x0
- bxeq lr
-
- arm_func_start _u32_div_not_0_f
-_u32_div_not_0_f:
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- bxcc lr
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- mov r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- mov r1, r3
- bx lr
-
- arm_func_start _drdiv
-_drdiv: ; 0x020EC070
- eor r1, r1, r3
- eor r3, r1, r3
- eor r1, r1, r3
- eor r0, r0, r2
- eor r2, r0, r2
- eor r0, r0, r2
-
- arm_func_start _ddiv
-_ddiv: ; 0x020EC088
- stmdb sp!, {r4-r6,lr}
- ldr lr, _020EC5C8 ; =0x00000FFE
- eor r4, r1, r3
- ands r12, lr, r1, lsr #0x13
- cmpne r12, lr
- beq _020EC434
- bic r1, r1, lr, lsl #0x14
- orr r1, r1, #0x100000
- add r12, r12, r4, lsr #0x1f
-_020EC0AC:
- ands r4, lr, r3, lsr #0x13
- cmpne r4, lr
- beq _020EC4CC
- bic r3, r3, lr, lsl #0x14
- orr r3, r3, #0x100000
-_020EC0C0:
- sub r12, r12, r4
- cmp r1, r3
- cmpeq r0, r2
- bhs _020EC0DC
- adds r0, r0, r0
- adc r1, r1, r1
- sub r12, r12, #0x2
-_020EC0DC:
- sub r4, pc, #0x24
- ldrb lr, [r4, r3, lsr #0xc]
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
- mov r4, #0x20000000
- mla r5, lr, r3, r4
- mov r6, r3, lsl #0xa
- mov r5, r5, lsr #0x7
- mul lr, r5, lr
- orr r6, r6, r2, lsr #0x16
- mov lr, lr, lsr #0xd
- mul r5, lr, r6
- mov r6, r1, lsl #0xa
- orr r6, r6, r0, lsr #0x16
- mov r5, r5, lsr #0x10
- mul r5, lr, r5
- mov lr, lr, lsl #0xe
- add lr, lr, r5, lsr #0x10
- umull r5, r6, lr, r6
- umull r4, r5, r6, r2
- mla r5, r3, r6, r5
- mov r4, r4, lsr #0x1a
- orr r4, r4, r5, lsl #0x6
- add r4, r4, r0, lsl #0x2
- umull lr, r5, r4, lr
- mov r4, #0x0
- adds r5, r5, r6, lsl #0x18
- adc r4, r4, r6, lsr #0x8
- cmp r12, #0x800
- bge _020EC2C0
- add r12, r12, #0x7f0
- adds r12, r12, #0xc
- bmi _020EC2D8
- orr r1, r4, r12, lsl #0x1f
- bic r12, r12, #0x1
- add r1, r1, r12, lsl #0x13
- tst lr, #0x80000000
- bne _020EC1B0
- rsbs r2, r2, #0x0
- mov r4, r4, lsl #0x1
- add r4, r4, r5, lsr #0x1f
- mul lr, r2, r4
- mov r6, #0x0
- mov r4, r5, lsl #0x1
- orr r4, r4, #0x1
- umlal r6, lr, r4, r2
- rsc r3, r3, #0x0
- mla lr, r4, r3, lr
- cmp lr, r0, lsl #0x15
- bmi _020EC1B0
- mov r0, r5
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC1B0:
- adds r0, r5, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC1C0: ; not code
- .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
- .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
- .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
- .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
- .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
- .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
- .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
- .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
- .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
- .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
- .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
- .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
- .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
- .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
- .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
- .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
-_020EC2C0:
- movs r1, r12, lsl #0x1f
- orr r1, r1, #0x7f000000
- orr r1, r1, #0xf00000
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC2D8:
- mvn r6, r12, asr #0x1
- cmp r6, #0x34
- bgt _020EC424
- beq _020EC400
- cmp r6, #0x14
- bge _020EC320
- rsb r6, r6, #0x13
- mov lr, r0, lsl r6
- rsb r6, r6, #0x14
- mov r0, r5, lsr r6
- rsb r6, r6, #0x20
- orr r0, r0, r4, lsl r6
- rsb r6, r6, #0x20
- mov r4, r4, lsr r6
- orr r1, r4, r12, lsl #0x1f
- mov r12, lr
- mov lr, #0x0
- b _020EC350
-_020EC320:
- rsb r6, r6, #0x33
- mov lr, r1, lsl r6
- mov r1, r12, lsl #0x1f
- rsb r6, r6, #0x20
- orr r12, lr, r0, lsr r6
- rsb r6, r6, #0x20
- mov lr, r0, lsl r6
- mov r5, r5, lsr #0x15
- orr r5, r5, r4, lsl #0xb
- rsb r6, r6, #0x1f
- mov r0, r5, lsr r6
- mov r4, #0x0
-_020EC350:
- rsbs r2, r2, #0x0
- mul r4, r2, r4
- mov r5, #0x0
- umlal r5, r4, r2, r0
- rsc r3, r3, #0x0
- mla r4, r0, r3, r4
- cmp r4, r12
- cmpeq r5, lr
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- adds r5, r5, r2
- adc r4, r4, r3
- cmp r4, r12
- bmi _020EC3F4
- bne _020EC398
- cmp r5, lr
- beq _020EC3E4
- blo _020EC3F4
-_020EC398:
- subs r5, r5, r2
- sbc r4, r4, r3
-_020EC3A0:
- adds r5, r5, r5
- adc r4, r4, r4
- adds r5, r5, r2
- adc r4, r4, r3
- adds lr, lr, lr
- adc r12, r12, r12
- cmp r4, r12
- bmi _020EC3E4
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- cmp r5, lr
- blo _020EC3E4
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- tst r0, #0x1
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
-_020EC3E4:
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC3F4:
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- b _020EC3A0
-_020EC400:
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
- cmp r1, r3
- cmpeq r0, r2
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- movne r0, #0x1
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC424:
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC434:
- orrs r5, r0, r1, lsl #0x1
- beq _020EC558
- cmp r12, lr
- beq _020EC49C
- movs r1, r1, lsl #0xc
- beq _020EC478
- clz r5, r1
- movs r1, r1, lsl r5
- sub r12, r12, r5
- add r5, r12, #0x1f
- mov r1, r1, lsr #0xb
- orr r1, r1, r0, lsr r5
- rsb r5, r5, #0x20
- mov r0, r0, lsl r5
- mov r12, r12, lsl #0x1
- orr r12, r12, r4, lsr #0x1f
- b _020EC0AC
-_020EC478:
- mvn r12, #0x13
- clz r5, r0
- movs r0, r0, lsl r5
- sub r12, r12, r5
- mov r1, r0, lsr #0xb
- mov r0, r0, lsl #0x15
- mov r12, r12, lsl #0x1
- orr r12, r12, r4, lsr #0x1f
- b _020EC0AC
-_020EC49C:
- orrs r5, r0, r1, lsl #0xc
- bne _020EC580
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- bhs _020EC4C0
- and r5, r3, #0x80000000
- eor r1, r5, r1
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC4C0:
- orrs r5, r2, r3, lsl #0xc
- bne _020EC5A0
- b _020EC5B8
-_020EC4CC:
- orrs r5, r2, r3, lsl #0x1
- beq _020EC544
- cmp r4, lr
- beq _020EC52C
- movs r3, r3, lsl #0xc
- beq _020EC50C
- clz r5, r3
- movs r3, r3, lsl r5
- sub r4, r4, r5
- add r5, r4, #0x1f
- mov r3, r3, lsr #0xb
- orr r3, r3, r2, lsr r5
- rsb r5, r5, #0x20
- mov r2, r2, lsl r5
- mov r4, r4, lsl #0x1
- b _020EC0C0
-_020EC50C:
- mvn r4, #0x13
- clz r5, r2
- movs r2, r2, lsl r5
- sub r4, r4, r5
- mov r3, r2, lsr #0xb
- mov r2, r2, lsl #0x15
- mov r4, r4, lsl #0x1
- b _020EC0C0
-_020EC52C:
- orrs r5, r2, r3, lsl #0xc
- bne _020EC5A0
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC544:
- mov r1, r12, lsl #0x1f
- orr r1, r1, lr, lsl #0x13
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC558:
- orrs r5, r2, r3, lsl #0x1
- beq _020EC5B8
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- cmpeq r2, #0x0
- bhi _020EC5A0
- eor r1, r1, r3
- and r1, r1, #0x80000000
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC580:
- tst r1, #0x80000
- beq _020EC5B8
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- cmpeq r2, #0x0
- bhi _020EC5A0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC5A0:
- tst r3, #0x80000
- beq _020EC5B8
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC5B8:
- orr r1, r1, #0x7f000000
- orr r1, r1, #0xf80000
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020EC5C8: .word 0x00000FFE
-
- arm_func_start _fp_init
-_fp_init: ; 0x020EC5CC
- bx lr
-
- arm_func_start sys_writec
-sys_writec: ; 0x020EC5D0
- str lr, [sp, #-0x4]!
- mov r1, r0
- mov r0, #0x3
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_readc
-sys_readc: ; 0x020EC5E4
- str lr, [sp, #-0x4]!
- mov r1, #0x0
- mov r0, #0x7
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_exit
-sys_exit: ; 0x020EC5F8
- mov r1, #0x0
- mov r0, #0x18
- swi 0x123456
- mov pc, lr
-
- arm_func_start __read_console
-__read_console: ; 0x020EC608
- stmdb sp!, {r3-r7,lr}
- mov r6, r2
- ldr r5, [r6, #0x0]
- mov r7, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC650
-_020EC624:
- bl sys_readc
- and r1, r0, #0xff
- cmp r1, #0xd
- strb r0, [r7, r4]
- cmpne r1, #0xa
- addeq r0, r4, #0x1
- streq r0, [r6, #0x0]
- beq _020EC650
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC624
-_020EC650:
- mov r0, #0x0
- ldmia sp!, {r3-r7,pc}
-
- arm_func_start __write_console
-__write_console: ; 0x020EC658
- stmdb sp!, {r4-r6,lr}
- ldr r5, [r2, #0x0]
- mov r6, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC684
-_020EC670:
- add r0, r6, r4
- bl sys_writec
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC670
-_020EC684:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __close_console
-__close_console: ; 0x020EC68C
- mov r0, #0x0
- bx lr
-
- .extern __sinit__
- arm_func_start __call_static_initializers
-__call_static_initializers: ; 0x020EC694
- stmdb sp!, {r4,lr}
- ldr r4, _020EC6BC ; =__sinit__
- b _020EC6A8
-_020EC6A0:
- blx r0
- add r4, r4, #0x4
-_020EC6A8:
- cmp r4, #0x0
- ldrne r0, [r4, #0x0]
- cmpne r0, #0x0
- bne _020EC6A0
- ldmia sp!, {r4,pc}
- .balign 4
-_020EC6BC: .word __sinit__
-
- arm_func_start __destroy_global_chain
-__destroy_global_chain: ; 0x020EC6C0
- stmdb sp!, {r3-r5,lr}
- ldr r4, _020EC700 ; =__global_destructor_chain
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- ldmeqia sp!, {r3-r5,pc}
-_020EC6D4: ; 0x020EC6D4
- mvn r5, #0x0
-_020EC6D8:
- ldr r0, [r2, #0x0]
- mov r1, r5
- str r0, [r4, #0x0]
- ldr r0, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- bne _020EC6D8
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020EC700: .word __global_destructor_chain
-
- arm_func_start _ExitProcess
-_ExitProcess: ; 0x020EC704
- ldr ip, _020EC70C ; =sys_exit
- bx r12
- .balign 4
-_020EC70C: .word sys_exit
-
- .section .exception
- .word 0x00200100
- .word __read_console
- .short 81
- .word 0x00300F00
- .word __write_console
- .short 53
- .word 0x00200700
- .word __call_static_initializers
- .short 45
- .word 0x00100100
- .word __destroy_global_chain
- .short 69
- .word 0x00200300
- .word _ExitProcess
- .short 13
- .word 0x00000000
diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s
index 18e10da6..103b59f4 100644
--- a/arm9/asm/unk_02001B80.s
+++ b/arm9/asm/unk_02001B80.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
index dc304639..7a509f0b 100644
--- a/arm9/asm/unk_020023C0.s
+++ b/arm9/asm/unk_020023C0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_02002C14.s b/arm9/asm/unk_02002C14.s
index 119c68ff..60d27fed 100644
--- a/arm9/asm/unk_02002C14.s
+++ b/arm9/asm/unk_02002C14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_02002F08.s b/arm9/asm/unk_02002F08.s
index fb6f96ff..10ad89e0 100644
--- a/arm9/asm/unk_02002F08.s
+++ b/arm9/asm/unk_02002F08.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02106FC8
diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s
index f9b9de1f..d304b14a 100644
--- a/arm9/asm/unk_020030E8.s
+++ b/arm9/asm/unk_020030E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .text
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
index c2d91fe9..ea77f3ae 100644
--- a/arm9/asm/unk_020051F4.s
+++ b/arm9/asm/unk_020051F4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s
index 7a7010b0..8e521c5c 100644
--- a/arm9/asm/unk_02005CFC.s
+++ b/arm9/asm/unk_02005CFC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s
index 07650c04..526c52c7 100644
--- a/arm9/asm/unk_02006D98.s
+++ b/arm9/asm/unk_02006D98.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020ECD4C
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s
index e6b5abcc..0b8d98e7 100644
--- a/arm9/asm/unk_02008AA4.s
+++ b/arm9/asm/unk_02008AA4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s
index 31aabcc3..f257d2c8 100644
--- a/arm9/asm/unk_02008DEC.s
+++ b/arm9/asm/unk_02008DEC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s
index 95a1773a..b08b52fd 100644
--- a/arm9/asm/unk_02009EAC.s
+++ b/arm9/asm/unk_02009EAC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
index 9e8b3189..9476691e 100644
--- a/arm9/asm/unk_0200CABC.s
+++ b/arm9/asm/unk_0200CABC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0200E1D0.s b/arm9/asm/unk_0200E1D0.s
index 3690752c..b93e5e74 100644
--- a/arm9/asm/unk_0200E1D0.s
+++ b/arm9/asm/unk_0200E1D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s
index 1919f15d..a464171a 100644
--- a/arm9/asm/unk_0200E850.s
+++ b/arm9/asm/unk_0200E850.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_0201137C.s b/arm9/asm/unk_0201137C.s
index 1a68abb7..65e076bb 100644
--- a/arm9/asm/unk_0201137C.s
+++ b/arm9/asm/unk_0201137C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s
index bc9652c8..0a0ad349 100644
--- a/arm9/asm/unk_02011744.s
+++ b/arm9/asm/unk_02011744.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s
index 8c38ae93..61d60ec2 100644
--- a/arm9/asm/unk_02012004.s
+++ b/arm9/asm/unk_02012004.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.rodata
diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s
index 8b3029f2..789becf0 100644
--- a/arm9/asm/unk_02012944.s
+++ b/arm9/asm/unk_02012944.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s
index 5f0f01c6..038bee3f 100644
--- a/arm9/asm/unk_02012CC8.s
+++ b/arm9/asm/unk_02012CC8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s
index 8b846678..d6d0116a 100644
--- a/arm9/asm/unk_02013CD4.s
+++ b/arm9/asm/unk_02013CD4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocPlttVram
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_020142EC.s b/arm9/asm/unk_020142EC.s
index 2e18d984..c933b981 100644
--- a/arm9/asm/unk_020142EC.s
+++ b/arm9/asm/unk_020142EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020144FC.s b/arm9/asm/unk_020144FC.s
index b9dd902f..e3677eca 100644
--- a/arm9/asm/unk_020144FC.s
+++ b/arm9/asm/unk_020144FC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02014590.s b/arm9/asm/unk_02014590.s
index 189206a3..a2515a3d 100644
--- a/arm9/asm/unk_02014590.s
+++ b/arm9/asm/unk_02014590.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02014BF4.s b/arm9/asm/unk_02014BF4.s
index 566b8514..2413b116 100644
--- a/arm9/asm/unk_02014BF4.s
+++ b/arm9/asm/unk_02014BF4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02015D14.s b/arm9/asm/unk_02015D14.s
index 3b49756a..7a67039f 100644
--- a/arm9/asm/unk_02015D14.s
+++ b/arm9/asm/unk_02015D14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s
index 359f9bfe..f2b33c29 100644
--- a/arm9/asm/unk_0201B1A8.s
+++ b/arm9/asm/unk_0201B1A8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
@@ -21,7 +21,7 @@ FUN_0201B1A8: ; 0x0201B1A8
push {r3-r5, lr}
add r5, r3, #0x0
add r4, r2, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r5, #0x0]
bl NNS_G3dGetTex
cmp r0, #0x0
diff --git a/arm9/asm/unk_0201B4E8.s b/arm9/asm/unk_0201B4E8.s
index 42074f95..b742fd39 100644
--- a/arm9/asm/unk_0201B4E8.s
+++ b/arm9/asm/unk_0201B4E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201B6D0.s b/arm9/asm/unk_0201B6D0.s
index 1d795e17..b66ef8bb 100644
--- a/arm9/asm/unk_0201B6D0.s
+++ b/arm9/asm/unk_0201B6D0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
diff --git a/arm9/asm/unk_0201C24C.s b/arm9/asm/unk_0201C24C.s
index b0c55e93..35d638b3 100644
--- a/arm9/asm/unk_0201C24C.s
+++ b/arm9/asm/unk_0201C24C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201C360.s b/arm9/asm/unk_0201C360.s
index 078b3ee3..6560cbc4 100644
--- a/arm9/asm/unk_0201C360.s
+++ b/arm9/asm/unk_0201C360.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C620.s b/arm9/asm/unk_0201C620.s
index b1da9325..a4d23899 100644
--- a/arm9/asm/unk_0201C620.s
+++ b/arm9/asm/unk_0201C620.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C6B4.s b/arm9/asm/unk_0201C6B4.s
index dea0c864..6ee6910b 100644
--- a/arm9/asm/unk_0201C6B4.s
+++ b/arm9/asm/unk_0201C6B4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s
index aa8bfe83..cbc055af 100644
--- a/arm9/asm/unk_0201C7A0.s
+++ b/arm9/asm/unk_0201C7A0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gSineTable
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_0201CC08.s b/arm9/asm/unk_0201CC08.s
index 15457b23..30d82af8 100644
--- a/arm9/asm/unk_0201CC08.s
+++ b/arm9/asm/unk_0201CC08.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0201D040.s b/arm9/asm/unk_0201D040.s
index b41b069c..672b3209 100644
--- a/arm9/asm/unk_0201D040.s
+++ b/arm9/asm/unk_0201D040.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201E00C.s b/arm9/asm/unk_0201E00C.s
index d46fd5e0..212205fd 100644
--- a/arm9/asm/unk_0201E00C.s
+++ b/arm9/asm/unk_0201E00C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s
index 43dcd254..abc19a78 100644
--- a/arm9/asm/unk_0201E7D8.s
+++ b/arm9/asm/unk_0201E7D8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s
index 03e1404e..a00dc10e 100644
--- a/arm9/asm/unk_0201F06C.s
+++ b/arm9/asm/unk_0201F06C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
.extern NNS_GfdDefaultFuncAllocPlttVram
@@ -265,7 +265,7 @@ _0201F1C8:
ldr r0, [r0, #0x0]
ldr r1, [r5, #0x4]
mov r2, #0x4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
bl FUN_0201C360
@@ -1821,7 +1821,7 @@ _0201FD0C:
str r0, [r4, r1]
ldr r0, [r5, #0x8]
ldr r1, _0201FD54 ; =UNK_02105BBC
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
diff --git a/arm9/asm/unk_020208B8.s b/arm9/asm/unk_020208B8.s
index 11027cff..5e47bc2e 100644
--- a/arm9/asm/unk_020208B8.s
+++ b/arm9/asm/unk_020208B8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s
index 235543ee..b03750ac 100644
--- a/arm9/asm/unk_02020C44.s
+++ b/arm9/asm/unk_02020C44.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocTexVram
.extern NNS_GfdDefaultFuncAllocPlttVram
@@ -146,7 +146,7 @@ _02020D38:
_02020D48:
ldr r0, [sp, #0x0]
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r4, #0x4]
cmp r0, #0x0
bne _02020D5A
diff --git a/arm9/asm/unk_0202134C.s b/arm9/asm/unk_0202134C.s
index b45f4e91..1c5515c0 100644
--- a/arm9/asm/unk_0202134C.s
+++ b/arm9/asm/unk_0202134C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s
index ee27fc88..a648ab1d 100644
--- a/arm9/asm/unk_02021590.s
+++ b/arm9/asm/unk_02021590.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02022244.s b/arm9/asm/unk_02022244.s
index 02895c8f..07482d25 100644
--- a/arm9/asm/unk_02022244.s
+++ b/arm9/asm/unk_02022244.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022294.s b/arm9/asm/unk_02022294.s
index 2b3d7a39..c0d13763 100644
--- a/arm9/asm/unk_02022294.s
+++ b/arm9/asm/unk_02022294.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_020222E8.s b/arm9/asm/unk_020222E8.s
index b43507a2..047712a5 100644
--- a/arm9/asm/unk_020222E8.s
+++ b/arm9/asm/unk_020222E8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s
index 9564742c..5a639179 100644
--- a/arm9/asm/unk_02022318.s
+++ b/arm9/asm/unk_02022318.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022450.s b/arm9/asm/unk_02022450.s
index 73169e78..fd6aacb5 100644
--- a/arm9/asm/unk_02022450.s
+++ b/arm9/asm/unk_02022450.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02023AC4.s b/arm9/asm/unk_02023AC4.s
index daa3a9a3..a9a5bea2 100644
--- a/arm9/asm/unk_02023AC4.s
+++ b/arm9/asm/unk_02023AC4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_020250A4.s b/arm9/asm/unk_020250A4.s
index 60cd4165..5810a8ac 100644
--- a/arm9/asm/unk_020250A4.s
+++ b/arm9/asm/unk_020250A4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02025954.s b/arm9/asm/unk_02025954.s
index 40c1b236..bbbe5bc9 100644
--- a/arm9/asm/unk_02025954.s
+++ b/arm9/asm/unk_02025954.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s
index 28a1f682..da87eac5 100644
--- a/arm9/asm/unk_02026CD0.s
+++ b/arm9/asm/unk_02026CD0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gGameLanguage
diff --git a/arm9/asm/unk_02027E30.s b/arm9/asm/unk_02027E30.s
index 8116a83c..c5efaebd 100644
--- a/arm9/asm/unk_02027E30.s
+++ b/arm9/asm/unk_02027E30.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s
index 23822bb1..f8183dc2 100644
--- a/arm9/asm/unk_020281E0.s
+++ b/arm9/asm/unk_020281E0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02028980.s b/arm9/asm/unk_02028980.s
index 664e39e7..8299ea95 100644
--- a/arm9/asm/unk_02028980.s
+++ b/arm9/asm/unk_02028980.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02029A84.s b/arm9/asm/unk_02029A84.s
index c0382834..b9131299 100644
--- a/arm9/asm/unk_02029A84.s
+++ b/arm9/asm/unk_02029A84.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029AE0.s b/arm9/asm/unk_02029AE0.s
index 3e6f8a2e..68c9a3c8 100644
--- a/arm9/asm/unk_02029AE0.s
+++ b/arm9/asm/unk_02029AE0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029CEC.s b/arm9/asm/unk_02029CEC.s
index 623b44b9..5f7a1bf2 100644
--- a/arm9/asm/unk_02029CEC.s
+++ b/arm9/asm/unk_02029CEC.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029FB0.s b/arm9/asm/unk_02029FB0.s
index c98b57b7..2c66522a 100644
--- a/arm9/asm/unk_02029FB0.s
+++ b/arm9/asm/unk_02029FB0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202A1E0.s b/arm9/asm/unk_0202A1E0.s
index df633837..d3555bd5 100644
--- a/arm9/asm/unk_0202A1E0.s
+++ b/arm9/asm/unk_0202A1E0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202A924.s b/arm9/asm/unk_0202A924.s
index f8784153..6bd87ba5 100644
--- a/arm9/asm/unk_0202A924.s
+++ b/arm9/asm/unk_0202A924.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202AC20.s b/arm9/asm/unk_0202AC20.s
index 843845eb..8e86635c 100644
--- a/arm9/asm/unk_0202AC20.s
+++ b/arm9/asm/unk_0202AC20.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0202B374.s b/arm9/asm/unk_0202B374.s
index 2becea26..260bf6f6 100644
--- a/arm9/asm/unk_0202B374.s
+++ b/arm9/asm/unk_0202B374.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202B870.s b/arm9/asm/unk_0202B870.s
index 55229d73..c4dc6cc4 100644
--- a/arm9/asm/unk_0202B870.s
+++ b/arm9/asm/unk_0202B870.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s
index 52f6b9ad..fb7c35a7 100644
--- a/arm9/asm/unk_0202BE98.s
+++ b/arm9/asm/unk_0202BE98.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202C198.s b/arm9/asm/unk_0202C198.s
index 742b9fb1..4753b23a 100644
--- a/arm9/asm/unk_0202C198.s
+++ b/arm9/asm/unk_0202C198.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_0202D394.s b/arm9/asm/unk_0202D394.s
index ce635a79..8def9e94 100644
--- a/arm9/asm/unk_0202D394.s
+++ b/arm9/asm/unk_0202D394.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202D4C4.s b/arm9/asm/unk_0202D4C4.s
index a809e579..c74b65b6 100644
--- a/arm9/asm/unk_0202D4C4.s
+++ b/arm9/asm/unk_0202D4C4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202D8D0.s b/arm9/asm/unk_0202D8D0.s
index 13ed76b8..ec2d4a99 100644
--- a/arm9/asm/unk_0202D8D0.s
+++ b/arm9/asm/unk_0202D8D0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s
index 490da58f..867eb255 100644
--- a/arm9/asm/unk_0202DB14.s
+++ b/arm9/asm/unk_0202DB14.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_020336C0.s b/arm9/asm/unk_020336C0.s
index 4f2d4dc3..a82cee5b 100644
--- a/arm9/asm/unk_020336C0.s
+++ b/arm9/asm/unk_020336C0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s
index dfad7db2..83170809 100644
--- a/arm9/asm/unk_02033874.s
+++ b/arm9/asm/unk_02033874.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s
index 9e204377..69021991 100644
--- a/arm9/asm/unk_02033B68.s
+++ b/arm9/asm/unk_02033B68.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
@@ -326,7 +326,7 @@ FUN_02033D3C: ; 0x02033D3C
beq _02033D92
ldr r0, _02033D98 ; =UNK_02105D88
add r1, sp, #0x4
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
@@ -374,11 +374,11 @@ FUN_02033D9C: ; 0x02033D9C
add r1, sp, #0x4
beq _02033DC2
ldr r0, _02033E5C ; =UNK_02105D98
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
b _02033DC8
_02033DC2:
ldr r0, _02033E60 ; =UNK_02105DA8
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
_02033DC8:
mov r1, #0x96
ldr r0, [sp, #0x4]
diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s
index ed33e084..985c0e82 100644
--- a/arm9/asm/unk_02033F50.s
+++ b/arm9/asm/unk_02033F50.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -110,7 +110,7 @@ _02033FA4:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034160 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s
index 08265835..0e9dbb92 100644
--- a/arm9/asm/unk_02034188.s
+++ b/arm9/asm/unk_02034188.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -58,7 +58,7 @@ FUN_02034188: ; 0x02034188
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034370 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s
index a4cac7e7..38e95c4f 100644
--- a/arm9/asm/unk_020343A8.s
+++ b/arm9/asm/unk_020343A8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034A28.s b/arm9/asm/unk_02034A28.s
index 19d0db80..be782cd2 100644
--- a/arm9/asm/unk_02034A28.s
+++ b/arm9/asm/unk_02034A28.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034D7C.s b/arm9/asm/unk_02034D7C.s
index c179bd14..7457d78d 100644
--- a/arm9/asm/unk_02034D7C.s
+++ b/arm9/asm/unk_02034D7C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034E84.s b/arm9/asm/unk_02034E84.s
index 45f0b5d0..fd110c04 100644
--- a/arm9/asm/unk_02034E84.s
+++ b/arm9/asm/unk_02034E84.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.rodata
diff --git a/arm9/asm/unk_02034FE4.s b/arm9/asm/unk_02034FE4.s
index 81135415..901bbf19 100644
--- a/arm9/asm/unk_02034FE4.s
+++ b/arm9/asm/unk_02034FE4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index c9df4ca4..03a16da6 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.section .rodata
@@ -3649,7 +3649,7 @@ FUN_02036E08: ; 0x02036E08
mov r0, #0x3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #0xc]
bl SavArray_PlayerParty_get
ldrb r1, [r5, #0x0]
@@ -3773,7 +3773,7 @@ FUN_02036F1C: ; 0x02036F1C
ldr r0, [r4, r0]
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02036F9C ; =0x00000475
mov r1, #0x0
bl FUN_02005350
diff --git a/arm9/asm/unk_02036FA4.s b/arm9/asm/unk_02036FA4.s
index 2ebcc6fe..efbd5713 100644
--- a/arm9/asm/unk_02036FA4.s
+++ b/arm9/asm/unk_02036FA4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02037024.s b/arm9/asm/unk_02037024.s
index 6a0b7ff8..dbd3ae56 100644
--- a/arm9/asm/unk_02037024.s
+++ b/arm9/asm/unk_02037024.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index 26a50555..88845239 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -187,16 +187,16 @@ FUN_02037400: ; 0x02037400
mov r0, #0x3
mov r1, #0xb
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x20
mov r0, #0x3
lsl r2, r1, #0x9
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x3
mov r0, #0x0
mov r1, #0x5b
lsl r2, r2, #0x8
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0xb8
mov r2, #0xb
@@ -282,11 +282,11 @@ FUN_020374B0: ; 0x020374B0
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xb
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x20
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r5, pc}
thumb_func_start FUN_02037504
diff --git a/arm9/asm/unk_020377B0.s b/arm9/asm/unk_020377B0.s
index 6efca472..ca19378d 100644
--- a/arm9/asm/unk_020377B0.s
+++ b/arm9/asm/unk_020377B0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 9c2132bf..7c9cc030 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern UNK_020F2A9C
.extern UNK_020F96DC
@@ -1633,7 +1633,7 @@ _020382F6:
mov r0, #0x3
mov r1, #0x1a
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
str r0, [sp, #0x24]
@@ -1691,7 +1691,7 @@ _02038386:
ldr r0, [r4, #0x60]
bl FUN_0206C92C
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x7
str r0, [r4, #0x0]
b _020383C8
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index bbed9516..a2718433 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -147,729 +147,729 @@ UNK_020F3538: ; 0x020F3538
.byte 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02
.byte 0x13, 0x02, 0x14, 0x02
- .global gScriptCmdTable
+ .global gScriptCmdTable
gScriptCmdTable: ; 0x020F355C
- .word ScrCmd_Nop
- .word ScrCmd_Dummy
- .word ScrCmd_End
- .word ScrCmd_Wait
- .word ScrCmd_LoadByte
- .word ScrCmd_LoadWord
- .word ScrCmd_LoadByteFromAddr
- .word ScrCmd_WriteByteToAddr
- .word ScrCmd_SetPtrByte
- .word ScrCmd_CopyLocal
- .word ScrCmd_CopyByte
- .word ScrCmd_CompareLocalToLocal
- .word ScrCmd_CompareLocalToValue
- .word ScrCmd_CompareLocalToAddr
- .word ScrCmd_CompareAddrToLocal
- .word ScrCmd_CompareAddrToValue
- .word ScrCmd_CompareAddrToAddr
- .word ScrCmd_CompareVarToValue
- .word ScrCmd_CompareVarToVar
- .word ScrCmd_RunScript
- .word ScrCmd_RunScriptWait
- .word ScrCmd_RestartCurrentScript
- .word ScrCmd_GoTo
- .word ScrCmd_ObjectGoTo
- .word ScrCmd_BgGoTo
- .word ScrCmd_DirectionGoTo
- .word ScrCmd_Call
- .word ScrCmd_Return
- .word ScrCmd_GoToIf
- .word ScrCmd_CallIf
- .word ScrCmd_SetFlag
- .word ScrCmd_ClearFlag
- .word ScrCmd_CheckFlag
- .word ScrCmd_CheckFlagVar
- .word ScrCmd_SetFlagVar
- .word ScrCmd_SetTrainerFlag
- .word ScrCmd_ClearTrainerFlag
- .word ScrCmd_CheckTrainerFlag
- .word ScrCmd_AddVar
- .word ScrCmd_SubVar
- .word ScrCmd_SetVar
- .word ScrCmd_CopyVar
- .word ScrCmd_SetOrCopyVar
- .word ScrCmd_Message
- .word ScrCmd_Unk002C
- .word ScrCmd_Unk002D
- .word ScrCmd_Unk002E
- .word ScrCmd_Unk002F
- .word ScrCmd_WaitButtonAB
- .word ScrCmd_WaitButton
- .word ScrCmd_WaitButtonABPad
- .word ScrCmd_Unk0033
- .word ScrCmd_CloseMessageBox
- .word ScrCmd_Unk0035
- .word ScrCmd_CreateMessageBox
- .word ScrCmd_Unk0037
- .word ScrCmd_Unk0038
- .word ScrCmd_Unk0039
- .word ScrCmd_Unk003A
- .word ScrCmd_Unk003B
- .word ScrCmd_Menu
- .word ScrCmd_ScrollBg
- .word ScrCmd_YesNoMenu
- .word ScrCmd_Unk003F
- .word ScrCmd_Unk0040
- .word ScrCmd_Unk0041
- .word ScrCmd_Unk0042
- .word ScrCmd_Unk0043
- .word ScrCmd_Unk0044
- .word ScrCmd_Unk0045
- .word ScrCmd_Unk0046
- .word ScrCmd_Unk0047
- .word ScrCmd_Unk0048
- .word ScrCmd_PlayFanfare
- .word ScrCmd_StopFanfare
- .word ScrCmd_PlayFanfareWait
- .word ScrCmd_PlayCry
- .word ScrCmd_PlayCryWait
- .word ScrCmd_PlaySound
- .word ScrCmd_PlaySoundWait
- .word ScrCmd_PlayBgm
- .word ScrCmd_StopBgm
- .word ScrCmd_PlayDefaultBgm
- .word ScrCmd_Unk0053
- .word ScrCmd_FadeOutBgm
- .word ScrCmd_FadeInBgm
- .word ScrCmd_Unk0056
- .word ScrCmd_Unk0057
- .word ScrCmd_Unk0058
- .word ScrCmd_CheckChatotCry
- .word ScrCmd_StartChatotRecord
- .word ScrCmd_StopChatotRecord
- .word ScrCmd_SaveChatotCry
- .word ScrCmd_Unk005D
- .word ScrCmd_Unk005E
- .word ScrCmd_Unk005F
- .word ScrCmd_Unk0060
- .word ScrCmd_Unk0061
- .word ScrCmd_Unk0062
- .word ScrCmd_Unk0063
- .word ScrCmd_Unk0064
- .word ScrCmd_Unk0065
- .word ScrCmd_Unk0066
- .word ScrCmd_Unk0067
- .word ScrCmd_Unk0068
- .word ScrCmd_Unk0069
- .word ScrCmd_Unk006A
- .word ScrCmd_Unk006B
- .word ScrCmd_Unk006C
- .word ScrCmd_Unk006D
- .word ScrCmd_Unk006E
- .word ScrCmd_GiveMoney
- .word ScrCmd_TakeMoneyImmediate
- .word ScrCmd_HasEnoughMoneyImmediate
- .word ScrCmd_ShowMoneyBox
- .word ScrCmd_HideMoneyBox
- .word ScrCmd_UpdateMoneyBox
- .word ScrCmd_ShowCoinBox
- .word ScrCmd_HideCoinBox
- .word ScrCmd_UpdateCoinBox
- .word ScrCmd_GetCoins
- .word ScrCmd_GiveCoins
- .word ScrCmd_TakeCoinsImmediate
- .word ScrCmd_GiveItem
- .word ScrCmd_TakeItem
- .word ScrCmd_HasSpaceForItem
- .word ScrCmd_HasItem
- .word ScrCmd_ItemIdIsTMOrHM
- .word ScrCmd_GetItemPocketId
- .word ScrCmd_Unk0081
- .word ScrCmd_Unk0082
- .word ScrCmd_GiveSecretBaseDecoration
- .word ScrCmd_TakeSecretBaseDecoration
- .word ScrCmd_HasSpaceForDecoration
- .word ScrCmd_GetDecorationCount
- .word ScrCmd_GiveUndergroundTrap
- .word ScrCmd_TakeUndergroundTrap
- .word ScrCmd_HasSpaceForTrap
- .word ScrCmd_GetTrapCount
- .word ScrCmd_GiveTreasure
- .word ScrCmd_TakeTreasure
- .word ScrCmd_HasSpaceForTreasure
- .word ScrCmd_GetTreasureCount
- .word ScrCmd_GiveUndergroundSphere
- .word ScrCmd_TakeUndergroundSphere
- .word ScrCmd_HasSpaceForSphere
- .word ScrCmd_GetSphereCount
- .word ScrCmd_Unk0093
- .word ScrCmd_Unk0094
- .word ScrCmd_Unk0095
- .word ScrCmd_GiveMon
- .word ScrCmd_GiveEgg
- .word ScrCmd_SetPartyMonMove
- .word ScrCmd_PartyMonHasMove
- .word ScrCmd_FindPartyMonWithMove
- .word ScrCmd_Unk009B
- .word ScrCmd_Unk009C
- .word ScrCmd_Unk009D
- .word ScrCmd_Unk009E
- .word ScrCmd_Unk009F
- .word ScrCmd_Unk00A0
- .word ScrCmd_Unk00A1
- .word ScrCmd_Unk00A2
- .word ScrCmd_Unk00A3
- .word ScrCmd_Unk00A4
- .word ScrCmd_Unk00A5
- .word ScrCmd_Unk00A6
- .word ScrCmd_Unk00A7
- .word ScrCmd_Unk00A8
- .word ScrCmd_Unk00A9
- .word ScrCmd_Unk00AA
- .word ScrCmd_MonStoragePC
- .word ScrCmd_Unk00AC
- .word ScrCmd_Unk00AD
- .word ScrCmd_Unk00AE
- .word ScrCmd_Unk00AF
- .word ScrCmd_HallOfFame
- .word ScrCmd_Unk00B1
- .word ScrCmd_Unk00B2
- .word ScrCmd_Unk00B3
- .word ScrCmd_Unk00B4
- .word ScrCmd_Unk00B5
- .word ScrCmd_Unk00B6
- .word ScrCmd_Unk00B7
- .word ScrCmd_Unk00B8
- .word ScrCmd_Unk00B9
- .word ScrCmd_Unk00BA
- .word ScrCmd_Unk00BB
- .word ScrCmd_Unk00BC
- .word ScrCmd_Unk00BD
- .word ScrCmd_Unk00BE
- .word ScrCmd_Unk00BF
- .word ScrCmd_Unk00C0
- .word ScrCmd_Unk00C1
- .word ScrCmd_Unk00C2
- .word ScrCmd_Unk00C3
- .word ScrCmd_Unk00C4
- .word ScrCmd_Unk00C5
- .word ScrCmd_Unk00C6
- .word ScrCmd_Unk00C7
- .word ScrCmd_Unk00C8
- .word ScrCmd_Unk00C9
- .word ScrCmd_Unk00CA
- .word ScrCmd_Unk00CB
- .word ScrCmd_Unk00CC
- .word ScrCmd_GetPlayerName
- .word ScrCmd_GetRivalName
- .word ScrCmd_GetFriendName
- .word ScrCmd_GetPokemonName
- .word ScrCmd_GetItemName
- .word ScrCmd_GetPocketName
- .word ScrCmd_GetTMHMMoveName
- .word ScrCmd_GetMoveName
- .word ScrCmd_Unk00D5
- .word ScrCmd_GetPokemonNickname
- .word ScrCmd_GetPoketchAppName
- .word ScrCmd_GetTrainerClassName
- .word ScrCmd_Unk00D9
- .word ScrCmd_Unk00DA
- .word ScrCmd_GetPlayerStarterName
- .word ScrCmd_GetRivalStarterName
- .word ScrCmd_GetCounterpartStarterName
- .word ScrCmd_Unk00DE
- .word ScrCmd_GetDecorationName
- .word ScrCmd_GetUndergroundTrapName
- .word ScrCmd_GetUndergroundItemName
- .word ScrCmd_GetMapName
- .word ScrCmd_Unk00E3
- .word ScrCmd_Unk00E4
- .word ScrCmd_Unk00E5
- .word ScrCmd_Unk00E6
- .word ScrCmd_Unk00E7
- .word ScrCmd_Unk00E8
- .word ScrCmd_Unk00E9
- .word ScrCmd_Unk00EA
- .word ScrCmd_Unk00EB
- .word ScrCmd_Unk00EC
- .word ScrCmd_Unk00ED
- .word ScrCmd_Unk00EE
- .word ScrCmd_Unk00EF
- .word ScrCmd_Unk00F0
- .word ScrCmd_Unk00F1
- .word ScrCmd_Unk00F2
- .word ScrCmd_Unk00F3
- .word ScrCmd_Unk00F4
- .word ScrCmd_Unk00F5
- .word ScrCmd_Unk00F6
- .word ScrCmd_Unk00F7
- .word ScrCmd_Unk00F8
- .word ScrCmd_Unk00F9
- .word ScrCmd_Unk00FA
- .word ScrCmd_Unk00FB
- .word ScrCmd_Unk00FC
- .word ScrCmd_Unk00FD
- .word ScrCmd_Unk00FE
- .word ScrCmd_Unk00FF
- .word ScrCmd_Unk0100
- .word ScrCmd_Unk0101
- .word ScrCmd_Unk0102
- .word ScrCmd_Unk0103
- .word ScrCmd_Unk0104
- .word ScrCmd_Unk0105
- .word ScrCmd_Unk0106
- .word ScrCmd_Unk0107
- .word ScrCmd_Unk0108
- .word ScrCmd_Unk0109
- .word ScrCmd_Unk010A
- .word ScrCmd_Unk010B
- .word ScrCmd_Unk010C
- .word ScrCmd_Unk010D
- .word ScrCmd_Unk010E
- .word ScrCmd_Unk010F
- .word ScrCmd_Unk0110
- .word ScrCmd_Unk0111
- .word ScrCmd_Unk0112
- .word ScrCmd_Unk0113
- .word ScrCmd_Unk0114
- .word ScrCmd_Unk0115
- .word ScrCmd_Unk0116
- .word ScrCmd_Unk0117
- .word ScrCmd_Unk0118
- .word ScrCmd_Unk0119
- .word ScrCmd_Unk011A
- .word ScrCmd_Unk011B
- .word ScrCmd_Unk011C
- .word ScrCmd_Unk011D
- .word ScrCmd_Unk011E
- .word ScrCmd_Unk011F
- .word ScrCmd_Unk0120
- .word ScrCmd_Unk0121
- .word ScrCmd_Unk0122
- .word ScrCmd_Unk0123
- .word ScrCmd_Unk0124
- .word ScrCmd_Unk0125
- .word ScrCmd_Unk0126
- .word ScrCmd_Unk0127
- .word ScrCmd_Unk0128
- .word ScrCmd_Unk0129
- .word ScrCmd_Unk012A
- .word ScrCmd_Unk012B
- .word ScrCmd_Unk012C
- .word ScrCmd_Unk012D
- .word ScrCmd_Unk012E
- .word ScrCmd_Unk012F
- .word ScrCmd_Unk0130
- .word ScrCmd_Unk0131
- .word ScrCmd_Unk0132
- .word ScrCmd_Unk0133
- .word ScrCmd_Unk0134
- .word ScrCmd_Unk0135
- .word ScrCmd_Unk0136
- .word ScrCmd_Unk0137
- .word ScrCmd_Unk0138
- .word ScrCmd_Unk0139
- .word ScrCmd_Unk013A
- .word ScrCmd_Unk013B
- .word ScrCmd_Unk013C
- .word ScrCmd_Unk013D
- .word ScrCmd_Unk013E
- .word ScrCmd_Unk013F
- .word ScrCmd_Unk0140
- .word ScrCmd_Unk0141
- .word ScrCmd_Unk0142
- .word ScrCmd_Unk0143
- .word ScrCmd_Unk0144
- .word ScrCmd_Unk0145
- .word ScrCmd_Unk0146
- .word ScrCmd_NormalMart
- .word ScrCmd_SpecialMart
- .word ScrCmd_GoodsMart
- .word ScrCmd_SealsMart
- .word ScrCmd_Unk014B
- .word ScrCmd_Unk014C
- .word ScrCmd_GetPlayerGender
- .word ScrCmd_HealParty
- .word ScrCmd_Unk014F
- .word ScrCmd_Unk0150
- .word ScrCmd_Unk0151
- .word ScrCmd_Unk0152
- .word ScrCmd_Unk0153
- .word ScrCmd_Unk0154
- .word ScrCmd_Unk0155
- .word ScrCmd_Unk0156
- .word ScrCmd_HasSinnohDex
- .word ScrCmd_GiveSinnohDex
- .word ScrCmd_HasRunningShoes
- .word ScrCmd_GiveRunningShoes
- .word ScrCmd_HasBadge
- .word ScrCmd_GiveBadge
- .word ScrCmd_GetTotalEarnedBadges
- .word ScrCmd_GiveBag
- .word ScrCmd_HasBag
- .word ScrCmd_Unk0160
- .word ScrCmd_Unk0161
- .word ScrCmd_Unk0162
- .word ScrCmd_Unk0163
- .word ScrCmd_Unk0164
- .word ScrCmd_Unk0165
- .word ScrCmd_CheckGameCompleted
- .word ScrCmd_SetGameCompleted
- .word ScrCmd_Unk0168
- .word ScrCmd_Unk0169
- .word ScrCmd_Unk016A
- .word ScrCmd_Unk016B
- .word ScrCmd_Unk016C
- .word ScrCmd_GetDaycarePokemonNames
- .word ScrCmd_GetDaycareStatus
- .word ScrCmd_Unk016F
- .word ScrCmd_Unk0170
- .word ScrCmd_Unk0171
- .word ScrCmd_Unk0172
- .word ScrCmd_Unk0173
- .word ScrCmd_Unk0174
- .word ScrCmd_Unk0175
- .word ScrCmd_Unk0176
- .word ScrCmd_Unk0177
- .word ScrCmd_Unk0178
- .word ScrCmd_Unk0179
- .word ScrCmd_Unk017A
- .word ScrCmd_GetBerryName
- .word ScrCmd_GetNatureName
- .word ScrCmd_GetBerryTreeGrowth
- .word ScrCmd_GetBerryTreeType
- .word ScrCmd_GetBerryTreeMulch
- .word ScrCmd_GetBerryTreeWater
- .word ScrCmd_GetBerryTreeAmount
- .word ScrCmd_SetBerryTreeMulch
- .word ScrCmd_SetBerryTreeType
- .word ScrCmd_Unk0184
- .word ScrCmd_TakeBerryTreeBerries
- .word ScrCmd_Unk0186
- .word ScrCmd_Unk0187
- .word ScrCmd_Unk0188
- .word ScrCmd_Unk0189
- .word ScrCmd_Unk018A
- .word ScrCmd_Unk018B
- .word ScrCmd_Unk018C
- .word ScrCmd_ShowSaveClock
- .word ScrCmd_HideSaveClock
- .word ScrCmd_Unk018F
- .word ScrCmd_WaitButtonABTime
- .word ScrCmd_Unk0191
- .word ScrCmd_Unk0192
- .word ScrCmd_Unk0193
- .word ScrCmd_Unk0194
- .word ScrCmd_Unk0195
- .word ScrCmd_Unk0196
- .word ScrCmd_Unk0197
- .word ScrCmd_GetPartySpecies
- .word ScrCmd_CheckPartyMonOTID
- .word ScrCmd_Unk019A
- .word ScrCmd_Unk019B
- .word ScrCmd_Unk019C
- .word ScrCmd_Unk019D
- .word ScrCmd_Unk019E
- .word ScrCmd_Unk019F
- .word ScrCmd_Unk01A0
- .word ScrCmd_Unk01A1
- .word ScrCmd_Unk01A2
- .word ScrCmd_TakeMoneyAddress
- .word ScrCmd_Unk01A4
- .word ScrCmd_Unk01A5
- .word ScrCmd_Unk01A6
- .word ScrCmd_Unk01A7
- .word ScrCmd_DeleteDaycareEgg
- .word ScrCmd_GiveDaycareEgg
- .word ScrCmd_Unk01AA
- .word ScrCmd_HasEnoughMoneyAddress
- .word ScrCmd_Unk01AC
- .word ScrCmd_Unk01AD
- .word ScrCmd_GetDaycareLevel
- .word ScrCmd_Unk01AF
- .word ScrCmd_Unk01B0
- .word ScrCmd_Unk01B1
- .word ScrCmd_Unk01B2
- .word ScrCmd_Unk01B3
- .word ScrCmd_Unk01B4
- .word ScrCmd_Unk01B5
- .word ScrCmd_Unk01B6
- .word ScrCmd_Unk01B7
- .word ScrCmd_Unk01B8
- .word ScrCmd_GetPartyMonFriendship
- .word ScrCmd_Unk01BA
- .word ScrCmd_Unk01BB
- .word ScrCmd_Unk01BC
- .word ScrCmd_Unk01BD
- .word ScrCmd_Unk01BE
- .word ScrCmd_Unk01BF
- .word ScrCmd_Unk01C0
- .word ScrCmd_Unk01C1
- .word ScrCmd_Unk01C2
- .word ScrCmd_Unk01C3
- .word ScrCmd_Unk01C4
- .word ScrCmd_Unk01C5
- .word ScrCmd_Unk01C6
- .word ScrCmd_Unk01C7
- .word ScrCmd_Unk01C8
- .word ScrCmd_Unk01C9
- .word ScrCmd_Unk01CA
- .word ScrCmd_GetPokemonMoveName
- .word ScrCmd_Unk01CC
- .word ScrCmd_Unk01CD
- .word ScrCmd_Unk01CE
- .word ScrCmd_GetSetStrength
- .word ScrCmd_GetSetFlash
- .word ScrCmd_GetSetDefog
- .word ScrCmd_Unk01D2
- .word ScrCmd_Unk01D3
- .word ScrCmd_Unk01D4
- .word ScrCmd_Unk01D5
- .word ScrCmd_Unk01D6
- .word ScrCmd_Unk01D7
- .word ScrCmd_Unk01D8
- .word ScrCmd_Unk01D9
- .word ScrCmd_Unk01DA
- .word ScrCmd_Unk01DB
- .word ScrCmd_Unk01DC
- .word ScrCmd_Unk01DD
- .word ScrCmd_Unk01DE
- .word ScrCmd_Unk01DF
- .word ScrCmd_Unk01E0
- .word ScrCmd_Unk01E1
- .word ScrCmd_Unk01E2
- .word ScrCmd_Unk01E3
- .word ScrCmd_Unk01E4
- .word ScrCmd_Unk01E5
- .word ScrCmd_Unk01E6
- .word ScrCmd_Unk01E7
- .word ScrCmd_Unk01E8
- .word ScrCmd_Unk01E9
- .word ScrCmd_Unk01EA
- .word ScrCmd_Unk01EB
- .word ScrCmd_Unk01EC
- .word ScrCmd_Unk01ED
- .word ScrCmd_Unk01EE
- .word ScrCmd_Unk01EF
- .word ScrCmd_Unk01F0
- .word ScrCmd_CountFossils
- .word ScrCmd_Unk01F2
- .word ScrCmd_Unk01F3
- .word ScrCmd_GetFossilPokemon
- .word ScrCmd_GetFossilMinimumAmount
- .word ScrCmd_CountPartyMonsAtOrBelowLevel
- .word ScrCmd_SurvivePsn
- .word ScrCmd_Unk01F8
- .word ScrCmd_DebugWatch
- .word ScrCmd_MessageFrom
- .word ScrCmd_MessageFrom2
- .word ScrCmd_Unk01FC
- .word ScrCmd_Unk01FD
- .word ScrCmd_Unk01FE
- .word ScrCmd_Unk01FF
- .word ScrCmd_Unk0200
- .word ScrCmd_Unk0201
- .word ScrCmd_Unk0202
- .word ScrCmd_Unk0203
- .word ScrCmd_Unk0204
- .word ScrCmd_Unk0205
- .word ScrCmd_Unk0206
- .word ScrCmd_Unk0207
- .word ScrCmd_Unk0208
- .word ScrCmd_Unk0209
- .word ScrCmd_Unk020A
- .word ScrCmd_Unk020B
- .word ScrCmd_Unk020C
- .word ScrCmd_Unk020D
- .word ScrCmd_Unk020E
- .word ScrCmd_Unk020F
- .word ScrCmd_Unk0210
- .word ScrCmd_Unk0211
- .word ScrCmd_GetPartyMonNature
- .word ScrCmd_FindPartyMonWithNature
- .word ScrCmd_Unk0214
- .word ScrCmd_Unk0215
- .word ScrCmd_Unk0216
- .word ScrCmd_Unk0217
- .word ScrCmd_Unk0218
- .word ScrCmd_Unk0219
- .word ScrCmd_Unk021A
- .word ScrCmd_Unk021B
- .word ScrCmd_Unk021C
- .word ScrCmd_Unk021D
- .word ScrCmd_Unk021E
- .word ScrCmd_Unk021F
- .word ScrCmd_Unk0220
- .word ScrCmd_Unk0221
- .word ScrCmd_Unk0222
- .word ScrCmd_Unk0223
- .word ScrCmd_Unk0224
- .word ScrCmd_Unk0225
- .word ScrCmd_Unk0226
- .word ScrCmd_Unk0227
- .word ScrCmd_Unk0228
- .word ScrCmd_Unk0229
- .word ScrCmd_Unk022A
- .word ScrCmd_Unk022B
- .word ScrCmd_Unk022C
- .word ScrCmd_Unk022D
- .word ScrCmd_Unk022E
- .word ScrCmd_Unk022F
- .word ScrCmd_Unk0230
- .word ScrCmd_Unk0231
- .word ScrCmd_GetRibbonName
- .word ScrCmd_Unk0233
- .word ScrCmd_Unk0234
- .word ScrCmd_Unk0235
- .word ScrCmd_Unk0236
- .word ScrCmd_Unk0237
- .word ScrCmd_Unk0238
- .word ScrCmd_Unk0239
- .word ScrCmd_Unk023A
- .word ScrCmd_Unk023B
- .word ScrCmd_Unk023C
- .word ScrCmd_Unk023D
- .word ScrCmd_Unk023E
- .word ScrCmd_Unk023F
- .word ScrCmd_Unk0240
- .word ScrCmd_Unk0241
- .word ScrCmd_Unk0242
- .word ScrCmd_Unk0243
- .word ScrCmd_Unk0244
- .word ScrCmd_Unk0245
- .word ScrCmd_GameVersion
- .word ScrCmd_Unk0247
- .word ScrCmd_Unk0248
- .word ScrCmd_GiveWallpaper
- .word ScrCmd_Unk024A
- .word ScrCmd_Unk024B
- .word ScrCmd_Unk024C
- .word ScrCmd_Unk024D
- .word ScrCmd_Unk024E
- .word ScrCmd_Unk024F
- .word ScrCmd_Unk0250
- .word ScrCmd_Unk0251
- .word ScrCmd_PCFreeSpace
- .word ScrCmd_Unk0253
- .word ScrCmd_Unk0254
- .word ScrCmd_Unk0255
- .word ScrCmd_Unk0256
- .word ScrCmd_AccessoriesShop
- .word ScrCmd_Unk0258
- .word ScrCmd_Unk0259
- .word ScrCmd_Unk025A
- .word ScrCmd_Unk025B
- .word ScrCmd_Unk025C
- .word ScrCmd_Unk025D
- .word ScrCmd_Unk025E
- .word ScrCmd_Unk025F
- .word ScrCmd_Unk0260
- .word ScrCmd_GetFashionName
- .word ScrCmd_Unk0262
- .word ScrCmd_Unk0263
- .word ScrCmd_Unk0264
- .word ScrCmd_Unk0265
- .word ScrCmd_Unk0266
- .word ScrCmd_Unk0267
- .word ScrCmd_Unk0268
- .word ScrCmd_Unk0269
- .word ScrCmd_Unk026A
- .word ScrCmd_Unk026B
- .word ScrCmd_Unk026C
- .word ScrCmd_MessageUnown
- .word ScrCmd_Unk026E
- .word ScrCmd_Unk026F
- .word ScrCmd_Unk0270
- .word ScrCmd_Unk0271
- .word ScrCmd_GetWhiteRockInscription
- .word ScrCmd_Unk0273
- .word ScrCmd_HasEnoughCoinsImmediate
- .word ScrCmd_Unk0275
- .word ScrCmd_CanGiveCoins
- .word ScrCmd_Unk0277
- .word ScrCmd_GetPartyMonLevel
- .word ScrCmd_Unk0279
- .word ScrCmd_Unk027A
- .word ScrCmd_Unk027B
- .word ScrCmd_Unk027C
- .word ScrCmd_Unk027D
- .word ScrCmd_Unk027E
- .word ScrCmd_Unk027F
- .word ScrCmd_Unk0280
- .word ScrCmd_Unk0281
- .word ScrCmd_Unk0282
- .word ScrCmd_SetVolume
- .word ScrCmd_Unk0284
- .word ScrCmd_Unk0285
- .word ScrCmd_Unk0286
- .word ScrCmd_Unk0287
- .word ScrCmd_Unk0288
- .word ScrCmd_Unk0289
- .word ScrCmd_Unk028A
- .word ScrCmd_Unk028B
- .word ScrCmd_Unk028C
- .word ScrCmd_Unk028D
- .word ScrCmd_Unk028E
- .word ScrCmd_Unk028F
- .word ScrCmd_Unk0290
- .word ScrCmd_Unk0291
- .word ScrCmd_Unk0292
- .word ScrCmd_Unk0293
- .word ScrCmd_Unk0294
- .word ScrCmd_Unk0295
- .word ScrCmd_Unk0296
- .word ScrCmd_Unk0297
- .word ScrCmd_Unk0298
- .word ScrCmd_Unk0299
- .word ScrCmd_Unk029A
- .word ScrCmd_Unk029B
- .word ScrCmd_Unk029C
- .word ScrCmd_Unk029D
- .word ScrCmd_Unk029E
- .word ScrCmd_Unk029F
- .word ScrCmd_Unk02A0
- .word ScrCmd_Unk02A1
- .word ScrCmd_Unk02A2
- .word ScrCmd_Unk02A3
- .word ScrCmd_Unk02A4
- .word ScrCmd_Unk02A5
- .word ScrCmd_GetPrizeItemIdAndCost
- .word ScrCmd_Unk02A7
- .word ScrCmd_TakeCoinsAddress
- .word ScrCmd_HasEnoughCoinsAddress
- .word ScrCmd_Unk02AA
- .word ScrCmd_Unk02AB
- .word ScrCmd_Unk02AC
- .word ScrCmd_Unk02AD
- .word ScrCmd_Unk02AE
- .word ScrCmd_Unk02AF
- .word ScrCmd_Unk02B0
- .word ScrCmd_Unk02B1
- .word ScrCmd_Unk02B2
- .word ScrCmd_GetSealName
- .word ScrCmd_Unk02B4
- .word ScrCmd_Unk02B5
- .word ScrCmd_Unk02B6
- .word ScrCmd_Unk02B7
- .word ScrCmd_Unk02B8
- .word ScrCmd_Unk02B9
- .word ScrCmd_Unk02BA
- .word ScrCmd_Unk02BB
- .word ScrCmd_Unk02BC
- .word ScrCmd_Unk02BD
- .word ScrCmd_Unk02BE
- .word ScrCmd_Unk02BF
- .word ScrCmd_Unk02C0
- .word ScrCmd_Unk02C1
- .word ScrCmd_Unk02C2
- .word ScrCmd_Unk02C3
- .word ScrCmd_GetItemNameWithIndefArticle
- .word ScrCmd_GetItemNamePlural
- .word ScrCmd_GetDecorationNameWithArticle
- .word ScrCmd_GetUndergroundTrapNameWithArticle
- .word ScrCmd_GetUndergroundItemNameWithArticle
- .word ScrCmd_Unk02C9
- .word ScrCmd_Unk02CA
- .word ScrCmd_GetFashionNameWithArticle
- .word ScrCmd_Unk02CC
- .word ScrCmd_GetSealNamePlural
- .word ScrCmd_CapitalizeFirstChar
- .word ScrCmd_Unk02CF
- .word ScrCmd_Unk02D0
+ .word ScrCmd_Nop
+ .word ScrCmd_Dummy
+ .word ScrCmd_End
+ .word ScrCmd_Wait
+ .word ScrCmd_LoadByte
+ .word ScrCmd_LoadWord
+ .word ScrCmd_LoadByteFromAddr
+ .word ScrCmd_WriteByteToAddr
+ .word ScrCmd_SetPtrByte
+ .word ScrCmd_CopyLocal
+ .word ScrCmd_CopyByte
+ .word ScrCmd_CompareLocalToLocal
+ .word ScrCmd_CompareLocalToValue
+ .word ScrCmd_CompareLocalToAddr
+ .word ScrCmd_CompareAddrToLocal
+ .word ScrCmd_CompareAddrToValue
+ .word ScrCmd_CompareAddrToAddr
+ .word ScrCmd_CompareVarToValue
+ .word ScrCmd_CompareVarToVar
+ .word ScrCmd_RunScript
+ .word ScrCmd_RunScriptWait
+ .word ScrCmd_RestartCurrentScript
+ .word ScrCmd_GoTo
+ .word ScrCmd_ObjectGoTo
+ .word ScrCmd_BgGoTo
+ .word ScrCmd_DirectionGoTo
+ .word ScrCmd_Call
+ .word ScrCmd_Return
+ .word ScrCmd_GoToIf
+ .word ScrCmd_CallIf
+ .word ScrCmd_SetFlag
+ .word ScrCmd_ClearFlag
+ .word ScrCmd_CheckFlag
+ .word ScrCmd_CheckFlagVar
+ .word ScrCmd_SetFlagVar
+ .word ScrCmd_SetTrainerFlag
+ .word ScrCmd_ClearTrainerFlag
+ .word ScrCmd_CheckTrainerFlag
+ .word ScrCmd_AddVar
+ .word ScrCmd_SubVar
+ .word ScrCmd_SetVar
+ .word ScrCmd_CopyVar
+ .word ScrCmd_SetOrCopyVar
+ .word ScrCmd_Message
+ .word ScrCmd_Unk002C
+ .word ScrCmd_Unk002D
+ .word ScrCmd_Unk002E
+ .word ScrCmd_Unk002F
+ .word ScrCmd_WaitButtonAB
+ .word ScrCmd_WaitButton
+ .word ScrCmd_WaitButtonABPad
+ .word ScrCmd_Unk0033
+ .word ScrCmd_CloseMessageBox
+ .word ScrCmd_Unk0035
+ .word ScrCmd_CreateMessageBox
+ .word ScrCmd_Unk0037
+ .word ScrCmd_Unk0038
+ .word ScrCmd_Unk0039
+ .word ScrCmd_Unk003A
+ .word ScrCmd_Unk003B
+ .word ScrCmd_Menu
+ .word ScrCmd_ScrollBg
+ .word ScrCmd_YesNoMenu
+ .word ScrCmd_Unk003F
+ .word ScrCmd_Unk0040
+ .word ScrCmd_Unk0041
+ .word ScrCmd_Unk0042
+ .word ScrCmd_Unk0043
+ .word ScrCmd_Unk0044
+ .word ScrCmd_Unk0045
+ .word ScrCmd_Unk0046
+ .word ScrCmd_Unk0047
+ .word ScrCmd_Unk0048
+ .word ScrCmd_PlayFanfare
+ .word ScrCmd_StopFanfare
+ .word ScrCmd_PlayFanfareWait
+ .word ScrCmd_PlayCry
+ .word ScrCmd_PlayCryWait
+ .word ScrCmd_PlaySound
+ .word ScrCmd_PlaySoundWait
+ .word ScrCmd_PlayBgm
+ .word ScrCmd_StopBgm
+ .word ScrCmd_PlayDefaultBgm
+ .word ScrCmd_Unk0053
+ .word ScrCmd_FadeOutBgm
+ .word ScrCmd_FadeInBgm
+ .word ScrCmd_Unk0056
+ .word ScrCmd_Unk0057
+ .word ScrCmd_Unk0058
+ .word ScrCmd_CheckChatotCry
+ .word ScrCmd_StartChatotRecord
+ .word ScrCmd_StopChatotRecord
+ .word ScrCmd_SaveChatotCry
+ .word ScrCmd_Unk005D
+ .word ScrCmd_Unk005E
+ .word ScrCmd_Unk005F
+ .word ScrCmd_Unk0060
+ .word ScrCmd_Unk0061
+ .word ScrCmd_Unk0062
+ .word ScrCmd_Unk0063
+ .word ScrCmd_Unk0064
+ .word ScrCmd_Unk0065
+ .word ScrCmd_Unk0066
+ .word ScrCmd_Unk0067
+ .word ScrCmd_Unk0068
+ .word ScrCmd_Unk0069
+ .word ScrCmd_Unk006A
+ .word ScrCmd_Unk006B
+ .word ScrCmd_Unk006C
+ .word ScrCmd_Unk006D
+ .word ScrCmd_Unk006E
+ .word ScrCmd_GiveMoney
+ .word ScrCmd_TakeMoneyImmediate
+ .word ScrCmd_HasEnoughMoneyImmediate
+ .word ScrCmd_ShowMoneyBox
+ .word ScrCmd_HideMoneyBox
+ .word ScrCmd_UpdateMoneyBox
+ .word ScrCmd_ShowCoinBox
+ .word ScrCmd_HideCoinBox
+ .word ScrCmd_UpdateCoinBox
+ .word ScrCmd_GetCoins
+ .word ScrCmd_GiveCoins
+ .word ScrCmd_TakeCoinsImmediate
+ .word ScrCmd_GiveItem
+ .word ScrCmd_TakeItem
+ .word ScrCmd_HasSpaceForItem
+ .word ScrCmd_HasItem
+ .word ScrCmd_ItemIdIsTMOrHM
+ .word ScrCmd_GetItemPocketId
+ .word ScrCmd_Unk0081
+ .word ScrCmd_Unk0082
+ .word ScrCmd_GiveSecretBaseDecoration
+ .word ScrCmd_TakeSecretBaseDecoration
+ .word ScrCmd_HasSpaceForDecoration
+ .word ScrCmd_GetDecorationCount
+ .word ScrCmd_GiveUndergroundTrap
+ .word ScrCmd_TakeUndergroundTrap
+ .word ScrCmd_HasSpaceForTrap
+ .word ScrCmd_GetTrapCount
+ .word ScrCmd_GiveTreasure
+ .word ScrCmd_TakeTreasure
+ .word ScrCmd_HasSpaceForTreasure
+ .word ScrCmd_GetTreasureCount
+ .word ScrCmd_GiveUndergroundSphere
+ .word ScrCmd_TakeUndergroundSphere
+ .word ScrCmd_HasSpaceForSphere
+ .word ScrCmd_GetSphereCount
+ .word ScrCmd_Unk0093
+ .word ScrCmd_Unk0094
+ .word ScrCmd_Unk0095
+ .word ScrCmd_GiveMon
+ .word ScrCmd_GiveEgg
+ .word ScrCmd_SetPartyMonMove
+ .word ScrCmd_PartyMonHasMove
+ .word ScrCmd_FindPartyMonWithMove
+ .word ScrCmd_Unk009B
+ .word ScrCmd_Unk009C
+ .word ScrCmd_Unk009D
+ .word ScrCmd_Unk009E
+ .word ScrCmd_Unk009F
+ .word ScrCmd_Unk00A0
+ .word ScrCmd_Unk00A1
+ .word ScrCmd_Unk00A2
+ .word ScrCmd_Unk00A3
+ .word ScrCmd_Unk00A4
+ .word ScrCmd_Unk00A5
+ .word ScrCmd_Unk00A6
+ .word ScrCmd_Unk00A7
+ .word ScrCmd_Unk00A8
+ .word ScrCmd_Unk00A9
+ .word ScrCmd_Unk00AA
+ .word ScrCmd_MonStoragePC
+ .word ScrCmd_Unk00AC
+ .word ScrCmd_Unk00AD
+ .word ScrCmd_Unk00AE
+ .word ScrCmd_Unk00AF
+ .word ScrCmd_HallOfFame
+ .word ScrCmd_Unk00B1
+ .word ScrCmd_Unk00B2
+ .word ScrCmd_Unk00B3
+ .word ScrCmd_Unk00B4
+ .word ScrCmd_Unk00B5
+ .word ScrCmd_Unk00B6
+ .word ScrCmd_Unk00B7
+ .word ScrCmd_Unk00B8
+ .word ScrCmd_Unk00B9
+ .word ScrCmd_Unk00BA
+ .word ScrCmd_Unk00BB
+ .word ScrCmd_Unk00BC
+ .word ScrCmd_Unk00BD
+ .word ScrCmd_Unk00BE
+ .word ScrCmd_Unk00BF
+ .word ScrCmd_Unk00C0
+ .word ScrCmd_Unk00C1
+ .word ScrCmd_Unk00C2
+ .word ScrCmd_Unk00C3
+ .word ScrCmd_Unk00C4
+ .word ScrCmd_Unk00C5
+ .word ScrCmd_Unk00C6
+ .word ScrCmd_Unk00C7
+ .word ScrCmd_Unk00C8
+ .word ScrCmd_Unk00C9
+ .word ScrCmd_Unk00CA
+ .word ScrCmd_Unk00CB
+ .word ScrCmd_Unk00CC
+ .word ScrCmd_GetPlayerName
+ .word ScrCmd_GetRivalName
+ .word ScrCmd_GetFriendName
+ .word ScrCmd_GetPokemonName
+ .word ScrCmd_GetItemName
+ .word ScrCmd_GetPocketName
+ .word ScrCmd_GetTMHMMoveName
+ .word ScrCmd_GetMoveName
+ .word ScrCmd_Unk00D5
+ .word ScrCmd_GetPokemonNickname
+ .word ScrCmd_GetPoketchAppName
+ .word ScrCmd_GetTrainerClassName
+ .word ScrCmd_Unk00D9
+ .word ScrCmd_Unk00DA
+ .word ScrCmd_GetPlayerStarterName
+ .word ScrCmd_GetRivalStarterName
+ .word ScrCmd_GetCounterpartStarterName
+ .word ScrCmd_Unk00DE
+ .word ScrCmd_GetDecorationName
+ .word ScrCmd_GetUndergroundTrapName
+ .word ScrCmd_GetUndergroundItemName
+ .word ScrCmd_GetMapName
+ .word ScrCmd_Unk00E3
+ .word ScrCmd_Unk00E4
+ .word ScrCmd_Unk00E5
+ .word ScrCmd_Unk00E6
+ .word ScrCmd_Unk00E7
+ .word ScrCmd_Unk00E8
+ .word ScrCmd_Unk00E9
+ .word ScrCmd_Unk00EA
+ .word ScrCmd_Unk00EB
+ .word ScrCmd_Unk00EC
+ .word ScrCmd_Unk00ED
+ .word ScrCmd_Unk00EE
+ .word ScrCmd_Unk00EF
+ .word ScrCmd_Unk00F0
+ .word ScrCmd_Unk00F1
+ .word ScrCmd_Unk00F2
+ .word ScrCmd_Unk00F3
+ .word ScrCmd_Unk00F4
+ .word ScrCmd_Unk00F5
+ .word ScrCmd_Unk00F6
+ .word ScrCmd_Unk00F7
+ .word ScrCmd_Unk00F8
+ .word ScrCmd_Unk00F9
+ .word ScrCmd_Unk00FA
+ .word ScrCmd_Unk00FB
+ .word ScrCmd_Unk00FC
+ .word ScrCmd_Unk00FD
+ .word ScrCmd_Unk00FE
+ .word ScrCmd_Unk00FF
+ .word ScrCmd_Unk0100
+ .word ScrCmd_Unk0101
+ .word ScrCmd_Unk0102
+ .word ScrCmd_Unk0103
+ .word ScrCmd_Unk0104
+ .word ScrCmd_Unk0105
+ .word ScrCmd_Unk0106
+ .word ScrCmd_Unk0107
+ .word ScrCmd_Unk0108
+ .word ScrCmd_Unk0109
+ .word ScrCmd_Unk010A
+ .word ScrCmd_Unk010B
+ .word ScrCmd_Unk010C
+ .word ScrCmd_Unk010D
+ .word ScrCmd_Unk010E
+ .word ScrCmd_Unk010F
+ .word ScrCmd_Unk0110
+ .word ScrCmd_Unk0111
+ .word ScrCmd_Unk0112
+ .word ScrCmd_Unk0113
+ .word ScrCmd_Unk0114
+ .word ScrCmd_Unk0115
+ .word ScrCmd_Unk0116
+ .word ScrCmd_Unk0117
+ .word ScrCmd_Unk0118
+ .word ScrCmd_Unk0119
+ .word ScrCmd_Unk011A
+ .word ScrCmd_Unk011B
+ .word ScrCmd_Unk011C
+ .word ScrCmd_Unk011D
+ .word ScrCmd_Unk011E
+ .word ScrCmd_Unk011F
+ .word ScrCmd_Unk0120
+ .word ScrCmd_Unk0121
+ .word ScrCmd_Unk0122
+ .word ScrCmd_Unk0123
+ .word ScrCmd_Unk0124
+ .word ScrCmd_Unk0125
+ .word ScrCmd_Unk0126
+ .word ScrCmd_Unk0127
+ .word ScrCmd_Unk0128
+ .word ScrCmd_Unk0129
+ .word ScrCmd_Unk012A
+ .word ScrCmd_Unk012B
+ .word ScrCmd_Unk012C
+ .word ScrCmd_Unk012D
+ .word ScrCmd_Unk012E
+ .word ScrCmd_Unk012F
+ .word ScrCmd_Unk0130
+ .word ScrCmd_Unk0131
+ .word ScrCmd_Unk0132
+ .word ScrCmd_Unk0133
+ .word ScrCmd_Unk0134
+ .word ScrCmd_Unk0135
+ .word ScrCmd_Unk0136
+ .word ScrCmd_Unk0137
+ .word ScrCmd_Unk0138
+ .word ScrCmd_Unk0139
+ .word ScrCmd_Unk013A
+ .word ScrCmd_Unk013B
+ .word ScrCmd_Unk013C
+ .word ScrCmd_Unk013D
+ .word ScrCmd_Unk013E
+ .word ScrCmd_Unk013F
+ .word ScrCmd_Unk0140
+ .word ScrCmd_Unk0141
+ .word ScrCmd_Unk0142
+ .word ScrCmd_Unk0143
+ .word ScrCmd_Unk0144
+ .word ScrCmd_Unk0145
+ .word ScrCmd_Unk0146
+ .word ScrCmd_NormalMart
+ .word ScrCmd_SpecialMart
+ .word ScrCmd_GoodsMart
+ .word ScrCmd_SealsMart
+ .word ScrCmd_Unk014B
+ .word ScrCmd_Unk014C
+ .word ScrCmd_GetPlayerGender
+ .word ScrCmd_HealParty
+ .word ScrCmd_Unk014F
+ .word ScrCmd_Unk0150
+ .word ScrCmd_Unk0151
+ .word ScrCmd_Unk0152
+ .word ScrCmd_Unk0153
+ .word ScrCmd_Unk0154
+ .word ScrCmd_Unk0155
+ .word ScrCmd_Unk0156
+ .word ScrCmd_HasSinnohDex
+ .word ScrCmd_GiveSinnohDex
+ .word ScrCmd_HasRunningShoes
+ .word ScrCmd_GiveRunningShoes
+ .word ScrCmd_HasBadge
+ .word ScrCmd_GiveBadge
+ .word ScrCmd_GetTotalEarnedBadges
+ .word ScrCmd_GiveBag
+ .word ScrCmd_HasBag
+ .word ScrCmd_Unk0160
+ .word ScrCmd_Unk0161
+ .word ScrCmd_Unk0162
+ .word ScrCmd_Unk0163
+ .word ScrCmd_Unk0164
+ .word ScrCmd_Unk0165
+ .word ScrCmd_CheckGameCompleted
+ .word ScrCmd_SetGameCompleted
+ .word ScrCmd_Unk0168
+ .word ScrCmd_Unk0169
+ .word ScrCmd_Unk016A
+ .word ScrCmd_Unk016B
+ .word ScrCmd_Unk016C
+ .word ScrCmd_GetDaycarePokemonNames
+ .word ScrCmd_GetDaycareStatus
+ .word ScrCmd_Unk016F
+ .word ScrCmd_Unk0170
+ .word ScrCmd_Unk0171
+ .word ScrCmd_Unk0172
+ .word ScrCmd_Unk0173
+ .word ScrCmd_Unk0174
+ .word ScrCmd_Unk0175
+ .word ScrCmd_Unk0176
+ .word ScrCmd_Unk0177
+ .word ScrCmd_Unk0178
+ .word ScrCmd_Unk0179
+ .word ScrCmd_Unk017A
+ .word ScrCmd_GetBerryName
+ .word ScrCmd_GetNatureName
+ .word ScrCmd_GetBerryTreeGrowth
+ .word ScrCmd_GetBerryTreeType
+ .word ScrCmd_GetBerryTreeMulch
+ .word ScrCmd_GetBerryTreeWater
+ .word ScrCmd_GetBerryTreeAmount
+ .word ScrCmd_SetBerryTreeMulch
+ .word ScrCmd_SetBerryTreeType
+ .word ScrCmd_Unk0184
+ .word ScrCmd_TakeBerryTreeBerries
+ .word ScrCmd_Unk0186
+ .word ScrCmd_Unk0187
+ .word ScrCmd_Unk0188
+ .word ScrCmd_Unk0189
+ .word ScrCmd_Unk018A
+ .word ScrCmd_Unk018B
+ .word ScrCmd_Unk018C
+ .word ScrCmd_ShowSaveClock
+ .word ScrCmd_HideSaveClock
+ .word ScrCmd_Unk018F
+ .word ScrCmd_WaitButtonABTime
+ .word ScrCmd_Unk0191
+ .word ScrCmd_Unk0192
+ .word ScrCmd_Unk0193
+ .word ScrCmd_Unk0194
+ .word ScrCmd_Unk0195
+ .word ScrCmd_Unk0196
+ .word ScrCmd_Unk0197
+ .word ScrCmd_GetPartySpecies
+ .word ScrCmd_CheckPartyMonOTID
+ .word ScrCmd_Unk019A
+ .word ScrCmd_Unk019B
+ .word ScrCmd_Unk019C
+ .word ScrCmd_Unk019D
+ .word ScrCmd_Unk019E
+ .word ScrCmd_Unk019F
+ .word ScrCmd_Unk01A0
+ .word ScrCmd_Unk01A1
+ .word ScrCmd_Unk01A2
+ .word ScrCmd_TakeMoneyAddress
+ .word ScrCmd_Unk01A4
+ .word ScrCmd_Unk01A5
+ .word ScrCmd_Unk01A6
+ .word ScrCmd_Unk01A7
+ .word ScrCmd_DeleteDaycareEgg
+ .word ScrCmd_GiveDaycareEgg
+ .word ScrCmd_Unk01AA
+ .word ScrCmd_HasEnoughMoneyAddress
+ .word ScrCmd_Unk01AC
+ .word ScrCmd_Unk01AD
+ .word ScrCmd_GetDaycareLevel
+ .word ScrCmd_Unk01AF
+ .word ScrCmd_Unk01B0
+ .word ScrCmd_Unk01B1
+ .word ScrCmd_Unk01B2
+ .word ScrCmd_Unk01B3
+ .word ScrCmd_Unk01B4
+ .word ScrCmd_Unk01B5
+ .word ScrCmd_Unk01B6
+ .word ScrCmd_Unk01B7
+ .word ScrCmd_Unk01B8
+ .word ScrCmd_GetPartyMonFriendship
+ .word ScrCmd_Unk01BA
+ .word ScrCmd_Unk01BB
+ .word ScrCmd_Unk01BC
+ .word ScrCmd_Unk01BD
+ .word ScrCmd_Unk01BE
+ .word ScrCmd_Unk01BF
+ .word ScrCmd_Unk01C0
+ .word ScrCmd_Unk01C1
+ .word ScrCmd_Unk01C2
+ .word ScrCmd_Unk01C3
+ .word ScrCmd_Unk01C4
+ .word ScrCmd_Unk01C5
+ .word ScrCmd_Unk01C6
+ .word ScrCmd_Unk01C7
+ .word ScrCmd_Unk01C8
+ .word ScrCmd_Unk01C9
+ .word ScrCmd_Unk01CA
+ .word ScrCmd_GetPokemonMoveName
+ .word ScrCmd_Unk01CC
+ .word ScrCmd_Unk01CD
+ .word ScrCmd_Unk01CE
+ .word ScrCmd_GetSetStrength
+ .word ScrCmd_GetSetFlash
+ .word ScrCmd_GetSetDefog
+ .word ScrCmd_Unk01D2
+ .word ScrCmd_Unk01D3
+ .word ScrCmd_Unk01D4
+ .word ScrCmd_Unk01D5
+ .word ScrCmd_Unk01D6
+ .word ScrCmd_Unk01D7
+ .word ScrCmd_Unk01D8
+ .word ScrCmd_Unk01D9
+ .word ScrCmd_Unk01DA
+ .word ScrCmd_Unk01DB
+ .word ScrCmd_Unk01DC
+ .word ScrCmd_Unk01DD
+ .word ScrCmd_Unk01DE
+ .word ScrCmd_Unk01DF
+ .word ScrCmd_Unk01E0
+ .word ScrCmd_Unk01E1
+ .word ScrCmd_Unk01E2
+ .word ScrCmd_Unk01E3
+ .word ScrCmd_Unk01E4
+ .word ScrCmd_Unk01E5
+ .word ScrCmd_Unk01E6
+ .word ScrCmd_Unk01E7
+ .word ScrCmd_Unk01E8
+ .word ScrCmd_Unk01E9
+ .word ScrCmd_Unk01EA
+ .word ScrCmd_Unk01EB
+ .word ScrCmd_Unk01EC
+ .word ScrCmd_Unk01ED
+ .word ScrCmd_Unk01EE
+ .word ScrCmd_Unk01EF
+ .word ScrCmd_Unk01F0
+ .word ScrCmd_CountFossils
+ .word ScrCmd_Unk01F2
+ .word ScrCmd_Unk01F3
+ .word ScrCmd_GetFossilPokemon
+ .word ScrCmd_GetFossilMinimumAmount
+ .word ScrCmd_CountPartyMonsAtOrBelowLevel
+ .word ScrCmd_SurvivePsn
+ .word ScrCmd_Unk01F8
+ .word ScrCmd_DebugWatch
+ .word ScrCmd_MessageFrom
+ .word ScrCmd_MessageFrom2
+ .word ScrCmd_Unk01FC
+ .word ScrCmd_Unk01FD
+ .word ScrCmd_Unk01FE
+ .word ScrCmd_Unk01FF
+ .word ScrCmd_Unk0200
+ .word ScrCmd_Unk0201
+ .word ScrCmd_Unk0202
+ .word ScrCmd_Unk0203
+ .word ScrCmd_Unk0204
+ .word ScrCmd_Unk0205
+ .word ScrCmd_Unk0206
+ .word ScrCmd_Unk0207
+ .word ScrCmd_Unk0208
+ .word ScrCmd_Unk0209
+ .word ScrCmd_Unk020A
+ .word ScrCmd_Unk020B
+ .word ScrCmd_Unk020C
+ .word ScrCmd_Unk020D
+ .word ScrCmd_Unk020E
+ .word ScrCmd_Unk020F
+ .word ScrCmd_Unk0210
+ .word ScrCmd_Unk0211
+ .word ScrCmd_GetPartyMonNature
+ .word ScrCmd_FindPartyMonWithNature
+ .word ScrCmd_Unk0214
+ .word ScrCmd_Unk0215
+ .word ScrCmd_Unk0216
+ .word ScrCmd_Unk0217
+ .word ScrCmd_Unk0218
+ .word ScrCmd_Unk0219
+ .word ScrCmd_Unk021A
+ .word ScrCmd_Unk021B
+ .word ScrCmd_Unk021C
+ .word ScrCmd_Unk021D
+ .word ScrCmd_Unk021E
+ .word ScrCmd_Unk021F
+ .word ScrCmd_Unk0220
+ .word ScrCmd_Unk0221
+ .word ScrCmd_Unk0222
+ .word ScrCmd_Unk0223
+ .word ScrCmd_Unk0224
+ .word ScrCmd_Unk0225
+ .word ScrCmd_Unk0226
+ .word ScrCmd_Unk0227
+ .word ScrCmd_Unk0228
+ .word ScrCmd_Unk0229
+ .word ScrCmd_Unk022A
+ .word ScrCmd_Unk022B
+ .word ScrCmd_Unk022C
+ .word ScrCmd_Unk022D
+ .word ScrCmd_Unk022E
+ .word ScrCmd_Unk022F
+ .word ScrCmd_Unk0230
+ .word ScrCmd_Unk0231
+ .word ScrCmd_GetRibbonName
+ .word ScrCmd_Unk0233
+ .word ScrCmd_Unk0234
+ .word ScrCmd_Unk0235
+ .word ScrCmd_Unk0236
+ .word ScrCmd_Unk0237
+ .word ScrCmd_Unk0238
+ .word ScrCmd_Unk0239
+ .word ScrCmd_Unk023A
+ .word ScrCmd_Unk023B
+ .word ScrCmd_Unk023C
+ .word ScrCmd_Unk023D
+ .word ScrCmd_Unk023E
+ .word ScrCmd_Unk023F
+ .word ScrCmd_Unk0240
+ .word ScrCmd_Unk0241
+ .word ScrCmd_Unk0242
+ .word ScrCmd_Unk0243
+ .word ScrCmd_Unk0244
+ .word ScrCmd_Unk0245
+ .word ScrCmd_GameVersion
+ .word ScrCmd_Unk0247
+ .word ScrCmd_Unk0248
+ .word ScrCmd_GiveWallpaper
+ .word ScrCmd_Unk024A
+ .word ScrCmd_Unk024B
+ .word ScrCmd_Unk024C
+ .word ScrCmd_Unk024D
+ .word ScrCmd_Unk024E
+ .word ScrCmd_Unk024F
+ .word ScrCmd_Unk0250
+ .word ScrCmd_Unk0251
+ .word ScrCmd_PCFreeSpace
+ .word ScrCmd_Unk0253
+ .word ScrCmd_Unk0254
+ .word ScrCmd_Unk0255
+ .word ScrCmd_Unk0256
+ .word ScrCmd_AccessoriesShop
+ .word ScrCmd_Unk0258
+ .word ScrCmd_Unk0259
+ .word ScrCmd_Unk025A
+ .word ScrCmd_Unk025B
+ .word ScrCmd_Unk025C
+ .word ScrCmd_Unk025D
+ .word ScrCmd_Unk025E
+ .word ScrCmd_Unk025F
+ .word ScrCmd_Unk0260
+ .word ScrCmd_GetFashionName
+ .word ScrCmd_Unk0262
+ .word ScrCmd_Unk0263
+ .word ScrCmd_Unk0264
+ .word ScrCmd_Unk0265
+ .word ScrCmd_Unk0266
+ .word ScrCmd_Unk0267
+ .word ScrCmd_Unk0268
+ .word ScrCmd_Unk0269
+ .word ScrCmd_Unk026A
+ .word ScrCmd_Unk026B
+ .word ScrCmd_Unk026C
+ .word ScrCmd_MessageUnown
+ .word ScrCmd_Unk026E
+ .word ScrCmd_Unk026F
+ .word ScrCmd_Unk0270
+ .word ScrCmd_Unk0271
+ .word ScrCmd_GetWhiteRockInscription
+ .word ScrCmd_Unk0273
+ .word ScrCmd_HasEnoughCoinsImmediate
+ .word ScrCmd_Unk0275
+ .word ScrCmd_CanGiveCoins
+ .word ScrCmd_Unk0277
+ .word ScrCmd_GetPartyMonLevel
+ .word ScrCmd_Unk0279
+ .word ScrCmd_Unk027A
+ .word ScrCmd_Unk027B
+ .word ScrCmd_Unk027C
+ .word ScrCmd_Unk027D
+ .word ScrCmd_Unk027E
+ .word ScrCmd_Unk027F
+ .word ScrCmd_Unk0280
+ .word ScrCmd_Unk0281
+ .word ScrCmd_Unk0282
+ .word ScrCmd_SetVolume
+ .word ScrCmd_Unk0284
+ .word ScrCmd_Unk0285
+ .word ScrCmd_Unk0286
+ .word ScrCmd_Unk0287
+ .word ScrCmd_Unk0288
+ .word ScrCmd_Unk0289
+ .word ScrCmd_Unk028A
+ .word ScrCmd_Unk028B
+ .word ScrCmd_Unk028C
+ .word ScrCmd_Unk028D
+ .word ScrCmd_Unk028E
+ .word ScrCmd_Unk028F
+ .word ScrCmd_Unk0290
+ .word ScrCmd_Unk0291
+ .word ScrCmd_Unk0292
+ .word ScrCmd_Unk0293
+ .word ScrCmd_Unk0294
+ .word ScrCmd_Unk0295
+ .word ScrCmd_Unk0296
+ .word ScrCmd_Unk0297
+ .word ScrCmd_Unk0298
+ .word ScrCmd_Unk0299
+ .word ScrCmd_Unk029A
+ .word ScrCmd_Unk029B
+ .word ScrCmd_Unk029C
+ .word ScrCmd_Unk029D
+ .word ScrCmd_Unk029E
+ .word ScrCmd_Unk029F
+ .word ScrCmd_Unk02A0
+ .word ScrCmd_Unk02A1
+ .word ScrCmd_Unk02A2
+ .word ScrCmd_Unk02A3
+ .word ScrCmd_Unk02A4
+ .word ScrCmd_Unk02A5
+ .word ScrCmd_GetPrizeItemIdAndCost
+ .word ScrCmd_Unk02A7
+ .word ScrCmd_TakeCoinsAddress
+ .word ScrCmd_HasEnoughCoinsAddress
+ .word ScrCmd_Unk02AA
+ .word ScrCmd_Unk02AB
+ .word ScrCmd_Unk02AC
+ .word ScrCmd_Unk02AD
+ .word ScrCmd_Unk02AE
+ .word ScrCmd_Unk02AF
+ .word ScrCmd_Unk02B0
+ .word ScrCmd_Unk02B1
+ .word ScrCmd_Unk02B2
+ .word ScrCmd_GetSealName
+ .word ScrCmd_Unk02B4
+ .word ScrCmd_Unk02B5
+ .word ScrCmd_Unk02B6
+ .word ScrCmd_Unk02B7
+ .word ScrCmd_Unk02B8
+ .word ScrCmd_Unk02B9
+ .word ScrCmd_Unk02BA
+ .word ScrCmd_Unk02BB
+ .word ScrCmd_Unk02BC
+ .word ScrCmd_Unk02BD
+ .word ScrCmd_Unk02BE
+ .word ScrCmd_Unk02BF
+ .word ScrCmd_Unk02C0
+ .word ScrCmd_Unk02C1
+ .word ScrCmd_Unk02C2
+ .word ScrCmd_Unk02C3
+ .word ScrCmd_GetItemNameWithIndefArticle
+ .word ScrCmd_GetItemNamePlural
+ .word ScrCmd_GetDecorationNameWithArticle
+ .word ScrCmd_GetUndergroundTrapNameWithArticle
+ .word ScrCmd_GetUndergroundItemNameWithArticle
+ .word ScrCmd_Unk02C9
+ .word ScrCmd_Unk02CA
+ .word ScrCmd_GetFashionNameWithArticle
+ .word ScrCmd_Unk02CC
+ .word ScrCmd_GetSealNamePlural
+ .word ScrCmd_CapitalizeFirstChar
+ .word ScrCmd_Unk02CF
+ .word ScrCmd_Unk02D0
.text
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index 88b5529e..43942b2f 100644
--- a/arm9/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s
index 4309494e..f3d45372 100644
--- a/arm9/asm/unk_0204653C.s
+++ b/arm9/asm/unk_0204653C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s
index 4a5b00a0..17c3a957 100644
--- a/arm9/asm/unk_02047500.s
+++ b/arm9/asm/unk_02047500.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index a06056dd..be2b4770 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s
index 780c4833..fcee180d 100644
--- a/arm9/asm/unk_02048120.s
+++ b/arm9/asm/unk_02048120.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s
index 929f1efa..47b2c109 100644
--- a/arm9/asm/unk_020484A8.s
+++ b/arm9/asm/unk_020484A8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -110,7 +110,7 @@ _02048556:
mov r1, #0x4
mov r0, #0x3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
add r0, r6, #0x0
add r1, r5, #0x0
bl FUN_02048764
@@ -240,7 +240,7 @@ _02048666:
add r0, r5, #0x0
bl FreeToHeap
mov r0, #0x4
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
add sp, #0xc
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index f926f722..48c9a801 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s
index f1f19746..4b9f5a98 100644
--- a/arm9/asm/unk_0204A368.s
+++ b/arm9/asm/unk_0204A368.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s
index 67863650..3e0580b3 100644
--- a/arm9/asm/unk_0204A498.s
+++ b/arm9/asm/unk_0204A498.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204AB0C.s b/arm9/asm/unk_0204AB0C.s
index bea4eefa..33dc6126 100644
--- a/arm9/asm/unk_0204AB0C.s
+++ b/arm9/asm/unk_0204AB0C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204ADE0.s b/arm9/asm/unk_0204ADE0.s
index 74cdb92a..f7eff3cc 100644
--- a/arm9/asm/unk_0204ADE0.s
+++ b/arm9/asm/unk_0204ADE0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s
index fb084cbc..e0a88f0f 100644
--- a/arm9/asm/unk_0204AF24.s
+++ b/arm9/asm/unk_0204AF24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s
index ff93214d..6a2f7c3f 100644
--- a/arm9/asm/unk_0204B34C.s
+++ b/arm9/asm/unk_0204B34C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s
index 2511f182..fbf817bd 100644
--- a/arm9/asm/unk_0204B9EC.s
+++ b/arm9/asm/unk_0204B9EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s
index 6efee84e..c7a18f3f 100644
--- a/arm9/asm/unk_0204C1B4.s
+++ b/arm9/asm/unk_0204C1B4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204CA80.s b/arm9/asm/unk_0204CA80.s
index d892697c..a9c794d3 100644
--- a/arm9/asm/unk_0204CA80.s
+++ b/arm9/asm/unk_0204CA80.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s
index a0dc5ce2..88d8bf23 100644
--- a/arm9/asm/unk_0204CB20.s
+++ b/arm9/asm/unk_0204CB20.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0204FBA8.s b/arm9/asm/unk_0204FBA8.s
index f1101a82..16e26d1a 100644
--- a/arm9/asm/unk_0204FBA8.s
+++ b/arm9/asm/unk_0204FBA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -154,7 +154,7 @@ FUN_0204FC5C: ; 0x0204FC5C
mov r0, #0x3
mov r1, #0x21
lsl r2, r2, #0xa
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, _0204FC9C ; =UNK_021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
@@ -2279,7 +2279,7 @@ _02050D66:
bl MOD18_0223E1A4
bl FUN_02031860
mov r0, #0x21
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02050D84 ; =UNK_021C5A6C
mov r1, #0x0
ldr r0, [r0, #0x0]
diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s
index fbe0aed9..b4b0d845 100644
--- a/arm9/asm/unk_02050E48.s
+++ b/arm9/asm/unk_02050E48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.extern gMain
diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s
index 8ff9a9a1..e7815d57 100644
--- a/arm9/asm/unk_020520AC.s
+++ b/arm9/asm/unk_020520AC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -137,7 +137,7 @@ _020520C0:
mov r0, #0x3
mov r1, #0x1f
lsl r2, r2, #0x6
- bl FUN_02016828
+ bl CreateHeapAtEnd
add r0, r4, #0x0
bl FUN_02052110
add r5, r0, #0x0
@@ -625,7 +625,7 @@ FUN_020524A0: ; 0x020524A0
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x1f
- bl FUN_020168D0
+ bl DestroyHeap
_020524B8:
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s
index 0c163fd8..6ecb7e68 100644
--- a/arm9/asm/unk_02052EE8.s
+++ b/arm9/asm/unk_02052EE8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F58D4
@@ -50,7 +50,7 @@ FUN_02052EE8: ; 0x02052EE8
ldr r0, [r0, #0x38]
str r0, [r4, #0x8]
mov r0, #0xb
- bl FUN_02016828
+ bl CreateHeapAtEnd
mov r0, #0x59
bl FUN_02053618
ldr r1, _02052F6C ; =0x000004DC
@@ -113,7 +113,7 @@ FUN_02052FA4: ; 0x02052FA4
ldr r0, [r4, r0]
bl FUN_0205362C
mov r0, #0x59
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r4, #0x0
bl FreeToHeap
pop {r4, pc}
diff --git a/arm9/asm/unk_0205363C.s b/arm9/asm/unk_0205363C.s
index aa73064c..18c93384 100644
--- a/arm9/asm/unk_0205363C.s
+++ b/arm9/asm/unk_0205363C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s
index 38f594ef..6c8bd92b 100644
--- a/arm9/asm/unk_02053750.s
+++ b/arm9/asm/unk_02053750.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
.section .rodata
@@ -974,7 +974,7 @@ _02053E24:
bl FUN_02009DAC
ldr r1, _02053E88 ; =UNK_02105F80
mov r0, #0x4
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [r5, #0x10]
add r4, r0, #0x0
str r1, [sp, #0x0]
@@ -1012,7 +1012,7 @@ FUN_02053E8C: ; 0x02053E8C
add r4, r0, #0x0
mov r0, #0x4
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
add r6, r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
diff --git a/arm9/asm/unk_0205478C.s b/arm9/asm/unk_0205478C.s
index 56ca7610..c0494512 100644
--- a/arm9/asm/unk_0205478C.s
+++ b/arm9/asm/unk_0205478C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02054C14.s b/arm9/asm/unk_02054C14.s
index c8085b1a..8f412090 100644
--- a/arm9/asm/unk_02054C14.s
+++ b/arm9/asm/unk_02054C14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/unk_02055068.s
index 61561cbe..c181031e 100644
--- a/arm9/asm/unk_02055068.s
+++ b/arm9/asm/unk_02055068.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s
index 0a5c6e31..539dc91b 100644
--- a/arm9/asm/unk_020557F4.s
+++ b/arm9/asm/unk_020557F4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s
index adfa2f07..7195736d 100644
--- a/arm9/asm/unk_02057380.s
+++ b/arm9/asm/unk_02057380.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F6364
diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s
index b021f2bd..105b2203 100644
--- a/arm9/asm/unk_02058EE8.s
+++ b/arm9/asm/unk_02058EE8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s
index 26971d97..6f0234b7 100644
--- a/arm9/asm/unk_02059F04.s
+++ b/arm9/asm/unk_02059F04.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F6754
.extern UNK_020F693C
diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s
index b780cf26..ddcbaf43 100644
--- a/arm9/asm/unk_0205AD98.s
+++ b/arm9/asm/unk_0205AD98.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02105F9C
.extern UNK_020F6C84
diff --git a/arm9/asm/unk_0205BEF8.s b/arm9/asm/unk_0205BEF8.s
index 3df9f7d7..c2fc5d08 100644
--- a/arm9/asm/unk_0205BEF8.s
+++ b/arm9/asm/unk_0205BEF8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205C334.s b/arm9/asm/unk_0205C334.s
index 22bba443..6327651c 100644
--- a/arm9/asm/unk_0205C334.s
+++ b/arm9/asm/unk_0205C334.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s
index b40cf1a7..e27777c1 100644
--- a/arm9/asm/unk_0205C598.s
+++ b/arm9/asm/unk_0205C598.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205CDB4.s b/arm9/asm/unk_0205CDB4.s
index 65a38f16..b1d5723f 100644
--- a/arm9/asm/unk_0205CDB4.s
+++ b/arm9/asm/unk_0205CDB4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index 6e6f1f85..5eaebfb2 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020F96DC
diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s
index 890feee8..5f01125f 100644
--- a/arm9/asm/unk_0205DD18.s
+++ b/arm9/asm/unk_0205DD18.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s
index e109c021..fa9f44fd 100644
--- a/arm9/asm/unk_0205E4EC.s
+++ b/arm9/asm/unk_0205E4EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205EB38.s b/arm9/asm/unk_0205EB38.s
index 6464bf32..77971791 100644
--- a/arm9/asm/unk_0205EB38.s
+++ b/arm9/asm/unk_0205EB38.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84.s
index a0c7d147..d247c1f8 100644
--- a/arm9/asm/unk_0205EC84.s
+++ b/arm9/asm/unk_0205EC84.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0205F314.s b/arm9/asm/unk_0205F314.s
index 548cd5a4..921bc5b2 100644
--- a/arm9/asm/unk_0205F314.s
+++ b/arm9/asm/unk_0205F314.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s
index 624176f9..60706108 100644
--- a/arm9/asm/unk_0205F7A0.s
+++ b/arm9/asm/unk_0205F7A0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02060344.s b/arm9/asm/unk_02060344.s
index 9dcfde2e..6c09f4a5 100644
--- a/arm9/asm/unk_02060344.s
+++ b/arm9/asm/unk_02060344.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s
index d4aa42f5..cb719642 100644
--- a/arm9/asm/unk_020603B0.s
+++ b/arm9/asm/unk_020603B0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020606B0.s b/arm9/asm/unk_020606B0.s
index 013e445c..5040613e 100644
--- a/arm9/asm/unk_020606B0.s
+++ b/arm9/asm/unk_020606B0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s
index 2e2c4e21..92be6430 100644
--- a/arm9/asm/unk_020607D4.s
+++ b/arm9/asm/unk_020607D4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s
index 918488c5..e3b93197 100644
--- a/arm9/asm/unk_02060CCC.s
+++ b/arm9/asm/unk_02060CCC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02105FBC
diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s
index fc235004..c84a9409 100644
--- a/arm9/asm/unk_020625EC.s
+++ b/arm9/asm/unk_020625EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -61,7 +61,7 @@ FUN_020625EC: ; 0x020625EC
mov r1, #0x50
lsl r2, r0, #0xd
ldr r6, [r5, #0xc]
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x2d
mov r0, #0x50
lsl r1, r1, #0x4
@@ -194,7 +194,7 @@ _020626FE:
lsl r2, r2, #0x4
bl MI_CpuFill8
add r0, r5, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xc
add sp, #0x8
pop {r3-r7, pc}
diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s
index 0696b4e4..b475c1e5 100644
--- a/arm9/asm/unk_0206367C.s
+++ b/arm9/asm/unk_0206367C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02063888.s b/arm9/asm/unk_02063888.s
index 19cd07cc..8bff30eb 100644
--- a/arm9/asm/unk_02063888.s
+++ b/arm9/asm/unk_02063888.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s
index b111b655..1b2bc0a5 100644
--- a/arm9/asm/unk_02063948.s
+++ b/arm9/asm/unk_02063948.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s
index 9215f816..4602fabf 100644
--- a/arm9/asm/unk_020643C0.s
+++ b/arm9/asm/unk_020643C0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s
index 7476df71..eddad586 100644
--- a/arm9/asm/unk_020647A4.s
+++ b/arm9/asm/unk_020647A4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02064CA8.s b/arm9/asm/unk_02064CA8.s
index c81aafec..31c9acf9 100644
--- a/arm9/asm/unk_02064CA8.s
+++ b/arm9/asm/unk_02064CA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02064E20.s b/arm9/asm/unk_02064E20.s
index 0665d211..19ada5a3 100644
--- a/arm9/asm/unk_02064E20.s
+++ b/arm9/asm/unk_02064E20.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02064E90.s b/arm9/asm/unk_02064E90.s
index ca5edb45..ac7baa5d 100644
--- a/arm9/asm/unk_02064E90.s
+++ b/arm9/asm/unk_02064E90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s
index df203337..a065df73 100644
--- a/arm9/asm/unk_020653EC.s
+++ b/arm9/asm/unk_020653EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020F96DC
@@ -43,7 +43,7 @@ FUN_020653EC: ; 0x020653EC
mov r0, #0x3
mov r1, #0x2b
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6e
mov r0, #0x2b
lsl r1, r1, #0x2
@@ -111,7 +111,7 @@ FUN_02065474: ; 0x02065474
add r0, r4, #0x0
bl FreeToHeap
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_02066840.s b/arm9/asm/unk_02066840.s
index d443fce9..598a4989 100644
--- a/arm9/asm/unk_02066840.s
+++ b/arm9/asm/unk_02066840.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gGameLanguage
.extern gGameVersion
diff --git a/arm9/asm/unk_0206BB5C.s b/arm9/asm/unk_0206BB5C.s
index afcace47..2e0ebe1b 100644
--- a/arm9/asm/unk_0206BB5C.s
+++ b/arm9/asm/unk_0206BB5C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s
index acf84738..b57de87c 100644
--- a/arm9/asm/unk_0206BF90.s
+++ b/arm9/asm/unk_0206BF90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 4ba1b745..9b642d7a 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020FA6E8
@@ -738,7 +738,7 @@ _0206CCCE:
mov r3, #0x4
bl FUN_02007E68
ldr r0, [r4, #0x5c]
- bl FUN_02016AF8
+ bl GF_ExpHeap_FndGetTotalFreeSize
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s
index 3203cc10..46895ddb 100644
--- a/arm9/asm/unk_0206DE24.s
+++ b/arm9/asm/unk_0206DE24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocPlttVram
.extern NNS_GfdDefaultFuncAllocTexVram
diff --git a/arm9/asm/unk_0206E0F0.s b/arm9/asm/unk_0206E0F0.s
index d00119f8..909b7381 100644
--- a/arm9/asm/unk_0206E0F0.s
+++ b/arm9/asm/unk_0206E0F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0206E2F0.s b/arm9/asm/unk_0206E2F0.s
index ab6068fc..d7460439 100644
--- a/arm9/asm/unk_0206E2F0.s
+++ b/arm9/asm/unk_0206E2F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0206F1F0.s b/arm9/asm/unk_0206F1F0.s
index cdb5db18..64da364f 100644
--- a/arm9/asm/unk_0206F1F0.s
+++ b/arm9/asm/unk_0206F1F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -203,7 +203,7 @@ _0206F34A:
ldr r2, _0206F388 ; =0x00040100
mov r0, #0x3
mov r1, #0x36
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_02088878
mov r0, #0x36
bl MOD07_02211E60
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index 17adb2d2..c4933942 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern gMain
@@ -143,12 +143,12 @@ FUN_0206F3FC: ; 0x0206F3FC
strh r1, [r3, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x2
mov r0, #0x3
mov r1, #0xc
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl FUN_0206FE74
add r4, r0, #0x0
@@ -1022,7 +1022,7 @@ _0206FB30:
ldr r0, [sp, #0x0]
bl OverlayManager_FreeData
mov r0, #0xc
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s
index a08d279d..79a7eb39 100644
--- a/arm9/asm/unk_02072548.s
+++ b/arm9/asm/unk_02072548.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s
index 8aac6df0..83751041 100644
--- a/arm9/asm/unk_02073710.s
+++ b/arm9/asm/unk_02073710.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s
index 9cac1662..5dff3066 100644
--- a/arm9/asm/unk_02073DA8.s
+++ b/arm9/asm/unk_02073DA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 9e2ab9b0..956538f3 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s
index 87e9cab0..f28e35ea 100644
--- a/arm9/asm/unk_020772F0.s
+++ b/arm9/asm/unk_020772F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -730,7 +730,7 @@ _020772FE:
mov r0, #0x3
mov r1, #0x12
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x5d
add r0, r6, #0x0
lsl r1, r1, #0x4
@@ -777,7 +777,7 @@ _020772FE:
str r0, [r4, r1]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_02077B24
mov r0, #0x16
lsl r0, r0, #0x4
@@ -1583,7 +1583,7 @@ _02077A0C:
add r1, r0, #0x0
bl Main_SetVBlankIntrCB
mov r0, #0x12
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02077A80 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_020799E8.s b/arm9/asm/unk_020799E8.s
index 9227ca82..308fcf1b 100644
--- a/arm9/asm/unk_020799E8.s
+++ b/arm9/asm/unk_020799E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 3134a96c..07974952 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -87,12 +87,12 @@ FUN_02079C7C: ; 0x02079C7C
strh r2, [r0, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x1
mov r0, #0x3
mov r1, #0x13
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _02079DAC ; =0x0000069C
add r0, r4, #0x0
mov r2, #0x13
@@ -339,7 +339,7 @@ FUN_02079ECC: ; 0x02079ECC
add r0, r4, #0x0
bl OverlayManager_FreeData
mov r0, #0x13
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_0207C328.s b/arm9/asm/unk_0207C328.s
index ba0e57e6..e4fac6e3 100644
--- a/arm9/asm/unk_0207C328.s
+++ b/arm9/asm/unk_0207C328.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 5a814a79..9bf3f266 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s
index e4e29259..2d585edb 100644
--- a/arm9/asm/unk_0207EF6C.s
+++ b/arm9/asm/unk_0207EF6C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0207F95C.s b/arm9/asm/unk_0207F95C.s
index cface8d1..b36fe9c1 100644
--- a/arm9/asm/unk_0207F95C.s
+++ b/arm9/asm/unk_0207F95C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.section .rodata
diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s
index e48ad6f9..e920ab0b 100644
--- a/arm9/asm/unk_0207FD00.s
+++ b/arm9/asm/unk_0207FD00.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 3e0d058c..b8693e4a 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -807,7 +807,7 @@ FUN_02081214: ; 0x02081214
mov r0, #0xb
mov r1, #0x14
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_020811D8
add r4, r0, #0x0
bl GetLCRNGSeed
@@ -1191,7 +1191,7 @@ _020814FE:
add r0, r7, #0x0
bl FUN_0208120C
mov r0, #0x14
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s
index a64d7ab7..4e216093 100644
--- a/arm9/asm/unk_020828BC.s
+++ b/arm9/asm/unk_020828BC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s
index 88308c6e..61d6b372 100644
--- a/arm9/asm/unk_020834D0.s
+++ b/arm9/asm/unk_020834D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
.global UNK_020FBED8
diff --git a/arm9/asm/unk_02083B84.s b/arm9/asm/unk_02083B84.s
index 9049ff02..00b03fbd 100644
--- a/arm9/asm/unk_02083B84.s
+++ b/arm9/asm/unk_02083B84.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02083D48.s b/arm9/asm/unk_02083D48.s
index 1974ae4b..5b629bc6 100644
--- a/arm9/asm/unk_02083D48.s
+++ b/arm9/asm/unk_02083D48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02084098.s b/arm9/asm/unk_02084098.s
index d05c8765..20023b86 100644
--- a/arm9/asm/unk_02084098.s
+++ b/arm9/asm/unk_02084098.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020842D0.s b/arm9/asm/unk_020842D0.s
index 9b2e2af0..2b8e01a0 100644
--- a/arm9/asm/unk_020842D0.s
+++ b/arm9/asm/unk_020842D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s
index 08f7d90c..4b4a6ec4 100644
--- a/arm9/asm/unk_02085338.s
+++ b/arm9/asm/unk_02085338.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s
index c19e1a5d..4c77e4ac 100644
--- a/arm9/asm/unk_020854E0.s
+++ b/arm9/asm/unk_020854E0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -418,7 +418,7 @@ FUN_020857F8: ; 0x020857F8
mov r0, #0x3
mov r1, #0x28
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x1c
mov r2, #0x28
@@ -629,6 +629,6 @@ FUN_020859A0: ; 0x020859A0
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index a2f90e0a..e235eb3e 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
@@ -184,7 +184,7 @@ FUN_020859C0: ; 0x020859C0
mov r0, #0x3
mov r1, #0x35
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x35
bl MOD62_02230F3C
bl MOD62_0222F7E0
@@ -570,7 +570,7 @@ FUN_02085C08: ; 0x02085C08
bl OverlayManager_FreeData
bl FUN_0201CD04
mov r0, #0x35
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02085D68 ; =SDK_OVERLAY_MODULE_08_ID
bl UnloadOverlayByID
mov r0, #0x1
diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s
index 3a4017d7..47bbe03c 100644
--- a/arm9/asm/unk_02086084.s
+++ b/arm9/asm/unk_02086084.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020FA5FC
@@ -23,7 +23,7 @@ FUN_02086084: ; 0x02086084
mov r0, #0x3
mov r1, #0x47
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x80
mov r2, #0x47
@@ -219,7 +219,7 @@ FUN_020861DC: ; 0x020861DC
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x47
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index 54ce0190..237ebc91 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocTexVram
.extern NNS_GfdDefaultFuncAllocPlttVram
diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s
index 5e0a8dfa..85a3ea7f 100644
--- a/arm9/asm/unk_02086FA8.s
+++ b/arm9/asm/unk_02086FA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02087A6C.s b/arm9/asm/unk_02087A6C.s
index 1ab7b908..fd87dfb0 100644
--- a/arm9/asm/unk_02087A6C.s
+++ b/arm9/asm/unk_02087A6C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s
index 65d4db3d..a0d8867a 100644
--- a/arm9/asm/unk_02087D00.s
+++ b/arm9/asm/unk_02087D00.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.extern UNK_020FA6E8
@@ -206,7 +206,7 @@ FUN_02087E40: ; 0x02087E40
mov r0, #0x3
mov r1, #0x2c
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x18
mov r2, #0x2c
@@ -294,7 +294,7 @@ FUN_02087EE8: ; 0x02087EE8
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02088320.s b/arm9/asm/unk_02088320.s
index aa080143..6439a5f7 100644
--- a/arm9/asm/unk_02088320.s
+++ b/arm9/asm/unk_02088320.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088814.s b/arm9/asm/unk_02088814.s
index 1e955a77..7f0efabb 100644
--- a/arm9/asm/unk_02088814.s
+++ b/arm9/asm/unk_02088814.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088858.s b/arm9/asm/unk_02088858.s
index 5f71517a..b471c877 100644
--- a/arm9/asm/unk_02088858.s
+++ b/arm9/asm/unk_02088858.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -89,14 +89,14 @@ FUN_020888DC: ; 0x020888DC
mov r0, #0x3
mov r1, #0x31
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl OverlayManager_GetField18
ldr r0, [r0, #0x8]
mov r1, #0x31
bl FUN_02088898
mov r0, #0x31
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
diff --git a/arm9/asm/unk_0208898C.s b/arm9/asm/unk_0208898C.s
index 6fef7584..0599aedb 100644
--- a/arm9/asm/unk_0208898C.s
+++ b/arm9/asm/unk_0208898C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
@@ -33,7 +33,7 @@ FUN_020889B0: ; 0x020889B0
mov r0, #0x3
mov r1, #0x37
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x24
mov r2, #0x37
@@ -145,7 +145,7 @@ FUN_02088A78: ; 0x02088A78
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r6, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r4-r6, pc}
.balign 4
diff --git a/arm9/asm/unk_02088AAC.s b/arm9/asm/unk_02088AAC.s
index 6f47b864..1d8fe8cc 100644
--- a/arm9/asm/unk_02088AAC.s
+++ b/arm9/asm/unk_02088AAC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088D1C.s b/arm9/asm/unk_02088D1C.s
index f82d0498..b5d502ee 100644
--- a/arm9/asm/unk_02088D1C.s
+++ b/arm9/asm/unk_02088D1C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088DD8.s b/arm9/asm/unk_02088DD8.s
index 1dda59b0..3df58ffe 100644
--- a/arm9/asm/unk_02088DD8.s
+++ b/arm9/asm/unk_02088DD8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02088F0C.s b/arm9/asm/unk_02088F0C.s
index aab23503..fa94ecfc 100644
--- a/arm9/asm/unk_02088F0C.s
+++ b/arm9/asm/unk_02088F0C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020893E0.s b/arm9/asm/unk_020893E0.s
index 566bab92..5772c051 100644
--- a/arm9/asm/unk_020893E0.s
+++ b/arm9/asm/unk_020893E0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s
index 3facd182..c29136ec 100644
--- a/arm9/asm/unk_02089498.s
+++ b/arm9/asm/unk_02089498.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -42,7 +42,7 @@ FUN_02089498: ; 0x02089498
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x38
mov r2, #0x58
@@ -119,7 +119,7 @@ _020894FC:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0x0
bl FUN_0208961C
add r0, r4, #0x0
@@ -197,7 +197,7 @@ FUN_020895F0: ; 0x020895F0
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s
index 9c06a4ab..4e0d2d7f 100644
--- a/arm9/asm/unk_02089960.s
+++ b/arm9/asm/unk_02089960.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -38,7 +38,7 @@ FUN_02089960: ; 0x02089960
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x3c
mov r2, #0x58
@@ -101,7 +101,7 @@ _020899B8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r6, #0x0
bl FUN_02089A6C
add r0, r6, #0x0
@@ -141,7 +141,7 @@ FUN_02089A40: ; 0x02089A40
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02089A64 ; =SDK_OVERLAY_MODULE_83_ID
ldr r1, _02089A68 ; =MOD83_0223A360
bl RegisterMainOverlay
diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s
index e7b88272..e78492e3 100644
--- a/arm9/asm/unk_02089D90.s
+++ b/arm9/asm/unk_02089D90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -57,7 +57,7 @@ FUN_02089D90: ; 0x02089D90
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02089EFC ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s
index b5c93a8a..1ffe57ab 100644
--- a/arm9/asm/unk_02089F24.s
+++ b/arm9/asm/unk_02089F24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020FF3E4
@@ -61,7 +61,7 @@ FUN_02089F24: ; 0x02089F24
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A090 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -230,7 +230,7 @@ _0208A0C8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A230 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_0208A258.s b/arm9/asm/unk_0208A258.s
index 21a8f91a..450155ad 100644
--- a/arm9/asm/unk_0208A258.s
+++ b/arm9/asm/unk_0208A258.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s
index bafa4c91..05a7d41f 100644
--- a/arm9/asm/unk_0208A338.s
+++ b/arm9/asm/unk_0208A338.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/global.inc b/arm9/global.inc
index 46268a8c..3972e4ae 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -1010,30 +1010,30 @@
.extern Main_SetVBlankIntrCB
.extern FUN_02015F1C
.extern FUN_02015F34
-.extern FUN_020161A4
-.extern FUN_020161F8
-.extern FUN_020162FC
-.extern FUN_02016324
-.extern FUN_020163BC
+.extern AllocAndReadFile
+.extern OpenAndReadWholeFile
+.extern ClearFileCache
+.extern OpenFileCached
+.extern InitKeypadAndTouchpad
.extern FUN_02016438
.extern FUN_02016444
.extern FUN_02016454
-.extern FUN_02016464
-.extern FUN_0201669C
-.extern FUN_020166A8
-.extern FUN_020166B8
-.extern FUN_020166C8
-.extern FUN_0201681C
-.extern FUN_02016828
-.extern FUN_020168D0
+.extern ReadKeypadAndTocuhpad
+.extern SetKeyRepeatTimers
+.extern SetSoftResetDisableMask
+.extern ClearSoftResetDisableMask
+.extern InitHeapSystem
+.extern CreateHeap
+.extern CreateHeapAtEnd
+.extern DestroyHeap
.extern AllocFromHeap
.extern AllocFromHeapAtEnd
.extern FreeToHeap
.extern FreeToHeapExplicit
-.extern FUN_02016AF8
-.extern FUN_02016B20
-.extern FUN_02016B44
-.extern FUN_02016B90
+.extern GF_ExpHeap_FndGetTotalFreeSize
+.extern GF_ExpHeap_FndInitAllocator
+.extern ReallocFromHeap
+.extern GF_heap_c_dummy_return_true
.extern FUN_02016B94
.extern FUN_02016BB8
.extern FUN_02016BBC
@@ -8225,11 +8225,11 @@
.extern UNK_021C93A0
.extern UNK_021C9520
.extern UNK_021C9EE0
-.extern UNK_021D74A8
+.extern errno
.extern Unk_0210683C
-.extern UNK_0210420C
-.extern UNK_0210428C
-.extern UNK_0210430C
+.extern __lower_mapC
+.extern __upper_mapC
+.extern __msl_digit
.extern Unk_02106840
.extern Unk_02106900
.extern Unk_02106A00
@@ -8455,7 +8455,7 @@
.extern strspn
.extern strstr
.extern strtold
-.extern strtold2
+.extern strtol
.extern strtoul
.extern swprintf
.extern sys_exit
@@ -8665,3 +8665,32 @@
.extern NNSi_SndArcLoadSeq
.extern NNSi_SndSeqArcGetSeqInfo
.extern NNSi_SndPlayerFreeSeqPlayer
+.extern OSi_ThreadInfo
+.extern __StringRead
+.extern __console_exit
+.extern __cs
+.extern __cs_id
+.extern __cs_ref
+.extern __double_huge
+.extern __files
+.extern __fill_mem
+.extern __float_huge
+.extern __float_nan
+.extern __flush_all
+.extern __flush_buffer
+.extern __fpclassifyf
+.extern __memrchr
+.extern __msl_digit
+.extern __msl_generic_count_bits64
+.extern __prep_buffer
+.extern __signbitf
+.extern __stdio_exit
+.extern __wctype_mapC
+.extern copysign
+.extern errno
+.extern fabs
+.extern fwide
+.extern memchr
+.extern wcschr
+.extern wcscpy
+.extern wmemchr
diff --git a/arm9/lib/include/NNS_FND_allocator.h b/arm9/lib/include/NNS_FND_allocator.h
new file mode 100644
index 00000000..48df282a
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_allocator.h
@@ -0,0 +1,34 @@
+#ifndef GUARD_NNS_FND_ALLOCATOR_H
+#define GUARD_NNS_FND_ALLOCATOR_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSFndAllocator NNSFndAllocator;
+
+typedef void* (*NNSFndFuncAllocatorAlloc)(
+ NNSFndAllocator* pAllocator,
+ u32 size);
+
+typedef void (*NNSFndFuncAllocatorFree)(
+ NNSFndAllocator* pAllocator,
+ void* memBlock);
+
+typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc;
+
+struct NNSFndAllocatorFunc
+{
+ NNSFndFuncAllocatorAlloc pfAlloc;
+ NNSFndFuncAllocatorFree pfFree;
+};
+
+struct NNSFndAllocator
+{
+ NNSFndAllocatorFunc const * pFunc;
+ void* pHeap;
+ u32 heapParam1;
+ u32 heapParam2;
+};
+
+void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment);
+
+#endif //GUARD_NNS_FND_ALLOCATOR_H
diff --git a/arm9/lib/include/NNS_FND_expheap.h b/arm9/lib/include/NNS_FND_expheap.h
new file mode 100644
index 00000000..c0008f28
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_expheap.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_NNS_FND_EXPHEAP_H
+#define GUARD_NNS_FND_EXPHEAP_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead;
+
+struct NNSiFndExpHeapMBlockHead
+{
+ u16 signature; // Signature
+ u16 attribute; // Attribute
+ // [8:groupID]
+ // [7:alignment]
+ // [1:temporary flag]
+
+ u32 blockSize; // Block size (data area only)
+
+ NNSiFndExpHeapMBlockHead* pMBHeadPrev; // Previous block
+ NNSiFndExpHeapMBlockHead* pMBHeadNext; // Next block
+};
+
+typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList;
+
+struct NNSiFndExpMBlockList
+{
+ NNSiFndExpHeapMBlockHead* head; // Pointer for memory block linked to header
+ NNSiFndExpHeapMBlockHead* tail; // Pointer to the memory block linked to the tail of the expanded heap
+};
+
+typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead;
+
+struct NNSiFndExpHeapHead
+{
+ NNSiFndExpMBlockList mbFreeList; // Free list
+ NNSiFndExpMBlockList mbUsedList; // Used list
+
+ u16 groupID; // Current group ID (lower 8 bits only)
+ u16 feature; // Attribute
+};
+
+NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u32 optFlag);
+void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment);
+void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap);
+void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock);
+u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap);
+u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock);
+void NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size);
+
+#define NNS_FndCreateExpHeap(startAddress, size) \
+ NNS_FndCreateExpHeapEx(startAddress, size, 0)
+#define NNS_FndAllocFromExpHeap(heap, size) \
+ NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT)
+
+
+#endif //GUARD_NNS_FND_EXPHEAP_H
diff --git a/arm9/lib/include/NNS_FND_heapcommon.h b/arm9/lib/include/NNS_FND_heapcommon.h
new file mode 100644
index 00000000..eb6f1bdb
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_heapcommon.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_NNS_FND_HEAPCOMMON_H
+#define GUARD_NNS_FND_HEAPCOMMON_H
+
+#include "NNS_FND_list.h"
+
+#define NNS_FND_HEAP_DEFAULT_ALIGNMENT 4
+
+typedef struct NNSiFndHeapHead NNSiFndHeapHead;
+
+struct NNSiFndHeapHead
+{
+ u32 signature;
+
+ NNSFndLink link;
+ NNSFndList childList;
+
+ void* heapStart; // Heap start address
+ void* heapEnd; // Heap end (+1) address
+
+ u32 attribute; // Attribute
+ // [8:Option flag]
+};
+
+typedef NNSiFndHeapHead* NNSFndHeapHandle; // Type to represent heap handle
+
+#endif //GUARD_NNS_FND_HEAPCOMMON_H
diff --git a/arm9/lib/include/NNS_FND_list.h b/arm9/lib/include/NNS_FND_list.h
new file mode 100644
index 00000000..5df01e5f
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_list.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_NNS_FND_LIST_H
+#define GUARD_NNS_FND_LIST_H
+
+typedef struct
+{
+ void* prevObject; // Pointer to the previous linked object.
+ void* nextObject; // Pointer to the next linked object.
+
+} NNSFndLink;
+
+typedef struct
+{
+ void* headObject; // Pointer for the object linked to the top of the list.
+ void* tailObject; // Pointer for the object linked to the end of the list.
+ u16 numObjects; // Number of objects linked in the list.
+ u16 offset; // Offset for NNSFndLink type structure member.
+
+} NNSFndList;
+
+#endif //GUARD_NNS_FND_LIST_H
diff --git a/arm9/lib/include/OS_irqHandler.h b/arm9/lib/include/OS_irqHandler.h
index f052016d..ea12a0ad 100644
--- a/arm9/lib/include/OS_irqHandler.h
+++ b/arm9/lib/include/OS_irqHandler.h
@@ -16,6 +16,6 @@ static inline OSIrqMask OS_GetIrqCheckFlag(void)
void OS_IrqHandler(void);
void OS_IrqHandler_ThreadSwitch(void);
-void OS_WaitIrq(BOOL param1, u32 param2);
+void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags);
#endif //POKEDIAMOND_OS_IRQHANDLER_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index a41f22ae..1ad79b93 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -52,6 +52,7 @@
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
#define OS_IE_V_BLANK (1UL << 0)
+#define OS_IE_H_BLANK (1UL << 1)
#define HW_CPU_CLOCK_ARM9 67027964
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index 11081942..acd23b39 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -27,15 +27,6 @@ void GXi_NopClearFifo128_(void *);
#include "GX_g3imm.h"
#include "GX_dma.h"
-void GX_Init();
-u32 GX_HBlankIntr(u32 enable);
-u32 GX_VBlankIntr(u32 enable);
-void GX_DispOff();
-void GX_DispOn();
-void GX_SetGraphicsMode(u32 mode1, u32 mode2, u32 mode3);
-void GXS_SetGraphicsMode(u32 mode);
-void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness);
-
typedef union
{
u32 raw;
@@ -181,4 +172,18 @@ typedef enum
}
GXOBJVRamModeChar;
+void GX_Init();
+u32 GX_HBlankIntr(u32 enable);
+u32 GX_VBlankIntr(u32 enable);
+void GX_DispOff();
+void GX_DispOn();
+void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d);
+void GXS_SetGraphicsMode(GXBGMode mode);
+void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness);
+
+static inline void GX_SetMasterBrightness(int brightness)
+{
+ GXx_SetMasterBrightness_(&reg_GX_MASTER_BRIGHT, brightness);
+}
+
#endif //GUARD_GX_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index 7a0155da..73ae7ccf 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -659,4 +659,42 @@
#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2
#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000
+// MASTER BRIGHT
+#define REG_GX_MASTER_BRIGHT_E_MOD_SHIFT 14
+#define REG_GX_MASTER_BRIGHT_E_MOD_SIZE 2
+#define REG_GX_MASTER_BRIGHT_E_MOD_MASK 0xc000
+
+#define REG_GX_MASTER_BRIGHT_E_VALUE_SHIFT 0
+#define REG_GX_MASTER_BRIGHT_E_VALUE_SIZE 5
+#define REG_GX_MASTER_BRIGHT_E_VALUE_MASK 0x001f
+
+// DISPSTAT
+#define REG_GX_DISPSTAT_VCOUNTER_SHIFT 7
+#define REG_GX_DISPSTAT_VCOUNTER_SIZE 9
+#define REG_GX_DISPSTAT_VCOUNTER_MASK 0xff80
+
+#define REG_GX_DISPSTAT_VQI_SHIFT 5
+#define REG_GX_DISPSTAT_VQI_SIZE 1
+#define REG_GX_DISPSTAT_VQI_MASK 0x0020
+
+#define REG_GX_DISPSTAT_HBI_SHIFT 4
+#define REG_GX_DISPSTAT_HBI_SIZE 1
+#define REG_GX_DISPSTAT_HBI_MASK 0x0010
+
+#define REG_GX_DISPSTAT_VBI_SHIFT 3
+#define REG_GX_DISPSTAT_VBI_SIZE 1
+#define REG_GX_DISPSTAT_VBI_MASK 0x0008
+
+#define REG_GX_DISPSTAT_LYC_SHIFT 2
+#define REG_GX_DISPSTAT_LYC_SIZE 1
+#define REG_GX_DISPSTAT_LYC_MASK 0x0004
+
+#define REG_GX_DISPSTAT_HBLK_SHIFT 1
+#define REG_GX_DISPSTAT_HBLK_SIZE 1
+#define REG_GX_DISPSTAT_HBLK_MASK 0x0002
+
+#define REG_GX_DISPSTAT_VBLK_SHIFT 0
+#define REG_GX_DISPSTAT_VBLK_SIZE 1
+#define REG_GX_DISPSTAT_VBLK_MASK 0x0001
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H
diff --git a/arm9/lib/include/tp.h b/arm9/lib/include/tp.h
index d2687545..dc762f10 100644
--- a/arm9/lib/include/tp.h
+++ b/arm9/lib/include/tp.h
@@ -1,6 +1,14 @@
#ifndef NITRO_TP_H_
#define NITRO_TP_H_
+#define TP_TOUCH_OFF 0 // Not being touched
+#define TP_TOUCH_ON 1 // Being touched
+
+#define TP_VALIDITY_VALID 0 // Valid
+#define TP_VALIDITY_INVALID_X 1 // Data with invalid X coordinate
+#define TP_VALIDITY_INVALID_Y 2 // Data with invalid Y coordinate
+#define TP_VALIDITY_INVALID_XY (TP_VALIDITY_INVALID_X | TP_VALIDITY_INVALID_Y) // Data with invalid X and Y coordinates
+
// Touch panel input structure
typedef struct
{
diff --git a/arm9/lib/src/GX.c b/arm9/lib/src/GX.c
index 69ad8718..688e41b7 100644
--- a/arm9/lib/src/GX.c
+++ b/arm9/lib/src/GX.c
@@ -7,16 +7,18 @@ vu16 GXi_VRamLockId = 0;
static u16 sDispMode = 0;
static u16 sIsDispOn = TRUE;
+#define _powcnt_init_mask (REG_GX_POWCNT_E2DGB_MASK | REG_GX_POWCNT_E2DG_MASK | REG_GX_POWCNT_RE_MASK | REG_GX_POWCNT_GE_MASK)
+
ARM_FUNC void GX_Init(){
- reg_GX_POWCNT |= 0x8000;
- reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~0x20E) | 0x20E);
- reg_GX_POWCNT = (u16)(reg_GX_POWCNT | 0x1);
+ reg_GX_POWCNT |= REG_GX_POWCNT_DSEL_MASK;
+ reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~_powcnt_init_mask) | _powcnt_init_mask);
+ reg_GX_POWCNT = (u16)(reg_GX_POWCNT | REG_GX_POWCNT_LCD_MASK);
GX_InitGXState();
s32 temp;
while (GXi_VRamLockId == 0)
{
temp = OS_GetLockID();
- if (temp == -3)
+ if (temp == OS_LOCK_ID_ERROR)
{
OS_Terminate();
}
@@ -47,62 +49,62 @@ ARM_FUNC void GX_Init(){
}
ARM_FUNC u32 GX_HBlankIntr(u32 enable){
- u32 temp = (u32)(reg_GX_DISPSTAT & 0x10);
+ u32 temp = (u32)(reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBI_MASK);
if (enable)
{
- reg_GX_DISPSTAT |= 0x10;
+ reg_GX_DISPSTAT |= REG_GX_DISPSTAT_HBI_MASK;
}
else
{
- reg_GX_DISPSTAT &= ~0x10;
+ reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_HBI_MASK;
}
return temp;
}
ARM_FUNC u32 GX_VBlankIntr(u32 enable){
- u32 temp = (u32)(reg_GX_DISPSTAT & 0x8);
+ u32 temp = (u32)(reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBI_MASK);
if (enable)
{
- reg_GX_DISPSTAT |= 0x8;
+ reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VBI_MASK;
}
else
{
- reg_GX_DISPSTAT &= ~0x8;
+ reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VBI_MASK;
}
return temp;
}
ARM_FUNC void GX_DispOff(){
u32 temp = reg_GX_DISPCNT;
- sIsDispOn = 0x0;
- sDispMode = (u16)((temp & 0x30000) >> 0x10);
- reg_GX_DISPCNT = temp & ~0x30000;
+ sIsDispOn = FALSE;
+ sDispMode = (u16)((temp & REG_GX_DISPCNT_MODE_MASK) >> REG_GX_DISPCNT_MODE_SHIFT);
+ reg_GX_DISPCNT = temp & ~REG_GX_DISPCNT_MODE_MASK;
}
ARM_FUNC void GX_DispOn(){
- sIsDispOn = 0x1;
+ sIsDispOn = TRUE;
if (sDispMode)
{
- reg_GX_DISPCNT = (reg_GX_DISPCNT & ~0x30000) | (sDispMode << 0x10);
+ reg_GX_DISPCNT = (reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK) | (sDispMode << REG_GX_DISPCNT_MODE_SHIFT);
}
else
{
- reg_GX_DISPCNT = reg_GX_DISPCNT | 0x10000;
+ reg_GX_DISPCNT = reg_GX_DISPCNT | (GX_DISPMODE_GRAPHICS << REG_GX_DISPCNT_MODE_SHIFT);
}
}
-ARM_FUNC void GX_SetGraphicsMode(u32 mode1, u32 mode2, u32 mode3){
+ARM_FUNC void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d){
u32 temp2 = reg_GX_DISPCNT;
- sDispMode = (u16)mode1;
+ sDispMode = (u16)dispMode;
if (!sIsDispOn)
- mode1 = 0;
- reg_GX_DISPCNT = (mode2 | ((temp2 & 0xFFF0FFF0) | (mode1 << 0x10))) | (mode3 << 0x3);
+ dispMode = 0;
+ reg_GX_DISPCNT = ((bgMode << REG_GX_DISPCNT_BGMODE_SHIFT) | ((temp2 & ~(REG_GX_DISPCNT_BGMODE_MASK | REG_GX_DISPCNT_MODE_MASK | REG_GX_DISPCNT_BG02D3D_MASK | REG_GX_DISPCNT_VRAM_MASK)) | (dispMode << REG_GX_DISPCNT_MODE_SHIFT))) | (bg0_2d3d << REG_GX_DISPCNT_BG02D3D_SHIFT);
if (!sDispMode)
- sIsDispOn = 0x0;
+ sIsDispOn = FALSE;
}
-ARM_FUNC void GXS_SetGraphicsMode(u32 mode){
- reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & ~0x7) | mode;
+ARM_FUNC void GXS_SetGraphicsMode(GXBGMode mode){
+ reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_BGMODE_MASK) | mode;
}
ARM_FUNC void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness){
@@ -112,10 +114,10 @@ ARM_FUNC void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness){
}
else if (brightness > 0)
{
- *dst = (u16)(0x4000 | brightness);
+ *dst = (u16)((1 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | brightness);
}
else
{
- *dst = (u16)(0x8000 | -brightness);
+ *dst = (u16)((2 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | -brightness);
}
}
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 49201028..259f9f52 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -161,7 +161,7 @@ _021D8F40:
ldr r0, _021D91BC ; =UNK04_02210468
mov r2, #0
ldr r1, [r0]
- ldr r0, _021D91C4 ; =UNK_021D74A8
+ ldr r0, _021D91C4 ; =errno
str r2, [sp]
str r2, [r0]
add r0, r1, #0x1000
@@ -169,7 +169,7 @@ _021D8F40:
ldr r1, _021D91C8 ; =UNK04_0220BF3C
bl MOD04_021DA388
bl atol
- ldr r1, _021D91C4 ; =UNK_021D74A8
+ ldr r1, _021D91C4 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021D8F9C
@@ -220,7 +220,7 @@ _021D9014:
add r1, sp, #0
add r0, r2, r0
mov r2, #0xa
- bl strtold2
+ bl strtol
ldr r2, _021D91BC ; =UNK04_02210468
ldr r1, _021D91D4 ; =0x0000100C
ldr r5, [r2]
@@ -324,7 +324,7 @@ _021D91B0:
.align 2, 0
_021D91BC: .word UNK04_02210468
_021D91C0: .word UNK04_0220BF34
-_021D91C4: .word UNK_021D74A8
+_021D91C4: .word errno
_021D91C8: .word UNK04_0220BF3C
_021D91CC: .word 0x00004E85
_021D91D0: .word 0x000059D8
@@ -3164,7 +3164,7 @@ _021DB970:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DB9A0
@@ -3653,7 +3653,7 @@ _021DC080:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DC0BC
@@ -3705,7 +3705,7 @@ _021DC118:
_021DC14C:
add r0, sp, #0x64
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC17C
@@ -3873,7 +3873,7 @@ _021DC3B4:
strb r2, [r1, r0]
mov r0, r1
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC3F0
@@ -4067,7 +4067,7 @@ _021DC680: .word UNK04_0220C36C
_021DC684: .word OSi_ThreadInfo
_021DC688: .word 0x00001B34
_021DC68C: .word UNK04_0220C418
-_021DC690: .word UNK_021D74A8
+_021DC690: .word errno
_021DC694: .word 0x0000012E
_021DC698: .word UNK04_0221048C
_021DC69C: .word UNK04_0220BEB4
@@ -4408,7 +4408,7 @@ MOD04_021DCA84: ; 0x021DCA84
mov r1, r6
bl strcpy
mov r2, #0
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
add r0, sp, #0x28
strb r2, [sp, #0x23]
strb r2, [sp, #0x27]
@@ -4418,7 +4418,7 @@ MOD04_021DCA84: ; 0x021DCA84
strb r2, [sp, #0x35]
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp]
ldr r1, [r1]
cmp r1, #0x22
@@ -4445,12 +4445,12 @@ _021DCBC4:
ldr r0, [sp, #4]
cmp r0, #0xc
bhi _021DCCA8
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
mov r2, #0
add r0, sp, #0x21
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #8]
ldr r0, [r1]
cmp r0, #0x22
@@ -4459,7 +4459,7 @@ _021DCBC4:
add r0, sp, #0x2d
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x10]
ldr r0, [r1]
cmp r0, #0x22
@@ -4468,7 +4468,7 @@ _021DCBC4:
add r0, sp, #0x30
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x14]
ldr r0, [r1]
cmp r0, #0x22
@@ -4477,7 +4477,7 @@ _021DCBC4:
add r0, sp, #0x33
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x18]
ldr r0, [r1]
cmp r0, #0x22
@@ -4505,7 +4505,7 @@ _021DCCA8:
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021DCCB4: .word UNK04_0220C580
-_021DCCB8: .word UNK_021D74A8
+_021DCCB8: .word errno
_021DCCBC: .word UNK04_0220C550
_021DCCC0: .word UNK04_022104FC
_021DCCC4: .word UNK04_022104F8
@@ -4550,7 +4550,7 @@ _021DCD20:
ldmia sp!, {r4, pc}
_021DCD4C:
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4588,7 +4588,7 @@ _021DCDA0:
_021DCDD4:
add r0, sp, #0
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4659,7 +4659,7 @@ _021DCED4: .word UNK04_02210504
_021DCED8: .word 0xFFFF9DF3
_021DCEDC: .word UNK04_0220C5A0
_021DCEE0: .word UNK04_0220C5A8
-_021DCEE4: .word UNK_021D74A8
+_021DCEE4: .word errno
_021DCEE8: .word 0xFFFF9E58
_021DCEEC: .word UNK04_0220C5B4
_021DCEF0: .word 0xFFFFA240
@@ -27563,7 +27563,7 @@ MOD04_021F01C4: ; 0x021F01C4
mov r2, r0
cmp r3, #0
beq _021F01FC
- ldr r1, _021F0204 ; =UNK_0210420C
+ ldr r1, _021F0204 ; =__lower_mapC
_021F01D8:
cmp r3, #0
blt _021F01EC
@@ -27579,7 +27579,7 @@ _021F01FC:
mov r0, r2
bx lr
.align 2, 0
-_021F0204: .word UNK_0210420C
+_021F0204: .word __lower_mapC
arm_func_end MOD04_021F01C4
arm_func_start MOD04_021F0208
@@ -33471,7 +33471,7 @@ _021F5418:
blt _021F5434
cmp r1, #0x80
bge _021F5434
- ldr r0, _021F5844 ; =UNK_0210428C
+ ldr r0, _021F5844 ; =__upper_mapC
ldrb r1, [r0, r1]
_021F5434:
mov r0, r1, lsl #0x18
@@ -33758,7 +33758,7 @@ _021F5834: .word UNK04_0220E2B8
_021F5838: .word UNK04_0220E2C4
_021F583C: .word UNK04_0220E2D0
_021F5840: .word UNK04_0220E2E8
-_021F5844: .word UNK_0210428C
+_021F5844: .word __upper_mapC
_021F5848: .word UNK04_0220E2F8
_021F584C: .word UNK04_0220E2FC
_021F5850: .word UNK04_0220E300
@@ -45849,7 +45849,7 @@ _021FFDB8:
add r3, r4, #1
cmp r0, #0
beq _021FFE10
- ldr r1, _021FFEA8 ; =UNK_0210430C
+ ldr r1, _021FFEA8 ; =__msl_digit
mov r2, #0
_021FFDD0:
cmp r0, #0
@@ -45915,7 +45915,7 @@ _021FFE84:
.align 2, 0
_021FFEA0: .word UNK04_0220EFD8
_021FFEA4: .word UNK04_0220EFF8
-_021FFEA8: .word UNK_0210430C
+_021FFEA8: .word __msl_digit
_021FFEAC: .word 0x0000FFFF
arm_func_end MOD04_021FFD28
@@ -49986,7 +49986,7 @@ MOD04_022034F4: ; 0x022034F4
mov ip, #0
cmp lr, #0
beq _02203538
- ldr r3, _0220354C ; =UNK_0210420C
+ ldr r3, _0220354C ; =__lower_mapC
ldr r2, _02203550 ; =0x9CCF9319
_02203514:
cmp lr, #0
@@ -50006,7 +50006,7 @@ _02203538:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220354C: .word UNK_0210420C
+_0220354C: .word __lower_mapC
_02203550: .word 0x9CCF9319
arm_func_end MOD04_022034F4
@@ -50366,7 +50366,7 @@ _022039A8:
mov r1, #0
b _022039C0
_022039B0:
- ldr r1, _022039DC ; =UNK_0210430C
+ ldr r1, _022039DC ; =__msl_digit
mov r2, r2, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #8
@@ -50381,7 +50381,7 @@ _022039D0:
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022039D8: .word UNK04_0220F7E0
-_022039DC: .word UNK_0210430C
+_022039DC: .word __msl_digit
arm_func_end MOD04_0220394C
arm_func_start MOD04_022039E0
@@ -53297,7 +53297,7 @@ MOD04_02206124: ; 0x02206124
mov ip, #0
cmp lr, #0
beq _02206168
- ldr r3, _0220617C ; =UNK_0210420C
+ ldr r3, _0220617C ; =__lower_mapC
ldr r2, _02206180 ; =0x9CCF9319
_02206144:
cmp lr, #0
@@ -53317,7 +53317,7 @@ _02206168:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220617C: .word UNK_0210420C
+_0220617C: .word __lower_mapC
_02206180: .word 0x9CCF9319
arm_func_end MOD04_02206124
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 730bfc00..4ca1ac2e 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -69,7 +69,7 @@ _021D7564:
mov r0, #3
ldr r2, [r2, #4]
mov r1, #4
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #4]
cmp r0, #0
beq _021D757A
@@ -361,7 +361,7 @@ _021D7806:
mov r0, #0
str r0, [r4, #4]
mov r0, #4
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r4, #0x70]
ldr r0, [r0]
lsl r0, r0, #8
diff --git a/arm9/modules/05/asm/mod05_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s
index ec304548..419b92fd 100644
--- a/arm9/modules/05/asm/mod05_021D9320.s
+++ b/arm9/modules/05/asm/mod05_021D9320.s
@@ -53,7 +53,7 @@ _021D9374:
str r0, [sp, #0x20]
ldr r1, [r6]
add r0, r4, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [sp, #0x20]
str r0, [sp, #0x24]
add r2, r4, #0
@@ -161,7 +161,7 @@ _021D944A:
ldr r1, [sp, #0x10]
add r0, r4, #0
ldr r1, [r1, #0x18]
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r3, #0x4e
lsl r3, r3, #2
ldr r1, [r5, r3]
diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s
index ee169f98..4cd22924 100644
--- a/arm9/modules/05/asm/mod05_021D9A48.s
+++ b/arm9/modules/05/asm/mod05_021D9A48.s
@@ -199,7 +199,7 @@ _021D9B98:
mov r1, #4
add r0, r7, #0
add r2, r1, #0
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x6e
mov r1, #4
bl NARC_ctor
diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s
index eaee32f8..bba92897 100644
--- a/arm9/modules/05/asm/mod05_021DB44C.s
+++ b/arm9/modules/05/asm/mod05_021DB44C.s
@@ -255,7 +255,7 @@ MOD05_021DB61C: ; 0x021DB61C
str r1, [sp]
mov r0, #4
add r1, r2, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0
str r0, [sp, #0x14]
str r1, [sp, #8]
diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s
index f65de9d8..ae93e2a3 100644
--- a/arm9/modules/05/asm/mod05_021DBEF4.s
+++ b/arm9/modules/05/asm/mod05_021DBEF4.s
@@ -120,7 +120,7 @@ _021DBFA8:
add r7, #0x10
mov r0, #4
add r1, sp, #0xc
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r7, r5]
add r0, r6, #0
str r0, [sp, #8]
@@ -128,7 +128,7 @@ _021DBFA8:
str r0, [sp, #8]
ldr r0, [r7, r5]
mov r1, #4
- bl FUN_02016324
+ bl OpenFileCached
ldr r1, [sp, #8]
str r0, [r1, r5]
add r0, r1, #0
diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s
index 98146a9c..09f66fe5 100644
--- a/arm9/modules/05/asm/mod05_021E4AE4.s
+++ b/arm9/modules/05/asm/mod05_021E4AE4.s
@@ -1093,7 +1093,7 @@ MOD05_021E5294: ; 0x021E5294
add r1, r0, #0
add r0, r4, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
pop {r4, pc}
.section .rodata
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 006e8bb1..a67d2d02 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -13882,7 +13882,7 @@ MOD05_021EF4F8: ; 0x021EF4F8
MOD05_021EF514: ; 0x021EF514
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
- bl FUN_020162FC
+ bl ClearFileCache
bl NNS_GfdResetLnkTexVramState
bl NNS_GfdResetLnkPlttVramState
mov r4, #0
@@ -24929,7 +24929,7 @@ MOD05_021F4968: ; 0x021F4968
sub r1, r1, r0
bx r3
nop
-_021F4974: .word FUN_02016B44
+_021F4974: .word ReallocFromHeap
thumb_func_start MOD05_021F4978
MOD05_021F4978: ; 0x021F4978
@@ -27084,7 +27084,7 @@ MOD05_021F5990: ; 0x021F5990
str r0, [sp]
add r7, r1, #0
str r3, [sp, #4]
- bl FUN_0201681C
+ bl CreateHeap
cmp r0, #1
beq _021F59B2
bl GF_AssertFail
@@ -27142,7 +27142,7 @@ _021F5A0E:
add r0, r6, #0
bl FreeToHeap
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, r5, r6, pc}
.balign 4, 0
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 3b86cb19..6fbee88b 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -2285,7 +2285,7 @@ MOD06_0223A75C: ; 0x0223A75C
add r0, r4, r0
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -2964,7 +2964,7 @@ MOD06_0223AC78: ; 0x0223AC78
add r0, r4, r0
add r1, r5, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r2, #0x4f
lsl r2, r2, #2
add r0, r4, #0
@@ -4020,7 +4020,7 @@ MOD06_0223B458: ; 0x0223B458
add r0, #0xc4
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -4587,7 +4587,7 @@ MOD06_0223B828: ; 0x0223B828
add r0, #0xdc
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -5151,13 +5151,13 @@ _0223BCDA:
str r0, [sp, #0x10]
_0223BCDE:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCEC
bl GF_AssertFail
_0223BCEC:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCFA
bl GF_AssertFail
@@ -5864,13 +5864,13 @@ _0223C2DC:
str r0, [sp, #0x10]
_0223C2E4:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C2F2
bl GF_AssertFail
_0223C2F2:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C300
bl GF_AssertFail
@@ -20061,7 +20061,7 @@ MOD06_022434D0: ; 0x022434D0
mov r0, #3
mov r1, #0x3b
lsl r2, r2, #0xe
- bl FUN_02016828
+ bl CreateHeapAtEnd
ldr r1, _02243684 ; =0x000008CC
mov r0, #0x3b
bl AllocFromHeap
@@ -20275,7 +20275,7 @@ _022436A6:
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
_022436BE:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -43590,7 +43590,7 @@ MOD06_0224EA64: ; 0x0224EA64
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r1, #3
@@ -43704,7 +43704,7 @@ MOD06_0224EB30: ; 0x0224EB30
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43738,7 +43738,7 @@ MOD06_0224EB78: ; 0x0224EB78
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43878,7 +43878,7 @@ MOD06_0224EC5C: ; 0x0224EC5C
add r0, r0, r1
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r5, [sp, #8]
mov r1, #0x6e
add r4, sp, #0x10
@@ -44299,7 +44299,7 @@ MOD06_0224EF98: ; 0x0224EF98
mov r1, #4
add r0, r5, r0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r5, #0
mov r1, #0x8d
mov r2, #8
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 2a6bb196..65a74381 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -42,7 +42,7 @@ _0222D600:
mov r0, #3
mov r1, #5
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, [r5]
mov r0, #4
tst r0, r1
@@ -175,7 +175,7 @@ _0222D704:
b _0222D7EA
_0222D714:
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
@@ -187,7 +187,7 @@ _0222D720:
ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
bl UnloadOverlayByID
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3e
bl FUN_02031588
mov r0, #0xc
@@ -210,7 +210,7 @@ _0222D752:
mov r0, #3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #4]
ldr r1, [sp, #0x24]
bl GetPartyMonByIndex
@@ -266,7 +266,7 @@ _0222D7C2:
add r0, r5, #0
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index effb333a..8c91e781 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -40,7 +40,7 @@ MOD12_0222D5C0: ; 0x0222D5C0
mov r0, #3
mov r1, #0x15
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D868 ; =0x00001658
add r0, r5, #0
mov r2, #0x15
@@ -102,7 +102,7 @@ MOD12_0222D5C0: ; 0x0222D5C0
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x23
add r1, r4, #0
lsl r2, r2, #4
@@ -521,7 +521,7 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x15
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID
@@ -3175,7 +3175,7 @@ MOD12_0222EF04: ; 0x0222EF04
mov r0, #3
mov r1, #0x16
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222F168 ; =0x00000F68
add r0, r4, #0
mov r2, #0x16
@@ -3237,7 +3237,7 @@ MOD12_0222EF04: ; 0x0222EF04
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_0222F548
bl FUN_0201CC08
@@ -3686,7 +3686,7 @@ _0222F3AE:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x16
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID
@@ -5015,7 +5015,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r0, #3
mov r1, #0x17
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022300EC ; =0x00001BF4
add r0, r4, #0
mov r2, #0x17
@@ -5099,7 +5099,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r1, r5, #0
ldr r0, [r5]
add r1, #0x14
@@ -5530,7 +5530,7 @@ _02230296:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x17
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID
@@ -41102,7 +41102,7 @@ MOD12_02241210: ; 0x02241210
mov r0, #3
mov r1, #0x18
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x4a
add r0, r4, #0
lsl r1, r1, #6
@@ -41182,7 +41182,7 @@ MOD12_02241210: ; 0x02241210
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_02241864
bl FUN_0201CC08
@@ -41577,7 +41577,7 @@ _022415D4:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x18
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
mov r1, #5
mov r2, #2
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index bdfed5b1..d5f05188 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -11,12 +11,12 @@ StoragePC_Overlay_Init: ; 0x021D74E0
mov r0, #3
mov r1, #9
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xf
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x87
add r0, r5, #0
lsl r1, r1, #2
@@ -132,9 +132,9 @@ _021D75DE:
add r0, r4, #0
bl MOD14_021DB398
mov r0, #9
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -5546,7 +5546,7 @@ _021DA1FE:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x12
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -5592,7 +5592,7 @@ _021DA256:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x12
lsl r2, r2, #4
ldr r0, [r4, r2]
@@ -5658,7 +5658,7 @@ _021DA2F2:
ldr r0, [r5, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl MOD14_021D83E4
mov r1, #0x4b
@@ -5693,7 +5693,7 @@ _021DA334:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD14_021DC3F4
cmp r0, #1
@@ -5803,7 +5803,7 @@ _021DA41E:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -5889,7 +5889,7 @@ _021DA4F4:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x45
lsl r0, r0, #2
add r0, r4, r0
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index 97282c02..a1f0f2d1 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -23,12 +23,12 @@ _021D74F2:
mov r0, #3
mov r1, #0x22
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xa
mov r0, #3
mov r1, #0x23
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD15_021D7628
ldr r0, [r0, #0x14]
@@ -170,9 +170,9 @@ MOD15_021D7608: ; 0x021D7608
add r1, r4, #0
bl MOD15_021D7774
mov r0, #0x22
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x23
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index e9eedca1..9417b6bd 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -16,7 +16,7 @@ MOD16_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x25
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #4
mov r2, #0x25
@@ -168,7 +168,7 @@ _021D7630:
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x25
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 955741b3..7d11697e 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -2042,12 +2042,12 @@ MOD17_021D83E4: ; 0x021D83E4
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D84D8 ; =0x000006D8
add r0, r4, #0
mov r2, #0xd
@@ -2511,9 +2511,9 @@ _021D87F0:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
nop
@@ -2532,12 +2532,12 @@ MOD17_021D8818: ; 0x021D8818
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D897C ; =0x000006D8
add r0, r5, #0
mov r2, #0xd
@@ -3119,9 +3119,9 @@ _021D8D30:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
mov r0, #1
@@ -13780,12 +13780,12 @@ MOD17_021DDB58: ; 0x021DDB58
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x65
add r0, r5, #0
lsl r1, r1, #2
@@ -13990,9 +13990,9 @@ MOD17_021DDCF4: ; 0x021DDCF4
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 9b2fdf67..e3fbe038 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1747,7 +1747,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #3
mov r1, #0x1d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x1d
bl FUN_02016B94
add r4, r0, #0
@@ -1984,7 +1984,7 @@ _0223A5F8:
ldr r0, [r0]
str r1, [r0, #4]
mov r0, #0x1d
- bl FUN_020168D0
+ bl DestroyHeap
bl MOD18_0223D638
ldr r1, _0223A648 ; =0x02251380
ldr r1, [r1]
@@ -43226,7 +43226,7 @@ _0224E848: ; jump table
_0224E858:
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD18_0224E01C
ldr r3, _0224E940 ; =0x00000504
add r1, r6, #0
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
index 8f3a28ce..bb49a485 100644
--- a/arm9/modules/19/asm/module_19.s
+++ b/arm9/modules/19/asm/module_19.s
@@ -11,7 +11,7 @@ MOD19_02252440: ; 0x02252440
mov r0, #3
mov r1, #8
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0
bl GXS_SetGraphicsMode
mov r0, #0x80
@@ -91,7 +91,7 @@ MOD19_022524F4: ; 0x022524F4
mov r1, #4
bl FUN_020178A0
mov r0, #8
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3, pc}
thumb_func_end MOD19_022524F4
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index a77f95fc..e812d527 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -21,11 +21,11 @@ MOD20_02252448: ; 0x02252448
mov r1, #7
lsl r2, r0, #0xe
add r7, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #8
lsl r2, r0, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #7
mov r1, #0x60
bl AllocFromHeap
@@ -238,9 +238,9 @@ _022525C6:
add r0, r5, #0
bl FUN_0200CAB4
mov r0, #7
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #8
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3, r4, r5, pc}
.align 2, 0
_022525EC: .word MOD20_022544CC
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index cdf4b770..577a6ac9 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -621,7 +621,7 @@ MOD24_02254CA0: ; 0x02254CA0
add r4, r0, #0
beq _02254CFA
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CC0
bl GF_AssertFail
@@ -631,7 +631,7 @@ _02254CC0:
mov r1, #0x10
bl MOD20_022536F4
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CD8
bl GF_AssertFail
@@ -642,7 +642,7 @@ _02254CD8:
bl MOD20_02252D24
str r0, [r4, #0x50]
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CF4
bl GF_AssertFail
@@ -699,7 +699,7 @@ MOD24_02254D48: ; 0x02254D48
add r4, r0, #0
beq _02254D84
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254D5C
bl GF_AssertFail
@@ -783,7 +783,7 @@ MOD24_02254DDC: ; 0x02254DDC
sub sp, #0x14
mov r0, #8
add r4, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254DF0
bl GF_AssertFail
@@ -802,7 +802,7 @@ _02254DF0:
mov r3, #0
bl FUN_02016C18
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E1E
bl GF_AssertFail
@@ -835,7 +835,7 @@ _02254E1E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E68
bl GF_AssertFail
@@ -845,7 +845,7 @@ _02254E68:
ldr r0, [r5, #0x70]
bl CopyWindowToVram
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E82
bl GF_AssertFail
@@ -853,7 +853,7 @@ _02254E82:
add r0, r5, #0
bl MOD24_02255078
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E96
bl GF_AssertFail
@@ -877,7 +877,7 @@ _02254E96:
add r0, r4, #0
bl MOD24_02254DC8
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254ECC
bl GF_AssertFail
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
index 0149e180..0b141199 100644
--- a/arm9/modules/36/asm/module_36.s
+++ b/arm9/modules/36/asm/module_36.s
@@ -981,7 +981,7 @@ MOD36_02254F5C: ; 0x02254F5C
sub sp, #0x14
mov r0, #8
add r5, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F70
bl GF_AssertFail
@@ -1000,7 +1000,7 @@ _02254F70:
mov r3, #0
bl FUN_02016C18
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F9E
bl GF_AssertFail
@@ -1034,7 +1034,7 @@ _02254F9E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254FEA
bl GF_AssertFail
@@ -1061,7 +1061,7 @@ _02254FEA:
add r0, r5, #0
bl MOD36_02254F48
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02255028
bl GF_AssertFail
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
index 41f2706a..08da79f4 100644
--- a/arm9/modules/52/src/module_52.c
+++ b/arm9/modules/52/src/module_52.c
@@ -159,7 +159,7 @@ THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -179,7 +179,7 @@ THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
return 1;
@@ -189,7 +189,7 @@ THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -211,7 +211,7 @@ THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
return 1;
@@ -221,7 +221,7 @@ THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -252,7 +252,7 @@ THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
return 1;
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index d070f979..7049c5bb 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -37,7 +37,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7640 ; =0x0000940C
add r0, r6, #0
mov r2, #0x27
@@ -60,7 +60,7 @@ _021D74F6:
str r0, [r4, #0x10]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD53_021D78D0
ldr r0, [r4]
bl MOD53_021D78F0
@@ -417,7 +417,7 @@ _021D786E:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #2
bl FUN_02032B6C
mov r0, #1
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index b11b96cf..a0d5ce50 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -38,7 +38,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x33
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7638 ; =0x00004A60
add r0, r6, #0
mov r2, #0x33
@@ -67,7 +67,7 @@ _021D74F6:
str r0, [r4, #0x28]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD54_021D7874
ldr r0, [r4]
bl MOD54_021D7894
@@ -333,7 +333,7 @@ _021D776C:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x33
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index b9f3c277..51b82ddf 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -43,7 +43,7 @@ MOD55_021D7504: ; 0x021D7504
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x34
bl FUN_02016B94
str r0, [r4, #4]
@@ -89,7 +89,7 @@ _021D7580:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7610 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -164,7 +164,7 @@ _021D7628:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76B8 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -349,7 +349,7 @@ MOD55_021D77AC: ; 0x021D77AC
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x34
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD55_021D77AC
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 531194c6..ac016f49 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -267,7 +267,7 @@ MOD56_02211FD4: ; 0x02211FD4
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x36
bl FUN_02016B94
add r1, r4, #0
@@ -340,14 +340,14 @@ _02212098:
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
b _022120BE
_022120B2:
mov r2, #0xb
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
_022120BE:
mov r1, #0x3f
add r0, r4, #0
@@ -564,7 +564,7 @@ _02212274:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x36
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 481488f8..a9163534 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -28,12 +28,12 @@ MOD57_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0xa
mov r0, #3
mov r1, #0x19
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76F0 ; =0x00003320
add r0, r5, #0
mov r2, #0x19
@@ -561,7 +561,7 @@ MOD57_021D7944: ; 0x021D7944
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x19
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index eb13ddb7..99967607 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -43,7 +43,7 @@ _021D9A36:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D9B74 ; =0x00005CB0
add r0, r6, #0
mov r2, #0x27
@@ -66,7 +66,7 @@ _021D9A36:
str r0, [r4, #0x14]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD58_021D9CDC
ldr r0, [r4]
bl MOD58_021D9CFC
@@ -274,7 +274,7 @@ _021D9C40:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 5604bf3c..a48cd966 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -56,7 +56,7 @@ _021D7592:
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD59_021D778C
add r0, r4, #0
@@ -189,7 +189,7 @@ MOD59_021D76C0: ; 0x021D76C0
add r0, r6, #0
bl OverlayManager_FreeData
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID
ldr r1, _021D7720 ; =MOD52_021D76D8
bl RegisterMainOverlay
diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s
index 2925c404..e4325d83 100644
--- a/arm9/modules/59/asm/mod59_021D9868.s
+++ b/arm9/modules/59/asm/mod59_021D9868.s
@@ -11,7 +11,7 @@ MOD59_021D9868: ; 0x021D9868
mov r0, #3
mov r1, #0x53
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0x28
mov r2, #0x53
@@ -81,7 +81,7 @@ _021D98C6:
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD59_021D9A20
add r0, r4, #0
@@ -200,7 +200,7 @@ MOD59_021D99F8: ; 0x021D99F8
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c
index 4d7a4a98..be8dac20 100644
--- a/arm9/modules/59/src/mod59_021D74E0_src.c
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -10,7 +10,7 @@ extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct
THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
{
//note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof
- FUN_0201681C(3, 0x52, 1 << 18);
+ CreateHeap(3, 0x52, 1 << 18);
MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52);
(void)memset((void *)data, 0, 0xb4);
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 8c6d04fc..a30f563f 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -13,7 +13,7 @@ MOD60_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x26
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -215,7 +215,7 @@ _021D769A:
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index ed9e0e05..d13a3071 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -12,7 +12,7 @@ MOD61_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x29
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xbc
mov r2, #0x29
@@ -80,7 +80,7 @@ MOD61_021D7568: ; 0x021D7568
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s
index ea96bf3b..4f086525 100644
--- a/arm9/modules/63/asm/mod63_021D74E0.s
+++ b/arm9/modules/63/asm/mod63_021D74E0.s
@@ -37,12 +37,12 @@ MOD63_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #1
mov r0, #3
mov r1, #0x1e
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x79
add r0, r4, #0
lsl r1, r1, #2
@@ -363,7 +363,7 @@ MOD63_021D77B4: ; 0x021D77B4
add r0, r7, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
cmp r5, #1
beq _021D77F2
cmp r5, #2
@@ -500,7 +500,7 @@ MOD63_021D78BC: ; 0x021D78BC
add r0, #0x68
add r1, r4, #0
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x30
add r1, r6, #0
add r2, r4, #0
diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s
index 6f6f8f75..24804568 100644
--- a/arm9/modules/63/asm/mod63_021D8890.s
+++ b/arm9/modules/63/asm/mod63_021D8890.s
@@ -582,11 +582,11 @@ MOD63_021D8D10: ; 0x021D8D10
bl GX_DisableEngineBLayers
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #3
mov r1, #0x4c
lsl r2, r0, #0x11
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xab
add r0, r4, #0
lsl r1, r1, #2
@@ -739,7 +739,7 @@ MOD63_021D8E68: ; 0x021D8E68
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4c
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D8E94 ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _021D8E98 ; =MOD63_021DBAB8
bl RegisterMainOverlay
@@ -1930,7 +1930,7 @@ _021D9840:
ldr r1, [r2, #0x14]
add r1, r2, r1
sub r1, r1, r0
- bl FUN_02016B44
+ bl ReallocFromHeap
mov r0, #0x80
mov r1, #0x4c
bl NARC_ctor
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index 7a70bf1f..0c56aa30 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -12,7 +12,7 @@ MOD64_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7630 ; =0x000006B4
add r0, r4, #0
mov r2, #0x2f
@@ -30,7 +30,7 @@ _021D7504:
add r0, r5, r0
mov r1, #0x2f
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
bl OverlayManager_GetField18
add r4, r0, #0
@@ -299,7 +299,7 @@ _021D7726:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_end MOD64_021D76F4
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index e9e1ed78..1050ff4e 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -13,7 +13,7 @@ MOD65_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #2
add r0, r4, #0
lsl r1, r1, #8
@@ -80,7 +80,7 @@ MOD65_021D753C: ; 0x021D753C
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD65_021D753C
@@ -2710,7 +2710,7 @@ MOD65_021D8A08: ; 0x021D8A08
mov r0, #3
mov r1, #0x2e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6f
add r0, r4, #0
lsl r1, r1, #2
@@ -2921,7 +2921,7 @@ MOD65_021D8BBC: ; 0x021D8BBC
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index c902cd22..f8cb1081 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -13,7 +13,7 @@ MOD66_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x11
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0xe4
mov r2, #0x11
@@ -119,7 +119,7 @@ MOD66_021D75B0: ; 0x021D75B0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x11
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD66_021D75B0
diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s
index 60bd02b5..c39f5c7d 100644
--- a/arm9/modules/67/asm/module_67.s
+++ b/arm9/modules/67/asm/module_67.s
@@ -30,12 +30,12 @@ MOD67_021D74E0: ; 0x021D74E0
strh r1, [r3]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #2
mov r0, #3
mov r1, #0x2a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
bl OverlayManager_GetField18
add r5, r0, #0
@@ -165,7 +165,7 @@ MOD67_021D7624: ; 0x021D7624
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s
index b2170444..6e79c8cf 100644
--- a/arm9/modules/68/asm/module_68.s
+++ b/arm9/modules/68/asm/module_68.s
@@ -32,7 +32,7 @@ MOD68_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x24
lsr r2, r2, #9
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x81
add r0, r4, #0
lsl r1, r1, #2
@@ -73,7 +73,7 @@ MOD68_021D74E0: ; 0x021D74E0
bl MOD68_021D7870
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_0201CC08
mov r0, #4
bl FUN_0201CC24
@@ -173,7 +173,7 @@ MOD68_021D762C: ; 0x021D762C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x24
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D767C ; =0x04000050
mov r1, #0
strh r1, [r0]
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 58d0b4f8..c9bce6b2 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -13,7 +13,7 @@ HOF_OverlayInit: ; 0x0222D5C0
mov r0, #3
mov r1, #0x3f
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D70C ; =0x00001B60
add r0, r5, #0
mov r2, #0x3f
@@ -213,7 +213,7 @@ _0222D762:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x3f
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index 9db294af..daff2762 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -11,12 +11,12 @@ MOD70_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x3c
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #7
mov r0, #3
mov r1, #0x3d
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xdc
mov r2, #0x3c
@@ -76,9 +76,9 @@ MOD70_021D755C: ; 0x021D755C
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x3d
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3c
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index 303bee40..d01ea938 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -27,7 +27,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
ldr r2, _0222D734 ; =0x000707D0
mov r0, #3
mov r1, #0x1a
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D738 ; =0x000036B4
add r0, r5, #0
mov r2, #0x1a
@@ -74,7 +74,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
bl MOD71_0222E76C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD71_0222E558
mov r0, #0x5d
lsl r0, r0, #2
@@ -932,7 +932,7 @@ _0222DDA6:
mov r0, #0x50
bl FUN_02031588
mov r0, #2
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
add r0, r4, #0
bl MOD71_02230B88
ldr r0, [r4, #0x4c]
@@ -1317,7 +1317,7 @@ _0222E094:
mov r2, #1
bl MOD71_02230F40
mov r0, #2
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -1777,7 +1777,7 @@ MOD71_0222E438: ; 0x0222E438
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index 7d9850cc..3caf2693 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -23,7 +23,7 @@ MOD73_021D74F0: ; 0x021D74F0
mov r0, #3
mov r1, #0x38
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D757C ; =0x000015E8
add r0, r5, #0
mov r2, #0x38
@@ -201,7 +201,7 @@ MOD73_021D7640: ; 0x021D7640
mov r0, #0
str r0, [r6, #0x18]
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s
index 651527c1..75afef9d 100644
--- a/arm9/modules/74/asm/module_74.s
+++ b/arm9/modules/74/asm/module_74.s
@@ -13,7 +13,7 @@ MOD74_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -56,7 +56,7 @@ MOD74_021D7540: ; 0x021D7540
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 3500c458..a425935f 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -32,7 +32,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
mov r1, #6
mov r0, #3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021E6D60 ; =0x000004A4
add r0, r5, #0
mov r2, #6
@@ -68,7 +68,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
bl FUN_0200E1D0
mov r0, #3
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD75_021E7470
add r0, r4, #0
@@ -460,7 +460,7 @@ MOD75_021E6F00: ; 0x021E6F00
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #6
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index fc6dc5bd..06e6303e 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -11,7 +11,7 @@ MOD76_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x43
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x62
add r0, r5, #0
lsl r1, r1, #2
@@ -166,7 +166,7 @@ MOD76_021D761C: ; 0x021D761C
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x43
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD76_021D761C
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index 6affcb88..0b432b90 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -28,7 +28,7 @@ MOD77_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x32
lsl r2, r2, #7
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D75DC ; =0x0000C32C
add r0, r4, #0
mov r2, #0x32
@@ -100,7 +100,7 @@ _021D7540:
bl GX_SwapDisplay
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r5, #0
bl MOD77_021D7C64
mov r0, #1
@@ -831,7 +831,7 @@ MOD77_021D7BAC: ; 0x021D7BAC
add r0, r6, #0
bl OverlayManager_FreeData
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D7C20 ; =gMain + 0x60
mov r1, #0
strb r1, [r0, #5]
diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s
index 7fc7439a..85167a84 100644
--- a/arm9/modules/78/asm/module_78.s
+++ b/arm9/modules/78/asm/module_78.s
@@ -12,7 +12,7 @@ MOD78_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x48
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xa0
mov r2, #0x48
@@ -259,7 +259,7 @@ _021D76C8:
bl OverlayManager_FreeData
bl FUN_0201B398
mov r0, #0x48
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD78_021D76B8
@@ -338,7 +338,7 @@ MOD78_021D778C: ; 0x021D778C
add r0, #0x70
mov r1, #0x48
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r1, r5, #0
add r1, #0x9c
ldrb r2, [r1]
diff --git a/arm9/modules/79/asm/module_79_arm.s b/arm9/modules/79/asm/module_79_arm.s
index 24356937..6564b7da 100644
--- a/arm9/modules/79/asm/module_79_arm.s
+++ b/arm9/modules/79/asm/module_79_arm.s
@@ -3438,7 +3438,7 @@ _022152DC:
cmp r0, #0
beq _02215448
add r4, r0, #9
- ldr r1, _0221562C ; =UNK_0210430C
+ ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215330
_0221532C:
@@ -3460,7 +3460,7 @@ _02215358:
cmp r0, #0
bne _0221532C
mov r3, r4
- ldr r1, _0221562C ; =UNK_0210430C
+ ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215374
_02215370:
@@ -3655,7 +3655,7 @@ _0221561C: .word MOD79_02216F64
_02215620: .word MOD79_02216F6C
_02215624: .word 0x51EB851F
_02215628: .word MOD79_02216F70
-_0221562C: .word UNK_0210430C
+_0221562C: .word __msl_digit
_02215630: .word MOD79_02216F7C
_02215634: .word MOD79_02216F8C
_02215638: .word MOD79_0221673C
@@ -4101,7 +4101,7 @@ _02215C1C:
bl sscanf
mov r3, #0
mov ip, #1
- ldr r2, _02215D24 ; =UNK_0210430C
+ ldr r2, _02215D24 ; =__msl_digit
b _02215C5C
_02215C50:
ldr r1, [sp, #0x14]
@@ -4163,7 +4163,7 @@ _02215D14: .word 0x0000024E
_02215D18: .word MOD79_02217000
_02215D1C: .word 0x0000024F
_02215D20: .word MOD79_02217020
-_02215D24: .word UNK_0210430C
+_02215D24: .word __msl_digit
arm_func_end MOD79_02215BD8
arm_func_start MOD79_02215D28
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index 83e02d71..db04b6c2 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -1391,7 +1391,7 @@ _0222DFE4:
mov r0, #3
mov r1, #0x3e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222E108 ; =0x00001044
add r0, r6, #0
mov r2, #0x3e
@@ -1453,7 +1453,7 @@ _0222DFE4:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD80_0222E338
@@ -1689,7 +1689,7 @@ MOD80_0222E25C: ; 0x0222E25C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x3e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index c8b46eb9..599ede77 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -16,11 +16,11 @@ _02237E50:
mov r0, #3
mov r1, #0x39
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #0x3a
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
bl MOD81_02238858
ldr r1, _02237FD0 ; =0x00000492
mov r0, #3
@@ -237,9 +237,9 @@ MOD81_02238004: ; 0x02238004
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x39
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3a
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r6, #0
bl OS_RestoreInterrupts
mov r0, #1
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index f1a3e494..20b82216 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -641,7 +641,7 @@ _0222DA48:
mov r0, #3
mov r1, #0x44
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222DB58 ; =0x00000EC8
add r0, r6, #0
mov r2, #0x44
@@ -695,7 +695,7 @@ _0222DA48:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD82_0222DD04
@@ -887,7 +887,7 @@ MOD82_0222DC50: ; 0x0222DC50
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x44
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 09c161b4..0527c923 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -1916,7 +1916,7 @@ MOD83_0222E48C: ; 0x0222E48C
mov r0, #3
mov r1, #0x51
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x57
add r0, r5, #0
lsl r1, r1, #2
@@ -2372,7 +2372,7 @@ MOD83_0222E850: ; 0x0222E850
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x51
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -3085,7 +3085,7 @@ MOD83_0222EDF8: ; 0x0222EDF8
mov r2, #3
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222EE88 ; =0x00000496
mov r0, #9
mov r2, #1
@@ -3312,14 +3312,14 @@ MOD83_0222F048: ; 0x0222F048
push {r4, lr}
add r4, r0, #0
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _0222F06C ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _0222F070 ; =MOD63_021DBAB8
bl RegisterMainOverlay
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x55
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
nop
@@ -6505,7 +6505,7 @@ MOD83_02230954: ; 0x02230954
mov r0, #3
mov r1, #0x56
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022309FC ; =0x00002998
add r0, r5, #0
mov r2, #0x56
@@ -6561,7 +6561,7 @@ _022309D0:
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
@@ -7695,11 +7695,11 @@ _0223139A:
bl RegisterMainOverlay
_022313A6:
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x56
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _022313E0 ; =0x000015D4
ldr r0, [r4, r0]
cmp r0, #2
@@ -9726,7 +9726,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #3
mov r1, #0x57
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0223240C ; =0x00003CF4
add r0, r4, #0
mov r2, #0x57
@@ -9759,7 +9759,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -11366,11 +11366,11 @@ _02233104:
ldr r1, _02233164 ; =MOD83_0223A434
bl RegisterMainOverlay
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [sp]
bl OverlayManager_FreeData
mov r0, #0x57
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -15353,11 +15353,11 @@ MOD83_02234E40: ; 0x02234E40
add r0, r4, #0
bl FUN_0202BF90
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r5, #0x10]
bl FUN_02022720
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, r4, r5, pc}
thumb_func_end MOD83_02234E40
@@ -18509,7 +18509,7 @@ MOD83_02236764: ; 0x02236764
mov r0, #3
mov r1, #0x4e
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022367F0 ; =0x00012608
add r0, r5, #0
mov r2, #0x4e
@@ -19168,7 +19168,7 @@ _02236CAE:
mov r0, #0x15
str r0, [r5]
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
b _02236D90
_02236CF0:
ldr r0, _02236DB0 ; =0x0000E88C
@@ -19219,7 +19219,7 @@ _02236D36:
mov r0, #0x16
str r0, [r5]
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
b _02236D90
_02236D54:
ldr r0, _02236DC8 ; =gMain + 0x40
@@ -19287,7 +19287,7 @@ MOD83_02236DD0: ; 0x02236DD0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x4e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -22827,7 +22827,7 @@ MOD83_022387A0: ; 0x022387A0
add r6, r1, #0
mov r0, #3
add r2, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -24577,7 +24577,7 @@ _022394E4: ; jump table
.short _02239538 - _022394E4 - 2 ; case 4
_022394EE:
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r4, #0x14]
mov r1, #2
bl FUN_02022840
@@ -24610,7 +24610,7 @@ _02239528:
cmp r0, #1
bhi _02239534
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
_02239534:
add r0, r5, #0
pop {r3, r4, r5, pc}
@@ -24645,7 +24645,7 @@ MOD83_0223955C: ; 0x0223955C
ldr r0, [r0, #0x14]
bl FUN_0202287C
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, pc}
nop
_02239570: .word MOD83_0223BC30
diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s
index a5838988..3c6bd557 100644
--- a/arm9/modules/84/asm/module_84_thumb1.s
+++ b/arm9/modules/84/asm/module_84_thumb1.s
@@ -25,7 +25,7 @@ _021D74FC:
mov r0, #3
mov r1, #0x4b
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7670 ; =0x00001244
add r0, r6, #0
mov r2, #0x4b
@@ -269,7 +269,7 @@ _021D772E:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x4b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
_021D773E:
@@ -934,7 +934,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, #0x6c
mov r1, #0x4b
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r4, #4]
mov r1, #0
bl NNS_G3dGetAnmByIdx
diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s
index 221d2f9d..4ccc0477 100644
--- a/arm9/modules/85/asm/module_85.s
+++ b/arm9/modules/85/asm/module_85.s
@@ -18,7 +18,7 @@ MOD85_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #8
mov r2, #0x4f
@@ -193,7 +193,7 @@ MOD85_021D7644: ; 0x021D7644
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s
index 2bd7d12a..0c2e1774 100644
--- a/arm9/modules/86/asm/module_86.s
+++ b/arm9/modules/86/asm/module_86.s
@@ -11,7 +11,7 @@ MOD86_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x54
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0x44
mov r2, #0x54
@@ -57,7 +57,7 @@ MOD86_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD86_021D76EC
add r0, r4, #0
@@ -233,7 +233,7 @@ MOD86_021D76B0: ; 0x021D76B0
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index 28627d6b..07c285a4 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -1,16 +1,19 @@
#include "error_message_reset.h"
#include "GX_layers.h"
+#include "gx.h"
#include "unk_02031734.h"
#include "unk_0202F150.h"
#include "unk_02016B94.h"
-
+#include "PAD_pad.h"
const struct UnkStruct_02016B94_4 UNK_020FF49C = { 0, 3, 3, 0x1a, 0x12, 1, 0x23 };
-const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 };
+const struct HeapParam UNK_020FF4A4[] = {
+ {0x00020000, OS_ARENA_MAIN}
+};
-const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 };
+const struct GraphicsModes UNK_020FF4AC = { dispMode : GX_DISPMODE_GRAPHICS };
const struct UnkStruct_02016B94_1 UNK_020FF4BC = { 0, 0, 0x800, 0, 1, 0, 0, 6, 0, 1, 0, 0, 0 };
@@ -44,13 +47,13 @@ THUMB_FUNC void PrintErrorMessageAndReset()
OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN));
OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN));
- FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0);
+ InitHeapSystem(UNK_020FF4A4, NELEMS(UNK_020FF4A4), 1, 0);
FUN_0200E3A0(PM_LCD_TOP, 0);
FUN_0200E3A0(PM_LCD_BOTTOM, 0);
- OS_DisableIrqMask(1);
- OS_SetIrqFunction(1, &VBlankHandler);
- OS_EnableIrqMask(1);
+ OS_DisableIrqMask(OS_IE_V_BLANK);
+ OS_SetIrqFunction(OS_IE_V_BLANK, &VBlankHandler);
+ OS_EnableIrqMask(OS_IE_V_BLANK);
Main_SetVBlankIntrCB(NULL, NULL);
@@ -58,18 +61,18 @@ THUMB_FUNC void PrintErrorMessageAndReset()
GX_DisableEngineALayers();
GX_DisableEngineBLayers();
- reg_GX_DISPCNT &= 0xFFFFE0FF;
- reg_GXS_DB_DISPCNT &= 0xFFFFE0FF;
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_DISPLAY_MASK;
- FUN_0201669C(4, 8);
+ SetKeyRepeatTimers(4, 8);
gMain.unk65 = 0;
GX_SwapDisplay();
reg_G2_BLDCNT = 0;
reg_G2S_DB_BLDCNT = 0;
- reg_GX_DISPCNT &= 0xFFFF1FFF;
- reg_GXS_DB_DISPCNT &= 0xFFFF1FFF;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
GX_SetBanks(&UNK_020FF4D8);
ptr = FUN_02016B94(0);
@@ -104,24 +107,22 @@ THUMB_FUNC void PrintErrorMessageAndReset()
FUN_0200A274(0, 0x3f, 3);
FUN_02032DAC();
- lid:
- HandleDSLidAction();
- FUN_0202FB80();
- if (!FUN_02033678())
+ while (1)
{
- OS_WaitIrq(1, 1);
- goto lid;
+ HandleDSLidAction();
+ FUN_0202FB80();
+ if (FUN_02033678())
+ break;
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
}
-
- lid2:
- HandleDSLidAction();
- if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1))
+ while (1)
{
- OS_WaitIrq(1, 1);
- goto lid2;
+ HandleDSLidAction();
+ if ((PAD_Read() & PAD_BUTTON_A))
+ break;
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
}
-
FUN_0200E3A0(PM_LCD_TOP, 0x7FFF);
FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF);
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index 64ea7a54..1c6098ea 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -10,6 +10,7 @@
#include "game_init.h"
#include "registers.h"
#include "heap.h"
+#include "OS_interrupt.h"
#pragma thumb on
@@ -30,11 +31,11 @@ OS_DTCM;
static struct {
void * contents;
u32 name_hash;
-} UNK_021C4928[128];
+} sFileCache[128];
struct Main gMain;
-void Main_HBlankIntr(BOOL);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_0201B5CC(void *);
void FUN_02015EA0(void)
@@ -66,7 +67,7 @@ void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1)
void FUN_02015F1C(void)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
}
@@ -75,7 +76,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
if (a0 == 0)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
return TRUE;
@@ -84,7 +85,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
gMain.hBlankIntrArg = a1;
gMain.hBlankIntr = a0;
- Main_HBlankIntr(TRUE);
+ Main_ToggleHBlankInterrupt(TRUE);
return TRUE;
}
else
@@ -93,36 +94,36 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
}
}
-void FUN_02015F6C(void)
+void Main_CallHBlankCallback(void)
{
if (gMain.hBlankIntr != NULL)
gMain.hBlankIntr(gMain.hBlankIntrArg);
}
-void Main_HBlankIntr(BOOL a0)
+void Main_ToggleHBlankInterrupt(BOOL enableFlag)
{
(void)OS_DisableIrq();
- if (!a0)
+ if (!enableFlag)
{
(void)OS_GetIrqMask();
- OS_DisableIrqMask(2);
+ OS_DisableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(FALSE);
}
else
{
(void)OS_GetIrqMask();
- OS_SetIrqFunction(2, FUN_02015F6C);
- OS_EnableIrqMask(2);
+ OS_SetIrqFunction(OS_IE_H_BLANK, Main_CallHBlankCallback);
+ OS_EnableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(TRUE);
}
(void)OS_EnableIrq();
}
-const u32 UNK_020EDB10[][2] = {
- { 0x0000D000, 0x00000000 },
- { 0x00021000, 0x00000000 },
- { 0x00001000, 0x00000000 },
- { 0x0010D800, 0x00000000 }
+const struct HeapParam UNK_020EDB10[] = {
+ { 0x00D000, OS_ARENA_MAIN },
+ { 0x021000, OS_ARENA_MAIN },
+ { 0x001000, OS_ARENA_MAIN },
+ { 0x10D800, OS_ARENA_MAIN }
};
void FUN_02015FC8(void)
@@ -136,12 +137,12 @@ void FUN_02015FC8(void)
{
csum += digest[i];
}
- csum = (csum << 24) >> 24;
+ csum %= 256;
while (csum & 3)
{
csum++;
}
- FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum);
+ InitHeapSystem(UNK_020EDB10, NELEMS(UNK_020EDB10), 92, csum);
}
void InitSystemForTheGame(void)
@@ -189,7 +190,7 @@ void InitGraphicMemory(void)
MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
}
-void * FUN_020161A4(u32 heap_id, const char * path)
+void * AllocAndReadFile(u32 heap_id, const char * path)
{
void * ret;
@@ -214,7 +215,7 @@ void * FUN_020161A4(u32 heap_id, const char * path)
return ret;
}
-void FUN_020161F8(const char * path, void ** ptr)
+void OpenAndReadWholeFile(const char * path, void ** ptr)
{
FSFile file;
FS_InitFile(&file);
@@ -227,94 +228,94 @@ void FUN_020161F8(const char * path, void ** ptr)
}
}
-u32 FUN_02016230(const s8 * str)
+u32 GetFilenameHash(const s8 * str)
{
u16 len = (u16)strlen(str);
- u16 sp4;
+ u16 numWords;
if ((len % 4) != 0)
- sp4 = (u16)((len / 4) + 1);
+ numWords = (u16)((len / 4) + 1);
else
- sp4 = (u16)(len / 4);
- u32 r7 = 0;
+ numWords = (u16)(len / 4);
+ u32 hash = 0;
s32 i, j;
- for (i = 0; i < sp4; i++)
+ for (i = 0; i < numWords; i++)
{
- u32 r1 = 0;
+ u32 curWord = 0;
for (j = 0; j < 4; j++)
{
- int r5 = str[4 * i + j];
- if (r5 == 0)
+ int curChar = str[4 * i + j];
+ if (curChar == 0)
break;
- r1 |= r5 << (8 * j);
+ curWord |= curChar << (8 * j);
}
- r7 ^= r1;
+ hash ^= curWord;
}
- return r7;
+ return hash;
}
-int FUN_020162A0(u32 a0)
+int GetFileCacheId(u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].name_hash == a0 && UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].name_hash == hash && sFileCache[i].contents != NULL)
return i;
}
return -1;
}
-int FUN_020162C8(void * a0, u32 a1)
+int AddFileToCache(void * contents, u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].contents == NULL)
+ if (sFileCache[i].contents == NULL)
{
- UNK_021C4928[i].contents = a0;
- UNK_021C4928[i].name_hash = a1;
+ sFileCache[i].contents = contents;
+ sFileCache[i].name_hash = hash;
return i;
}
}
return -1;
}
-void FUN_020162FC(void)
+void ClearFileCache(void)
{
for (int i = 127; i > -1; i--)
{
- if (UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].contents != NULL)
{
- FreeToHeap(UNK_021C4928[i].contents);
- UNK_021C4928[i].contents = NULL;
- UNK_021C4928[i].name_hash = 0;
+ FreeToHeap(sFileCache[i].contents);
+ sFileCache[i].contents = NULL;
+ sFileCache[i].name_hash = 0;
}
}
}
-void * FUN_02016324(const s8 * str, u32 heap_id)
+void * OpenFileCached(const s8 * str, u32 heap_id)
{
- s8 sp0[32];
+ s8 filenameBuf[32];
FSFile file;
void * ret;
- int r5 = 0;
+ int skipCache = 0;
if (str[0] == '!')
{
- strcpy(sp0, str + 1);
- r5 = 1;
+ strcpy(filenameBuf, str + 1);
+ skipCache = 1;
}
else
{
- strcpy(sp0, str);
+ strcpy(filenameBuf, str);
}
- u32 r7 = FUN_02016230(sp0);
- s32 r0 = FUN_020162A0(r7);
- if (r0 >= 0 && r5 == 0)
+ u32 hash = GetFilenameHash(filenameBuf);
+ s32 cacheId = GetFileCacheId(hash);
+ if (cacheId >= 0 && skipCache == 0)
{
- ret = UNK_021C4928[r0].contents;
+ ret = sFileCache[cacheId].contents;
}
else
{
FS_InitFile(&file);
- if (FS_OpenFile(&file, (const char *)sp0))
+ if (FS_OpenFile(&file, (const char *)filenameBuf))
{
u32 size = file.prop.file.bottom - file.prop.file.top;
ret = AllocFromHeap(heap_id, size);
@@ -327,8 +328,8 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
}
}
FS_CloseFile(&file);
- if (r5 == 0)
- FUN_020162C8(ret, r7);
+ if (skipCache == 0)
+ AddFileToCache(ret, hash);
}
else
ret = NULL;
@@ -336,24 +337,24 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
return ret;
}
-void FUN_020163BC(void)
+void InitKeypadAndTouchpad(void)
{
TPCalibrateParam tp;
- gMain.unk34 = 0;
- gMain.unk38 = 0;
- gMain.unk3C = 0;
- gMain.unk40 = 0;
- gMain.unk44 = 0;
+ gMain.buttonMode = 0;
+ gMain.heldKeysRaw = 0;
+ gMain.newKeysRaw = 0;
+ gMain.newAndRepeatedKeysRaw = 0;
+ gMain.heldKeys = 0;
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk50 = 0;
- gMain.unk54 = 8;
- gMain.unk58 = 15;
- gMain.unk5C = 0;
- gMain.unk5E = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
- gMain.unk64 = 0;
+ gMain.keyRepeatCounter = 0;
+ gMain.keyRepeatContinueDelay = 8;
+ gMain.keyRepeatStartDelay = 15;
+ gMain.touchX = 0;
+ gMain.touchY = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
+ gMain.touchpadReadAuto = 0;
TP_Init();
if (TP_GetUserInfo(&tp) == TRUE)
TP_SetCalibrateParam(&tp);
@@ -382,38 +383,53 @@ void FUN_02016454(u8 a0)
gMain.unk67 &= ~a0;
}
-void FUN_02016464(void)
+void ReadKeypadAndTocuhpad(void)
{
TPData raw, calib;
if (PAD_DetectFold())
{
+ // Can't press any buttons while the lid is closed.
gMain.newKeys = 0;
- gMain.unk44 = 0;
+ gMain.heldKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
return;
}
- u32 r0 = PAD_Read();
- gMain.unk40 = gMain.unk3C = (r0 ^ gMain.unk38) & r0;
- if (r0 != 0 && gMain.unk38 == r0)
+
+ u32 padRead = PAD_Read();
+
+ // newKeys is all keys that were pressed on this frame but
+ // not the last frame.
+ gMain.newAndRepeatedKeysRaw = gMain.newKeysRaw = (padRead ^ gMain.heldKeysRaw) & padRead;
+
+ // If you are holding down buttons, indicate them "repeated" every few frames
+ // as defined by .keyRepeatStartDelay and .keyRepeatContinueDelay.
+ // Same logic as gen3, but fixes the bug where the
+ // remapped keys are incorrectly used here.
+ // See also: pokeemerald/src/main.c:ReadKeys
+ if (padRead != 0 && gMain.heldKeysRaw == padRead)
{
- if (--gMain.unk50 == 0)
+ if (--gMain.keyRepeatCounter == 0)
{
- gMain.unk40 = r0;
- gMain.unk50 = gMain.unk54;
+ gMain.newAndRepeatedKeysRaw = padRead;
+ gMain.keyRepeatCounter = gMain.keyRepeatContinueDelay;
}
}
else
{
- gMain.unk50 = gMain.unk58;
+ gMain.keyRepeatCounter = gMain.keyRepeatStartDelay;
}
- gMain.unk38 = r0;
- gMain.newKeys = gMain.unk3C;
- gMain.unk44 = r0;
- gMain.newAndRepeatedKeys = gMain.unk40;
- FUN_02016568();
- if (gMain.unk64 == 0)
+ gMain.heldKeysRaw = padRead;
+
+ // Apply the button mode option to the read key input
+ gMain.newKeys = gMain.newKeysRaw;
+ gMain.heldKeys = padRead;
+ gMain.newAndRepeatedKeys = gMain.newAndRepeatedKeysRaw;
+ ApplyButtonModeToInput();
+
+ // Read the touchpad. New to gen 4.
+ if (gMain.touchpadReadAuto == 0)
{
while (TP_RequestRawSampling(&raw))
;
@@ -421,111 +437,117 @@ void FUN_02016464(void)
else
TP_GetLatestRawPointInAuto(&raw);
TP_GetCalibratedPoint(&calib, &raw);
- if (calib.validity == 0)
+
+ // If the touchpad is valid, we gucci.
+ if (calib.validity == TP_VALIDITY_VALID)
{
- gMain.unk5C = calib.x;
- gMain.unk5E = calib.y;
+ gMain.touchX = calib.x;
+ gMain.touchY = calib.y;
}
- else if (gMain.unk62)
+
+ // If the touchpad was used last frame, salvage what we can.
+ else if (gMain.touchHeld)
{
switch (calib.validity)
{
- case 1:
- gMain.unk5E = calib.y;
+ case TP_VALIDITY_INVALID_X:
+ gMain.touchY = calib.y;
break;
- case 2:
- gMain.unk5C = calib.x;
+ case TP_VALIDITY_INVALID_Y:
+ gMain.touchX = calib.x;
break;
- case 3:
+ case TP_VALIDITY_INVALID_XY:
break;
}
}
+ // What was read from the touchpad was not salvageable.
+ // Ignore touch input.
else
calib.touch = 0;
- gMain.unk60 = (u16)((gMain.unk62 ^ calib.touch) & calib.touch);
- gMain.unk62 = calib.touch;
+ gMain.touchNew = (u16)((gMain.touchHeld ^ calib.touch) & calib.touch);
+ gMain.touchHeld = calib.touch;
}
-void FUN_02016568(void)
+void ApplyButtonModeToInput(void)
{
- switch (gMain.unk34)
+ switch (gMain.buttonMode)
{
case 0: // Normal
break;
case 1: // Start = X
if (gMain.newKeys & PAD_BUTTON_START)
gMain.newKeys |= PAD_BUTTON_X;
- if (gMain.unk44 & PAD_BUTTON_START)
- gMain.unk44 |= PAD_BUTTON_X;
+ if (gMain.heldKeys & PAD_BUTTON_START)
+ gMain.heldKeys |= PAD_BUTTON_X;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_START)
gMain.newAndRepeatedKeys |= PAD_BUTTON_X;
break;
case 2: // Swap X and Y; unused in the retail game
{
- u32 r1 = 0;
+ u32 swapMask = 0;
if (gMain.newKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newKeys &= 0xF3FF;
- gMain.newKeys |= r1;
+ gMain.newKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);;
+ gMain.newKeys |= swapMask;
}
{
- u32 r1 = 0;
- if (gMain.unk44 & PAD_BUTTON_X)
+ u32 swapMask = 0;
+ if (gMain.heldKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
- if (gMain.unk44 & PAD_BUTTON_Y)
+ if (gMain.heldKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.unk44 &= 0xF3FF;
- gMain.unk44 |= r1;
+ gMain.heldKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.heldKeys |= swapMask;
}
{
- u32 r1 = 0;
+ u32 swapMask = 0;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newAndRepeatedKeys &= 0xF3FF;
- gMain.newAndRepeatedKeys |= r1;
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys |= swapMask;
}
break;
case 3: // L = A
if (gMain.newKeys & PAD_BUTTON_L)
gMain.newKeys |= PAD_BUTTON_A;
- if (gMain.unk44 & PAD_BUTTON_L)
- gMain.unk44 |= PAD_BUTTON_A;
+ if (gMain.heldKeys & PAD_BUTTON_L)
+ gMain.heldKeys |= PAD_BUTTON_A;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_L)
gMain.newAndRepeatedKeys |= PAD_BUTTON_A;
- gMain.newKeys &= 0xFCFF;
- gMain.unk44 &= 0xFCFF;
- gMain.newAndRepeatedKeys &= 0xFCFF;
+ gMain.newKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.heldKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
}
}
-void FUN_0201669C(int x, int y)
+void SetKeyRepeatTimers(int continueDelay, int startDelay)
{
- gMain.unk54 = x;
- gMain.unk58 = y;
+ gMain.keyRepeatContinueDelay = continueDelay;
+ gMain.keyRepeatStartDelay = startDelay;
}
-void FUN_020166A8(u8 a0)
+void SetSoftResetDisableMask(u8 a0)
{
- gMain.unk68 |= a0;
+ gMain.softResetDisabled |= a0;
}
-void FUN_020166B8(u8 a0)
+void ClearSoftResetDisableMask(u8 a0)
{
- gMain.unk68 &= ~a0;
+ gMain.softResetDisabled &= ~a0;
}
diff --git a/arm9/src/heap.c b/arm9/src/heap.c
index 7f35fdcc..842fd33a 100644
--- a/arm9/src/heap.c
+++ b/arm9/src/heap.c
@@ -1,31 +1,45 @@
#include "heap.h"
#include "error_message_reset.h"
#include "unk_02031734.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
+struct HeapInfo
+{
+ NNSFndHeapHandle *heapHandles;
+ NNSFndHeapHandle *parentHeapHandles;
+ void **subHeapRawPtrs;
+ u16 *numMemBlocks;
+ u8 *heapIdxs;
+ u16 totalNumHeaps;
+ u16 nTemplates;
+ u16 maxHeaps;
+ u16 unallocatedHeapId;
+};
+
+typedef struct MemoryBlock
+{
+ u8 filler_00[12];
+ u32 heapId:8;
+ u32 filler_0D:24;
+} MemoryBlock;
-extern void *NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2);
-extern void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
-extern void NNS_FndDestroyExpHeap();
-extern void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2);
-extern u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0);
-extern void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2);
-extern u32 NNS_FndGetSizeForMBlockExpHeap(void *param0);
-extern void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2);
-
-
-struct UnkStruct_020166C8 UNK_021C4D28;
-
+struct HeapInfo sHeapInfo;
-THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
+THUMB_FUNC void InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size)
{
- u32 unk_size = param1 + 24;
+ void * ptr;
+ u32 unk_size, i;
- if (param2 < unk_size)
+ unk_size = nTemplates + 24;
+
+ if (totalNumHeaps < unk_size)
{
- param2 = unk_size;
+ totalNumHeaps = unk_size;
}
if (pre_size != 0)
{
+ // force align
while (pre_size % 4 != 0)
{
pre_size++;
@@ -34,207 +48,196 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
OS_AllocFromArenaLo(OS_ARENA_MAIN, pre_size, 4);
}
- u32 r7 = param2 * 2;
-
- void *ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4);
- UNK_021C4D28.unk00 = ptr;
- ptr += (unk_size + 1) * 4;
- UNK_021C4D28.unk04 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk08 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk0c = ptr;
- ptr += r7;
- UNK_021C4D28.unk10 = ptr;
- UNK_021C4D28.unk14 = (u16)param2;
- UNK_021C4D28.unk16 = (u16)param1;
-
- r7 = 0;
- UNK_021C4D28.unk1a = (u16)unk_size;
- UNK_021C4D28.unk18 = (u16)unk_size;
-
- while (r7 < param1)
+ sHeapInfo.heapHandles = (NNSFndHeapHandle*) OS_AllocFromArenaLo(
+ OS_ARENA_MAIN,
+ (unk_size + 1) * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(void *)
+ + totalNumHeaps * sizeof(u16)
+ + totalNumHeaps,
+ 4
+ );
+ sHeapInfo.parentHeapHandles = sHeapInfo.heapHandles + (unk_size + 1);
+ sHeapInfo.subHeapRawPtrs = (void **)(sHeapInfo.parentHeapHandles + unk_size);
+ sHeapInfo.numMemBlocks = (u16 *)(sHeapInfo.subHeapRawPtrs + unk_size);
+ sHeapInfo.heapIdxs = (u8 *)(sHeapInfo.numMemBlocks + totalNumHeaps);
+ sHeapInfo.totalNumHeaps = (u16)totalNumHeaps;
+ sHeapInfo.nTemplates = (u16)nTemplates;
+
+ sHeapInfo.unallocatedHeapId = (u16)unk_size;
+ sHeapInfo.maxHeaps = (u16)unk_size;
+
+ for (i = 0; i < nTemplates; i++)
{
- void *ptr;
- if (param0[1] == 0 || param0[1] != 2)
+ switch (templates[i].arena)
{
- ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, param0[0], 4);
- }
- else
- {
- ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, param0[0], 4);
+ case OS_ARENA_MAIN:
+ default:
+ ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, templates[i].size, 4);
+ break;
+ case OS_ARENA_MAINEX:
+ ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, templates[i].size, 4);
+ break;
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk00[r7] = NNS_FndCreateExpHeapEx(ptr, param0[0], 0);
- UNK_021C4D28.unk10[r7] = (u8)r7;
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(ptr, templates[i].size);
+ sHeapInfo.heapIdxs[i] = (u8)i;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
-
- param0 += 2;
- r7++;
}
- while (param1 < unk_size + 1)
+ for (i = nTemplates; i < unk_size + 1; i++)
{
- UNK_021C4D28.unk00[param1] = 0;
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
-
- param1++;
+ sHeapInfo.heapHandles[i] = NULL;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
}
- while (param1 < param2)
+ while (i < totalNumHeaps)
{
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
- param1++;
+ i++;
}
- for (param1 = 0; param1 < param2; param1++)
+ for (i = 0; i < totalNumHeaps; i++)
{
- UNK_021C4D28.unk0c[param1] = 0;
+ sHeapInfo.numMemBlocks[i] = 0;
}
}
-THUMB_FUNC s32 FUN_020167F4()
+THUMB_FUNC s32 FindFirstAvailableHeapHandle()
{
- s32 i = UNK_021C4D28.unk16;
- s32 j = UNK_021C4D28.unk18;
+ s32 i;
- if (i < j)
+ for (i = sHeapInfo.nTemplates; i < sHeapInfo.maxHeaps; i++)
{
- void **ptr = UNK_021C4D28.unk00 + i;
- do
- {
- if (*ptr == 0)
- {
- return i;
- }
- i++;
- ptr++;
- } while (i < j);
+ if (sHeapInfo.heapHandles[i] == NULL)
+ return i;
}
return -1;
}
-THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeap(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, 4);
+ return CreateHeapInternal(parent, child, size, 4);
}
-THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, -4);
+ return CreateHeapInternal(parent, child, size, -4);
}
-THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3)
+THUMB_FUNC BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment)
{
GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- u8 *ptr = UNK_021C4D28.unk10;
- if (UNK_021C4D28.unk1a == ptr[param1])
+ u8 *ptr = sHeapInfo.heapIdxs;
+ if (sHeapInfo.unallocatedHeapId == ptr[child])
{
- void *ptr2 = UNK_021C4D28.unk00[ptr[param0]];
- if (ptr2 != 0)
+ NNSFndHeapHandle parentHeap = sHeapInfo.heapHandles[ptr[parent]];
+ if (parentHeap != NULL)
{
- void *ptr3 = NNS_FndAllocFromExpHeapEx(ptr2, param2, param3);
- if (ptr3 != 0)
+ void *newHeapAddr = NNS_FndAllocFromExpHeapEx(parentHeap, size, alignment);
+ if (newHeapAddr != NULL)
{
- param3 = FUN_020167F4();
- if (param3 >= 0)
+ s32 i = FindFirstAvailableHeapHandle();
+ if (i >= 0)
{
- UNK_021C4D28.unk00[param3] = NNS_FndCreateExpHeapEx(ptr3, param2, 0);
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(newHeapAddr, size);
- if (UNK_021C4D28.unk00[param3] != 0)
+ if (sHeapInfo.heapHandles[i] != NULL)
{
- UNK_021C4D28.unk04[param3] = ptr2;
- UNK_021C4D28.unk08[param3] = ptr3;
- UNK_021C4D28.unk10[param1] = (u8)param3;
+ sHeapInfo.parentHeapHandles[i] = parentHeap;
+ sHeapInfo.subHeapRawPtrs[i] = newHeapAddr;
+ sHeapInfo.heapIdxs[child] = (u8)i;
- return 1;
+ return TRUE;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- return 0;
+ return FALSE;
}
-THUMB_FUNC void FUN_020168D0(u32 heap_id)
+THUMB_FUNC void DestroyHeap(u32 heap_id)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
+
+ NNSFndHeapHandle handle = sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]];
- if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0)
+ if (handle != NULL)
{
- NNS_FndDestroyExpHeap();
+ NNS_FndDestroyExpHeap(handle);
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr1 = UNK_021C4D28.unk04[index];
- void *ptr2 = UNK_021C4D28.unk08[index];
- if (ptr1 != 0 && ptr2 != 0)
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle parentHeap = sHeapInfo.parentHeapHandles[index];
+ void *childRaw = sHeapInfo.subHeapRawPtrs[index];
+ if (parentHeap != NULL && childRaw != NULL)
{
- NNS_FndFreeToExpHeap(ptr1, ptr2);
+ NNS_FndFreeToExpHeap(parentHeap, childRaw);
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk04[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk08[UNK_021C4D28.unk10[heap_id]] = 0;
+ sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.parentHeapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.subHeapRawPtrs[sHeapInfo.heapIdxs[heap_id]] = NULL;
- UNK_021C4D28.unk10[heap_id] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[heap_id] = (u8)sHeapInfo.unallocatedHeapId;
}
}
-THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3)
+THUMB_FUNC void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id)
{
- GF_ASSERT(param0);
+ GF_ASSERT(heap);
OSIntrMode intr_mode = OS_DisableInterrupts();
- param1 += 16;
- u32 *ptr = (u32 *)NNS_FndAllocFromExpHeapEx(param0, param1, param2);
+ size += sizeof(MemoryBlock);
+ void *ptr = NNS_FndAllocFromExpHeapEx(heap, size, alignment);
OS_RestoreInterrupts(intr_mode);
- if (ptr != 0)
+ if (ptr != NULL)
{
- ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff);
+ ((MemoryBlock *)ptr)->heapId = heap_id;
- ptr += 4;
+ ptr += sizeof(MemoryBlock);
}
return ptr;
}
-THUMB_FUNC void FUN_02016988()
+THUMB_FUNC void AllocFail()
{
if (FUN_02031810() != 0)
{
@@ -244,19 +247,19 @@ THUMB_FUNC void FUN_02016988()
void *AllocFromHeap(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, 4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, 4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -264,20 +267,20 @@ void *AllocFromHeap(u32 heap_id, u32 size)
void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, -4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, -4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -285,97 +288,99 @@ void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
void FreeToHeap(void *ptr)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ ptr -= sizeof(MemoryBlock);
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- if ((u16)heap_id < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr2 = UNK_021C4D28.unk00[index];
- GF_ASSERT(ptr2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT(heap != NULL);
- if (UNK_021C4D28.unk0c[heap_id] == 0)
+ if (sHeapInfo.numMemBlocks[heap_id] == 0)
{
- FUN_02016B90(heap_id);
+ GF_heap_c_dummy_return_true(heap_id);
}
- GF_ASSERT(UNK_021C4D28.unk0c[heap_id]);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[heap_id]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
OSIntrMode intr_mode = OS_DisableInterrupts();
- NNS_FndFreeToExpHeap(ptr2, ptr - 16);
+ NNS_FndFreeToExpHeap(heap, ptr);
OS_RestoreInterrupts(intr_mode);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-void FreeToHeapExplicit(u32 param0, void *param1)
+void FreeToHeapExplicit(u32 heap_id, void *ptr)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- void *ptr = UNK_021C4D28.unk00[index];
- GF_ASSERT (ptr );
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT( heap != NULL );
- u8 heap_id = (u8)((u32 *)param1)[-1];
- GF_ASSERT (heap_id == param0);
+ ptr -= sizeof(MemoryBlock);
+ GF_ASSERT(((MemoryBlock *)ptr)->heapId == heap_id);
- NNS_FndFreeToExpHeap(ptr, param1 - 16);
- GF_ASSERT (UNK_021C4D28.unk0c[param0]);
+ NNS_FndFreeToExpHeap(heap, ptr);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[param0]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016AF8(u32 param0)
+THUMB_FUNC u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id)
{
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- return NNS_FndGetTotalFreeSizeForExpHeap(UNK_021C4D28.unk00[index]);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ return NNS_FndGetTotalFreeSizeForExpHeap(sHeapInfo.heapHandles[index]);
}
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
-THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment)
{
- if (param1 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param1];
- NNS_FndInitAllocatorForExpHeap(param0, UNK_021C4D28.unk00[index], param2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNS_FndInitAllocatorForExpHeap(pAllocator, sHeapInfo.heapHandles[index], alignment);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1)
+THUMB_FUNC void ReallocFromHeap(void *ptr, u32 newSize)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- param1 += 16;
- if (NNS_FndGetSizeForMBlockExpHeap(ptr - 16) >= param1)
+ newSize += sizeof(MemoryBlock);
+ ptr -= sizeof(MemoryBlock);
+ if (NNS_FndGetSizeForMBlockExpHeap(ptr) >= newSize)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- u8 index = UNK_021C4D28.unk10[heap_id];
+ u8 index = sHeapInfo.heapIdxs[heap_id];
- NNS_FndResizeForMBlockExpHeap(UNK_021C4D28.unk00[index], ptr - 16, param1);
+ NNS_FndResizeForMBlockExpHeap(sHeapInfo.heapHandles[index], ptr, newSize);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016B90(u32 param0)
+THUMB_FUNC BOOL GF_heap_c_dummy_return_true(u32 heap_id)
{
-#pragma unused(param0)
- return 1;
+#pragma unused(heap_id)
+ return TRUE;
}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 749bec41..fa35c81c 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -53,10 +53,10 @@ THUMB_FUNC void NitroMain(void)
{
InitSystemForTheGame();
InitGraphicMemory();
- FUN_020163BC();
+ InitKeypadAndTouchpad();
FUN_02016438(0);
- PM_GetBackLight((PMBackLightSwitch *)SDK_STATIC_BSS_START, NULL);
+ PM_GetBackLight(&gBacklightTop, NULL);
FUN_02022294();
GF_InitRTCWork();
@@ -104,8 +104,8 @@ THUMB_FUNC void NitroMain(void)
{
FUN_02000EE8();
HandleDSLidAction();
- FUN_02016464();
- if ((gMain.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.unk68) // soft reset?
+ ReadKeypadAndTocuhpad();
+ if ((gMain.heldKeysRaw & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.softResetDisabled) // soft reset?
{
DoSoftReset(0); // soft reset?
}
@@ -248,7 +248,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1)
while (1)
{
HandleDSLidAction();
- FUN_02016464();
+ ReadKeypadAndTocuhpad();
if (gMain.newKeys & 1)
break;
FUN_02000E9C();
diff --git a/arm9/src/options.c b/arm9/src/options.c
index 296b398a..03b63864 100644
--- a/arm9/src/options.c
+++ b/arm9/src/options.c
@@ -35,14 +35,14 @@ void Options_SetButtonModeOnMain(struct SaveBlock2 * sav2, u32 buttonMode) {
switch (buttonMode) {
case 1:
- gMain.unk34 = 1;
+ gMain.buttonMode = 1;
break;
case 2:
- gMain.unk34 = 3;
+ gMain.buttonMode = 3;
break;
case 0:
default:
- gMain.unk34 = 0;
+ gMain.buttonMode = 0;
break;
}
}
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
index 45850885..358d21ea 100644
--- a/arm9/src/unk_0200BB14.c
+++ b/arm9/src/unk_0200BB14.c
@@ -323,7 +323,7 @@ THUMB_FUNC BOOL FUN_0200BD20(
for (s32 i = 0; i < st14; i++)
{
u32 st18 = FUN_02009660(param1->unk08, i);
- void *st1c = FUN_020161A4(param0->unk000, st10[i]);
+ void *st1c = AllocAndReadFile(param0->unk000, st10[i]);
FUN_02009668(st1c, st18, param0->unk000);
FreeToHeap(st1c);
@@ -344,7 +344,7 @@ THUMB_FUNC BOOL FUN_0200BD20(
FUN_02009A90(param1->unk24[0]);
FUN_02009D34(param1->unk24[1]);
- void *r6 = FUN_020161A4(param0->unk000, st10[6]);
+ void *r6 = AllocAndReadFile(param0->unk000, st10[6]);
param1->unk04 = FUN_02008BE0(r6,
param0->unk000,
param1->unk0c[0],
diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c
index 6a9dd194..c03fbd75 100644
--- a/arm9/src/unk_02016B94.c
+++ b/arm9/src/unk_02016B94.c
@@ -73,32 +73,32 @@ THUMB_FUNC u32 FUN_02016BB8(u32 *param0)
THUMB_FUNC void FUN_02016BBC(const struct GraphicsModes *modes)
{
- GX_SetGraphicsMode(modes->mode1, modes->mode2, modes->mode4);
- GXS_SetGraphicsMode(modes->mode3);
- reg_GX_DISPCNT &= 0xC7FFFFFF;
- reg_GX_DISPCNT &= 0xF8FFFFFF;
+ GX_SetGraphicsMode(modes->dispMode, modes->bgMode, modes->_2d3dMode);
+ GXS_SetGraphicsMode(modes->subMode);
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BGSCREENOFFSET_MASK;
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BGCHAROFFSET_MASK;
GX_DisableEngineALayers();
GX_DisableEngineBLayers();
}
-THUMB_FUNC void FUN_02016BF4(u32 *param0, u32 param1)
+THUMB_FUNC void FUN_02016BF4(const struct GraphicsModes *param0, u32 param1)
{
if (param1 == 0)
{
- GX_SetGraphicsMode(param0[0], param0[1], param0[3]);
+ GX_SetGraphicsMode(param0->dispMode, param0->bgMode, param0->_2d3dMode);
GX_DisableEngineALayers();
}
else
{
- GXS_SetGraphicsMode(param0[2]);
+ GXS_SetGraphicsMode(param0->subMode);
GX_DisableEngineBLayers();
}
}
#ifdef NONMATCHING
THUMB_FUNC void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3)
{
u8 res = FUN_020177DC(param2->unk10, param3);
switch (param1)
@@ -342,7 +342,7 @@ THUMB_FUNC void FUN_02016C18(
}
#else
THUMB_FUNC asm void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3)
{
// clang-format off
push {r3-r7, lr}
@@ -4603,7 +4603,7 @@ THUMB_FUNC void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
}
THUMB_FUNC void FUN_02019150(
- struct UnkStruct_02016B94_2 *param0, struct Window *param1, struct UnkStruct_02016B94_4 *param2)
+ struct UnkStruct_02016B94_2 *param0, struct Window *param1, const struct UnkStruct_02016B94_4 *param2)
{
FUN_02019064(param0,
@@ -7745,7 +7745,7 @@ THUMB_FUNC void FUN_0201AB24(struct Window *window, u8 param1)
THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path)
{
- void *ptr = FUN_020161A4(heap_id, path);
+ void *ptr = AllocAndReadFile(heap_id, path);
window->unk00 = ptr;
u32 st0;
NNS_G2dGetUnpackedBGCharacterData(ptr, &st0);
@@ -7755,7 +7755,7 @@ THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path
THUMB_FUNC u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path)
{
- void *ptr = FUN_020161A4(heap_id, path);
+ void *ptr = AllocAndReadFile(heap_id, path);
window->unk00 = ptr;
u32 st0;
NNS_G2dGetUnpackedPaletteData(ptr, &st0);
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index 09b5b56f..ef9a6193 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -535,7 +535,7 @@ THUMB_FUNC BOOL FUN_0202FB80()
{
UNK_021C59F4.unk00 = 0;
FUN_0202F984();
- UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF;
+ UNK_021C59F4.unk04->unk628 |= gMain.heldKeys & 0x7FFF;
FUN_02030674();
FUN_0202FCCC();
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
index 57764b82..7d3b4c03 100644
--- a/arm9/src/unk_02031734.c
+++ b/arm9/src/unk_02031734.c
@@ -97,14 +97,14 @@ THUMB_FUNC void FUN_020317C0()
if (UNK_021C5A00->unk3F >= 0x13)
{
- FUN_020168D0(0x31);
+ DestroyHeap(0x31);
}
FUN_02033ED0();
FUN_0202E4F0();
FreeToHeap(UNK_021C5A00);
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
UNK_021C5A00 = NULL;
}
@@ -123,7 +123,7 @@ THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0xe000);
+ CreateHeapAtEnd(3, 0xf, 0xe000);
FUN_02031734(sav2, 0xa);
UNK_021C5A00->unk40 = 0;
@@ -201,7 +201,7 @@ THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -213,7 +213,7 @@ THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -273,7 +273,7 @@ THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- if (FUN_02016828(3, 0xf, 0x7080) == 0)
+ if (CreateHeapAtEnd(3, 0xf, 0x7080) == 0)
{
FUN_020335E0();
}
@@ -406,7 +406,7 @@ THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E00, 0);
}
@@ -416,7 +416,7 @@ THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E48, 0);
}
@@ -1393,7 +1393,7 @@ THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0xe);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032B8C, 0);
@@ -1479,7 +1479,7 @@ THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0x11);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032CF4, 0);
@@ -1807,7 +1807,7 @@ THUMB_FUNC void FUN_020331C4()
{
if (UNK_021C5A00 != NULL)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_02031D20(FUN_02032440, 5);
}
}
@@ -1866,7 +1866,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1875,7 +1875,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1883,11 +1883,11 @@ THUMB_FUNC void FUN_020332DC()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1895,7 +1895,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1903,7 +1903,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1911,11 +1911,11 @@ THUMB_FUNC void FUN_02033364()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1966,7 +1966,7 @@ THUMB_FUNC void FUN_0203341C()
{
if (FUN_0202E4C8())
{
- FUN_02016828(3, 0x31, 0x31000);
+ CreateHeapAtEnd(3, 0x31, 0x31000);
if (FUN_0202F918(1, 1, 0x200, 1) != 0)
{
MOD05_021D74E0(UNK_021C5A00->unk28, 0x31);
@@ -1985,8 +1985,8 @@ THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1)
return 0;
}
- FUN_020166A8(1);
- FUN_02016828(3, 0xf, 0x7080);
+ SetSoftResetDisableMask(1);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, 0x17);
UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1);
MI_CpuFill8(UNK_021C5A00->unk00, 0, param1);
@@ -2127,7 +2127,7 @@ THUMB_FUNC void FUN_020335F4()
FUN_0200541C();
FUN_0202287C(UNK_021C5A00->unk28);
- gMain.unk64 = 1;
+ gMain.touchpadReadAuto = 1;
if (UNK_021C5A00->unk4E == 3)
{
FUN_020335A4(3);
diff --git a/include/GX_layers.h b/include/GX_layers.h
index 3943d582..aca0154b 100644
--- a/include/GX_layers.h
+++ b/include/GX_layers.h
@@ -3,6 +3,7 @@
#include "global.h"
+#include "gx.h"
struct GX_LayerData
{
@@ -33,10 +34,10 @@ struct GraphicsBanks
struct GraphicsModes {
- u32 mode1;
- u32 mode2;
- u32 mode3;
- u32 mode4;
+ GXDispMode dispMode;
+ GXBGMode bgMode;
+ GXBGMode subMode;
+ GXBG0As _2d3dMode;
};
diff --git a/include/game_init.h b/include/game_init.h
index 7a6e34fb..bf6569c4 100644
--- a/include/game_init.h
+++ b/include/game_init.h
@@ -9,26 +9,26 @@ void FUN_02015EF4(void);
void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1);
void FUN_02015F1C(void);
BOOL FUN_02015F34(void (*a0)(void *), void * a1);
-void FUN_02015F6C(void);
-void Main_HBlankIntr(BOOL a0);
+void Main_CallHBlankCallback(void);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_02015FC8(void);
void InitSystemForTheGame(void);
void InitGraphicMemory(void);
-void * FUN_020161A4(u32 heap_id, const char * path);
-void FUN_020161F8(const char * path, void ** ptr);
-u32 FUN_02016230(const s8 * str);
-int FUN_020162A0(u32 a0);
-int FUN_020162C8(void * a0, u32 a1);
-void FUN_020162FC(void);
-void * FUN_02016324(const s8 * str, u32 heap_id);
-void FUN_020163BC(void);
+void * AllocAndReadFile(u32 heap_id, const char * path);
+void OpenAndReadWholeFile(const char * path, void ** ptr);
+u32 GetFilenameHash(const s8 * str);
+int GetFileCacheId(u32 hash);
+int AddFileToCache(void * contents, u32 hash);
+void ClearFileCache(void);
+void * OpenFileCached(const s8 * str, u32 heap_id);
+void InitKeypadAndTouchpad(void);
void FUN_02016438(u8 a0);
void FUN_02016444(u8 a0);
void FUN_02016454(u8 a0);
-void FUN_02016464(void);
-void FUN_02016568(void);
-void FUN_0201669C(int x, int y);
-void FUN_020166A8(u8 a0);
-void FUN_020166B8(u8 a0);
+void ReadKeypadAndTocuhpad(void);
+void ApplyButtonModeToInput(void);
+void SetKeyRepeatTimers(int continueDelay, int startDelay);
+void SetSoftResetDisableMask(u8 a0);
+void ClearSoftResetDisableMask(u8 a0);
#endif //POKEDIAMOND_GAME_INIT_H
diff --git a/include/heap.h b/include/heap.h
index de1f5f18..36c747a7 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,36 +2,30 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
-struct UnkStruct_020166C8
+struct HeapParam
{
- void **unk00;
- void **unk04;
- void **unk08;
- u16 *unk0c;
- u8 *unk10;
- u16 unk14;
- u16 unk16;
- u16 unk18;
- u16 unk1a;
+ u32 size;
+ OSArenaId arena;
};
-
-void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size);
-s32 FUN_020167F4();
-u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
-u32 FUN_02016828(u32 param0, u32 param1, u32 param2);
-u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3);
-void FUN_020168D0(u32 heap_id);
-u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3);
-void FUN_02016988();
+void InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size);
+s32 FindFirstAvailableHeapHandle();
+BOOL CreateHeap(u32 parent, u32 child, u32 size);
+BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size);
+BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment);
+void DestroyHeap(u32 heap_id);
+void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id);
+void AllocFail();
void *AllocFromHeap(u32 heap_id, u32 size);
void *AllocFromHeapAtEnd(u32 heap_id, u32 size);
void FreeToHeap(void *ptr);
void FreeToHeapExplicit(u32 heap_id, void * ptr);
-u32 FUN_02016AF8(u32 param0);
-void FUN_02016B20(u32 param0, u32 param1, u32 param2);
-void FUN_02016B44(void *ptr, u32 param1);
-u32 FUN_02016B90(u32 param0);
+u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id);
+void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment);
+void ReallocFromHeap(void *ptr, u32 newSize);
+BOOL GF_heap_c_dummy_return_true(u32 heap_id);
#endif //POKEDIAMOND_HEAP_H
diff --git a/include/main.h b/include/main.h
index 9227d9a8..ba4d7bc2 100644
--- a/include/main.h
+++ b/include/main.h
@@ -79,26 +79,26 @@ struct Main
s32 unk28;
u32 unk2C;
s32 unk30;
- u32 unk34;
- u32 unk38;
- u32 unk3C;
- u32 unk40;
- u32 unk44;
+ u32 buttonMode;
+ u32 heldKeysRaw;
+ u32 newKeysRaw;
+ u32 newAndRepeatedKeysRaw;
+ u32 heldKeys;
u32 newKeys;
u32 newAndRepeatedKeys;
- s32 unk50;
- s32 unk54;
- s32 unk58;
- u16 unk5C;
- u16 unk5E;
- u16 unk60;
- u16 unk62;
- u8 unk64;
+ s32 keyRepeatCounter;
+ s32 keyRepeatContinueDelay;
+ s32 keyRepeatStartDelay;
+ u16 touchX;
+ u16 touchY;
+ u16 touchNew;
+ u16 touchHeld;
+ u8 touchpadReadAuto;
u8 unk65;
u8 unk66;
u8 unk67;
- u8 unk68;
- u8 padding_69[3];
+ u8 softResetDisabled;
+ u8 padding_69[3]; // nice
s32 unk6C;
};
diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h
index fec45cd8..d3648560 100644
--- a/include/unk_02016B94.h
+++ b/include/unk_02016B94.h
@@ -94,9 +94,9 @@ struct Window
struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id);
u32 FUN_02016BB8(u32 *param0);
void FUN_02016BBC(const struct GraphicsModes *modes);
-void FUN_02016BF4(u32 *param0, u32 param1);
+void FUN_02016BF4(const struct GraphicsModes *param0, u32 param1);
void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3);
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3);
void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3);
u8 FUN_020177DC(u8 param0, u32 param1);
void FUN_02017850(u32 param0, u8 *param1, u8 *param2);
@@ -264,7 +264,7 @@ void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
u8 param5);
void FUN_02019150(struct UnkStruct_02016B94_2 *param0,
struct Window *param1,
- struct UnkStruct_02016B94_4 *param2);
+ const struct UnkStruct_02016B94_4 *param2);
void FUN_02019178(struct Window *param0);
void FUN_020191A4(struct Window *param0, int param1);
void CopyWindowToVram(struct Window *param0);