.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