diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-25 10:39:22 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-25 10:39:22 -0400 |
commit | fff66e78f0acbdd2a9611440f1d09b27ad5220bf (patch) | |
tree | 31842cd437ef6db4cf3bc3625532299c9f91d9a9 /arm9/asm/libVCT.s | |
parent | 6c7951bbc627dbffe4a5fda1861ae158b812999c (diff) |
Split UBIQUITOUS:SSL
Diffstat (limited to 'arm9/asm/libVCT.s')
-rw-r--r-- | arm9/asm/libVCT.s | 11558 |
1 files changed, 11558 insertions, 0 deletions
diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s new file mode 100644 index 00000000..7345545f --- /dev/null +++ b/arm9/asm/libVCT.s @@ -0,0 +1,11558 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global UNK_020FF590 +UNK_020FF590: ; 0x020FF590 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 + + .global UNK_020FF598 +UNK_020FF598: ; 0x020FF598 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + + .global UNK_020FF5B8 +UNK_020FF5B8: ; 0x020FF5B8 + .byte 0xFF, 0x01, 0xFF, 0x01 + + .global UNK_020FF5BC +UNK_020FF5BC: ; 0x020FF5BC + .byte 0xFF, 0xFF, 0x01, 0x02, 0xFF, 0xFF, 0x01, 0x02 + + .global UNK_020FF5C4 +UNK_020FF5C4: ; 0x020FF5C4 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x06, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x06, 0x08 + + .global UNK_020FF5D4 +UNK_020FF5D4: ; 0x020FF5D4 + .byte 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00 + .byte 0x10, 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1C, 0x00, 0x1F, 0x00 + .byte 0x22, 0x00, 0x25, 0x00, 0x29, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3C, 0x00, 0x42, 0x00 + .byte 0x49, 0x00, 0x50, 0x00, 0x58, 0x00, 0x61, 0x00, 0x6B, 0x00, 0x76, 0x00, 0x82, 0x00, 0x8F, 0x00 + .byte 0x9D, 0x00, 0xAD, 0x00, 0xBE, 0x00, 0xD1, 0x00, 0xE6, 0x00, 0xFD, 0x00, 0x17, 0x01, 0x33, 0x01 + .byte 0x51, 0x01, 0x73, 0x01, 0x98, 0x01, 0xC1, 0x01, 0xEE, 0x01, 0x20, 0x02, 0x56, 0x02, 0x92, 0x02 + .byte 0xD4, 0x02, 0x1C, 0x03, 0x6C, 0x03, 0xC3, 0x03, 0x24, 0x04, 0x8E, 0x04, 0x02, 0x05, 0x83, 0x05 + .byte 0x10, 0x06, 0xAB, 0x06, 0x56, 0x07, 0x12, 0x08, 0xE0, 0x08, 0xC3, 0x09, 0xBD, 0x0A, 0xD0, 0x0B + .byte 0xFF, 0x0C, 0x4C, 0x0E, 0xBA, 0x0F, 0x4C, 0x11, 0x07, 0x13, 0xEE, 0x14, 0x06, 0x17, 0x54, 0x19 + .byte 0xDC, 0x1B, 0xA5, 0x1E, 0xB6, 0x21, 0x15, 0x25, 0xCA, 0x28, 0xDF, 0x2C, 0x5B, 0x31, 0x4B, 0x36 + .byte 0xB9, 0x3B, 0xB2, 0x41, 0x44, 0x48, 0x7E, 0x4F, 0x71, 0x57, 0x2F, 0x60, 0xCE, 0x69, 0x62, 0x74 + .byte 0xFF, 0x7F, 0x00, 0x00 + + .global UNK_020FF688 +UNK_020FF688: ; 0x020FF688 + .byte 0x08 + + .global UNK_020FF689 +UNK_020FF689: ; 0x020FF689 + .byte 0x00, 0x08, 0x00, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x00, 0x00 + + .global UNK_020FF694 +UNK_020FF694: ; 0x020FF694 + .byte 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02 + .byte 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00 + + .global UNK_020FF6AC +UNK_020FF6AC: ; 0x020FF6AC + .byte 0x01, 0x08, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x00 + + .global UNK_020FF6B4 +UNK_020FF6B4: ; 0x020FF6B4 + .byte 0x07, 0x0C, 0x02, 0x03, 0x09, 0x02, 0x00, 0x00 + + .global UNK_020FF6BC +UNK_020FF6BC: ; 0x020FF6BC + .byte 0x04, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFE, 0x05, 0x05, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x05, 0xFE + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0x00, 0x00, 0xFF, 0xFF + .byte 0x00, 0xFF, 0x00, 0x00 + + .global UNK_020FF700 +UNK_020FF700: ; 0x020FF700 + .byte 0xFE, 0xFE, 0xFE, 0x03, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFE, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFE, 0x00, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFF, 0x00, 0x00, 0xFF, 0xFF + .byte 0x00, 0xFF, 0x00, 0x00 + + .global UNK_020FF744 +UNK_020FF744: ; 0x020FF744 + .byte 0x01, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0x05, 0xFE, 0xFE + .byte 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x05, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE + .byte 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE + .byte 0xFE, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE + .byte 0x00, 0xFE, 0x00, 0x00 + + .global UNK_020FF788 +UNK_020FF788: ; 0x020FF788 + .byte 0xFE, 0xFE, 0xFE, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x05, 0x05, 0xFE, 0xFF + .byte 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x05, 0xFE, 0xFE, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0xFE + .byte 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE + .byte 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFE + .byte 0x00, 0xFE, 0x00, 0x00 + + .global UNK_020FF7CC +UNK_020FF7CC: ; 0x020FF7CC + .byte 0x94, 0xE8, 0x0A, 0x02, 0x84, 0xE8, 0x0A, 0x02 + + .global UNK_020FF7D4 +UNK_020FF7D4: ; 0x020FF7D4 + .byte 0xB4, 0xF2, 0x0A, 0x02, 0x88, 0xF2, 0x0A, 0x02, 0x5C, 0xF2, 0x0A, 0x02, 0x30, 0xF2, 0x0A, 0x02 + .byte 0x24, 0xF2, 0x0A, 0x02, 0x18, 0xF2, 0x0A, 0x02, 0x0C, 0xF2, 0x0A, 0x02, 0x00, 0xF2, 0x0A, 0x02 + .byte 0xF4, 0xF1, 0x0A, 0x02, 0xE8, 0xF1, 0x0A, 0x02, 0xDC, 0xF1, 0x0A, 0x02, 0xD0, 0xF1, 0x0A, 0x02 + .byte 0xC4, 0xF1, 0x0A, 0x02, 0xB8, 0xF1, 0x0A, 0x02, 0xAC, 0xF1, 0x0A, 0x02, 0xA0, 0xF1, 0x0A, 0x02 + .byte 0x74, 0xF1, 0x0A, 0x02, 0x48, 0xF1, 0x0A, 0x02, 0x3C, 0xF1, 0x0A, 0x02, 0x30, 0xF1, 0x0A, 0x02 + .byte 0x24, 0xF1, 0x0A, 0x02, 0x18, 0xF1, 0x0A, 0x02, 0x0C, 0xF1, 0x0A, 0x02, 0x00, 0xF1, 0x0A, 0x02 + .byte 0xF4, 0xF0, 0x0A, 0x02, 0xE8, 0xF0, 0x0A, 0x02, 0xDC, 0xF0, 0x0A, 0x02, 0xD0, 0xF0, 0x0A, 0x02 + .byte 0xC4, 0xF0, 0x0A, 0x02, 0xB8, 0xF0, 0x0A, 0x02, 0xAC, 0xF0, 0x0A, 0x02, 0xA0, 0xF0, 0x0A, 0x02 + .byte 0x74, 0xF0, 0x0A, 0x02, 0x48, 0xF0, 0x0A, 0x02, 0x3C, 0xF0, 0x0A, 0x02, 0x30, 0xF0, 0x0A, 0x02 + + .section .data + + .global UNK_0210646C +UNK_0210646C: ; 0x0210646C + .byte 0x01, 0x00, 0x00, 0x00 + + .global UNK_02106470 +UNK_02106470: ; 0x02106470 + .byte 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00 + .byte 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00 + + .global UNK_02106490 +UNK_02106490: ; 0x02106490 + .byte 0xF7, 0xB5, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106498 +UNK_02106498: ; 0x02106498 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00 + + .global UNK_021064A8 +UNK_021064A8: ; 0x021064A8 + .byte 0xFB, 0xE9, 0x3D, 0x40, 0xBC, 0xC7, 0xD1, 0x2C, 0x2A, 0xD0, 0x7C, 0x03, 0xF0, 0x08, 0x93, 0xF5 + + .global UNK_021064B8 +UNK_021064B8: ; 0x021064B8 + .word FUN_020AE8B4 + + .global UNK_021064BC +UNK_021064BC: ; 0x021064BC + .word FUN_020AE8AC + + .global UNK_021064C0 +UNK_021064C0: ; 0x021064C0 + .word FUN_020AE8C4 + + .global UNK_021064C4 +UNK_021064C4: ; 0x021064C4 + .word FUN_020AE8BC + + .global UNK_021064C8 +UNK_021064C8: ; 0x021064C8 + .word UNK_021064E4 + .word UNK_0210652C + + .global UNK_021064D0 +UNK_021064D0: ; 0x021064D0 + .word UNK_02106544 + .word UNK_0210652C + .word UNK_021064E4 + .word UNK_02106514 + .word UNK_021064FC + + .global UNK_021064E4 +UNK_021064E4: ; 0x021064E4 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021064FC +UNK_021064FC: ; 0x021064FC + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 + + .global UNK_02106514 +UNK_02106514: ; 0x02106514 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 + + .global UNK_0210652C +UNK_0210652C: ; 0x0210652C + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 + + .global UNK_02106544 +UNK_02106544: ; 0x02106544 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 + + .bss + + .global UNK_021CA86C +UNK_021CA86C: ; 0x021CA86C + .space 0x4 + + .global UNK_021CA870 +UNK_021CA870: ; 0x021CA870 + .space 0x4 + + .global UNK_021CA874 +UNK_021CA874: ; 0x021CA874 + .space 0x8 + + .global UNK_021CA87C +UNK_021CA87C: ; 0x021CA87C + .space 0x20 + + .global UNK_021CA89C +UNK_021CA89C: ; 0x021CA89C + .space 0x4 + + .global UNK_021CA8A0 +UNK_021CA8A0: ; 0x021CA8A0 + .space 0x10 + + .global UNK_021CA8B0 +UNK_021CA8B0: ; 0x021CA8B0 + .space 0x4 + + .global UNK_021CA8B4 +UNK_021CA8B4: ; 0x021CA8B4 + .space 0x4 + + .global UNK_021CA8B8 +UNK_021CA8B8: ; 0x021CA8B8 + .space 0x4 + + .global UNK_021CA8BC +UNK_021CA8BC: ; 0x021CA8BC + .space 0x4 + + .global UNK_021CA8C0 +UNK_021CA8C0: ; 0x021CA8C0 + .space 0x4 + + .global UNK_021CA8C4 +UNK_021CA8C4: ; 0x021CA8C4 + .space 0x4 + + .global UNK_021CA8C8 +UNK_021CA8C8: ; 0x021CA8C8 + .space 0x4 + + .global UNK_021CA8CC +UNK_021CA8CC: ; 0x021CA8CC + .space 0x4 + + .global UNK_021CA8D0 +UNK_021CA8D0: ; 0x021CA8D0 + .space 0x4 + + .global UNK_021CA8D4 +UNK_021CA8D4: ; 0x021CA8D4 + .space 0x4 + + .global UNK_021CA8D8 +UNK_021CA8D8: ; 0x021CA8D8 + .space 0x4 + + .global UNK_021CA8DC +UNK_021CA8DC: ; 0x021CA8DC + .space 0xc + + .global UNK_021CA8E8 +UNK_021CA8E8: ; 0x021CA8E8 + .space 0x1bc + + .global UNK_021CAAA4 +UNK_021CAAA4: ; 0x021CAAA4 + .space 0x45c + + .global UNK_021CAF00 +UNK_021CAF00: ; 0x021CAF00 + .space 0x8d8 + + .global UNK_021CB7D8 +UNK_021CB7D8: ; 0x021CB7D8 + .space 0x4 + + .global UNK_021CB7DC +UNK_021CB7DC: ; 0x021CB7DC + .space 0x4 + + .global UNK_021CB7E0 +UNK_021CB7E0: ; 0x021CB7E0 + .space 0xc + + .global UNK_021CB7EC +UNK_021CB7EC: ; 0x021CB7EC + .space 0x4 + + .global UNK_021CB7F0 +UNK_021CB7F0: ; 0x021CB7F0 + .space 0xc + + .global UNK_021CB7FC +UNK_021CB7FC: ; 0x021CB7FC + .space 0xc + + .global UNK_021CB808 +UNK_021CB808: ; 0x021CB808 + .space 0xc + + .global UNK_021CB814 +UNK_021CB814: ; 0x021CB814 + .space 0x4 + + .global UNK_021CB818 +UNK_021CB818: ; 0x021CB818 + .space 0x4 + + .global UNK_021CB81C +UNK_021CB81C: ; 0x021CB81C + .space 0x8 + + .global UNK_021CB824 +UNK_021CB824: ; 0x021CB824 + .space 0x14 + + .global UNK_021CB838 +UNK_021CB838: ; 0x021CB838 + .space 0x18 + + .global UNK_021CB850 +UNK_021CB850: ; 0x021CB850 + .space 0x18 + + .global UNK_021CB868 +UNK_021CB868: ; 0x021CB868 + .space 0x4 + + .global UNK_021CB86C +UNK_021CB86C: ; 0x021CB86C + .space 0x4 + + .global UNK_021CB870 +UNK_021CB870: ; 0x021CB870 + .space 0x4 + + .global UNK_021CB874 +UNK_021CB874: ; 0x021CB874 + .space 0x4 + + .global UNK_021CB878 +UNK_021CB878: ; 0x021CB878 + .space 0x4 + + .global UNK_021CB87C +UNK_021CB87C: ; 0x021CB87C + .space 0x4 + + .global UNK_021CB880 +UNK_021CB880: ; 0x021CB880 + .space 0x10 + + .global UNK_021CB890 +UNK_021CB890: ; 0x021CB890 + .space 0x4 + + .global UNK_021CB894 +UNK_021CB894: ; 0x021CB894 + .space 0x4 + + .global UNK_021CB898 +UNK_021CB898: ; 0x021CB898 + .space 0x4 + + .global UNK_021CB89C +UNK_021CB89C: ; 0x021CB89C + .space 0x4 + + .global UNK_021CB8A0 +UNK_021CB8A0: ; 0x021CB8A0 + .space 0x4 + + .global UNK_021CB8A4 +UNK_021CB8A4: ; 0x021CB8A4 + .space 0x18 + + .global UNK_021CB8BC +UNK_021CB8BC: ; 0x021CB8BC + .space 0x18 + + .global UNK_021CB8D4 +UNK_021CB8D4: ; 0x021CB8D4 + .space 0x440 + + .global UNK_021CBD14 +UNK_021CBD14: ; 0x021CBD14 + .space 0x1000 + + .global UNK_021CCD14 +UNK_021CCD14: ; 0x021CCD14 + .space 0x4 + + .global UNK_021CCD18 +UNK_021CCD18: ; 0x021CCD18 + .space 0x4 + + .global UNK_021CCD1C +UNK_021CCD1C: ; 0x021CCD1C + .space 0x4 + + .global UNK_021CCD20 +UNK_021CCD20: ; 0x021CCD20 + .space 0x18 + + .global UNK_021CCD38 +UNK_021CCD38: ; 0x021CCD38 + .space 0x4 + + .global UNK_021CCD3C +UNK_021CCD3C: ; 0x021CCD3C + .space 0xc + + .global UNK_021CCD48 +UNK_021CCD48: ; 0x021CCD48 + .space 0x4 + + .global UNK_021CCD4C +UNK_021CCD4C: ; 0x021CCD4C + .space 0xc + + .global UNK_021CCD58 +UNK_021CCD58: ; 0x021CCD58 + .space 0x14 + + .text + + arm_func_start FUN_020A5A4C +FUN_020A5A4C: ; 0x020A5A4C + mov r1, r0 + mov r0, #0x0 + mov r3, #0x1 +_020A5A58: + clz r2, r1 + rsbs r2, r2, #0x1f + bxcc lr + bic r1, r1, r3, lsl r2 + add r0, r0, #0x1 + b _020A5A58 + + arm_func_start FUN_020A5A70 +FUN_020A5A70: ; 0x020A5A70 + clz r0, r0 + bx lr + + arm_func_start FUN_020A5A78 +FUN_020A5A78: ; 0x020A5A78 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A5D80 + ldr r2, _020A5DA8 ; =UNK_021CA86C + mov r0, #0x0 + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26b] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x82] + ldr r3, [r2, #0x0] + add r1, r3, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0xd + addls pc, pc, r1, lsl #0x2 + b _020A5D4C +_020A5AC4: + b _020A5D4C +_020A5AC8: + b _020A5D4C +_020A5ACC: + b _020A5D4C +_020A5AD0: + b _020A5D4C +_020A5AD4: + b _020A5D4C +_020A5AD8: + b _020A5AFC +_020A5ADC: + b _020A5AFC +_020A5AE0: + b _020A5B24 +_020A5AE4: + b _020A5B4C +_020A5AE8: + b _020A5C74 +_020A5AEC: + b _020A5CA4 +_020A5AF0: + b _020A5D4C +_020A5AF4: + b _020A5C74 +_020A5AF8: + b _020A5CD4 +_020A5AFC: + mov r0, #0x3 + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DAC ; =0x000008F5 + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5B24: + mov r0, #0x3 + bl FUN_020A6C38 + mov r0, #0x0 + ldr r3, _020A5DB0 ; =0x000008FB + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5B4C: + add r1, r3, #0x2200 + ldrh r4, [r1, #0xf8] + strh r0, [r1, #0xf8] + cmp r4, #0x12 + bne _020A5C44 + ldr r1, [r2, #0x0] + add r1, r1, #0x2100 + ldrh r3, [r1, #0x70] + and r12, r3, #0x24 + cmp r12, #0x24 + beq _020A5C44 + orr r3, r3, #0x24 + strh r3, [r1, #0x70] + ldr r2, [r2, #0x0] + add r1, r2, #0x2000 + ldr r3, [r1, #0x264] + and r1, r3, #0xc0000 + cmp r1, #0xc0000 + moveq r0, #0x1 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + and r1, r3, #0x30000 + cmp r1, #0x30000 + movne r3, #0x1 + add r1, r2, #0x2140 + ldr r0, _020A5DB4 ; =FUN_020A6144 + moveq r3, #0x0 + mov r2, #0x0 + str r12, [sp, #0x0] + bl WM_StartConnectEx + cmp r0, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A5C14 + cmp r0, #0x8 + bne _020A5C14 + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =UNK_021CA86C + ldr r3, _020A5DB8 ; =0x0000091C + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C14: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =UNK_021CA86C + ldr r3, _020A5DBC ; =0x00000925 + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C44: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =UNK_021CA86C + ldr r3, _020A5DC0 ; =0x0000092D + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C74: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =UNK_021CA86C + ldr r3, _020A5DC4 ; =0x00000935 + ldr r1, [r0, #0x0] + mov r0, #0x0 + add r1, r1, #0x2140 + mov r2, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CA4: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r1, _020A5DA8 ; =UNK_021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A5DC8 ; =0x0000093C + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CD4: + ldr r0, _020A5DCC ; =FUN_020A6768 + bl WM_PowerOff + cmp r0, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A5D24 + cmp r0, #0x8 + bne _020A5D24 + mov r0, #0xc + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DD0 ; =0x0000094A + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D24: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DD4 ; =0x00000953 + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D4C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =UNK_021CA86C + ldr r3, _020A5DD8 ; =0x00000959 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + mov r1, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D80: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x960 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A5DA8: .word UNK_021CA86C +_020A5DAC: .word 0x000008F5 +_020A5DB0: .word 0x000008FB +_020A5DB4: .word FUN_020A6144 +_020A5DB8: .word 0x0000091C +_020A5DBC: .word 0x00000925 +_020A5DC0: .word 0x0000092D +_020A5DC4: .word 0x00000935 +_020A5DC8: .word 0x0000093C +_020A5DCC: .word FUN_020A6768 +_020A5DD0: .word 0x0000094A +_020A5DD4: .word 0x00000953 +_020A5DD8: .word 0x00000959 + + arm_func_start FUN_020A5DDC +FUN_020A5DDC: ; 0x020A5DDC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A5EF4 +_020A5DF4: + b _020A5E08 +_020A5DF8: + b _020A5EDC +_020A5DFC: + b _020A5EF4 +_020A5E00: + b _020A5EDC +_020A5E04: + b _020A5EF4 +_020A5E08: + ldr r0, _020A5F24 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5E38 + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E38: + ldr r0, _020A5F28 ; =FUN_020A6058 + mov r1, #0x0 + bl WM_Disconnect + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r0, #0x3 + beq _020A5E94 + cmp r0, #0x8 + bne _020A5EAC + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A5F24 ; =UNK_021CA86C + ldr r3, _020A5F2C ; =0x000008B4 + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E94: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EAC: + mov r0, #0xb + bl FUN_020A6C38 + ldr r1, _020A5F24 ; =UNK_021CA86C + mov r0, #0x7 + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r1, r1, #0x2140 + mov r3, #0x8c0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EDC: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EF4: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5F24 ; =UNK_021CA86C + ldr r3, _020A5F30 ; =0x000008D3 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A5F24: .word UNK_021CA86C +_020A5F28: .word FUN_020A6058 +_020A5F2C: .word 0x000008B4 +_020A5F30: .word 0x000008D3 + + arm_func_start FUN_020A5F34 +FUN_020A5F34: ; 0x020A5F34 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _020A5F50 + cmp r0, #0x4 + b _020A601C +_020A5F50: + ldrh r0, [r4, #0x4] + cmp r0, #0xe + beq _020A5F68 + cmp r0, #0xf + beq _020A5FC0 + b _020A5FF0 +_020A5F68: + ldr r0, _020A6048 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5F94 + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A5F94: + mov r0, #0x9 + bl FUN_020A6C38 + ldr r1, _020A6048 ; =UNK_021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A604C ; =0x00000872 + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A5FC0: + ldr r0, [r4, #0x8] + ldrh r0, [r0, #0xe] + mov r0, r0, asr #0x8 + and r0, r0, #0xff + bl FUN_020A89D0 + ldr r0, [r4, #0x8] + mov r1, #0x620 + bl DC_InvalidateRange + ldr r0, [r4, #0x8] + bl FUN_020A8934 + ldmia sp!, {r4,lr} + bx lr +_020A5FF0: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6048 ; =UNK_021CA86C + ldrh r2, [r4, #0x4] + ldr r0, [r0, #0x0] + ldr r3, _020A6050 ; =0x00000881 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A601C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6048 ; =UNK_021CA86C + ldr r3, _020A6054 ; =0x0000088C + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A6048: .word UNK_021CA86C +_020A604C: .word 0x00000872 +_020A6050: .word 0x00000881 +_020A6054: .word 0x0000088C + + arm_func_start FUN_020A6058 +FUN_020A6058: ; 0x020A6058 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6108 +_020A6070: + b _020A6084 +_020A6074: + b _020A60F0 +_020A6078: + b _020A6108 +_020A607C: + b _020A60F0 +_020A6080: + b _020A6108 +_020A6084: + ldr r0, _020A6138 ; =UNK_021CA86C + ldr r1, [r0, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A60B4 + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A60B4: + add r1, r1, #0x2200 + mov r2, #0x0 + mov r0, #0x3 + strh r2, [r1, #0x82] + bl FUN_020A6C38 + ldr r1, _020A6138 ; =UNK_021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A613C ; =0x0000083D + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A60F0: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6108: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6138 ; =UNK_021CA86C + ldr r3, _020A6140 ; =0x0000084F + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6138: .word UNK_021CA86C +_020A613C: .word 0x0000083D +_020A6140: .word 0x0000084F + + arm_func_start FUN_020A6144 +FUN_020A6144: ; 0x020A6144 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r0, [r4, #0x2] + cmp r0, #0xc + addls pc, pc, r0, lsl #0x2 + b _020A638C +_020A615C: + b _020A6190 +_020A6160: + b _020A6364 +_020A6164: + b _020A638C +_020A6168: + b _020A638C +_020A616C: + b _020A638C +_020A6170: + b _020A638C +_020A6174: + b _020A6378 +_020A6178: + b _020A638C +_020A617C: + b _020A638C +_020A6180: + b _020A638C +_020A6184: + b _020A638C +_020A6188: + b _020A6378 +_020A618C: + b _020A6378 +_020A6190: + ldrh r0, [r4, #0x8] + cmp r0, #0x9 + bgt _020A61D0 + cmp r0, #0x0 + addge pc, pc, r0, lsl #0x2 + b _020A6338 + b _020A6338 + b _020A6338 + b _020A6338 + b _020A6338 + b _020A6338 + b _020A6338 + b _020A63B0 + b _020A6258 + b _020A61E0 + b _020A61E0 +_020A61D0: + cmp r0, #0x1a + ldmeqia sp!, {r4,lr} + bxeq lr + b _020A6338 +_020A61E0: + ldr r1, _020A63B8 ; =UNK_021CA86C + ldr r2, [r1, #0x0] + add r0, r2, #0x2000 + ldr r0, [r0, #0x260] + sub r0, r0, #0x8 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A63B0 +_020A6200: + b _020A6220 +_020A6204: + b _020A6230 +_020A6208: + b _020A6214 +_020A620C: + b _020A63B0 +_020A6210: + b _020A624C +_020A6214: + add r0, r2, #0x2200 + mov r1, #0x0 + strh r1, [r0, #0x82] +_020A6220: + mov r0, #0xc + bl FUN_020A6C38 + ldmia sp!, {r4,lr} + bx lr +_020A6230: + add r0, r2, #0x2200 + mov r2, #0x0 + strh r2, [r0, #0x82] + ldr r0, [r1, #0x0] + mov r1, #0x6 + add r0, r0, #0x2200 + strh r1, [r0, #0x80] +_020A624C: + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6258: + ldr r1, _020A63B8 ; =UNK_021CA86C + ldr r3, [r1, #0x0] + add r0, r3, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A6284 + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6284: + ldrh r2, [r4, #0xa] + cmp r2, #0x1 + blo _020A632C + ldr r0, _020A63BC ; =0x000007D7 + cmp r2, r0 + bhi _020A632C + add r0, r3, #0x2200 + strh r2, [r0, #0x82] + ldr r1, [r1, #0x0] + ldr r0, _020A63C0 ; =FUN_020A5F34 + add r1, r1, #0x1500 + mov r2, #0x620 + bl WM_StartDCF + cmp r0, #0x2 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A6300 + cmp r0, #0x8 + bne _020A6300 + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =UNK_021CA86C + ldr r3, _020A63C4 ; =0x000007ED + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A6300: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =UNK_021CA86C + ldr r3, _020A63C8 ; =0x000007F6 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A632C: + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6338: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =UNK_021CA86C + ldrh r2, [r4, #0x8] + ldr r0, [r0, #0x0] + ldr r3, _020A63CC ; =0x00000804 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A6364: + ldr r0, _020A63B8 ; =UNK_021CA86C + ldrh r1, [r4, #0xe] + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0xf8] +_020A6378: + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A638C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =UNK_021CA86C + ldr r3, _020A63D0 ; =0x0000081B + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C +_020A63B0: + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A63B8: .word UNK_021CA86C +_020A63BC: .word 0x000007D7 +_020A63C0: .word FUN_020A5F34 +_020A63C4: .word 0x000007ED +_020A63C8: .word 0x000007F6 +_020A63CC: .word 0x00000804 +_020A63D0: .word 0x0000081B + + arm_func_start FUN_020A63D4 +FUN_020A63D4: ; 0x020A63D4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6438 +_020A63EC: + b _020A6400 +_020A63F0: + b _020A6428 +_020A63F4: + b _020A6438 +_020A63F8: + b _020A6438 +_020A63FC: + b _020A6438 +_020A6400: + mov r0, #0x3 + bl FUN_020A6C38 + mov r0, #0x0 + ldr r3, _020A6460 ; =0x00000783 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6428: + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6438: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6464 ; =0x00000793 + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6460: .word 0x00000783 +_020A6464: .word 0x00000793 + + arm_func_start FUN_020A6468 +FUN_020A6468: ; 0x020A6468 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldrh r0, [r5, #0x2] + mov r4, #0x14 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6714 +_020A6488: + b _020A649C +_020A648C: + b _020A6704 +_020A6490: + b _020A6714 +_020A6494: + b _020A6714 +_020A6498: + b _020A6714 +_020A649C: + ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x5 + bne _020A64D0 + mov r0, #0x6 + bl FUN_020A6C38 + mov r0, #0x0 + ldr r3, _020A6740 ; =0x00000704 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C +_020A64D0: + ldr r1, _020A673C ; =UNK_021CA86C + ldr r2, [r1, #0x0] + add r0, r2, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x6 + beq _020A64FC + cmp r0, #0x7 + beq _020A6674 + cmp r0, #0xd + beq _020A6684 + b _020A6694 +_020A64FC: + add r0, r2, #0x2200 + mov r2, #0x7 + strh r2, [r0, #0x80] + ldrh r0, [r5, #0x8] + cmp r0, #0x5 + bne _020A6588 + ldr r0, [r1, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldrh r0, [r5, #0xe] + mov r4, #0x0 + cmp r0, #0x0 + ble _020A6588 + ldr r8, _020A6744 ; =0x0000071A + mov r6, r4 + mov r7, #0x7 +_020A6548: + add r0, r5, r4, lsl #0x1 + add r2, r5, r4, lsl #0x2 + ldrh r1, [r0, #0x50] + ldr r0, [r2, #0x10] + bl FUN_020A8298 + str r8, [sp, #0x0] + add r0, r5, r4, lsl #0x2 + ldr r2, [r0, #0x10] + mov r0, r7 + mov r1, r6 + mov r3, r5 + bl FUN_020A6CE0 + ldrh r0, [r5, #0xe] + add r4, r4, #0x1 + cmp r4, r0 + blt _020A6548 +_020A6588: + ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r1, [r0, #0x264] + and r0, r1, #0xc00000 + cmp r0, #0xc00000 + bne _020A65F4 + ldr r0, _020A6748 ; =0x00003FFE + and r0, r1, r0 + bl FUN_020A5A4C + movs r1, r0 + beq _020A65F4 + ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r6, [r0, #0x284] + mov r0, r6 + bl _u32_div_f + cmp r1, #0x0 + bne _020A65F4 + ldr r4, _020A674C ; =0x00000728 + mov r1, #0x0 + mov r2, r6 + mov r3, r1 + mov r0, #0x8 + str r4, [sp, #0x0] + bl FUN_020A6CE0 +_020A65F4: + ldrh r0, [r5, #0xa] + bl FUN_020A5A70 + rsb r0, r0, #0x20 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_020A6D8C + ldr r1, _020A673C ; =UNK_021CA86C + mov r2, #0x1 + mov r2, r2, lsl r0 + ldr r0, [r1, #0x0] + mov r2, r2, asr #0x1 + add r0, r0, #0x2200 + strh r2, [r0, #0x8e] + ldr r0, [r1, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldr r3, _020A673C ; =UNK_021CA86C + ldr r2, _020A6750 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A6754 ; =FUN_020A6468 + add r1, r1, #0x2000 + ldr r4, [r1, #0x284] + add r4, r4, #0x1 + str r4, [r1, #0x284] + ldr r1, [r3, #0x0] + add r1, r1, r2 + bl WM_StartScanEx + mov r4, r0 + b _020A6694 +_020A6674: + ldr r0, _020A6758 ; =FUN_020A63D4 + bl WM_EndScan + mov r4, r0 + b _020A6694 +_020A6684: + bl FUN_020A6B28 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6694: + cmp r4, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r4, #0x3 + beq _020A66DC + cmp r4, #0x8 + bne _020A66DC + mov r0, #0xc + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A675C ; =0x00000753 + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A66DC: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6760 ; =0x0000075C + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6704: + bl FUN_020A6B28 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6714: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6764 ; =0x0000076D + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A673C: .word UNK_021CA86C +_020A6740: .word 0x00000704 +_020A6744: .word 0x0000071A +_020A6748: .word 0x00003FFE +_020A674C: .word 0x00000728 +_020A6750: .word 0x00002288 +_020A6754: .word FUN_020A6468 +_020A6758: .word FUN_020A63D4 +_020A675C: .word 0x00000753 +_020A6760: .word 0x0000075C +_020A6764: .word 0x0000076D + + arm_func_start FUN_020A6768 +FUN_020A6768: ; 0x020A6768 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x2] + mov r2, #0x14 + cmp r1, #0x4 + addls pc, pc, r1, lsl #0x2 + b _020A6A0C +_020A6784: + b _020A6798 +_020A6788: + b _020A69CC +_020A678C: + b _020A6A0C +_020A6790: + b _020A6A0C +_020A6794: + b _020A6A0C +_020A6798: + ldrh r0, [r0, #0x0] + cmp r0, #0x19 + bgt _020A67D4 + cmp r0, #0x19 + bge _020A68B4 + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020A692C +_020A67B8: + b _020A692C +_020A67BC: + b _020A692C +_020A67C0: + b _020A692C +_020A67C4: + b _020A67F4 +_020A67C8: + b _020A6804 +_020A67CC: + b _020A6868 +_020A67D0: + b _020A6890 +_020A67D4: + cmp r0, #0x1d + bgt _020A67E8 + cmp r0, #0x1d + beq _020A68A0 + b _020A692C +_020A67E8: + cmp r0, #0x27 + beq _020A68DC + b _020A692C +_020A67F4: + ldr r0, _020A6A4C ; =FUN_020A6768 + bl WM_PowerOn + mov r2, r0 + b _020A692C +_020A6804: + bl WM_Finish + cmp r0, #0x0 + beq _020A6818 + cmp r0, #0x4 + b _020A6840 +_020A6818: + mov r0, #0x1 + bl FUN_020A6C38 + mov r0, #0x0 + ldr r3, _020A6A50 ; =0x00000663 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6840: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6A54 ; =0x0000066C + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6868: + mov r0, #0x3 + bl FUN_020A6C38 + mov r0, #0x0 + ldr r3, _020A6A58 ; =0x00000673 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6890: + ldr r0, _020A6A4C ; =FUN_020A6768 + bl WM_Disable + mov r2, r0 + b _020A692C +_020A68A0: + ldr r0, _020A6A4C ; =FUN_020A6768 + mov r1, #0x0 + bl WM_SetBeaconIndication + mov r2, r0 + b _020A692C +_020A68B4: + ldr r1, _020A6A5C ; =UNK_021CA86C + ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r3, [r1, #0x0] + add r2, r3, #0x2000 + ldrb r1, [r2, #0x250] + ldrb r2, [r2, #0x251] + add r3, r3, #0x2200 + bl WM_SetWEPKeyEx + mov r2, r0 + b _020A692C +_020A68DC: + ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r2, [r0, #0x0] + add r0, r2, #0x2000 + ldr r1, [r0, #0x264] + and r0, r1, #0xc0000 + cmp r0, #0xc0000 + moveq r0, #0x1 + movne r0, #0x0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + and r1, r1, #0x30000 + cmp r1, #0x30000 + movne r3, #0x1 + add r1, r2, #0x2140 + ldr r0, _020A6A60 ; =FUN_020A6144 + moveq r3, #0x0 + mov r2, #0x0 + str r12, [sp, #0x0] + bl WM_StartConnectEx + mov r2, r0 +_020A692C: + cmp r2, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r2, #0x3 + beq _020A698C + cmp r2, #0x8 + bne _020A698C + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r3, _020A6A64 ; =0x000006AF + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A698C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r3, _020A6A68 ; =0x000006B8 + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A69CC: + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r3, _020A6A6C ; =0x000006DE + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6A0C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r3, _020A6A70 ; =0x000006E8 + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6A4C: .word FUN_020A6768 +_020A6A50: .word 0x00000663 +_020A6A54: .word 0x0000066C +_020A6A58: .word 0x00000673 +_020A6A5C: .word UNK_021CA86C +_020A6A60: .word FUN_020A6144 +_020A6A64: .word 0x000006AF +_020A6A68: .word 0x000006B8 +_020A6A6C: .word 0x000006DE +_020A6A70: .word 0x000006E8 + + arm_func_start FUN_020A6A74 +FUN_020A6A74: ; 0x020A6A74 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x2] + cmp r1, #0x8 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r1, [r0, #0x4] + cmp r1, #0x16 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r0, [r0, #0x6] + cmp r0, #0x25 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A6B24 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + sub r0, r0, #0x8 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6B18 +_020A6AD8: + b _020A6AEC +_020A6ADC: + b _020A6B00 +_020A6AE0: + b _020A6B10 +_020A6AE4: + b _020A6B18 +_020A6AE8: + b _020A6B00 +_020A6AEC: + mov r0, #0xc + bl FUN_020A6C38 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B00: + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B10: + mov r0, #0xc + bl FUN_020A6C38 +_020A6B18: + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B24: .word UNK_021CA86C + + arm_func_start FUN_020A6B28 +FUN_020A6B28: ; 0x020A6B28 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020A6B98 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2000 + ldrb r0, [r1, #0x26b] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A6B9C ; =FUN_020A5A78 + mov r2, #0x1 + strb r2, [r1, #0x26b] + bl WM_Reset + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x610 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B98: .word UNK_021CA86C +_020A6B9C: .word FUN_020A5A78 + + arm_func_start FUN_020A6BA0 +FUN_020A6BA0: ; 0x020A6BA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A88A8 + bl FUN_020A6BBC + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A6BBC +FUN_020A6BBC: ; 0x020A6BBC + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + bl OS_DisableInterrupts + ldr r2, _020A6C28 ; =UNK_021CA86C + ldr r1, _020A6C2C ; =0x000022CC + ldr r2, [r2, #0x0] + mov r4, r0 + add r0, r2, r1 + bl OS_CancelAlarm + ldr r0, _020A6C28 ; =UNK_021CA86C + ldr r12, [r0, #0x0] + add r0, r12, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A6C14 + ldr r0, _020A6C2C ; =0x000022CC + ldr r1, _020A6C30 ; =0x022F5341 + mov r2, #0x0 + ldr r3, _020A6C34 ; =FUN_020A6BA0 + add r0, r12, r0 + str r2, [sp, #0x0] + bl OS_SetAlarm +_020A6C14: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A6C28: .word UNK_021CA86C +_020A6C2C: .word 0x000022CC +_020A6C30: .word 0x022F5341 +_020A6C34: .word FUN_020A6BA0 + + arm_func_start FUN_020A6C38 +FUN_020A6C38: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A6CD0 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A6C78 + cmp r5, #0x9 + beq _020A6C78 + ldr r0, _020A6CD4 ; =0x000022CC + add r0, r1, r0 + bl OS_CancelAlarm +_020A6C78: + ldr r0, _020A6CD0 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0xb + strne r5, [r0, #0x260] + cmp r5, #0x9 + bne _020A6CBC + mov r2, #0x0 + ldr r0, _020A6CD0 ; =UNK_021CA86C + str r2, [sp, #0x0] + ldr r5, [r0, #0x0] + ldr r0, _020A6CD4 ; =0x000022CC + ldr r1, _020A6CD8 ; =0x022F5341 + ldr r3, _020A6CDC ; =FUN_020A6BA0 + add r0, r5, r0 + bl OS_SetAlarm +_020A6CBC: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6CD0: .word UNK_021CA86C +_020A6CD4: .word 0x000022CC +_020A6CD8: .word 0x022F5341 +_020A6CDC: .word FUN_020A6BA0 + + arm_func_start FUN_020A6CE0 +FUN_020A6CE0: ; 0x020A6CE0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr ip, _020A6D38 ; =UNK_021CA86C + ldr r12, [r12, #0x0] + add r12, r12, #0x2000 + ldr lr, [r12, #0x27c] + cmp lr, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {lr} + bxeq lr + ldr lr, [sp, #0x18] + strh r0, [sp, #0x0] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + strh r1, [sp, #0x2] + ldr r1, [r12, #0x27c] + add r0, sp, #0x0 + blx r1 + add sp, sp, #0x14 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6D38: .word UNK_021CA86C + + arm_func_start FUN_020A6D3C +FUN_020A6D3C: ; 0x020A6D3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr ip, _020A6D88 ; =UNK_021CA86C + mov r5, r0 + ldr r0, [r12, #0x0] + mov r4, r1 + add r1, r0, #0x2200 + ldrsh r0, [r1, #0x80] + mov r12, #0x0 + mov lr, r2 + strh r12, [r1, #0x80] + str r3, [sp, #0x0] + mov r1, r5 + mov r2, r4 + mov r3, lr + bl FUN_020A6CE0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6D88: .word UNK_021CA86C + + arm_func_start FUN_020A6D8C +FUN_020A6D8C: ; 0x020A6D8C + stmdb sp!, {r4-r6,lr} + ldr r1, _020A6E24 ; =UNK_021CA86C + mov r2, r0 + ldr r1, [r1, #0x0] + mov r3, #0x0 + add r1, r1, #0x2000 + ldr r1, [r1, #0x264] + mov r6, #0x1 + ldr r5, _020A6E28 ; =0x4EC4EC4F + ldr r4, _020A6E2C ; =0x0000000D +_020A6DB4: + smull r12, lr, r5, r2 + mov lr, lr, asr #0x2 + mov r12, r2, lsr #0x1f + add lr, r12, lr + smull r12, lr, r4, lr + sub lr, r2, r12 + add r12, lr, #0x1 + mov r12, r6, lsl r12 + ands r12, r1, r12 + bne _020A6DEC + add r3, r3, #0x1 + cmp r3, #0xd + add r2, r2, #0x1 + blt _020A6DB4 +_020A6DEC: + ldr r1, _020A6E28 ; =0x4EC4EC4F + add r3, r0, r3 + smull r0, r4, r1, r3 + mov r4, r4, asr #0x2 + mov r0, r3, lsr #0x1f + ldr r2, _020A6E2C ; =0x0000000D + add r4, r0, r4 + smull r0, r1, r2, r4 + sub r4, r3, r0 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A6E24: .word UNK_021CA86C +_020A6E28: .word 0x4EC4EC4F +_020A6E2C: .word 0x0000000D + + arm_func_start FUN_020A6E30 +FUN_020A6E30: ; 0x020A6E30 + ldr r0, _020A6E48 ; =UNK_021CA86C + ldr r1, _020A6E4C ; =0x00AAA082 + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x264] + bx lr + .balign 4 +_020A6E48: .word UNK_021CA86C +_020A6E4C: .word 0x00AAA082 + + arm_func_start FUN_020A6E50 +FUN_020A6E50: ; 0x020A6E50 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r0, r2 + mov r4, r1 + bl FUN_020A7148 + ldr r2, _020A6FF4 ; =UNK_021CA86C + mov r3, #0x400 + ldr r1, [r2, #0x0] + mov r0, #0x0 + add r12, r1, #0x1500 + add r1, r1, #0x2000 + str r12, [r1, #0x288] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r3, [r1, #0x8c] + bl FUN_020A6D8C + ldr r1, _020A6FF4 ; =UNK_021CA86C + mov r2, #0x1 + mov r2, r2, lsl r0 + ldr r0, [r1, #0x0] + mov r2, r2, asr #0x1 + add r0, r0, #0x2200 + strh r2, [r0, #0x8e] + ldr r0, [r1, #0x0] + add r0, r0, #0x2200 + ldrh r0, [r0, #0x68] + cmp r0, #0x0 + bne _020A6EC8 + bl WM_GetDispersionScanPeriod +_020A6EC8: + ldr r2, _020A6FF4 ; =UNK_021CA86C + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x90] + ldr r1, [r2, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x264] + and r0, r0, #0x300000 + cmp r0, #0x300000 + movne r2, #0x1 + moveq r2, #0x0 + add r0, r1, #0x2200 + strh r2, [r0, #0x98] + cmp r5, #0x0 + bne _020A6F24 + ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r1, _020A6FF8 ; =0x00002292 + ldr r2, [r0, #0x0] + ldr r0, _020A6FFC ; =UNK_020FF590 + add r1, r2, r1 + mov r2, #0x6 + bl MI_CpuCopy8 + b _020A6F40 +_020A6F24: + ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r1, _020A6FF8 ; =0x00002292 + ldr r2, [r0, #0x0] + mov r0, r5 + add r1, r2, r1 + mov r2, #0x6 + bl MI_CpuCopy8 +_020A6F40: + cmp r4, #0x0 + beq _020A6F54 + ldr r0, _020A7000 ; =UNK_020FF598 + cmp r4, r0 + bne _020A6F88 +_020A6F54: + ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r1, _020A7004 ; =0x0000229C + ldr r2, [r0, #0x0] + ldr r0, _020A7000 ; =UNK_020FF598 + add r1, r2, r1 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, _020A6FF4 ; =UNK_021CA86C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] + b _020A6FD4 +_020A6F88: + ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r1, _020A7004 ; =0x0000229C + ldr r2, [r0, #0x0] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r1, #0x0 +_020A6FA8: + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + beq _020A6FC4 + add r1, r1, #0x1 + cmp r1, #0x20 + add r4, r4, #0x1 + blt _020A6FA8 +_020A6FC4: + ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] +_020A6FD4: + ldr r0, _020A6FF4 ; =UNK_021CA86C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x284] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6FF4: .word UNK_021CA86C +_020A6FF8: .word 0x00002292 +_020A6FFC: .word UNK_020FF590 +_020A7000: .word UNK_020FF598 +_020A7004: .word 0x0000229C + + arm_func_start FUN_020A7008 +FUN_020A7008: ; 0x020A7008 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + bne _020A705C + ldr r1, _020A7134 ; =UNK_021CA86C + mov r3, #0x3 + ldr r0, [r1, #0x0] + mov r2, #0x0 + add r0, r0, #0x2000 + str r3, [r0, #0x26c] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x274] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x278] + b _020A7118 +_020A705C: + ldr r1, _020A7134 ; =UNK_021CA86C + ldr r2, [r5, #0x0] + ldr r0, [r1, #0x0] + and r2, r2, #0x3 + add r0, r0, #0x2000 + str r2, [r0, #0x26c] + ldr r3, [r5, #0x4] + ldr r0, [r5, #0x8] + and r2, r3, #0x3 + rsb r2, r2, #0x4 + and r2, r2, #0x3 + add r2, r2, #0xc + cmp r2, r0 + bls _020A70B4 + ldr r0, [r1, #0x0] + mov r2, #0x0 + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x274] + b _020A7104 +_020A70B4: + ldr r0, [r1, #0x0] + add r2, r3, #0x3 + bic r2, r2, #0x3 + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r2, [r5, #0x4] + ldr r0, [r1, #0x0] + and r2, r2, #0x3 + rsb r2, r2, #0x4 + ldr r3, [r5, #0x8] + and r2, r2, #0x3 + sub r2, r3, r2 + add r0, r0, #0x2000 + str r2, [r0, #0x274] + ldr r0, [r1, #0x0] + mov r1, #0x0 + add r2, r0, #0x2000 + ldr r0, [r2, #0x270] + ldr r2, [r2, #0x274] + bl MI_CpuFill8 +_020A7104: + ldr r0, _020A7134 ; =UNK_021CA86C + ldr r1, [r5, #0xc] + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x278] +_020A7118: + ldr r0, _020A7134 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r4, [r0, #0x27c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A7134: .word UNK_021CA86C + + arm_func_start FUN_020A7138 +FUN_020A7138: + ldr r0, _020A7144 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020A7144: .word UNK_021CA86C + + arm_func_start FUN_020A7148 +FUN_020A7148: ; 0x020A7148 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A71EC ; =UNK_021CA86C + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r3, r1, #0x2000 + cmp r1, #0x0 + ldr r4, [r3, #0x264] + bne _020A7188 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7188: + ands r3, r5, #0x8000 + beq _020A71A4 + ldr r3, _020A71F0 ; =0x00003FFE + orr r2, r2, r3 + ands r3, r5, r3 + ldreq r3, _020A71F4 ; =0x0000A082 + orreq r5, r5, r3 +_020A71A4: + ands r3, r5, #0x20000 + orrne r2, r2, #0x10000 + ands r3, r5, #0x80000 + orrne r2, r2, #0x40000 + ands r3, r5, #0x200000 + orrne r2, r2, #0x100000 + ands r3, r5, #0x800000 + orrne r2, r2, #0x400000 + mvn r2, r2 + and r2, r4, r2 + orr r2, r5, r2 + add r1, r1, #0x2000 + str r2, [r1, #0x264] + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A71EC: .word UNK_021CA86C +_020A71F0: .word 0x00003FFE +_020A71F4: .word 0x0000A082 + + arm_func_start FUN_020A71F8 +FUN_020A71F8: ; 0x020A71F8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7228 ; =UNK_021CA86C + mov r4, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + addne r1, r1, #0x2000 + ldrne r4, [r1, #0x260] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A7228: .word UNK_021CA86C + + arm_func_start FUN_020A722C +FUN_020A722C: ; 0x020A722C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r1, _020A747C ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7260 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7260: + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0xd + addls pc, pc, r2, lsl #0x2 + b _020A7308 +_020A7274: + b _020A7308 +_020A7278: + b _020A72C0 +_020A727C: + b _020A7308 +_020A7280: + b _020A7320 +_020A7284: + b _020A7308 +_020A7288: + b _020A7308 +_020A728C: + b _020A72D4 +_020A7290: + b _020A7308 +_020A7294: + b _020A7308 +_020A7298: + b _020A7320 +_020A729C: + b _020A7308 +_020A72A0: + b _020A7308 +_020A72A4: + b _020A7320 +_020A72A8: + b _020A72AC +_020A72AC: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r5,lr} + bx lr +_020A72C0: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A72D4: + mov r0, #0xd + bl FUN_020A6C38 + ldr r1, _020A747C ; =UNK_021CA86C + mov r0, r4 + ldr r1, [r1, #0x0] + mov r2, #0x9 + add r1, r1, #0x2200 + strh r2, [r1, #0x80] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x3 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7308: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7320: + ldrb r0, [r1, #0x26b] + cmp r0, #0x1 + bne _020A734C + mov r0, #0xd + bl FUN_020A6C38 + ldr r0, _020A747C ; =UNK_021CA86C + mov r1, #0x9 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7464 +_020A734C: + bl WMi_GetStatusAddress + mov r5, r0 + mov r1, #0x2 + bl DC_InvalidateRange + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _020A737C + cmp r0, #0x1 + beq _020A73BC + cmp r0, #0x2 + beq _020A73C8 + b _020A73D4 +_020A737C: + bl WM_Finish + cmp r0, #0x0 + bne _020A73F0 + mov r0, #0x1 + bl FUN_020A6C38 + ldr r1, _020A747C ; =UNK_021CA86C + mov r0, r4 + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r1, r1, #0x2200 + strh r2, [r1, #0x80] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A73BC: + ldr r0, _020A7480 ; =FUN_020A6768 + bl WM_Disable + b _020A73F0 +_020A73C8: + ldr r0, _020A7480 ; =FUN_020A6768 + bl WM_PowerOff + b _020A73F0 +_020A73D4: + ldr r1, _020A747C ; =UNK_021CA86C + ldr r0, _020A7484 ; =FUN_020A5A78 + ldr r1, [r1, #0x0] + mov r2, #0x1 + add r1, r1, #0x2000 + strb r2, [r1, #0x26b] + bl WM_Reset +_020A73F0: + cmp r0, #0x2 + beq _020A740C + cmp r0, #0x3 + beq _020A7444 + cmp r0, #0x8 + beq _020A742C + b _020A7444 +_020A740C: + mov r0, #0xd + bl FUN_020A6C38 + ldr r0, _020A747C ; =UNK_021CA86C + mov r1, #0x9 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7464 +_020A742C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7444: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7464: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A747C: .word UNK_021CA86C +_020A7480: .word FUN_020A6768 +_020A7484: .word FUN_020A5A78 + + arm_func_start FUN_020A7488 +FUN_020A7488: ; 0x020A7488 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A75B8 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A74B4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A74B4: + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x3 + beq _020A74E4 + cmp r2, #0x9 + beq _020A7504 + cmp r2, #0xa + bne _020A74F4 + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A74E4: + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A74F4: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7504: + ldrb r0, [r1, #0x26b] + cmp r0, #0x1 + bne _020A7530 + mov r0, #0xa + bl FUN_020A6C38 + ldr r0, _020A75B8 ; =UNK_021CA86C + mov r1, #0x6 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A75A4 +_020A7530: + ldr r0, _020A75BC ; =FUN_020A5DDC + bl WM_EndDCF + cmp r0, #0x2 + beq _020A7554 + cmp r0, #0x3 + beq _020A7588 + cmp r0, #0x8 + beq _020A7574 + b _020A7588 +_020A7554: + mov r0, #0xa + bl FUN_020A6C38 + ldr r0, _020A75B8 ; =UNK_021CA86C + mov r1, #0x6 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A75A4 +_020A7574: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4,lr} + bx lr +_020A7588: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4,lr} + bx lr +_020A75A4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A75B8: .word UNK_021CA86C +_020A75BC: .word FUN_020A5DDC + + arm_func_start FUN_020A75C0 +FUN_020A75C0: ; 0x020A75C0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r2, _020A7814 ; =UNK_021CA86C + mov r4, r0 + ldr r12, [r2, #0x0] + cmp r12, #0x0 + bne _020A7600 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7600: + add r1, r12, #0x2000 + ldr r3, [r1, #0x260] + cmp r3, #0x3 + beq _020A7624 + cmp r3, #0x8 + beq _020A7734 + cmp r3, #0x9 + beq _020A7748 + b _020A775C +_020A7624: + cmp r7, #0x0 + bne _020A7640 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7640: + ldrh r3, [r7, #0x3c] + cmp r3, #0x0 + beq _020A7660 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7660: + cmp r6, #0x0 + beq _020A76E8 + ldrb r3, [r6, #0x0] + cmp r3, #0x4 + bhs _020A7680 + ldrb r0, [r6, #0x1] + cmp r0, #0x4 + blo _020A7698 +_020A7680: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7698: + strb r3, [r1, #0x250] + ldr r0, [r2, #0x0] + ldrb r1, [r6, #0x1] + add r0, r0, #0x2000 + strb r1, [r0, #0x251] + ldr r1, [r2, #0x0] + add r0, r1, #0x2000 + ldrb r0, [r0, #0x250] + cmp r0, #0x0 + bne _020A76D4 + add r0, r1, #0x2200 + mov r1, #0x0 + mov r2, #0x50 + bl MI_CpuFill8 + b _020A76F8 +_020A76D4: + add r0, r6, #0x2 + add r1, r1, #0x2200 + mov r2, #0x50 + bl MI_CpuCopy8 + b _020A76F8 +_020A76E8: + add r0, r12, #0x2200 + mov r1, #0x0 + mov r2, #0x52 + bl MI_CpuFill8 +_020A76F8: + ldr r1, _020A7814 ; =UNK_021CA86C + mov r0, r7 + ldr r1, [r1, #0x0] + mov r2, #0xc0 + add r1, r1, #0x2140 + bl MI_CpuCopy8 + ldr r1, _020A7814 ; =UNK_021CA86C + mov r0, r5 + ldr r1, [r1, #0x0] + add r1, r1, #0x2100 + ldrh r2, [r1, #0x6e] + orr r2, r2, #0x3 + strh r2, [r1, #0x70] + bl FUN_020A7148 + b _020A7770 +_020A7734: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7748: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020A775C: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7770: + ldr r1, _020A7818 ; =0x0000FFFF + ldr r0, _020A781C ; =FUN_020A6768 + mov r3, r1 + mov r2, #0x50 + str r1, [sp, #0x0] + bl WM_SetLifeTime + cmp r0, #0x2 + beq _020A77A4 + cmp r0, #0x3 + beq _020A77DC + cmp r0, #0x8 + beq _020A77C4 + b _020A77DC +_020A77A4: + mov r0, #0x8 + bl FUN_020A6C38 + ldr r0, _020A7814 ; =UNK_021CA86C + mov r1, #0x5 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A77FC +_020A77C4: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020A77DC: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r7,lr} + bx lr +_020A77FC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A7814: .word UNK_021CA86C +_020A7818: .word 0x0000FFFF +_020A781C: .word FUN_020A6768 + + arm_func_start FUN_020A7820 +FUN_020A7820: ; 0x020A7820 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A78D4 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A784C + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A784C: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x3 + beq _020A78A0 + cmp r1, #0x6 + beq _020A7870 + cmp r1, #0x7 + beq _020A7890 + b _020A78B0 +_020A7870: + mov r0, #0x7 + bl FUN_020A6C38 + ldr r0, _020A78D4 ; =UNK_021CA86C + mov r1, #0x4 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A78C0 +_020A7890: + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A78A0: + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A78B0: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A78C0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A78D4: .word UNK_021CA86C + + arm_func_start FUN_020A78D8 +FUN_020A78D8: ; 0x020A78D8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r1, _020A7A84 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7918 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7918: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x3 + beq _020A79A0 + cmp r1, #0x5 + beq _020A793C + cmp r1, #0x6 + beq _020A7964 + b _020A798C +_020A793C: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7964: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020A798C: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A79A0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + ldr r0, _020A7A84 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldr r3, _020A7A84 ; =UNK_021CA86C + ldr r2, _020A7A88 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A7A8C ; =FUN_020A6468 + add r1, r1, #0x2000 + ldr r5, [r1, #0x284] + add r5, r5, #0x1 + str r5, [r1, #0x284] + ldr r1, [r3, #0x0] + add r1, r1, r2 + bl WM_StartScanEx + cmp r0, #0x2 + beq _020A7A14 + cmp r0, #0x3 + beq _020A7A4C + cmp r0, #0x8 + beq _020A7A34 + b _020A7A4C +_020A7A14: + mov r0, #0x5 + bl FUN_020A6C38 + ldr r0, _020A7A84 ; =UNK_021CA86C + mov r1, #0x3 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7A6C +_020A7A34: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7A4C: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7A6C: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A7A84: .word UNK_021CA86C +_020A7A88: .word 0x00002288 +_020A7A8C: .word FUN_020A6468 + + arm_func_start FUN_020A7A90 +FUN_020A7A90: ; 0x020A7A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020A7AA8 + cmp r1, #0x0 + bne _020A7AB8 +_020A7AA8: + bl FUN_020A7820 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A7AB8: + bl FUN_020A78D8 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A7AC8 +FUN_020A7AC8: ; 0x020A7AC8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7BCC ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7AF4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7AF4: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7B24 + cmp r1, #0x3 + beq _020A7B44 + cmp r1, #0x4 + bne _020A7B34 + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A7B24: + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A7B34: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7B44: + ldr r0, _020A7BD0 ; =FUN_020A6768 + bl WM_PowerOff + cmp r0, #0x2 + beq _020A7B68 + cmp r0, #0x3 + beq _020A7B9C + cmp r0, #0x8 + beq _020A7B88 + b _020A7B9C +_020A7B68: + mov r0, #0x4 + bl FUN_020A6C38 + ldr r0, _020A7BCC ; =UNK_021CA86C + mov r1, #0x2 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7BB8 +_020A7B88: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4,lr} + bx lr +_020A7B9C: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4,lr} + bx lr +_020A7BB8: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A7BCC: .word UNK_021CA86C +_020A7BD0: .word FUN_020A6768 + + arm_func_start FUN_020A7BD4 +FUN_020A7BD4: ; 0x020A7BD4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r1, _020A7E00 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7C08 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C08: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7C2C + cmp r1, #0x2 + beq _020A7C3C + cmp r1, #0x3 + beq _020A7C4C + b _020A7C5C +_020A7C2C: + mov r0, r6 + mov r1, r5 + bl FUN_020A7008 + b _020A7C6C +_020A7C3C: + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C4C: + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C5C: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C6C: + ldr r0, _020A7E00 ; =UNK_021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2000 + ldr r1, [r1, #0x26c] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl WM_Init + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020A7CE0 +_020A7C94: + b _020A7CFC +_020A7C98: + b _020A7CE0 +_020A7C9C: + b _020A7CE0 +_020A7CA0: + b _020A7CB0 +_020A7CA4: + b _020A7CCC +_020A7CA8: + b _020A7CE0 +_020A7CAC: + b _020A7CE0 +_020A7CB0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CCC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CE0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CFC: + bl WM_GetAllowedChannel + cmp r0, #0x0 + bne _020A7D44 + bl WM_Finish + cmp r0, #0x0 + beq _020A7D30 + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D30: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D44: + ldr r0, _020A7E04 ; =FUN_020A6A74 + bl WM_SetIndCallback + cmp r0, #0x0 + beq _020A7D70 + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D70: + ldr r0, _020A7E08 ; =FUN_020A6768 + bl WM_Enable + cmp r0, #0x2 + beq _020A7D94 + cmp r0, #0x3 + beq _020A7DD0 + cmp r0, #0x8 + beq _020A7DB4 + b _020A7DD0 +_020A7D94: + mov r0, #0x2 + bl FUN_020A6C38 + ldr r0, _020A7E00 ; =UNK_021CA86C + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7DEC +_020A7DB4: + mov r0, #0xc + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7DD0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7DEC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A7E00: .word UNK_021CA86C +_020A7E04: .word FUN_020A6A74 +_020A7E08: .word FUN_020A6768 + + arm_func_start FUN_020A7E0C +FUN_020A7E0C: ; 0x020A7E0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r2, _020A7E7C ; =UNK_021CA86C + ldr r1, [r2, #0x0] + cmp r1, #0x0 + bne _020A7E3C + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_020A7E3C: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7E60 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_020A7E60: + mov r1, #0x0 + str r1, [r2, #0x0] + bl OS_RestoreInterrupts + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A7E7C: .word UNK_021CA86C + + arm_func_start FUN_020A7E80 +FUN_020A7E80: ; 0x020A7E80 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r2, _020A7FA8 ; =UNK_021CA86C + mov r4, r0 + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _020A7EB4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EB4: + cmp r6, #0x0 + bne _020A7ECC + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7ECC: + ands r1, r6, #0x1f + beq _020A7EE4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EE4: + cmp r5, #0x2300 + bhs _020A7EFC + bl OS_RestoreInterrupts + mov r0, #0x6 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EFC: + str r6, [r2, #0x0] + add r0, r6, #0x2000 + mov r1, #0x1 + str r1, [r0, #0x260] + ldr r1, [r2, #0x0] + mov r0, #0x0 + add r1, r1, #0x2200 + strh r0, [r1, #0x80] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x68] + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26a] + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26b] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x82] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0xf8] + bl FUN_020A6E30 + bl FUN_020A897C + bl OS_IsTickAvailable + cmp r0, #0x0 + bne _020A7F70 + bl OS_InitTick +_020A7F70: + bl OS_IsAlarmAvailable + cmp r0, #0x0 + bne _020A7F80 + bl OS_InitAlarm +_020A7F80: + ldr r1, _020A7FA8 ; =UNK_021CA86C + ldr r0, _020A7FAC ; =0x000022CC + ldr r1, [r1, #0x0] + add r0, r1, r0 + bl OS_CreateAlarm + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A7FA8: .word UNK_021CA86C +_020A7FAC: .word 0x000022CC + + arm_func_start FUN_020A7FB0 +FUN_020A7FB0: ; 0x020A7FB0 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A7138 + add r1, r0, #0x2000 + cmp r4, #0x0 + ldr r0, [r1, #0x270] + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r3, [r0, #0x4] + cmp r3, #0x0 + beq _020A8040 +_020A7FF8: + cmp r3, r4 + bne _020A8034 + ldr r2, [r3, #0x8] + cmp r2, #0x0 + ldrne r1, [r3, #0xc] + strne r1, [r2, #0xc] + ldreq r1, [r3, #0xc] + streq r1, [r0, #0x4] + ldr r2, [r3, #0xc] + cmp r2, #0x0 + ldrne r1, [r3, #0x8] + strne r1, [r2, #0x8] + ldreq r1, [r3, #0x8] + streq r1, [r0, #0x8] + b _020A8040 +_020A8034: + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020A7FF8 +_020A8040: + mov r1, #0x0 + str r1, [r4, #0xc] + ldr r1, [r0, #0x8] + str r1, [r4, #0x8] + str r4, [r0, #0x8] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + strne r4, [r1, #0xc] + streq r4, [r0, #0x4] + cmp r3, #0x0 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x4] + ldreq r1, [r0, #0x0] + addeq r1, r1, #0x1 + streq r1, [r0, #0x0] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A8084 +FUN_020A8084: ; 0x020A8084 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A7138 + add r1, r0, #0x2000 + ldr r2, [r1, #0x270] + mov r0, #0x0 + cmp r2, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r0, [r2, #0x4] + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr +_020A80C8: + ldr r1, [r0, #0x4] + cmp r1, r4 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _020A80C8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A80EC +FUN_020A80EC: ; 0x020A80EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020A7138 + add r0, r0, #0x2000 + cmp r5, #0x0 + mov r4, #0x0 + ldr r1, [r0, #0x270] + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r1, #0x0 + beq _020A8160 + ldr r0, [r0, #0x274] + cmp r0, #0xc + bls _020A8160 + ldr r4, [r1, #0x4] + cmp r4, #0x0 + beq _020A8160 +_020A813C: + add r0, r4, #0x10 + mov r1, r5 + add r0, r0, #0x4 + bl FUN_020A8B78 + cmp r0, #0x0 + bne _020A8160 + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020A813C +_020A8160: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A8170 +FUN_020A8170: ; 0x020A8170 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A7138 + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A81A4 + ldr r0, [r0, #0x274] + cmp r0, #0xc + addhi sp, sp, #0x4 + ldrhi r0, [r1, #0x4] + ldmhiia sp!, {lr} + bxhi lr +_020A81A4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A81B4 +FUN_020A81B4: ; 0x020A81B4 + stmdb sp!, {r4,lr} + bl FUN_020A7138 + add r2, r0, #0x2000 + ldr r1, [r2, #0x270] + mov r0, #0x0 + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r3, [r2, #0x274] + cmp r3, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r2, _020A8294 ; =0x4EC4EC4F + sub r3, r3, #0xc + umull r2, r4, r3, r2 + movs r4, r4, lsr #0x6 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r2, [r1, #0x0] + cmp r4, r2 + ldmlsia sp!, {r4,lr} + bxls lr + mov lr, r0 + cmp r4, #0x0 + bls _020A8240 + add r12, r1, #0xc + mov r2, #0xd0 +_020A8220: + mul r0, lr, r2 + ldrb r3, [r12, r0] + add r0, r12, r0 + cmp r3, #0x0 + beq _020A8240 + add lr, lr, #0x1 + cmp lr, r4 + blo _020A8220 +_020A8240: + cmp lr, r4 + ldmcsia sp!, {r4,lr} + bxcs lr + mov r2, #0x1 + strb r2, [r0, #0x0] + ldr r3, [r1, #0x0] + mov r2, #0x0 + str r3, [r0, #0x4] + str r2, [r0, #0xc] + ldr r2, [r1, #0x8] + str r2, [r0, #0x8] + str r0, [r1, #0x8] + ldr r2, [r0, #0x8] + cmp r2, #0x0 + strne r0, [r2, #0xc] + streq r0, [r1, #0x4] + ldr r2, [r1, #0x0] + add r2, r2, #0x1 + str r2, [r1, #0x0] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8294: .word 0x4EC4EC4F + + arm_func_start FUN_020A8298 +FUN_020A8298: ; 0x020A8298 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_020A7138 + movs r7, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, r7, #0x2000 + ldrb r0, [r0, #0x26a] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r0, [r5, #0x3c] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + add r0, r5, #0x4 + bl FUN_020A80EC + movs r6, r0 + bne _020A8300 + bl FUN_020A81B4 + mov r6, r0 +_020A8300: + cmp r6, #0x0 + bne _020A8320 + add r0, r7, #0x2000 + ldr r0, [r0, #0x278] + cmp r0, #0x1 + bne _020A8320 + bl FUN_020A8170 + mov r6, r0 +_020A8320: + cmp r6, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r5 + add r1, r6, #0x10 + mov r2, #0xc0 + strh r4, [r6, #0x2] + bl MIi_CpuCopyFast + mov r0, r6 + bl FUN_020A7FB0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A8358 +FUN_020A8358: ; 0x020A8358 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 + cmp r0, #0x0 + bne _020A8390 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8390: + mov r0, r4 + bl FUN_020A8084 + movs r4, r0 + bne _020A83B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A83B8: + mov r0, r5 + bl OS_RestoreInterrupts + add r0, r4, #0x10 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A83D0 +FUN_020A83D0: ; 0x020A83D0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl FUN_020A7138 + cmp r0, #0x0 + bne _020A8408 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8408: + cmp r5, #0x0 + beq _020A8434 + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x1 + moveq r5, #0x0 + strb r1, [r0, #0x26a] + b _020A8454 +_020A8434: + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x0 + moveq r5, #0x0 + strb r1, [r0, #0x26a] +_020A8454: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A846C +FUN_020A846C: ; 0x020A846C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 + cmp r0, #0x0 + mov r4, #0x0 + bne _020A84A4 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, r4 + ldmia sp!, {r4-r5,lr} + bx lr +_020A84A4: + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A84C0 + ldr r0, [r0, #0x274] + cmp r0, #0xc + ldrhi r4, [r1, #0x0] +_020A84C0: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A84D8 +FUN_020A84D8: ; 0x020A84D8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + bl FUN_020A7138 + cmp r0, #0x0 + bne _020A8500 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr +_020A8500: + add r1, r0, #0x2000 + ldr r0, [r1, #0x270] + cmp r0, #0x0 + beq _020A8524 + ldr r2, [r1, #0x274] + cmp r2, #0x0 + ble _020A8524 + mov r1, #0x0 + bl MI_CpuFill8 +_020A8524: + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A8534 +FUN_020A8534: ; 0x020A8534 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + ldr r1, _020A858C ; =0x01FF8000 + cmp r2, r1 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, [r0, #0xc] + sub r1, r1, #0x1 + str r1, [r0, #0xc] + ldr r1, [r0, #0xc] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r1, #0x0 + str r1, [r0, #0x8] + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A858C: .word 0x01FF8000 + + arm_func_start FUN_020A8590 +FUN_020A8590: + ldr r2, [r0, #0x8] + cmp r2, #0x0 + bne _020A85B8 + ldr r1, _020A85D8 ; =0x01FF8000 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, #0x1 + str r1, [r0, #0xc] + mov r0, #0x1 + bx lr +_020A85B8: + ldr r1, _020A85D8 ; =0x01FF8000 + cmp r2, r1 + ldreq r1, [r0, #0xc] + addeq r1, r1, #0x1 + streq r1, [r0, #0xc] + moveq r0, #0x1 + movne r0, #0x0 + bx lr + .balign 4 +_020A85D8: .word 0x01FF8000 + + arm_func_start FUN_020A85DC +FUN_020A85DC: ; 0x020A85DC + ldr ip, _020A85E8 ; =FUN_020A8534 + ldr r0, _020A85EC ; =UNK_021CA87C + bx r12 + .balign 4 +_020A85E8: .word FUN_020A8534 +_020A85EC: .word UNK_021CA87C + + arm_func_start FUN_020A85F0 +FUN_020A85F0: ; 0x020A85F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x0] + cmp r1, #0x12 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r2, [r0, #0x2] + ldr r1, _020A863C ; =UNK_021CA870 + str r2, [r1, #0x24] + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A8628 + bl FUN_020A6BBC +_020A8628: + ldr r0, _020A8640 ; =UNK_021CA874 + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A863C: .word UNK_021CA870 +_020A8640: .word UNK_021CA874 + + arm_func_start FUN_020A8644 +FUN_020A8644: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 + cmp r0, #0x0 + bne _020A867C + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A867C: + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_LockMutex + bl FUN_020A7138 + movs r4, r0 + bne _020A86AC + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86AC: + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + bne _020A86C8 + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + bne _020A86E4 +_020A86C8: + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x3 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86E4: + mov r0, r7 + mov r2, r6 + add r1, r4, #0xf00 + bl MI_CpuCopy8 + mov r3, r6, lsl #0x10 + ldr r0, _020A87B0 ; =FUN_020A85F0 + mov r1, r8 + add r2, r4, #0xf00 + mov r3, r3, lsr #0x10 + bl WM_SetDCFData + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020A873C +_020A8718: + b _020A873C +_020A871C: + b _020A873C +_020A8720: + b _020A8758 +_020A8724: + b _020A873C +_020A8728: + b _020A873C +_020A872C: + b _020A873C +_020A8730: + b _020A873C +_020A8734: + b _020A873C +_020A8738: + b _020A873C +_020A873C: + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8758: + ldr r0, _020A87B4 ; =UNK_021CA874 + bl OS_SleepThread + ldr r0, _020A87B8 ; =UNK_021CA870 + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _020A8790 + cmp r0, #0x1 + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8790: + ldr r0, _020A87AC ; =UNK_021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A87AC: .word UNK_021CA87C +_020A87B0: .word FUN_020A85F0 +_020A87B4: .word UNK_021CA874 +_020A87B8: .word UNK_021CA870 + + arm_func_start FUN_020A87BC +FUN_020A87BC: ; 0x020A87BC + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020A87DC ; =UNK_021CA870 + str r4, [r1, #0x28] + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A87DC: .word UNK_021CA870 + + arm_func_start FUN_020A87E0 +FUN_020A87E0: ; 0x020A87E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + mov r4, r0 + mov r6, r7 + bl FUN_020A7138 + mov r5, r0 + bl OS_DisableInterrupts + cmp r5, #0x0 + beq _020A8830 + add r1, r5, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8830 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + addeq r2, r5, #0x2100 + ldreq r1, _020A884C ; =0x0000214C + ldreqh r6, [r2, #0x4a] + addeq r7, r5, r1 +_020A8830: + bl OS_RestoreInterrupts + cmp r4, #0x0 + strneh r6, [r4, #0x0] + mov r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A884C: .word 0x0000214C + + arm_func_start FUN_020A8850 +FUN_020A8850: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, #0x0 + bl FUN_020A7138 + mov r4, r0 + bl OS_DisableInterrupts + cmp r4, #0x0 + beq _020A8890 + add r1, r4, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8890 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + ldreq r1, _020A88A4 ; =0x00002144 + addeq r5, r4, r1 +_020A8890: + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A88A4: .word 0x00002144 + + arm_func_start FUN_020A88A8 +FUN_020A88A8: ; 0x020A88A8 + stmdb sp!, {r4,lr} + bl FUN_020A7138 + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + ldmneia sp!, {r4,lr} + bxne lr + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =UNK_021CA87C + bl FUN_020A8590 + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, _020A892C ; =0x00002144 + ldr r0, _020A8930 ; =FUN_020A85DC + add r1, r4, r1 + add r2, r4, #0xf00 + mov r3, #0x0 + bl WM_SetDCFData + cmp r0, #0x2 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =UNK_021CA87C + bl FUN_020A8534 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8928: .word UNK_021CA87C +_020A892C: .word 0x00002144 +_020A8930: .word FUN_020A85DC + + arm_func_start FUN_020A8934 +FUN_020A8934: ; 0x020A8934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8978 ; =UNK_021CA870 + mov r2, r0 + ldr r12, [r1, #0x28] + cmp r12, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrh r3, [r2, #0x6] + add r0, r2, #0x1e + add r1, r2, #0x18 + add r2, r2, #0x2c + blx r12 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8978: .word UNK_021CA870 + + arm_func_start FUN_020A897C +FUN_020A897C: ; 0x020A897C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A89C8 ; =UNK_021CA870 + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A89CC ; =UNK_021CA87C + mov r2, #0x0 + mov r3, #0x1 + strb r3, [r1, #0x0] + str r2, [r1, #0x24] + str r2, [r1, #0x8] + str r2, [r1, #0x4] + bl OS_InitMutex + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A89C8: .word UNK_021CA870 +_020A89CC: .word UNK_021CA87C + + arm_func_start FUN_020A89D0 +FUN_020A89D0: ; 0x020A89D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020A8A48 ; =UNK_021CA89C + ands r1, r0, #0x2 + ldrb r12, [r2, #0x0] + movne r0, r0, asr #0x2 + andne lr, r0, #0xff + moveq r0, r0, asr #0x2 + addeq r0, r0, #0x19 + andeq lr, r0, #0xff + mov r1, r12, lsr #0x1f + rsb r0, r1, r12, lsl #0x1c + cmp r12, #0x10 + ldr r3, _020A8A4C ; =UNK_021CA8A0 + add r0, r1, r0, ror #0x1c + strb lr, [r3, r0] + addcc r0, r12, #0x1 + strccb r0, [r2, #0x0] + addcc sp, sp, #0x4 + ldmccia sp!, {lr} + bxcc lr + add r0, r12, #0x1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #0x1c + add r0, r1, r0, ror #0x1c + add r0, r0, #0x10 + strb r0, [r2, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8A48: .word UNK_021CA89C +_020A8A4C: .word UNK_021CA8A0 + + arm_func_start FUN_020A8A50 +FUN_020A8A50: ; 0x020A8A50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A8A90 + mov r1, #0x0 + cmp r0, #0x1c + movcs r1, #0x3 + bhs _020A8A80 + cmp r0, #0x16 + movcs r1, #0x2 + bhs _020A8A80 + cmp r0, #0x10 + movcs r1, #0x1 +_020A8A80: + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A8A90 +FUN_020A8A90: ; 0x020A8A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8B20 ; =UNK_021CA89C + mov r0, #0x0 + ldrb r1, [r1, #0x0] + cmp r1, #0x10 + bls _020A8ADC + ldr r2, _020A8B24 ; =UNK_021CA8A0 + mov r3, r0 +_020A8AB4: + ldrb r1, [r2, #0x0] + add r3, r3, #0x1 + cmp r3, #0x10 + add r0, r0, r1 + add r2, r2, #0x1 + blt _020A8AB4 + mov r1, r0, asr #0x3 + add r0, r0, r1, lsr #0x1c + mov r0, r0, asr #0x4 + b _020A8B10 +_020A8ADC: + cmp r1, #0x0 + beq _020A8B10 + mov r3, r0 + cmp r1, #0x0 + ble _020A8B0C + ldr ip, _020A8B24 ; =UNK_021CA8A0 +_020A8AF4: + ldrb r2, [r12, #0x0] + add r3, r3, #0x1 + cmp r3, r1 + add r0, r0, r2 + add r12, r12, #0x1 + blt _020A8AF4 +_020A8B0C: + bl _s32_div_f +_020A8B10: + and r0, r0, #0xff + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8B20: .word UNK_021CA89C +_020A8B24: .word UNK_021CA8A0 + + arm_func_start FUN_020A8B28 +FUN_020A8B28: ; 0x020A8B28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 + cmp r0, #0x0 + mov r4, #0x0 + beq _020A8B60 + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A8B60 + bl FUN_020A8A50 + mov r4, r0 +_020A8B60: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A8B78 +FUN_020A8B78: + mov r12, #0x0 +_020A8B7C: + ldrb r3, [r0, r12] + ldrb r2, [r1, r12] + cmp r3, r2 + movne r0, #0x0 + bxne lr + add r12, r12, #0x1 + cmp r12, #0x6 + blt _020A8B7C + mov r0, #0x1 + bx lr + + arm_func_start FUN_020A8BA4 +FUN_020A8BA4: ; 0x020A8BA4 + ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R + bx r12 + .balign 4 +_020A8BAC: .word DGT_Hash1GetDigest_R + + arm_func_start FUN_020A8BB0 +FUN_020A8BB0: ; 0x020A8BB0 + ldr ip, _020A8BB8 ; =DGT_Hash1SetSource + bx r12 + .balign 4 +_020A8BB8: .word DGT_Hash1SetSource + + arm_func_start FUN_020A8BBC +FUN_020A8BBC: ; 0x020A8BBC + ldr ip, _020A8BC4 ; =DGT_Hash1Reset + bx r12 + .balign 4 +_020A8BC4: .word DGT_Hash1Reset + + arm_func_start FUN_020A8BC8 +FUN_020A8BC8: ; 0x020A8BC8 + stmdb sp!, {r4,lr} + ldrsh r4, [r3, #0x0] + ldr r12, [sp, #0x8] + mov lr, #0x0 + strh r4, [r0, #0x0] + ldrb r4, [r3, #0x2] + cmp r12, #0x2 + strb r4, [r0, #0x2] + strb lr, [r0, #0x3] + beq _020A8C04 + cmp r12, #0x3 + beq _020A8C10 + cmp r12, #0x4 + beq _020A8C1C + ldmia sp!, {r4,pc} +_020A8C04: + add r0, r0, #0x4 + bl FUN_020A8CA8 + ldmia sp!, {r4,pc} +_020A8C10: + add r0, r0, #0x4 + bl FUN_020A91D8 + ldmia sp!, {r4,pc} +_020A8C1C: + add r0, r0, #0x4 + bl FUN_020A9D18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020A8C28 +FUN_020A8C28: ; 0x020A8C28 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrsh r12, [r0, #0x0] + cmp r3, #0x2 + strh r12, [sp, #0x0] + ldrb r12, [r0, #0x2] + strb r12, [sp, #0x2] + beq _020A8C60 + cmp r3, #0x3 + beq _020A8C78 + cmp r3, #0x4 + beq _020A8C90 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C60: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A8F58 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C78: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A97DC + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C90: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A9F10 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020A8CA8 +FUN_020A8CA8: ; 0x020A8CA8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + movs r2, r2, lsr #0x2 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x3c + ldmeqia sp!, {r4-r11,pc} + mov r5, #0x8000 + ldr fp, _020A8F4C ; =UNK_020FF5D4 + ldr r4, _020A8F50 ; =0x00007FFF + str r2, [sp, #0x8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + rsb r5, r5, #0x0 + mov r6, #0x2 + mov lr, #0x58 + str r2, [sp, #0x1c] + str r2, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + str r2, [sp, #0x2c] + str r2, [sp, #0x30] + str r2, [sp, #0x34] +_020A8D10: + ldrb r9, [r3, #0x2] + ldrsh r2, [r3, #0x0] + ldrsh r7, [r1, #0x0] + mov r10, r9, lsl #0x1 + ldrsh r10, [r11, r10] + subs r8, r7, r2 + movmi r7, r6 + ldrpl r7, [sp, #0x8] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x1 + ands r8, r7, #0x1 + ldreq r10, [sp, #0xc] + ands r8, r7, #0x2 + rsbne r10, r10, #0x0 + mov r8, #0x8000 + add r2, r2, r10 + rsb r8, r8, #0x0 + cmp r2, r8 + ldr r8, _020A8F54 ; =UNK_020FF5B8 + movlt r2, r5 + cmp r2, r4 + ldrsb r8, [r8, r7] + movgt r2, r4 + adds r9, r9, r8 + ldrmi r9, [sp, #0x10] + bmi _020A8D84 + cmp r9, #0x58 + movgt r9, lr +_020A8D84: + strh r2, [r3, #0x0] + strb r9, [r3, #0x2] + ldrb r10, [r3, #0x2] + and r2, r7, #0xff + ldrsh r7, [r3, #0x0] + ldrsh r8, [r1, #0x2] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x14] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x18] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =UNK_020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + adds r10, r10, r9 + ldrmi r10, [sp, #0x1c] + bmi _020A8E04 + cmp r10, #0x58 + movgt r10, lr +_020A8E04: + strh r7, [r3, #0x0] + strb r10, [r3, #0x2] + and r7, r8, #0xff + orr r2, r2, r7, lsl #0x2 + ldrb r10, [r3, #0x2] + ldrsh r7, [r3, #0x0] + ldrsh r8, [r1, #0x4] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x20] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x24] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =UNK_020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + and r2, r2, #0xff + adds r10, r10, r9 + ldrmi r10, [sp, #0x28] + bmi _020A8E8C + cmp r10, #0x58 + movgt r10, lr +_020A8E8C: + strh r7, [r3, #0x0] + strb r10, [r3, #0x2] + and r7, r8, #0xff + orr r2, r2, r7, lsl #0x4 + ldrb r10, [r3, #0x2] + ldrsh r8, [r1, #0x6] + ldrsh r7, [r3, #0x0] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x2c] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x30] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =UNK_020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + and r2, r2, #0xff + adds r10, r10, r9 + add r1, r1, #0x8 + ldrmi r10, [sp, #0x34] + bmi _020A8F18 + cmp r10, #0x58 + movgt r10, lr +_020A8F18: + strh r7, [r3, #0x0] + and r7, r8, #0xff + strb r10, [r3, #0x2] + orr r2, r2, r7, lsl #0x6 + strb r2, [r0], #0x1 + ldr r2, [sp, #0x0] + add r7, r2, #0x1 + ldr r2, [sp, #0x4] + str r7, [sp, #0x0] + cmp r7, r2 + blo _020A8D10 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A8F4C: .word UNK_020FF5D4 +_020A8F50: .word 0x00007FFF +_020A8F54: .word UNK_020FF5B8 + + arm_func_start FUN_020A8F58 +FUN_020A8F58: ; 0x020A8F58 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + cmp r2, #0x0 + addls sp, sp, #0x34 + mov r12, #0x0 + ldmlsia sp!, {r4-r11,pc} + mov r4, #0x8000 + rsb r6, r4, #0x0 + ldr r5, _020A91CC ; =0x00007FFF + ldr fp, _020A91D0 ; =UNK_020FF5D4 + str r12, [sp, #0x0] + str r12, [sp, #0x8] + str r12, [sp, #0xc] + str r12, [sp, #0x14] + str r12, [sp, #0x18] + mov r4, #0x58 + str r12, [sp, #0x20] + str r12, [sp, #0x24] + str r12, [sp, #0x2c] +_020A8FA4: + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x0] + ands lr, r10, #0x2 + str lr, [sp, #0x4] + beq _020A8FE8 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A8FF4 +_020A8FE8: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A8FF4: + ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x8] + bmi _020A9010 + cmp r8, #0x58 + movgt r8, r4 +_020A9010: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x0] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x2 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0xc] + ands lr, r10, #0x2 + str lr, [sp, #0x10] + beq _020A906C + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A9078 +_020A906C: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A9078: + ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x14] + bmi _020A9094 + cmp r8, #0x58 + movgt r8, r4 +_020A9094: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x2] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x4 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x18] + ands lr, r10, #0x2 + str lr, [sp, #0x1c] + beq _020A90F0 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A90FC +_020A90F0: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A90FC: + ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x20] + bmi _020A9118 + cmp r8, #0x58 + movgt r8, r4 +_020A9118: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x4] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x6 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x24] + ands lr, r10, #0x2 + str lr, [sp, #0x28] + beq _020A9174 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A9180 +_020A9174: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A9180: + ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x2c] + bmi _020A919C + cmp r8, #0x58 + movgt r8, r4 +_020A919C: + mov r7, r9, lsl #0x10 + mov r9, r7, asr #0x10 + strh r9, [r3, #0x0] + strb r8, [r3, #0x2] + add r12, r12, #0x1 + strh r9, [r1, #0x6] + add r1, r1, #0x8 + add r0, r0, #0x1 + cmp r12, r2 + blo _020A8FA4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A91CC: .word 0x00007FFF +_020A91D0: .word UNK_020FF5D4 +_020A91D4: .word UNK_020FF5B8 + + arm_func_start FUN_020A91D8 +FUN_020A91D8: ; 0x020A91D8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + movs r2, r2, lsr #0x3 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x54 + ldmeqia sp!, {r4-r11,pc} + ldr r5, [sp, #0x0] + mov r4, #0x8000 + rsb lr, r4, #0x0 + ldr ip, _020A97D0 ; =0x00007FFF + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + str r2, [sp, #0x1c] + str r2, [sp, #0x20] + mov r4, #0x4 + mov r2, #0x58 + str r5, [sp, #0x24] + str r5, [sp, #0x28] + str r5, [sp, #0x2c] + str r5, [sp, #0x30] + str r5, [sp, #0x34] + str r5, [sp, #0x38] + str r5, [sp, #0x3c] + str r5, [sp, #0x40] + str r5, [sp, #0x44] + str r5, [sp, #0x48] + str r5, [sp, #0x4c] +_020A9250: + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0x0] + ldrb r5, [r3, #0x2] + subs r7, r6, r8 + movmi r10, r4 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + mov r9, r5, lsl #0x1 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x10] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =UNK_020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x14] + bmi _020A92E4 + cmp r5, #0x58 + movgt r5, r2 +_020A92E4: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + and r5, r10, #0xff + mov r5, r5, lsl #0x5 + and r10, r5, #0xff + ldrb r8, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r5, [r1, #0x2] + mov r9, r8, lsl #0x1 + subs r7, r5, r11 + ldr r5, _020A97D4 ; =UNK_020FF5D4 + movmi r6, r4 + ldrsh r9, [r5, r9] + ldrpl r6, [sp, #0x18] + rsbmi r7, r7, #0x0 + cmp r7, r9 + orrge r6, r6, #0x2 + subge r7, r7, r9 + mov r5, r9, asr #0x1 + cmp r7, r5 + orrge r6, r6, #0x1 + ands r7, r6, #0x2 + mov r7, r9, asr #0x2 + addne r7, r7, r9 + ands r9, r6, #0x1 + addne r7, r7, r5 + ands r5, r6, #0x4 + rsbne r7, r7, #0x0 + add r5, r11, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r5, r7 + ldr r7, _020A97D8 ; =UNK_020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r7, [r7, r6] + movgt r5, r12 + adds r8, r8, r7 + ldrmi r8, [sp, #0x1c] + bmi _020A938C + cmp r8, #0x58 + movgt r8, r2 +_020A938C: + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + and r5, r6, #0xff + orr r5, r10, r5, lsl #0x2 + and r10, r5, #0xff + ldrb r8, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r5, [r1, #0x4] + mov r9, r8, lsl #0x1 + subs r7, r5, r11 + ldr r5, _020A97D4 ; =UNK_020FF5D4 + movmi r6, r4 + ldrsh r9, [r5, r9] + ldrpl r6, [sp, #0x20] + rsbmi r7, r7, #0x0 + cmp r7, r9 + orrge r6, r6, #0x2 + subge r7, r7, r9 + mov r5, r9, asr #0x1 + cmp r7, r5 + orrge r6, r6, #0x1 + ands r7, r6, #0x2 + mov r7, r9, asr #0x2 + addne r7, r7, r9 + ands r9, r6, #0x1 + addne r7, r7, r5 + ands r5, r6, #0x4 + rsbne r7, r7, #0x0 + add r5, r11, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r5, r7 + ldr r7, _020A97D8 ; =UNK_020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r7, [r7, r6] + movgt r5, r12 + adds r8, r8, r7 + ldrmi r8, [sp, #0x24] + bmi _020A9434 + cmp r8, #0x58 + movgt r8, r2 +_020A9434: + strh r5, [r3, #0x0] + and r5, r6, #0xff + str r5, [sp, #0x8] + strb r8, [r3, #0x2] + orr r5, r10, r5, asr #0x1 + strb r5, [r0, #0x0] + ldrb r5, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0x6] + mov r9, r5, lsl #0x1 + subs r7, r6, r8 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + movmi r10, r4 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x28] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =UNK_020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x2c] + bmi _020A94E0 + cmp r5, #0x58 + movgt r5, r2 +_020A94E0: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r6, [r1, #0x8] + ldrb r9, [r3, #0x2] + and r5, r10, #0xff + subs r8, r6, r11 + movmi r7, r4 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + mov r10, r9, lsl #0x1 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x30] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + add r6, r11, r8 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r6, r8 + ldr r8, _020A97D8 ; =UNK_020FF5BC + movlt r6, lr + mov r5, r5, lsl #0x4 + cmp r6, r12 + ldrsb r8, [r8, r7] + movgt r6, r12 + and r5, r5, #0xff + adds r9, r9, r8 + ldrmi r9, [sp, #0x34] + bmi _020A9588 + cmp r9, #0x58 + movgt r9, r2 +_020A9588: + strh r6, [r3, #0x0] + strb r9, [r3, #0x2] + and r6, r7, #0xff + orr r5, r5, r6, lsl #0x1 + ldrb r9, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r6, [r1, #0xa] + mov r10, r9, lsl #0x1 + and r5, r5, #0xff + subs r8, r6, r11 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + movmi r7, r4 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x38] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + add r6, r11, r8 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r6, r8 + ldr r8, _020A97D8 ; =UNK_020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r8, [r8, r7] + movgt r6, r12 + adds r9, r9, r8 + ldrmi r9, [sp, #0x3c] + bmi _020A9630 + cmp r9, #0x58 + movgt r9, r2 +_020A9630: + ldr r8, [sp, #0x8] + strh r6, [r3, #0x0] + orr r8, r5, r8, lsl #0x7 + and r5, r7, #0xff + str r5, [sp, #0xc] + strb r9, [r3, #0x2] + orr r5, r8, r5, asr #0x2 + strb r5, [r0, #0x1] + ldrb r5, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0xc] + mov r9, r5, lsl #0x1 + subs r7, r6, r8 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + movmi r10, r4 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x40] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =UNK_020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x44] + bmi _020A96E4 + cmp r5, #0x58 + movgt r5, r2 +_020A96E4: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + and r5, r10, #0xff + mov r5, r5, lsl #0x3 + and r11, r5, #0xff + ldrsh r6, [r1, #0xe] + ldrsh r5, [r3, #0x0] + ldrb r9, [r3, #0x2] + add r1, r1, #0x10 + subs r8, r6, r5 + movmi r7, r4 + ldr r6, _020A97D4 ; =UNK_020FF5D4 + mov r10, r9, lsl #0x1 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x48] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + mov r6, #0x8000 + add r5, r5, r8 + rsb r6, r6, #0x0 + cmp r5, r6 + ldr r6, _020A97D8 ; =UNK_020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r6, [r6, r7] + movgt r5, r12 + adds r9, r9, r6 + ldrmi r9, [sp, #0x4c] + bmi _020A9790 + cmp r9, #0x58 + movgt r9, r2 +_020A9790: + strh r5, [r3, #0x0] + and r5, r7, #0xff + orr r6, r11, r5 + ldr r5, [sp, #0xc] + strb r9, [r3, #0x2] + orr r5, r6, r5, lsl #0x6 + strb r5, [r0, #0x2] + ldr r5, [sp, #0x0] + add r0, r0, #0x3 + add r6, r5, #0x1 + ldr r5, [sp, #0x4] + str r6, [sp, #0x0] + cmp r6, r5 + blo _020A9250 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A97D0: .word 0x00007FFF +_020A97D4: .word UNK_020FF5D4 +_020A97D8: .word UNK_020FF5BC + + arm_func_start FUN_020A97DC +FUN_020A97DC: ; 0x020A97DC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r5, _020A9D08 ; =0xAAAAAAAB + mov r4, #0x0 + str r4, [sp, #0x0] + umull r5, r4, r2, r5 + str r4, [sp, #0xc] + movs r2, r4, lsr #0x1 + str r2, [sp, #0xc] + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} + ldr r2, [sp, #0x0] + mov r4, #0x8000 + ldr lr, _020A9D0C ; =0x00007FFF + str r2, [sp, #0x18] + str r2, [sp, #0x24] + str r2, [sp, #0x2c] + str r2, [sp, #0x34] + str r2, [sp, #0x3c] + rsb r4, r4, #0x0 + mov r12, #0x58 + str r2, [sp, #0x40] + str r2, [sp, #0x44] + str r2, [sp, #0x48] +_020A983C: + ldrb r8, [r3, #0x2] + ldr r5, _020A9D10 ; =UNK_020FF5D4 + ldrb r6, [r0, #0x0] + mov r7, r8, lsl #0x1 + ldrsh r5, [r5, r7] + ldrb r11, [r0, #0x1] + ldrb r2, [r0, #0x2] + str r5, [sp, #0x4] + mov r5, r6, asr #0x5 + ands r7, r5, #0x2 + ldr r7, [sp, #0x4] + ldrne r10, [sp, #0x4] + mov r7, r7, asr #0x2 + addne r7, r7, r10 + ands r10, r5, #0x1 + str r10, [sp, #0x10] + ldrne r10, [sp, #0x4] + ldrsh r9, [r3, #0x0] + addne r7, r7, r10, asr #0x1 + ands r10, r5, #0x4 + str r10, [sp, #0x14] + beq _020A98AC + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r4 + b _020A98B8 +_020A98AC: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A98B8: + ldr r7, _020A9D14 ; =UNK_020FF5BC + ldrsb r5, [r7, r5] + adds r8, r8, r5 + ldrmi r8, [sp, #0x18] + bmi _020A98D4 + cmp r8, #0x58 + movgt r8, r12 +_020A98D4: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x0] + ldrb r8, [r3, #0x2] + mov r5, r6, asr #0x2 + ands r7, r5, #0x2 + ldr r7, _020A9D10 ; =UNK_020FF5D4 + mov r10, r8, lsl #0x1 + ldrsh r7, [r7, r10] + ldrsh r9, [r3, #0x0] + str r7, [sp, #0x8] + ldrne r10, [sp, #0x8] + mov r7, r7, asr #0x2 + addne r7, r7, r10 + ands r10, r5, #0x1 + str r10, [sp, #0x1c] + ldrne r10, [sp, #0x8] + addne r7, r7, r10, asr #0x1 + ands r10, r5, #0x4 + str r10, [sp, #0x20] + beq _020A9948 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r4 + b _020A9954 +_020A9948: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9954: + and r7, r5, #0x7 + ldr r5, _020A9D14 ; =UNK_020FF5BC + ldrsb r5, [r5, r7] + adds r8, r8, r5 + ldrmi r8, [sp, #0x24] + bmi _020A9974 + cmp r8, #0x58 + movgt r8, r12 +_020A9974: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + mov r6, r6, lsl #0x1 + strb r8, [r3, #0x2] + strh r5, [r1, #0x2] + and r6, r6, #0x7 + orr r6, r6, r11, asr #0x7 + ldrb r8, [r3, #0x2] + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =UNK_020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x28] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A99E0 + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A99EC +_020A99E0: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A99EC: + ldr r5, _020A9D14 ; =UNK_020FF5BC + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x2c] + bmi _020A9A08 + cmp r8, #0x58 + movgt r8, r12 +_020A9A08: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x4] + ldrb r8, [r3, #0x2] + mov r6, r11, asr #0x4 + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =UNK_020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x30] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A9A6C + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A9A78 +_020A9A6C: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9A78: + ldr r5, _020A9D14 ; =UNK_020FF5BC + and r6, r6, #0x7 + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x34] + bmi _020A9A98 + cmp r8, #0x58 + movgt r8, r12 +_020A9A98: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x6] + ldrb r8, [r3, #0x2] + mov r6, r11, asr #0x1 + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =UNK_020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x38] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A9AFC + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A9B08 +_020A9AFC: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9B08: + ldr r5, _020A9D14 ; =UNK_020FF5BC + and r6, r6, #0x7 + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x3c] + bmi _020A9B28 + cmp r8, #0x58 + movgt r8, r12 +_020A9B28: + mov r5, r9, lsl #0x10 + mov r6, r5, asr #0x10 + mov r5, r11, lsl #0x2 + and r5, r5, #0x7 + strh r6, [r3, #0x0] + strb r8, [r3, #0x2] + strh r6, [r1, #0x8] + orr r5, r5, r2, asr #0x6 + ands r6, r5, #0x2 + ldrb r6, [r3, #0x2] + ldr r8, _020A9D10 ; =UNK_020FF5D4 + ldrsh r7, [r3, #0x0] + mov r9, r6, lsl #0x1 + ldrsh r10, [r8, r9] + mov r9, r10, asr #0x2 + addne r9, r9, r10 + ands r8, r5, #0x1 + addne r9, r9, r10, asr #0x1 + ands r8, r5, #0x4 + beq _020A9B90 + mov r8, #0x8000 + sub r7, r7, r9 + rsb r8, r8, #0x0 + cmp r7, r8 + movlt r7, r4 + b _020A9B9C +_020A9B90: + add r7, r7, r9 + cmp r7, lr + movgt r7, lr +_020A9B9C: + ldr r8, _020A9D14 ; =UNK_020FF5BC + ldrsb r5, [r8, r5] + adds r6, r6, r5 + ldrmi r6, [sp, #0x40] + bmi _020A9BB8 + cmp r6, #0x58 + movgt r6, r12 +_020A9BB8: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0xa] + ldrb r6, [r3, #0x2] + mov r5, r2, asr #0x3 + ands r8, r5, #0x2 + ldr r8, _020A9D10 ; =UNK_020FF5D4 + mov r9, r6, lsl #0x1 + ldrsh r10, [r8, r9] + ldrsh r7, [r3, #0x0] + mov r9, r10, asr #0x2 + addne r9, r9, r10 + ands r8, r5, #0x1 + addne r9, r9, r10, asr #0x1 + ands r8, r5, #0x4 + beq _020A9C18 + mov r8, #0x8000 + sub r7, r7, r9 + rsb r8, r8, #0x0 + cmp r7, r8 + movlt r7, r4 + b _020A9C24 +_020A9C18: + add r7, r7, r9 + cmp r7, lr + movgt r7, lr +_020A9C24: + and r8, r5, #0x7 + ldr r5, _020A9D14 ; =UNK_020FF5BC + ldrsb r5, [r5, r8] + adds r6, r6, r5 + ldrmi r6, [sp, #0x44] + bmi _020A9C44 + cmp r6, #0x58 + movgt r6, r12 +_020A9C44: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0xc] + ands r5, r2, #0x2 + ldrb r5, [r3, #0x2] + ldr r7, _020A9D10 ; =UNK_020FF5D4 + ldrsh r6, [r3, #0x0] + mov r8, r5, lsl #0x1 + ldrsh r9, [r7, r8] + mov r8, r9, asr #0x2 + addne r8, r8, r9 + ands r7, r2, #0x1 + addne r8, r8, r9, asr #0x1 + ands r7, r2, #0x4 + beq _020A9CA0 + mov r7, #0x8000 + sub r6, r6, r8 + rsb r7, r7, #0x0 + cmp r6, r7 + movlt r6, r4 + b _020A9CAC +_020A9CA0: + add r6, r6, r8 + cmp r6, lr + movgt r6, lr +_020A9CAC: + and r7, r2, #0x7 + ldr r2, _020A9D14 ; =UNK_020FF5BC + ldrsb r2, [r2, r7] + adds r5, r5, r2 + ldrmi r5, [sp, #0x48] + bmi _020A9CCC + cmp r5, #0x58 + movgt r5, r12 +_020A9CCC: + mov r2, r6, lsl #0x10 + mov r2, r2, asr #0x10 + strh r2, [r3, #0x0] + strb r5, [r3, #0x2] + strh r2, [r1, #0xe] + ldr r2, [sp, #0x0] + add r0, r0, #0x3 + add r5, r2, #0x1 + ldr r2, [sp, #0xc] + add r1, r1, #0x10 + str r5, [sp, #0x0] + cmp r5, r2 + blo _020A983C + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A9D08: .word 0xAAAAAAAB +_020A9D0C: .word 0x00007FFF +_020A9D10: .word UNK_020FF5D4 +_020A9D14: .word UNK_020FF5BC + + arm_func_start FUN_020A9D18 +FUN_020A9D18: ; 0x020A9D18 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + movs r2, r2, lsr #0x1 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,pc} + mov r4, #0x8000 + rsb r5, r4, #0x0 + ldr fp, _020A9F04 ; =0x00007FFF + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + mov r6, #0x8 + mov r4, #0x58 +_020A9D5C: + ldrb r2, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r7, [r1, #0x0] + ldr sb, _020A9F08 ; =UNK_020FF5D4 + mov r12, r2, lsl #0x1 + subs r7, r7, r8 + ldrsh r12, [r9, r12] + movmi r10, r6 + ldrpl r10, [sp, #0xc] + rsbmi r7, r7, #0x0 + cmp r7, r12 + orrge r10, r10, #0x4 + subge r7, r7, r12 + mov lr, r12, asr #0x1 + cmp r7, lr + orrge r10, r10, #0x2 + subge r7, r7, lr + mov r9, r12, asr #0x2 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x4 + mov r7, r12, asr #0x3 + addne r7, r7, r12 + ands r12, r10, #0x2 + addne r7, r7, lr + ands r12, r10, #0x1 + addne r7, r7, r9 + ands r9, r10, #0x8 + rsbne r7, r7, #0x0 + add r7, r8, r7 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r7, r8 + ldr r8, _020A9F0C ; =UNK_020FF5C4 + movlt r7, r5 + cmp r7, r11 + ldrsb r8, [r8, r10] + movgt r7, r11 + adds r2, r2, r8 + ldrmi r2, [sp, #0x10] + bmi _020A9E08 + cmp r2, #0x58 + movgt r2, r4 +_020A9E08: + strh r7, [r3, #0x0] + strb r2, [r3, #0x2] + ldrsh r2, [r3, #0x0] + ldrsh r8, [r1, #0x2] + and lr, r10, #0xff + str r2, [sp, #0x8] + ldrb r2, [r3, #0x2] + ldr r7, [sp, #0x8] + add r1, r1, #0x4 + subs r7, r8, r7 + movmi r10, r6 + ldr r8, _020A9F08 ; =UNK_020FF5D4 + mov r9, r2, lsl #0x1 + ldrsh r12, [r8, r9] + ldrpl r10, [sp, #0x14] + rsbmi r7, r7, #0x0 + cmp r7, r12 + orrge r10, r10, #0x4 + subge r7, r7, r12 + mov r9, r12, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x2 + subge r7, r7, r9 + mov r8, r12, asr #0x2 + cmp r7, r8 + orrge r10, r10, #0x1 + ands r7, r10, #0x4 + mov r7, r12, asr #0x3 + addne r7, r7, r12 + ands r12, r10, #0x2 + addne r7, r7, r9 + ands r9, r10, #0x1 + addne r7, r7, r8 + ands r8, r10, #0x8 + ldr r8, [sp, #0x8] + rsbne r7, r7, #0x0 + add r7, r8, r7 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r7, r8 + ldr r8, _020A9F0C ; =UNK_020FF5C4 + movlt r7, r5 + cmp r7, r11 + ldrsb r8, [r8, r10] + movgt r7, r11 + adds r2, r2, r8 + ldrmi r2, [sp, #0x18] + bmi _020A9ED0 + cmp r2, #0x58 + movgt r2, r4 +_020A9ED0: + strh r7, [r3, #0x0] + strb r2, [r3, #0x2] + and r2, r10, #0xff + orr r2, lr, r2, lsl #0x4 + strb r2, [r0], #0x1 + ldr r2, [sp, #0x0] + add r7, r2, #0x1 + ldr r2, [sp, #0x4] + str r7, [sp, #0x0] + cmp r7, r2 + blo _020A9D5C + add sp, sp, #0x1c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A9F04: .word 0x00007FFF +_020A9F08: .word UNK_020FF5D4 +_020A9F0C: .word UNK_020FF5C4 + + arm_func_start FUN_020A9F10 +FUN_020A9F10: ; 0x020A9F10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + cmp r2, #0x0 + addls sp, sp, #0x1c + mov r12, #0x0 + ldmlsia sp!, {r4-r11,pc} + mov r4, #0x8000 + ldr fp, _020AA098 ; =0x00007FFF + str r12, [sp, #0x8] + str r12, [sp, #0x14] + rsb r4, r4, #0x0 + mov lr, #0x58 +_020A9F40: + ldrb r5, [r0, #0x0] + ldrb r6, [r3, #0x2] + ldrsh r7, [r3, #0x0] + and r9, r5, #0xf + ldr r5, _020AA09C ; =UNK_020FF5D4 + mov r8, r6, lsl #0x1 + ldrsh r8, [r5, r8] + ands r5, r9, #0x4 + mov r5, r8, asr #0x3 + addne r5, r5, r8 + ands r10, r9, #0x2 + str r10, [sp, #0x0] + addne r5, r5, r8, asr #0x1 + ands r10, r9, #0x1 + addne r5, r5, r8, asr #0x2 + str r10, [sp, #0x4] + ands r8, r9, #0x8 + beq _020A9FA0 + sub r7, r7, r5 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r7, r5 + movlt r7, r4 + b _020A9FAC +_020A9FA0: + add r7, r7, r5 + cmp r7, r11 + movgt r7, r11 +_020A9FAC: + ldr r5, _020AA0A0 ; =UNK_020FF5C4 + ldrsb r5, [r5, r9] + adds r6, r6, r5 + ldrmi r6, [sp, #0x8] + bmi _020A9FC8 + cmp r6, #0x58 + movgt r6, lr +_020A9FC8: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0x0] + ldrb r5, [r0, #0x0] + ldrb r6, [r3, #0x2] + ldrsh r7, [r3, #0x0] + mov r5, r5, asr #0x4 + and r9, r5, #0xf + ldr r5, _020AA09C ; =UNK_020FF5D4 + mov r8, r6, lsl #0x1 + ldrsh r8, [r5, r8] + ands r5, r9, #0x4 + mov r5, r8, asr #0x3 + addne r5, r5, r8 + ands r10, r9, #0x2 + str r10, [sp, #0xc] + addne r5, r5, r8, asr #0x1 + ands r10, r9, #0x1 + addne r5, r5, r8, asr #0x2 + str r10, [sp, #0x10] + ands r8, r9, #0x8 + beq _020AA040 + sub r7, r7, r5 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r7, r5 + movlt r7, r4 + b _020AA04C +_020AA040: + add r7, r7, r5 + cmp r7, r11 + movgt r7, r11 +_020AA04C: + ldr r5, _020AA0A0 ; =UNK_020FF5C4 + ldrsb r5, [r5, r9] + adds r6, r6, r5 + ldrmi r6, [sp, #0x14] + bmi _020AA068 + cmp r6, #0x58 + movgt r6, lr +_020AA068: + mov r5, r7, lsl #0x10 + mov r7, r5, asr #0x10 + strh r7, [r3, #0x0] + strb r6, [r3, #0x2] + add r12, r12, #0x1 + strh r7, [r1, #0x2] + cmp r12, r2 + add r1, r1, #0x4 + add r0, r0, #0x1 + blo _020A9F40 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AA098: .word 0x00007FFF +_020AA09C: .word UNK_020FF5D4 +_020AA0A0: .word UNK_020FF5C4 + + arm_func_start FUN_020AA0A4 +FUN_020AA0A4: + stmdb sp!, {r4-r8,lr} + ldr r0, _020AA1B4 ; =UNK_021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4-r8,pc} + ldr r1, _020AA1B8 ; =UNK_021CAF00 + ldr r0, [r1, #0x8c8] + cmp r0, #0x0 + bne _020AA0FC + bl FUN_020AA4C0 + ldr r1, _020AA1B8 ; =UNK_021CAF00 + cmp r0, #0x0 + str r0, [r1, #0x8c8] + beq _020AA0F4 + ldr r0, _020AA1BC ; =UNK_021CA8C8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} +_020AA0F4: + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} +_020AA0FC: + ldr r0, _020AA1C0 ; =UNK_021CCD20 + mov r5, #0x1 + ldr r0, [r0, #0x10] + cmp r0, #0x2 + bne _020AA130 + ldr r3, [r1, #0x8d4] + ldr r2, _020AA1C4 ; =UNK_020FF694 + mov r0, #0x3 + mla r0, r3, r0, r2 + ldr r3, [r1, #0x8d0] + add r2, r3, #0x1 + ldrb r5, [r3, r0] + str r2, [r1, #0x8d0] +_020AA130: + mov r4, #0x0 + ldr r7, _020AA1B8 ; =UNK_021CAF00 + mov r8, #0x80000000 + ldr r6, _020AA1C8 ; =UNK_021CA8BC + b _020AA1A4 +_020AA144: + ldr r1, [r7, #0x8cc] + mov r2, r1 + clz r2, r2 + cmp r2, #0x20 + beq _020AA1AC + mvn r0, r8, lsr r2 + and r3, r1, r0 + rsb r0, r2, #0x1f + ldr r1, [r7, #0x8c8] + ldr r2, [r6, #0x0] + str r3, [r7, #0x8cc] + and r0, r0, #0xff + bl MOD04_021EAE90 + ldr r0, [r7, #0x8cc] + cmp r0, #0x0 + bne _020AA1A0 + ldr r1, [r7, #0x8c0] + mov r0, #0x0 + add r1, r1, #0x1 + str r1, [r7, #0x8c0] + str r0, [r7, #0x8c8] + str r0, [r7, #0x8cc] + b _020AA1AC +_020AA1A0: + add r4, r4, #0x1 +_020AA1A4: + cmp r4, r5 + blt _020AA144 +_020AA1AC: + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AA1B4: .word UNK_021CA8D0 +_020AA1B8: .word UNK_021CAF00 +_020AA1BC: .word UNK_021CA8C8 +_020AA1C0: .word UNK_021CCD20 +_020AA1C4: .word UNK_020FF694 +_020AA1C8: .word UNK_021CA8BC + + arm_func_start FUN_020AA1CC +FUN_020AA1CC: ; 0x020AA1CC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + bl FUN_020AB154 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldrb r5, [r0, #0x11] + mov r0, r5 + bl FUN_020AB144 + mov r6, r0 + cmp r6, #0x0 + mov r7, #0x0 + ble _020AA294 +_020AA204: + mov r0, r5 + bl FUN_020AB10C + mov r4, r0 + ldr r3, [r4, #0xc] + cmp r3, #0x2 + blt _020AA230 + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020A8C28 + b _020AA25C +_020AA230: + cmp r3, #0x1 + bne _020AA24C + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020AB328 + b _020AA25C +_020AA24C: + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020AB2C0 +_020AA25C: + add r1, r4, #0x1c + mov r0, r4 + str r1, [r4, #0x474] + bl FUN_020AB088 + ldrb r1, [r4, #0x11] + mov r0, r4 + bl FUN_020AB500 + cmp r0, #0x0 + bge _020AA288 + mov r0, r4 + bl FUN_020ACD90 +_020AA288: + add r7, r7, #0x1 + cmp r7, r6 + blt _020AA204 +_020AA294: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020AA2A0 +FUN_020AA2A0: ; 0x020AA2A0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r4, _020AA4A8 ; =UNK_021CA8D0 + mov r10, r0 + ldr r0, [r4, #0x0] + ldr r7, [sp, #0x28] + cmp r0, #0x0 + mov r5, #0x0 + mov r9, r1 + mov r8, r2 + mov r11, r3 + addeq sp, sp, #0x4 + moveq r0, r5 + ldmeqia sp!, {r4-r11,pc} + ldr r1, _020AA4AC ; =UNK_021CA8E8 + mov r2, r5 +_020AA2E0: + ldr r0, [r1, #0x38] + cmp r10, r0 + ldreq r1, _020AA4AC ; =UNK_021CA8E8 + moveq r0, #0x94 + mlaeq r5, r2, r0, r1 + beq _020AA308 + add r2, r2, #0x1 + cmp r2, #0x3 + add r1, r1, #0x94 + blo _020AA2E0 +_020AA308: + cmp r5, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + ldrb r0, [r9, #0x4] + cmp r0, #0x41 + bne _020AA344 + ldrh r2, [r9, #0x6] + mov r0, #0x0 + mov r1, #0x1 + str r2, [r5, #0x30] + str r0, [r5, #0x4c] + add sp, sp, #0x4 + str r1, [r5, #0x6c] + ldmia sp!, {r4-r11,pc} +_020AA344: + cmp r0, #0x40 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + ldrb r0, [r9, #0x5] + and r4, r0, #0x7f + cmp r4, #0x5 + addge sp, sp, #0x4 + str r4, [r5, #0x24] + movge r0, #0x0 + ldmgeia sp!, {r4-r11,pc} + ldr r1, _020AA4B0 ; =UNK_020FF689 + ldr r0, _020AA4B4 ; =UNK_020FF688 + ldrb r2, [r1, r4, lsl #0x1] + ldrb r1, [r0, r4, lsl #0x1] + mov r0, #0x44 + mla r0, r1, r0, r2 + add r0, r0, #0xc + cmp r8, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + cmp r10, #0x0 + movne r0, #0x1 + movne r1, r0, lsl r10 + ldr r0, _020AA4B8 ; =UNK_021CA8B4 + moveq r1, #0x1 + ldr r0, [r0, #0x0] + ands r0, r0, r1 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + bl FUN_020ACDC8 + movs r6, r0 + bne _020AA40C + ldr r0, [r5, #0x34] + bl FUN_020AB6C4 + ldr r0, [r5, #0x34] + bl FUN_020AB234 + bl FUN_020ACDC8 + movs r6, r0 + bne _020AA3FC + bl FUN_020AB630 + bl FUN_020AB1E4 + bl FUN_020ACDC8 + mov r6, r0 +_020AA3FC: + cmp r6, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} +_020AA40C: + ldr r0, _020AA4BC ; =0x0000045C + sub r2, r8, #0xc + add r0, r6, r0 + sub r1, r0, r2 + add r0, r9, #0xc + str r1, [sp, #0x0] + bl MI_CpuCopy8 + ldr r0, [r5, #0x34] + sub r1, r8, #0xc + strb r0, [r6, #0x11] + ldr r0, [sp, #0x0] + str r4, [r6, #0xc] + str r0, [r6, #0x474] + str r1, [r6, #0x14] + str r11, [r6, #0x464] + str r7, [r6, #0x468] + strb r10, [r6, #0x10] + ldrb r2, [r9, #0x5] + mov r0, r5 + mov r1, r6 + and r2, r2, #0x80 + str r2, [r6, #0x45c] + ldr r2, [r9, #0x8] + str r2, [r6, #0x460] + ldrh r2, [r9, #0x6] + str r2, [r6, #0x18] + bl FUN_020AB760 + cmp r0, #0x0 + bne _020AA494 + mov r0, r6 + bl FUN_020ACD90 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AA494: + mov r0, r6 + bl FUN_020AB164 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AA4A8: .word UNK_021CA8D0 +_020AA4AC: .word UNK_021CA8E8 +_020AA4B0: .word UNK_020FF689 +_020AA4B4: .word UNK_020FF688 +_020AA4B8: .word UNK_021CA8B4 +_020AA4BC: .word 0x0000045C + + arm_func_start FUN_020AA4C0 +FUN_020AA4C0: ; 0x020AA4C0 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r0, _020AA728 ; =UNK_021CAF00 + ldr r1, _020AA72C ; =UNK_021CA8CC + ldr r3, [r0, #0x8c4] + ldr r2, [r0, #0x8c0] + ldr r5, [r1, #0x0] + sub r1, r3, r2 + cmp r1, #0x1 + subhi r1, r3, #0x1 + strhi r1, [r0, #0x8c0] + movhi r1, #0x1 + cmp r1, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldr r0, _020AA728 ; =UNK_021CAF00 + ldr r0, [r0, #0x8c0] + ands r0, r0, #0x1 + movne r1, #0x0 + moveq r1, #0x460 + ldr r0, _020AA728 ; =UNK_021CAF00 + cmp r5, #0x2 + add r8, r0, r1 + ldr r1, _020AA730 ; =UNK_021CA8D4 + add r7, r8, #0xc + addge r7, r7, #0x4 + ldr r1, [r1, #0x0] + mov r0, r7 + bl FUN_020AD500 + ldr r2, _020AA734 ; =0x040002B0 + mov r3, #0x0 + ldr r1, _020AA738 ; =0x040002B8 + mov r6, r0 + strh r3, [r2, #0x0] + str r6, [r1, #0x0] +_020AA550: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AA550 + ldr r0, _020AA73C ; =UNK_021CA8C8 + ldr r1, _020AA740 ; =0x040002B4 + ldr r0, [r0, #0x0] + ldr r4, [r1, #0x0] + cmp r0, #0x0 + beq _020AA588 + ldr r1, _020AA730 ; =UNK_021CA8D4 + mov r0, r7 + ldr r1, [r1, #0x0] + mov r2, r4 + bl FUN_020AD1CC +_020AA588: + ldr r0, _020AA744 ; =UNK_0210646C + strb r5, [r8, #0x5] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020AA5FC + mov r0, r6 + mov r1, r4 + mov r2, #0x0 + bl FUN_020ACF38 + ldr r1, _020AA748 ; =UNK_021CA8D8 + cmp r0, #0x0 + str r0, [r1, #0x0] + beq _020AA5D4 + cmp r0, #0x1 + beq _020AA5F0 + cmp r0, #0x3 + moveq r0, #0x41 + streqb r0, [r8, #0x4] + b _020AA5FC +_020AA5D4: + ldr r1, _020AA728 ; =UNK_021CAF00 + add sp, sp, #0x8 + ldr r2, [r1, #0x8c0] + mov r0, #0x0 + add r2, r2, #0x1 + str r2, [r1, #0x8c0] + ldmia sp!, {r4-r8,pc} +_020AA5F0: + ldrb r0, [r8, #0x5] + orr r0, r0, #0x80 + strb r0, [r8, #0x5] +_020AA5FC: + ldr r0, _020AA744 ; =UNK_0210646C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020AA62C + ldr r0, _020AA74C ; =UNK_021CA8B8 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldrneb r2, [r8, #0x5] + movne r1, #0x0 + orrne r2, r2, #0x80 + strneb r2, [r8, #0x5] + strne r1, [r0, #0x0] +_020AA62C: + ldr r0, _020AA750 ; =UNK_021CA8C4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldrneb r2, [r8, #0x5] + movne r1, #0x0 + orrne r2, r2, #0x80 + strneb r2, [r8, #0x5] + strne r1, [r0, #0x0] + cmp r5, #0x2 + blt _020AA690 + ldrb r0, [r8, #0x5] + ldr r3, _020AA754 ; =UNK_021CA8C0 + ands r0, r0, #0x80 + ldrne r0, _020AA754 ; =UNK_021CA8C0 + movne r1, #0x0 + strneh r1, [r0, #0x0] + strneb r1, [r0, #0x2] + ldr r0, _020AA730 ; =UNK_021CA8D4 + str r5, [sp, #0x0] + ldr r2, [r0, #0x0] + mov r1, r7 + sub r0, r7, #0x4 + mov r2, r2, lsr #0x1 + bl FUN_020A8BC8 + b _020AA6D4 +_020AA690: + cmp r5, #0x1 + bne _020AA6B4 + ldr r1, _020AA730 ; =UNK_021CA8D4 + mov r0, r7 + ldr r2, [r1, #0x0] + mov r1, r7 + mov r2, r2, lsr #0x1 + bl FUN_020AB37C + b _020AA6D4 +_020AA6B4: + cmp r5, #0x0 + bne _020AA6D4 + ldr r1, _020AA730 ; =UNK_021CA8D4 + mov r0, r7 + ldr r2, [r1, #0x0] + mov r1, r7 + mov r2, r2, lsr #0x1 + bl FUN_020AB2FC +_020AA6D4: + ldr r0, _020AA758 ; =UNK_021CCD20 + ldr r1, _020AA75C ; =UNK_021CA8B4 + ldrb r0, [r0, #0x0] + mov r2, #0x1 + ldr r3, [r1, #0x0] + mvn r0, r2, lsl r0 + ldr r1, _020AA728 ; =UNK_021CAF00 + and r0, r3, r0 + str r3, [r1, #0x8cc] + str r0, [r1, #0x8cc] + bl MATH_CountPopulation + sub r0, r0, #0x1 + ldr r1, _020AA728 ; =UNK_021CAF00 + cmp r0, #0x7 + str r0, [r1, #0x8d4] + movgt r0, #0x0 + movle r2, #0x0 + movle r0, r8 + strle r2, [r1, #0x8d0] + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AA728: .word UNK_021CAF00 +_020AA72C: .word UNK_021CA8CC +_020AA730: .word UNK_021CA8D4 +_020AA734: .word 0x040002B0 +_020AA738: .word 0x040002B8 +_020AA73C: .word UNK_021CA8C8 +_020AA740: .word 0x040002B4 +_020AA744: .word UNK_0210646C +_020AA748: .word UNK_021CA8D8 +_020AA74C: .word UNK_021CA8B8 +_020AA750: .word UNK_021CA8C4 +_020AA754: .word UNK_021CA8C0 +_020AA758: .word UNK_021CCD20 +_020AA75C: .word UNK_021CA8B4 + + arm_func_start FUN_020AA760 +FUN_020AA760: ; 0x020AA760 + ldr r1, _020AA76C ; =UNK_021CA8C8 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020AA76C: .word UNK_021CA8C8 + + arm_func_start FUN_020AA770 +FUN_020AA770: ; 0x020AA770 + stmdb sp!, {r4,lr} + ldr r1, _020AA798 ; =UNK_0210646C + mov r4, r0 + str r4, [r1, #0x0] + bl FUN_020AD170 + cmp r4, #0x0 + ldreq r0, _020AA79C ; =UNK_021CA8B8 + moveq r1, #0x1 + streq r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AA798: .word UNK_0210646C +_020AA79C: .word UNK_021CA8B8 + + arm_func_start FUN_020AA7A0 +FUN_020AA7A0: ; 0x020AA7A0 + cmp r0, #0x5 + movge r0, #0x0 + bxge lr + ldr r1, _020AA80C ; =UNK_021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x1 + beq _020AA7C8 + cmp r0, #0x1 + movls r0, #0x0 + bxls lr +_020AA7C8: + ldr r2, _020AA810 ; =UNK_020FF689 + ldr r1, _020AA814 ; =UNK_020FF688 + ldrb r12, [r2, r0, lsl #0x1] + ldrb r3, [r1, r0, lsl #0x1] + mov r1, #0x44 + ldr r2, _020AA818 ; =UNK_021CA8CC + mla r12, r3, r1, r12 + str r0, [r2, #0x0] + ldr r1, _020AA81C ; =UNK_021CA8BC + add r3, r12, #0xc + ldr r0, _020AA820 ; =UNK_021CA8C0 + mov r2, #0x0 + str r3, [r1, #0x0] + strh r2, [r0, #0x0] + strb r2, [r0, #0x2] + mov r0, #0x1 + bx lr + .balign 4 +_020AA80C: .word UNK_021CCD20 +_020AA810: .word UNK_020FF689 +_020AA814: .word UNK_020FF688 +_020AA818: .word UNK_021CA8CC +_020AA81C: .word UNK_021CA8BC +_020AA820: .word UNK_021CA8C0 + + arm_func_start FUN_020AA824 +FUN_020AA824: ; 0x020AA824 + stmdb sp!, {r4-r10,lr} + movs r5, r2 + mov r7, r0 + movne r0, #0x0 + strne r0, [r5, #0x0] + ldr r0, _020AA958 ; =UNK_021CA8D4 + mov r6, r1 + ldr r0, [r0, #0x0] + mov r4, #0x0 + cmp r6, r0 + bne _020AA920 + ldr r8, _020AA95C ; =UNK_021CA8D0 + ldr r0, [r8, #0x0] + cmp r0, #0x0 + beq _020AA920 + mov r9, r4 + cmp r0, #0x0 + bls _020AA89C +_020AA86C: + mov r0, r7 + mov r1, r6 + mov r2, r9 + mov r3, r5 + bl FUN_020AA968 + cmp r0, #0x1 + moveq r4, #0x1 + beq _020AA89C + ldr r0, [r8, #0x0] + add r9, r9, #0x1 + cmp r9, r0 + blo _020AA86C +_020AA89C: + cmp r4, #0x0 + beq _020AA90C + ldr r8, _020AA95C ; =UNK_021CA8D0 + add r10, r9, #0x1 + ldr r0, [r8, #0x0] + cmp r10, r0 + moveq r4, #0x1 + beq _020AA934 + cmp r10, r0 + bhs _020AA934 + ldr sb, _020AA960 ; =UNK_021CAAA4 +_020AA8C8: + mov r0, r9 + mov r1, r6 + mov r2, r10 + mov r3, r5 + bl FUN_020AA968 + cmp r0, #0x1 + bne _020AA8F8 + mov r0, r7 + mov r1, r9 + mov r2, r7 + mov r3, r6 + bl FUN_020AD61C +_020AA8F8: + ldr r0, [r8, #0x0] + add r10, r10, #0x1 + cmp r10, r0 + blo _020AA8C8 + b _020AA934 +_020AA90C: + mov r1, r7 + mov r2, r6 + mov r0, #0x0 + bl MIi_CpuClearFast + b _020AA934 +_020AA920: + mov r1, r7 + mov r2, r6 + mov r0, #0x0 + bl MIi_CpuClearFast + mov r4, #0x0 +_020AA934: + ldr r0, _020AA964 ; =UNK_021CA8C8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020AA950 + mov r0, r7 + mov r1, r6 + bl FUN_020AD45C +_020AA950: + mov r0, r4 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AA958: .word UNK_021CA8D4 +_020AA95C: .word UNK_021CA8D0 +_020AA960: .word UNK_021CAAA4 +_020AA964: .word UNK_021CA8C8 + + arm_func_start FUN_020AA968 +FUN_020AA968: ; 0x020AA968 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + ldr r4, _020AABD4 ; =UNK_021CA8E8 + mov r10, r2 + mov r2, #0x94 + mla r6, r10, r2, r4 + str r0, [sp, #0x0] + mov r0, r10 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + mov r5, #0x1 + bl FUN_020AB434 + movs r8, r0 + beq _020AABB0 + mov r11, #0x0 +_020AA9A4: + bl OS_GetTick + mov r4, r0 + mov r0, r10 + mov r9, r1 + bl FUN_020AB4B8 + movs r7, r0 + beq _020AAB98 + mov r0, #0x34 + adds r2, r4, r0 + ldr r8, [r7, #0x46c] + ldr r3, [r7, #0x470] + mov r1, #0x0 + adc r0, r9, #0x0 + cmp r3, r0 + cmpeq r8, r2 + bls _020AAA68 + ldr r0, [r7, #0x45c] + cmp r0, #0x0 + bne _020AAA5C + ldr r0, [r6, #0x3c] + cmp r0, #0x0 + beq _020AAA5C + ldr r0, [r6, #0x20] + ldr r1, [sp, #0x0] + add r0, r0, #0x1 + str r0, [r6, #0x20] + ldr r0, [r6, #0x3c] + ldr r2, [sp, #0x4] + ldr r0, [r0, #0x474] + bl MIi_CpuCopyFast + ldr r0, [r6, #0x3c] + bl FUN_020ACD90 + mov r0, #0x0 + str r0, [r6, #0x3c] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020AAA50 + ldrb r1, [r7, #0x10] + ldr r2, [r0, #0x0] + mov r0, #0x1 + orr r1, r2, r0, lsl r1 + ldr r0, [sp, #0x8] + str r1, [r0, #0x0] +_020AAA50: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020AAA5C: + add sp, sp, #0xc + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AAA68: + ldr r0, _020AABD8 ; =0x00008B4C + adds r2, r8, r0 + adc r0, r3, r1 + cmp r9, r0 + cmpeq r4, r2 + bls _020AAAA8 + ldr r2, [r7, #0x18] + mov r0, r6 + mov r1, r7 + str r2, [r6, #0x58] + bl FUN_020ABC0C + mov r8, r0 + mov r0, r10 + bl FUN_020AB4B8 + mov r5, r11 + b _020AABA8 +_020AAAA8: + ldr r1, [r6, #0x58] + ldr r2, [r7, #0x18] + add r0, r1, #0x1 + cmp r0, r2 + beq _020AAAE0 + cmp r1, #0x0 + beq _020AAAE0 + cmp r1, r2 + bhi _020AAAE0 + ldr r0, [r7, #0x45c] + cmp r0, #0x0 + ldreq r0, [r6, #0x14] + addeq r0, r0, #0x1 + streq r0, [r6, #0x14] +_020AAAE0: + ldr r0, [r7, #0x18] + cmp r5, #0x0 + str r0, [r6, #0x58] + beq _020AAB24 + ldr r0, [r6, #0x70] + cmp r0, #0x0 + beq _020AAB24 + mov r0, r6 + mov r1, r7 + bl FUN_020ABC0C + mov r8, r0 + mov r0, r10 + bl FUN_020AB4B8 + ldr r0, [r6, #0x70] + sub r0, r0, #0x1 + str r0, [r6, #0x70] + b _020AABA8 +_020AAB24: + ldr r1, [r7, #0x464] + ldr r0, [r6, #0x28] + subs r2, r4, r1 + str r2, [r6, #0x28] + ldr r1, [r6, #0x28] + sub r0, r2, r0 + sub r0, r0, r1 + add r0, r1, r0, lsr #0x4 + str r0, [r6, #0x2c] + str r0, [r6, #0x0] + ldr r0, [r7, #0x474] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + bl MIi_CpuCopyFast + mov r0, r6 + mov r1, r7 + bl FUN_020ABC0C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020AAB8C + ldrb r1, [r7, #0x10] + ldr r2, [r0, #0x0] + mov r0, #0x1 + orr r1, r2, r0, lsl r1 + ldr r0, [sp, #0x8] + str r1, [r0, #0x0] +_020AAB8C: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020AAB98: + add sp, sp, #0xc + str r8, [r6, #0x8] + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AABA8: + cmp r8, #0x0 + bne _020AA9A4 +_020AABB0: + ldr r0, [r6, #0x3c] + cmp r0, #0x0 + beq _020AABC8 + bl FUN_020ACD90 + mov r0, #0x0 + str r0, [r6, #0x3c] +_020AABC8: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AABD4: .word UNK_021CA8E8 +_020AABD8: .word 0x00008B4C + + arm_func_start FUN_020AABDC +FUN_020AABDC: ; 0x020AABDC + stmdb sp!, {r4,lr} + ldr r3, _020AACE0 ; =UNK_021CA8D4 + mov r2, r1 + ldr r1, [r3, #0x0] + mov r12, #0x0 + cmp r2, r1 + movne r0, r12 + ldmneia sp!, {r4,pc} + ldr r1, _020AACE4 ; =UNK_021CA8D0 + ldr r4, [r1, #0x0] + cmp r4, #0x0 + moveq r0, r12 + ldmeqia sp!, {r4,pc} + mov lr, r12 + cmp r4, #0x0 + bls _020AAC48 + ldr r3, _020AACE8 ; =UNK_021CA8DC +_020AAC20: + ldr r1, [r3, lr, lsl #0x2] + cmp r1, #0x0 + beq _020AAC3C + ldr r1, [r1, #0xc] + cmp r1, #0x2 + moveq r12, #0x1 + beq _020AAC48 +_020AAC3C: + add lr, lr, #0x1 + cmp lr, r4 + blo _020AAC20 +_020AAC48: + cmp r12, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, _020AACEC ; =UNK_021CAF00 + ldr r4, _020AACEC ; =UNK_021CAF00 + ldr r1, [r1, #0x8c4] + ldr r3, _020AACF0 ; =0x5F564354 + ands r1, r1, #0x1 + movne r12, #0x0 + moveq r12, #0x460 + str r3, [r4, r12] + ldr r1, _020AACF4 ; =UNK_021CA8CC + add r4, r4, r12 + ldr r1, [r1, #0x0] + cmp r1, #0x2 + blt _020AAC94 + add r1, r4, #0x10 + bl MIi_CpuCopyFast + b _020AAC9C +_020AAC94: + add r1, r4, #0xc + bl MIi_CpuCopyFast +_020AAC9C: + mov r1, #0x40 + ldr r0, _020AACF8 ; =UNK_021CA8B0 + strb r1, [r4, #0x4] + ldrh r2, [r0, #0x0] + add r1, r2, #0x1 + strh r1, [r0, #0x0] + strh r2, [r4, #0x6] + bl OS_GetTick + mov r0, r0, lsr #0x6 + orr r0, r0, r1, lsl #0x1a + ldr r1, _020AACEC ; =UNK_021CAF00 + str r0, [r4, #0x8] + ldr r2, [r1, #0x8c4] + mov r0, #0x1 + add r2, r2, #0x1 + str r2, [r1, #0x8c4] + ldmia sp!, {r4,pc} + .balign 4 +_020AACE0: .word UNK_021CA8D4 +_020AACE4: .word UNK_021CA8D0 +_020AACE8: .word UNK_021CA8DC +_020AACEC: .word UNK_021CAF00 +_020AACF0: .word 0x5F564354 +_020AACF4: .word UNK_021CA8CC +_020AACF8: .word UNK_021CA8B0 + + arm_func_start FUN_020AACFC +FUN_020AACFC: ; 0x020AACFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, #0x0 + ldr ip, _020AADB8 ; =UNK_021CA8DC +_020AAD10: + ldr r0, [r12, r4, lsl #0x2] + mov lr, r4, lsl #0x2 + cmp r0, r5 + bne _020AAD74 + ldr r1, _020AADBC ; =UNK_021CA8E8 + mov r0, #0x94 + mla r0, r4, r0, r1 + ldr r1, _020AADC0 ; =UNK_021CA8D0 + mov r3, #0x0 + ldr r2, [r1, #0x0] + str r3, [r12, lr] + sub r2, r2, #0x1 + str r2, [r1, #0x0] + bl FUN_020ABC40 + mov r0, r4 + bl FUN_020AB6C4 + mov r0, r4 + bl FUN_020AB234 + ldr r0, _020AADC4 ; =UNK_021CA8B4 + ldr r1, [r5, #0x8] + ldr r2, [r0, #0x0] + mvn r1, r1 + and r1, r2, r1 + str r1, [r0, #0x0] + b _020AAD80 +_020AAD74: + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020AAD10 +_020AAD80: + ldr r0, _020AADC0 ; =UNK_021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + ldr r0, _020AADC8 ; =UNK_021CA8C4 + mov r1, #0x1 + str r1, [r0, #0x0] + bl FUN_020AD170 + ldr r0, _020AADC4 ; =UNK_021CA8B4 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AADB8: .word UNK_021CA8DC +_020AADBC: .word UNK_021CA8E8 +_020AADC0: .word UNK_021CA8D0 +_020AADC4: .word UNK_021CA8B4 +_020AADC8: .word UNK_021CA8C4 + + arm_func_start FUN_020AADCC +FUN_020AADCC: ; 0x020AADCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020AAF24 ; =UNK_021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0xc] + cmp r0, #0x2 + beq _020AAE18 + cmp r0, #0x3 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r5,pc} +_020AAE18: + ldr r1, _020AAF28 ; =UNK_021CA8DC + mov r2, #0x0 +_020AAE20: + ldr r0, [r1, r2, lsl #0x2] + cmp r0, r5 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,pc} + add r2, r2, #0x1 + cmp r2, #0x3 + blo _020AAE20 + ldr r1, _020AAF28 ; =UNK_021CA8DC + mov r4, #0x0 +_020AAE48: + ldr r0, [r1, r4, lsl #0x2] + mov r2, r4, lsl #0x2 + cmp r0, #0x0 + streq r5, [r1, r2] + beq _020AAE68 + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020AAE48 +_020AAE68: + ldr r0, _020AAF24 ; =UNK_021CA8D0 + ldr r1, _020AAF2C ; =UNK_021CA8B4 + ldr r3, [r0, #0x0] + ldr r2, _020AAF30 ; =UNK_021CA8E8 + add r3, r3, #0x1 + str r3, [r0, #0x0] + mov r0, #0x94 + ldr r12, [r1, #0x0] + ldr r3, [r5, #0x8] + mla r0, r4, r0, r2 + orr r2, r12, r3 + str r2, [r1, #0x0] + ldrb r2, [r5, #0x5] + mov r1, r4 + bl FUN_020ABC6C + mov r0, r4 + bl FUN_020AB714 + ldr r0, [r5, #0xc] + cmp r0, #0x2 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,pc} + ldr r0, _020AAF24 ; =UNK_021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _020AAF18 + bl FUN_020AD170 + bl OS_GetTickLo + ldr r4, _020AAF34 ; =UNK_021CA8B0 + ldr r3, _020AAF38 ; =UNK_021CA8C0 + mov r12, #0x0 + ldr r1, _020AAF3C ; =UNK_021CAF00 + ldr r2, _020AAF40 ; =UNK_021CA8C4 + mov r5, #0x1 + strh r0, [r4, #0x0] + strh r12, [r3, #0x0] + strb r12, [r3, #0x2] + str r5, [r2, #0x0] + str r12, [r1, #0x8c0] + str r12, [r1, #0x8c4] + str r12, [r1, #0x8cc] + str r12, [r1, #0x8c8] + str r12, [r1, #0x8d0] + str r12, [r1, #0x8d4] +_020AAF18: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AAF24: .word UNK_021CA8D0 +_020AAF28: .word UNK_021CA8DC +_020AAF2C: .word UNK_021CA8B4 +_020AAF30: .word UNK_021CA8E8 +_020AAF34: .word UNK_021CA8B0 +_020AAF38: .word UNK_021CA8C0 +_020AAF3C: .word UNK_021CAF00 +_020AAF40: .word UNK_021CA8C4 + + arm_func_start FUN_020AAF44 +FUN_020AAF44: ; 0x020AAF44 + ldr r0, _020AAF54 ; =UNK_021CA8D0 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020AAF54: .word UNK_021CA8D0 + + arm_func_start FUN_020AAF58 +FUN_020AAF58: + stmdb sp!, {r4-r8,lr} + bl OS_GetTickLo + ldr r1, _020AB054 ; =UNK_021CCD20 + ldr ip, _020AB058 ; =UNK_021CA8B0 + ldr r4, [r1, #0x10] + strh r0, [r12, #0x0] + cmp r4, #0x1 + ldreq r0, _020AB05C ; =UNK_021CA8CC + mov r5, #0x0 + ldr r1, _020AB060 ; =UNK_021CA8B4 + streq r5, [r0, #0x0] + str r5, [r1, #0x0] + ldr r2, _020AB064 ; =UNK_021CA8D0 + ldrne r0, _020AB05C ; =UNK_021CA8CC + movne r1, #0x4 + strne r1, [r0, #0x0] + str r5, [r2, #0x0] + ldr r0, _020AB05C ; =UNK_021CA8CC + ldr r3, _020AB068 ; =UNK_0210646C + ldr r2, [r0, #0x0] + mov r6, #0x1 + ldr r1, _020AB06C ; =UNK_020FF689 + str r6, [r3, #0x0] + ldr r0, _020AB070 ; =UNK_020FF688 + ldrb r3, [r1, r2, lsl #0x1] + ldrb r1, [r0, r2, lsl #0x1] + mov r0, #0x44 + ldr r2, _020AB074 ; =UNK_021CA8D4 + mla r0, r1, r0, r3 + add r4, r0, #0xc + ldr r1, _020AB078 ; =UNK_021CA8BC + mov r5, #0x440 + ldr r0, _020AB07C ; =UNK_021CAF00 + mov r3, #0x0 + str r5, [r2, #0x0] + str r4, [r1, #0x0] + str r3, [r0, #0x8c0] + str r3, [r0, #0x8c4] + str r3, [r0, #0x8cc] + str r3, [r0, #0x8c8] + str r3, [r0, #0x8d0] + str r3, [r0, #0x8d4] + bl FUN_020ACF10 + mov r8, #0x0 + ldr r7, _020AB080 ; =UNK_021CA8E8 + ldr r5, _020AB084 ; =UNK_021CA8DC + mov r6, r8 + mvn r4, #0x0 +_020AB018: + mov r0, r8 + str r6, [r5, r8, lsl #0x2] + bl FUN_020AB714 + mov r0, r7 + mov r1, r8 + mov r2, r4 + bl FUN_020ABC6C + add r8, r8, #0x1 + cmp r8, #0x3 + add r7, r7, #0x94 + blo _020AB018 + bl FUN_020AB284 + bl FUN_020AD474 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AB054: .word UNK_021CCD20 +_020AB058: .word UNK_021CA8B0 +_020AB05C: .word UNK_021CA8CC +_020AB060: .word UNK_021CA8B4 +_020AB064: .word UNK_021CA8D0 +_020AB068: .word UNK_0210646C +_020AB06C: .word UNK_020FF689 +_020AB070: .word UNK_020FF688 +_020AB074: .word UNK_021CA8D4 +_020AB078: .word UNK_021CA8BC +_020AB07C: .word UNK_021CAF00 +_020AB080: .word UNK_021CA8E8 +_020AB084: .word UNK_021CA8DC + + arm_func_start FUN_020AB088 +FUN_020AB088: ; 0x020AB088 + ldr r2, [r0, #0x4] + cmp r2, #0x0 + ldrne r1, [r0, #0x8] + strne r1, [r2, #0x8] + bne _020AB0B4 + ldr r2, [r0, #0x8] + ldr r1, _020AB100 ; =UNK_021CB7D8 + cmp r2, #0x0 + str r2, [r1, #0x0] + movne r1, #0x0 + strne r1, [r2, #0x4] +_020AB0B4: + ldr r2, [r0, #0x8] + cmp r2, #0x0 + ldrne r1, [r0, #0x4] + strne r1, [r2, #0x4] + bne _020AB0E0 + ldr r2, [r0, #0x4] + ldr r1, _020AB104 ; =UNK_021CB7DC + cmp r2, #0x0 + str r2, [r1, #0x0] + movne r1, #0x0 + strne r1, [r2, #0x8] +_020AB0E0: + ldrb r2, [r0, #0x11] + ldr r3, _020AB108 ; =UNK_021CB7E0 + ldr r1, [r3, r2, lsl #0x2] + sub r1, r1, #0x1 + str r1, [r3, r2, lsl #0x2] + ldrb r0, [r0, #0x11] + ldr r0, [r3, r0, lsl #0x2] + bx lr + .balign 4 +_020AB100: .word UNK_021CB7D8 +_020AB104: .word UNK_021CB7DC +_020AB108: .word UNK_021CB7E0 + + arm_func_start FUN_020AB10C +FUN_020AB10C: ; 0x020AB10C + ldr r1, _020AB140 ; =UNK_021CB7D8 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + beq _020AB138 +_020AB11C: + ldrb r1, [r2, #0x11] + cmp r1, r0 + moveq r0, r2 + bxeq lr + ldr r2, [r2, #0x8] + cmp r2, #0x0 + bne _020AB11C +_020AB138: + mov r0, #0x0 + bx lr + .balign 4 +_020AB140: .word UNK_021CB7D8 + + arm_func_start FUN_020AB144 +FUN_020AB144: ; 0x020AB144 + ldr r1, _020AB150 ; =UNK_021CB7E0 + ldr r0, [r1, r0, lsl #0x2] + bx lr + .balign 4 +_020AB150: .word UNK_021CB7E0 + + arm_func_start FUN_020AB154 +FUN_020AB154: + ldr r0, _020AB160 ; =UNK_021CB7D8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020AB160: .word UNK_021CB7D8 + + arm_func_start FUN_020AB164 +FUN_020AB164: ; 0x020AB164 + ldr r2, _020AB1D8 ; =UNK_021CB7D8 + ldr r1, [r2, #0x0] + cmp r1, #0x0 + bne _020AB198 + str r0, [r2, #0x0] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r2, #0x0] + ldr r1, _020AB1DC ; =UNK_021CB7DC + str r12, [r3, #0x8] + ldr r2, [r2, #0x0] + str r2, [r1, #0x0] + b _020AB1B8 +_020AB198: + ldr r1, _020AB1DC ; =UNK_021CB7DC + mov r2, #0x0 + ldr r3, [r1, #0x0] + str r3, [r0, #0x4] + str r2, [r0, #0x8] + ldr r2, [r1, #0x0] + str r0, [r2, #0x8] + str r0, [r1, #0x0] +_020AB1B8: + ldrb r2, [r0, #0x11] + ldr r3, _020AB1E0 ; =UNK_021CB7E0 + ldr r1, [r3, r2, lsl #0x2] + add r1, r1, #0x1 + str r1, [r3, r2, lsl #0x2] + ldrb r0, [r0, #0x11] + ldr r0, [r3, r0, lsl #0x2] + bx lr + .balign 4 +_020AB1D8: .word UNK_021CB7D8 +_020AB1DC: .word UNK_021CB7DC +_020AB1E0: .word UNK_021CB7E0 + + arm_func_start FUN_020AB1E4 +FUN_020AB1E4: ; 0x020AB1E4 + stmdb sp!, {r4,lr} + ldr r0, _020AB22C ; =UNK_021CB7D8 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + beq _020AB20C +_020AB1F8: + mov r0, r4 + ldr r4, [r4, #0x8] + bl FUN_020ACD90 + cmp r4, #0x0 + bne _020AB1F8 +_020AB20C: + mov r2, #0x0 + ldr r0, _020AB230 ; =UNK_021CB7E0 + mov r1, r2 +_020AB218: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020AB218 + ldmia sp!, {r4,pc} + .balign 4 +_020AB22C: .word UNK_021CB7D8 +_020AB230: .word UNK_021CB7E0 + + arm_func_start FUN_020AB234 +FUN_020AB234: ; 0x020AB234 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020AB10C + movs r4, r0 + beq _020AB26C +_020AB24C: + mov r0, r4 + bl FUN_020AB088 + mov r0, r4 + bl FUN_020ACD90 + mov r0, r5 + bl FUN_020AB10C + movs r4, r0 + bne _020AB24C +_020AB26C: + ldr r0, _020AB280 ; =UNK_021CB7E0 + mov r1, #0x0 + str r1, [r0, r5, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB280: .word UNK_021CB7E0 + + arm_func_start FUN_020AB284 +FUN_020AB284: ; 0x020AB284 + ldr r1, _020AB2B4 ; =UNK_021CB7DC + mov r2, #0x0 + ldr r0, _020AB2B8 ; =UNK_021CB7D8 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r0, _020AB2BC ; =UNK_021CB7E0 + mov r1, r2 +_020AB2A0: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020AB2A0 + bx lr + .balign 4 +_020AB2B4: .word UNK_021CB7DC +_020AB2B8: .word UNK_021CB7D8 +_020AB2BC: .word UNK_021CB7E0 + + arm_func_start FUN_020AB2C0 +FUN_020AB2C0: ; 0x020AB2C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + addls sp, sp, #0x4 + mov lr, #0x0 + ldmlsia sp!, {pc} +_020AB2D8: + ldrsb r12, [r0, lr] + mov r3, lr, lsl #0x1 + add lr, lr, #0x1 + mov r12, r12, lsl #0x8 + strh r12, [r1, r3] + cmp lr, r2 + blo _020AB2D8 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AB2FC +FUN_020AB2FC: ; 0x020AB2FC + cmp r2, #0x0 + mov r12, #0x0 + bxls lr +_020AB308: + mov r3, r12, lsl #0x1 + ldrsh r3, [r1, r3] + mov r3, r3, asr #0x8 + strb r3, [r0, r12] + add r12, r12, #0x1 + cmp r12, r2 + blo _020AB308 + bx lr + + arm_func_start FUN_020AB328 +FUN_020AB328: ; 0x020AB328 + stmdb sp!, {r4,lr} + mov r4, #0x0 + cmp r2, #0x0 + ldmlsia sp!, {r4,pc} +_020AB338: + ldrb r3, [r0, r4] + mvn lr, r3 + and r3, lr, #0xf + mov r12, r3, lsl #0x3 + and r3, lr, #0x70 + add r12, r12, #0x84 + mov r3, r3, asr #0x4 + mov r12, r12, lsl r3 + ands r3, lr, #0x80 + rsbne r12, r12, #0x84 + mov r3, r4, lsl #0x1 + subeq r12, r12, #0x84 + add r4, r4, #0x1 + strh r12, [r1, r3] + cmp r4, r2 + blo _020AB338 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AB37C +FUN_020AB37C: ; 0x020AB37C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + mov r8, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r11,pc} + mov r12, r8 + mov lr, #0xff + mov r4, #0x7f + mov r3, #0x8 +_020AB3A4: + mov r5, r8, lsl #0x1 + ldrsh r5, [r1, r5] + ldr fp, _020AB42C ; =UNK_02106470 + movs r7, r5, asr #0x2 + movmi r6, r4 + ldr r5, _020AB430 ; =0x00001FDF + rsbmi r7, r7, #0x0 + movpl r6, lr + cmp r7, r5 + movgt r7, r5 + mov r5, r12 + add r10, r7, #0x21 +_020AB3D4: + ldr r9, [r11], #0x4 + cmp r10, r9 + ble _020AB3F0 + add r5, r5, #0x1 + cmp r5, #0x8 + blt _020AB3D4 + mov r5, r3 +_020AB3F0: + cmp r5, #0x8 + eorge r5, r6, #0x7f + bge _020AB414 + add r9, r7, #0x21 + add r7, r5, #0x1 + mov r7, r9, asr r7 + and r7, r7, #0xf + orr r5, r7, r5, lsl #0x4 + eor r5, r5, r6 +_020AB414: + strb r5, [r0, r8] + add r8, r8, #0x1 + cmp r8, r2 + blo _020AB3A4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AB42C: .word UNK_02106470 +_020AB430: .word 0x00001FDF + + arm_func_start FUN_020AB434 +FUN_020AB434: ; 0x020AB434 + ldr r1, _020AB440 ; =UNK_021CB7FC + ldr r0, [r1, r0, lsl #0x2] + bx lr + .balign 4 +_020AB440: .word UNK_021CB7FC + + arm_func_start FUN_020AB444 +FUN_020AB444: ; 0x020AB444 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r3, _020AB4AC ; =UNK_021CB7F0 + ldr r1, _020AB4B0 ; =UNK_021CB7EC + ldr r2, [r3, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + mov r12, r4, lsl #0x2 + beq _020AB494 + ldr r1, _020AB4B4 ; =UNK_021CB7FC + ldr r2, [r2, #0x8] + ldr r0, [r1, r12] + sub r0, r0, #0x1 + str r0, [r1, r12] + str r2, [r3, r12] + ldr r1, [r3, r12] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x4] +_020AB494: + ldr r0, _020AB4B0 ; =UNK_021CB7EC + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020AB4B4 ; =UNK_021CB7FC + ldr r0, [r0, r4, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020AB4AC: .word UNK_021CB7F0 +_020AB4B0: .word UNK_021CB7EC +_020AB4B4: .word UNK_021CB7FC + + arm_func_start FUN_020AB4B8 +FUN_020AB4B8: ; 0x020AB4B8 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r2, _020AB4F8 ; =UNK_021CB7F0 + ldr r1, _020AB4FC ; =UNK_021CB7EC + ldr r2, [r2, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + beq _020AB4EC + bl OS_RestoreInterrupts + ldr r0, _020AB4F8 ; =UNK_021CB7F0 + ldr r0, [r0, r4, lsl #0x2] + ldmia sp!, {r4,pc} +_020AB4EC: + bl OS_RestoreInterrupts + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AB4F8: .word UNK_021CB7F0 +_020AB4FC: .word UNK_021CB7EC + + arm_func_start FUN_020AB500 +FUN_020AB500: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + cmp r4, #0x3 + addcs sp, sp, #0x4 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} + bl OS_DisableInterrupts + ldr r3, _020AB620 ; =UNK_021CB7F0 + ldr r1, _020AB624 ; =UNK_021CB7EC + ldr r2, [r3, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + mov r12, r4, lsl #0x2 + bne _020AB574 + str r5, [r3, r12] + ldr r0, [r3, r12] + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r3, r12] + ldr r0, _020AB628 ; =UNK_021CB808 + str r2, [r1, #0x8] + ldr r1, [r3, r12] + str r1, [r0, r12] + b _020AB5F4 +_020AB574: + ldr r0, _020AB628 ; =UNK_021CB808 + ldr r3, [r0, r12] + cmp r3, #0x0 + beq _020AB5D4 + ldr r1, [r5, #0x18] +_020AB588: + ldr r0, [r3, #0x18] + cmp r0, r1 + bhs _020AB5C8 + str r3, [r5, #0x4] + ldr r0, [r3, #0x8] + ldr r1, _020AB628 ; =UNK_021CB808 + str r0, [r5, #0x8] + str r5, [r3, #0x8] + ldr r0, [r5, #0x8] + mov r2, r4, lsl #0x2 + cmp r0, #0x0 + strne r5, [r0, #0x4] + ldr r0, [r1, r4, lsl #0x2] + cmp r3, r0 + streq r5, [r1, r2] + b _020AB5F4 +_020AB5C8: + ldr r3, [r3, #0x4] + cmp r3, #0x0 + bne _020AB588 +_020AB5D4: + mov r0, #0x0 + ldr r1, _020AB620 ; =UNK_021CB7F0 + str r0, [r5, #0x4] + ldr r0, [r1, r4, lsl #0x2] + str r0, [r5, #0x8] + ldr r0, [r1, r4, lsl #0x2] + str r5, [r0, #0x4] + str r5, [r1, r4, lsl #0x2] +_020AB5F4: + ldr r2, _020AB62C ; =UNK_021CB7FC + ldr r0, _020AB624 ; =UNK_021CB7EC + ldr r1, [r2, r4, lsl #0x2] + add r1, r1, #0x1 + str r1, [r2, r4, lsl #0x2] + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020AB62C ; =UNK_021CB7FC + ldr r0, [r0, r4, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB620: .word UNK_021CB7F0 +_020AB624: .word UNK_021CB7EC +_020AB628: .word UNK_021CB808 +_020AB62C: .word UNK_021CB7FC + + arm_func_start FUN_020AB630 +FUN_020AB630: ; 0x020AB630 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r7, #0x0 + ldr r1, _020AB6B8 ; =UNK_021CB7EC + mov r4, r7 + mov r9, r7 + str r0, [r1, #0x0] + ldr r5, _020AB6BC ; =UNK_021CB7F0 + ldr r8, _020AB6C0 ; =UNK_021CB7FC + b _020AB69C +_020AB65C: + ldr r0, [r5, r7, lsl #0x2] + mov r6, r7, lsl #0x2 + cmp r0, #0x0 + beq _020AB694 +_020AB66C: + ldr r0, [r5, r6] + ldr r1, [r0, #0x8] + str r1, [r5, r6] + ldr r1, [r5, r6] + cmp r1, #0x0 + strne r4, [r1, #0x4] + bl FUN_020ACD90 + ldr r0, [r5, r6] + cmp r0, #0x0 + bne _020AB66C +_020AB694: + str r9, [r8, r7, lsl #0x2] + add r7, r7, #0x1 +_020AB69C: + cmp r7, #0x3 + blt _020AB65C + ldr r0, _020AB6B8 ; =UNK_021CB7EC + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AB6B8: .word UNK_021CB7EC +_020AB6BC: .word UNK_021CB7F0 +_020AB6C0: .word UNK_021CB7FC + + arm_func_start FUN_020AB6C4 +FUN_020AB6C4: ; 0x020AB6C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020AB4B8 + movs r4, r0 + beq _020AB6FC +_020AB6DC: + mov r0, r5 + bl FUN_020AB444 + mov r0, r4 + bl FUN_020ACD90 + mov r0, r5 + bl FUN_020AB4B8 + movs r4, r0 + bne _020AB6DC +_020AB6FC: + ldr r0, _020AB710 ; =UNK_021CB7FC + mov r1, #0x0 + str r1, [r0, r5, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB710: .word UNK_021CB7FC + + arm_func_start FUN_020AB714 +FUN_020AB714: ; 0x020AB714 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020AB750 ; =UNK_021CB7EC + ldr r3, _020AB754 ; =UNK_021CB808 + mov lr, #0x0 + str lr, [r3, r4, lsl #0x2] + ldr r2, _020AB758 ; =UNK_021CB7FC + ldr r12, [r3, r4, lsl #0x2] + ldr r3, _020AB75C ; =UNK_021CB7F0 + str r0, [r1, #0x0] + str r12, [r3, r4, lsl #0x2] + str lr, [r2, r4, lsl #0x2] + bl OS_RestoreInterrupts + ldmia sp!, {r4,pc} + .balign 4 +_020AB750: .word UNK_021CB7EC +_020AB754: .word UNK_021CB808 +_020AB758: .word UNK_021CB7FC +_020AB75C: .word UNK_021CB7F0 + + arm_func_start FUN_020AB760 +FUN_020AB760: + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r2, [r7, #0x5c] + mov r6, r1 + cmp r2, #0x0 + mov r4, #0x0 + beq _020AB790 + ldr r1, [r6, #0x18] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl FUN_020ABBEC + b _020AB820 +_020AB790: + ldr r2, [r6, #0x18] + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020ABB1C + cmp r0, #0x0 + ldreq r1, [r7, #0x14] + moveq r0, r4 + addeq r1, r1, #0x1 + streq r1, [r7, #0x14] + ldmeqia sp!, {r4-r8,pc} + ldr r0, [r6, #0x18] + str r0, [r7, #0x10] + ldr r2, [r6, #0x18] + ldr r1, [r7, #0x54] + cmp r1, r2 + ldreq r1, [r7, #0x14] + moveq r0, r4 + addeq r1, r1, #0x1 + streq r1, [r7, #0x14] + ldmeqia sp!, {r4-r8,pc} + add r0, r1, #0x1 + cmp r0, r2 + beq _020AB820 + ldr r0, [r6, #0x45c] + cmp r0, #0x0 + bne _020AB820 + subs r0, r2, r1 + rsbmi r0, r0, #0x0 + cmp r0, #0x64 + strgt r2, [r7, #0x54] + movgt r0, #0x0 + ldmgtia sp!, {r4-r8,pc} + cmp r1, r2 + ldrhi r0, [r7, #0x1c] + addhi r0, r0, #0x1 + strhi r0, [r7, #0x1c] +_020AB820: + ldr r0, [r6, #0x18] + str r0, [r7, #0x54] + ldr r0, [r7, #0x4c] + cmp r0, #0x0 + bne _020AB858 + ldr r1, [r6, #0x460] + ldr r0, _020ABAF4 ; =0x00000464 + str r1, [r7, #0x4c] + add r1, r6, r0 + add r0, r7, #0x44 + ldmia r1, {r2-r3} + stmia r0, {r2-r3} + mov r0, #0x0 + str r0, [r7, #0x6c] +_020AB858: + ldr r3, [r6, #0x460] + ldr r1, [r7, #0x4c] + ldr r2, [r6, #0x464] + ldr r0, [r7, #0x44] + sub r1, r3, r1 + ldr r3, [r7, #0x80] + mov r1, r1, lsl #0x6 + subs r0, r2, r0 + subs r5, r1, r0 + cmp r3, #0x0 + mov r0, #0x0 + beq _020AB894 + ldr r2, [r6, #0x45c] + cmp r2, #0x0 + beq _020AB89C +_020AB894: + str r5, [r7, #0x80] + b _020AB918 +_020AB89C: + str r5, [r7, #0x80] + subs r2, r5, r3 + ldr r8, [r7, #0x7c] + ldr r3, _020ABAF8 ; =0x00008B18 + ldr ip, _020ABAFC ; =0x0000CC8D + add r3, r8, r3 + mov r8, r3, lsl #0x1 + rsbmi r2, r2, #0x0 + mov r3, r8, asr #0x1f + adds r8, r8, r12 + mov r12, r2, asr #0x1f + adc r3, r3, #0x0 + cmp r12, r3 + cmpeq r2, r8 + bls _020AB8F4 + ldr lr, _020ABB00 ; =0x75CA82CB + mov r3, r2, lsr #0x1f + smull r12, r8, lr, r2 + mov r8, r8, asr #0xe + add r8, r3, r8 + add r3, r8, #0x2 + str r3, [r7, #0x84] +_020AB8F4: + ldr r3, [r7, #0x84] + cmp r3, #0x0 + bgt _020AB918 + ldr r3, [r7, #0x7c] + sub r2, r2, r3 + add r2, r3, r2, asr #0x4 + str r2, [r7, #0x7c] + ldr r2, [r7, #0x7c] + str r2, [r7, #0x18] +_020AB918: + ldr r3, [r7, #0x44] + ldr r12, [r7, #0x4] + ldr r2, [r7, #0x48] + adds r1, r1, r3 + adc r0, r0, r2 + adds r1, r12, r1 + str r1, [r6, #0x46c] + adc r0, r0, #0x0 + str r0, [r6, #0x470] + bl OS_GetTick + ldr r12, [r6, #0x46c] + ldr r2, _020ABAF8 ; =0x00008B18 + ldr lr, [r6, #0x470] + adds r6, r12, r2 + adc r3, lr, #0x0 + cmp r3, r1 + mov r3, #0x0 + cmpeq r6, r0 + movcc r0, r3 + ldmccia sp!, {r4-r8,pc} + ldr r6, _020ABB04 ; =0x0007FD88 + adds r6, r0, r6 + adc r0, r1, r3 + cmp lr, r0 + cmpeq r12, r6 + movhi r0, r3 + ldmhiia sp!, {r4-r8,pc} + ldr r0, [r7, #0x84] + cmp r0, #0x0 + bgt _020ABAE0 + ldr r1, [r7, #0x7c] + mov r0, #0x3 + mul lr, r1, r0 + ldr r6, _020ABB00 ; =0x75CA82CB + ldr r12, [r7, #0x8c] + smull r1, r0, r6, lr + mov r0, r0, asr #0xe + mov r1, lr, lsr #0x1f + cmp lr, r12 + add r0, r1, r0 + bls _020AB9EC + ldr r1, _020ABB08 ; =0x000134DF + add r6, r0, #0x1 + mla r12, r6, r2, r1 + str r12, [r7, #0x8c] + mla r1, r0, r2, r1 + ldr r2, [r7, #0x8c] + ldr r0, _020ABB0C ; =0xFFFF2F5C + add r0, r2, r0 + str r0, [r7, #0x88] + str r1, [r7, #0x4] + str r3, [r7, #0x90] + b _020ABA50 +_020AB9EC: + ldr r1, [r7, #0x88] + cmp lr, r1 + bge _020ABA50 + ldr r1, [r7, #0x90] + add r1, r1, #0x1 + str r1, [r7, #0x90] + ldr r1, [r7, #0x90] + cmp r1, #0x46 + bls _020ABA50 + ldr r1, _020ABB08 ; =0x000134DF + add r12, r0, #0x1 + mla lr, r12, r2, r1 + ldr r6, _020ABB10 ; =0xFFFFBA74 + str lr, [r7, #0x8c] + mla r1, r0, r2, r6 + str r1, [r7, #0x88] + ldr r1, [r7, #0x88] + ldr r2, _020ABB08 ; =0x000134DF + cmp r1, #0x0 + ldr r1, _020ABAF8 ; =0x00008B18 + strlt r3, [r7, #0x88] + mla r1, r0, r1, r2 + mov r3, #0x0 + str r1, [r7, #0x4] + str r3, [r7, #0x90] +_020ABA50: + ldr r1, [r7, #0x4] + ldr r0, _020ABB14 ; =0x00068520 + cmp r1, r0 + strhi r0, [r7, #0x4] + ldr r0, [r7, #0x6c] + cmp r0, #0x10 + addcc r0, r0, #0x1 + strcc r0, [r7, #0x6c] + strcc r5, [r7, #0x74] + strcc r5, [r7, #0x78] + blo _020ABA98 + ldr r1, [r7, #0x74] + mov r0, #0x1f + mla r2, r1, r0, r5 + mov r0, r2, asr #0x4 + add r0, r2, r0, lsr #0x1b + mov r0, r0, asr #0x5 + str r0, [r7, #0x74] +_020ABA98: + ldr r2, [r7, #0x78] + ldr r1, [r7, #0x74] + ldr r0, _020ABB18 ; =0x00008701 + sub r1, r2, r1 + str r1, [r7, #0xc] + ldr r1, [r7, #0xc] + cmp r1, r0 + mvn r0, #0x8700 + movgt r4, #0x1 + cmp r1, r0 + ldrlt r0, [r7, #0x70] + mvnlt r4, #0x0 + addlt r0, r0, #0x1 + strlt r0, [r7, #0x70] + cmp r4, #0x0 + movne r0, #0x0 + strne r0, [r7, #0x6c] + strne r0, [r7, #0x4c] +_020ABAE0: + ldr r1, [r7, #0x84] + mov r0, #0x1 + sub r1, r1, #0x1 + str r1, [r7, #0x84] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020ABAF4: .word 0x00000464 +_020ABAF8: .word 0x00008B18 +_020ABAFC: .word 0x0000CC8D +_020ABB00: .word 0x75CA82CB +_020ABB04: .word 0x0007FD88 +_020ABB08: .word 0x000134DF +_020ABB0C: .word 0xFFFF2F5C +_020ABB10: .word 0xFFFFBA74 +_020ABB14: .word 0x00068520 +_020ABB18: .word 0x00008701 + + arm_func_start FUN_020ABB1C +FUN_020ABB1C: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrh r12, [r6, #0x68] + mov r4, r2 + ldr r3, _020ABBE4 ; =0x00000BB8 + sub r2, r4, r12 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + mov r5, r1 + cmp r2, r3 + bhs _020ABB60 + cmp r4, r12 + ldrcc r0, [r6, #0x60] + addcc r0, r0, #0x10000 + strcc r0, [r6, #0x60] + strh r4, [r6, #0x68] + b _020ABBD0 +_020ABB60: + ldr r1, _020ABBE8 ; =0x0000FF9C + cmp r2, r1 + bhi _020ABBAC + ldr r1, [r6, #0x64] + cmp r4, r1 + bne _020ABB94 + mov r1, r4 + bl FUN_020ABBEC + sub r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r6, #0x54] + b _020ABBD0 +_020ABB94: + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r6, #0x64] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABBAC: + ldr r2, [r6, #0x60] + ldr r0, [r6, #0x54] + add r2, r4, r2 + add r0, r0, r1 + cmp r2, r0 + subhi r0, r2, #0x10000 + strhi r0, [r5, #0x18] + movhi r0, #0x1 + ldmhiia sp!, {r4-r6,pc} +_020ABBD0: + ldr r1, [r6, #0x60] + mov r0, #0x1 + add r1, r4, r1 + str r1, [r5, #0x18] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ABBE4: .word 0x00000BB8 +_020ABBE8: .word 0x0000FF9C + + arm_func_start FUN_020ABBEC +FUN_020ABBEC: ; 0x020ABBEC + ldr r2, _020ABC08 ; =0x00010001 + strh r1, [r0, #0x68] + str r2, [r0, #0x64] + mov r1, #0x0 + str r1, [r0, #0x60] + str r1, [r0, #0x5c] + bx lr + .balign 4 +_020ABC08: .word 0x00010001 + + arm_func_start FUN_020ABC0C +FUN_020ABC0C: ; 0x020ABC0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r4, r1 + cmp r0, #0x0 + beq _020ABC2C + bl FUN_020ACD90 +_020ABC2C: + str r4, [r5, #0x3c] + ldr r0, [r5, #0x34] + bl FUN_020AB444 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020ABC40 +FUN_020ABC40: ; 0x020ABC40 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x3c] + cmp r0, #0x0 + beq _020ABC60 + bl FUN_020ACD90 + mov r0, #0x0 + str r0, [r4, #0x3c] +_020ABC60: + mvn r0, #0x0 + str r0, [r4, #0x38] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020ABC6C +FUN_020ABC6C: ; 0x020ABC6C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + mov r1, #0x0 + mov r2, #0x28 + mov r6, r0 + bl MI_CpuFill8 + ldr r0, _020ABCF4 ; =0x000134DF + mov r1, #0x0 + str r0, [r6, #0x4] + str r1, [r6, #0x28] + str r1, [r6, #0x2c] + str r5, [r6, #0x34] + str r4, [r6, #0x38] + str r1, [r6, #0x7c] + str r1, [r6, #0x80] + str r1, [r6, #0x84] + str r1, [r6, #0x88] + str r0, [r6, #0x8c] + str r1, [r6, #0x90] + str r1, [r6, #0x4c] + str r1, [r6, #0x44] + str r1, [r6, #0x48] + str r1, [r6, #0x6c] + str r1, [r6, #0x70] + str r1, [r6, #0x50] + str r1, [r6, #0x54] + str r1, [r6, #0x58] + mov r0, #0x1 + str r0, [r6, #0x5c] + str r1, [r6, #0x3c] + str r1, [r6, #0x40] + str r1, [r6, #0x30] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ABCF4: .word 0x000134DF + + arm_func_start FUN_020ABCF8 +FUN_020ABCF8: ; 0x020ABCF8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020ABE34 ; =UNK_021CCD20 + ldr r2, [r3, #0x10] + cmp r2, #0x2 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r12, [r3, #0x1] + ldrb r2, [r0, #0x8] + cmp r12, r2 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r2, [r0, #0xa] + cmp r2, #0x0 + beq _020ABD48 + cmp r2, #0x1 + beq _020ABDA4 + b _020ABE1C +_020ABD48: + ldr r0, _020ABE38 ; =UNK_021CB824 + ldr r2, [r0, #0x2c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x38] + cmp r0, #0x5 + beq _020ABD74 + cmp r0, #0x2 + bne _020ABD80 +_020ABD74: + mov r0, #0x9 + str r0, [r1, #0x0] + b _020ABD88 +_020ABD80: + mov r0, #0x5 + str r0, [r1, #0x0] +_020ABD88: + ldr r0, _020ABE38 ; =UNK_021CB824 + mov r3, #0x0 + ldr r2, _020ABE3C ; =UNK_021CB850 + str r3, [r0, #0x2c] + str r3, [r0, #0x38] + str r2, [r1, #0x4] + b _020ABE28 +_020ABDA4: + ldr r2, _020ABE38 ; =UNK_021CB824 + mov lr, #0x2 + str lr, [r2, #0x2c] + ldrb r12, [r0, #0xb] + ldrb r3, [r3, #0x0] + cmp r12, r3 + bne _020ABDD8 + str lr, [r2, #0x38] + mov r3, #0x7 + str r3, [r1, #0x0] + ldr r3, [r0, #0xc] + str r3, [r2, #0x34] + b _020ABE04 +_020ABDD8: + mov r3, #0x3 + str r3, [r2, #0x38] + mov r2, #0x6 + str r2, [r1, #0x0] + ldrb r3, [r0, #0xb] + cmp r3, #0x0 + movne r2, #0x1 + movne r3, r2, lsl r3 + ldr r2, _020ABE38 ; =UNK_021CB824 + moveq r3, #0x1 + str r3, [r2, #0x34] +_020ABE04: + ldrb r3, [r0, #0xb] + ldr r0, _020ABE38 ; =UNK_021CB824 + ldr r2, _020ABE3C ; =UNK_021CB850 + strb r3, [r0, #0x31] + str r2, [r1, #0x4] + b _020ABE28 +_020ABE1C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020ABE28: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ABE34: .word UNK_021CCD20 +_020ABE38: .word UNK_021CB824 +_020ABE3C: .word UNK_021CB850 + + arm_func_start FUN_020ABE40 +FUN_020ABE40: ; 0x020ABE40 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x4] + mov r4, r1 + cmp r0, #0xff + bne _020ABE70 + ldrb r0, [r5, #0x6] + cmp r0, #0x4 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020ABE70: + ldrb r0, [r5, #0x8] + bl FUN_020AC1E8 + cmp r0, #0x0 + beq _020ABEA4 + mov r1, #0x2 + str r1, [r4, #0x0] + str r0, [r4, #0x4] + mov r2, #0x0 + str r2, [r0, #0x0] + bl FUN_020AC708 + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020ABEA4: + ldrb r1, [r5, #0x8] + ldr r0, _020ABEC8 ; =UNK_021CB838 + bl FUN_020AC5A4 + ldr r0, _020ABEC8 ; =UNK_021CB838 + mov r1, #0x2 + bl FUN_020AC708 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ABEC8: .word UNK_021CB838 + + arm_func_start FUN_020ABECC +FUN_020ABECC: ; 0x020ABECC + stmdb sp!, {r4-r6,lr} + ldr r2, _020AC070 ; =UNK_021CB824 + mov r6, r0 + ldr r0, [r2, #0x2c] + mov r5, r1 + cmp r0, #0x2 + bne _020ABF84 + ldrb r1, [r2, #0x30] + ldrb r0, [r6, #0x8] + cmp r1, r0 + bne _020ABF74 + ldr r0, _020AC074 ; =UNK_021CB850 + mov r1, r6 + bl FUN_020AC350 + mov r4, r0 + mvn r0, #0x2 + cmp r4, r0 + beq _020ABF48 + mvn r0, #0x1 + cmp r4, r0 + beq _020ABF30 + mvn r0, #0x0 + cmp r4, r0 + beq _020ABF48 + b _020ABF50 +_020ABF30: + mov r0, #0xc + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x4] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} +_020ABF48: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABF50: + ldr r1, _020AC074 ; =UNK_021CB850 + mov r0, r6 + bl FUN_020AC4A0 + ldr r1, _020AC074 ; =UNK_021CB850 + str r0, [r5, #0x0] + str r1, [r5, #0x4] + ldr r0, [r5, #0x4] + str r4, [r0, #0xc] + b _020AC028 +_020ABF74: + mov r0, #0x1 + bl FUN_020AC5E8 + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABF84: + ldrb r12, [r6, #0x8] + cmp r12, #0x0 + movne r0, #0x1 + movne r1, r0, lsl r12 + ldr r0, _020AC078 ; =UNK_021CB818 + moveq r1, #0x1 + ldr r0, [r0, #0x0] + ands r0, r0, r1 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020AC070 ; =UNK_021CB824 + mov r4, #0x2 + mov r3, #0x0 + ldr r0, _020AC074 ; =UNK_021CB850 + mov r1, r6 + strb r12, [r2, #0x30] + str r4, [r2, #0x2c] + str r3, [r2, #0x38] + bl FUN_020AC350 + mov r4, r0 + mvn r0, #0x2 + cmp r4, r0 + beq _020ABFF8 + mvn r0, #0x1 + cmp r4, r0 + beq _020ABFF8 + mvn r0, #0x0 + cmp r4, r0 + bne _020AC008 +_020ABFF8: + ldr r1, _020AC070 ; =UNK_021CB824 + mov r0, #0x0 + str r0, [r1, #0x2c] + ldmia sp!, {r4-r6,pc} +_020AC008: + ldr r1, _020AC074 ; =UNK_021CB850 + mov r0, r6 + bl FUN_020AC4A0 + ldr r1, _020AC074 ; =UNK_021CB850 + str r0, [r5, #0x0] + str r1, [r5, #0x4] + ldr r0, [r5, #0x4] + str r4, [r0, #0xc] +_020AC028: + ldr r0, [r5, #0x0] + cmp r0, #0xa + bne _020AC050 + mov r0, #0x1 + bl FUN_020AC5E8 + bl OS_GetTick + ldr r2, _020AC07C ; =UNK_021CB81C + str r0, [r2, #0x0] + str r1, [r2, #0x4] + b _020AC068 +_020AC050: + mov r0, #0x0 + bl FUN_020AC5E8 + ldr r0, _020AC07C ; =UNK_021CB81C + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020AC068: + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AC070: .word UNK_021CB824 +_020AC074: .word UNK_021CB850 +_020AC078: .word UNK_021CB818 +_020AC07C: .word UNK_021CB81C + + arm_func_start FUN_020AC080 +FUN_020AC080: ; 0x020AC080 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r2, [r6, #0x4] + mov r5, r1 + cmp r2, #0xff + bne _020AC0C4 + ldrb r2, [r6, #0x6] + cmp r2, #0x4 + bne _020AC0B4 + bl FUN_020ABCF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020AC0B4: + cmp r2, #0x3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020AC0C4: + ldrb r0, [r6, #0x8] + bl FUN_020AC1E8 + movs r4, r0 + beq _020AC154 + mov r1, r6 + bl FUN_020AC350 + mov r7, r0 + mvn r0, #0x1 + cmp r7, r0 + beq _020AC104 + mvn r0, #0x0 + cmp r7, r0 + bne _020AC124 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC104: + mov r0, #0xc + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + str r4, [r5, #0x4] + mov r0, #0x1 + ldmia sp!, {r4-r7,pc} +_020AC124: + mov r0, r6 + mov r1, r4 + bl FUN_020AC4A0 + str r0, [r5, #0x0] + str r4, [r5, #0x4] + str r7, [r4, #0xc] + ldr r0, [r5, #0x0] + add sp, sp, #0x4 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC154: + ldrb r0, [r6, #0x8] + bl FUN_020AC790 + movs r7, r0 + bne _020AC188 + ldrb r1, [r6, #0x8] + ldr r0, _020AC1E4 ; =UNK_021CB838 + bl FUN_020AC5A4 + ldr r0, _020AC1E4 ; =UNK_021CB838 + mov r1, #0x3 + bl FUN_020AC708 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC188: + mov r1, r6 + bl FUN_020AC350 + mov r4, r0 + add r0, r4, #0x2 + cmp r0, #0x1 + bhi _020AC1B4 + mov r0, r7 + bl FUN_020ACC84 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC1B4: + mov r0, r6 + mov r1, r7 + bl FUN_020AC4A0 + str r0, [r5, #0x0] + str r7, [r5, #0x4] + str r4, [r7, #0xc] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AC1E4: .word UNK_021CB838 + + arm_func_start FUN_020AC1E8 +FUN_020AC1E8: + ldr r1, _020AC25C ; =UNK_021CCD20 + ldr r2, _020AC260 ; =UNK_021CB824 + ldr r1, [r1, #0x10] + ldr r3, [r2, #0x4] + cmp r1, #0x2 + bne _020AC224 + ldr r1, [r2, #0x2c] + cmp r1, #0x0 + beq _020AC21C + ldrb r1, [r2, #0x30] + cmp r1, r0 + ldreq r0, _020AC264 ; =UNK_021CB850 + bxeq lr +_020AC21C: + mov r0, #0x0 + bx lr +_020AC224: + cmp r3, #0x0 + beq _020AC254 +_020AC22C: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _020AC248 + ldrb r1, [r3, #0x4] + cmp r1, r0 + moveq r0, r3 + bxeq lr +_020AC248: + ldr r3, [r3, #0x14] + cmp r3, #0x0 + bne _020AC22C +_020AC254: + mov r0, #0x0 + bx lr + .balign 4 +_020AC25C: .word UNK_021CCD20 +_020AC260: .word UNK_021CB824 +_020AC264: .word UNK_021CB850 + + arm_func_start FUN_020AC268 +FUN_020AC268: + ldrb r2, [r1, #0x4] + ldrb r12, [r1, #0x6] + cmp r2, #0x0 + addeq r12, r12, #0x5 + cmp r12, #0x0 + blt _020AC288 + cmp r12, #0xb + blt _020AC28C +_020AC288: + mvn r12, #0x0 +_020AC28C: + cmp r12, #0x0 + mvnlt r0, #0x0 + bxlt lr + ldr r1, _020AC2F8 ; =UNK_021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x1 + ldrne r3, [r0, #0xc] + ldrne r2, _020AC2FC ; =UNK_020FF788 + movne r1, #0xb + mlane r1, r3, r1, r2 + ldrnesb r2, [r12, r1] + bne _020AC2D0 + ldr r3, [r0, #0xc] + ldr r2, _020AC300 ; =UNK_020FF744 + mov r1, #0xb + mla r1, r3, r1, r2 + ldrsb r2, [r12, r1] +_020AC2D0: + mvn r1, #0x0 + cmp r2, r1 + moveq r0, #0x1 + bxeq lr + mvn r1, #0x1 + cmp r2, r1 + moveq r0, #0x0 + strne r2, [r0, #0xc] + movne r0, #0x1 + bx lr + .balign 4 +_020AC2F8: .word UNK_021CCD20 +_020AC2FC: .word UNK_020FF788 +_020AC300: .word UNK_020FF744 + + arm_func_start FUN_020AC304 +FUN_020AC304: + ldr r1, _020AC34C ; =UNK_021CB824 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + beq _020AC344 +_020AC314: + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _020AC338 + ldr r1, [r2, #0xc] + cmp r1, #0x2 + bne _020AC338 + cmp r0, r2 + movne r0, #0x0 + bxne lr +_020AC338: + ldr r2, [r2, #0x14] + cmp r2, #0x0 + bne _020AC314 +_020AC344: + mov r0, #0x1 + bx lr + .balign 4 +_020AC34C: .word UNK_021CB824 + + arm_func_start FUN_020AC350 +FUN_020AC350: ; 0x020AC350 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrb r2, [r1, #0x4] + ldrb r3, [r1, #0x6] + mov r4, r0 + cmp r2, #0x0 + addeq r3, r3, #0x5 + cmp r3, #0x0 + blt _020AC37C + cmp r3, #0xb + blt _020AC380 +_020AC37C: + mvn r3, #0x0 +_020AC380: + cmp r3, #0x0 + addlt sp, sp, #0x4 + mvnlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} + ldr r0, _020AC44C ; =UNK_021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + ldrne r2, [r4, #0xc] + ldrne r1, _020AC450 ; =UNK_020FF700 + movne r0, #0xb + mlane r0, r2, r0, r1 + ldrnesb r5, [r3, r0] + bne _020AC3C8 + ldr r2, [r4, #0xc] + ldr r1, _020AC454 ; =UNK_020FF6BC + mov r0, #0xb + mla r0, r2, r0, r1 + ldrsb r5, [r3, r0] +_020AC3C8: + mvn r0, #0x2 + cmp r5, r0 + beq _020AC41C + mvn r0, #0x1 + cmp r5, r0 + beq _020AC3F8 + mvn r0, #0x0 + cmp r5, r0 + bne _020AC440 + add sp, sp, #0x4 + mov r0, r5 + ldmia sp!, {r4-r5,pc} +_020AC3F8: + mov r0, r4 + mov r1, #0x1 + bl FUN_020AC708 + mov r1, #0x0 + str r1, [r4, #0xc] + add sp, sp, #0x4 + mov r0, r5 + str r1, [r4, #0x0] + ldmia sp!, {r4-r5,pc} +_020AC41C: + mov r0, r4 + mov r1, #0x3 + bl FUN_020AC708 + mov r1, #0x0 + str r1, [r4, #0xc] + add sp, sp, #0x4 + mov r0, r5 + str r1, [r4, #0x0] + ldmia sp!, {r4-r5,pc} +_020AC440: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AC44C: .word UNK_021CCD20 +_020AC450: .word UNK_020FF700 +_020AC454: .word UNK_020FF6BC + + arm_func_start FUN_020AC458 +FUN_020AC458: + ldr ip, _020AC498 ; =0x5F564354 + mov r3, #0x10 + str r12, [r1, #0x0] + strb r3, [r1, #0x5] + ldr r3, _020AC49C ; =UNK_021CCD20 + strb r2, [r1, #0x6] + ldrb r2, [r3, #0x0] + strb r2, [r1, #0x8] + ldrb r2, [r0, #0x4] + mov r0, #0x0 + strb r2, [r1, #0x9] + strb r0, [r1, #0xa] + ldrb r2, [r3, #0x0] + strb r2, [r1, #0xb] + str r0, [r1, #0xc] + bx lr + .balign 4 +_020AC498: .word 0x5F564354 +_020AC49C: .word UNK_021CCD20 + + arm_func_start FUN_020AC4A0 +FUN_020AC4A0: + ldrb r2, [r0, #0xb] + strb r2, [r1, #0x5] + ldrb r2, [r0, #0x4] + cmp r2, #0xff + bne _020AC4E8 + ldrb r2, [r0, #0x6] + cmp r2, #0x0 + bne _020AC4D8 + ldrb r3, [r1, #0x4] + cmp r3, #0x0 + movne r2, #0x1 + movne r2, r2, lsl r3 + moveq r2, #0x1 + str r2, [r1, #0x8] +_020AC4D8: + ldrb r1, [r0, #0x6] + ldr r0, _020AC54C ; =UNK_020FF6AC + ldrb r0, [r0, r1] + bx lr +_020AC4E8: + cmp r2, #0x0 + bne _020AC544 + ldrb r2, [r0, #0x6] + cmp r2, #0x0 + bne _020AC538 + ldr r0, [r1, #0xc] + cmp r0, #0x1 + bne _020AC528 + ldrb r2, [r1, #0x4] + cmp r2, #0x0 + movne r0, #0x1 + movne r0, r0, lsl r2 + moveq r0, #0x1 + str r0, [r1, #0x8] + mov r0, #0x7 + bx lr +_020AC528: + cmp r0, #0x5 + moveq r0, #0x9 + movne r0, #0xc + bx lr +_020AC538: + ldr r0, _020AC550 ; =UNK_020FF6B4 + ldrb r0, [r0, r2] + bx lr +_020AC544: + mov r0, #0xc + bx lr + .balign 4 +_020AC54C: .word UNK_020FF6AC +_020AC550: .word UNK_020FF6B4 + + arm_func_start FUN_020AC554 +FUN_020AC554: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrb r2, [r1, #0x4] + cmp r2, #0xff + bne _020AC57C + ldrb r2, [r1, #0x6] + cmp r2, #0x4 + bne _020AC57C + bl FUN_020AC628 + b _020AC598 +_020AC57C: + ldrb r0, [r0, #0x4] + mov r2, #0x10 + bl MOD04_021EB044 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} +_020AC598: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AC5A4 +FUN_020AC5A4: ; 0x020AC5A4 + mov r12, r0 + mov r3, #0x6 + mov r2, #0x0 +_020AC5B0: + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + subs r3, r3, #0x1 + bne _020AC5B0 + ldr r2, _020AC5E4 ; =UNK_021CCD20 + mov r3, #0x0 + ldr r2, [r2, #0x10] + str r2, [r0, #0x0] + str r3, [r0, #0xc] + strb r1, [r0, #0x4] + bx lr + .balign 4 +_020AC5E4: .word UNK_021CCD20 + + arm_func_start FUN_020AC5E8 +FUN_020AC5E8: + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r3, #0xff + ldr r0, _020AC624 ; =UNK_021CB850 + add r1, sp, #0x0 + mov r2, #0x4 + strb r3, [sp, #0x4] + bl FUN_020AC458 + ldr r0, _020AC624 ; =UNK_021CB850 + add r1, sp, #0x0 + strb r4, [sp, #0xa] + bl FUN_020AC628 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + .balign 4 +_020AC624: .word UNK_021CB850 + + arm_func_start FUN_020AC628 +FUN_020AC628: ; 0x020AC628 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r11, r0 + mov r10, r1 + mov r9, #0x0 + bl FUN_020AC6E4 + ldr r4, _020AC6DC ; =UNK_021CCD20 + ldr r5, _020AC6E0 ; =UNK_021CB818 + mov r8, r9 + mov r7, #0x1 + mov r6, #0x10 +_020AC654: + cmp r8, #0x0 + movne r1, r7, lsl r8 + ldr r0, [r5, #0x0] + moveq r1, r7 + ands r0, r0, r1 + beq _020AC694 + ldrb r0, [r4, #0x0] + cmp r8, r0 + beq _020AC694 + mov r0, r8 + mov r1, r10 + mov r2, r6 + strb r8, [r10, #0x9] + bl MOD04_021EB044 + cmp r0, #0x0 + addne r9, r9, #0x1 +_020AC694: + add r0, r8, #0x1 + and r8, r0, #0xff + cmp r8, #0x20 + blo _020AC654 + ldrb r0, [r10, #0xa] + cmp r0, #0x1 + ldreq r0, _020AC6E0 ; =UNK_021CB818 + ldreq r0, [r0, #0x0] + streq r0, [r11, #0x8] + beq _020AC6C8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r11, #0x8] +_020AC6C8: + cmp r9, #0x0 + mvneq r0, #0x3 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AC6DC: .word UNK_021CCD20 +_020AC6E0: .word UNK_021CB818 + + arm_func_start FUN_020AC6E4 +FUN_020AC6E4: ; 0x020AC6E4 + ldrb r2, [r1, #0xa] + cmp r2, #0x1 + ldreqb r2, [r0, #0x4] + ldreq r0, _020AC704 ; =UNK_021CB818 + streqb r2, [r1, #0xb] + ldreq r0, [r0, #0x0] + streq r0, [r1, #0xc] + bx lr + .balign 4 +_020AC704: .word UNK_021CB818 + + arm_func_start FUN_020AC708 +FUN_020AC708: + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + add r2, sp, #0x0 + mov r3, #0x10 + mov r4, r0 + bl FUN_020ACAE0 + cmp r0, #0x0 + addne sp, sp, #0x10 + ldmneia sp!, {r4,pc} + add r1, sp, #0x0 + mov r0, r4 + bl FUN_020AC554 + cmp r0, #0x0 + movne r0, #0x0 + mvneq r0, #0x3 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AC74C +FUN_020AC74C: ; 0x020AC74C + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + add r2, sp, #0x0 + mov r3, #0x10 + mov r4, r0 + bl FUN_020ACBD0 + cmp r0, #0x0 + addne sp, sp, #0x10 + ldmneia sp!, {r4,pc} + add r1, sp, #0x0 + mov r0, r4 + bl FUN_020AC554 + cmp r0, #0x0 + movne r0, #0x0 + mvneq r0, #0x3 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AC790 +FUN_020AC790: ; 0x020AC790 + stmdb sp!, {r4,lr} + mov r1, r0 + cmp r1, #0x20 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + ldr r0, _020AC7F4 ; =UNK_021CCD20 + ldrb r0, [r0, #0x0] + cmp r1, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r2, _020AC7F8 ; =UNK_021CB824 + ldr r4, [r2, #0x0] + cmp r4, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, [r4, #0x14] + mov r0, r4 + str r3, [r2, #0x0] + bl FUN_020AC5A4 + ldr r1, _020AC7F8 ; =UNK_021CB824 + mov r0, r4 + ldr r2, [r1, #0x4] + str r2, [r4, #0x14] + str r4, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020AC7F4: .word UNK_021CCD20 +_020AC7F8: .word UNK_021CB824 + + arm_func_start FUN_020AC7FC +FUN_020AC7FC: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x10 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r2, [r1, #0x8] + cmp r2, r0 + bne _020AC834 + ldr r0, _020AC894 ; =UNK_021CCD20 + ldrb r12, [r1, #0x9] + ldrb r2, [r0, #0x0] + cmp r12, r2 + beq _020AC840 +_020AC834: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AC840: + ldrb r2, [r1, #0x5] + cmp r2, #0x10 + beq _020AC860 + mov r0, r1 + mov r1, r3 + bl FUN_020ABE40 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AC860: + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _020AC880 + mov r0, r1 + mov r1, r3 + bl FUN_020AC080 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AC880: + mov r0, r1 + mov r1, r3 + bl FUN_020ABECC + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AC894: .word UNK_021CCD20 + + arm_func_start FUN_020AC898 +FUN_020AC898: ; 0x020AC898 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_GetTick + ldr r2, _020AC950 ; =UNK_021CCD20 + ldr r3, [r2, #0x10] + cmp r3, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + ldr r2, [r2, #0xc] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r3, _020AC954 ; =UNK_021CB81C + mov r12, #0x0 + ldr r5, [r3, #0x4] + ldr r4, [r3, #0x0] + cmp r5, r12 + cmpeq r4, r12 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r2, _020AC958 ; =UNK_02106490 + subs r4, r0, r4 + ldr lr, [r2, #0x0] + ldr r0, [r2, #0x4] + sbc r1, r1, r5 + cmp r1, r0 + cmpeq r4, lr + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} + ldr r1, _020AC95C ; =UNK_021CB824 + mov r0, r12 + str r12, [r3, #0x0] + str r12, [r3, #0x4] + str r12, [r1, #0x2c] + str r12, [r1, #0x38] + bl FUN_020AC5E8 + ldr r1, _020AC950 ; =UNK_021CCD20 + ldr r0, _020AC95C ; =UNK_021CB824 + ldr r3, [r1, #0x8] + ldrb r0, [r0, #0x30] + ldr r12, [r1, #0x4] + ldr r2, _020AC960 ; =UNK_021CB850 + mov r1, #0x9 + blx r12 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AC950: .word UNK_021CCD20 +_020AC954: .word UNK_021CB81C +_020AC958: .word UNK_02106490 +_020AC95C: .word UNK_021CB824 +_020AC960: .word UNK_021CB850 + + arm_func_start FUN_020AC964 +FUN_020AC964: ; 0x020AC964 + ldr r0, _020AC978 ; =UNK_021CB824 + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x0] + bx lr + .balign 4 +_020AC978: .word UNK_021CB824 + + arm_func_start FUN_020AC97C +FUN_020AC97C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020AC9A8 + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _020AC9A8 + cmp r1, #0x8 + bls _020AC9B4 +_020AC9A8: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,pc} +_020AC9B4: + ldr r1, _020ACA8C ; =UNK_021CB824 + mov r2, #0x18 + str r0, [r1, #0x0] + ldr r3, [r4, #0x4] + mov r1, #0x0 + mul r2, r3, r2 + bl MI_CpuFill8 + ldr r0, _020ACA90 ; =UNK_021CB850 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r0, _020ACA94 ; =UNK_021CB838 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r12, [r4, #0x4] + mov lr, #0x0 + subs r0, r12, #0x1 + beq _020ACA34 + ldr r1, _020ACA8C ; =UNK_021CB824 + mov r5, lr + mov r0, #0x18 +_020ACA0C: + ldr r2, [r1, #0x0] + add lr, lr, #0x1 + mla r3, lr, r0, r2 + add r2, r2, r5 + str r3, [r2, #0x14] + ldr r12, [r4, #0x4] + add r5, r5, #0x18 + sub r2, r12, #0x1 + cmp lr, r2 + blo _020ACA0C +_020ACA34: + ldr r3, _020ACA8C ; =UNK_021CB824 + mov r0, #0x18 + ldr r1, [r3, #0x0] + mov r5, #0x0 + mla r0, r12, r0, r1 + str r5, [r0, #-0x4] + ldr r2, _020ACA98 ; =UNK_021CB818 + ldr r1, _020ACA9C ; =UNK_021CB814 + ldr r0, _020ACAA0 ; =UNK_021CCD20 + ldr lr, _020ACAA4 ; =OS_GetTick + ldr ip, _020ACAA8 ; =0x5D588B65 + ldr r4, _020ACAAC ; =0x00269EC3 + str r5, [r3, #0x4] + str r5, [r2, #0x0] + str r5, [r1, #0x0] + str r5, [r0, #0x14] + str lr, [r3, #0x8] + str r12, [r3, #0xc] + str r4, [r3, #0x10] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ACA8C: .word UNK_021CB824 +_020ACA90: .word UNK_021CB850 +_020ACA94: .word UNK_021CB838 +_020ACA98: .word UNK_021CB818 +_020ACA9C: .word UNK_021CB814 +_020ACAA0: .word UNK_021CCD20 +_020ACAA4: .word OS_GetTick +_020ACAA8: .word 0x5D588B65 +_020ACAAC: .word 0x00269EC3 + + arm_func_start FUN_020ACAB0 +FUN_020ACAB0: ; 0x020ACAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACADC ; =UNK_021CCD20 + ldr r2, [r2, #0x10] + cmp r2, #0x2 + addeq sp, sp, #0x4 + mvneq r0, #0x2 + ldmeqia sp!, {pc} + bl FUN_020AC708 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACADC: .word UNK_021CCD20 + + arm_func_start FUN_020ACAE0 +FUN_020ACAE0: + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r6, r1 + mov r4, r2 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + cmp r3, #0x10 + mvncc r0, #0x0 + ldmccia sp!, {r4-r6,pc} + cmp r6, #0x0 + blt _020ACB14 + cmp r6, #0x6 + blt _020ACB1C +_020ACB14: + mvn r0, #0x2 + ldmia sp!, {r4-r6,pc} +_020ACB1C: + mov r3, #0x0 + mov r1, r4 + and r2, r6, #0xff + strb r3, [r4, #0x4] + bl FUN_020AC458 + cmp r6, #0x0 + bne _020ACB80 + ldr r0, _020ACB9C ; =UNK_021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + bne _020ACB68 + ldr r0, [r5, #0xc] + cmp r0, #0x4 + bne _020ACB68 + mov r0, r5 + bl FUN_020AC304 + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACB68: + ldrb r1, [r5, #0x4] + cmp r1, #0x0 + movne r0, #0x1 + movne r0, r0, lsl r1 + moveq r0, #0x1 + str r0, [r5, #0x8] +_020ACB80: + mov r0, r5 + mov r1, r4 + bl FUN_020AC268 + cmp r0, #0x0 + mvneq r0, #0x2 + movne r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ACB9C: .word UNK_021CCD20 + + arm_func_start FUN_020ACBA0 +FUN_020ACBA0: ; 0x020ACBA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACBCC ; =UNK_021CCD20 + ldr r2, [r2, #0x10] + cmp r2, #0x2 + addeq sp, sp, #0x4 + mvneq r0, #0x2 + ldmeqia sp!, {pc} + bl FUN_020AC74C + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACBCC: .word UNK_021CCD20 + + arm_func_start FUN_020ACBD0 +FUN_020ACBD0: + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r4, r1 + mov r6, r2 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + cmp r3, #0x10 + mvncc r0, #0x0 + ldmccia sp!, {r4-r6,pc} + ldr r1, _020ACC80 ; =UNK_021CCD20 + ldr r1, [r1, #0xc] + cmp r1, #0x1 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} + cmp r4, #0x0 + blt _020ACC18 + cmp r4, #0x5 + blt _020ACC20 +_020ACC18: + mvn r0, #0x2 + ldmia sp!, {r4-r6,pc} +_020ACC20: + mov r3, #0xff + mov r1, r6 + and r2, r4, #0xff + strb r3, [r6, #0x4] + bl FUN_020AC458 + mov r0, r5 + mov r1, r6 + bl FUN_020AC268 + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020ACC80 ; =UNK_021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + bne _020ACC78 + cmp r4, #0x0 + bne _020ACC78 + mov r0, r5 + bl FUN_020AC304 + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACC78: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ACC80: .word UNK_021CCD20 + + arm_func_start FUN_020ACC84 +FUN_020ACC84: ; 0x020ACC84 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACD48 ; =UNK_021CB824 + cmp r0, #0x0 + mov lr, #0x0 + addeq sp, sp, #0x4 + ldr r12, [r2, #0x4] + moveq r0, lr + ldmeqia sp!, {pc} + ldr r1, _020ACD4C ; =UNK_021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x2 + bne _020ACCD0 + ldr r1, _020ACD50 ; =UNK_021CB850 + add sp, sp, #0x4 + cmp r0, r1 + streq lr, [r2, #0x2c] + mov r0, #0x1 + ldmia sp!, {pc} +_020ACCD0: + cmp r12, #0x0 + beq _020ACD3C +_020ACCD8: + cmp r12, r0 + bne _020ACD2C + mov r3, #0x0 + str r3, [r0, #0x0] + cmp lr, #0x0 + ldrne r1, [r0, #0x14] + strne r1, [lr, #0x14] + bne _020ACD10 + ldr r2, [r12, #0x14] + cmp r2, #0x0 + ldrne r1, _020ACD48 ; =UNK_021CB824 + strne r2, [r1, #0x4] + ldreq r1, _020ACD48 ; =UNK_021CB824 + streq r3, [r1, #0x4] +_020ACD10: + ldr r1, _020ACD48 ; =UNK_021CB824 + add sp, sp, #0x4 + ldr r2, [r1, #0x0] + str r2, [r0, #0x14] + str r0, [r1, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020ACD2C: + mov lr, r12 + ldr r12, [r12, #0x14] + cmp r12, #0x0 + bne _020ACCD8 +_020ACD3C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACD48: .word UNK_021CB824 +_020ACD4C: .word UNK_021CCD20 +_020ACD50: .word UNK_021CB850 + + arm_func_start FUN_020ACD54 +FUN_020ACD54: ; 0x020ACD54 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020ACD8C ; =UNK_021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x0 + beq _020ACD74 + cmp r1, #0x2 + bne _020ACD80 +_020ACD74: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020ACD80: + bl FUN_020AC790 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACD8C: .word UNK_021CCD20 + + arm_func_start FUN_020ACD90 +FUN_020ACD90: + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020ACDC0 ; =UNK_021CB86C + ldr r2, _020ACDC4 ; =UNK_021CB868 + ldr r3, [r1, #0x0] + str r0, [r2, #0x0] + str r3, [r4, #0x0] + ldr r0, [r2, #0x0] + str r4, [r1, #0x0] + bl OS_RestoreInterrupts + ldmia sp!, {r4,pc} + .balign 4 +_020ACDC0: .word UNK_021CB86C +_020ACDC4: .word UNK_021CB868 + + arm_func_start FUN_020ACDC8 +FUN_020ACDC8: ; 0x020ACDC8 + stmdb sp!, {r4,lr} + mov r4, #0x0 + bl OS_DisableInterrupts + ldr r1, _020ACE08 ; =UNK_021CB86C + ldr r2, _020ACE0C ; =UNK_021CB868 + ldr r3, [r1, #0x0] + str r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, [r3, #0x0] + movne r4, r3 + strne r0, [r1, #0x0] + ldr r0, _020ACE0C ; =UNK_021CB868 + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ACE08: .word UNK_021CB86C +_020ACE0C: .word UNK_021CB868 + + arm_func_start FUN_020ACE10 +FUN_020ACE10: + ldr r1, _020ACE28 ; =UNK_021CB86C + mov r2, #0x0 + ldr r0, _020ACE2C ; =UNK_021CB870 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020ACE28: .word UNK_021CB86C +_020ACE2C: .word UNK_021CB870 + + arm_func_start FUN_020ACE30 +FUN_020ACE30: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r3, _020ACF00 ; =0xE525982B + mov r2, r1 + umull r1, r4, r2, r3 + ldr r1, _020ACF04 ; =UNK_021CB870 + mov r4, r4, lsr #0xa + str r0, [r1, #0x0] + cmp r4, #0x4 + blo _020ACE60 + cmp r4, #0x48 + bls _020ACE6C +_020ACE60: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,pc} +_020ACE6C: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ands r3, r0, #0x1f + movne r0, #0x0 + strne r0, [r1, #0x0] + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClearFast + subs r12, r4, #0x1 + mov r5, #0x0 + beq _020ACED0 + ldr r1, _020ACF04 ; =UNK_021CB870 + ldr r0, _020ACF08 ; =0x00000478 + mov lr, r5 +_020ACEB4: + ldr r3, [r1, #0x0] + add r5, r5, #0x1 + mla r2, r5, r0, r3 + str r2, [r3, lr] + cmp r5, r12 + add lr, lr, r0 + blo _020ACEB4 +_020ACED0: + ldr r1, _020ACF04 ; =UNK_021CB870 + ldr r0, _020ACF08 ; =0x00000478 + ldr r2, [r1, #0x0] + mov r3, #0x0 + mla r0, r4, r0, r2 + str r3, [r0, #-0x478] + ldr r2, [r1, #0x0] + ldr r1, _020ACF0C ; =UNK_021CB86C + mov r0, #0x1 + str r2, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ACF00: .word 0xE525982B +_020ACF04: .word UNK_021CB870 +_020ACF08: .word 0x00000478 +_020ACF0C: .word UNK_021CB86C + + arm_func_start FUN_020ACF10 +FUN_020ACF10: ; 0x020ACF10 + mov r2, #0xf + mov r0, #0x44 + mul r1, r2, r0 + ldr r0, _020ACF30 ; =UNK_02106498 + ldr ip, _020ACF34 ; =FUN_020AD170 + str r2, [r0, #0x8] + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020ACF30: .word UNK_02106498 +_020ACF34: .word FUN_020AD170 + + arm_func_start FUN_020ACF38 +FUN_020ACF38: ; 0x020ACF38 + stmdb sp!, {r4,lr} + ldr r3, _020AD124 ; =UNK_02106498 + mov r12, r1, lsr #0x8 + str r12, [r3, #0x4] + cmp r2, #0x0 + strneb r12, [r2, #0x0] + ldr r2, _020AD124 ; =UNK_02106498 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + bne _020AD05C + mov r4, #0x0 + mov r12, r4 + ldr r3, _020AD128 ; =UNK_021CB880 +_020ACF6C: + ldr r2, [r3, r12, lsl #0x2] + add r12, r12, #0x1 + cmp r12, #0x4 + add r4, r4, r2 + blt _020ACF6C + ldr ip, _020AD12C ; =0x040002B0 + mov r3, #0x0 + ldr r2, _020AD130 ; =0x040002B8 + strh r3, [r12, #0x0] + mov r3, r4, lsr #0x2 + str r3, [r2, #0x0] +_020ACF98: + ldrh r2, [r12, #0x0] + ands r2, r2, #0x8000 + bne _020ACF98 + ldr r2, _020AD134 ; =0x040002B4 + cmp r1, #0x0 + ldr r2, [r2, #0x0] + beq _020AD038 + cmp r1, r2, lsl #0x1 + blo _020AD038 + mov r4, #0x0 + mov r3, r4 + ldr r2, _020AD128 ; =UNK_021CB880 +_020ACFC8: + ldr r1, [r2, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, #0x4 + add r4, r4, r1 + blo _020ACFC8 + ldr r3, _020AD12C ; =0x040002B0 + mov r2, #0x0 + ldr r1, _020AD130 ; =0x040002B8 + strh r2, [r3, #0x0] + mov r2, r4, lsr #0x2 + str r2, [r1, #0x0] +_020ACFF4: + ldrh r1, [r3, #0x0] + ands r1, r1, #0x8000 + bne _020ACFF4 + ldr r2, _020AD134 ; =0x040002B4 + mov r1, #0x3 + ldr r2, [r2, #0x0] + ldr r3, _020AD138 ; =UNK_021CB874 + mul r1, r2, r1 + mov lr, r1, lsr #0x1 + ldr r2, _020AD13C ; =UNK_021CB878 + mov r12, #0x0 + ldr r1, _020AD124 ; =UNK_02106498 + mov r4, #0x1 + str lr, [r3, #0x0] + str r12, [r2, #0x0] + str r4, [r1, #0x0] + b _020AD03C +_020AD038: + mov r4, #0x0 +_020AD03C: + ldr r1, _020AD13C ; =UNK_021CB878 + ldr r3, _020AD128 ; =UNK_021CB880 + ldr r12, [r1, #0x0] + add r2, r12, #0x1 + and r2, r2, #0x3 + str r0, [r3, r12, lsl #0x2] + str r2, [r1, #0x0] + b _020AD11C +_020AD05C: + ldr r1, _020AD13C ; =UNK_021CB878 + mov lr, #0x0 + ldr r12, [r1, #0x0] + ldr r3, _020AD128 ; =UNK_021CB880 + add r2, r12, #0x1 + and r2, r2, #0x3 + mov r4, lr + str r0, [r3, r12, lsl #0x2] + str r2, [r1, #0x0] +_020AD080: + ldr r0, [r3, r4, lsl #0x2] + add r4, r4, #0x1 + cmp r4, #0x4 + add lr, lr, r0 + blt _020AD080 + ldr r2, _020AD12C ; =0x040002B0 + mov r1, #0x0 + ldr r0, _020AD130 ; =0x040002B8 + strh r1, [r2, #0x0] + mov r1, lr, lsr #0x2 + str r1, [r0, #0x0] +_020AD0AC: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AD0AC + ldr r1, _020AD134 ; =0x040002B4 + ldr r0, _020AD138 ; =UNK_021CB874 + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r1, r0 + bhi _020AD10C + ldr r2, _020AD140 ; =UNK_021CB87C + ldr r1, _020AD124 ; =UNK_02106498 + ldr r3, [r2, #0x0] + ldr r0, [r1, #0x8] + add r3, r3, #0x1 + str r3, [r2, #0x0] + cmp r3, r0 + ble _020AD118 + ldr r0, _020AD13C ; =UNK_021CB878 + mov r3, #0x0 + str r3, [r0, #0x0] + str r3, [r1, #0x0] + str r3, [r2, #0x0] + mov r0, #0x3 + ldmia sp!, {r4,pc} +_020AD10C: + ldr r0, _020AD140 ; =UNK_021CB87C + mov r1, #0x0 + str r1, [r0, #0x0] +_020AD118: + mov r4, #0x2 +_020AD11C: + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020AD124: .word UNK_02106498 +_020AD128: .word UNK_021CB880 +_020AD12C: .word 0x040002B0 +_020AD130: .word 0x040002B8 +_020AD134: .word 0x040002B4 +_020AD138: .word UNK_021CB874 +_020AD13C: .word UNK_021CB878 +_020AD140: .word UNK_021CB87C + + arm_func_start FUN_020AD144 +FUN_020AD144: ; 0x020AD144 + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r1, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, _020AD16C ; =UNK_02106498 + mov r2, #0x10 + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD16C: .word UNK_02106498 + + arm_func_start FUN_020AD170 +FUN_020AD170: + ldr r0, _020AD1B8 ; =UNK_021CB880 + mov r2, #0x0 + mov r1, #0x1000000 +_020AD17C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020AD17C + ldr r3, _020AD1BC ; =UNK_021CB878 + mov r12, #0x0 + ldr r1, _020AD1C0 ; =UNK_02106498 + ldr r2, _020AD1C4 ; =UNK_021CB874 + ldr r0, _020AD1C8 ; =UNK_021CB87C + str r12, [r3, #0x0] + str r12, [r2, #0x0] + str r12, [r1, #0x0] + str r12, [r1, #0x4] + str r12, [r0, #0x0] + bx lr + .balign 4 +_020AD1B8: .word UNK_021CB880 +_020AD1BC: .word UNK_021CB878 +_020AD1C0: .word UNK_02106498 +_020AD1C4: .word UNK_021CB874 +_020AD1C8: .word UNK_021CB87C + + arm_func_start FUN_020AD1CC +FUN_020AD1CC: ; 0x020AD1CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, r1 + mov r3, r2 + ldr r1, _020AD1F0 ; =UNK_021CB8D4 + mov r2, r12 + bl FUN_020AD1F4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD1F0: .word UNK_021CB8D4 + + arm_func_start FUN_020AD1F4 +FUN_020AD1F4: ; 0x020AD1F4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r4, #0x0 + str r4, [sp, #0x0] + str r4, [sp, #0x4] + mov r9, r4 + movs r8, r2, lsr #0x1 + beq _020AD330 + mov r4, #0xc0000000 + ldr ip, _020AD420 ; =UNK_021CB8BC + ldr r2, _020AD424 ; =UNK_021CB8A4 + str r4, [sp, #0xc] +_020AD224: + ldr r4, _020AD428 ; =UNK_021CB894 + ldr lr, [r2, #0x10] + ldr r7, [r4, #0x0] + mov r4, r9, lsl #0x1 + ldrsh r10, [r1, r4] + ldr r4, _020AD42C ; =UNK_021CB898 + mov r5, r7, lsl #0x1 + ldr r6, [r4, #0x0] + ldr r4, _020AD430 ; =UNK_021CBD14 + ldr r11, [r2, #0x14] + strh r10, [r4, r5] + ldr r10, [r12, #0x10] + mov r5, r6, lsl #0x1 + ldrsh r5, [r4, r5] + ldr r4, [r12, #0x14] + mul lr, r10, lr + str r10, [sp, #0x8] + str r10, [r12, #0x14] + mla r10, r4, r11, lr + ldr r4, [r12, #0xc] + ldr r11, [r2, #0xc] + str r4, [r12, #0x10] + mla r10, r4, r11, r10 + ldr r4, [r12, #0x8] + ldr r11, [r2, #0x8] + str r4, [r12, #0xc] + mla r10, r4, r11, r10 + ldr r4, [r12, #0x4] + ldr r11, [r2, #0x4] + str r4, [r12, #0x8] + mla r10, r4, r11, r10 + ldr r4, [r2, #0x0] + str r5, [r12, #0x0] + mla r4, r5, r4, r10 + str r5, [r12, #0x4] + ldr r5, _020AD434 ; =0x3FFF8000 + cmp r4, r5 + movgt r4, r5 + bgt _020AD2C8 + cmp r4, #0xc0000000 + ldrlt r4, [sp, #0xc] +_020AD2C8: + ldr r5, _020AD438 ; =0x000007FF + add r7, r7, #0x1 + and r7, r7, r5 + ldr r5, _020AD428 ; =UNK_021CB894 + add r6, r6, #0x1 + str r7, [r5, #0x0] + ldr r5, _020AD438 ; =0x000007FF + mov r7, r9, lsl #0x1 + and r6, r6, r5 + ldr r5, _020AD42C ; =UNK_021CB898 + mov r4, r4, asr #0xf + str r6, [r5, #0x0] + strh r4, [r1, r7] + ldrsh r6, [r1, r7] + ldrsh r4, [r0, r7] + add r9, r9, #0x1 + mul r5, r6, r6 + strh r4, [r1, r7] + ldr r4, [sp, #0x0] + adds r4, r4, r5 + str r4, [sp, #0x0] + ldr r4, [sp, #0x4] + adc r4, r4, r5, asr #0x1f + str r4, [sp, #0x4] + cmp r9, r8 + blo _020AD224 +_020AD330: + ldr r5, _020AD43C ; =0x04000280 + mov r1, #0x1 + strh r1, [r5, #0x0] + ldr r4, _020AD440 ; =0x04000290 + ldr r1, [sp, #0x0] + ldr r2, _020AD444 ; =0x04000298 + str r1, [r4, #0x0] + ldr r1, [sp, #0x4] + str r1, [r4, #0x4] + str r8, [r2, #0x0] + mov r1, #0x0 + str r1, [r2, #0x4] +_020AD360: + ldrh r1, [r5, #0x0] + ands r1, r1, #0x8000 + bne _020AD360 + ldr r1, _020AD448 ; =0x040002A0 + ldr r2, _020AD44C ; =0x040002B0 + ldr r5, [r1, #0x0] + mov r4, #0x0 + ldr r1, _020AD450 ; =0x040002B8 + strh r4, [r2, #0x0] + str r5, [r1, #0x0] +_020AD388: + ldrh r1, [r2, #0x0] + ands r1, r1, #0x8000 + bne _020AD388 + ldr r2, _020AD454 ; =0x040002B4 + mov r1, #0x3 + ldr r4, [r2, #0x0] + mov r2, r3, lsl #0x1 + mul r1, r4, r1 + cmp r2, r1 + ldrhi r0, _020AD458 ; =UNK_021CB890 + movhi r1, #0x0 + strhih r1, [r0, #0x0] + addhi sp, sp, #0x14 + ldmhiia sp!, {r4-r11,pc} + cmp r3, r4 + ldrlo r1, _020AD458 ; =UNK_021CB890 + movcc r2, #0x4 + strcch r2, [r1, #0x0] + ldr r1, _020AD458 ; =UNK_021CB890 + mov r3, #0x0 + ldrsh r2, [r1, #0x0] + cmp r2, #0x4 + addlt r2, r2, #0x1 + strlth r2, [r1, #0x0] + cmp r8, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + ldr r1, _020AD458 ; =UNK_021CB890 + ldrsh r4, [r1, #0x0] +_020AD3FC: + mov r2, r3, lsl #0x1 + ldrsh r1, [r0, r2] + add r3, r3, #0x1 + cmp r3, r8 + mov r1, r1, asr r4 + strh r1, [r0, r2] + blo _020AD3FC + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AD420: .word UNK_021CB8BC +_020AD424: .word UNK_021CB8A4 +_020AD428: .word UNK_021CB894 +_020AD42C: .word UNK_021CB898 +_020AD430: .word UNK_021CBD14 +_020AD434: .word 0x3FFF8000 +_020AD438: .word 0x000007FF +_020AD43C: .word 0x04000280 +_020AD440: .word 0x04000290 +_020AD444: .word 0x04000298 +_020AD448: .word 0x040002A0 +_020AD44C: .word 0x040002B0 +_020AD450: .word 0x040002B8 +_020AD454: .word 0x040002B4 +_020AD458: .word UNK_021CB890 + + arm_func_start FUN_020AD45C +FUN_020AD45C: ; 0x020AD45C + ldr ip, _020AD46C ; =MIi_CpuCopyFast + mov r2, r1 + ldr r1, _020AD470 ; =UNK_021CB8D4 + bx r12 + .balign 4 +_020AD46C: .word MIi_CpuCopyFast +_020AD470: .word UNK_021CB8D4 + + arm_func_start FUN_020AD474 +FUN_020AD474: ; 0x020AD474 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020AD4E4 ; =UNK_021CB894 + mov r3, #0x0 + ldr r2, _020AD4E8 ; =0x0000019D + ldr r0, _020AD4EC ; =UNK_021CB898 + ldr lr, _020AD4F0 ; =UNK_021064A8 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r0, _020AD4F4 ; =UNK_021CBD14 + mov r12, r3 +_020AD4A0: + mov r1, r3, lsl #0x1 + add r3, r3, #0x1 + strh r12, [r0, r1] + cmp r3, #0x800 + blt _020AD4A0 + ldr r2, _020AD4F8 ; =UNK_021CB8BC + ldr r0, _020AD4FC ; =UNK_021CB8A4 + mov r3, #0x0 +_020AD4C0: + str r3, [r2, r12, lsl #0x2] + mov r1, r12, lsl #0x1 + ldrsh r1, [lr, r1] + str r1, [r0, r12, lsl #0x2] + add r12, r12, #0x1 + cmp r12, #0x6 + blt _020AD4C0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD4E4: .word UNK_021CB894 +_020AD4E8: .word 0x0000019D +_020AD4EC: .word UNK_021CB898 +_020AD4F0: .word UNK_021064A8 +_020AD4F4: .word UNK_021CBD14 +_020AD4F8: .word UNK_021CB8BC +_020AD4FC: .word UNK_021CB8A4 + + arm_func_start FUN_020AD500 +FUN_020AD500: ; 0x020AD500 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldrsh r2, [r0, #0x0] + ldr r6, _020AD5FC ; =0x00000E9F + ldr sb, _020AD600 ; =UNK_021CB89C + ldr r8, _020AD604 ; =UNK_021CB8A0 + smulbb r10, r2, r6 + ldr r3, [r9, #0x0] + ldr r2, [r8, #0x0] + ldr r7, _020AD608 ; =0x00000D3E + add r3, r10, r3 + mla r5, r2, r7, r3 + mov r3, r5, asr #0xc + mul r4, r3, r3 + str r5, [r8, #0x0] + rsb r2, r10, #0x0 + mov r12, r1, lsr #0x1 + str r3, [r8, #0x0] + str r2, [r9, #0x0] + cmp r12, #0x1 + mov lr, r4, asr #0x1f + mov r5, #0x1 + bls _020AD5AC +_020AD55C: + mov r2, r5, lsl #0x1 + ldrsh r10, [r0, r2] + ldr r3, [r8, #0x0] + add r2, r0, r5, lsl #0x1 + strh r3, [r2, #-0x2] + smulbb r11, r10, r6 + ldr r2, [r9, #0x0] + rsb r10, r11, #0x0 + add r2, r11, r2 + mla r2, r3, r7, r2 + mov r3, r2, asr #0xc + mul r11, r3, r3 + str r2, [r8, #0x0] + adds r4, r4, r11 + str r10, [r9, #0x0] + add r5, r5, #0x1 + adc lr, lr, r11, asr #0x1f + str r3, [r8, #0x0] + cmp r5, r12 + blo _020AD55C +_020AD5AC: + bic r1, r1, #0x1 + add r0, r0, r1 + ldr r2, _020AD60C ; =0x04000280 + strh r3, [r0, #-0x2] + mov r0, #0x1 + ldr r1, _020AD610 ; =0x04000290 + strh r0, [r2, #0x0] + str r4, [r1, #0x0] + ldr r0, _020AD614 ; =0x04000298 + str lr, [r1, #0x4] + str r12, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] +_020AD5E0: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AD5E0 + ldr r0, _020AD618 ; =0x040002A0 + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AD5FC: .word 0x00000E9F +_020AD600: .word UNK_021CB89C +_020AD604: .word UNK_021CB8A0 +_020AD608: .word 0x00000D3E +_020AD60C: .word 0x04000280 +_020AD610: .word 0x04000290 +_020AD614: .word 0x04000298 +_020AD618: .word 0x040002A0 + + arm_func_start FUN_020AD61C +FUN_020AD61C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs lr, r3, lsr #0x1 + mov r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r3, #0x8000 + ldr ip, _020AD720 ; =0x00007FFF + rsb r3, r3, #0x0 +_020AD640: + mov r5, r4, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD664 + cmp r6, r3 + movlt r6, r3 +_020AD664: + mov r5, r4, lsl #0x1 + add r7, r4, #0x1 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD694 + cmp r6, r3 + movlt r6, r3 +_020AD694: + mov r5, r7, lsl #0x1 + add r7, r4, #0x2 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD6CC + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r6, r5 + movlt r6, r3 +_020AD6CC: + mov r5, r7, lsl #0x1 + add r7, r4, #0x3 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD704 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r6, r5 + movlt r6, r3 +_020AD704: + mov r5, r7, lsl #0x1 + add r4, r4, #0x4 + strh r6, [r2, r5] + cmp r4, lr + blo _020AD640 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AD720: .word 0x00007FFF + + arm_func_start FUN_020AD724 +FUN_020AD724: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r6, #0x0] + ldr r0, _020AD824 ; =0x5F564354 + cmp r1, r0 + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,pc} + ldr r0, _020AD828 ; =UNK_021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020AD780 + ldr r0, _020AD82C ; =UNK_021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020AD78C +_020AD780: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD78C: + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + bl OS_GetTick + ldrb r3, [r6, #0x4] + and r2, r3, #0xf0 + cmp r2, #0x40 + bne _020AD7E0 + ldr r2, _020AD830 ; =UNK_021CCD18 + mov r3, r0 + ldr r4, [r2, #0x0] + mov r0, r7 + add r4, r4, #0x1 + str r4, [r2, #0x0] + str r1, [sp, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020AA2A0 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD7E0: + cmp r3, #0x0 + beq _020AD7F0 + cmp r3, #0xff + bne _020AD818 +_020AD7F0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_020AC7FC + cmp r0, #0x0 + movne r0, #0x1 + add sp, sp, #0x4 + moveq r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD818: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AD824: .word 0x5F564354 +_020AD828: .word UNK_021CCD20 +_020AD82C: .word UNK_021CCD1C +_020AD830: .word UNK_021CCD18 + + arm_func_start FUN_020AD834 +FUN_020AD834: ; 0x020AD834 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + add r3, sp, #0x0 + mov r4, r0 + bl FUN_020AD724 + cmp r0, #0x0 + beq _020AD898 + cmp r0, #0x1 + beq _020AD864 + cmp r0, #0x2 + beq _020AD88C + b _020AD898 +_020AD864: + ldr r0, _020AD8A4 ; =UNK_021CCD20 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [r0, #0x8] + ldr r12, [r0, #0x4] + mov r0, r4 + blx r12 + add sp, sp, #0x8 + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020AD88C: + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AD898: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AD8A4: .word UNK_021CCD20 + + arm_func_start FUN_020AD8A8 +FUN_020AD8A8: ; 0x020AD8A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AD8FC ; =UNK_021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, _020AD900 ; =UNK_021CCD14 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + ands r0, r1, #0xf + bne _020AD8E0 + bl FUN_020AC898 +_020AD8E0: + bl FUN_020AA0A4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020AA1CC + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD8FC: .word UNK_021CCD1C +_020AD900: .word UNK_021CCD14 + + arm_func_start FUN_020AD904 +FUN_020AD904: ; 0x020AD904 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020AAF44 + bl FUN_020AC964 + bl FUN_020ACE10 + ldr r1, _020AD934 ; =UNK_021CCD20 + mov r2, #0x0 + ldr r0, _020AD938 ; =UNK_021CCD1C + str r2, [r1, #0x10] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD934: .word UNK_021CCD20 +_020AD938: .word UNK_021CCD1C + + .extern _SDK_AbiossolibVCT + + arm_func_start FUN_020AD93C +FUN_020AD93C: ; 0x020AD93C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020ADA78 ; =_SDK_AbiossolibVCT + bl OSi_ReferSymbol + cmp r4, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, _020ADA7C ; =UNK_021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movne r0, #0x1 + ldmneia sp!, {r4,pc} + ldr r0, [r4, #0x8] + cmp r0, #0x1 + beq _020AD98C + cmp r0, #0x2 + beq _020AD98C + cmp r0, #0x3 + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020AD98C: + ldr r0, [r4, #0x18] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r2, [r4, #0x10] + cmp r2, #0x0 + beq _020AD9B4 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _020AD9BC +_020AD9B4: + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AD9BC: + mov r1, r2, lsr #0x1f + rsb r0, r1, r2, lsl #0x1b + adds r0, r1, r0, ror #0x1b + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldr r0, _020ADA80 ; =UNK_021CCD20 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r2, [r4, #0x18] + ldr r1, _020ADA80 ; =UNK_021CCD20 + mov r0, #0x0 + str r2, [r1, #0x4] + ldr r2, [r4, #0x1c] + str r2, [r1, #0x8] + ldr r2, [r4, #0x8] + str r0, [r1, #0xc] + str r2, [r1, #0x10] + ldrb r2, [r4, #0xc] + cmp r2, #0x20 + ldmcsia sp!, {r4,pc} + strb r2, [r1, #0x0] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl FUN_020ACE30 + cmp r0, #0x0 + bne _020ADA34 + bl FUN_020ACE10 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020ADA34: + mov r0, r4 + bl FUN_020AC97C + cmp r0, #0x0 + bne _020ADA50 + bl FUN_020ACE10 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020ADA50: + bl FUN_020AAF58 + cmp r0, #0x0 + ldrne r1, _020ADA7C ; =UNK_021CCD1C + movne r0, #0x1 + strne r0, [r1, #0x0] + ldmneia sp!, {r4,pc} + bl FUN_020AC964 + bl FUN_020ACE10 + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020ADA78: .word _SDK_AbiossolibVCT +_020ADA7C: .word UNK_021CCD1C +_020ADA80: .word UNK_021CCD20 + + ; unknown + + arm_func_start FUN_020ADA84 +FUN_020ADA84: ; 0x020ADA84 + cmp r1, #0x0 + ldreq r0, [r0, #0x4] + ldrneh r0, [r0, #0xa] + ldrne r0, [r1, r0] + bx lr + + arm_func_start FUN_020ADA98 +FUN_020ADA98: ; 0x020ADA98 + cmp r1, #0x0 + ldreq r0, [r0, #0x0] + ldrneh r0, [r0, #0xa] + addne r0, r1, r0 + ldrne r0, [r0, #0x4] + bx lr + + arm_func_start FUN_020ADAB0 +FUN_020ADAB0: ; 0x020ADAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xa] + ldr r3, [r1, r12] + add lr, r1, r12 + cmp r3, #0x0 + ldreq r1, [lr, #0x4] + streq r1, [r0, #0x0] + ldrne r2, [lr, #0x4] + addne r1, r3, r12 + strne r2, [r1, #0x4] + ldr r3, [lr, #0x4] + cmp r3, #0x0 + ldreq r1, [lr, #0x0] + streq r1, [r0, #0x4] + ldrneh r1, [r0, #0xa] + ldrne r2, [lr, #0x0] + strne r2, [r3, r1] + mov r1, #0x0 + str r1, [lr, #0x0] + str r1, [lr, #0x4] + ldrh r1, [r0, #0x8] + sub r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB18 +FUN_020ADB18: ; 0x020ADB18 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + bne _020ADB38 + mov r1, r2 + bl FUN_020ADBE8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB38: + ldr r3, [r0, #0x0] + cmp r1, r3 + bne _020ADB54 + mov r1, r2 + bl FUN_020ADB8C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB54: + ldrh lr, [r0, #0xa] + ldr r3, [r1, lr] + add r12, r2, lr + str r3, [r2, lr] + str r1, [r12, #0x4] + add r3, r3, lr + str r2, [r3, #0x4] + ldrh r3, [r0, #0xa] + str r2, [r1, r3] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB8C +FUN_020ADB8C: ; 0x020ADB8C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADBAC + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADBAC: + ldrh r3, [r0, #0xa] + mov r2, #0x0 + str r2, [r1, r3] + ldr r2, [r0, #0x0] + add r3, r1, r3 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x0] + str r1, [r3, r2] + str r1, [r0, #0x0] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADBE8 +FUN_020ADBE8: ; 0x020ADBE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADC08 + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADC08: + ldrh r12, [r0, #0xa] + ldr r3, [r0, #0x4] + mov r2, #0x0 + str r3, [r1, r12] + add r3, r1, r12 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x4] + add r2, r3, r2 + str r1, [r2, #0x4] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADC48 +FUN_020ADC48: ; 0x020ADC48 + ldrh r3, [r0, #0xa] + mov r2, #0x0 + add r12, r1, r3 + str r2, [r12, #0x4] + str r2, [r1, r3] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020ADC74 +FUN_020ADC74: ; 0x020ADC74 + mov r2, #0x0 + str r2, [r0, #0x0] + str r2, [r0, #0x4] + strh r2, [r0, #0x8] + strh r1, [r0, #0xa] + bx lr + + arm_func_start FUN_020ADC8C +FUN_020ADC8C: ; 0x020ADC8C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020ADCA4 +FUN_020ADCA4: + stmdb sp!, {r4,lr} + mov r4, r0 + str r1, [r4, #0x0] + str r2, [r4, #0x18] + str r3, [r4, #0x1c] + mov r0, #0x0 + str r0, [r4, #0x20] + ldr r1, [r4, #0x20] + ldrh r0, [sp, #0x8] + bic r1, r1, #0xff + str r1, [r4, #0x20] + ldr r1, [r4, #0x20] + and r0, r0, #0xff + orr r2, r1, r0 + add r0, r4, #0xc + mov r1, #0x4 + str r2, [r4, #0x20] + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =UNK_021CCD38 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020ADD14 + ldr r0, _020ADD2C ; =UNK_021CCD3C + mov r1, #0x4 + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =UNK_021CCD38 + mov r1, #0x1 + str r1, [r0, #0x0] +_020ADD14: + mov r0, r4 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADBE8 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD28: .word UNK_021CCD38 +_020ADD2C: .word UNK_021CCD3C + + arm_func_start FUN_020ADD30 +FUN_020ADD30: ; 0x020ADD30 + stmdb sp!, {r4,lr} + ldr r4, _020ADD54 ; =UNK_021CCD3C + mov r1, r0 + mov r0, r4 + bl FUN_020ADD58 + cmp r0, #0x0 + addne r4, r0, #0xc + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD54: .word UNK_021CCD3C + + arm_func_start FUN_020ADD58 +FUN_020ADD58: + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r1, #0x0 + mov r6, r0 + bl FUN_020ADA98 + movs r4, r0 + beq _020ADDB8 +_020ADD74: + ldr r0, [r4, #0x18] + cmp r0, r5 + bhi _020ADDA4 + ldr r0, [r4, #0x1c] + cmp r5, r0 + bhs _020ADDA4 + mov r1, r5 + add r0, r4, #0xc + bl FUN_020ADD58 + cmp r0, #0x0 + moveq r0, r4 + ldmia sp!, {r4-r6,pc} +_020ADDA4: + mov r0, r6 + mov r1, r4 + bl FUN_020ADA98 + movs r4, r0 + bne _020ADD74 +_020ADDB8: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020ADDC0 +FUN_020ADDC0: ; 0x020ADDC0 + ldr r0, [r0, #-0xc] + bx lr + + arm_func_start FUN_020ADDC8 +FUN_020ADDC8: ; 0x020ADDC8 + ldr r2, [r0, #0x24] + mov r0, #0x0 + cmp r2, #0x0 + bxeq lr +_020ADDD8: + ldr r1, [r2, #0x4] + ldr r2, [r2, #0xc] + add r0, r0, r1 + cmp r2, #0x0 + bne _020ADDD8 + bx lr + + arm_func_start FUN_020ADDF0 +FUN_020ADDF0: ; 0x020ADDF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + sub r4, r1, #0x10 + add r5, r0, #0x24 + add r0, sp, #0x0 + mov r1, r4 + bl FUN_020AE528 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020AE500 + add r1, sp, #0x0 + mov r0, r5 + bl FUN_020AE02C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020ADE2C +FUN_020ADE2C: ; 0x020ADE2C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r10, r2 + sub r6, r4, #0x10 + add r1, r10, #0x3 + mov r5, r0 + ldr r8, [r6, #0x4] + bic r10, r1, #0x3 + cmp r10, r8 + add r7, r5, #0x24 + addeq sp, sp, #0x10 + moveq r0, r10 + ldmeqia sp!, {r4-r10,pc} + cmp r10, r8 + bls _020ADF60 + ldr r9, [r7, #0x0] + add r0, r6, #0x10 + cmp r9, #0x0 + add r0, r8, r0 + beq _020ADE94 +_020ADE80: + cmp r9, r0 + beq _020ADE94 + ldr r9, [r9, #0xc] + cmp r9, #0x0 + bne _020ADE80 +_020ADE94: + cmp r9, #0x0 + beq _020ADEB0 + ldr r0, [r9, #0x4] + add r1, r8, #0x10 + add r0, r1, r0 + cmp r10, r0 + bls _020ADEBC +_020ADEB0: + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r10,pc} +_020ADEBC: + add r0, sp, #0x0 + mov r1, r9 + bl FUN_020AE528 + mov r0, r7 + mov r1, r9 + bl FUN_020AE500 + ldr r2, [sp, #0x4] + add r3, r10, r4 + ldr r9, [sp, #0x0] + sub r1, r2, r3 + str r3, [sp, #0x0] + cmp r1, #0x10 + strcc r2, [sp, #0x0] + mov r8, r0 + ldr r0, [sp, #0x0] + sub r0, r0, r4 + str r0, [r6, #0x4] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + blo _020ADF30 + ldr r1, _020ADF9C ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r8 + bl FUN_020AE4D0 +_020ADF30: + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x0] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + sub r2, r1, r9 + ands r0, r0, #0x1 + beq _020ADF90 + mov r1, r9 + mov r0, #0x0 + bl MIi_CpuClear32 + b _020ADF90 +_020ADF60: + add r0, r10, r4 + str r0, [sp, #0x8] + ldr r1, [r6, #0x4] + add r0, r6, #0x10 + add r0, r1, r0 + str r0, [sp, #0xc] + add r1, sp, #0x8 + mov r0, r7 + str r10, [r6, #0x4] + bl FUN_020AE02C + cmp r0, #0x0 + streq r8, [r6, #0x4] +_020ADF90: + ldr r0, [r6, #0x4] + add sp, sp, #0x10 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020ADF9C: .word 0x00004652 + + arm_func_start tempName_NNS_FndAllocFromExpHeapEx +tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020ADFCC + bl FUN_020AE1D8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADFCC: + rsb r2, r2, #0x0 + bl FUN_020AE11C + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c +thunk_FUN_020adc8c: ; 0x020ADFDC + ldr ip, _020ADFE4 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020ADFE4: .word FUN_020ADC8C + + arm_func_start tempName_NNS_FndCreateExpHeapEx +tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE014 + sub r3, r1, r0 + cmp r3, #0x4c + bhs _020AE020 +_020AE014: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE020: + bl FUN_020AE420 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE02C +FUN_020AE02C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r1 + ldr r2, [r5, #0x0] + ldr r1, [r5, #0x4] + mov r6, r0 + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [r6, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + beq _020AE0A0 + ldr r0, [r5, #0x0] +_020AE060: + cmp r1, r0 + movcc r4, r1 + blo _020AE094 + ldr r0, [r5, #0x4] + cmp r1, r0 + bne _020AE0A0 + ldr r2, [r1, #0x4] + add r0, r1, #0x10 + add r2, r2, r0 + mov r0, r6 + str r2, [sp, #0x4] + bl FUN_020AE500 + b _020AE0A0 +_020AE094: + ldr r1, [r1, #0xc] + cmp r1, #0x0 + bne _020AE060 +_020AE0A0: + cmp r4, #0x0 + beq _020AE0D4 + ldr r2, [r4, #0x4] + add r1, r4, #0x10 + ldr r0, [r5, #0x0] + add r1, r2, r1 + cmp r1, r0 + bne _020AE0D4 + mov r0, r6 + mov r1, r4 + str r4, [sp, #0x0] + bl FUN_020AE500 + mov r4, r0 +_020AE0D4: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + addcc sp, sp, #0x8 + movcc r0, #0x0 + ldmccia sp!, {r4-r6,pc} + ldr r1, _020AE118 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r6 + mov r2, r4 + bl FUN_020AE4D0 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AE118: .word 0x00004652 + + arm_func_start FUN_020AE11C +FUN_020AE11C: ; 0x020AE11C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + mvn lr, #0x0 + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r5, #0x1 + mov r1, #0x0 + ldr r4, [r0, #0x4] + movne r5, #0x0 + mov r12, r1 + cmp r4, #0x0 + beq _020AE1B0 + sub r2, r2, #0x1 + mvn r2, r2 +_020AE164: + ldr r8, [r4, #0x4] + add r9, r4, #0x10 + add r6, r8, r9 + sub r6, r6, r3 + and r7, r2, r6 + subs r6, r7, r9 + bmi _020AE1A4 + cmp lr, r8 + bls _020AE1A4 + mov r1, r4 + mov lr, r8 + mov r12, r7 + cmp r5, #0x0 + bne _020AE1B0 + cmp r8, r3 + beq _020AE1B0 +_020AE1A4: + ldr r4, [r4, #0x8] + cmp r4, #0x0 + bne _020AE164 +_020AE1B0: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x1 + mov r2, r12 + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE1D8 +FUN_020AE1D8: ; 0x020AE1D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + ldr r5, [r0, #0x0] + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r6, #0x1 + mov r1, #0x0 + movne r6, #0x0 + mov lr, r1 + cmp r5, #0x0 + mvn r4, #0x0 + beq _020AE270 + sub r12, r2, #0x1 + mvn r2, r12 +_020AE220: + add r8, r5, #0x10 + add r7, r12, r8 + and r9, r2, r7 + sub r7, r9, r8 + ldr r8, [r5, #0x4] + add r7, r3, r7 + cmp r8, r7 + blo _020AE264 + cmp r4, r8 + bls _020AE264 + mov r1, r5 + mov r4, r8 + mov lr, r9 + cmp r6, #0x0 + bne _020AE270 + cmp r8, r3 + beq _020AE270 +_020AE264: + ldr r5, [r5, #0xc] + cmp r5, #0x0 + bne _020AE220 +_020AE270: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x0 + mov r2, lr + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE298 +FUN_020AE298: ; 0x020AE298 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + mov r7, r0 + add r0, sp, #0x0 + mov r8, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020AE528 + ldr r3, [sp, #0x4] + sub r4, r6, #0x10 + add r2, r5, r6 + mov r0, r7 + mov r1, r8 + str r4, [sp, #0x4] + str r3, [sp, #0xc] + str r2, [sp, #0x8] + bl FUN_020AE500 + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r5, r0 + sub r0, r1, r2 + cmp r0, #0x10 + strcc r2, [sp, #0x4] + blo _020AE318 + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 + mov r5, r0 +_020AE318: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x8] + sub r0, r1, r0 + cmp r0, #0x10 + strcc r1, [sp, #0x8] + blo _020AE34C + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x8 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 +_020AE34C: + ldr r0, [r7, #-0x4] + ldr r1, [sp, #0x4] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + ldr r2, [sp, #0x8] + mov r0, r0, lsr #0x10 + sub r2, r2, r1 + ands r0, r0, #0x1 + beq _020AE378 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE378: + ldr r2, [sp, #0x8] + ldr r1, _020AE41C ; =0x00005544 + add r0, sp, #0x10 + str r4, [sp, #0x10] + str r2, [sp, #0x14] + bl FUN_020AE4A0 + mov r1, r0 + ldrh r3, [r1, #0x2] + ldrh r2, [sp, #0x30] + add r0, r7, #0x8 + bic r3, r3, #0x8000 + strh r3, [r1, #0x2] + ldrh r3, [r1, #0x2] + and r2, r2, #0x1 + orr r2, r3, r2, lsl #0xf + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldr r3, [sp, #0x4] + bic r2, r2, #0x7f00 + strh r2, [r1, #0x2] + sub r2, r1, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + ldrh r3, [r1, #0x2] + and r2, r2, #0x7f + orr r2, r3, r2, lsl #0x8 + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldrh r3, [r7, #0x10] + bic r2, r2, #0xff + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + and r3, r3, #0xff + orr r2, r2, r3 + strh r2, [r1, #0x2] + ldr r2, [r7, #0xc] + bl FUN_020AE4D0 + mov r0, r6 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AE418: .word 0x00004652 +_020AE41C: .word 0x00005544 + + arm_func_start FUN_020AE420 +FUN_020AE420: ; 0x020AE420 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE498 ; =0x45585048 + add r2, r4, #0x14 + bl FUN_020ADCA4 + mov r0, #0x0 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + ldrh r2, [r4, #0x12] + ldr r1, _020AE49C ; =0x00004652 + add r0, sp, #0x4 + bic r2, r2, #0x1 + strh r2, [r4, #0x12] + ldr r2, [r5, #0x18] + str r2, [sp, #0x4] + ldr r2, [r5, #0x1c] + str r2, [sp, #0x8] + bl FUN_020AE4A0 + str r0, [r5, #0x24] + str r0, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] + mov r0, r5 + str r1, [r4, #0xc] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE498: .word 0x45585048 +_020AE49C: .word 0x00004652 + + arm_func_start FUN_020AE4A0 +FUN_020AE4A0: ; 0x020AE4A0 + ldr r3, [r0, #0x0] + mov r2, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + ldr r1, [r0, #0x4] + add r0, r3, #0x10 + sub r0, r1, r0 + str r0, [r3, #0x4] + str r2, [r3, #0x8] + mov r0, r3 + str r2, [r3, #0xc] + bx lr + + arm_func_start FUN_020AE4D0 +FUN_020AE4D0: ; 0x020AE4D0 + str r2, [r1, #0x8] + cmp r2, #0x0 + ldrne r3, [r2, #0xc] + strne r1, [r2, #0xc] + ldreq r3, [r0, #0x0] + streq r1, [r0, #0x0] + str r3, [r1, #0xc] + cmp r3, #0x0 + strne r1, [r3, #0x8] + streq r1, [r0, #0x4] + mov r0, r1 + bx lr + + arm_func_start FUN_020AE500 +FUN_020AE500: ; 0x020AE500 + ldr r2, [r1, #0x8] + ldr r1, [r1, #0xc] + cmp r2, #0x0 + strne r1, [r2, #0xc] + streq r1, [r0, #0x0] + cmp r1, #0x0 + strne r2, [r1, #0x8] + streq r2, [r0, #0x4] + mov r0, r2 + bx lr + + arm_func_start FUN_020AE528 +FUN_020AE528: ; 0x020AE528 + ldrh r2, [r1, #0x2] + add r3, r1, #0x10 + mov r2, r2, asr #0x8 + and r2, r2, #0x7f + mov r2, r2, lsl #0x10 + sub r2, r1, r2, lsr #0x10 + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + add r1, r1, r3 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020AE554 +FUN_020AE554: ; 0x020AE554 + add r2, r0, #0x24 + cmp r1, #0x0 + ldr r3, [r2, #0x8] + beq _020AE584 + cmp r3, #0x0 + beq _020AE584 +_020AE56C: + ldr r0, [r3, #0x0] + cmp r0, r1 + beq _020AE584 + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE56C +_020AE584: + cmp r3, #0x0 + moveq r0, #0x0 + bxeq lr + ldr r1, [r3, #0x4] + mov r0, #0x1 + str r1, [r2, #0x0] + ldr r1, [r3, #0x8] + str r1, [r2, #0x4] + ldr r1, [r3, #0xc] + str r1, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE5B0 +FUN_020AE5B0: ; 0x020AE5B0 + stmdb sp!, {r4-r6,lr} + add r4, r0, #0x24 + ldr r5, [r0, #0x24] + mov r6, r1 + mov r0, r4 + mov r1, #0x10 + mov r2, #0x4 + bl FUN_020AE77C + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + str r6, [r0, #0x0] + str r5, [r0, #0x4] + ldr r1, [r4, #0x4] + str r1, [r0, #0x8] + ldr r1, [r4, #0x8] + str r1, [r0, #0xc] + str r0, [r4, #0x8] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE600 +FUN_020AE600: ; 0x020AE600 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + ands r1, r4, #0x1 + beq _020AE61C + bl FUN_020AE6F8 +_020AE61C: + ands r0, r4, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + bl FUN_020AE6C8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE638 +FUN_020AE638: ; 0x020AE638 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + add r0, r0, #0x24 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020AE668 + bl FUN_020AE77C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AE668: + rsb r2, r2, #0x0 + bl FUN_020AE710 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c_2 +thunk_FUN_020adc8c_2: ; 0x020AE678 + ldr ip, _020AE680 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020AE680: .word FUN_020ADC8C + + arm_func_start FUN_020AE684 +FUN_020AE684: ; 0x020AE684 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE6B0 + sub r3, r1, r0 + cmp r3, #0x30 + bhs _020AE6BC +_020AE6B0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE6BC: + bl FUN_020AE7E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE6C8 +FUN_020AE6C8: ; 0x020AE6C8 + add r2, r0, #0x24 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _020AE6EC +_020AE6D8: + ldr r1, [r0, #0x1c] + str r1, [r3, #0x8] + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE6D8 +_020AE6EC: + ldr r0, [r0, #0x1c] + str r0, [r2, #0x4] + bx lr + + arm_func_start FUN_020AE6F8 +FUN_020AE6F8: ; 0x020AE6F8 + ldr r1, [r0, #0x18] + add r2, r0, #0x24 + str r1, [r0, #0x24] + mov r0, #0x0 + str r0, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE710 +FUN_020AE710: ; 0x020AE710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x4] + sub r0, r2, #0x1 + mvn r2, r0 + sub r1, r3, r1 + ldr r0, [r5, #0x0] + and r4, r2, r1 + cmp r4, r0 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + ldr r0, [r5, #-0x4] + sub r2, r3, r4 + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ands r0, r0, #0x1 + beq _020AE76C + mov r1, r4 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE76C: + mov r0, r4 + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE77C +FUN_020AE77C: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x0] + sub r2, r2, #0x1 + mvn r3, r2 + add r2, r2, r0 + and r5, r3, r2 + ldr r2, [r6, #0x4] + add r4, r1, r5 + cmp r4, r2 + movhi r0, #0x0 + ldmhiia sp!, {r4-r6,pc} + ldr r1, [r6, #-0x4] + sub r2, r4, r0 + and r1, r1, #0xff + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r1, r1, #0x1 + beq _020AE7D4 + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE7D4: + mov r0, r5 + str r4, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE7E0 +FUN_020AE7E0: ; 0x020AE7E0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE828 ; =0x46524D48 + add r2, r4, #0xc + bl FUN_020ADCA4 + ldr r0, [r5, #0x18] + mov r1, #0x0 + str r0, [r5, #0x24] + ldr r2, [r5, #0x1c] + mov r0, r5 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE828: .word 0x46524D48 + + arm_func_start FUN_020AE82C +FUN_020AE82C: ; 0x020AE82C + ldr ip, _020AE848 ; =UNK_020FF7CC + mov r3, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x4] + str r2, [r0, #0x8] + str r3, [r0, #0xc] + bx lr + .balign 4 +_020AE848: .word UNK_020FF7CC + + arm_func_start FUN_020AE84C +FUN_020AE84C: ; 0x020AE84C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x4] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE868 +FUN_020AE868: ; 0x020AE868 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE884 +FUN_020AE884: ; 0x020AE884 + ldr ip, _020AE890 ; =FUN_020ADDF0 + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_020AE890: .word FUN_020ADDF0 + + arm_func_start FUN_020AE894 +FUN_020AE894: ; 0x020AE894 + ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx + mov r2, r0 + ldr r0, [r2, #0x4] + ldr r2, [r2, #0x8] + bx r12 + .balign 4 +_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx + + arm_func_start FUN_020AE8AC +FUN_020AE8AC: ; 0x020AE8AC + mvn r0, #0x0 + bx lr + + arm_func_start FUN_020AE8B4 +FUN_020AE8B4: ; 0x020AE8B4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE8BC +FUN_020AE8BC: ; 0x020AE8BC + mvn r0, #0x0 + bx lr + + arm_func_start FUN_020AE8C4 +FUN_020AE8C4: ; 0x020AE8C4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE8CC +FUN_020AE8CC: ; 0x020AE8CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr r3, _020AE914 ; =UNK_021064E4 + mov r12, lr + mov r2, #0x1 +_020AE8E4: + ldr r1, [r0, r12, lsl #0x2] + add lr, lr, #0x1 + str r1, [r3, #0x0] + ldr r1, [r0, r2, lsl #0x2] + cmp lr, #0x5 + str r1, [r3, #0x4] + add r12, r12, #0x2 + add r3, r3, #0x18 + add r2, r2, #0x2 + blt _020AE8E4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE914: .word UNK_021064E4 + + arm_func_start FUN_020AE918 +FUN_020AE918: ; 0x020AE918 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr ip, _020AE960 ; =UNK_021064E4 + mov r3, lr + mov r2, #0x1 +_020AE930: + ldr r1, [r12, #0x0] + add lr, lr, #0x1 + str r1, [r0, r3, lsl #0x2] + ldr r1, [r12, #0x4] + cmp lr, #0x5 + str r1, [r0, r2, lsl #0x2] + add r12, r12, #0x18 + add r3, r3, #0x2 + add r2, r2, #0x2 + blt _020AE930 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE960: .word UNK_021064E4 + + arm_func_start FUN_020AE964 +FUN_020AE964: ; 0x020AE964 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE96C +FUN_020AE96C: ; 0x020AE96C + stmdb sp!, {r4-r10,lr} + cmp r0, #0x0 + moveq r7, #0x10 + addne r0, r0, #0xf + bicne r7, r0, #0xf + ldr r0, _020AEADC ; =0x0007FFF0 + cmp r7, r0 + movcs r0, #0x0 + ldmcsia sp!, {r4-r10,pc} + cmp r1, #0x0 + beq _020AEA5C + mov lr, r7, lsr #0x1 + mov r6, #0x0 + ldr r2, _020AEAE0 ; =UNK_02106514 + ldr r3, _020AEAE4 ; =UNK_021064FC + ldr ip, _020AEAE8 ; =UNK_021064C8 + mov r0, r6 +_020AE9B0: + ldr r5, [r12, r6, lsl #0x2] + ldr r4, [r5, #0x8] + cmp r4, #0x0 + beq _020AEA48 + ldr r9, [r5, #0x4] + ldr r4, [r5, #0x0] + sub r4, r9, r4 + cmp r4, r7 + blo _020AEA48 + ldrh r4, [r5, #0x10] + cmp r4, #0x0 + beq _020AE9EC + cmp r4, #0x3 + beq _020AE9F4 + b _020AE9FC +_020AE9EC: + mov r4, r3 + b _020AEA00 +_020AE9F4: + mov r4, r2 + b _020AEA00 +_020AE9FC: + mov r4, r0 +_020AEA00: + ldr r9, [r4, #0x8] + cmp r9, #0x0 + beq _020AEA48 + ldr r10, [r4, #0x4] + ldr r9, [r4, #0x0] + sub r9, r10, r9 + cmp r9, lr + blo _020AEA48 + ldr r3, [r5, #0x0] + mov r0, #0x1 + add r2, r3, r7 + str r2, [r5, #0x0] + ldr r2, [r4, #0x0] + add r2, r2, lr + str r2, [r4, #0x0] + ldr r2, [r5, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEA48: + add r6, r6, #0x1 + cmp r6, #0x2 + blt _020AE9B0 + mov r0, #0x0 + b _020AEAB8 +_020AEA5C: + ldr r3, _020AEAEC ; =UNK_021064D0 + mov r5, #0x0 +_020AEA64: + ldr r4, [r3, r5, lsl #0x2] + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _020AEAA8 + ldr r2, [r4, #0x4] + ldr r0, [r4, #0x0] + sub r0, r2, r0 + cmp r0, r7 + blo _020AEAA8 + ldr r2, [r4, #0x4] + mov r0, #0x1 + sub r2, r2, r7 + str r2, [r4, #0x4] + ldr r3, [r4, #0x4] + ldr r2, [r4, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEAA8: + add r5, r5, #0x1 + cmp r5, #0x5 + blt _020AEA64 + mov r0, #0x0 +_020AEAB8: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020AEAF0 ; =0x0000FFFF + mov r2, r7, lsr #0x4 + and r0, r0, r8, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r1, lsl #0x1f + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AEADC: .word 0x0007FFF0 +_020AEAE0: .word UNK_02106514 +_020AEAE4: .word UNK_021064FC +_020AEAE8: .word UNK_021064C8 +_020AEAEC: .word UNK_021064D0 +_020AEAF0: .word 0x0000FFFF + + arm_func_start FUN_020AEAF4 +FUN_020AEAF4: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _020AEB68 ; =UNK_021CCD48 + mov r6, #0x0 + ldrh r7, [r0, #0x0] + ldr r5, _020AEB6C ; =UNK_021064E4 + mov lr, r6 + cmp r7, #0x1 + addhi r7, r7, #0x1 + mov r1, r6 + mov r3, r6 + mov r4, #0x1 + mov r0, #0x20000 + mov r2, #0x10000 +_020AEB2C: + cmp r6, r7 + strlt r4, [r5, #0x8] + strge lr, [r5, #0x8] + ldr r12, [r5, #0xc] + add r6, r6, #0x1 + cmp r12, #0x0 + strne r3, [r5, #0x0] + strne r2, [r5, #0x4] + streq r1, [r5, #0x0] + streq r0, [r5, #0x4] + cmp r6, #0x5 + add r5, r5, #0x18 + blt _020AEB2C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEB68: .word UNK_021CCD48 +_020AEB6C: .word UNK_021064E4 + + arm_func_start FUN_020AEB70 +FUN_020AEB70: ; 0x020AEB70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + cmp r5, #0x2 + bhi _020AEBA8 + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x2 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020AEC10 + b _020AEBC4 +_020AEBA8: + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x0 + mov r3, #0x2 + str r12, [sp, #0x0] + bl FUN_020AEC10 +_020AEBC4: + ldr r0, _020AEBFC ; =UNK_021CCD48 + strh r5, [r0, #0x0] + bl FUN_020AEAF4 + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r3, _020AEC00 ; =FUN_020AE96C + ldr r1, _020AEC04 ; =UNK_021064B8 + ldr r2, _020AEC08 ; =FUN_020AE964 + ldr r0, _020AEC0C ; =UNK_021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AEBFC: .word UNK_021CCD48 +_020AEC00: .word FUN_020AE96C +_020AEC04: .word UNK_021064B8 +_020AEC08: .word FUN_020AE964 +_020AEC0C: .word UNK_021064BC + + arm_func_start FUN_020AEC10 +FUN_020AEC10: ; 0x020AEC10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, [sp, #0x18] + ldr r6, _020AEC58 ; =UNK_021064E4 + mov r12, #0x18 + mla r7, r0, r12, r6 + ldr r0, _020AEC5C ; =UNK_021064D0 + mla r5, r1, r12, r6 + mla r4, r2, r12, r6 + mla r2, r3, r12, r6 + mla r1, lr, r12, r6 + str r7, [r0, #0x0] + str r5, [r0, #0x4] + str r4, [r0, #0x8] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEC58: .word UNK_021064E4 +_020AEC5C: .word UNK_021064D0 + + arm_func_start FUN_020AEC60 +FUN_020AEC60: + ldr r0, _020AEC78 ; =UNK_021CCD4C + mov r2, #0x0 + ldr r1, [r0, #0x8] + str r2, [r0, #0x0] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AEC78: .word UNK_021CCD4C + + arm_func_start FUN_020AEC7C +FUN_020AEC7C: ; 0x020AEC7C + ldr r2, [r0, #0x0] + ldr r1, _020AEC94 ; =UNK_021CCD4C + str r2, [r1, #0x0] + ldr r0, [r0, #0x4] + str r0, [r1, #0x4] + bx lr + .balign 4 +_020AEC94: .word UNK_021CCD4C + + arm_func_start FUN_020AEC98 +FUN_020AEC98: ; 0x020AEC98 + ldr r1, _020AECB0 ; =UNK_021CCD4C + ldr r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AECB0: .word UNK_021CCD4C + + arm_func_start FUN_020AECB4 +FUN_020AECB4: ; 0x020AECB4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AECBC +FUN_020AECBC: ; 0x020AECBC + stmdb sp!, {r4,lr} + cmp r0, #0x0 + moveq r0, #0x8 + addne r0, r0, #0x7 + ldr ip, _020AEDE8 ; =0x0007FFF8 + bicne r0, r0, #0x7 + cmp r0, r12 + mov r3, #0x0 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r2, #0x1 + bne _020AED64 + ldr r2, _020AEDEC ; =UNK_021CCD4C + cmp r1, #0x0 + ldr r12, [r2, #0x0] + andne r2, r12, #0x7 + rsbne r2, r2, #0x8 + andne r4, r2, #0x7 + andeq r2, r12, #0xf + rsbeq r2, r2, #0x10 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =UNK_021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x4] + sub r2, r2, r12 + cmp r2, lr + blo _020AED5C + cmp r1, #0x0 + add r1, r12, lr + beq _020AED40 + cmp r1, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AED40: + ldr r1, _020AEDEC ; =UNK_021CCD4C + add r3, r12, r4 + ldr r2, [r1, #0x0] + mov r12, #0x1 + add r2, r2, lr + str r2, [r1, #0x0] + b _020AEDCC +_020AED5C: + mov r12, #0x0 + b _020AEDCC +_020AED64: + ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r12, [r2, #0x4] + cmp r12, r0 + blo _020AEDC8 + sub r2, r12, r0 + cmp r1, #0x0 + andne r4, r2, #0x7 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =UNK_021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x0] + sub r2, r12, r2 + cmp r2, lr + blo _020AEDC8 + cmp r1, #0x0 + beq _020AEDB0 + cmp r12, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AEDB0: + ldr r1, _020AEDEC ; =UNK_021CCD4C + mov r12, #0x1 + ldr r2, [r1, #0x4] + sub r3, r2, lr + str r3, [r1, #0x4] + b _020AEDCC +_020AEDC8: + mov r12, #0x0 +_020AEDCC: + cmp r12, #0x0 + ldrne r1, _020AEDF0 ; =0x0000FFFF + movne r2, r0, lsr #0x3 + andne r0, r1, r3, lsr #0x3 + orrne r0, r0, r2, lsl #0x10 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AEDE8: .word 0x0007FFF8 +_020AEDEC: .word UNK_021CCD4C +_020AEDF0: .word 0x0000FFFF + + arm_func_start FUN_020AEDF4 +FUN_020AEDF4: ; 0x020AEDF4 + stmdb sp!, {r4,lr} + ldr r2, _020AEE2C ; =UNK_021CCD4C + mov r4, r1 + str r0, [r2, #0x8] + bl FUN_020AEC60 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AEE30 ; =FUN_020AECBC + ldr r1, _020AEE34 ; =UNK_021064C0 + ldr r2, _020AEE38 ; =FUN_020AECB4 + ldr r0, _020AEE3C ; =UNK_021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AEE2C: .word UNK_021CCD4C +_020AEE30: .word FUN_020AECBC +_020AEE34: .word UNK_021064C0 +_020AEE38: .word FUN_020AECB4 +_020AEE3C: .word UNK_021064C4 + + arm_func_start FUN_020AEE40 +FUN_020AEE40: ; 0x020AEE40 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, _020AEEB4 ; =UNK_021CCD58 + mov r9, r0 + mov r0, r5 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020AF2F4 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r5 + bl FUN_020AEF78 + mov r4, r0 + str r9, [r4, #0x0] + str r7, [r4, #0x4] + str r8, [r4, #0x8] + mov r0, r5 + str r6, [r4, #0xc] + bl FUN_020AEF98 + ldr r2, [r5, #0x10] + ldr r1, [r4, #0xc] + mov r0, #0x1 + add r1, r2, r1 + str r1, [r5, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AEEB4: .word UNK_021CCD58 + + arm_func_start FUN_020AEEB8 +FUN_020AEEB8: ; 0x020AEEB8 + stmdb sp!, {r4-r6,lr} + ldr r6, _020AEF18 ; =UNK_021CCD58 + mov r0, r6 + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r4, r6, #0x10 +_020AEEE0: + mov r0, r5 + bl FUN_020AEFF0 + ldr r2, [r4, #0x0] + ldr r1, [r5, #0xc] + mov r0, r6 + sub r1, r2, r1 + str r1, [r4, #0x0] + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C + cmp r0, #0x0 + bne _020AEEE0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AEF18: .word UNK_021CCD58 + + arm_func_start FUN_020AEF1C +FUN_020AEF1C: ; 0x020AEF1C + ldr r2, _020AEF34 ; =UNK_021CCD58 + ldr ip, _020AEF38 ; =FUN_020AEFD4 + str r0, [r2, #0x0] + mov r0, r2 + str r1, [r2, #0x4] + bx r12 + .balign 4 +_020AEF34: .word UNK_021CCD58 +_020AEF38: .word FUN_020AEFD4 + + arm_func_start FUN_020AEF3C +FUN_020AEF3C: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2E0 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0x8] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0x8] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + sub r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AEF78 +FUN_020AEF78: ; 0x020AEF78 + ldrh r1, [r0, #0xa] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020AEF88 +FUN_020AEF88: ; 0x020AEF88 + ldrh r1, [r0, #0x8] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020AEF98 +FUN_020AEF98: ; 0x020AEF98 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2F4 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0xa] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + add r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AEFD4 +FUN_020AEFD4: ; 0x020AEFD4 + mov r2, #0x0 + strh r2, [r0, #0xa] + ldrh r1, [r0, #0xa] + strh r1, [r0, #0x8] + strh r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + + arm_func_start FUN_020AEFF0 +FUN_020AEFF0: ; 0x020AEFF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x0] + ldr r2, _020AF02C ; =UNK_020FF7D4 + ldr r0, [r5, #0x4] + ldr r1, [r5, #0xc] + ldr r4, [r2, r3, lsl #0x2] + bl DC_FlushRange + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + blx r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF02C: .word UNK_020FF7D4 |