Files
pokediamond/arm9/asm/libc.s
2020-05-27 13:18:52 -04:00

14431 lines
248 KiB
ArmAsm

.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