From fd12515498ab52959748ccdabba35f9dcf2c9a32 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 24 May 2020 20:18:38 -0400 Subject: Add section defines and middleware macros --- arm9/lib/include/nitro.h | 2 ++ include/misc.h | 13 +++++++++++++ include/sections.h | 9 +++++++++ 3 files changed, 24 insertions(+) create mode 100644 include/misc.h create mode 100644 include/sections.h diff --git a/arm9/lib/include/nitro.h b/arm9/lib/include/nitro.h index f7397fb0..ffb2003b 100644 --- a/arm9/lib/include/nitro.h +++ b/arm9/lib/include/nitro.h @@ -6,6 +6,8 @@ extern "C" { #endif // Include all nitro files +#include "sections.h" +#include "misc.h" #include "types.h" #include "consts.h" #include "OS_init.h" diff --git a/include/misc.h b/include/misc.h new file mode 100644 index 00000000..c3b16292 --- /dev/null +++ b/include/misc.h @@ -0,0 +1,13 @@ +#ifndef GUARD_MISC_H +#define GUARD_MISC_H + +// specify force-link. +void OSi_ReferSymbol(void *symbol); +#define SDK_REFER_SYMBOL(symbol) OSi_ReferSymbol((void*)(symbol)) + +// for embedding middleware version string in VERSION section. +#define SDK_MIDDLEWARE_STRING(vender, module) "[SDK+" vender ":" module "]" +#define SDK_DEFINE_MIDDLEWARE(id, vender, module) static char id [] = SDK_MIDDLEWARE_STRING(vender, module) +#define SDK_USING_MIDDLEWARE(id) SDK_REFER_SYMBOL(id) + +#endif //GUARD_MISC_H diff --git a/include/sections.h b/include/sections.h new file mode 100644 index 00000000..39b0eb5a --- /dev/null +++ b/include/sections.h @@ -0,0 +1,9 @@ +#ifndef GUARD_SECTIONS_H +#define GUARD_SECTIONS_H + +#pragma define_section ITCM ".itcm" ".itcm.bss" abs32 RWX +#pragma define_section DTCM ".dtcm" ".dtcm.bss" abs32 RWX +#pragma define_section VERSION ".version" abs32 RWX +#pragma define_section PARENT ".parent" abs32 RWX + +#endif //GUARD_SECTIONS_H -- cgit v1.2.3 From fff66e78f0acbdd2a9611440f1d09b27ad5220bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 10:39:22 -0400 Subject: Split UBIQUITOUS:SSL --- arm9/arm9.lcf | 24 + arm9/asm/SSL_biginteger.s | 1136 +++ arm9/asm/SSL_md5.s | 454 + arm9/asm/SSL_rca4.s | 74 + arm9/asm/SSL_sha1.s | 655 ++ arm9/asm/SSL_ssl.s | 4250 ++++++++++ arm9/asm/libVCT.s | 11558 ++++++++++++++++++++++++++ arm9/asm/unk_020910EC.s | 18229 +---------------------------------------- arm9/global.inc | 80 +- arm9/modules/04/asm/arm_04.s | 10 +- 10 files changed, 18287 insertions(+), 18183 deletions(-) create mode 100644 arm9/asm/SSL_biginteger.s create mode 100644 arm9/asm/SSL_md5.s create mode 100644 arm9/asm/SSL_rca4.s create mode 100644 arm9/asm/SSL_sha1.s create mode 100644 arm9/asm/SSL_ssl.s create mode 100644 arm9/asm/libVCT.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 09c128ec..643ddb9f 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -431,6 +431,12 @@ SECTIONS { unk_0208AC14.o (.text) custom_allocator.o (.text) unk_020910EC.o (.text) + SSL_ssl.o (.text) + SSL_md5.o (.text) + SSL_sha1.o (.text) + SSL_rca4.o (.text) + SSL_biginteger.o (.text) + libVCT.o (.text) unk_020AF030.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) @@ -706,6 +712,12 @@ SECTIONS { unk_02089F24.o (.rodata) unk_0208A998.o (.rodata) unk_020910EC.o (.rodata) + SSL_ssl.o (.rodata) + SSL_md5.o (.rodata) + SSL_sha1.o (.rodata) + SSL_rca4.o (.rodata) + SSL_biginteger.o (.rodata) + libVCT.o (.rodata) unk_020AF030.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) @@ -760,6 +772,12 @@ SECTIONS { unk_020893E0.o (.data) unk_0208AC14.o (.data) unk_020910EC.o (.data) + SSL_ssl.o (.data) + SSL_md5.o (.data) + SSL_sha1.o (.data) + SSL_rca4.o (.data) + SSL_biginteger.o (.data) + libVCT.o (.data) unk_020AF030.o (.data) GX.o (.data) OS_irqHandler.o (.data) @@ -840,6 +858,12 @@ SECTIONS { unk_0208AC14.o (.bss) custom_allocator.o (.bss) unk_020910EC.o (.bss) + SSL_ssl.o (.bss) + SSL_md5.o (.bss) + SSL_sha1.o (.bss) + SSL_rca4.o (.bss) + SSL_biginteger.o (.bss) + libVCT.o (.bss) unk_020AF030.o (.bss) GX.o (.bss) GX_state.o (.bss) diff --git a/arm9/asm/SSL_biginteger.s b/arm9/asm/SSL_biginteger.s new file mode 100644 index 00000000..56d31636 --- /dev/null +++ b/arm9/asm/SSL_biginteger.s @@ -0,0 +1,1136 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start get48bits_1 +get48bits_1: ; 0x020A4ABC + ldrh r1, [r0, #0x0] + mov r0, #0x0 + bx lr + + arm_func_start get48bits_2 +get48bits_2: ; 0x020A4AC8 + ldrh r1, [r0, #0x0] + ldrh r0, [r0, #-0x2] + mov r0, r0, lsl #0x10 + bx lr + + arm_func_start get48bits_3 +get48bits_3: ; 0x020A4AD8 + ldrh r1, [r0, #0x0] + ldrh r2, [r0, #-0x2] + ldrh r3, [r0, #-0x4] + orr r0, r3, r2, lsl #0x10 + bx lr + + arm_func_start get64bits +get64bits: ; 0x020A4AEC + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #-0x2] + orr r1, r3, r2, lsl #0x10 + ldrh r2, [r0, #-0x4] + ldrh r3, [r0, #-0x6] + orr r0, r3, r2, lsl #0x10 + bx lr + + arm_func_start CPSi_char_from_big +CPSi_char_from_big: ; 0x020A4B08 + sub r3, r2, #0x1 + cmp r2, #0x1 + add r0, r0, r3 + ble _020A4B40 +_020A4B18: + ldrh r3, [r1, #0x0] + sub r2, r2, #0x2 + sub r12, r0, #0x1 + strb r3, [r0, #0x0] + ldrh r3, [r1], #0x2 + cmp r2, #0x1 + sub r0, r0, #0x2 + mov r3, r3, asr #0x8 + strb r3, [r12, #0x0] + bgt _020A4B18 +_020A4B40: + cmp r2, #0x0 + ldrgth r1, [r1, #0x0] + strgtb r1, [r0, #0x0] + bx lr + + arm_func_start CPSi_big_from_char +CPSi_big_from_char: ; 0x020A4B50 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r2, r3, lsl #0x1 + mov r1, #0x0 + mov r4, r0 + bl MI_CpuFill8 + sub r0, r5, #0x1 + cmp r5, #0x1 + add r6, r6, r0 + ble _020A4B9C +_020A4B7C: + ldrb r1, [r6, #0x0] + ldrb r0, [r6, #-0x1] + sub r5, r5, #0x2 + cmp r5, #0x1 + add r0, r1, r0, lsl #0x8 + strh r0, [r4], #0x2 + sub r6, r6, #0x2 + bgt _020A4B7C +_020A4B9C: + cmp r5, #0x0 + ldrgtb r0, [r6, #0x0] + strgth r0, [r4, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start CPSi_big_montpower +CPSi_big_montpower: ; 0x020A4BB0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r10, r3 + mov r3, #0x16 + mul r4, r10, r3 + ldr r3, _020A4DE0 ; =CPSiAlloc + mov r11, r0 + ldr r3, [r3, #0x0] + mov r0, r4 + ldr r9, [sp, #0x58] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + blx r3 + str r0, [sp, #0x1c] + cmp r0, #0x0 + addeq sp, sp, #0x34 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r2, r4 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + mov r1, r10 + add r6, r0, r10, lsl #0x1 + add r0, r6, r10, lsl #0x1 + add r5, r0, r10, lsl #0x1 + add r4, r5, r10, lsl #0x1 + str r0, [sp, #0x20] + add r0, r4, r10, lsl #0x1 + str r0, [sp, #0x24] + add r7, r0, r10, lsl #0x1 + mov r0, r9 + bl count_digits + mov r8, r0 + ldr r0, [sp, #0x1c] + mov r2, #0x1 + mov r1, r8, lsl #0x1 + strh r2, [r0, r1] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x0] + mov r0, r6 + mov r2, r9 + mov r3, r10 + bl CPSi_big_modinv + ldr r1, [sp, #0x1c] + mov r0, r5 + mov r2, r6 + mov r3, r10 + bl CPSi_big_mult + mov r0, r6 + mov r1, r5 + mov r2, #0x1 + mov r3, r10 + bl CPSi_big_subsmall + str r10, [sp, #0x0] + mov r0, r6 + mov r1, r6 + mov r2, r9 + mov r3, #0x0 + str r7, [sp, #0x4] + bl CPSi_big_div + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x1c] + mov r3, r10 + bl CPSi_big_mult + ldr r1, [sp, #0x20] + str r10, [sp, #0x0] + mov r0, #0x0 + mov r2, r9 + mov r3, r1 + str r7, [sp, #0x4] + bl CPSi_big_div + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + mov r0, #0x0 + mov r2, r9 + mov r3, r11 + str r7, [sp, #0x4] + bl CPSi_big_div + movs r0, r8, lsl #0x4 + mov r7, #0x0 + str r0, [sp, #0x28] + beq _020A4D9C + mov r0, #0x1 + str r0, [sp, #0x2c] + mov r0, #0x8000 + str r0, [sp, #0x30] +_020A4D14: + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x2c] + mov r0, r11 + mov r3, r10 + str r4, [sp, #0x10] + bl CPSi_big_montmult + ldr r0, [sp, #0x30] + and r1, r7, #0xf + mov r0, r0, lsr r1 + sub r1, r8, r7, asr #0x4 + sub r1, r1, #0x1 + mov r2, r1, lsl #0x1 + ldr r1, [sp, #0x18] + ldrh r1, [r1, r2] + ands r0, r0, r1 + beq _020A4D8C + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + mov r0, r11 + mov r3, r10 + str r4, [sp, #0x10] + bl CPSi_big_montmult +_020A4D8C: + ldr r0, [sp, #0x28] + add r7, r7, #0x1 + cmp r7, r0 + blo _020A4D14 +_020A4D9C: + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + mov r0, r11 + mov r3, r10 + mov r2, #0x0 + str r4, [sp, #0x10] + bl CPSi_big_montmult + ldr r1, _020A4DE4 ; =CPSiFree + ldr r0, [sp, #0x1c] + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A4DE0: .word CPSiAlloc +_020A4DE4: .word CPSiFree + + arm_func_start CPSi_big_montmult +CPSi_big_montmult: ; 0x020A4DE8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r5, r3 + mov r7, r5, lsl #0x1 + mov r8, r2 + mov r2, r7 + mov r6, r0 + mov r9, r1 + ldr r4, [sp, #0x20] + bl MI_CpuCopy8 + cmp r8, #0x1 + bne _020A4E2C + mov r0, r6 + mov r1, r9 + mov r2, r5 + bl CPSi_big_sqr + b _020A4E48 +_020A4E2C: + cmp r8, #0x0 + beq _020A4E48 + mov r0, r6 + mov r1, r9 + mov r2, r8 + mov r3, r5 + bl CPSi_big_mult +_020A4E48: + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x28] + mov r1, r6 + mov r3, r4 + bl CPSi_big_mult + sub r1, r5, r4 + ldr r0, [sp, #0x2c] + mov r8, r1, lsl #0x1 + mov r2, r8 + add r0, r0, r4, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x24] + mov r3, r5 + bl CPSi_big_mult + mov r0, r6 + mov r1, r6 + ldr r2, [sp, #0x30] + mov r3, r5 + bl CPSi_big_add + mov r2, r8 + mov r0, r6 + add r1, r6, r4, lsl #0x1 + bl memmove + add r0, r6, r5, lsl #0x1 + sub r0, r0, r4, lsl #0x1 + mov r2, r4, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + ldr r1, [sp, #0x24] + mov r2, r5 + bl CPSi_big_compare + cmp r0, #0x0 + beq _020A4EF0 + cmp r0, #0x1 + beq _020A4F0C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_020A4EF0: + mov r0, r6 + mov r2, r7 + mov r1, #0x0 + bl MI_CpuFill8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_020A4F0C: + ldr r2, [sp, #0x24] + mov r0, r6 + mov r1, r6 + mov r3, r5 + bl CPSi_big_sub + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start CPSi_big_modinv +CPSi_big_modinv: ; 0x020A4F2C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + ldr r9, [sp, #0x38] + mov r10, r3 + add r11, r9, r10, lsl #0x1 + add r8, r11, r10, lsl #0x1 + add r7, r8, r10, lsl #0x1 + add r6, r7, r10, lsl #0x1 + add r5, r6, r10, lsl #0x1 + str r0, [sp, #0x8] + mov r0, r1 + add r1, r5, r10, lsl #0x1 + str r1, [sp, #0x10] + mov r4, r10, lsl #0x1 + str r2, [sp, #0xc] + mov r1, r9 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + mov r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, #0x1 + strh r0, [r8, r4] + mov r0, r9 + mov r1, r10 + bl CPSi_big_sign + cmp r0, #0x0 + ble _020A503C +_020A4FA0: + ldr r3, [sp, #0x10] + str r10, [sp, #0x0] + str r3, [sp, #0x4] + mov r0, r11 + mov r1, r8 + mov r2, r9 + mov r3, r5 + bl CPSi_big_div + mov r0, r9 + mov r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r9 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r11 + mov r2, r7 + mov r3, r10 + bl CPSi_big_mult + mov r0, r5 + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl CPSi_big_sub + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r9 + mov r1, r10 + bl CPSi_big_sign + cmp r0, #0x0 + bgt _020A4FA0 +_020A503C: + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r6 + mov r3, r10 + bl CPSi_big_add + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + ldr r4, [sp, #0x10] + str r10, [sp, #0x0] + mov r1, r6 + mov r0, #0x0 + str r4, [sp, #0x4] + bl CPSi_big_div + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start CPSi_big_power +CPSi_big_power: ; 0x020A507C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + ldr r4, _020A5238 ; =CPSiAlloc + mov r8, r3 + ldr r3, [r4, #0x0] + mov r10, r0 + mov r0, r8, lsl #0x3 + ldr r7, [sp, #0x40] + str r1, [sp, #0x8] + mov r9, r2 + blx r3 + movs r6, r0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + sub r1, r8, #0x1 + add r0, r10, #0x2 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + add r11, r6, r8, lsl #0x1 + bl MI_CpuFill8 + mov r2, #0x1 + mov r0, r9 + mov r1, r8 + strh r2, [r10, #0x0] + bl count_digits + sub r0, r8, r0 + mov r5, r0, lsl #0x4 + mov r4, r8, lsl #0x4 + cmp r5, r4 + bhs _020A5140 + mov r0, #0x8000 +_020A50FC: + sub r1, r8, r5, asr #0x4 + sub r1, r1, #0x1 + mov r1, r1, lsl #0x1 + and r2, r5, #0xf + ldrh r1, [r9, r1] + mov r2, r0, lsr r2 + ands r1, r2, r1 + beq _020A5134 + ldr r0, [sp, #0x8] + mov r1, r10 + mov r2, r8, lsl #0x1 + bl MI_CpuCopy8 + add r5, r5, #0x1 + b _020A5140 +_020A5134: + add r5, r5, #0x1 + cmp r5, r4 + blo _020A50FC +_020A5140: + cmp r5, r4 + bhs _020A521C + mov r0, r8, lsl #0x1 + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + mov r0, #0x8000 + str r0, [sp, #0x14] +_020A5160: + mov r0, r6 + mov r1, r10 + mov r2, r8 + bl CPSi_big_sqr + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r10 + bl MI_CpuCopy8 + cmp r7, #0x0 + beq _020A51A4 + ldr r0, [sp, #0x10] + str r8, [sp, #0x0] + mov r1, r10 + mov r2, r7 + mov r3, r10 + str r11, [sp, #0x4] + bl CPSi_big_div +_020A51A4: + sub r0, r8, r5, asr #0x4 + sub r0, r0, #0x1 + mov r1, r0, lsl #0x1 + ldr r0, [sp, #0x14] + and r2, r5, #0xf + mov r2, r0, lsr r2 + ldrh r0, [r9, r1] + ands r0, r2, r0 + beq _020A5210 + ldr r2, [sp, #0x8] + mov r0, r6 + mov r1, r10 + mov r3, r8 + bl CPSi_big_mult + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r10 + bl MI_CpuCopy8 + cmp r7, #0x0 + beq _020A5210 + ldr r0, [sp, #0x10] + str r8, [sp, #0x0] + mov r1, r10 + mov r2, r7 + mov r3, r10 + str r11, [sp, #0x4] + bl CPSi_big_div +_020A5210: + add r5, r5, #0x1 + cmp r5, r4 + blo _020A5160 +_020A521C: + ldr r1, _020A523C ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5238: .word CPSiAlloc +_020A523C: .word CPSiFree + + arm_func_start CPSi_big_div +CPSi_big_div: ; 0x020A5240 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r9, [sp, #0x48] + ldr r6, [sp, #0x4c] + str r1, [sp, #0x4] + add r5, r6, r9, lsl #0x1 + str r0, [sp, #0x0] + mov r10, r2 + mov r0, r5 + mov r2, r9, lsl #0x2 + mov r1, #0x0 + str r3, [sp, #0x8] + add r4, r5, r9, lsl #0x1 + bl MI_CpuFill8 + ldr r0, [sp, #0x4] + mov r1, r9 + bl count_digits + mov r11, r0 + mov r0, r10 + mov r1, r9 + bl count_digits + mov r7, r0 + cmp r11, #0x0 + ble _020A53E8 + cmp r7, #0x0 + ble _020A53E8 + sub r0, r9, r11 + add r0, r7, r0 + sub r8, r0, #0x1 + cmp r8, r9 + blt _020A52D0 + ldr r0, [sp, #0x4] + mov r1, r4 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 + b _020A53E8 +_020A52D0: + ldr r0, [sp, #0x4] + add r1, r5, r8, lsl #0x1 + mov r2, r11, lsl #0x1 + bl MI_CpuCopy8 + cmp r7, #0x2 + ble _020A5304 + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl get48bits_3 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + b _020A5340 +_020A5304: + cmp r7, #0x1 + ble _020A5328 + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl get48bits_2 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + b _020A5340 +_020A5328: + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl get48bits_1 + str r0, [sp, #0x14] + str r1, [sp, #0x10] +_020A5340: + cmp r8, r9 + bge _020A53E8 + mov r0, r9, lsl #0x1 + sub r0, r0, #0x1 + mov r11, r0, lsl #0x1 + add r0, r4, r7 + str r0, [sp, #0x1c] +_020A535C: + mov r1, r5 + add r0, r5, #0x2 + mov r2, r11 + bl memmove + ldr r0, [sp, #0x1c] + bl get64bits + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x10] + bl _ll_udiv + mov r7, r0 + ldr r0, _020A5434 ; =0x0000FFFF + cmp r7, r0 + movhi r7, r0 +_020A5390: + mov r2, r7, lsl #0x10 + mov r0, r6 + mov r1, r10 + mov r2, r2, lsr #0x10 + mov r3, r9 + bl CPSi_big_mult_small + mov r0, r4 + mov r1, r6 + mov r2, r9 + bl CPSi_big_compare + cmp r0, #0x0 + sublt r7, r7, #0x1 + blt _020A5390 + mov r0, r4 + mov r1, r4 + mov r2, r6 + mov r3, r9 + bl CPSi_big_sub + strh r7, [r5, #0x0] + add r8, r8, #0x1 + cmp r8, r9 + blt _020A535C +_020A53E8: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _020A5404 + ldr r1, [sp, #0x0] + mov r0, r5 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 +_020A5404: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r1, [sp, #0x8] + mov r0, r4 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5434: .word 0x0000FFFF + + arm_func_start CPSi_big_sqr +CPSi_big_sqr: ; 0x020A5438 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + mov r8, r2 + mov r10, r0 + mov r0, r9 + mov r1, r8 + bl count_digits + mov r11, r0 + mov r0, r11, lsl #0x1 + cmp r0, r8 + bge _020A547C + sub r1, r8, r0 + add r0, r10, r0, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 +_020A547C: + cmp r11, #0x0 + mov r1, #0x0 + ble _020A54D4 + mov r0, r1 + sub r4, r8, #0x1 +_020A5490: + cmp r0, r8 + bge _020A54D4 + mov r2, r1, lsl #0x1 + ldrh r5, [r9, r2] + mov r2, r0, lsl #0x1 + cmp r0, r4 + mul r3, r5, r5 + strh r3, [r10, r2] + beq _020A54D4 + add r2, r0, #0x1 + add r1, r1, #0x1 + mov r3, r3, lsr #0x10 + mov r2, r2, lsl #0x1 + strh r3, [r10, r2] + cmp r1, r11 + add r0, r0, #0x2 + blt _020A5490 +_020A54D4: + cmp r11, #0x0 + mov r6, #0x0 + addle sp, sp, #0x4 + ldmleia sp!, {r4-r11,lr} + bxle lr +_020A54E8: + add r7, r6, #0x1 + b _020A5554 +_020A54F0: + mov r1, r7, lsl #0x1 + mov r0, r6, lsl #0x1 + ldrh r1, [r9, r1] + ldrh r0, [r9, r0] + mul r4, r1, r0 + ldr r0, _020A5580 ; =0x7FFF8000 + cmp r4, r0 + bhi _020A5528 + mov r0, r10 + mov r2, r5 + mov r3, r8 + mov r1, r4, lsl #0x1 + bl CPSi_big_add_part + b _020A5550 +_020A5528: + mov r0, r10 + mov r1, r4 + mov r2, r5 + mov r3, r8 + bl CPSi_big_add_part + mov r0, r10 + mov r1, r4 + mov r2, r5 + mov r3, r8 + bl CPSi_big_add_part +_020A5550: + add r7, r7, #0x1 +_020A5554: + cmp r7, r11 + bge _020A5568 + add r5, r6, r7 + cmp r5, r8 + blt _020A54F0 +_020A5568: + add r6, r6, #0x1 + cmp r6, r11 + blt _020A54E8 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5580: .word 0x7FFF8000 + + arm_func_start CPSi_big_mult_small +CPSi_big_mult_small: ; 0x020A5584 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r4, r3 + mov r7, r0 + mov r0, r6 + mov r1, r4 + mov r5, r2 + bl count_digits + mov r3, #0x0 + mov r12, r3 + cmp r0, #0x0 + ble _020A55D8 +_020A55B8: + mov r2, r12, lsl #0x1 + ldrh r1, [r6, r2] + add r12, r12, #0x1 + cmp r12, r0 + mla r1, r5, r1, r3 + strh r1, [r7, r2] + mov r3, r1, lsr #0x10 + blt _020A55B8 +_020A55D8: + cmp r12, r4 + movlt r0, r12, lsl #0x1 + addlt r12, r12, #0x1 + sub r1, r4, r12 + strlth r3, [r7, r0] + mov r2, r1, lsl #0x1 + add r0, r7, r12, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start CPSi_big_mult +CPSi_big_mult: ; 0x020A5608 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r8, r3 + mov r10, r1 + mov r9, r2 + mov r2, r8, lsl #0x1 + mov r1, #0x0 + mov r11, r0 + bl MI_CpuFill8 + mov r0, r10 + mov r1, r8 + bl count_digits + mov r5, r0 + mov r0, r9 + mov r1, r8 + bl count_digits + str r0, [sp, #0x0] + cmp r0, #0x0 + mov r7, #0x0 + addle sp, sp, #0xc + ldmleia sp!, {r4-r11,lr} + bxle lr + str r7, [sp, #0x4] +_020A5664: + ldr r6, [sp, #0x4] + sub r4, r8, r7 + b _020A5698 +_020A5670: + mov r1, r6, lsl #0x1 + mov r0, r7, lsl #0x1 + ldrh r2, [r10, r1] + ldrh r1, [r9, r0] + mov r0, r11 + mov r3, r8 + mul r1, r2, r1 + add r2, r7, r6 + bl CPSi_big_add_part + add r6, r6, #0x1 +_020A5698: + cmp r6, r5 + bge _020A56A8 + cmp r6, r4 + blt _020A5670 +_020A56A8: + ldr r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + blt _020A5664 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start CPSi_big_add_part +CPSi_big_add_part: ; 0x020A56C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + b _020A56E8 +_020A56D0: + mov lr, r2, lsl #0x1 + ldrh r12, [r0, lr] + add r2, r2, #0x1 + add r1, r1, r12 + strh r1, [r0, lr] + mov r1, r1, lsr #0x10 +_020A56E8: + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r2, r3 + blt _020A56D0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start CPSi_big_compare +CPSi_big_compare: + subs r12, r2, #0x1 + bmi _020A5740 +_020A5714: + mov r2, r12, lsl #0x1 + ldrh r3, [r1, r2] + ldrh r2, [r0, r2] + cmp r2, r3 + movhi r0, #0x1 + bxhi lr + cmp r2, r3 + mvncc r0, #0x0 + bxcc lr + subs r12, r12, #0x1 + bpl _020A5714 +_020A5740: + mov r0, #0x0 + bx lr + + arm_func_start CPSi_big_subsmall +CPSi_big_subsmall: ; 0x020A5748 + stmdb sp!, {r4,lr} + cmp r3, #0x0 + mov r4, #0x0 + ble _020A5780 +_020A5758: + mov lr, r4, lsl #0x1 + ldrh r12, [r1, lr] + sub r12, r12, r2 + mov r2, r12, lsr #0x10 + strh r12, [r0, lr] + ands r2, r2, #0x1 + beq _020A5780 + add r4, r4, #0x1 + cmp r4, r3 + blt _020A5758 +_020A5780: + cmp r0, r1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r3 + ldmgeia sp!, {r4,lr} + bxge lr +_020A579C: + mov r12, r4, lsl #0x1 + ldrh r2, [r1, r12] + add r4, r4, #0x1 + cmp r4, r3 + strh r2, [r0, r12] + blt _020A579C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start CPSi_big_sub +CPSi_big_sub: ; 0x020A57BC + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + mov r6, r2 + mov r0, r7 + mov r1, r5 + bl count_digits + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl count_digits + cmp r4, r0 + movlt r4, r0 + mov r3, #0x0 + cmp r4, r5 + addne r4, r4, #0x1 + mov r12, r3 + b _020A5828 +_020A5808: + mov r2, r12, lsl #0x1 + ldrh r1, [r7, r2] + ldrh r0, [r6, r2] + add r12, r12, #0x1 + sub r0, r1, r0 + add r0, r3, r0 + strh r0, [r8, r2] + mov r3, r0, asr #0x10 +_020A5828: + cmp r12, r4 + blt _020A5808 + cmp r12, r5 + bge _020A5840 + cmp r3, #0x0 + bne _020A5808 +_020A5840: + cmp r8, r7 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r8, r6 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r5, r12 + add r0, r8, r12, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start CPSi_big_negate +CPSi_big_negate: ; 0x020A5874 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r1 + cmp r3, #0x0 + mov r12, #0x0 + ble _020A58A8 +_020A588C: + mov r2, r12, lsl #0x1 + ldrh r1, [r0, r2] + add r12, r12, #0x1 + cmp r12, r3 + mvn r1, r1 + strh r1, [r0, r2] + blt _020A588C +_020A58A8: + mov r1, r0 + mov r2, #0x1 + bl CPSi_big_add_small + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start CPSi_big_add_small +CPSi_big_add_small: ; 0x020A58C0 + stmdb sp!, {r4,lr} + cmp r3, #0x0 + mov r4, #0x0 + ble _020A58F4 +_020A58D0: + mov lr, r4, lsl #0x1 + ldrh r12, [r1, lr] + add r2, r2, r12 + strh r2, [r0, lr] + movs r2, r2, lsr #0x10 + beq _020A58F4 + add r4, r4, #0x1 + cmp r4, r3 + blt _020A58D0 +_020A58F4: + cmp r0, r1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r3 + ldmgeia sp!, {r4,lr} + bxge lr +_020A5910: + mov r12, r4, lsl #0x1 + ldrh r2, [r1, r12] + add r4, r4, #0x1 + cmp r4, r3 + strh r2, [r0, r12] + blt _020A5910 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start CPSi_big_add +CPSi_big_add: ; 0x020A5930 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + mov r6, r2 + mov r0, r7 + mov r1, r5 + bl count_digits + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl count_digits + cmp r4, r0 + movlt r4, r0 + cmp r4, r5 + addne r4, r4, #0x1 + mov r3, #0x0 + mov r12, r3 + cmp r4, #0x0 + ble _020A59A8 +_020A5980: + mov r2, r12, lsl #0x1 + ldrh r1, [r7, r2] + ldrh r0, [r6, r2] + add r12, r12, #0x1 + cmp r12, r4 + add r0, r1, r0 + add r0, r3, r0 + strh r0, [r8, r2] + mov r3, r0, lsr #0x10 + blt _020A5980 +_020A59A8: + cmp r8, r7 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r8, r6 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r5, r12 + add r0, r8, r12, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start CPSi_big_sign +CPSi_big_sign: + stmdb sp!, {lr} + sub sp, sp, #0x4 + sub r2, r1, #0x1 + mov r2, r2, lsl #0x1 + ldrh r2, [r0, r2] + ands r2, r2, #0x8000 + addne sp, sp, #0x4 + mvnne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + bl count_digits + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start count_digits +count_digits: + b _020A5A28 +_020A5A24: + sub r1, r1, #0x1 +_020A5A28: + cmp r1, #0x0 + beq _020A5A44 + sub r2, r1, #0x1 + mov r2, r2, lsl #0x1 + ldrh r2, [r0, r2] + cmp r2, #0x0 + beq _020A5A24 +_020A5A44: + mov r0, r1 + bx lr diff --git a/arm9/asm/SSL_md5.s b/arm9/asm/SSL_md5.s new file mode 100644 index 00000000..16b6aeb4 --- /dev/null +++ b/arm9/asm/SSL_md5.s @@ -0,0 +1,454 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global itab +itab: ; 0x021062AC + .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F + .byte 0x01, 0x06, 0x0B, 0x00, 0x05, 0x0A, 0x0F, 0x04, 0x09, 0x0E, 0x03, 0x08, 0x0D, 0x02, 0x07, 0x0C + .byte 0x05, 0x08, 0x0B, 0x0E, 0x01, 0x04, 0x07, 0x0A, 0x0D, 0x00, 0x03, 0x06, 0x09, 0x0C, 0x0F, 0x02 + .byte 0x00, 0x07, 0x0E, 0x05, 0x0C, 0x03, 0x0A, 0x01, 0x08, 0x0F, 0x06, 0x0D, 0x04, 0x0B, 0x02, 0x09 + + .global padding +padding: ; 0x021062EC + .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global ktab +ktab: ; 0x0210632C + .byte 0x78, 0xA4, 0x6A, 0xD7, 0x56, 0xB7, 0xC7, 0xE8, 0xDB, 0x70, 0x20, 0x24, 0xEE, 0xCE, 0xBD, 0xC1 + .byte 0xAF, 0x0F, 0x7C, 0xF5, 0x2A, 0xC6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xA8, 0x01, 0x95, 0x46, 0xFD + .byte 0xD8, 0x98, 0x80, 0x69, 0xAF, 0xF7, 0x44, 0x8B, 0xB1, 0x5B, 0xFF, 0xFF, 0xBE, 0xD7, 0x5C, 0x89 + .byte 0x22, 0x11, 0x90, 0x6B, 0x93, 0x71, 0x98, 0xFD, 0x8E, 0x43, 0x79, 0xA6, 0x21, 0x08, 0xB4, 0x49 + .byte 0x62, 0x25, 0x1E, 0xF6, 0x40, 0xB3, 0x40, 0xC0, 0x51, 0x5A, 0x5E, 0x26, 0xAA, 0xC7, 0xB6, 0xE9 + .byte 0x5D, 0x10, 0x2F, 0xD6, 0x53, 0x14, 0x44, 0x02, 0x81, 0xE6, 0xA1, 0xD8, 0xC8, 0xFB, 0xD3, 0xE7 + .byte 0xE6, 0xCD, 0xE1, 0x21, 0xD6, 0x07, 0x37, 0xC3, 0x87, 0x0D, 0xD5, 0xF4, 0xED, 0x14, 0x5A, 0x45 + .byte 0x05, 0xE9, 0xE3, 0xA9, 0xF8, 0xA3, 0xEF, 0xFC, 0xD9, 0x02, 0x6F, 0x67, 0x8A, 0x4C, 0x2A, 0x8D + .byte 0x42, 0x39, 0xFA, 0xFF, 0x81, 0xF6, 0x71, 0x87, 0x22, 0x61, 0x9D, 0x6D, 0x0C, 0x38, 0xE5, 0xFD + .byte 0x44, 0xEA, 0xBE, 0xA4, 0xA9, 0xCF, 0xDE, 0x4B, 0x60, 0x4B, 0xBB, 0xF6, 0x70, 0xBC, 0xBF, 0xBE + .byte 0xC6, 0x7E, 0x9B, 0x28, 0xFA, 0x27, 0xA1, 0xEA, 0x85, 0x30, 0xEF, 0xD4, 0x05, 0x1D, 0x88, 0x04 + .byte 0x39, 0xD0, 0xD4, 0xD9, 0xE5, 0x99, 0xDB, 0xE6, 0xF8, 0x7C, 0xA2, 0x1F, 0x65, 0x56, 0xAC, 0xC4 + .byte 0x44, 0x22, 0x29, 0xF4, 0x97, 0xFF, 0x2A, 0x43, 0xA7, 0x23, 0x94, 0xAB, 0x39, 0xA0, 0x93, 0xFC + .byte 0xC3, 0x59, 0x5B, 0x65, 0x92, 0xCC, 0x0C, 0x8F, 0x7D, 0xF4, 0xEF, 0xFF, 0xD1, 0x5D, 0x84, 0x85 + .byte 0x4F, 0x7E, 0xA8, 0x6F, 0xE0, 0xE6, 0x2C, 0xFE, 0x14, 0x43, 0x01, 0xA3, 0xA1, 0x11, 0x08, 0x4E + .byte 0x82, 0x7E, 0x53, 0xF7, 0x35, 0xF2, 0x3A, 0xBD, 0xBB, 0xD2, 0xD7, 0x2A, 0x91, 0xD3, 0x86, 0xEB + + .section .text + + arm_func_start CPSi_md5_result +CPSi_md5_result: ; 0x020A3A58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + add r1, r5, #0x10 + mov r2, #0x8 + bl char_from_long + ldr r0, [r5, #0x10] + ldr r1, _020A3AC8 ; =padding + mov r0, r0, lsr #0x3 + and r0, r0, #0x3f + cmp r0, #0x38 + rsblt r2, r0, #0x38 + rsbge r2, r0, #0x78 + mov r0, r5 + bl CPSi_md5_calc + mov r0, r5 + mov r1, r4 + mov r2, #0x8 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x10 + bl char_from_long + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A3AC8: .word padding + + arm_func_start CPSi_md5_calc +CPSi_md5_calc: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r3, [r8, #0x10] + mov r6, r2 + add r0, r3, r6, lsl #0x3 + str r0, [r8, #0x10] + ldr r0, [r8, #0x10] + mov r2, r3, lsr #0x3 + cmp r0, r6, lsl #0x3 + ldrcc r0, [r8, #0x14] + and r4, r2, #0x3f + addcc r0, r0, #0x1 + strcc r0, [r8, #0x14] + ldr r0, [r8, #0x14] + rsb r5, r4, #0x40 + add r0, r0, r6, lsr #0x1d + mov r7, r1 + str r0, [r8, #0x14] + cmp r6, r5 + blo _020A3B6C + add r1, r8, #0x18 + mov r0, r7 + mov r2, r5 + add r1, r1, r4 + bl MI_CpuCopy8 + mov r0, r8 + add r1, r8, #0x18 + mov r4, #0x0 + bl CPSi_md5_block + add r0, r5, #0x3f + cmp r0, r6 + bhs _020A3B70 +_020A3B4C: + mov r0, r8 + add r1, r7, r5 + bl CPSi_md5_block + add r5, r5, #0x40 + add r0, r5, #0x3f + cmp r0, r6 + blo _020A3B4C + b _020A3B70 +_020A3B6C: + mov r5, #0x0 +_020A3B70: + add r1, r8, #0x18 + add r0, r7, r5 + add r1, r1, r4 + sub r2, r6, r5 + bl MI_CpuCopy8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start CPSi_md5_init +CPSi_md5_init: ; 0x020A3B8C + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x58 + mov r4, r0 + bl MI_CpuFill8 + ldr r1, _020A3BC8 ; =0x67452301 + ldr r0, _020A3BCC ; =0xEFCDAB89 + str r1, [r4, #0x0] + ldr r1, _020A3BD0 ; =0x98BADCFE + str r0, [r4, #0x4] + ldr r0, _020A3BD4 ; =0x10325476 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A3BC8: .word 0x67452301 +_020A3BCC: .word 0xEFCDAB89 +_020A3BD0: .word 0x98BADCFE +_020A3BD4: .word 0x10325476 + + arm_func_start CPSi_md5_block +CPSi_md5_block: ; 0x020A3BD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + str r0, [sp, #0x0] + ldr r3, [sp, #0x0] + add r0, sp, #0x4 + mov r2, #0x40 + ldr r7, [r3, #0x0] + ldr r6, [r3, #0x4] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + bl long_from_char + ldr r2, _020A4024 ; =itab + mov r3, #0x0 + ldr r1, _020A4028 ; =ktab + mov r11, r3 + add r0, sp, #0x4 + mov r10, r2 +_020A3C1C: + ldrb r9, [r2, #0x0] + add r8, r3, #0x1 + eor r12, r5, r4 + and r12, r6, r12 + eor r12, r4, r12 + ldr r9, [r0, r9, lsl #0x2] + ldr lr, [r1, r3, lsl #0x2] + add r9, r12, r9 + add r9, lr, r9 + add r9, r7, r9 + mov r7, r9, lsl #0x7 + orr r7, r7, r9, lsr #0x19 + ldrb r9, [r10, r8] + add r7, r6, r7 + ldr r8, [r1, r8, lsl #0x2] + ldr r9, [r0, r9, lsl #0x2] + eor r12, r6, r5 + and r12, r7, r12 + eor r12, r5, r12 + add r9, r12, r9 + add r9, r8, r9 + add r8, r3, #0x2 + add r9, r4, r9 + mov r4, r9, lsl #0xc + orr r4, r4, r9, lsr #0x14 + add r4, r7, r4 + ldr r9, [r1, r8, lsl #0x2] + ldrb r12, [r10, r8] + eor r8, r7, r6 + and r8, r4, r8 + eor r8, r6, r8 + ldr lr, [r0, r12, lsl #0x2] + add r12, r3, #0x3 + add r8, r8, lr + add r8, r9, r8 + add r8, r5, r8 + mov r5, r8, lsl #0x11 + orr r5, r5, r8, lsr #0xf + add r5, r4, r5 + ldr r9, [r1, r12, lsl #0x2] + ldrb r12, [r10, r12] + eor r8, r4, r7 + and r8, r5, r8 + eor r8, r7, r8 + ldr r12, [r0, r12, lsl #0x2] + add r2, r2, #0x4 + add r8, r8, r12 + add r8, r9, r8 + add r8, r6, r8 + mov r6, r8, lsl #0x16 + orr r6, r6, r8, lsr #0xa + add r6, r5, r6 + add r3, r3, #0x4 + add r11, r11, #0x1 + cmp r11, #0x4 + blt _020A3C1C + add r8, r10, r3 + mov r2, #0x0 + ldr r1, _020A4028 ; =ktab + add r0, sp, #0x4 + ldr lr, _020A4024 ; =itab +_020A3D10: + ldrb r10, [r8, #0x0] + add r9, r3, #0x1 + eor r11, r6, r5 + and r11, r4, r11 + eor r11, r5, r11 + ldr r10, [r0, r10, lsl #0x2] + ldr r12, [r1, r3, lsl #0x2] + add r10, r11, r10 + add r10, r12, r10 + add r10, r7, r10 + mov r7, r10, lsl #0x5 + orr r7, r7, r10, lsr #0x1b + ldrb r10, [lr, r9] + add r7, r6, r7 + ldr r9, [r1, r9, lsl #0x2] + ldr r10, [r0, r10, lsl #0x2] + eor r11, r7, r6 + and r11, r5, r11 + eor r11, r6, r11 + add r10, r11, r10 + add r10, r9, r10 + add r9, r3, #0x2 + add r10, r4, r10 + mov r4, r10, lsl #0x9 + orr r4, r4, r10, lsr #0x17 + add r4, r7, r4 + ldr r12, [r1, r9, lsl #0x2] + ldrb r9, [lr, r9] + eor r10, r4, r7 + and r10, r6, r10 + eor r11, r7, r10 + ldr r10, [r0, r9, lsl #0x2] + add r9, r3, #0x3 + add r10, r11, r10 + add r10, r12, r10 + add r10, r5, r10 + mov r5, r10, lsl #0xe + orr r5, r5, r10, lsr #0x12 + add r5, r4, r5 + ldr r10, [r1, r9, lsl #0x2] + ldrb r11, [lr, r9] + eor r9, r5, r4 + and r9, r7, r9 + eor r9, r4, r9 + ldr r11, [r0, r11, lsl #0x2] + add r8, r8, #0x4 + add r9, r9, r11 + add r9, r10, r9 + add r9, r6, r9 + mov r6, r9, lsl #0x14 + orr r6, r6, r9, lsr #0xc + add r6, r5, r6 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020A3D10 + add r8, lr, r3 + mov lr, #0x0 + ldr r2, _020A4028 ; =ktab + add r0, sp, #0x4 +_020A3E00: + ldrb r1, [r8, #0x0] + eor r12, r6, r5 + add lr, lr, #0x1 + ldr r11, [r0, r1, lsl #0x2] + eor r12, r4, r12 + ldr r1, [r2, r3, lsl #0x2] + add r11, r12, r11 + add r1, r1, r11 + add r7, r7, r1 + mov r1, r7, lsl #0x4 + orr r1, r1, r7, lsr #0x1c + add r7, r6, r1 + add r10, r3, #0x1 + ldr r1, _020A4024 ; =itab + ldr r12, [r2, r10, lsl #0x2] + ldrb r1, [r1, r10] + eor r10, r7, r6 + eor r11, r5, r10 + ldr r10, [r0, r1, lsl #0x2] + add r9, r3, #0x2 + add r10, r11, r10 + add r10, r12, r10 + add r4, r4, r10 + ldr sl, _020A4024 ; =itab + ldr r1, [r2, r9, lsl #0x2] + ldrb r9, [r10, r9] + mov r10, r4, lsl #0xb + orr r4, r10, r4, lsr #0x15 + add r4, r7, r4 + eor r10, r4, r7 + ldr r9, [r0, r9, lsl #0x2] + eor r10, r6, r10 + add r9, r10, r9 + add r1, r1, r9 + add r5, r5, r1 + add r10, r3, #0x3 + ldr sb, _020A4024 ; =itab + mov r1, r5, lsl #0x10 + ldrb r9, [r9, r10] + orr r1, r1, r5, lsr #0x10 + add r5, r4, r1 + ldr r1, [r2, r10, lsl #0x2] + eor r10, r5, r4 + ldr r9, [r0, r9, lsl #0x2] + eor r10, r7, r10 + add r9, r10, r9 + add r1, r1, r9 + add r6, r6, r1 + mov r1, r6, lsl #0x17 + orr r1, r1, r6, lsr #0x9 + add r8, r8, #0x4 + add r6, r5, r1 + add r3, r3, #0x4 + cmp lr, #0x4 + blt _020A3E00 + ldr r0, _020A4024 ; =itab + ldr r1, _020A4028 ; =ktab + add r8, r0, r3 + ldr lr, _020A4024 ; =itab + mov r2, #0x0 + add r0, sp, #0x4 +_020A3EF4: + ldrb r10, [r8, #0x0] + add r9, r3, #0x1 + mvn r11, r4 + orr r11, r6, r11 + eor r11, r5, r11 + ldr r10, [r0, r10, lsl #0x2] + ldr r12, [r1, r3, lsl #0x2] + add r10, r11, r10 + add r10, r12, r10 + add r10, r7, r10 + mov r7, r10, lsl #0x6 + orr r7, r7, r10, lsr #0x1a + ldrb r10, [lr, r9] + add r7, r6, r7 + ldr r9, [r1, r9, lsl #0x2] + ldr r10, [r0, r10, lsl #0x2] + mvn r11, r5 + orr r11, r7, r11 + eor r11, r6, r11 + add r10, r11, r10 + add r10, r9, r10 + add r9, r3, #0x2 + add r10, r4, r10 + mov r4, r10, lsl #0xa + orr r4, r4, r10, lsr #0x16 + add r4, r7, r4 + ldr r12, [r1, r9, lsl #0x2] + ldrb r9, [lr, r9] + mvn r10, r6 + orr r10, r4, r10 + eor r11, r7, r10 + ldr r10, [r0, r9, lsl #0x2] + add r9, r3, #0x3 + add r10, r11, r10 + add r10, r12, r10 + add r10, r5, r10 + mov r5, r10, lsl #0xf + orr r5, r5, r10, lsr #0x11 + add r5, r4, r5 + ldr r10, [r1, r9, lsl #0x2] + ldrb r11, [lr, r9] + mvn r9, r7 + orr r9, r5, r9 + eor r9, r4, r9 + ldr r11, [r0, r11, lsl #0x2] + add r8, r8, #0x4 + add r9, r9, r11 + add r9, r10, r9 + add r9, r6, r9 + mov r6, r9, lsl #0x15 + orr r6, r6, r9, lsr #0xb + add r6, r5, r6 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020A3EF4 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r1, r0, r7 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [r0, #0x4] + add r1, r0, r6 + ldr r0, [sp, #0x0] + str r1, [r0, #0x4] + ldr r0, [r0, #0x8] + add r1, r0, r5 + ldr r0, [sp, #0x0] + str r1, [r0, #0x8] + ldr r0, [r0, #0xc] + add r1, r0, r4 + ldr r0, [sp, #0x0] + str r1, [r0, #0xc] + add sp, sp, #0x44 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A4024: .word itab +_020A4028: .word ktab + + arm_func_start long_from_char +long_from_char: ; 0x020A402C + ldr ip, _020A4040 ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx r12 + .balign 4 +_020A4040: .word MI_CpuCopy8 + + arm_func_start char_from_long +char_from_long: ; 0x020A4044 + ldr ip, _020A4058 ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx r12 + .balign 4 +_020A4058: .word MI_CpuCopy8 diff --git a/arm9/asm/SSL_rca4.s b/arm9/asm/SSL_rca4.s new file mode 100644 index 00000000..9dfc9402 --- /dev/null +++ b/arm9/asm/SSL_rca4.s @@ -0,0 +1,74 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + arm_func_start CPSi_rc4_crypt +CPSi_rc4_crypt: ; 0x020A49CC + stmdb sp!, {r4-r6,lr} + cmp r2, #0x0 + add r3, r0, #0x2 + ldrb lr, [r0, #0x0] + ldrb r12, [r0, #0x1] + mov r4, #0x0 + ble _020A4A2C +_020A49E8: + add r5, lr, #0x1 + and lr, r5, #0xff + ldrb r6, [r3, lr] + add r5, r12, r6 + and r12, r5, #0xff + ldrb r5, [r3, r12] + strb r5, [r3, lr] + add r5, r6, r5 + strb r6, [r3, r12] + and r5, r5, #0xff + ldrb r6, [r1, r4] + ldrb r5, [r3, r5] + eor r5, r6, r5 + strb r5, [r1, r4] + add r4, r4, #0x1 + cmp r4, r2 + blt _020A49E8 +_020A4A2C: + strb lr, [r0, #0x0] + strb r12, [r0, #0x1] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start CPSi_rc4_init +CPSi_rc4_init: ; 0x020A4A3C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r3, #0x0 + strb r3, [r0, #0x0] + strb r3, [r0, #0x1] + add r7, r0, #0x2 +_020A4A54: + strb r3, [r7, r3] + add r3, r3, #0x1 + cmp r3, #0x100 + blt _020A4A54 + mov r5, #0x0 + mov r6, r5 + mov r4, r5 + mov r0, r5 +_020A4A74: + ldrb lr, [r7, r4] + ldrb r12, [r1, r5] + add r3, r5, #0x1 + and r5, r3, #0xff + add r3, lr, r12 + add r3, r6, r3 + and r6, r3, #0xff + ldrb r3, [r7, r6] + cmp r5, r2 + movge r5, r0 + strb r3, [r7, r4] + add r4, r4, #0x1 + strb lr, [r7, r6] + cmp r4, #0x100 + blt _020A4A74 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr diff --git a/arm9/asm/SSL_sha1.s b/arm9/asm/SSL_sha1.s new file mode 100644 index 00000000..721ad80d --- /dev/null +++ b/arm9/asm/SSL_sha1.s @@ -0,0 +1,655 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global ssl_sha1_padding +ssl_sha1_padding: ; 0x0210642C + .byte 0x80 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .text + + arm_func_start CPSi_sha1_result_prng +CPSi_sha1_result_prng: ; 0x020A405C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r1, _020A4094 ; =ssl_sha1_padding+1 + mov r5, r0 + mov r2, #0x2c + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl ssl_sha1_char_from_long + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A4094: .word ssl_sha1_padding+1 + + arm_func_start CPSi_sha1_result +CPSi_sha1_result: ; 0x020A4098 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + add r1, r5, #0x14 + mov r2, #0x8 + bl ssl_sha1_char_from_long + ldr r0, [r5, #0x18] + ldr r1, _020A4108 ; =ssl_sha1_padding + mov r0, r0, lsr #0x3 + and r0, r0, #0x3f + cmp r0, #0x38 + rsblt r2, r0, #0x38 + rsbge r2, r0, #0x78 + mov r0, r5 + bl CPSi_sha1_calc + mov r0, r5 + mov r1, r4 + mov r2, #0x8 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl ssl_sha1_char_from_long + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A4108: .word ssl_sha1_padding + + arm_func_start CPSi_sha1_calc +CPSi_sha1_calc: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r3, [r8, #0x18] + mov r6, r2 + add r0, r3, r6, lsl #0x3 + str r0, [r8, #0x18] + ldr r0, [r8, #0x18] + mov r2, r3, lsr #0x3 + cmp r0, r6, lsl #0x3 + ldrcc r0, [r8, #0x14] + and r4, r2, #0x3f + addcc r0, r0, #0x1 + strcc r0, [r8, #0x14] + ldr r0, [r8, #0x14] + rsb r5, r4, #0x40 + add r0, r0, r6, lsr #0x1d + mov r7, r1 + str r0, [r8, #0x14] + cmp r6, r5 + blo _020A41AC + add r1, r8, #0x1c + mov r0, r7 + mov r2, r5 + add r1, r1, r4 + bl MI_CpuCopy8 + mov r0, r8 + add r1, r8, #0x1c + mov r4, #0x0 + bl CPSi_sha1_block + add r0, r5, #0x3f + cmp r0, r6 + bhs _020A41B0 +_020A418C: + mov r0, r8 + add r1, r7, r5 + bl CPSi_sha1_block + add r5, r5, #0x40 + add r0, r5, #0x3f + cmp r0, r6 + blo _020A418C + b _020A41B0 +_020A41AC: + mov r5, #0x0 +_020A41B0: + add r1, r8, #0x1c + add r0, r7, r5 + add r1, r1, r4 + sub r2, r6, r5 + bl MI_CpuCopy8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start CPSi_sha1_init +CPSi_sha1_init: ; 0x020A41CC + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x5c + mov r4, r0 + bl MI_CpuFill8 + ldr r0, _020A4210 ; =0x67452301 + ldr r1, _020A4214 ; =0xEFCDAB89 + str r0, [r4, #0x0] + ldr r0, _020A4218 ; =0x98BADCFE + str r1, [r4, #0x4] + ldr r1, _020A421C ; =0x10325476 + str r0, [r4, #0x8] + ldr r0, _020A4220 ; =0xC3D2E1F0 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A4210: .word 0x67452301 +_020A4214: .word 0xEFCDAB89 +_020A4218: .word 0x98BADCFE +_020A421C: .word 0x10325476 +_020A4220: .word 0xC3D2E1F0 + + arm_func_start CPSi_sha1_block +CPSi_sha1_block: ; 0x020A4224 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + str r0, [sp, #0x0] + ldr r3, [sp, #0x0] + add r0, sp, #0x10 + mov r2, #0x40 + ldr r6, [r3, #0x0] + ldr r7, [r3, #0x4] + ldr r8, [r3, #0x8] + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + bl ssl_sha1_long_from_char + mov r2, #0x0 + ldr r3, _020A48BC ; =0x5A827999 + mov r0, r2 + add r1, sp, #0x10 +_020A4264: + eor r9, r8, r5 + mov r10, r6, lsl #0x5 + and r9, r7, r9 + orr r10, r10, r6, lsr #0x1b + eor r9, r5, r9 + mov r11, r7, lsl #0x1e + orr r7, r11, r7, lsr #0x2 + eor r11, r7, r8 + add r9, r10, r9 + ldr r12, [r1, r2, lsl #0x2] + and r10, r6, r11 + add r9, r12, r9 + add r9, r9, r3 + add r4, r4, r9 + add r9, r2, #0x1 + ldr r9, [r1, r9, lsl #0x2] + eor r10, r8, r10 + mov r11, r4, lsl #0x5 + orr r11, r11, r4, lsr #0x1b + add r10, r11, r10 + add r10, r9, r10 + mov r9, r6, lsl #0x1e + add r10, r10, r3 + add r5, r5, r10 + orr r6, r9, r6, lsr #0x2 + add r9, r2, #0x2 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r5, lsl #0x5 + orr r9, r9, r5, lsr #0x1b + eor r11, r6, r7 + and r11, r4, r11 + eor r11, r7, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r8, r8, r9 + mov r9, r4, lsl #0x1e + orr r4, r9, r4, lsr #0x2 + add r9, r2, #0x3 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r8, lsl #0x5 + orr r9, r9, r8, lsr #0x1b + eor r11, r4, r6 + and r11, r5, r11 + eor r11, r6, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r7, r7, r9 + mov r9, r5, lsl #0x1e + orr r5, r9, r5, lsr #0x2 + add r9, r2, #0x4 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r7, lsl #0x5 + orr r9, r9, r7, lsr #0x1b + eor r11, r5, r4 + and r11, r8, r11 + eor r11, r4, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r6, r6, r9 + mov r9, r8, lsl #0x1e + orr r8, r9, r8, lsr #0x2 + add r2, r2, #0x5 + add r0, r0, #0x1 + cmp r0, #0x3 + blt _020A4264 + eor r0, r8, r5 + mov r2, r6, lsl #0x5 + and r0, r7, r0 + orr r3, r2, r6, lsr #0x1b + eor r0, r5, r0 + add r3, r3, r0 + ldr r9, [sp, #0x4c] + ldr r0, _020A48BC ; =0x5A827999 + add r3, r9, r3 + add r3, r3, r0 + mov r2, r7, lsl #0x1e + orr r9, r2, r7, lsr #0x2 + mov r0, #0x0 + add r4, r4, r3 + bl R + eor r1, r9, r8 + mov r3, r4, lsl #0x5 + and r1, r6, r1 + mov r2, r6, lsl #0x1e + orr r3, r3, r4, lsr #0x1b + eor r1, r8, r1 + add r1, r3, r1 + add r3, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + add r1, sp, #0x10 + add r3, r3, r0 + orr r10, r2, r6, lsr #0x2 + mov r0, #0x1 + add r5, r5, r3 + bl R + eor r1, r10, r9 + mov r2, r5, lsl #0x5 + and r1, r4, r1 + orr r2, r2, r5, lsr #0x1b + eor r1, r9, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r4, lsl #0x1e + add r0, r2, r0 + orr r6, r1, r4, lsr #0x2 + add r8, r8, r0 + add r1, sp, #0x10 + mov r0, #0x2 + bl R + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r6, r10 + and r1, r5, r1 + eor r1, r10, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r5, lsl #0x1e + add r0, r2, r0 + orr r7, r1, r5, lsr #0x2 + add r9, r9, r0 + mov r0, #0x3 + add r1, sp, #0x10 + bl R + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r7, r6 + and r1, r8, r1 + eor r1, r6, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r8, lsl #0x1e + add r0, r2, r0 + add r10, r10, r0 + mov r0, #0x0 + ldr r4, _020A48C0 ; =0x6ED9EBA1 + orr r8, r1, r8, lsr #0x2 + mov r5, #0x4 + str r0, [sp, #0xc] + add r11, sp, #0x10 +_020A44A8: + mov r0, r5 + mov r1, r11 + bl R + mov r2, r10, lsl #0x5 + eor r1, r9, r8 + orr r2, r2, r10, lsr #0x1b + eor r1, r7, r1 + add r1, r2, r1 + add r0, r1, r0 + add r1, r0, r4 + mov r0, r9, lsl #0x1e + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl R + mov r1, r6, lsl #0x5 + orr r2, r1, r6, lsr #0x1b + eor r1, r10, r9 + eor r1, r8, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl R + mov r1, r7, lsl #0x5 + orr r2, r1, r7, lsr #0x1b + eor r1, r6, r10 + eor r1, r9, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl R + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r7, r6 + eor r1, r10, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl R + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r8, r7 + eor r1, r6, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0xc] + add r5, r5, #0x3 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, #0x4 + blt _020A44A8 + mov r0, #0x0 + ldr r4, _020A48C4 ; =0x8F1BBCDC + str r0, [sp, #0x8] + add r11, sp, #0x10 +_020A45DC: + mov r0, r5 + mov r1, r11 + bl R + orr r2, r8, r7 + mov r1, r10, lsl #0x5 + and r3, r9, r2 + and r2, r8, r7 + orr r1, r1, r10, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r1, r1, r0 + mov r0, r9, lsl #0x1e + add r1, r1, r4 + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl R + orr r2, r9, r8 + mov r1, r6, lsl #0x5 + and r3, r10, r2 + and r2, r9, r8 + orr r1, r1, r6, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl R + orr r2, r10, r9 + mov r1, r7, lsl #0x5 + and r3, r6, r2 + and r2, r10, r9 + orr r1, r1, r7, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x3 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl R + orr r2, r6, r10 + mov r1, r8, lsl #0x5 + and r3, r7, r2 + and r2, r6, r10 + orr r1, r1, r8, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl R + orr r2, r7, r6 + mov r1, r9, lsl #0x5 + and r3, r8, r2 + and r2, r7, r6 + orr r1, r1, r9, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0x8] + add r5, r5, #0x2 + add r0, r0, #0x1 + str r0, [sp, #0x8] + cmp r0, #0x4 + blt _020A45DC + mov r0, #0x0 + ldr r4, _020A48C8 ; =0xCA62C1D6 + str r0, [sp, #0x4] + add r11, sp, #0x10 +_020A4738: + mov r0, r5 + mov r1, r11 + bl R + mov r2, r10, lsl #0x5 + eor r1, r9, r8 + orr r2, r2, r10, lsr #0x1b + eor r1, r7, r1 + add r1, r2, r1 + add r0, r1, r0 + add r1, r0, r4 + mov r0, r9, lsl #0x1e + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl R + mov r1, r6, lsl #0x5 + orr r2, r1, r6, lsr #0x1b + eor r1, r10, r9 + eor r1, r8, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl R + mov r1, r7, lsl #0x5 + orr r2, r1, r7, lsr #0x1b + eor r1, r6, r10 + eor r1, r9, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x3 + mov r1, r11 + bl R + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r7, r6 + eor r1, r10, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x4 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl R + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r8, r7 + eor r1, r6, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0x4] + add r5, r5, #0x1 + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x4 + blt _020A4738 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r1, r0, r10 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [r0, #0x4] + add r1, r0, r9 + ldr r0, [sp, #0x0] + str r1, [r0, #0x4] + ldr r0, [r0, #0x8] + add r1, r0, r8 + ldr r0, [sp, #0x0] + str r1, [r0, #0x8] + ldr r0, [r0, #0xc] + add r1, r0, r7 + ldr r0, [sp, #0x0] + str r1, [r0, #0xc] + ldr r0, [r0, #0x10] + add r1, r0, r6 + ldr r0, [sp, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x54 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A48BC: .word 0x5A827999 +_020A48C0: .word 0x6ED9EBA1 +_020A48C4: .word 0x8F1BBCDC +_020A48C8: .word 0xCA62C1D6 + + arm_func_start ssl_sha1_long_from_char +ssl_sha1_long_from_char: ; 0x020A48CC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + addls sp, sp, #0x4 + mov r3, #0x0 + ldmlsia sp!, {r4-r5,lr} + bxls lr +_020A48E8: + add r12, r3, #0x1 + ldrb lr, [r1, r3] + add r4, r3, #0x2 + add r5, r3, #0x3 + ldrb r12, [r1, r12] + mov lr, lr, lsl #0x18 + add r3, r3, #0x4 + ldrb r4, [r1, r4] + orr r12, lr, r12, lsl #0x10 + ldrb lr, [r1, r5] + orr r4, r12, r4, lsl #0x8 + cmp r3, r2 + orr r4, lr, r4 + str r4, [r0], #0x4 + blo _020A48E8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start ssl_sha1_char_from_long +ssl_sha1_char_from_long: ; 0x020A4930 + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r12, r2, lsr #0x2 + mov lr, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr +_020A494C: + ldr r3, [r1], #0x4 + add lr, lr, #0x1 + mov r2, r3, lsr #0x18 + strb r2, [r0, #0x0] + mov r2, r3, lsr #0x10 + strb r2, [r0, #0x1] + mov r2, r3, lsr #0x8 + strb r2, [r0, #0x2] + strb r3, [r0, #0x3] + cmp lr, r12 + add r0, r0, #0x4 + blo _020A494C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start R +R: ; 0x020A4988 + add r2, r0, #0xd + add r12, r0, #0x2 + and r3, r2, #0xf + eor r2, r0, #0x8 + and r12, r12, #0xf + ldr r3, [r1, r3, lsl #0x2] + ldr r2, [r1, r2, lsl #0x2] + ldr r12, [r1, r12, lsl #0x2] + eor r2, r3, r2 + ldr r3, [r1, r0, lsl #0x2] + eor r2, r12, r2 + eor r3, r3, r2 + mov r2, r3, lsl #0x1 + orr r2, r2, r3, lsr #0x1f + str r2, [r1, r0, lsl #0x2] + ldr r0, [r1, r0, lsl #0x2] + bx lr diff --git a/arm9/asm/SSL_ssl.s b/arm9/asm/SSL_ssl.s new file mode 100644 index 00000000..af10aec2 --- /dev/null +++ b/arm9/asm/SSL_ssl.s @@ -0,0 +1,4250 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global pairlist +pairlist: ; 0x0210623C + .byte 0x04, 0x00, 0x05, 0x00 + + .global UNK_02106240 +UNK_02106240: ; 0x02106240 + .byte 0xFF, 0xFF, 0xFF, 0x00 + + .global ssl_handshake_priority +ssl_handshake_priority: ; 0x02106244 + .byte 0xFF, 0xFF, 0xFF, 0xFF + + .global UNK_02106248 +UNK_02106248: ; 0x02106248 + .byte 0x55, 0x04, 0x03, 0x00 + + .global UNK_0210624C +UNK_0210624C: ; 0x0210624C + .byte 0x55, 0x08, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106254 +UNK_02106254: ; 0x02106254 + .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 + + .global UNK_02106260 +UNK_02106260: ; 0x02106260 + .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 + + .global UNK_0210626C +UNK_0210626C: ; 0x0210626C + .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 + + .global object +object: ; 0x02106278 + .word UNK_02106240 + .word UNK_02106254 + .word UNK_0210624C + .word UNK_02106260 + .word UNK_0210626C + .word UNK_02106248 + + .global UNK_02106290 +UNK_02106290: ; 0x02106290 + .byte 0x53, 0x52, 0x56, 0x52, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106298 +UNK_02106298: ; 0x02106298 + .byte 0x43, 0x4C, 0x4E, 0x54, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021062A0 +UNK_021062A0: ; 0x021062A0 + .byte 0x41, 0x00, 0x00, 0x00 + + .global UNK_021062A4 +UNK_021062A4: ; 0x021062A4 + .byte 0x42, 0x42, 0x00, 0x00 + + .global UNK_021062A8 +UNK_021062A8: ; 0x021062A8 + .byte 0x43, 0x43, 0x43, 0x00 + + .section .bss + + .global CPSiAlloc +CPSiAlloc: ; 0x021C8EC8 + .space 0x4 + + .global UNK_021C8ECC +UNK_021C8ECC: ; 0x021C8ECC + .space 0x4 + + .global UNK_021C8ED0 +UNK_021C8ED0: ; 0x021C8ED0 + .space 0x4 + + .global UNK_021C8ED4 +UNK_021C8ED4: ; 0x021C8ED4 + .space 0x4 + + .global UNK_021C8ED8 +UNK_021C8ED8: ; 0x021C8ED8 + .space 0x4 + + .global UNK_021C8EDC +UNK_021C8EDC: ; 0x021C8EDC + .space 0x4 + + .global UNK_021C8EE0 +UNK_021C8EE0: ; 0x021C8EE0 + .space 0x4 + + .global UNK_021C8EE4 +UNK_021C8EE4: ; 0x021C8EE4 + .space 0x4 + + .global UNK_021C8EE8 +UNK_021C8EE8: ; 0x021C8EE8 + .space 0x4 + + .global UNK_021C8EEC +UNK_021C8EEC: ; 0x021C8EEC + .space 0x4 + + .global UNK_021C8EF0 +UNK_021C8EF0: ; 0x021C8EF0 + .space 0x4 + + .global CPSiFree +CPSiFree: ; 0x021C8EF4 + .space 0x4 + + .global UNK_021C8EF8 +UNK_021C8EF8: ; 0x021C8EF8 + .space 0x4 + + .global UNK_021C8EFC +UNK_021C8EFC: ; 0x021C8EFC + .space 0x4 + + .global UNK_021C8F00 +UNK_021C8F00: ; 0x021C8F00 + .space 0x4 + + .global UNK_021C8F04 +UNK_021C8F04: ; 0x021C8F04 + .space 0x4 + + .global UNK_021C8F08 +UNK_021C8F08: ; 0x021C8F08 + .space 0x4 + + .global UNK_021C8F0C +UNK_021C8F0C: ; 0x021C8F0C + .space 0x4 + + .global UNK_021C8F10 +UNK_021C8F10: ; 0x021C8F10 + .space 0x4 + + .global UNK_021C8F14 +UNK_021C8F14: ; 0x021C8F14 + .space 0x8 + + .global UNK_021C8F1C +UNK_021C8F1C: ; 0x021C8F1C + .space 0x8 + + .global CPSiRand32ctx +CPSiRand32ctx: ; 0x021C8F24 + .space 0x3a + + .global UNK_021C8F5E +UNK_021C8F5E: ; 0x021C8F5E + .space 0x1a + + .global UNK_021C8F78 +UNK_021C8F78: ; 0x021C8F78 + .space 0xa + + .global UNK_021C8F82 +UNK_021C8F82: ; 0x021C8F82 + .space 0x56 + + .global UNK_021C8FD8 +UNK_021C8FD8: ; 0x021C8FD8 + .space 0x64 + + .global UNK_021C903C +UNK_021C903C: ; 0x021C903C + .space 0x64 + + .global UNK_021C90A0 +UNK_021C90A0: ; 0x021C90A0 + .space 0xc0 + + .global UNK_021C9160 +UNK_021C9160: ; 0x021C9160 + .space 0xc0 + + .global UNK_021C9220 +UNK_021C9220: ; 0x021C9220 + .space 0x2a + + .global UNK_021C924A +UNK_021C924A: ; 0x021C924A + .space 0x156 + + .global UNK_021C93A0 +UNK_021C93A0: ; 0x021C93A0 + .space 0x180 + + .global UNK_021C9520 +UNK_021C9520: ; 0x021C9520 + .space 0x9c0 + + .global UNK_021C9EE0 +UNK_021C9EE0: ; 0x021C9EE0 + .space 0x800 + + .global pool_initialized +pool_initialized: ; 0x021CA6E0 + .space 0x4 + + .global UNK_021CA6E4 +UNK_021CA6E4: ; 0x021CA6E4 + .space 0x4 + + .global pool +pool: ; 0x021CA6E8 + .space 0x14 + + .global session +session: ; 0x021CA6FC + .space 0x170 + + .section .text + + arm_func_start CPSi_SslCleanup +CPSi_SslCleanup: ; 0x020A01E0 + ldr ip, _020A01F4 ; =MI_CpuFill8 + ldr r0, _020A01F8 ; =session + mov r1, #0x0 + mov r2, #0x170 + bx r12 + .balign 4 +_020A01F4: .word MI_CpuFill8 +_020A01F8: .word session + + arm_func_start CPSi_SslPeriodical +CPSi_SslPeriodical: ; 0x020A01FC + stmdb sp!, {r4-r6,lr} + mov r5, r0 + bl OS_DisableInterrupts + ldr r4, _020A02E0 ; =session + mov r6, #0x0 + mov r2, r6 + ldr r1, _020A02E4 ; =0x000003BD +_020A0218: + ldrb r3, [r4, #0x5a] + cmp r3, #0x0 + beq _020A0234 + ldr r3, [r4, #0x50] + sub r3, r5, r3 + cmp r3, r1 + strgtb r2, [r4, #0x5a] +_020A0234: + add r6, r6, #0x1 + cmp r6, #0x4 + add r4, r4, #0x5c + blt _020A0218 + bl OS_RestoreInterrupts + ldr r0, _020A02E8 ; =OSi_ThreadInfo + ldr r4, [r0, #0x8] + cmp r4, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r6, #0x0 +_020A0260: + ldr r1, [r4, #0xa4] + cmp r1, #0x0 + beq _020A02CC + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _020A02CC + ldrb r0, [r1, #0x9] + cmp r0, #0x0 + beq _020A02CC + ldrb r0, [r1, #0x8] + cmp r0, #0x4 + bne _020A02CC + ldr r0, [r1, #0xc] + ldrb r0, [r0, #0x455] + cmp r0, #0x8 + bhs _020A02CC + ldr r0, [r1, #0x10] + sub r0, r5, r0 + cmp r0, #0xef + ble _020A02CC + ldr r0, [r1, #0x4] + cmp r0, #0x2 + bne _020A02CC + strb r6, [r1, #0x8] + str r6, [r1, #0x4] + ldr r0, [r1, #0x0] + bl OS_WakeupThreadDirect +_020A02CC: + ldr r4, [r4, #0x68] + cmp r4, #0x0 + bne _020A0260 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A02E0: .word session +_020A02E4: .word 0x000003BD +_020A02E8: .word OSi_ThreadInfo + + .extern _SDK_UbiquitousSSL + ; SDK_DEFINE_MIDDLEWARE(id_string, "UBIQUITOUS", "SSL"); + + arm_func_start CPS_SetSsl +CPS_SetSsl: + stmdb sp!, {r4,lr} + mov r4, r0 + ; SDK_USING_MIDDLEWARE(id_string) + ldr r0, _020A0318 ; =_SDK_UbiquitousSSL + bl OSi_ReferSymbol + ldr r0, _020A031C ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + strneb r4, [r0, #0x9] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A0318: .word _SDK_UbiquitousSSL +_020A031C: .word OSi_ThreadInfo + + arm_func_start CPSi_SslClose +CPSi_SslClose: ; 0x020A0320 + stmdb sp!, {r4,lr} + ldr r4, [r0, #0xc] + mov r0, #0x0 + strb r0, [r4, #0x455] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0348 + ldr r1, _020A0358 ; =CPSiFree + ldr r1, [r1, #0x0] + blx r1 +_020A0348: + mov r0, #0x0 + str r0, [r4, #0x824] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A0358: .word CPSiFree + + arm_func_start CPSi_SslShutdown +CPSi_SslShutdown: ; 0x020A035C + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x20 + mov r5, r0 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #0x455] + cmp r0, #0x8 + bne _020A03CC + mov r12, #0x0 + mov r6, #0x15 + mov lr, #0x3 + mov r3, #0x2 + mov r2, #0x1 + add r1, sp, #0x4 + mov r0, r4 + strb r6, [sp, #0x4] + strb lr, [sp, #0x5] + strb r12, [sp, #0x6] + strb r12, [sp, #0x7] + strb r3, [sp, #0x8] + strb r2, [sp, #0x9] + strb r12, [sp, #0xa] + bl make_ciphertext + mov r2, #0x0 + mov r1, r0 + add r0, sp, #0x4 + mov r3, r2 + str r5, [sp, #0x0] + bl CPSi_TcpWrite2Raw +_020A03CC: + mov r0, #0x0 + strb r0, [r4, #0x455] + add sp, sp, #0x20 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start CPSi_SslWrite2 +CPSi_SslWrite2: ; 0x020A03E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r4, [sp, #0x48] + mov r9, r1 + mov r1, r4 + mov r10, r0 + mov r0, #0x0 + ldr r1, [r1, #0xc] + str r0, [sp, #0x8] + str r0, [sp, #0x1c] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + mov r0, #0x17 + str r0, [sp, #0xc] + mov r0, #0x3 + str r4, [sp, #0x48] + str r1, [sp, #0x4] + mov r8, r2 + add r6, r9, r3 + str r0, [sp, #0x10] +_020A0430: + ldr r0, _020A052C ; =0x00000B4F + ldr r1, _020A0530 ; =CPSiAlloc + cmp r6, r0 + movgt r5, r0 + movle r5, r6 + ldr r1, [r1, #0x0] + add r0, r5, #0x19 + blx r1 + movs r7, r0 + beq _020A051C + cmp r9, r5 + movcs r4, r5 + movcc r4, r9 + mov r0, r10 + add r1, r7, #0x5 + mov r2, r4 + sub r11, r5, r4 + bl MI_CpuCopy8 + add r1, r7, #0x5 + mov r0, r8 + add r1, r1, r4 + mov r2, r11 + add r10, r10, r4 + sub r9, r9, r4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + mov r1, r7 + strb r0, [r7, #0x0] + ldr r0, [sp, #0x10] + add r8, r8, r11 + strb r0, [r7, #0x1] + ldr r0, [sp, #0x14] + strb r0, [r7, #0x2] + mov r0, r5, asr #0x8 + strb r0, [r7, #0x3] + ldr r0, [sp, #0x4] + strb r5, [r7, #0x4] + bl make_ciphertext + ldr r1, [sp, #0x48] + ldr r2, [sp, #0x18] + mov r4, r0 + str r1, [sp, #0x0] + mov r0, r7 + mov r1, r4 + mov r3, r2 + bl CPSi_TcpWrite2Raw + cmp r0, r4 + ldr r1, _020A0534 ; =CPSiFree + mov r0, r7 + ldr r1, [r1, #0x0] + ldrcc r5, [sp, #0x1c] + blx r1 + ldr r0, [sp, #0x8] + subs r6, r6, r5 + add r0, r0, r5 + str r0, [sp, #0x8] + beq _020A051C + cmp r5, #0x0 + bne _020A0430 +_020A051C: + ldr r0, [sp, #0x8] + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A052C: .word 0x00000B4F +_020A0530: .word CPSiAlloc +_020A0534: .word CPSiFree + + arm_func_start CPSi_SslGetLength +CPSi_SslGetLength: ; 0x020A0538 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0560 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + bne _020A0568 +_020A0560: + mov r0, r5 + bl try_fill_record +_020A0568: + ldr r1, [r4, #0x824] + cmp r1, #0x0 + beq _020A0594 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + ldrne r1, [r4, #0x828] + ldrne r0, [r4, #0x82c] + addne sp, sp, #0x4 + subne r0, r1, r0 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A0594: + cmp r1, #0x0 + bne _020A05C4 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + bne _020A05B4 + ldrb r0, [r4, #0x455] + cmp r0, #0x9 + bne _020A05C4 +_020A05B4: + add sp, sp, #0x4 + mvn r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A05C4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start try_fill_record +try_fill_record: ; 0x020A05D4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + bne _020A0684 + ldr r0, [r5, #0x44] + cmp r0, #0x5 + addcc sp, sp, #0x8 + ldmccia sp!, {r4-r6,lr} + bxcc lr + add r0, sp, #0x0 + mov r1, r5 + bl CPSi_TcpReadRaw + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x4] + ldr r1, _020A0730 ; =0x00004805 + add r0, r0, r2, lsl #0x8 + add r0, r0, #0x5 + str r0, [sp, #0x0] + cmp r0, r1 + movhi r0, #0x9 + addhi sp, sp, #0x8 + strhib r0, [r4, #0x455] + ldmhiia sp!, {r4-r6,lr} + bxhi lr + ldr r1, _020A0734 ; =CPSiAlloc + ldr r1, [r1, #0x0] + blx r1 + str r0, [r4, #0x824] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r0, #0x0 + str r1, [r4, #0x828] + str r0, [r4, #0x82c] + strb r0, [r4, #0x456] + b _020A0698 +_020A0684: + ldr r0, [r5, #0x44] + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_020A0698: + add r0, sp, #0x0 + mov r1, r5 + bl CPSi_TcpReadRaw + ldr r3, [r4, #0x828] + ldr r2, [r4, #0x82c] + ldr r1, [sp, #0x0] + sub r2, r3, r2 + cmp r1, r2 + strcs r2, [sp, #0x0] + movcs r6, #0x1 + ldr r3, [r4, #0x824] + ldr r1, [r4, #0x82c] + ldr r2, [sp, #0x0] + add r1, r3, r1 + movcc r6, #0x0 + bl MI_CpuCopy8 + ldr r0, [sp, #0x0] + mov r1, r5 + bl CPSi_SocConsumeRaw + cmp r6, #0x0 + beq _020A0714 + ldr r1, [r4, #0x824] + mov r0, r4 + bl parse_record_in_buf + ldrb r0, [r4, #0x456] + add sp, sp, #0x8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r4, #0x824] + ldmia sp!, {r4-r6,lr} + bx lr +_020A0714: + ldr r1, [r4, #0x82c] + ldr r0, [sp, #0x0] + add r0, r1, r0 + str r0, [r4, #0x82c] + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A0730: .word 0x00004805 +_020A0734: .word CPSiAlloc + + arm_func_start CPSi_SslConsume +CPSi_SslConsume: ; 0x020A0738 + stmdb sp!, {r4,lr} + ldr r4, [r1, #0xc] + ldr r2, [r4, #0x828] + ldr r1, [r4, #0x82c] + sub r2, r2, r1 + cmp r0, r2 + blo _020A077C + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A076C + ldr r1, _020A078C ; =CPSiFree + ldr r1, [r1, #0x0] + blx r1 +_020A076C: + mov r0, #0x0 + str r0, [r4, #0x824] + ldmia sp!, {r4,lr} + bx lr +_020A077C: + add r0, r1, r0 + str r0, [r4, #0x82c] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A078C: .word CPSiFree + + arm_func_start CPSi_SslRead +CPSi_SslRead: ; 0x020A0790 + stmdb sp!, {r4-r6,lr} + mov r5, r1 + ldr r4, [r5, #0xc] + mov r6, r0 + ldr r12, [r4, #0x824] + cmp r12, #0x0 + beq _020A0818 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + bne _020A0818 + ldr r3, [r4, #0x82c] + ldr r1, [r4, #0x828] + mov r2, r5 + add r0, r12, r3 + sub r1, r1, r3 + bl tcp_read_raw_nbytes + cmp r0, #0x0 + beq _020A07FC + ldr r1, _020A0870 ; =CPSiFree + ldr r0, [r4, #0x824] + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x0 + str r0, [r4, #0x824] + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr +_020A07FC: + ldr r1, [r4, #0x824] + mov r0, r4 + bl parse_record_in_buf + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r4, #0x824] +_020A0818: + ldr r0, [r4, #0x824] + cmp r0, #0x0 + bne _020A084C +_020A0824: + mov r0, r5 + bl parse_record + cmp r0, #0x9 + moveq r0, #0x0 + streq r0, [r6, #0x0] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0824 +_020A084C: + ldr r1, [r4, #0x828] + ldr r0, [r4, #0x82c] + sub r0, r1, r0 + str r0, [r6, #0x0] + ldr r1, [r4, #0x824] + ldr r0, [r4, #0x82c] + add r0, r1, r0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A0870: .word CPSiFree + + arm_func_start CPSi_SslConnect +CPSi_SslConnect: ; 0x020A0874 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r1, [r5, #0x8] + ldr r4, [r5, #0xc] + cmp r1, #0x4 + beq _020A08A8 + bl CPSi_TcpConnectRaw + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A08A8: + mov r1, #0x0 + strb r1, [r4, #0x455] + str r1, [r4, #0x1d4] + add r0, r4, #0x2ec + strb r1, [r4, #0x454] + bl CPSi_sha1_init + add r0, r4, #0x3a4 + bl CPSi_md5_init + mov r0, r5 + bl ssl_connect_try + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start ssl_connect_try +ssl_connect_try: ; 0x020A08DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r4, [r5, #0xc] + bl send_client_hello +_020A08F0: + mov r0, r5 + bl parse_record + cmp r0, #0x9 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r0, #0x4 + beq _020A0920 + ldrb r0, [r4, #0x31] + cmp r0, #0x0 + beq _020A08F0 +_020A0920: + ldrb r0, [r4, #0x31] + cmp r0, #0x0 + beq _020A095C + mov r0, r4 + bl create_key_block + mov r0, r5 + bl mustget_change_cipher_spec_and_finished + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r5 + bl send_change_cipher_spec_and_finished + b _020A09B4 +_020A095C: + mov r0, r5 + bl send_client_key_exchange + mov r0, r4 + bl create_master_secret + ldrb r0, [r4, #0x30] + cmp r0, #0x0 + beq _020A0988 + ldrh r2, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r0, r4 + bl cache_session +_020A0988: + mov r0, r4 + bl create_key_block + mov r0, r5 + bl send_change_cipher_spec_and_finished + mov r0, r5 + bl mustget_change_cipher_spec_and_finished + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A09B4: + mov r0, #0x8 + strb r0, [r4, #0x455] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start CPSi_SslListen +CPSi_SslListen: ; 0x020A09CC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r8, [r9, #0xc] + add r5, r8, #0x2ec + add r4, r8, #0x3a4 + mov r7, #0x0 + mov r6, #0x1 +_020A09EC: + mov r0, r9 + bl FUN_0209CAC4 + strb r7, [r8, #0x455] + str r7, [r8, #0x1d4] + mov r0, r5 + strb r6, [r8, #0x454] + bl CPSi_sha1_init + mov r0, r4 + bl CPSi_md5_init + mov r0, r9 + bl ssl_listen_try + cmp r0, #0x0 + moveq r0, #0x8 + addeq sp, sp, #0x4 + streqb r0, [r8, #0x455] + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, r9 + bl CPSi_TcpShutdownRaw + ldrh r0, [r9, #0x1a] + strh r0, [r9, #0x18] + ldr r0, [r9, #0x20] + str r0, [r9, #0x1c] + b _020A09EC + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start ssl_listen_try +ssl_listen_try: + stmdb sp!, {r4,lr} + mov r4, r0 + bl parse_record + cmp r0, #0x1 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl send_server_hello + cmp r0, #0x0 + beq _020A0AB0 + ldr r0, [r4, #0xc] + bl create_key_block + mov r0, r4 + bl send_change_cipher_spec_and_finished + mov r0, r4 + bl mustget_change_cipher_spec_and_finished + cmp r0, #0x0 + beq _020A0AE8 + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A0AB0: + mov r0, r4 + bl parse_record + cmp r0, #0x5 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl mustget_change_cipher_spec_and_finished + cmp r0, #0x0 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl send_change_cipher_spec_and_finished +_020A0AE8: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start mustget_change_cipher_spec_and_finished +mustget_change_cipher_spec_and_finished: + stmdb sp!, {r4,lr} + mov r4, r0 + bl parse_record + cmp r0, #0x7 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl parse_record + cmp r0, #0x6 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start send_client_key_exchange +send_client_key_exchange: ; 0x020A0B2C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r0 + ldr r10, [r11, #0xc] + mov r0, #0x3 + strb r0, [r10, #0x0] + mov r0, #0x0 + strb r0, [r10, #0x1] + add r0, r10, #0x2 + mov r1, #0x2e + bl set_random + ldr r4, [r10, #0x594] + ldr r0, _020A0DD4 ; =CPSiAlloc + mov r1, r4, lsl #0x1 + ldr r2, [r0, #0x0] + add r1, r1, r1, lsr #0x1f + mov r0, r4 + mov r6, r1, asr #0x1 + blx r2 + movs r5, r0 + moveq r0, #0x9 + addeq sp, sp, #0xc + streqb r0, [r10, #0x455] + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, #0x0 + strb r0, [r5, #0x0] + mov r2, #0x2 + add r0, r5, #0x2 + sub r1, r4, #0x33 + strb r2, [r5, #0x1] + bl set_random + add r1, r5, r4 + mov r0, r10 + sub r3, r4, #0x31 + mov r7, #0x0 + sub r1, r1, #0x30 + mov r2, #0x30 + strb r7, [r5, r3] + bl MI_CpuCopy8 + ldr r1, _020A0DD4 ; =CPSiAlloc + mov r0, r6, lsl #0x3 + ldr r1, [r1, #0x0] + blx r1 + movs r9, r0 + bne _020A0C08 + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0xc + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + bx lr +_020A0C08: + add r0, r9, r6, lsl #0x1 + add r8, r0, r6, lsl #0x1 + mov r1, r5 + mov r2, r4 + mov r3, r6 + str r0, [sp, #0x4] + add r7, r8, r6, lsl #0x1 + bl CPSi_big_from_char + ldr r1, _020A0DDC ; =0x00000598 + ldr r2, [r10, #0x5a0] + mov r0, r8 + add r1, r10, r1 + mov r3, r6 + bl CPSi_big_from_char + ldr r1, _020A0DE0 ; =0x00000494 + mov r0, r7 + mov r2, r4 + add r1, r10, r1 + mov r3, r6 + bl CPSi_big_from_char + bl enter_computebound + mov r3, r6 + mov r6, r0 + ldr r1, [sp, #0x4] + mov r2, r8 + mov r0, r9 + str r7, [sp, #0x0] + bl CPSi_big_power + mov r0, r6 + bl exit_computebound + ldr r1, _020A0DD4 ; =CPSiAlloc + add r0, r4, #0x49 + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + bne _020A0CCC + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r9 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0xc + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + bx lr +_020A0CCC: + mov r0, #0x16 + strb r0, [r6, #0x0] + mov r1, #0x3 + add r0, r4, #0x4 + strb r1, [r6, #0x1] + mov r1, #0x0 + strb r1, [r6, #0x2] + mov r1, r0, asr #0x8 + strb r1, [r6, #0x3] + add r2, r6, #0x9 + strb r0, [r6, #0x4] + mov r0, #0x10 + strb r0, [r6, #0x5] + mov r0, r4, asr #0x10 + strb r0, [r6, #0x6] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x7] + mov r0, r2 + strb r4, [r6, #0x8] + ands r1, r4, #0x1 + beq _020A0D38 + add r0, r4, r4, lsr #0x1f + mov r0, r0, asr #0x1 + mov r0, r0, lsl #0x1 + ldrh r1, [r9, r0] + add r0, r2, #0x1 + strb r1, [r2, #0x0] +_020A0D38: + add r1, r4, r4, lsr #0x1f + mov r1, r1, asr #0x1 + subs r7, r1, #0x1 + bmi _020A0D70 +_020A0D48: + mov r3, r7, lsl #0x1 + ldrh r1, [r9, r3] + add r2, r0, #0x1 + subs r7, r7, #0x1 + mov r1, r1, asr #0x8 + strb r1, [r0, #0x0] + ldrh r1, [r9, r3] + add r0, r0, #0x2 + strb r1, [r2, #0x0] + bpl _020A0D48 +_020A0D70: + mov r2, #0x0 + mov r0, r6 + mov r3, r2 + add r1, r4, #0x9 + str r11, [sp, #0x0] + bl CPSi_TcpWrite2Raw + mov r0, r10 + add r1, r6, #0x5 + add r2, r4, #0x4 + bl update_digest + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r9 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =CPSiFree + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A0DD4: .word CPSiAlloc +_020A0DD8: .word CPSiFree +_020A0DDC: .word 0x00000598 +_020A0DE0: .word 0x00000494 + + arm_func_start send_client_hello +send_client_hello: ; 0x020A0DE4 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r1, _020A0F88 ; =CPSiAlloc + mov r8, r0 + ldr r1, [r1, #0x0] + mov r0, #0x98 + ldr r7, [r8, #0xc] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r7, #0x455] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, #0x3 + strb r0, [r6, #0x9] + add r5, r6, #0x9 + mov r0, #0x0 + strb r0, [r5, #0x1] + bl date2sec + mov r1, r0, lsr #0x18 + strb r1, [r7, #0x34] + mov r1, r0, lsr #0x10 + strb r1, [r7, #0x35] + mov r1, r0, lsr #0x8 + strb r1, [r7, #0x36] + strb r0, [r7, #0x37] + add r0, r7, #0x38 + mov r1, #0x1c + bl set_random + add r0, r7, #0x34 + add r1, r5, #0x2 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrh r2, [r8, #0x18] + ldr r1, [r8, #0x1c] + mov r0, r7 + bl find_session_from_IP + ldrb r0, [r7, #0x30] + cmp r0, #0x0 + moveq r0, #0x0 + streqb r0, [r5, #0x22] + addeq r5, r5, #0x23 + beq _020A0EAC + mov r2, #0x20 + add r0, r7, #0x74 + add r1, r5, #0x23 + strb r2, [r5, #0x22] + bl MI_CpuCopy8 + add r5, r5, #0x43 +_020A0EAC: + mov r4, #0x0 + strb r4, [r5, #0x0] + mov r0, #0x4 + strb r0, [r5, #0x1] + ldr r2, _020A0F8C ; =pairlist + add r5, r5, #0x2 +_020A0EC4: + mov r3, r4, lsl #0x1 + ldrh r0, [r2, r3] + add r4, r4, #0x1 + add r1, r5, #0x1 + mov r0, r0, asr #0x8 + strb r0, [r5, #0x0] + ldrh r0, [r2, r3] + cmp r4, #0x2 + add r5, r5, #0x2 + strb r0, [r1, #0x0] + blo _020A0EC4 + mov r3, #0x1 + mov r2, #0x0 + strb r3, [r5, #0x0] + add r0, r5, #0x2 + sub r0, r0, r6 + sub r4, r0, #0x5 + strb r2, [r5, #0x1] + sub r1, r4, #0x4 + mov r0, #0x16 + strb r0, [r6, #0x0] + mov r0, #0x3 + strb r0, [r6, #0x1] + strb r2, [r6, #0x2] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x3] + strb r4, [r6, #0x4] + strb r3, [r6, #0x5] + mov r0, r1, asr #0x10 + strb r0, [r6, #0x6] + mov r0, r1, asr #0x8 + strb r0, [r6, #0x7] + strb r1, [r6, #0x8] + mov r0, r6 + mov r3, r2 + add r1, r4, #0x5 + str r8, [sp, #0x0] + bl CPSi_TcpWrite2Raw + mov r0, r7 + mov r2, r4 + add r1, r6, #0x5 + bl update_digest + ldr r1, _020A0F90 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A0F88: .word CPSiAlloc +_020A0F8C: .word pairlist +_020A0F90: .word CPSiFree + + arm_func_start send_change_cipher_spec_and_finished +send_change_cipher_spec_and_finished: ; 0x020A0F94 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r1, _020A10EC ; =CPSiAlloc + mov r6, r0 + ldr r1, [r1, #0x0] + mov r0, #0x83 + ldr r5, [r6, #0xc] + blx r1 + movs r4, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r5, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x14 + strb r0, [r4, #0x0] + mov r0, #0x3 + strb r0, [r4, #0x1] + mov r1, #0x0 + strb r1, [r4, #0x2] + strb r1, [r4, #0x3] + mov r3, #0x1 + strb r3, [r4, #0x4] + add r0, r5, #0x1cc + mov r2, #0x8 + strb r3, [r4, #0x5] + bl MI_CpuFill8 + mov r0, #0x16 + strb r0, [r4, #0x6] + mov r0, #0x3 + strb r0, [r4, #0x7] + mov r1, #0x0 + strb r1, [r4, #0x8] + strb r1, [r4, #0x9] + mov r0, #0x28 + strb r0, [r4, #0xa] + mov r0, #0x14 + strb r0, [r4, #0xb] + strb r1, [r4, #0xc] + strb r1, [r4, #0xd] + mov r3, #0x24 + add r0, r5, #0x3a4 + add r1, r5, #0x3fc + mov r2, #0x58 + strb r3, [r4, #0xe] + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0xf + mov r2, #0x0 + bl finished_md5 + add r0, r5, #0x3fc + add r1, r5, #0x3a4 + mov r2, #0x58 + bl MI_CpuCopy8 + add r0, r5, #0x2ec + add r1, r5, #0x348 + mov r2, #0x5c + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0x1f + mov r2, #0x0 + bl finished_sha1 + add r0, r5, #0x348 + add r1, r5, #0x2ec + mov r2, #0x5c + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0xb + mov r2, #0x28 + bl update_digest + mov r0, r5 + add r1, r4, #0x6 + bl make_ciphertext + mov r2, #0x0 + add r1, r0, #0x6 + mov r0, r4 + mov r3, r2 + str r6, [sp, #0x0] + bl CPSi_TcpWrite2Raw + ldr r1, _020A10F0 ; =CPSiFree + mov r0, r4 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A10EC: .word CPSiAlloc +_020A10F0: .word CPSiFree + + arm_func_start send_server_hello +send_server_hello: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r7, [r9, #0xc] + ldr r4, [r7, #0x820] + cmp r4, #0x0 + ldrne r8, [r4, #0x0] + moveq r8, #0x0 + bl date2sec + mov r1, r0, lsr #0x18 + strb r1, [r7, #0x54] + mov r1, r0, lsr #0x10 + strb r1, [r7, #0x55] + mov r1, r0, lsr #0x8 + strb r1, [r7, #0x56] + strb r0, [r7, #0x57] + add r0, r7, #0x58 + mov r1, #0x1c + bl set_random + ldr r1, _020A1360 ; =CPSiAlloc + add r0, r8, #0x9d + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + streqb r0, [r7, #0x455] + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, #0x2 + add r5, r6, #0x5 + strb r0, [r6, #0x5] + mov r3, #0x0 + strb r3, [r5, #0x1] + strb r3, [r5, #0x2] + mov r0, #0x46 + strb r0, [r5, #0x3] + mov r0, #0x3 + strb r0, [r5, #0x4] + add r0, r7, #0x54 + add r1, r5, #0x6 + mov r2, #0x20 + strb r3, [r5, #0x5] + bl MI_CpuCopy8 + mov r2, #0x20 + strb r2, [r5, #0x26] + ldrb r0, [r7, #0x30] + cmp r0, #0x0 + beq _020A11D8 + add r0, r7, #0x74 + add r1, r5, #0x27 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r7, #0x31] + add r5, r5, #0x47 + b _020A1238 +_020A11D8: + add r0, r5, #0x27 + mov r1, #0x1c + bl set_random + ldr r0, _020A1364 ; =UNK_021CA6E4 + add r2, r5, #0x46 + ldr r3, [r0, #0x0] + add r1, r7, #0x74 + mov r0, r3, lsr #0x18 + strb r0, [r5, #0x43] + mov r0, r3, lsr #0x10 + strb r0, [r5, #0x44] + mov r0, r3, lsr #0x8 + strb r0, [r5, #0x45] + add r5, r5, #0x47 + sub r0, r5, #0x20 + strb r3, [r2, #0x0] + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, _020A1364 ; =UNK_021CA6E4 + mov r1, #0x0 + ldr r2, [r0, #0x0] + add r2, r2, #0x1 + str r2, [r0, #0x0] + strb r1, [r7, #0x31] +_020A1238: + ldrh r2, [r7, #0x32] + mov r0, #0x0 + mov r2, r2, asr #0x8 + strb r2, [r5, #0x0] + ldrh r2, [r7, #0x32] + strb r2, [r5, #0x1] + strb r0, [r5, #0x2] + ldrb r0, [r7, #0x31] + add r5, r5, #0x3 + cmp r0, #0x0 + bne _020A12EC + cmp r8, #0x0 + beq _020A12D0 + mov r0, #0xb + add r2, r8, #0x6 + strb r0, [r5, #0x0] + mov r0, r2, asr #0x10 + strb r0, [r5, #0x1] + mov r0, r2, asr #0x8 + strb r0, [r5, #0x2] + add r1, r8, #0x3 + strb r2, [r5, #0x3] + mov r0, r1, asr #0x10 + strb r0, [r5, #0x4] + mov r0, r1, asr #0x8 + strb r0, [r5, #0x5] + strb r1, [r5, #0x6] + mov r0, r8, asr #0x10 + strb r0, [r5, #0x7] + mov r0, r8, asr #0x8 + strb r0, [r5, #0x8] + strb r8, [r5, #0x9] + add r5, r5, #0xa + ldr r0, [r4, #0x4] + mov r1, r5 + mov r2, r8 + bl MI_CpuCopy8 + add r5, r5, r8 +_020A12D0: + mov r0, #0xe + strb r0, [r5, #0x0] + mov r1, #0x0 + strb r1, [r5, #0x1] + strb r1, [r5, #0x2] + strb r1, [r5, #0x3] + add r5, r5, #0x4 +_020A12EC: + mov r0, #0x16 + sub r1, r5, r6 + sub r4, r1, #0x5 + strb r0, [r6, #0x0] + mov r0, #0x3 + strb r0, [r6, #0x1] + mov r0, #0x0 + strb r0, [r6, #0x2] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x3] + mov r0, r7 + mov r2, r4 + add r1, r6, #0x5 + strb r4, [r6, #0x4] + bl update_digest + mov r2, #0x0 + mov r0, r6 + mov r3, r2 + add r1, r4, #0x5 + str r9, [sp, #0x0] + bl CPSi_TcpWrite2Raw + ldr r1, _020A1368 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldrb r0, [r7, #0x31] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A1360: .word CPSiAlloc +_020A1364: .word UNK_021CA6E4 ; anonymous +_020A1368: .word CPSiFree + + arm_func_start CPS_SslAddRandomSeed +CPS_SslAddRandomSeed: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x60 + mov r6, r0 + add r0, sp, #0x0 + mov r5, r1 + bl CPSi_sha1_init + bl OS_DisableInterrupts + mov r4, r0 + ldr r1, _020A13D8 ; =pool + add r0, sp, #0x0 + mov r2, #0x14 + bl CPSi_sha1_calc + mov r1, r6 + mov r2, r5 + add r0, sp, #0x0 + bl CPSi_sha1_calc + ldr r1, _020A13D8 ; =pool + add r0, sp, #0x0 + bl CPSi_sha1_result + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, _020A13DC ; =pool_initialized + mov r1, #0x1 + strb r1, [r0, #0x0] + add sp, sp, #0x60 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A13D8: .word pool +_020A13DC: .word pool_initialized + + arm_func_start set_random +set_random: ; 0x020A13E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x7c + ldr r2, _020A1518 ; =pool_initialized + mov r10, r0 + ldrb r0, [r2, #0x0] + mov r9, r1 + cmp r0, #0x0 + bne _020A1448 + ldr r2, _020A151C ; =CPSiRand32ctx + add r0, sp, #0x4 + ldr r4, [r2, #0x8] + ldr r3, [r2, #0x0] + ldr r1, [r2, #0x4] + umull r6, r5, r4, r3 + mla r5, r4, r1, r5 + ldr r1, [r2, #0xc] + ldr r4, [r2, #0x10] + mla r5, r1, r3, r5 + adds r4, r4, r6 + ldr r3, [r2, #0x14] + mov r1, #0x4 + adc r3, r3, r5 + str r4, [r2, #0x0] + str r3, [r2, #0x4] + str r3, [sp, #0x4] + bl CPS_SslAddRandomSeed +_020A1448: + cmp r9, #0x0 + mov r7, #0x0 + addle sp, sp, #0x7c + mov r1, #0x14 + ldmleia sp!, {r4-r11,lr} + bxle lr + add r6, sp, #0x1c + mov r11, r1 + str r7, [sp, #0x0] + mov r5, #0x1 + mov r4, #0x13 +_020A1474: + cmp r1, #0x14 + bne _020A14EC + mov r0, r6 + bl CPSi_sha1_init + bl OS_DisableInterrupts + mov r8, r0 + ldr r1, _020A1520 ; =pool + mov r0, r6 + mov r2, r11 + bl CPSi_sha1_calc + mov r0, r6 + add r1, sp, #0x8 + bl CPSi_sha1_result_prng + ldr r2, _020A1524 ; =pool+0x13 + mov r12, r5 + mov lr, r4 + add r3, sp, #0x1b +_020A14B8: + ldrb r1, [r2, #0x0] + ldrb r0, [r3], #-0x1 + subs lr, lr, #0x1 + add r0, r1, r0 + add r0, r12, r0 + strb r0, [r2, #0x0] + mov r12, r0, lsr #0x8 + sub r2, r2, #0x1 + bpl _020A14B8 + str r0, [sp, #0x4] + mov r0, r8 + bl OS_RestoreInterrupts + ldr r1, [sp, #0x0] +_020A14EC: + add r0, sp, #0x8 + ldrb r0, [r0, r1] + add r1, r1, #0x1 + cmp r0, #0x0 + strneb r0, [r10, r7] + addne r7, r7, #0x1 + cmp r7, r9 + blt _020A1474 + add sp, sp, #0x7c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A1518: .word pool_initialized +_020A151C: .word CPSiRand32ctx +_020A1520: .word pool +_020A1524: .word pool+0x13 + + arm_func_start parse_record +parse_record: ; 0x020A1528 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldr r4, [r5, #0xc] + add r6, sp, #0x0 +_020A153C: + mov r0, r6 + mov r1, r5 + bl CPSi_TcpReadRaw + ldr r1, [sp, #0x0] + cmp r1, #0x0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + cmp r1, #0x5 + blo _020A153C + ldrb r1, [r0, #0x0] + cmp r1, #0x80 + bne _020A1634 + ldrb r1, [r4, #0x454] + cmp r1, #0x0 + beq _020A1628 + ldrb r1, [r4, #0x455] + cmp r1, #0x0 + bne _020A1628 + ldrb r2, [r0, #0x1] + mov r1, r5 + mov r0, #0x2 + str r2, [sp, #0x0] + bl CPSi_SocConsumeRaw + ldr r1, _020A16DC ; =CPSiAlloc + ldr r0, [sp, #0x0] + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r2, r5 + bl tcp_read_raw_nbytes + cmp r0, #0x0 + bne _020A15FC + ldrb r0, [r6, #0x0] + cmp r0, #0x1 + bne _020A15FC + mov r0, r4 + add r1, r6, #0x1 + bl client_hello_v2 + b _020A1604 +_020A15FC: + mov r0, #0x9 + strb r0, [r4, #0x455] +_020A1604: + ldr r2, [sp, #0x0] + mov r0, r4 + mov r1, r6 + bl update_digest + ldr r1, _020A16E0 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + b _020A16CC +_020A1628: + mov r0, #0x9 + strb r0, [r4, #0x455] + b _020A16CC +_020A1634: + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x4] + ldr r1, _020A16E4 ; =0x00004805 + add r0, r0, r2, lsl #0x8 + add r0, r0, #0x5 + str r0, [sp, #0x0] + cmp r0, r1 + movhi r0, #0x9 + addhi sp, sp, #0x8 + strhib r0, [r4, #0x455] + ldmhiia sp!, {r4-r6,lr} + bxhi lr + ldr r1, _020A16DC ; =CPSiAlloc + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r2, r5 + bl tcp_read_raw_nbytes + cmp r0, #0x0 + beq _020A16C0 + ldr r1, _020A16E0 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0x8 + strb r0, [r4, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr +_020A16C0: + mov r0, r4 + mov r1, r6 + bl parse_record_in_buf +_020A16CC: + ldrb r0, [r4, #0x455] + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A16DC: .word CPSiAlloc +_020A16E0: .word CPSiFree +_020A16E4: .word 0x00004805 + + arm_func_start parse_record_in_buf +parse_record_in_buf: ; 0x020A16E8 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldrb r0, [r8, #0x455] + mov r7, r1 + cmp r0, #0x9 + bne _020A1718 + ldr r1, _020A1940 ; =CPSiFree + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + ldmia sp!, {r4-r8,lr} + bx lr +_020A1718: + ldrb r2, [r7, #0x3] + ldrb r1, [r7, #0x4] + add r0, r0, #0xf9 + and r0, r0, #0xff + add r1, r1, r2, lsl #0x8 + cmp r0, #0x1 + add r5, r1, #0x5 + ldrb r4, [r7, #0x0] + bhi _020A1744 + cmp r4, #0x15 + bne _020A1754 +_020A1744: + cmp r4, #0x15 + bne _020A1764 + cmp r5, #0x7 + bls _020A1764 +_020A1754: + mov r0, r8 + mov r1, r7 + bl make_plaintext + mov r5, r0 +_020A1764: + sub r0, r4, #0x14 + cmp r0, #0x3 + add r6, r7, #0x5 + sub r5, r5, #0x5 + addls pc, pc, r0, lsl #0x2 + b _020A1920 + b _020A178C + b _020A17BC + b _020A17D0 + b _020A18FC +_020A178C: + ldr r0, [r8, #0x1d4] + cmp r0, #0x0 + moveq r0, #0x9 + streqb r0, [r8, #0x455] + beq _020A1928 + add r0, r8, #0x2e4 + mov r1, #0x0 + mov r2, #0x8 + bl MI_CpuFill8 + mov r0, #0x7 + strb r0, [r8, #0x455] + b _020A1928 +_020A17BC: + ldrb r0, [r6, #0x0] + cmp r0, #0x2 + moveq r0, #0x9 + streqb r0, [r8, #0x455] + b _020A1928 +_020A17D0: + ldrb r1, [r6, #0x1] + ldrb r0, [r6, #0x2] + ldrb r3, [r6, #0x0] + ldrb r2, [r6, #0x3] + mov r1, r1, lsl #0x10 + add r0, r1, r0, lsl #0x8 + cmp r3, #0xb + add r4, r2, r0 + add r6, r6, #0x4 + bgt _020A1824 + cmp r3, #0xb + bge _020A1898 + cmp r3, #0x2 + bgt _020A18C4 + cmp r3, #0x1 + blt _020A18C4 + cmp r3, #0x1 + beq _020A1850 + cmp r3, #0x2 + beq _020A1888 + b _020A18C4 +_020A1824: + cmp r3, #0x14 + bgt _020A18C4 + cmp r3, #0xe + blt _020A18C4 + cmp r3, #0xe + beq _020A18A8 + cmp r3, #0x10 + beq _020A1878 + cmp r3, #0x14 + beq _020A18B4 + b _020A18C4 +_020A1850: + ldrb r0, [r8, #0x454] + cmp r0, #0x0 + beq _020A18CC + ldrb r0, [r8, #0x455] + cmp r0, #0x0 + bne _020A18CC + mov r0, r8 + mov r1, r6 + bl client_hello + b _020A18CC +_020A1878: + mov r0, r8 + mov r1, r6 + bl rcv_client_key_exchange + b _020A18CC +_020A1888: + mov r0, r8 + mov r1, r6 + bl rcv_server_hello + b _020A18CC +_020A1898: + mov r0, r8 + mov r1, r6 + bl rcv_certificate + b _020A18CC +_020A18A8: + mov r0, #0x4 + strb r0, [r8, #0x455] + b _020A18CC +_020A18B4: + mov r0, r8 + mov r1, r6 + bl rcv_finished + b _020A18CC +_020A18C4: + mov r0, #0x9 + strb r0, [r8, #0x455] +_020A18CC: + mov r0, r8 + sub r1, r6, #0x4 + add r2, r4, #0x4 + bl update_digest + add r0, r4, #0x4 + add r6, r6, r4 + subs r5, r5, r0 + beq _020A1928 + ldrb r0, [r8, #0x455] + cmp r0, #0x9 + bne _020A17D0 + b _020A1928 +_020A18FC: + str r7, [r8, #0x824] + mov r0, #0x5 + str r0, [r8, #0x82c] + add r0, r5, #0x5 + str r0, [r8, #0x828] + mov r0, #0x1 + strb r0, [r8, #0x456] + ldmia sp!, {r4-r8,lr} + bx lr +_020A1920: + mov r0, #0x9 + strb r0, [r8, #0x455] +_020A1928: + ldr r1, _020A1940 ; =CPSiFree + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A1940: .word CPSiFree + + arm_func_start update_digest +update_digest: ; 0x020A1944 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + add r0, r6, #0x2ec + bl CPSi_sha1_calc + mov r1, r5 + mov r2, r4 + add r0, r6, #0x3a4 + bl CPSi_md5_calc + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start tcp_read_raw_nbytes +tcp_read_raw_nbytes: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + add r4, sp, #0x0 +_020A198C: + mov r0, r4 + mov r1, r5 + bl CPSi_TcpReadRaw + ldr r1, [sp, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r1, r6 + strhi r6, [sp, #0x0] + ldr r2, [sp, #0x0] + mov r1, r7 + bl MI_CpuCopy8 + ldr r0, [sp, #0x0] + mov r1, r5 + bl CPSi_SocConsumeRaw + ldr r0, [sp, #0x0] + sub r6, r6, r0 + cmp r6, #0x0 + add r7, r7, r0 + bgt _020A198C + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start make_ciphertext +make_ciphertext: ; 0x020A19F4 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x30 + mov r5, r1 + mov r6, r0 + ldrh r0, [r6, #0x32] + ldrb r3, [r5, #0x3] + ldrb r2, [r5, #0x4] + add r1, r5, #0x5 + cmp r0, #0x4 + add r4, r2, r3, lsl #0x8 + add r8, r1, r4 + beq _020A1A30 + cmp r0, #0x5 + beq _020A1B04 + b _020A1BD4 +_020A1A30: + add r7, r6, #0x3fc + mov r0, r7 + bl CPSi_md5_init + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x10 + bl CPSi_md5_calc + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r7 + add r1, r6, #0x1cc + mov r2, #0x8 + bl CPSi_md5_calc + mov r0, r7 + mov r1, r5 + mov r2, #0x1 + bl CPSi_md5_calc + mov r0, r7 + add r1, r5, #0x3 + add r2, r4, #0x2 + bl CPSi_md5_calc + mov r0, r7 + mov r1, r8 + bl CPSi_md5_result + mov r0, r7 + bl CPSi_md5_init + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x10 + bl CPSi_md5_calc + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r7 + mov r1, r8 + mov r2, #0x10 + bl CPSi_md5_calc + mov r0, r7 + mov r1, r8 + bl CPSi_md5_result + add r4, r4, #0x10 + b _020A1BD4 +_020A1B04: + add r7, r6, #0x348 + mov r0, r7 + bl CPSi_sha1_init + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x14 + bl CPSi_sha1_calc + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r7 + add r1, r6, #0x1cc + mov r2, #0x8 + bl CPSi_sha1_calc + mov r0, r7 + mov r1, r5 + mov r2, #0x1 + bl CPSi_sha1_calc + mov r0, r7 + add r1, r5, #0x3 + add r2, r4, #0x2 + bl CPSi_sha1_calc + mov r0, r7 + mov r1, r8 + bl CPSi_sha1_result + mov r0, r7 + bl CPSi_sha1_init + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x14 + bl CPSi_sha1_calc + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r7 + mov r1, r8 + mov r2, #0x14 + bl CPSi_sha1_calc + mov r0, r7 + mov r1, r8 + bl CPSi_sha1_result + add r4, r4, #0x14 +_020A1BD4: + mov r0, r4, asr #0x8 + strb r0, [r5, #0x3] + mov r2, r4 + add r0, r6, #0xc8 + add r1, r5, #0x5 + strb r4, [r5, #0x4] + bl CPSi_rc4_crypt + add r0, r6, #0x1d4 + bl add1_be8 + add r0, r4, #0x5 + add sp, sp, #0x30 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start make_plaintext +make_plaintext: ; 0x020A1C08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r6, r1 + ldrb r3, [r6, #0x3] + ldrb r2, [r6, #0x4] + mov r7, r0 + add r1, r6, #0x5 + add r2, r2, r3, lsl #0x8 + bl decrypt + ldrh r1, [r7, #0x32] + mov r5, r0 + cmp r1, #0x4 + beq _020A1C48 + cmp r1, #0x5 + beq _020A1D2C + b _020A1E0C +_020A1C48: + sub r5, r5, #0x10 + mov r0, r5, asr #0x8 + strb r0, [r6, #0x3] + add r4, r7, #0x3fc + mov r0, r4 + strb r5, [r6, #0x4] + bl CPSi_md5_init + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x10 + bl CPSi_md5_calc + add r0, sp, #0x14 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r4 + add r1, r7, #0x2e4 + mov r2, #0x8 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r6 + mov r2, #0x1 + bl CPSi_md5_calc + mov r0, r4 + add r1, r6, #0x3 + add r2, r5, #0x2 + bl CPSi_md5_calc + mov r0, r4 + add r1, sp, #0x0 + bl CPSi_md5_result + mov r0, r4 + bl CPSi_md5_init + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x10 + bl CPSi_md5_calc + add r0, sp, #0x14 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x10 + bl CPSi_md5_calc + mov r0, r4 + add r1, sp, #0x0 + bl CPSi_md5_result + mov r4, #0x10 + b _020A1E0C +_020A1D2C: + sub r5, r5, #0x14 + mov r0, r5, asr #0x8 + strb r0, [r6, #0x3] + add r4, r7, #0x348 + mov r0, r4 + strb r5, [r6, #0x4] + bl CPSi_sha1_init + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x14 + bl CPSi_sha1_calc + add r0, sp, #0x14 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r4 + add r1, r7, #0x2e4 + mov r2, #0x8 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r6 + mov r2, #0x1 + bl CPSi_sha1_calc + mov r0, r4 + add r1, r6, #0x3 + add r2, r5, #0x2 + bl CPSi_sha1_calc + mov r0, r4 + add r1, sp, #0x0 + bl CPSi_sha1_result + mov r0, r4 + bl CPSi_sha1_init + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x14 + bl CPSi_sha1_calc + add r0, sp, #0x14 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x14 + bl CPSi_sha1_calc + mov r0, r4 + add r1, sp, #0x0 + bl CPSi_sha1_result + mov r4, #0x14 +_020A1E0C: + add r0, r6, #0x5 + add r1, sp, #0x0 + mov r2, r4 + add r0, r0, r5 + bl memcmp + cmp r0, #0x0 + movne r0, #0x9 + strneb r0, [r7, #0x455] + add r0, r7, #0x2ec + bl add1_be8 + add r0, r5, #0x5 + add sp, sp, #0x44 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start decrypt +decrypt: ; 0x020A1E44 + stmdb sp!, {r4,lr} + add r0, r0, #0x1e0 + mov r4, r2 + bl CPSi_rc4_crypt + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start add1_be8 +add1_be8: ; 0x020A1E60 + mov r2, #0x8 +_020A1E64: + ldrb r1, [r0, #-0x1]! + add r1, r1, #0x1 + ands r1, r1, #0xff + strb r1, [r0, #0x0] + bxne lr + subs r2, r2, #0x1 + bne _020A1E64 + bx lr + + arm_func_start rcv_finished +rcv_finished: ; 0x020A1E84 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x3a4 + add r1, r5, #0x3fc + mov r2, #0x58 + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x1 + bl finished_md5 + add r0, r5, #0x3fc + add r1, r5, #0x3a4 + mov r2, #0x58 + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x10 + bl memcmp + cmp r0, #0x0 + movne r0, #0x9 + addne sp, sp, #0x14 + strneb r0, [r5, #0x455] + ldmneia sp!, {r4-r5,lr} + bxne lr + add r0, r5, #0x2ec + add r1, r5, #0x348 + mov r2, #0x5c + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x1 + bl finished_sha1 + add r0, r5, #0x348 + add r1, r5, #0x2ec + mov r2, #0x5c + bl MI_CpuCopy8 + add r1, sp, #0x0 + add r0, r4, #0x10 + mov r2, #0x14 + bl memcmp + cmp r0, #0x0 + movne r0, #0x9 + strneb r0, [r5, #0x455] + moveq r0, #0x6 + streqb r0, [r5, #0x455] + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start finished_sha1 +finished_sha1: ; 0x020A1F4C + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x28 + mov r6, r0 + ldrb r0, [r6, #0x454] + mov r5, r1 + add r4, r6, #0x2ec + eors r0, r0, r2 + beq _020A1F80 + ldr r1, _020A202C ; =UNK_02106290 + mov r0, r4 + mov r2, #0x4 + bl CPSi_sha1_calc + b _020A1F90 +_020A1F80: + ldr r1, _020A2030 ; =UNK_02106298 + mov r0, r4 + mov r2, #0x4 + bl CPSi_sha1_calc +_020A1F90: + mov r0, r4 + mov r1, r6 + mov r2, #0x30 + bl CPSi_sha1_calc + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + bl CPSi_sha1_result + mov r0, r4 + bl CPSi_sha1_init + mov r1, r6 + mov r0, r4 + mov r2, #0x30 + bl CPSi_sha1_calc + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x28 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + bl CPSi_sha1_result + add sp, sp, #0x28 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A202C: .word UNK_02106290 +_020A2030: .word UNK_02106298 + + arm_func_start finished_md5 +finished_md5: ; 0x020A2034 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + mov r6, r0 + ldrb r0, [r6, #0x454] + mov r5, r1 + add r4, r6, #0x3a4 + eors r0, r0, r2 + beq _020A2068 + ldr r1, _020A2114 ; =UNK_02106290 + mov r0, r4 + mov r2, #0x4 + bl CPSi_md5_calc + b _020A2078 +_020A2068: + ldr r1, _020A2118 ; =UNK_02106298 + mov r0, r4 + mov r2, #0x4 + bl CPSi_md5_calc +_020A2078: + mov r0, r4 + mov r1, r6 + mov r2, #0x30 + bl CPSi_md5_calc + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r5 + bl CPSi_md5_result + mov r0, r4 + bl CPSi_md5_init + mov r1, r6 + mov r0, r4 + mov r2, #0x30 + bl CPSi_md5_calc + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x10 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r5 + bl CPSi_md5_result + add sp, sp, #0x30 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2114: .word UNK_02106290 +_020A2118: .word UNK_02106298 + + arm_func_start rcv_client_key_exchange +rcv_client_key_exchange: ; 0x020A211C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r2, [r4, #0x81c] + bl decrypt_premaster_secret + mov r0, r4 + bl create_master_secret + mov r1, #0x0 + mov r0, r4 + mov r2, r1 + bl cache_session + mov r0, r4 + bl create_key_block + mov r0, #0x5 + strb r0, [r4, #0x455] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start create_key_block +create_key_block: ; 0x020A215C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r10, r0 + ldrh r0, [r10, #0x32] + cmp r0, #0x4 + beq _020A2190 + cmp r0, #0x5 + moveq r0, #0x14 + streq r0, [sp, #0x0] + moveq r0, #0x10 + streq r0, [sp, #0x4] + moveq r2, #0x0 + b _020A21A0 +_020A2190: + mov r0, #0x10 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 +_020A21A0: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + mov r9, #0x0 + add r0, r1, r0 + add r0, r2, r0 + mov r0, r0, lsl #0x1 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _020A22B8 + mov r0, #0x20 + str r0, [sp, #0x10] + mov r0, #0x14 + mov r6, r9 + add r5, sp, #0x18 + str r9, [sp, #0xc] + mov r4, #0x1 + mov r11, #0x30 + str r0, [sp, #0x14] +_020A21E8: + add r7, r10, #0x348 + mov r0, r7 + bl CPSi_sha1_init + add r0, r9, #0x41 + strb r0, [sp, #0x18] + add r0, r9, #0x1 + ldr r8, [sp, #0xc] + cmp r0, #0x0 + ble _020A222C +_020A220C: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl CPSi_sha1_calc + add r8, r8, #0x1 + add r0, r9, #0x1 + cmp r8, r0 + blt _020A220C +_020A222C: + mov r0, r7 + mov r1, r10 + mov r2, r11 + bl CPSi_sha1_calc + ldr r2, [sp, #0x10] + mov r0, r7 + add r1, r10, #0x54 + bl CPSi_sha1_calc + ldr r2, [sp, #0x10] + mov r0, r7 + add r1, r10, #0x34 + bl CPSi_sha1_calc + mov r0, r7 + add r1, sp, #0x19 + bl CPSi_sha1_result + add r7, r10, #0x3fc + mov r0, r7 + bl CPSi_md5_init + mov r0, r7 + mov r1, r10 + mov r2, r11 + bl CPSi_md5_calc + ldr r2, [sp, #0x14] + mov r0, r7 + add r1, sp, #0x19 + bl CPSi_md5_calc + add r1, r10, #0x74 + mov r0, r7 + add r1, r1, r6 + bl CPSi_md5_result + ldr r0, [sp, #0x8] + add r6, r6, #0x10 + cmp r6, r0 + add r9, r9, #0x1 + blt _020A21E8 +_020A22B8: + ldrb r0, [r10, #0x454] + cmp r0, #0x0 + beq _020A2300 + add r1, r10, #0x74 + str r1, [r10, #0x1d4] + ldr r0, [sp, #0x0] + ldr r2, [r10, #0x1d4] + add r1, r1, r0 + add r0, r2, r0, lsl #0x1 + str r0, [r10, #0x1d8] + str r1, [r10, #0xbc] + ldr r1, [r10, #0xbc] + ldr r0, [sp, #0x0] + add r1, r1, r0 + ldr r0, [sp, #0x4] + add r0, r1, r0 + str r0, [r10, #0xc0] + b _020A2338 +_020A2300: + add r1, r10, #0x74 + str r1, [r10, #0xbc] + ldr r0, [sp, #0x0] + ldr r2, [r10, #0xbc] + add r1, r1, r0 + add r0, r2, r0, lsl #0x1 + str r0, [r10, #0xc0] + str r1, [r10, #0x1d4] + ldr r1, [r10, #0x1d4] + ldr r0, [sp, #0x0] + add r1, r1, r0 + ldr r0, [sp, #0x4] + add r0, r1, r0 + str r0, [r10, #0x1d8] +_020A2338: + ldr r1, [r10, #0x1d8] + add r0, r10, #0x1e0 + mov r2, #0x10 + bl CPSi_rc4_init + ldr r1, [r10, #0xc0] + add r0, r10, #0xc8 + mov r2, #0x10 + bl CPSi_rc4_init + add sp, sp, #0x34 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start create_master_secret +create_master_secret: ; 0x020A2364 + stmdb sp!, {r4,lr} + sub sp, sp, #0x30 + mov r4, r0 + ldr r1, _020A23BC ; =UNK_021062A0 + add r0, sp, #0x0 + mov r2, r4 + bl create_ms_sub + ldr r1, _020A23C0 ; =UNK_021062A4 + add r0, sp, #0x10 + mov r2, r4 + bl create_ms_sub + ldr r1, _020A23C4 ; =UNK_021062A8 + add r0, sp, #0x20 + mov r2, r4 + bl create_ms_sub + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x30 + bl MI_CpuCopy8 + add sp, sp, #0x30 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A23BC: .word UNK_021062A0 +_020A23C0: .word UNK_021062A4 +_020A23C4: .word UNK_021062A8 + + arm_func_start create_ms_sub +create_ms_sub: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r5, r2 + add r4, r5, #0x348 + mov r7, r0 + mov r6, r1 + mov r0, r4 + bl CPSi_sha1_init + mov r0, r6 + bl strlen + mov r2, r0 + mov r1, r6 + mov r0, r4 + bl CPSi_sha1_calc + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl CPSi_sha1_calc + mov r0, r4 + add r1, r5, #0x34 + mov r2, #0x40 + bl CPSi_sha1_calc + mov r0, r4 + add r1, sp, #0x0 + bl CPSi_sha1_result + add r4, r5, #0x3fc + mov r0, r4 + bl CPSi_md5_init + mov r1, r5 + mov r0, r4 + mov r2, #0x30 + bl CPSi_md5_calc + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x14 + bl CPSi_md5_calc + mov r0, r4 + mov r1, r7 + bl CPSi_md5_result + add sp, sp, #0x14 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start decrypt_premaster_secret +decrypt_premaster_secret: ; 0x020A2470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + movs r10, r2 + str r0, [sp, #0x8] + mov r11, r1 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, [r10, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, r0, lsl #0x1 + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + add r9, r0, #0x1 + mov r0, #0x14 + mul r0, r9, r0 + ldr r1, _020A26C8 ; =CPSiAlloc + ldr r1, [r1, #0x0] + blx r1 + movs r8, r0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + add r7, r8, r9, lsl #0x1 + add r6, r7, r9, lsl #0x1 + add r1, r6, r9, lsl #0x1 + str r1, [sp, #0xc] + add r1, r1, r9, lsl #0x1 + add r5, r1, r9, lsl #0x1 + str r1, [sp, #0x10] + ldr r2, [r10, #0x0] + add r4, r5, r9, lsl #0x1 + mov r1, r11 + mov r3, r9 + add r11, r4, r9, lsl #0x1 + bl CPSi_big_from_char + ldr r1, [r10, #0x1c] + ldr r2, [r10, #0x18] + mov r0, r7 + mov r3, r9 + bl CPSi_big_from_char + ldr r1, [r10, #0xc] + ldr r2, [r10, #0x8] + mov r0, r5 + mov r3, r9 + bl CPSi_big_from_char + bl enter_computebound + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + str r5, [sp, #0x0] + mov r1, r8 + mov r2, r7 + mov r3, r9 + bl CPSi_big_montpower + ldr r1, [r10, #0x24] + ldr r2, [r10, #0x20] + mov r0, r7 + mov r3, r9 + bl CPSi_big_from_char + ldr r1, [r10, #0x14] + ldr r2, [r10, #0x10] + mov r0, r5 + mov r3, r9 + bl CPSi_big_from_char + ldr r0, [sp, #0x10] + mov r1, r8 + mov r2, r7 + mov r3, r9 + str r5, [sp, #0x0] + bl CPSi_big_montpower + ldr r0, [sp, #0x14] + bl exit_computebound + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + mov r0, r8 + mov r3, r9 + bl CPSi_big_sub + ldr r1, [r10, #0x2c] + ldr r2, [r10, #0x28] + mov r0, r7 + mov r3, r9 + bl CPSi_big_from_char + mov r0, r6 + mov r1, r8 + mov r2, r7 + mov r3, r9 + bl CPSi_big_mult + ldr r1, [r10, #0x14] + ldr r2, [r10, #0x10] + mov r0, r7 + mov r3, r9 + bl CPSi_big_from_char + mov r0, r8 + mov r1, r6 + mov r2, r7 + mov r3, r9 + bl CPSi_big_mult + ldr r2, [sp, #0x10] + mov r0, r6 + mov r1, r8 + mov r3, r9 + bl CPSi_big_add + ldr r1, [r10, #0x4] + ldr r2, [r10, #0x0] + mov r0, r7 + mov r3, r9 + bl CPSi_big_from_char + mov r0, r6 + mov r1, r9 + bl CPSi_big_sign + cmp r0, #0x0 + bge _020A267C + mov r0, r6 + mov r1, r9 + bl CPSi_big_negate + str r9, [sp, #0x0] + mov r1, r6 + mov r2, r7 + mov r3, r4 + mov r0, #0x0 + str r11, [sp, #0x4] + bl CPSi_big_div + mov r0, r4 + mov r1, r7 + mov r2, r4 + mov r3, r9 + bl CPSi_big_sub + b _020A2698 +_020A267C: + str r9, [sp, #0x0] + mov r1, r6 + mov r2, r7 + mov r3, r4 + mov r0, #0x0 + str r11, [sp, #0x4] + bl CPSi_big_div +_020A2698: + ldr r0, [sp, #0x8] + mov r1, r4 + mov r3, r9 + mov r2, #0x30 + bl CPSi_char_from_big + ldr r1, _020A26CC ; =CPSiFree + mov r0, r8 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A26C8: .word CPSiAlloc +_020A26CC: .word CPSiFree + + arm_func_start client_hello +client_hello: ; 0x020A26D0 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r4, r0 + ldrb r0, [r6, #0x0] + ldrb r1, [r6, #0x1] + bl version_ok + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + add r0, r6, #0x2 + add r1, r4, #0x34 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrb r5, [r6, #0x22] + add r6, r6, #0x23 + cmp r5, #0x20 + movne r0, #0x0 + strneb r0, [r4, #0x30] + bne _020A2734 + mov r0, r6 + add r1, r4, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, r4 + bl find_session_from_id +_020A2734: + add r0, r6, r5 + ldrb r1, [r0, #0x1] + ldrb r3, [r6, r5] + add r0, r0, #0x2 + mov r2, #0x2 + add r1, r1, r3, lsl #0x8 + add r1, r1, r1, lsr #0x1f + mov r1, r1, asr #0x1 + bl select_method + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + strh r0, [r4, #0x32] + movne r0, #0x1 + strneb r0, [r4, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start client_hello_v2 +client_hello_v2: ; 0x020A2774 + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r6, r0 + ldrb r0, [r5, #0x0] + ldrb r1, [r5, #0x1] + bl version_ok + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrb r2, [r5, #0x2] + ldrb r1, [r5, #0x3] + ldr r3, _020A2848 ; =0x55555556 + add r0, r5, #0x8 + add r4, r1, r2, lsl #0x8 + smull r2, r1, r3, r4 + add r1, r1, r4, lsr #0x1f + mov r2, #0x3 + bl select_method + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + strh r0, [r6, #0x32] + ldrb r12, [r5, #0x4] + ldrb r0, [r5, #0x5] + ldrb r3, [r5, #0x6] + ldrb r2, [r5, #0x7] + mov r1, #0x0 + add r12, r0, r12, lsl #0x8 + add r0, r4, #0x8 + add r4, r2, r3, lsl #0x8 + add r0, r0, r12 + strb r1, [r6, #0x30] + cmp r4, #0x20 + add r5, r5, r0 + blt _020A2818 + mov r0, r5 + add r1, r6, #0x34 + mov r2, #0x20 + bl MI_CpuCopy8 + b _020A2838 +_020A2818: + add r0, r6, #0x34 + rsb r2, r4, #0x20 + bl MI_CpuFill8 + add r1, r6, #0x54 + mov r0, r5 + mov r2, r4 + sub r1, r1, r4 + bl MI_CpuCopy8 +_020A2838: + mov r0, #0x1 + strb r0, [r6, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2848: .word 0x55555556 + + arm_func_start version_ok +version_ok: + cmp r0, #0x3 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start select_method +select_method: ; 0x020A285C + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0x0 + ldr r4, _020A28BC ; =pairlist +_020A2874: + mov r0, r5, lsl #0x1 + ldrh r3, [r4, r0] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl has_method + cmp r0, #0x0 + ldrne r0, _020A28BC ; =pairlist + movne r1, r5, lsl #0x1 + ldrneh r0, [r0, r1] + ldmneia sp!, {r4-r8,lr} + bxne lr + add r5, r5, #0x1 + cmp r5, #0x2 + blo _020A2874 + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A28BC: .word pairlist + + arm_func_start has_method +has_method: + stmdb sp!, {r4,lr} + cmp r1, #0x0 + mov r4, #0x0 + ble _020A2908 +_020A28D0: + ldrb lr, [r0, #0x0] + ldrb r12, [r0, #0x1] + cmp r2, #0x3 + add lr, r12, lr, lsl #0x8 + ldreqb r12, [r0, #0x2] + addeq lr, r12, lr, lsl #0x8 + cmp lr, r3 + moveq r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r1 + add r0, r0, r2 + blt _020A28D0 +_020A2908: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start rcv_server_hello +rcv_server_hello: ; 0x020A2914 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + add r0, r5, #0x2 + add r1, r6, #0x54 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r5, #0x22 + ldrb r7, [r6, #0x30] + add r5, r5, #0x23 + ldrb r4, [r0, #0x0] + cmp r7, #0x0 + beq _020A2974 + cmp r4, #0x20 + bne _020A2974 + mov r1, r5 + add r0, r6, #0x74 + mov r2, #0x20 + bl memcmp + cmp r0, #0x0 + moveq r0, #0x1 + streqb r0, [r6, #0x31] + beq _020A29B4 +_020A2974: + cmp r7, #0x0 + beq _020A2984 + mov r0, r6 + bl purge_session +_020A2984: + cmp r4, #0x0 + moveq r0, #0x0 + streqb r0, [r6, #0x30] + beq _020A29AC + mov r0, r5 + add r1, r6, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r6, #0x30] +_020A29AC: + mov r0, #0x0 + strb r0, [r6, #0x31] +_020A29B4: + add r0, r5, r4 + ldrb r2, [r5, r4] + ldrb r1, [r0, #0x1] + mov r0, #0x2 + add r1, r1, r2, lsl #0x8 + strh r1, [r6, #0x32] + strb r0, [r6, #0x455] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start rcv_certificate +rcv_certificate: ; 0x020A29DC + stmdb sp!, {r0-r3} + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r1, [sp, #0x4c] + mov r10, r0 + ldrb r4, [r1, #0x2] + ldrb r3, [r1, #0x0] + ldrb r2, [r1, #0x1] + add r0, r1, #0x3 + mvn r1, #0x0 + str r0, [sp, #0x4c] + add r2, r2, r3, lsl #0x8 + add r0, sp, #0x14 + str r1, [r10, #0x45c] + add r7, r4, r2, lsl #0x8 + bl RTC_GetDate + mov r8, #0x0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x1c] + add r1, r0, #0x7d0 + ldr r0, [sp, #0x18] + mov r1, r1, lsl #0x10 + add r0, r1, r0, lsl #0x8 + add r0, r2, r0 + str r0, [r10, #0x80c] + strb r8, [r10, #0x6b0] + str r8, [r10, #0x5a0] + ldr r0, [r10, #0x5a0] + mov r6, r8 + str r0, [r10, #0x594] + add r0, r10, #0x7b0 + str r0, [sp, #0x4] + mov r0, #0x1 + str r8, [sp, #0x8] + mov r4, r8 + mov r11, #0x2 + str r0, [sp, #0xc] + mvn r5, #0x0 +_020A2A74: + ldr r1, [sp, #0x4c] + mov r0, r10 + ldrb r2, [r1, #0x2] + ldrb r12, [r1, #0x0] + ldrb r3, [r1, #0x1] + add r9, r1, #0x3 + add r1, sp, #0x4c + str r9, [sp, #0x4c] + str r5, [r10, #0x458] + strb r4, [r10, #0x5ad] + strb r4, [r10, #0x5ac] + strb r4, [r10, #0x5af] + strb r4, [r10, #0x6b0] + strb r4, [r10, #0x5b0] + strb r4, [r10, #0x7b0] + add r3, r3, r12, lsl #0x8 + ldr r9, [sp, #0x4c] + add r3, r2, r3, lsl #0x8 + add r2, r3, #0x3 + str r9, [r10, #0x804] + str r3, [r10, #0x808] + sub r7, r7, r2 + mov r2, r4 + mov r3, r4 + str r8, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + bne _020A2AFC + ldr r0, [r10, #0x594] + cmp r0, #0x33 + blo _020A2AFC + ldr r0, [r10, #0x5a0] + cmp r0, #0x0 + bne _020A2B14 +_020A2AFC: + mov r0, #0x9 + add sp, sp, #0x24 + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + add sp, sp, #0x10 + bx lr +_020A2B14: + mov r0, r10 + bl auth_cert + mov r8, r0 + cmp r6, #0x0 + bne _020A2B44 + ldr r0, [r10, #0x800] + cmp r0, #0x0 + beq _020A2B44 + ldr r1, [sp, #0x4] + bl compare_fqdn + cmp r0, #0x0 + orrne r8, r8, #0x4000 +_020A2B44: + and r9, r8, #0xff + cmp r9, #0x1 + bne _020A2BB4 + cmp r7, #0x0 + beq _020A2BB4 + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x8] + add r1, r1, #0x3 + str r1, [sp, #0x10] + ldr r1, [sp, #0x8] + mov r0, r10 + strb r1, [r10, #0x5ad] + add r1, sp, #0x10 + mov r3, r2 + str r11, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + movne r0, #0x9 + addne sp, sp, #0x24 + strneb r0, [r10, #0x455] + ldmneia sp!, {r4-r11,lr} + addne sp, sp, #0x10 + bxne lr + mov r0, r10 + add r1, r10, #0x480 + bl validate_signature + bic r1, r8, #0xff + orr r8, r1, r0 +_020A2BB4: + ldr r3, [r10, #0x810] + cmp r3, #0x0 + beq _020A2BD4 + mov r0, r8 + mov r1, r10 + mov r2, r6 + blx r3 + mov r8, r0 +_020A2BD4: + cmp r9, #0x0 + add r6, r6, #0x1 + beq _020A2BF4 + cmp r8, #0x0 + bne _020A2BF4 + cmp r7, #0x0 + ldrne r8, [sp, #0xc] + bne _020A2A74 +_020A2BF4: + cmp r8, #0x0 + moveq r0, #0x3 + streqb r0, [r10, #0x455] + movne r0, #0x9 + strneb r0, [r10, #0x455] + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + add sp, sp, #0x10 + bx lr + + arm_func_start compare_fqdn +compare_fqdn: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + b _020A2C38 +_020A2C28: + cmp r1, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_020A2C38: + ldrsb r0, [r5], #0x1 + ldrsb r1, [r6], #0x1 + cmp r1, r0 + beq _020A2C28 + cmp r0, #0x2a + movne r0, #0x1 + ldmneia sp!, {r4-r6,lr} + bxne lr + sub r6, r6, #0x1 + mov r0, r6 + bl chars_till_end + mov r4, r0 + mov r0, r5 + bl chars_till_end + cmp r0, r4 + movgt r0, #0x1 + ldmgtia sp!, {r4-r6,lr} + bxgt lr + sub r0, r4, r0 + add r6, r6, r0 + b _020A2C38 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start chars_till_end +chars_till_end: ; 0x020A2C94 + mov r2, r0 + b _020A2CA0 +_020A2C9C: + add r0, r0, #0x1 +_020A2CA0: + ldrsb r1, [r0, #0x0] + cmp r1, #0x2e + beq _020A2CB4 + cmp r1, #0x0 + bne _020A2C9C +_020A2CB4: + sub r0, r0, r2 + bx lr + + arm_func_start auth_cert +auth_cert: ; 0x020A2CBC + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrb r0, [r5, #0x5af] + ldr r1, [r5, #0x45c] + cmp r0, #0x0 + movne r4, #0x0 + moveq r4, #0x8000 + mvn r0, #0x0 + cmp r1, r0 + orreq r0, r4, #0x4 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r5, #0x458] + cmp r0, #0x3 + beq _020A2D04 + cmp r0, #0x4 + beq _020A2D40 + b _020A2D7C +_020A2D04: + add r6, r5, #0x3fc + mov r0, r6 + bl CPSi_md5_init + ldr r1, [r5, #0x460] + ldr r2, [r5, #0x464] + mov r0, r6 + sub r2, r2, r1 + bl CPSi_md5_calc + ldr r1, _020A2DB8 ; =0x00000468 + mov r0, r6 + add r1, r5, r1 + bl CPSi_md5_result + mov r0, #0x10 + str r0, [r5, #0x47c] + b _020A2D88 +_020A2D40: + add r6, r5, #0x348 + mov r0, r6 + bl CPSi_sha1_init + ldr r1, [r5, #0x460] + ldr r2, [r5, #0x464] + mov r0, r6 + sub r2, r2, r1 + bl CPSi_sha1_calc + ldr r1, _020A2DB8 ; =0x00000468 + mov r0, r6 + add r1, r5, r1 + bl CPSi_sha1_result + mov r0, #0x14 + str r0, [r5, #0x47c] + b _020A2D88 +_020A2D7C: + orr r0, r4, #0x3 + ldmia sp!, {r4-r6,lr} + bx lr +_020A2D88: + mov r0, r5 + add r1, r5, #0x5b0 + bl get_rootCA + movs r1, r0 + orreq r0, r4, #0x1 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, r5 + bl validate_signature + orr r0, r4, r0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2DB8: .word 0x00000468 + + arm_func_start validate_signature +validate_signature: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + ldr r0, [r8, #0x5a4] + mov r7, r1 + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r8, #0x5a8] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x10] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0xc] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x8] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x4] + cmp r0, #0x0 + bne _020A2E24 +_020A2E14: + add sp, sp, #0x8 + mov r0, #0x2 + ldmia sp!, {r4-r10,lr} + bx lr +_020A2E24: + mov r0, r0, lsl #0x1 + ldr r1, _020A2F8C ; =CPSiAlloc + add r0, r0, r0, lsr #0x1f + mov r4, r0, asr #0x1 + ldr r1, [r1, #0x0] + mov r0, r4, lsl #0x3 + blx r1 + movs r6, r0 + addeq sp, sp, #0x8 + moveq r0, #0x2 + ldmeqia sp!, {r4-r10,lr} + bxeq lr + add r5, r6, r4, lsl #0x1 + add r10, r5, r4, lsl #0x1 + ldr r1, [r8, #0x5a4] + ldr r2, [r8, #0x5a8] + mov r0, r5 + mov r3, r4 + add r9, r10, r4, lsl #0x1 + bl CPSi_big_from_char + ldr r1, [r7, #0x10] + ldr r2, [r7, #0xc] + mov r0, r10 + mov r3, r4 + bl CPSi_big_from_char + mov r0, r9 + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x4] + mov r3, r4 + bl CPSi_big_from_char + bl enter_computebound + str r9, [sp, #0x0] + mov r2, r10 + mov r9, r0 + mov r0, r6 + mov r1, r5 + mov r3, r4 + bl CPSi_big_power + mov r0, r9 + bl exit_computebound + mov r0, r5 + mov r1, r6 + ldr r2, [r7, #0x4] + mov r3, r4 + bl CPSi_char_from_big + ldrb r0, [r6, r4, lsl #0x1] + mov r4, #0x0 + cmp r0, #0x0 + bne _020A2EF4 + ldrb r0, [r5, #0x1] + cmp r0, #0x1 + beq _020A2EFC +_020A2EF4: + mov r4, #0x2 + b _020A2F6C +_020A2EFC: + ldr r3, [r7, #0x4] + mov r2, #0x2 + cmp r3, #0x2 + ble _020A2F24 +_020A2F0C: + ldrb r0, [r5, r2] + cmp r0, #0xff + bne _020A2F24 + add r2, r2, #0x1 + cmp r2, r3 + blt _020A2F0C +_020A2F24: + add r1, r2, #0x1 + cmp r1, r3 + bge _020A2F68 + ldrb r0, [r5, r2] + cmp r0, #0x0 + bne _020A2F68 + ldrb r0, [r5, r1] + cmp r0, #0x30 + bne _020A2F68 + ldr r0, _020A2F90 ; =0x00000468 + ldr r2, [r8, #0x47c] + add r1, r5, r3 + add r0, r8, r0 + sub r1, r1, r2 + bl memcmp + cmp r0, #0x0 + beq _020A2F6C +_020A2F68: + mov r4, #0x2 +_020A2F6C: + ldr r1, _020A2F94 ; =CPSiFree + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_020A2F8C: .word CPSiAlloc +_020A2F90: .word 0x00000468 +_020A2F94: .word CPSiFree + + arm_func_start cert_item +cert_item: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + str r1, [sp, #0x4] + ldr r1, [r1, #0x0] + mov r9, r0 + str r1, [sp, #0x8] + add r0, r1, #0x1 + str r0, [sp, #0x8] + add r0, sp, #0x8 + mov r5, r2 + mov r4, r3 + ldr r8, [sp, #0x30] + ldrb r6, [r1, #0x0] + bl cert_item_len + movs r7, r0 + bmi _020A2FE0 + cmp r7, #0x7d0 + ble _020A2FF0 +_020A2FE0: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020A2FF0: + and r1, r6, #0x1f + cmp r1, #0x18 + addls pc, pc, r1, lsl #0x2 + b _020A3430 +_020A3000: ; jump table + b _020A3430 ; case 0 + b _020A3430 ; case 1 + b _020A3064 ; case 2 + b _020A315C ; case 3 + b _020A3430 ; case 4 + b _020A3430 ; case 5 + b _020A31DC ; case 6 + b _020A3430 ; case 7 + b _020A3430 ; case 8 + b _020A3430 ; case 9 + b _020A3430 ; case 10 + b _020A3430 ; case 11 + b _020A3274 ; case 12 + b _020A3430 ; case 13 + b _020A3430 ; case 14 + b _020A3430 ; case 15 + b _020A3348 ; case 16 + b _020A33D8 ; case 17 + b _020A3430 ; case 18 + b _020A3274 ; case 19 + b _020A3274 ; case 20 + b _020A3430 ; case 21 + b _020A3274 ; case 22 + b _020A32F4 ; case 23 + b _020A32F4 ; case 24 +_020A3064: + ldrb r0, [r9, #0x5ad] + cmp r0, #0x0 + beq _020A314C + cmp r4, #0x0 + bne _020A30E0 + ldr r0, [sp, #0x8] + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + bne _020A30A4 +_020A3088: + ldr r1, [sp, #0x8] + sub r7, r7, #0x1 + add r0, r1, #0x1 + str r0, [sp, #0x8] + ldrb r1, [r1, #0x1] + cmp r1, #0x0 + beq _020A3088 +_020A30A4: + cmp r8, #0x0 + beq _020A30C0 + cmp r8, #0x2 + streq r7, [r9, #0x484] + ldreq r0, [sp, #0x8] + streq r0, [r9, #0x488] + b _020A314C +_020A30C0: + cmp r7, #0x100 + bgt _020A314C + ldr r1, _020A34B8 ; =0x00000494 + mov r2, r7 + add r1, r9, r1 + bl MI_CpuCopy8 + str r7, [r9, #0x594] + b _020A314C +_020A30E0: + cmp r4, #0x1 + bne _020A314C + ldr r0, [sp, #0x8] + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + bne _020A3114 +_020A30F8: + ldr r1, [sp, #0x8] + sub r7, r7, #0x1 + add r0, r1, #0x1 + str r0, [sp, #0x8] + ldrb r1, [r1, #0x1] + cmp r1, #0x0 + beq _020A30F8 +_020A3114: + cmp r8, #0x0 + beq _020A3130 + cmp r8, #0x2 + streq r7, [r9, #0x48c] + ldreq r0, [sp, #0x8] + streq r0, [r9, #0x490] + b _020A314C +_020A3130: + cmp r7, #0x8 + bgt _020A314C + ldr r1, _020A34BC ; =0x00000598 + mov r2, r7 + add r1, r9, r1 + bl MI_CpuCopy8 + str r7, [r9, #0x5a0] +_020A314C: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A315C: + cmp r5, #0x1 + bne _020A317C + cmp r8, #0x2 + ldrne r1, [sp, #0x8] + subne r0, r7, #0x1 + addne r1, r1, #0x1 + strne r1, [r9, #0x5a4] + strne r0, [r9, #0x5a8] +_020A317C: + ldrb r0, [r9, #0x5ad] + cmp r0, #0x0 + beq _020A31CC + ldr r0, [sp, #0x8] + add r1, sp, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x8] + mov r0, r9 + mov r2, r5 + mov r3, #0x0 + str r8, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + mov r0, #0x0 + strb r0, [r9, #0x5ad] + b _020A349C +_020A31CC: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A31DC: + ldr r5, [sp, #0x8] + mov r6, #0x0 + ldr sl, _020A34C0 ; =object +_020A31E8: + ldr r4, [r10, r6, lsl #0x2] + mov r0, r4 + bl strlen + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl memcmp + cmp r0, #0x0 + bne _020A3258 + cmp r6, #0x5 + addls pc, pc, r6, lsl #0x2 + b _020A3264 +_020A3218: ; jump table + b _020A3264 ; case 0 + b _020A3230 ; case 1 + b _020A3230 ; case 2 + b _020A3240 ; case 3 + b _020A3240 ; case 4 + b _020A324C ; case 5 +_020A3230: + cmp r8, #0x0 + streq r6, [r9, #0x45c] + strb r6, [r9, #0x5ad] + b _020A3264 +_020A3240: + cmp r8, #0x2 + strne r6, [r9, #0x458] + b _020A3264 +_020A324C: + cmp r8, #0x2 + strneb r6, [r9, #0x5ae] + b _020A3264 +_020A3258: + add r6, r6, #0x1 + cmp r6, #0x6 + blt _020A31E8 +_020A3264: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A3274: + cmp r8, #0x2 + beq _020A32DC + ldrb r0, [r9, #0x5ac] + cmp r0, #0x0 + beq _020A32CC + ldr r1, [sp, #0x8] + mov r2, r7 + add r0, r9, #0x6b0 + bl make_dn + ldrb r0, [r9, #0x5ae] + cmp r0, #0x5 + bne _020A32DC + cmp r7, #0x4f + bgt _020A32DC + ldr r0, [sp, #0x8] + mov r2, r7 + add r1, r9, #0x7b0 + bl MI_CpuCopy8 + add r0, r9, r7 + mov r1, #0x0 + strb r1, [r0, #0x7b0] + b _020A32DC +_020A32CC: + ldr r1, [sp, #0x8] + mov r2, r7 + add r0, r9, #0x5b0 + bl make_dn +_020A32DC: + mov r0, #0x0 + strb r0, [r9, #0x5ae] + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A32F4: + cmp r8, #0x2 + beq _020A3330 + ldr r0, [sp, #0x8] + bl parse_time + cmp r4, #0x0 + bne _020A3320 + ldr r1, [r9, #0x80c] + cmp r1, r0 + movcs r0, #0x1 + strcsb r0, [r9, #0x5af] + b _020A3330 +_020A3320: + ldr r1, [r9, #0x80c] + cmp r1, r0 + movhi r0, #0x0 + strhib r0, [r9, #0x5af] +_020A3330: + ldr r1, [sp, #0x8] + mov r0, #0x1 + add r1, r1, r7 + str r1, [sp, #0x8] + strb r0, [r9, #0x5ac] + b _020A349C +_020A3348: + cmp r5, #0x0 + bne _020A3364 + cmp r4, #0x0 + bne _020A3364 + cmp r8, #0x2 + ldrne r0, [sp, #0x8] + strne r0, [r9, #0x460] +_020A3364: + ldr r0, [sp, #0x8] + mov r10, #0x0 + add r7, r0, r7 + cmp r0, r7 + bhs _020A33BC + add r11, sp, #0x8 + add r6, r5, #0x1 +_020A3380: + mov r0, r9 + mov r1, r11 + mov r2, r6 + mov r3, r10 + str r8, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + add r10, r10, #0x1 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r7 + blo _020A3380 +_020A33BC: + cmp r5, #0x1 + bne _020A349C + cmp r4, #0x0 + bne _020A349C + cmp r8, #0x2 + strne r0, [r9, #0x464] + b _020A349C +_020A33D8: + ldr r0, [sp, #0x8] + add r6, r0, r7 + cmp r0, r6 + bhs _020A349C + add r7, r5, #0x1 + add r4, sp, #0x8 + mov r5, #0x0 +_020A33F4: + mov r0, r9 + mov r1, r4 + mov r2, r7 + mov r3, r5 + str r8, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r6 + blo _020A33F4 + b _020A349C +_020A3430: + cmp r6, #0xa0 + bne _020A3490 + ldr r0, [sp, #0x8] + add r6, r0, r7 + cmp r0, r6 + bhs _020A349C + add r7, r5, #0x1 + add r4, sp, #0x8 + mov r5, #0x0 +_020A3454: + mov r0, r9 + mov r1, r4 + mov r2, r7 + mov r3, r5 + str r8, [sp, #0x0] + bl cert_item + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r6 + blo _020A3454 + b _020A349C +_020A3490: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] +_020A349C: + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x4] + mov r0, #0x0 + str r2, [r1, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A34B8: .word 0x00000494 +_020A34BC: .word 0x00000598 +_020A34C0: .word object + + arm_func_start parse_time +parse_time: + stmdb sp!, {r4,lr} + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r2, #0xa + cmp r1, #0x17 + mla r1, r3, r2, r12 + sub lr, r1, #0x210 + add r0, r0, #0x2 + bne _020A34FC + cmp lr, #0x32 + ldrhs r1, _020A3550 ; =0x0000076C + addcc r4, lr, #0x7d0 + addcs r4, lr, r1 + b _020A3518 +_020A34FC: + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r1, #0x64 + add r0, r0, #0x2 + mla r2, r3, r2, r12 + sub r2, r2, #0x210 + mla r4, lr, r1, r2 +_020A3518: + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r1, #0xa + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x2] + mla r12, r3, r1, r12 + mla r1, r0, r1, r2 + mov r2, r4, lsl #0x10 + sub r0, r12, #0x210 + add r2, r2, r0, lsl #0x8 + sub r0, r1, #0x210 + add r0, r2, r0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A3550: .word 0x0000076C + + arm_func_start make_dn +make_dn: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrsb r3, [r0, #0x0] + mov lr, r0 + cmp r3, #0x0 + beq _020A35AC +_020A356C: + ldrsb r3, [r0, #0x1]! + cmp r3, #0x0 + bne _020A356C + sub r3, r0, lr + cmp r3, #0xff + addge sp, sp, #0x4 + ldmgeia sp!, {lr} + bxge lr + mov r3, #0x2c + strb r3, [r0, #0x0] + mov r3, #0x20 + strb r3, [r0, #0x1] + add r0, r0, #0x2 + b _020A35AC +_020A35A4: + ldrsb r3, [r1], #0x1 + strb r3, [r0], #0x1 +_020A35AC: + cmp r2, #0x0 + sub r2, r2, #0x1 + beq _020A35C4 + sub r3, r0, lr + cmp r3, #0xff + blt _020A35A4 +_020A35C4: + mov r1, #0x0 + strb r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start cert_item_len +cert_item_len: ; 0x020A35D8 + ldr r1, [r0, #0x0] + ldrb r3, [r1, #0x0] + add r12, r1, #0x1 + ands r1, r3, #0x80 + beq _020A361C + ands r1, r3, #0x7f + sub r2, r1, #0x1 + mov r3, #0x0 + beq _020A361C +_020A35FC: + ands r1, r3, #0xff000000 + mvnne r0, #0x0 + bxne lr + ldrb r1, [r12], #0x1 + cmp r2, #0x0 + sub r2, r2, #0x1 + add r3, r1, r3, lsl #0x8 + bne _020A35FC +_020A361C: + str r12, [r0, #0x0] + mov r0, r3 + bx lr + + arm_func_start get_rootCA +get_rootCA: ; 0x020A3628 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, [r0, #0x818] + mov r7, r1 + cmp r4, #0x0 + mov r6, #0x0 + ble _020A3678 + ldr r5, [r0, #0x814] +_020A3648: + ldr r0, [r5, r6, lsl #0x2] + mov r1, r7 + ldr r0, [r0, #0x0] + bl strcmp + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldreq r0, [r5, r6, lsl #0x2] + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r6, r6, #0x1 + cmp r6, r4 + blt _020A3648 +_020A3678: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start CPS_SetRootCa +CPS_SetRootCa: ; 0x020A3688 + ldr r2, _020A36B0 ; =OSi_ThreadInfo + ldr r2, [r2, #0x4] + ldr r2, [r2, #0xa4] + cmp r2, #0x0 + bxeq lr + ldr r2, [r2, #0xc] + cmp r2, #0x0 + strne r0, [r2, #0x814] + strne r1, [r2, #0x818] + bx lr + .balign 4 +_020A36B0: .word OSi_ThreadInfo + + arm_func_start exit_computebound +exit_computebound: ; 0x020A36B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + cmp r1, #0x20 + addcs sp, sp, #0x4 + ldmcsia sp!, {lr} + bxcs lr + ldr r0, _020A36E8 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + bl OS_SetThreadPriority + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A36E8: .word OSi_ThreadInfo + + arm_func_start enter_computebound +enter_computebound: ; 0x020A36EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020A3744 ; =ssl_handshake_priority + ldr r0, [r0, #0x0] + cmp r0, #0x20 + addcs sp, sp, #0x4 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + ldr r0, _020A3748 ; =OSi_ThreadInfo + ldr r5, [r0, #0x4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, _020A3744 ; =ssl_handshake_priority + mov r4, r0 + ldr r1, [r1, #0x0] + mov r0, r5 + bl OS_SetThreadPriority + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A3744: .word ssl_handshake_priority +_020A3748: .word OSi_ThreadInfo + + arm_func_start CPS_SetSslHandshakePriority +CPS_SetSslHandshakePriority: ; 0x020A374C + ldr r1, _020A3758 ; =ssl_handshake_priority + str r0, [r1, #0x0] + bx lr + .balign 4 +_020A3758: .word ssl_handshake_priority + + arm_func_start date2sec +date2sec: ; 0x020A375C + stmdb sp!, {lr} + sub sp, sp, #0x1c + add r0, sp, #0x0 + bl RTC_GetDate + add r0, sp, #0x10 + bl RTC_GetTime + add r0, sp, #0x0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + ldr r1, _020A3794 ; =0x386D4380 + add r0, r0, r1 + add sp, sp, #0x1c + ldmia sp!, {lr} + bx lr + .balign 4 +_020A3794: .word 0x386D4380 + + arm_func_start purge_session +purge_session: + stmdb sp!, {r4-r8,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r6, _020A3804 ; =session + mov r7, r0 + mov r8, #0x0 + add r5, r4, #0x74 + mov r4, #0x20 +_020A37B8: + ldrb r0, [r6, #0x5a] + cmp r0, #0x0 + beq _020A37E4 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl memcmp + cmp r0, #0x0 + moveq r0, #0x0 + streqb r0, [r6, #0x5a] + beq _020A37F4 +_020A37E4: + add r8, r8, #0x1 + cmp r8, #0x4 + add r6, r6, #0x5c + blt _020A37B8 +_020A37F4: + mov r0, r7 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A3804: .word session + + arm_func_start cache_session +cache_session: ; 0x020A3808 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl OS_GetTick + ldr r6, _020A3904 ; =session + mov r4, r0, lsr #0x10 + mov r3, #0x0 + mov r12, r3 + mov r2, r6 + orr r4, r4, r1, lsl #0x10 + mvn r0, #0x0 +_020A3844: + ldrb r1, [r2, #0x5a] + cmp r1, #0x0 + beq _020A387C + cmp r8, #0x0 + beq _020A387C + ldr lr, [r2, #0x54] + cmp r8, lr + bne _020A387C + cmp r7, #0x0 + beq _020A387C + ldrh lr, [r2, #0x58] + cmp r7, lr + moveq r6, r2 + beq _020A38BC +_020A387C: + mvn lr, #0x0 + cmp r3, lr + beq _020A38AC + cmp r1, #0x0 + moveq r3, r0 + moveq r6, r2 + beq _020A38AC + ldr r1, [r2, #0x50] + sub r1, r4, r1 + cmp r1, r3 + movhi r3, r1 + movhi r6, r2 +_020A38AC: + add r12, r12, #0x1 + cmp r12, #0x4 + add r2, r2, #0x5c + blt _020A3844 +_020A38BC: + mov r1, r6 + add r0, r9, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, r9 + add r1, r6, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + str r4, [r6, #0x50] + mov r0, #0x1 + strb r0, [r6, #0x5a] + str r8, [r6, #0x54] + mov r0, r5 + strh r7, [r6, #0x58] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A3904: .word session + + arm_func_start find_session_from_IP +find_session_from_IP: ; 0x020A3908 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r1, #0x0 + ldr r4, _020A39AC ; =session + mov r5, r0 + strb r1, [r8, #0x30] +_020A392C: + ldrb r0, [r4, #0x5a] + cmp r0, #0x0 + beq _020A398C + ldr r0, [r4, #0x54] + cmp r0, r7 + bne _020A398C + ldrh r0, [r4, #0x58] + cmp r0, r6 + bne _020A398C + mov r0, r4 + add r1, r8, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r1, r8 + add r0, r4, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r4, #0x50] + mov r0, #0x1 + strb r0, [r8, #0x30] + b _020A399C +_020A398C: + add r1, r1, #0x1 + cmp r1, #0x4 + add r4, r4, #0x5c + blt _020A392C +_020A399C: + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A39AC: .word session + + arm_func_start find_session_from_id +find_session_from_id: ; 0x020A39B0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl OS_DisableInterrupts + mov r6, #0x0 + ldr r4, _020A3A54 ; =session + mov r5, r0 + strb r6, [r7, #0x30] + add r9, r7, #0x74 + mov r8, #0x20 +_020A39D8: + ldrb r0, [r4, #0x5a] + cmp r0, #0x0 + beq _020A3A30 + ldr r0, [r4, #0x54] + cmp r0, #0x0 + bne _020A3A30 + ldrh r0, [r4, #0x58] + cmp r0, #0x0 + bne _020A3A30 + mov r0, r4 + mov r1, r9 + mov r2, r8 + bl memcmp + cmp r0, #0x0 + bne _020A3A30 + mov r1, r7 + add r0, r4, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r7, #0x30] + b _020A3A40 +_020A3A30: + add r6, r6, #0x1 + cmp r6, #0x4 + add r4, r4, #0x5c + blt _020A39D8 +_020A3A40: + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A3A54: .word session 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 diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index 0fdc283b..4fe1b53c 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -62,111 +62,6 @@ UNK_020FF578: ; 0x020FF578 UNK_020FF580: ; 0x020FF580 .byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07 - .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_02106170 @@ -232,186 +127,6 @@ UNK_02106224: ; 0x02106224 UNK_02106230: ; 0x02106230 .byte 0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 - .global UNK_0210623C -UNK_0210623C: ; 0x0210623C - .byte 0x04, 0x00, 0x05, 0x00 - - .global UNK_02106240 -UNK_02106240: ; 0x02106240 - .byte 0xFF, 0xFF, 0xFF, 0x00 - - .global UNK_02106244 -UNK_02106244: ; 0x02106244 - .byte 0xFF, 0xFF, 0xFF, 0xFF - - .global UNK_02106248 -UNK_02106248: ; 0x02106248 - .byte 0x55, 0x04, 0x03, 0x00 - - .global UNK_0210624C -UNK_0210624C: ; 0x0210624C - .byte 0x55, 0x08, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106254 -UNK_02106254: ; 0x02106254 - .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 - - .global UNK_02106260 -UNK_02106260: ; 0x02106260 - .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 - - .global UNK_0210626C -UNK_0210626C: ; 0x0210626C - .byte 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 - - .global UNK_02106278 -UNK_02106278: ; 0x02106278 - .word UNK_02106240 - .word UNK_02106254 - .word UNK_0210624C - .word UNK_02106260 - .word UNK_0210626C - .word UNK_02106248 - - .global UNK_02106290 -UNK_02106290: ; 0x02106290 - .byte 0x53, 0x52, 0x56, 0x52, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106298 -UNK_02106298: ; 0x02106298 - .byte 0x43, 0x4C, 0x4E, 0x54, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021062A0 -UNK_021062A0: ; 0x021062A0 - .byte 0x41, 0x00, 0x00, 0x00 - - .global UNK_021062A4 -UNK_021062A4: ; 0x021062A4 - .byte 0x42, 0x42, 0x00, 0x00 - - .global UNK_021062A8 -UNK_021062A8: ; 0x021062A8 - .byte 0x43, 0x43, 0x43, 0x00 - - .global UNK_021062AC -UNK_021062AC: ; 0x021062AC - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F - .byte 0x01, 0x06, 0x0B, 0x00, 0x05, 0x0A, 0x0F, 0x04, 0x09, 0x0E, 0x03, 0x08, 0x0D, 0x02, 0x07, 0x0C - .byte 0x05, 0x08, 0x0B, 0x0E, 0x01, 0x04, 0x07, 0x0A, 0x0D, 0x00, 0x03, 0x06, 0x09, 0x0C, 0x0F, 0x02 - .byte 0x00, 0x07, 0x0E, 0x05, 0x0C, 0x03, 0x0A, 0x01, 0x08, 0x0F, 0x06, 0x0D, 0x04, 0x0B, 0x02, 0x09 - - .global UNK_021062EC -UNK_021062EC: ; 0x021062EC - .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0210632C -UNK_0210632C: ; 0x0210632C - .byte 0x78, 0xA4, 0x6A, 0xD7, 0x56, 0xB7, 0xC7, 0xE8, 0xDB, 0x70, 0x20, 0x24, 0xEE, 0xCE, 0xBD, 0xC1 - .byte 0xAF, 0x0F, 0x7C, 0xF5, 0x2A, 0xC6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xA8, 0x01, 0x95, 0x46, 0xFD - .byte 0xD8, 0x98, 0x80, 0x69, 0xAF, 0xF7, 0x44, 0x8B, 0xB1, 0x5B, 0xFF, 0xFF, 0xBE, 0xD7, 0x5C, 0x89 - .byte 0x22, 0x11, 0x90, 0x6B, 0x93, 0x71, 0x98, 0xFD, 0x8E, 0x43, 0x79, 0xA6, 0x21, 0x08, 0xB4, 0x49 - .byte 0x62, 0x25, 0x1E, 0xF6, 0x40, 0xB3, 0x40, 0xC0, 0x51, 0x5A, 0x5E, 0x26, 0xAA, 0xC7, 0xB6, 0xE9 - .byte 0x5D, 0x10, 0x2F, 0xD6, 0x53, 0x14, 0x44, 0x02, 0x81, 0xE6, 0xA1, 0xD8, 0xC8, 0xFB, 0xD3, 0xE7 - .byte 0xE6, 0xCD, 0xE1, 0x21, 0xD6, 0x07, 0x37, 0xC3, 0x87, 0x0D, 0xD5, 0xF4, 0xED, 0x14, 0x5A, 0x45 - .byte 0x05, 0xE9, 0xE3, 0xA9, 0xF8, 0xA3, 0xEF, 0xFC, 0xD9, 0x02, 0x6F, 0x67, 0x8A, 0x4C, 0x2A, 0x8D - .byte 0x42, 0x39, 0xFA, 0xFF, 0x81, 0xF6, 0x71, 0x87, 0x22, 0x61, 0x9D, 0x6D, 0x0C, 0x38, 0xE5, 0xFD - .byte 0x44, 0xEA, 0xBE, 0xA4, 0xA9, 0xCF, 0xDE, 0x4B, 0x60, 0x4B, 0xBB, 0xF6, 0x70, 0xBC, 0xBF, 0xBE - .byte 0xC6, 0x7E, 0x9B, 0x28, 0xFA, 0x27, 0xA1, 0xEA, 0x85, 0x30, 0xEF, 0xD4, 0x05, 0x1D, 0x88, 0x04 - .byte 0x39, 0xD0, 0xD4, 0xD9, 0xE5, 0x99, 0xDB, 0xE6, 0xF8, 0x7C, 0xA2, 0x1F, 0x65, 0x56, 0xAC, 0xC4 - .byte 0x44, 0x22, 0x29, 0xF4, 0x97, 0xFF, 0x2A, 0x43, 0xA7, 0x23, 0x94, 0xAB, 0x39, 0xA0, 0x93, 0xFC - .byte 0xC3, 0x59, 0x5B, 0x65, 0x92, 0xCC, 0x0C, 0x8F, 0x7D, 0xF4, 0xEF, 0xFF, 0xD1, 0x5D, 0x84, 0x85 - .byte 0x4F, 0x7E, 0xA8, 0x6F, 0xE0, 0xE6, 0x2C, 0xFE, 0x14, 0x43, 0x01, 0xA3, 0xA1, 0x11, 0x08, 0x4E - .byte 0x82, 0x7E, 0x53, 0xF7, 0x35, 0xF2, 0x3A, 0xBD, 0xBB, 0xD2, 0xD7, 0x2A, 0x91, 0xD3, 0x86, 0xEB - - .global UNK_0210642C -UNK_0210642C: ; 0x0210642C - .byte 0x80 - - .global UNK_0210642D -UNK_0210642D: ; 0x0210642D - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .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 - .section .bss .global UNK_021C8C78 @@ -558,398 +273,6 @@ UNK_021C8EC0: ; 0x021C8EC0 UNK_021C8EC4: ; 0x021C8EC4 .space 0x4 - .global UNK_021C8EC8 -UNK_021C8EC8: ; 0x021C8EC8 - .space 0x4 - - .global UNK_021C8ECC -UNK_021C8ECC: ; 0x021C8ECC - .space 0x4 - - .global UNK_021C8ED0 -UNK_021C8ED0: ; 0x021C8ED0 - .space 0x4 - - .global UNK_021C8ED4 -UNK_021C8ED4: ; 0x021C8ED4 - .space 0x4 - - .global UNK_021C8ED8 -UNK_021C8ED8: ; 0x021C8ED8 - .space 0x4 - - .global UNK_021C8EDC -UNK_021C8EDC: ; 0x021C8EDC - .space 0x4 - - .global UNK_021C8EE0 -UNK_021C8EE0: ; 0x021C8EE0 - .space 0x4 - - .global UNK_021C8EE4 -UNK_021C8EE4: ; 0x021C8EE4 - .space 0x4 - - .global UNK_021C8EE8 -UNK_021C8EE8: ; 0x021C8EE8 - .space 0x4 - - .global UNK_021C8EEC -UNK_021C8EEC: ; 0x021C8EEC - .space 0x4 - - .global UNK_021C8EF0 -UNK_021C8EF0: ; 0x021C8EF0 - .space 0x4 - - .global UNK_021C8EF4 -UNK_021C8EF4: ; 0x021C8EF4 - .space 0x4 - - .global UNK_021C8EF8 -UNK_021C8EF8: ; 0x021C8EF8 - .space 0x4 - - .global UNK_021C8EFC -UNK_021C8EFC: ; 0x021C8EFC - .space 0x4 - - .global UNK_021C8F00 -UNK_021C8F00: ; 0x021C8F00 - .space 0x4 - - .global UNK_021C8F04 -UNK_021C8F04: ; 0x021C8F04 - .space 0x4 - - .global UNK_021C8F08 -UNK_021C8F08: ; 0x021C8F08 - .space 0x4 - - .global UNK_021C8F0C -UNK_021C8F0C: ; 0x021C8F0C - .space 0x4 - - .global UNK_021C8F10 -UNK_021C8F10: ; 0x021C8F10 - .space 0x4 - - .global UNK_021C8F14 -UNK_021C8F14: ; 0x021C8F14 - .space 0x8 - - .global UNK_021C8F1C -UNK_021C8F1C: ; 0x021C8F1C - .space 0x8 - - .global UNK_021C8F24 -UNK_021C8F24: ; 0x021C8F24 - .space 0x3a - - .global UNK_021C8F5E -UNK_021C8F5E: ; 0x021C8F5E - .space 0x1a - - .global UNK_021C8F78 -UNK_021C8F78: ; 0x021C8F78 - .space 0xa - - .global UNK_021C8F82 -UNK_021C8F82: ; 0x021C8F82 - .space 0x56 - - .global UNK_021C8FD8 -UNK_021C8FD8: ; 0x021C8FD8 - .space 0x64 - - .global UNK_021C903C -UNK_021C903C: ; 0x021C903C - .space 0x64 - - .global UNK_021C90A0 -UNK_021C90A0: ; 0x021C90A0 - .space 0xc0 - - .global UNK_021C9160 -UNK_021C9160: ; 0x021C9160 - .space 0xc0 - - .global UNK_021C9220 -UNK_021C9220: ; 0x021C9220 - .space 0x2a - - .global UNK_021C924A -UNK_021C924A: ; 0x021C924A - .space 0x156 - - .global UNK_021C93A0 -UNK_021C93A0: ; 0x021C93A0 - .space 0x180 - - .global UNK_021C9520 -UNK_021C9520: ; 0x021C9520 - .space 0x9c0 - - .global UNK_021C9EE0 -UNK_021C9EE0: ; 0x021C9EE0 - .space 0x800 - - .global UNK_021CA6E0 -UNK_021CA6E0: ; 0x021CA6E0 - .space 0x4 - - .global UNK_021CA6E4 -UNK_021CA6E4: ; 0x021CA6E4 - .space 0x4 - - .global UNK_021CA6E8 -UNK_021CA6E8: ; 0x021CA6E8 - .space 0x13 - - .global UNK_021CA6FB -UNK_021CA6FB: ; 0x021CA6FB - .space 0x1 - - .global UNK_021CA6FC -UNK_021CA6FC: ; 0x021CA6FC - .space 0x170 - - .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 ; Nintendo DWC @@ -12181,14 +11504,14 @@ FUN_0209AA10: ; 0x0209AA10 beq _0209AA54 mov r0, #0x1 str r1, [r4, #0xc] - bl FUN_020A02EC + bl CPS_SetSsl mov r0, #0x4 strb r0, [r6, #0x73] b _0209AA68 _0209AA54: mov r0, #0x0 strb r0, [r6, #0x73] - bl FUN_020A02EC + bl CPS_SetSsl mov r0, #0x0 str r0, [r4, #0xc] _0209AA68: @@ -12276,7 +11599,7 @@ _0209AB3C: FUN_0209AB80: ; 0x0209AB80 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc - ldr r6, _0209ACC0 ; =UNK_021C8F24 + ldr r6, _0209ACC0 ; =CPSiRand32ctx mov r9, #0x0 ldr r11, [r6, #0x8] ldr r2, [r6, #0x0] @@ -12360,7 +11683,7 @@ _0209AC9C: ldmia sp!, {r4-r11,lr} bx lr .balign 4 -_0209ACC0: .word UNK_021C8F24 +_0209ACC0: .word CPSiRand32ctx _0209ACC4: .word UNK_021C8F1C arm_func_start FUN_0209ACC8 @@ -13243,7 +12566,7 @@ FUN_0209B8E0: ; 0x0209B8E0 ldr r0, _0209BA5C ; =0x00000101 mov r1, #0x6 strh r0, [r6, #0x0] - ldr r0, _0209BA60 ; =UNK_021C8F24 + ldr r0, _0209BA60 ; =CPSiRand32ctx strb r1, [r6, #0x2] ldr r3, [r0, #0x8] ldr r2, [r0, #0x0] @@ -13329,7 +12652,7 @@ FUN_0209B8E0: ; 0x0209B8E0 bx lr .balign 4 _0209BA5C: .word 0x00000101 -_0209BA60: .word UNK_021C8F24 +_0209BA60: .word CPSiRand32ctx _0209BA64: .word UNK_021C8F04 _0209BA68: .word UNK_021C8F14 _0209BA6C: .word 0x00008263 @@ -13573,7 +12896,7 @@ _0209BDB4: sub r0, r9, r0 cmp r0, #0xef ble _0209BDE4 - ldr r1, _0209BE70 ; =UNK_021C8EF4 + ldr r1, _0209BE70 ; =CPSiFree ldr r0, [r8, #0x34] ldr r1, [r1, #0x0] blx r1 @@ -13584,7 +12907,7 @@ _0209BDE4: cmp r7, #0x8 blt _0209BDB4 mov r0, r9 - bl FUN_020A01FC + bl CPSi_SslPeriodical ldr r0, _0209BE74 ; =UNK_021C8EF0 ldr r0, [r0, #0x0] cmp r0, #0x0 @@ -13617,7 +12940,7 @@ _0209BE60: .word 0x000003BD _0209BE64: .word UNK_021C8EE0 _0209BE68: .word OSi_ThreadInfo _0209BE6C: .word UNK_021C9520 -_0209BE70: .word UNK_021C8EF4 +_0209BE70: .word CPSiFree _0209BE74: .word UNK_021C8EF0 arm_func_start FUN_0209BE78 @@ -13716,7 +13039,7 @@ FUN_0209BF9C: ldrb r1, [r0, #0x9] cmp r1, #0x0 beq _0209BFD4 - bl FUN_020A0538 + bl CPSi_SslGetLength add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -13852,11 +13175,11 @@ _0209C184: cmp r12, #0x0 beq _0209C19C str r4, [sp, #0x0] - bl FUN_020A03E0 + bl CPSi_SslWrite2 b _0209C1A4 _0209C19C: str r4, [sp, #0x0] - bl FUN_0209C1D4 + bl CPSi_TcpWrite2Raw _0209C1A4: ldr r1, _0209C1D0 ; =UNK_021C8EA8 ldrb r1, [r1, #0x0] @@ -13873,8 +13196,8 @@ _0209C1BC: _0209C1CC: .word OSi_ThreadInfo _0209C1D0: .word UNK_021C8EA8 - arm_func_start FUN_0209C1D4 -FUN_0209C1D4: + arm_func_start CPSi_TcpWrite2Raw +CPSi_TcpWrite2Raw: stmdb sp!, {r4-r11,lr} sub sp, sp, #0x1c mov r4, #0x0 @@ -14126,20 +13449,20 @@ FUN_0209C52C: ; 0x0209C52C ldrb r2, [r1, #0x9] cmp r2, #0x0 beq _0209C56C - bl FUN_020A0738 + bl CPSi_SslConsume add sp, sp, #0x4 ldmia sp!, {lr} bx lr _0209C56C: - bl FUN_0209C580 + bl CPSi_SocConsumeRaw add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 _0209C57C: .word OSi_ThreadInfo - arm_func_start FUN_0209C580 -FUN_0209C580: + arm_func_start CPSi_SocConsumeRaw +CPSi_SocConsumeRaw: stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r4, r1 @@ -14212,12 +13535,12 @@ _0209C678: ldrb r2, [r1, #0x9] cmp r2, #0x0 beq _0209C694 - bl FUN_020A0790 + bl CPSi_SslRead add sp, sp, #0x4 ldmia sp!, {lr} bx lr _0209C694: - bl FUN_0209C6C0 + bl CPSi_TcpReadRaw add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -14231,8 +13554,8 @@ _0209C6A4: .balign 4 _0209C6BC: .word OSi_ThreadInfo - arm_func_start FUN_0209C6C0 -FUN_0209C6C0: ; 0x0209C6C0 + arm_func_start CPSi_TcpReadRaw +CPSi_TcpReadRaw: ; 0x0209C6C0 stmdb sp!, {r4-r8,lr} mov r4, r1 ldr r1, [r4, #0x44] @@ -14316,7 +13639,7 @@ FUN_0209C7AC: ; 0x0209C7AC cmp r0, #0x0 beq _0209C7DC mov r0, r4 - bl FUN_020A0320 + bl CPSi_SslClose _0209C7DC: bl OS_GetTick mov r6, r0, lsr #0x10 @@ -14361,17 +13684,17 @@ FUN_0209C840: cmp r0, #0x0 beq _0209C870 mov r0, r4 - bl FUN_020A035C + bl CPSi_SslShutdown _0209C870: mov r0, r4 - bl FUN_0209C884 + bl CPSi_TcpShutdownRaw ldmia sp!, {r4,lr} bx lr .balign 4 _0209C880: .word OSi_ThreadInfo - arm_func_start FUN_0209C884 -FUN_0209C884: ; 0x0209C884 + arm_func_start CPSi_TcpShutdownRaw +CPSi_TcpShutdownRaw: ; 0x0209C884 stmdb sp!, {r4,lr} mov r4, r0 bl OS_YieldThread @@ -14436,12 +13759,12 @@ FUN_0209C934: ; 0x0209C934 ldrb r1, [r0, #0x9] cmp r1, #0x0 beq _0209C96C - bl FUN_020A0874 + bl CPSi_SslConnect add sp, sp, #0x4 ldmia sp!, {lr} bx lr _0209C96C: - bl FUN_0209C990 + bl CPSi_TcpConnectRaw add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -14453,8 +13776,8 @@ _0209C97C: .balign 4 _0209C98C: .word OSi_ThreadInfo - arm_func_start FUN_0209C990 -FUN_0209C990: + arm_func_start CPSi_TcpConnectRaw +CPSi_TcpConnectRaw: stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r10, r0 @@ -14523,7 +13846,7 @@ FUN_0209CA54: ; 0x0209CA54 ldrb r1, [r0, #0x9] cmp r1, #0x0 beq _0209CA94 - bl FUN_020A09CC + bl CPSi_SslListen add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -14675,7 +13998,7 @@ _0209CC38: .word OSi_ThreadInfo FUN_0209CC3C: ; 0x0209CC3C stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r1, _0209CC88 ; =UNK_021C8F24 + ldr r1, _0209CC88 ; =CPSiRand32ctx ldr r3, [r1, #0x8] ldr r2, [r1, #0x0] ldr r0, [r1, #0x4] @@ -14693,7 +14016,7 @@ FUN_0209CC3C: ; 0x0209CC3C ldmia sp!, {lr} bx lr .balign 4 -_0209CC88: .word UNK_021C8F24 +_0209CC88: .word CPSiRand32ctx arm_func_start FUN_0209CC8C FUN_0209CC8C: ; 0x0209CC8C @@ -14909,7 +14232,7 @@ _0209CF70: addeq sp, sp, #0x8 ldmeqia sp!, {r4-r6,lr} bxeq lr - ldr r1, _0209CFA8 ; =UNK_021C8EF4 + ldr r1, _0209CFA8 ; =CPSiFree sub r0, r4, #0xe ldr r1, [r1, #0x0] blx r1 @@ -14919,7 +14242,7 @@ _0209CF70: .balign 4 _0209CFA0: .word 0x0000FFFF _0209CFA4: .word UNK_021C8F04 -_0209CFA8: .word UNK_021C8EF4 +_0209CFA8: .word CPSiFree arm_func_start FUN_0209CFAC FUN_0209CFAC: ; 0x0209CFAC @@ -15004,7 +14327,7 @@ _0209D0C8: ldmia sp!, {r4-r11,lr} bx lr _0209D0D8: - ldr r1, _0209D2B0 ; =UNK_021C8EC8 + ldr r1, _0209D2B0 ; =CPSiAlloc ldr r0, _0209D2B4 ; =0x0000100E ldr r1, [r1, #0x0] add r0, r7, r0 @@ -15043,7 +14366,7 @@ _0209D150: _0209D164: mov r0, #0x0 strh r0, [r5, #0x4] - ldr r1, _0209D2B8 ; =UNK_021C8EF4 + ldr r1, _0209D2B8 ; =CPSiFree ldr r0, [r5, #0x34] ldr r1, [r1, #0x0] blx r1 @@ -15130,9 +14453,9 @@ _0209D244: _0209D2A4: .word 0x00003FFF _0209D2A8: .word UNK_021C9520 _0209D2AC: .word 0x00001FFF -_0209D2B0: .word UNK_021C8EC8 +_0209D2B0: .word CPSiAlloc _0209D2B4: .word 0x0000100E -_0209D2B8: .word UNK_021C8EF4 +_0209D2B8: .word CPSiFree arm_func_start FUN_0209D2BC FUN_0209D2BC: ; 0x0209D2BC @@ -18214,7 +17537,7 @@ FUN_0209FD94: ; 0x0209FD94 cmp r6, r1 cmpeq r12, r1 beq _0209FDEC - ldr r0, _0209FFD8 ; =UNK_021C8F24 + ldr r0, _0209FFD8 ; =CPSiRand32ctx ldr r5, _0209FFDC ; =0x6C078965 ldr r3, _0209FFE0 ; =0x5D588B65 ldr r2, _0209FFE4 ; =0x00269EC3 @@ -18227,7 +17550,7 @@ FUN_0209FD94: ; 0x0209FD94 b _0209FE1C _0209FDEC: bl OS_GetTick - ldr r2, _0209FFD8 ; =UNK_021C8F24 + ldr r2, _0209FFD8 ; =CPSiRand32ctx ldr ip, _0209FFDC ; =0x6C078965 ldr r6, _0209FFE0 ; =0x5D588B65 ldr r5, _0209FFE4 ; =0x00269EC3 @@ -18245,22 +17568,22 @@ _0209FE1C: ldr r0, [r4, #0x8] cmp r0, #0x0 beq _0209FE4C - ldr r1, _0209FFE8 ; =UNK_021C8EC8 - ldr r0, _0209FFEC ; =UNK_021C8EF4 + ldr r1, _0209FFE8 ; =CPSiAlloc + ldr r0, _0209FFEC ; =CPSiFree str r2, [r1, #0x0] ldr r1, [r4, #0x8] str r1, [r0, #0x0] b _0209FE60 _0209FE4C: ldr r2, _0209FFF0 ; =FUN_020A0058 - ldr r1, _0209FFE8 ; =UNK_021C8EC8 - ldr r0, _0209FFEC ; =UNK_021C8EF4 + ldr r1, _0209FFE8 ; =CPSiAlloc + ldr r0, _0209FFEC ; =CPSiFree str r2, [r1, #0x0] str r2, [r0, #0x0] _0209FE60: ldr r1, [r4, #0x0] ldr r0, _0209FFF4 ; =UNK_021C8EC4 - ldr ip, _0209FFD8 ; =UNK_021C8F24 + ldr ip, _0209FFD8 ; =CPSiRand32ctx str r1, [r0, #0x0] ldr r1, [r4, #0x24] ldr r3, [r12, #0x8] @@ -18331,7 +17654,7 @@ _0209FE60: ldr r1, _020A0038 ; =FUN_0209CD3C ldr r4, [r0, #0x0] ldr r0, _020A003C ; =UNK_021C9160 - ldr r3, _020A0040 ; =UNK_021CA6E0 + ldr r3, _020A0040 ; =pool_initialized str r4, [sp, #0x4] bl OS_CreateThread mov r1, #0x800 @@ -18353,12 +17676,12 @@ _0209FE60: bx lr .balign 4 _0209FFD4: .word _SDK_UbiquitousCPS -_0209FFD8: .word UNK_021C8F24 +_0209FFD8: .word CPSiRand32ctx _0209FFDC: .word 0x6C078965 _0209FFE0: .word 0x5D588B65 _0209FFE4: .word 0x00269EC3 -_0209FFE8: .word UNK_021C8EC8 -_0209FFEC: .word UNK_021C8EF4 +_0209FFE8: .word CPSiAlloc +_0209FFEC: .word CPSiFree _0209FFF0: .word FUN_020A0058 _0209FFF4: .word UNK_021C8EC4 _0209FFF8: .word UNK_021C8EB0 @@ -18379,7 +17702,7 @@ _020A0030: .word UNK_021C8EAC _020A0034: .word UNK_02106218 _020A0038: .word FUN_0209CD3C _020A003C: .word UNK_021C9160 -_020A0040: .word UNK_021CA6E0 +_020A0040: .word pool_initialized _020A0044: .word UNK_021C90A0 _020A0048: .word FUN_0209BA80 _020A004C: .word UNK_021C9EE0 @@ -18476,7 +17799,7 @@ _020A0160: _020A016C: ldr r6, _020A01D8 ; =UNK_021C9520 mov r7, #0x0 - ldr r4, _020A01DC ; =UNK_021C8EF4 + ldr r4, _020A01DC ; =CPSiFree mov r5, r7 _020A017C: ldrh r0, [r6, #0x4] @@ -18491,7 +17814,7 @@ _020A0198: cmp r7, #0x8 add r6, r6, #0x38 blt _020A017C - bl FUN_020A01E0 + bl CPSi_SslCleanup add sp, sp, #0x4 ldmia sp!, {r4-r7,lr} bx lr @@ -18505,17446 +17828,4 @@ _020A01CC: .word UNK_021C8EE0 _020A01D0: .word UNK_021C8F78 _020A01D4: .word OSi_ThreadInfo _020A01D8: .word UNK_021C9520 -_020A01DC: .word UNK_021C8EF4 - - arm_func_start FUN_020A01E0 -FUN_020A01E0: ; 0x020A01E0 - ldr ip, _020A01F4 ; =MI_CpuFill8 - ldr r0, _020A01F8 ; =UNK_021CA6FC - mov r1, #0x0 - mov r2, #0x170 - bx r12 - .balign 4 -_020A01F4: .word MI_CpuFill8 -_020A01F8: .word UNK_021CA6FC - - arm_func_start FUN_020A01FC -FUN_020A01FC: ; 0x020A01FC - stmdb sp!, {r4-r6,lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r4, _020A02E0 ; =UNK_021CA6FC - mov r6, #0x0 - mov r2, r6 - ldr r1, _020A02E4 ; =0x000003BD -_020A0218: - ldrb r3, [r4, #0x5a] - cmp r3, #0x0 - beq _020A0234 - ldr r3, [r4, #0x50] - sub r3, r5, r3 - cmp r3, r1 - strgtb r2, [r4, #0x5a] -_020A0234: - add r6, r6, #0x1 - cmp r6, #0x4 - add r4, r4, #0x5c - blt _020A0218 - bl OS_RestoreInterrupts - ldr r0, _020A02E8 ; =OSi_ThreadInfo - ldr r4, [r0, #0x8] - cmp r4, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - mov r6, #0x0 -_020A0260: - ldr r1, [r4, #0xa4] - cmp r1, #0x0 - beq _020A02CC - ldr r0, [r1, #0x0] - cmp r0, #0x0 - beq _020A02CC - ldrb r0, [r1, #0x9] - cmp r0, #0x0 - beq _020A02CC - ldrb r0, [r1, #0x8] - cmp r0, #0x4 - bne _020A02CC - ldr r0, [r1, #0xc] - ldrb r0, [r0, #0x455] - cmp r0, #0x8 - bhs _020A02CC - ldr r0, [r1, #0x10] - sub r0, r5, r0 - cmp r0, #0xef - ble _020A02CC - ldr r0, [r1, #0x4] - cmp r0, #0x2 - bne _020A02CC - strb r6, [r1, #0x8] - str r6, [r1, #0x4] - ldr r0, [r1, #0x0] - bl OS_WakeupThreadDirect -_020A02CC: - ldr r4, [r4, #0x68] - cmp r4, #0x0 - bne _020A0260 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A02E0: .word UNK_021CA6FC -_020A02E4: .word 0x000003BD -_020A02E8: .word OSi_ThreadInfo - - .extern _SDK_UbiquitousSSL - - arm_func_start FUN_020A02EC -FUN_020A02EC: - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _020A0318 ; =_SDK_UbiquitousSSL - bl OSi_ReferSymbol - ldr r0, _020A031C ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xa4] - cmp r0, #0x0 - strneb r4, [r0, #0x9] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A0318: .word _SDK_UbiquitousSSL -_020A031C: .word OSi_ThreadInfo - - ; Abiosso libVCT (?) - - arm_func_start FUN_020A0320 -FUN_020A0320: ; 0x020A0320 - stmdb sp!, {r4,lr} - ldr r4, [r0, #0xc] - mov r0, #0x0 - strb r0, [r4, #0x455] - ldr r0, [r4, #0x824] - cmp r0, #0x0 - beq _020A0348 - ldr r1, _020A0358 ; =UNK_021C8EF4 - ldr r1, [r1, #0x0] - blx r1 -_020A0348: - mov r0, #0x0 - str r0, [r4, #0x824] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A0358: .word UNK_021C8EF4 - - arm_func_start FUN_020A035C -FUN_020A035C: ; 0x020A035C - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x20 - mov r5, r0 - ldr r4, [r5, #0xc] - ldrb r0, [r4, #0x455] - cmp r0, #0x8 - bne _020A03CC - mov r12, #0x0 - mov r6, #0x15 - mov lr, #0x3 - mov r3, #0x2 - mov r2, #0x1 - add r1, sp, #0x4 - mov r0, r4 - strb r6, [sp, #0x4] - strb lr, [sp, #0x5] - strb r12, [sp, #0x6] - strb r12, [sp, #0x7] - strb r3, [sp, #0x8] - strb r2, [sp, #0x9] - strb r12, [sp, #0xa] - bl FUN_020A19F4 - mov r2, #0x0 - mov r1, r0 - add r0, sp, #0x4 - mov r3, r2 - str r5, [sp, #0x0] - bl FUN_0209C1D4 -_020A03CC: - mov r0, #0x0 - strb r0, [r4, #0x455] - add sp, sp, #0x20 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A03E0 -FUN_020A03E0: ; 0x020A03E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - ldr r4, [sp, #0x48] - mov r9, r1 - mov r1, r4 - mov r10, r0 - mov r0, #0x0 - ldr r1, [r1, #0xc] - str r0, [sp, #0x8] - str r0, [sp, #0x1c] - str r0, [sp, #0x14] - str r0, [sp, #0x18] - mov r0, #0x17 - str r0, [sp, #0xc] - mov r0, #0x3 - str r4, [sp, #0x48] - str r1, [sp, #0x4] - mov r8, r2 - add r6, r9, r3 - str r0, [sp, #0x10] -_020A0430: - ldr r0, _020A052C ; =0x00000B4F - ldr r1, _020A0530 ; =UNK_021C8EC8 - cmp r6, r0 - movgt r5, r0 - movle r5, r6 - ldr r1, [r1, #0x0] - add r0, r5, #0x19 - blx r1 - movs r7, r0 - beq _020A051C - cmp r9, r5 - movcs r4, r5 - movcc r4, r9 - mov r0, r10 - add r1, r7, #0x5 - mov r2, r4 - sub r11, r5, r4 - bl MI_CpuCopy8 - add r1, r7, #0x5 - mov r0, r8 - add r1, r1, r4 - mov r2, r11 - add r10, r10, r4 - sub r9, r9, r4 - bl MI_CpuCopy8 - ldr r0, [sp, #0xc] - mov r1, r7 - strb r0, [r7, #0x0] - ldr r0, [sp, #0x10] - add r8, r8, r11 - strb r0, [r7, #0x1] - ldr r0, [sp, #0x14] - strb r0, [r7, #0x2] - mov r0, r5, asr #0x8 - strb r0, [r7, #0x3] - ldr r0, [sp, #0x4] - strb r5, [r7, #0x4] - bl FUN_020A19F4 - ldr r1, [sp, #0x48] - ldr r2, [sp, #0x18] - mov r4, r0 - str r1, [sp, #0x0] - mov r0, r7 - mov r1, r4 - mov r3, r2 - bl FUN_0209C1D4 - cmp r0, r4 - ldr r1, _020A0534 ; =UNK_021C8EF4 - mov r0, r7 - ldr r1, [r1, #0x0] - ldrcc r5, [sp, #0x1c] - blx r1 - ldr r0, [sp, #0x8] - subs r6, r6, r5 - add r0, r0, r5 - str r0, [sp, #0x8] - beq _020A051C - cmp r5, #0x0 - bne _020A0430 -_020A051C: - ldr r0, [sp, #0x8] - add sp, sp, #0x24 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A052C: .word 0x00000B4F -_020A0530: .word UNK_021C8EC8 -_020A0534: .word UNK_021C8EF4 - - arm_func_start FUN_020A0538 -FUN_020A0538: ; 0x020A0538 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0x824] - cmp r0, #0x0 - beq _020A0560 - ldrb r0, [r4, #0x456] - cmp r0, #0x0 - bne _020A0568 -_020A0560: - mov r0, r5 - bl FUN_020A05D4 -_020A0568: - ldr r1, [r4, #0x824] - cmp r1, #0x0 - beq _020A0594 - ldrb r0, [r4, #0x456] - cmp r0, #0x0 - ldrne r1, [r4, #0x828] - ldrne r0, [r4, #0x82c] - addne sp, sp, #0x4 - subne r0, r1, r0 - ldmneia sp!, {r4-r5,lr} - bxne lr -_020A0594: - cmp r1, #0x0 - bne _020A05C4 - ldrb r0, [r5, #0x8] - cmp r0, #0x4 - bne _020A05B4 - ldrb r0, [r4, #0x455] - cmp r0, #0x9 - bne _020A05C4 -_020A05B4: - add sp, sp, #0x4 - mvn r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_020A05C4: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A05D4 -FUN_020A05D4: ; 0x020A05D4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0x824] - cmp r0, #0x0 - bne _020A0684 - ldr r0, [r5, #0x44] - cmp r0, #0x5 - addcc sp, sp, #0x8 - ldmccia sp!, {r4-r6,lr} - bxcc lr - add r0, sp, #0x0 - mov r1, r5 - bl FUN_0209C6C0 - ldrb r2, [r0, #0x3] - ldrb r0, [r0, #0x4] - ldr r1, _020A0730 ; =0x00004805 - add r0, r0, r2, lsl #0x8 - add r0, r0, #0x5 - str r0, [sp, #0x0] - cmp r0, r1 - movhi r0, #0x9 - addhi sp, sp, #0x8 - strhib r0, [r4, #0x455] - ldmhiia sp!, {r4-r6,lr} - bxhi lr - ldr r1, _020A0734 ; =UNK_021C8EC8 - ldr r1, [r1, #0x0] - blx r1 - str r0, [r4, #0x824] - ldr r0, [r4, #0x824] - cmp r0, #0x0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r1, [sp, #0x0] - mov r0, #0x0 - str r1, [r4, #0x828] - str r0, [r4, #0x82c] - strb r0, [r4, #0x456] - b _020A0698 -_020A0684: - ldr r0, [r5, #0x44] - cmp r0, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,lr} - bxeq lr -_020A0698: - add r0, sp, #0x0 - mov r1, r5 - bl FUN_0209C6C0 - ldr r3, [r4, #0x828] - ldr r2, [r4, #0x82c] - ldr r1, [sp, #0x0] - sub r2, r3, r2 - cmp r1, r2 - strcs r2, [sp, #0x0] - movcs r6, #0x1 - ldr r3, [r4, #0x824] - ldr r1, [r4, #0x82c] - ldr r2, [sp, #0x0] - add r1, r3, r1 - movcc r6, #0x0 - bl MI_CpuCopy8 - ldr r0, [sp, #0x0] - mov r1, r5 - bl FUN_0209C580 - cmp r6, #0x0 - beq _020A0714 - ldr r1, [r4, #0x824] - mov r0, r4 - bl FUN_020A16E8 - ldrb r0, [r4, #0x456] - add sp, sp, #0x8 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r4, #0x824] - ldmia sp!, {r4-r6,lr} - bx lr -_020A0714: - ldr r1, [r4, #0x82c] - ldr r0, [sp, #0x0] - add r0, r1, r0 - str r0, [r4, #0x82c] - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A0730: .word 0x00004805 -_020A0734: .word UNK_021C8EC8 - - arm_func_start FUN_020A0738 -FUN_020A0738: ; 0x020A0738 - stmdb sp!, {r4,lr} - ldr r4, [r1, #0xc] - ldr r2, [r4, #0x828] - ldr r1, [r4, #0x82c] - sub r2, r2, r1 - cmp r0, r2 - blo _020A077C - ldr r0, [r4, #0x824] - cmp r0, #0x0 - beq _020A076C - ldr r1, _020A078C ; =UNK_021C8EF4 - ldr r1, [r1, #0x0] - blx r1 -_020A076C: - mov r0, #0x0 - str r0, [r4, #0x824] - ldmia sp!, {r4,lr} - bx lr -_020A077C: - add r0, r1, r0 - str r0, [r4, #0x82c] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A078C: .word UNK_021C8EF4 - - arm_func_start FUN_020A0790 -FUN_020A0790: ; 0x020A0790 - stmdb sp!, {r4-r6,lr} - mov r5, r1 - ldr r4, [r5, #0xc] - mov r6, r0 - ldr r12, [r4, #0x824] - cmp r12, #0x0 - beq _020A0818 - ldrb r0, [r4, #0x456] - cmp r0, #0x0 - bne _020A0818 - ldr r3, [r4, #0x82c] - ldr r1, [r4, #0x828] - mov r2, r5 - add r0, r12, r3 - sub r1, r1, r3 - bl FUN_020A1974 - cmp r0, #0x0 - beq _020A07FC - ldr r1, _020A0870 ; =UNK_021C8EF4 - ldr r0, [r4, #0x824] - ldr r1, [r1, #0x0] - blx r1 - mov r0, #0x0 - str r0, [r4, #0x824] - str r0, [r6, #0x0] - ldmia sp!, {r4-r6,lr} - bx lr -_020A07FC: - ldr r1, [r4, #0x824] - mov r0, r4 - bl FUN_020A16E8 - ldrb r0, [r4, #0x456] - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r4, #0x824] -_020A0818: - ldr r0, [r4, #0x824] - cmp r0, #0x0 - bne _020A084C -_020A0824: - mov r0, r5 - bl FUN_020A1528 - cmp r0, #0x9 - moveq r0, #0x0 - streq r0, [r6, #0x0] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r0, [r4, #0x824] - cmp r0, #0x0 - beq _020A0824 -_020A084C: - ldr r1, [r4, #0x828] - ldr r0, [r4, #0x82c] - sub r0, r1, r0 - str r0, [r6, #0x0] - ldr r1, [r4, #0x824] - ldr r0, [r4, #0x82c] - add r0, r1, r0 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A0870: .word UNK_021C8EF4 - - arm_func_start FUN_020A0874 -FUN_020A0874: ; 0x020A0874 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r1, [r5, #0x8] - ldr r4, [r5, #0xc] - cmp r1, #0x4 - beq _020A08A8 - bl FUN_0209C990 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r5,lr} - bxne lr -_020A08A8: - mov r1, #0x0 - strb r1, [r4, #0x455] - str r1, [r4, #0x1d4] - add r0, r4, #0x2ec - strb r1, [r4, #0x454] - bl FUN_020A41CC - add r0, r4, #0x3a4 - bl FUN_020A3B8C - mov r0, r5 - bl FUN_020A08DC - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A08DC -FUN_020A08DC: ; 0x020A08DC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r4, [r5, #0xc] - bl FUN_020A0DE4 -_020A08F0: - mov r0, r5 - bl FUN_020A1528 - cmp r0, #0x9 - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - cmp r0, #0x4 - beq _020A0920 - ldrb r0, [r4, #0x31] - cmp r0, #0x0 - beq _020A08F0 -_020A0920: - ldrb r0, [r4, #0x31] - cmp r0, #0x0 - beq _020A095C - mov r0, r4 - bl FUN_020A215C - mov r0, r5 - bl FUN_020A0AF4 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r5,lr} - bxne lr - mov r0, r5 - bl FUN_020A0F94 - b _020A09B4 -_020A095C: - mov r0, r5 - bl FUN_020A0B2C - mov r0, r4 - bl FUN_020A2364 - ldrb r0, [r4, #0x30] - cmp r0, #0x0 - beq _020A0988 - ldrh r2, [r5, #0x18] - ldr r1, [r5, #0x1c] - mov r0, r4 - bl FUN_020A3808 -_020A0988: - mov r0, r4 - bl FUN_020A215C - mov r0, r5 - bl FUN_020A0F94 - mov r0, r5 - bl FUN_020A0AF4 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r5,lr} - bxne lr -_020A09B4: - mov r0, #0x8 - strb r0, [r4, #0x455] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A09CC -FUN_020A09CC: ; 0x020A09CC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r8, [r9, #0xc] - add r5, r8, #0x2ec - add r4, r8, #0x3a4 - mov r7, #0x0 - mov r6, #0x1 -_020A09EC: - mov r0, r9 - bl FUN_0209CAC4 - strb r7, [r8, #0x455] - str r7, [r8, #0x1d4] - mov r0, r5 - strb r6, [r8, #0x454] - bl FUN_020A41CC - mov r0, r4 - bl FUN_020A3B8C - mov r0, r9 - bl FUN_020A0A58 - cmp r0, #0x0 - moveq r0, #0x8 - addeq sp, sp, #0x4 - streqb r0, [r8, #0x455] - ldmeqia sp!, {r4-r9,lr} - bxeq lr - mov r0, r9 - bl FUN_0209C884 - ldrh r0, [r9, #0x1a] - strh r0, [r9, #0x18] - ldr r0, [r9, #0x20] - str r0, [r9, #0x1c] - b _020A09EC - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_020A0A58 -FUN_020A0A58: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020A1528 - cmp r0, #0x1 - movne r0, #0x1 - ldmneia sp!, {r4,lr} - bxne lr - mov r0, r4 - bl FUN_020A10F4 - cmp r0, #0x0 - beq _020A0AB0 - ldr r0, [r4, #0xc] - bl FUN_020A215C - mov r0, r4 - bl FUN_020A0F94 - mov r0, r4 - bl FUN_020A0AF4 - cmp r0, #0x0 - beq _020A0AE8 - mov r0, #0x1 - ldmia sp!, {r4,lr} - bx lr -_020A0AB0: - mov r0, r4 - bl FUN_020A1528 - cmp r0, #0x5 - movne r0, #0x1 - ldmneia sp!, {r4,lr} - bxne lr - mov r0, r4 - bl FUN_020A0AF4 - cmp r0, #0x0 - movne r0, #0x1 - ldmneia sp!, {r4,lr} - bxne lr - mov r0, r4 - bl FUN_020A0F94 -_020A0AE8: - mov r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A0AF4 -FUN_020A0AF4: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020A1528 - cmp r0, #0x7 - movne r0, #0x1 - ldmneia sp!, {r4,lr} - bxne lr - mov r0, r4 - bl FUN_020A1528 - cmp r0, #0x6 - movne r0, #0x1 - moveq r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A0B2C -FUN_020A0B2C: ; 0x020A0B2C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r11, r0 - ldr r10, [r11, #0xc] - mov r0, #0x3 - strb r0, [r10, #0x0] - mov r0, #0x0 - strb r0, [r10, #0x1] - add r0, r10, #0x2 - mov r1, #0x2e - bl FUN_020A13E0 - ldr r4, [r10, #0x594] - ldr r0, _020A0DD4 ; =UNK_021C8EC8 - mov r1, r4, lsl #0x1 - ldr r2, [r0, #0x0] - add r1, r1, r1, lsr #0x1f - mov r0, r4 - mov r6, r1, asr #0x1 - blx r2 - movs r5, r0 - moveq r0, #0x9 - addeq sp, sp, #0xc - streqb r0, [r10, #0x455] - ldmeqia sp!, {r4-r11,lr} - bxeq lr - mov r0, #0x0 - strb r0, [r5, #0x0] - mov r2, #0x2 - add r0, r5, #0x2 - sub r1, r4, #0x33 - strb r2, [r5, #0x1] - bl FUN_020A13E0 - add r1, r5, r4 - mov r0, r10 - sub r3, r4, #0x31 - mov r7, #0x0 - sub r1, r1, #0x30 - mov r2, #0x30 - strb r7, [r5, r3] - bl MI_CpuCopy8 - ldr r1, _020A0DD4 ; =UNK_021C8EC8 - mov r0, r6, lsl #0x3 - ldr r1, [r1, #0x0] - blx r1 - movs r9, r0 - bne _020A0C08 - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r5 - ldr r1, [r1, #0x0] - blx r1 - mov r0, #0x9 - add sp, sp, #0xc - strb r0, [r10, #0x455] - ldmia sp!, {r4-r11,lr} - bx lr -_020A0C08: - add r0, r9, r6, lsl #0x1 - add r8, r0, r6, lsl #0x1 - mov r1, r5 - mov r2, r4 - mov r3, r6 - str r0, [sp, #0x4] - add r7, r8, r6, lsl #0x1 - bl FUN_020A4B50 - ldr r1, _020A0DDC ; =0x00000598 - ldr r2, [r10, #0x5a0] - mov r0, r8 - add r1, r10, r1 - mov r3, r6 - bl FUN_020A4B50 - ldr r1, _020A0DE0 ; =0x00000494 - mov r0, r7 - mov r2, r4 - add r1, r10, r1 - mov r3, r6 - bl FUN_020A4B50 - bl FUN_020A36EC - mov r3, r6 - mov r6, r0 - ldr r1, [sp, #0x4] - mov r2, r8 - mov r0, r9 - str r7, [sp, #0x0] - bl FUN_020A507C - mov r0, r6 - bl FUN_020A36B4 - ldr r1, _020A0DD4 ; =UNK_021C8EC8 - add r0, r4, #0x49 - ldr r1, [r1, #0x0] - blx r1 - movs r6, r0 - bne _020A0CCC - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r5 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r9 - ldr r1, [r1, #0x0] - blx r1 - mov r0, #0x9 - add sp, sp, #0xc - strb r0, [r10, #0x455] - ldmia sp!, {r4-r11,lr} - bx lr -_020A0CCC: - mov r0, #0x16 - strb r0, [r6, #0x0] - mov r1, #0x3 - add r0, r4, #0x4 - strb r1, [r6, #0x1] - mov r1, #0x0 - strb r1, [r6, #0x2] - mov r1, r0, asr #0x8 - strb r1, [r6, #0x3] - add r2, r6, #0x9 - strb r0, [r6, #0x4] - mov r0, #0x10 - strb r0, [r6, #0x5] - mov r0, r4, asr #0x10 - strb r0, [r6, #0x6] - mov r0, r4, asr #0x8 - strb r0, [r6, #0x7] - mov r0, r2 - strb r4, [r6, #0x8] - ands r1, r4, #0x1 - beq _020A0D38 - add r0, r4, r4, lsr #0x1f - mov r0, r0, asr #0x1 - mov r0, r0, lsl #0x1 - ldrh r1, [r9, r0] - add r0, r2, #0x1 - strb r1, [r2, #0x0] -_020A0D38: - add r1, r4, r4, lsr #0x1f - mov r1, r1, asr #0x1 - subs r7, r1, #0x1 - bmi _020A0D70 -_020A0D48: - mov r3, r7, lsl #0x1 - ldrh r1, [r9, r3] - add r2, r0, #0x1 - subs r7, r7, #0x1 - mov r1, r1, asr #0x8 - strb r1, [r0, #0x0] - ldrh r1, [r9, r3] - add r0, r0, #0x2 - strb r1, [r2, #0x0] - bpl _020A0D48 -_020A0D70: - mov r2, #0x0 - mov r0, r6 - mov r3, r2 - add r1, r4, #0x9 - str r11, [sp, #0x0] - bl FUN_0209C1D4 - mov r0, r10 - add r1, r6, #0x5 - add r2, r4, #0x4 - bl FUN_020A1944 - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r9 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020A0DD8 ; =UNK_021C8EF4 - mov r0, r5 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A0DD4: .word UNK_021C8EC8 -_020A0DD8: .word UNK_021C8EF4 -_020A0DDC: .word 0x00000598 -_020A0DE0: .word 0x00000494 - - arm_func_start FUN_020A0DE4 -FUN_020A0DE4: ; 0x020A0DE4 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r1, _020A0F88 ; =UNK_021C8EC8 - mov r8, r0 - ldr r1, [r1, #0x0] - mov r0, #0x98 - ldr r7, [r8, #0xc] - blx r1 - movs r6, r0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r7, #0x455] - ldmeqia sp!, {r4-r8,lr} - bxeq lr - mov r0, #0x3 - strb r0, [r6, #0x9] - add r5, r6, #0x9 - mov r0, #0x0 - strb r0, [r5, #0x1] - bl FUN_020A375C - mov r1, r0, lsr #0x18 - strb r1, [r7, #0x34] - mov r1, r0, lsr #0x10 - strb r1, [r7, #0x35] - mov r1, r0, lsr #0x8 - strb r1, [r7, #0x36] - strb r0, [r7, #0x37] - add r0, r7, #0x38 - mov r1, #0x1c - bl FUN_020A13E0 - add r0, r7, #0x34 - add r1, r5, #0x2 - mov r2, #0x20 - bl MI_CpuCopy8 - ldrh r2, [r8, #0x18] - ldr r1, [r8, #0x1c] - mov r0, r7 - bl FUN_020A3908 - ldrb r0, [r7, #0x30] - cmp r0, #0x0 - moveq r0, #0x0 - streqb r0, [r5, #0x22] - addeq r5, r5, #0x23 - beq _020A0EAC - mov r2, #0x20 - add r0, r7, #0x74 - add r1, r5, #0x23 - strb r2, [r5, #0x22] - bl MI_CpuCopy8 - add r5, r5, #0x43 -_020A0EAC: - mov r4, #0x0 - strb r4, [r5, #0x0] - mov r0, #0x4 - strb r0, [r5, #0x1] - ldr r2, _020A0F8C ; =UNK_0210623C - add r5, r5, #0x2 -_020A0EC4: - mov r3, r4, lsl #0x1 - ldrh r0, [r2, r3] - add r4, r4, #0x1 - add r1, r5, #0x1 - mov r0, r0, asr #0x8 - strb r0, [r5, #0x0] - ldrh r0, [r2, r3] - cmp r4, #0x2 - add r5, r5, #0x2 - strb r0, [r1, #0x0] - blo _020A0EC4 - mov r3, #0x1 - mov r2, #0x0 - strb r3, [r5, #0x0] - add r0, r5, #0x2 - sub r0, r0, r6 - sub r4, r0, #0x5 - strb r2, [r5, #0x1] - sub r1, r4, #0x4 - mov r0, #0x16 - strb r0, [r6, #0x0] - mov r0, #0x3 - strb r0, [r6, #0x1] - strb r2, [r6, #0x2] - mov r0, r4, asr #0x8 - strb r0, [r6, #0x3] - strb r4, [r6, #0x4] - strb r3, [r6, #0x5] - mov r0, r1, asr #0x10 - strb r0, [r6, #0x6] - mov r0, r1, asr #0x8 - strb r0, [r6, #0x7] - strb r1, [r6, #0x8] - mov r0, r6 - mov r3, r2 - add r1, r4, #0x5 - str r8, [sp, #0x0] - bl FUN_0209C1D4 - mov r0, r7 - mov r2, r4 - add r1, r6, #0x5 - bl FUN_020A1944 - ldr r1, _020A0F90 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A0F88: .word UNK_021C8EC8 -_020A0F8C: .word UNK_0210623C -_020A0F90: .word UNK_021C8EF4 - - arm_func_start FUN_020A0F94 -FUN_020A0F94: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r1, _020A10EC ; =UNK_021C8EC8 - mov r6, r0 - ldr r1, [r1, #0x0] - mov r0, #0x83 - ldr r5, [r6, #0xc] - blx r1 - movs r4, r0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r5, #0x455] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - mov r0, #0x14 - strb r0, [r4, #0x0] - mov r0, #0x3 - strb r0, [r4, #0x1] - mov r1, #0x0 - strb r1, [r4, #0x2] - strb r1, [r4, #0x3] - mov r3, #0x1 - strb r3, [r4, #0x4] - add r0, r5, #0x1cc - mov r2, #0x8 - strb r3, [r4, #0x5] - bl MI_CpuFill8 - mov r0, #0x16 - strb r0, [r4, #0x6] - mov r0, #0x3 - strb r0, [r4, #0x7] - mov r1, #0x0 - strb r1, [r4, #0x8] - strb r1, [r4, #0x9] - mov r0, #0x28 - strb r0, [r4, #0xa] - mov r0, #0x14 - strb r0, [r4, #0xb] - strb r1, [r4, #0xc] - strb r1, [r4, #0xd] - mov r3, #0x24 - add r0, r5, #0x3a4 - add r1, r5, #0x3fc - mov r2, #0x58 - strb r3, [r4, #0xe] - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0xf - mov r2, #0x0 - bl FUN_020A2034 - add r0, r5, #0x3fc - add r1, r5, #0x3a4 - mov r2, #0x58 - bl MI_CpuCopy8 - add r0, r5, #0x2ec - add r1, r5, #0x348 - mov r2, #0x5c - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0x1f - mov r2, #0x0 - bl FUN_020A1F4C - add r0, r5, #0x348 - add r1, r5, #0x2ec - mov r2, #0x5c - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0xb - mov r2, #0x28 - bl FUN_020A1944 - mov r0, r5 - add r1, r4, #0x6 - bl FUN_020A19F4 - mov r2, #0x0 - add r1, r0, #0x6 - mov r0, r4 - mov r3, r2 - str r6, [sp, #0x0] - bl FUN_0209C1D4 - ldr r1, _020A10F0 ; =UNK_021C8EF4 - mov r0, r4 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A10EC: .word UNK_021C8EC8 -_020A10F0: .word UNK_021C8EF4 - - arm_func_start FUN_020A10F4 -FUN_020A10F4: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r7, [r9, #0xc] - ldr r4, [r7, #0x820] - cmp r4, #0x0 - ldrne r8, [r4, #0x0] - moveq r8, #0x0 - bl FUN_020A375C - mov r1, r0, lsr #0x18 - strb r1, [r7, #0x54] - mov r1, r0, lsr #0x10 - strb r1, [r7, #0x55] - mov r1, r0, lsr #0x8 - strb r1, [r7, #0x56] - strb r0, [r7, #0x57] - add r0, r7, #0x58 - mov r1, #0x1c - bl FUN_020A13E0 - ldr r1, _020A1360 ; =UNK_021C8EC8 - add r0, r8, #0x9d - ldr r1, [r1, #0x0] - blx r1 - movs r6, r0 - moveq r0, #0x9 - streqb r0, [r7, #0x455] - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r9,lr} - bxeq lr - mov r0, #0x2 - add r5, r6, #0x5 - strb r0, [r6, #0x5] - mov r3, #0x0 - strb r3, [r5, #0x1] - strb r3, [r5, #0x2] - mov r0, #0x46 - strb r0, [r5, #0x3] - mov r0, #0x3 - strb r0, [r5, #0x4] - add r0, r7, #0x54 - add r1, r5, #0x6 - mov r2, #0x20 - strb r3, [r5, #0x5] - bl MI_CpuCopy8 - mov r2, #0x20 - strb r2, [r5, #0x26] - ldrb r0, [r7, #0x30] - cmp r0, #0x0 - beq _020A11D8 - add r0, r7, #0x74 - add r1, r5, #0x27 - bl MI_CpuCopy8 - mov r0, #0x1 - strb r0, [r7, #0x31] - add r5, r5, #0x47 - b _020A1238 -_020A11D8: - add r0, r5, #0x27 - mov r1, #0x1c - bl FUN_020A13E0 - ldr r0, _020A1364 ; =UNK_021CA6E4 - add r2, r5, #0x46 - ldr r3, [r0, #0x0] - add r1, r7, #0x74 - mov r0, r3, lsr #0x18 - strb r0, [r5, #0x43] - mov r0, r3, lsr #0x10 - strb r0, [r5, #0x44] - mov r0, r3, lsr #0x8 - strb r0, [r5, #0x45] - add r5, r5, #0x47 - sub r0, r5, #0x20 - strb r3, [r2, #0x0] - mov r2, #0x20 - bl MI_CpuCopy8 - ldr r0, _020A1364 ; =UNK_021CA6E4 - mov r1, #0x0 - ldr r2, [r0, #0x0] - add r2, r2, #0x1 - str r2, [r0, #0x0] - strb r1, [r7, #0x31] -_020A1238: - ldrh r2, [r7, #0x32] - mov r0, #0x0 - mov r2, r2, asr #0x8 - strb r2, [r5, #0x0] - ldrh r2, [r7, #0x32] - strb r2, [r5, #0x1] - strb r0, [r5, #0x2] - ldrb r0, [r7, #0x31] - add r5, r5, #0x3 - cmp r0, #0x0 - bne _020A12EC - cmp r8, #0x0 - beq _020A12D0 - mov r0, #0xb - add r2, r8, #0x6 - strb r0, [r5, #0x0] - mov r0, r2, asr #0x10 - strb r0, [r5, #0x1] - mov r0, r2, asr #0x8 - strb r0, [r5, #0x2] - add r1, r8, #0x3 - strb r2, [r5, #0x3] - mov r0, r1, asr #0x10 - strb r0, [r5, #0x4] - mov r0, r1, asr #0x8 - strb r0, [r5, #0x5] - strb r1, [r5, #0x6] - mov r0, r8, asr #0x10 - strb r0, [r5, #0x7] - mov r0, r8, asr #0x8 - strb r0, [r5, #0x8] - strb r8, [r5, #0x9] - add r5, r5, #0xa - ldr r0, [r4, #0x4] - mov r1, r5 - mov r2, r8 - bl MI_CpuCopy8 - add r5, r5, r8 -_020A12D0: - mov r0, #0xe - strb r0, [r5, #0x0] - mov r1, #0x0 - strb r1, [r5, #0x1] - strb r1, [r5, #0x2] - strb r1, [r5, #0x3] - add r5, r5, #0x4 -_020A12EC: - mov r0, #0x16 - sub r1, r5, r6 - sub r4, r1, #0x5 - strb r0, [r6, #0x0] - mov r0, #0x3 - strb r0, [r6, #0x1] - mov r0, #0x0 - strb r0, [r6, #0x2] - mov r0, r4, asr #0x8 - strb r0, [r6, #0x3] - mov r0, r7 - mov r2, r4 - add r1, r6, #0x5 - strb r4, [r6, #0x4] - bl FUN_020A1944 - mov r2, #0x0 - mov r0, r6 - mov r3, r2 - add r1, r4, #0x5 - str r9, [sp, #0x0] - bl FUN_0209C1D4 - ldr r1, _020A1368 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldrb r0, [r7, #0x31] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_020A1360: .word UNK_021C8EC8 -_020A1364: .word UNK_021CA6E4 -_020A1368: .word UNK_021C8EF4 - - arm_func_start FUN_020A136C -FUN_020A136C: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x60 - mov r6, r0 - add r0, sp, #0x0 - mov r5, r1 - bl FUN_020A41CC - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _020A13D8 ; =UNK_021CA6E8 - add r0, sp, #0x0 - mov r2, #0x14 - bl FUN_020A410C - mov r1, r6 - mov r2, r5 - add r0, sp, #0x0 - bl FUN_020A410C - ldr r1, _020A13D8 ; =UNK_021CA6E8 - add r0, sp, #0x0 - bl FUN_020A4098 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _020A13DC ; =UNK_021CA6E0 - mov r1, #0x1 - strb r1, [r0, #0x0] - add sp, sp, #0x60 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A13D8: .word UNK_021CA6E8 -_020A13DC: .word UNK_021CA6E0 - - arm_func_start FUN_020A13E0 -FUN_020A13E0: ; 0x020A13E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x7c - ldr r2, _020A1518 ; =UNK_021CA6E0 - mov r10, r0 - ldrb r0, [r2, #0x0] - mov r9, r1 - cmp r0, #0x0 - bne _020A1448 - ldr r2, _020A151C ; =UNK_021C8F24 - add r0, sp, #0x4 - ldr r4, [r2, #0x8] - ldr r3, [r2, #0x0] - ldr r1, [r2, #0x4] - umull r6, r5, r4, r3 - mla r5, r4, r1, r5 - ldr r1, [r2, #0xc] - ldr r4, [r2, #0x10] - mla r5, r1, r3, r5 - adds r4, r4, r6 - ldr r3, [r2, #0x14] - mov r1, #0x4 - adc r3, r3, r5 - str r4, [r2, #0x0] - str r3, [r2, #0x4] - str r3, [sp, #0x4] - bl FUN_020A136C -_020A1448: - cmp r9, #0x0 - mov r7, #0x0 - addle sp, sp, #0x7c - mov r1, #0x14 - ldmleia sp!, {r4-r11,lr} - bxle lr - add r6, sp, #0x1c - mov r11, r1 - str r7, [sp, #0x0] - mov r5, #0x1 - mov r4, #0x13 -_020A1474: - cmp r1, #0x14 - bne _020A14EC - mov r0, r6 - bl FUN_020A41CC - bl OS_DisableInterrupts - mov r8, r0 - ldr r1, _020A1520 ; =UNK_021CA6E8 - mov r0, r6 - mov r2, r11 - bl FUN_020A410C - mov r0, r6 - add r1, sp, #0x8 - bl FUN_020A405C - ldr r2, _020A1524 ; =UNK_021CA6FB - mov r12, r5 - mov lr, r4 - add r3, sp, #0x1b -_020A14B8: - ldrb r1, [r2, #0x0] - ldrb r0, [r3], #-0x1 - subs lr, lr, #0x1 - add r0, r1, r0 - add r0, r12, r0 - strb r0, [r2, #0x0] - mov r12, r0, lsr #0x8 - sub r2, r2, #0x1 - bpl _020A14B8 - str r0, [sp, #0x4] - mov r0, r8 - bl OS_RestoreInterrupts - ldr r1, [sp, #0x0] -_020A14EC: - add r0, sp, #0x8 - ldrb r0, [r0, r1] - add r1, r1, #0x1 - cmp r0, #0x0 - strneb r0, [r10, r7] - addne r7, r7, #0x1 - cmp r7, r9 - blt _020A1474 - add sp, sp, #0x7c - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A1518: .word UNK_021CA6E0 -_020A151C: .word UNK_021C8F24 -_020A1520: .word UNK_021CA6E8 -_020A1524: .word UNK_021CA6FB - - arm_func_start FUN_020A1528 -FUN_020A1528: ; 0x020A1528 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r0 - ldr r4, [r5, #0xc] - add r6, sp, #0x0 -_020A153C: - mov r0, r6 - mov r1, r5 - bl FUN_0209C6C0 - ldr r1, [sp, #0x0] - cmp r1, #0x0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - cmp r1, #0x5 - blo _020A153C - ldrb r1, [r0, #0x0] - cmp r1, #0x80 - bne _020A1634 - ldrb r1, [r4, #0x454] - cmp r1, #0x0 - beq _020A1628 - ldrb r1, [r4, #0x455] - cmp r1, #0x0 - bne _020A1628 - ldrb r2, [r0, #0x1] - mov r1, r5 - mov r0, #0x2 - str r2, [sp, #0x0] - bl FUN_0209C580 - ldr r1, _020A16DC ; =UNK_021C8EC8 - ldr r0, [sp, #0x0] - ldr r1, [r1, #0x0] - blx r1 - movs r6, r0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r1, [sp, #0x0] - mov r2, r5 - bl FUN_020A1974 - cmp r0, #0x0 - bne _020A15FC - ldrb r0, [r6, #0x0] - cmp r0, #0x1 - bne _020A15FC - mov r0, r4 - add r1, r6, #0x1 - bl FUN_020A2774 - b _020A1604 -_020A15FC: - mov r0, #0x9 - strb r0, [r4, #0x455] -_020A1604: - ldr r2, [sp, #0x0] - mov r0, r4 - mov r1, r6 - bl FUN_020A1944 - ldr r1, _020A16E0 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - b _020A16CC -_020A1628: - mov r0, #0x9 - strb r0, [r4, #0x455] - b _020A16CC -_020A1634: - ldrb r2, [r0, #0x3] - ldrb r0, [r0, #0x4] - ldr r1, _020A16E4 ; =0x00004805 - add r0, r0, r2, lsl #0x8 - add r0, r0, #0x5 - str r0, [sp, #0x0] - cmp r0, r1 - movhi r0, #0x9 - addhi sp, sp, #0x8 - strhib r0, [r4, #0x455] - ldmhiia sp!, {r4-r6,lr} - bxhi lr - ldr r1, _020A16DC ; =UNK_021C8EC8 - ldr r1, [r1, #0x0] - blx r1 - movs r6, r0 - moveq r0, #0x9 - addeq sp, sp, #0x8 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r1, [sp, #0x0] - mov r2, r5 - bl FUN_020A1974 - cmp r0, #0x0 - beq _020A16C0 - ldr r1, _020A16E0 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - mov r0, #0x9 - add sp, sp, #0x8 - strb r0, [r4, #0x455] - ldmia sp!, {r4-r6,lr} - bx lr -_020A16C0: - mov r0, r4 - mov r1, r6 - bl FUN_020A16E8 -_020A16CC: - ldrb r0, [r4, #0x455] - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A16DC: .word UNK_021C8EC8 -_020A16E0: .word UNK_021C8EF4 -_020A16E4: .word 0x00004805 - - arm_func_start FUN_020A16E8 -FUN_020A16E8: ; 0x020A16E8 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldrb r0, [r8, #0x455] - mov r7, r1 - cmp r0, #0x9 - bne _020A1718 - ldr r1, _020A1940 ; =UNK_021C8EF4 - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - ldmia sp!, {r4-r8,lr} - bx lr -_020A1718: - ldrb r2, [r7, #0x3] - ldrb r1, [r7, #0x4] - add r0, r0, #0xf9 - and r0, r0, #0xff - add r1, r1, r2, lsl #0x8 - cmp r0, #0x1 - add r5, r1, #0x5 - ldrb r4, [r7, #0x0] - bhi _020A1744 - cmp r4, #0x15 - bne _020A1754 -_020A1744: - cmp r4, #0x15 - bne _020A1764 - cmp r5, #0x7 - bls _020A1764 -_020A1754: - mov r0, r8 - mov r1, r7 - bl FUN_020A1C08 - mov r5, r0 -_020A1764: - sub r0, r4, #0x14 - cmp r0, #0x3 - add r6, r7, #0x5 - sub r5, r5, #0x5 - addls pc, pc, r0, lsl #0x2 - b _020A1920 - b _020A178C - b _020A17BC - b _020A17D0 - b _020A18FC -_020A178C: - ldr r0, [r8, #0x1d4] - cmp r0, #0x0 - moveq r0, #0x9 - streqb r0, [r8, #0x455] - beq _020A1928 - add r0, r8, #0x2e4 - mov r1, #0x0 - mov r2, #0x8 - bl MI_CpuFill8 - mov r0, #0x7 - strb r0, [r8, #0x455] - b _020A1928 -_020A17BC: - ldrb r0, [r6, #0x0] - cmp r0, #0x2 - moveq r0, #0x9 - streqb r0, [r8, #0x455] - b _020A1928 -_020A17D0: - ldrb r1, [r6, #0x1] - ldrb r0, [r6, #0x2] - ldrb r3, [r6, #0x0] - ldrb r2, [r6, #0x3] - mov r1, r1, lsl #0x10 - add r0, r1, r0, lsl #0x8 - cmp r3, #0xb - add r4, r2, r0 - add r6, r6, #0x4 - bgt _020A1824 - cmp r3, #0xb - bge _020A1898 - cmp r3, #0x2 - bgt _020A18C4 - cmp r3, #0x1 - blt _020A18C4 - cmp r3, #0x1 - beq _020A1850 - cmp r3, #0x2 - beq _020A1888 - b _020A18C4 -_020A1824: - cmp r3, #0x14 - bgt _020A18C4 - cmp r3, #0xe - blt _020A18C4 - cmp r3, #0xe - beq _020A18A8 - cmp r3, #0x10 - beq _020A1878 - cmp r3, #0x14 - beq _020A18B4 - b _020A18C4 -_020A1850: - ldrb r0, [r8, #0x454] - cmp r0, #0x0 - beq _020A18CC - ldrb r0, [r8, #0x455] - cmp r0, #0x0 - bne _020A18CC - mov r0, r8 - mov r1, r6 - bl FUN_020A26D0 - b _020A18CC -_020A1878: - mov r0, r8 - mov r1, r6 - bl FUN_020A211C - b _020A18CC -_020A1888: - mov r0, r8 - mov r1, r6 - bl FUN_020A2914 - b _020A18CC -_020A1898: - mov r0, r8 - mov r1, r6 - bl FUN_020A29DC - b _020A18CC -_020A18A8: - mov r0, #0x4 - strb r0, [r8, #0x455] - b _020A18CC -_020A18B4: - mov r0, r8 - mov r1, r6 - bl FUN_020A1E84 - b _020A18CC -_020A18C4: - mov r0, #0x9 - strb r0, [r8, #0x455] -_020A18CC: - mov r0, r8 - sub r1, r6, #0x4 - add r2, r4, #0x4 - bl FUN_020A1944 - add r0, r4, #0x4 - add r6, r6, r4 - subs r5, r5, r0 - beq _020A1928 - ldrb r0, [r8, #0x455] - cmp r0, #0x9 - bne _020A17D0 - b _020A1928 -_020A18FC: - str r7, [r8, #0x824] - mov r0, #0x5 - str r0, [r8, #0x82c] - add r0, r5, #0x5 - str r0, [r8, #0x828] - mov r0, #0x1 - strb r0, [r8, #0x456] - ldmia sp!, {r4-r8,lr} - bx lr -_020A1920: - mov r0, #0x9 - strb r0, [r8, #0x455] -_020A1928: - ldr r1, _020A1940 ; =UNK_021C8EF4 - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A1940: .word UNK_021C8EF4 - - arm_func_start FUN_020A1944 -FUN_020A1944: ; 0x020A1944 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - add r0, r6, #0x2ec - bl FUN_020A410C - mov r1, r5 - mov r2, r4 - add r0, r6, #0x3a4 - bl FUN_020A3ACC - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A1974 -FUN_020A1974: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - add r4, sp, #0x0 -_020A198C: - mov r0, r4 - mov r1, r5 - bl FUN_0209C6C0 - ldr r1, [sp, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - cmp r1, r6 - strhi r6, [sp, #0x0] - ldr r2, [sp, #0x0] - mov r1, r7 - bl MI_CpuCopy8 - ldr r0, [sp, #0x0] - mov r1, r5 - bl FUN_0209C580 - ldr r0, [sp, #0x0] - sub r6, r6, r0 - cmp r6, #0x0 - add r7, r7, r0 - bgt _020A198C - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A19F4 -FUN_020A19F4: ; 0x020A19F4 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x30 - mov r5, r1 - mov r6, r0 - ldrh r0, [r6, #0x32] - ldrb r3, [r5, #0x3] - ldrb r2, [r5, #0x4] - add r1, r5, #0x5 - cmp r0, #0x4 - add r4, r2, r3, lsl #0x8 - add r8, r1, r4 - beq _020A1A30 - cmp r0, #0x5 - beq _020A1B04 - b _020A1BD4 -_020A1A30: - add r7, r6, #0x3fc - mov r0, r7 - bl FUN_020A3B8C - ldr r1, [r6, #0xbc] - mov r0, r7 - mov r2, #0x10 - bl FUN_020A3ACC - add r0, sp, #0x0 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - mov r0, r7 - add r1, sp, #0x0 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r7 - add r1, r6, #0x1cc - mov r2, #0x8 - bl FUN_020A3ACC - mov r0, r7 - mov r1, r5 - mov r2, #0x1 - bl FUN_020A3ACC - mov r0, r7 - add r1, r5, #0x3 - add r2, r4, #0x2 - bl FUN_020A3ACC - mov r0, r7 - mov r1, r8 - bl FUN_020A3A58 - mov r0, r7 - bl FUN_020A3B8C - ldr r1, [r6, #0xbc] - mov r0, r7 - mov r2, #0x10 - bl FUN_020A3ACC - add r0, sp, #0x0 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - mov r0, r7 - add r1, sp, #0x0 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r7 - mov r1, r8 - mov r2, #0x10 - bl FUN_020A3ACC - mov r0, r7 - mov r1, r8 - bl FUN_020A3A58 - add r4, r4, #0x10 - b _020A1BD4 -_020A1B04: - add r7, r6, #0x348 - mov r0, r7 - bl FUN_020A41CC - ldr r1, [r6, #0xbc] - mov r0, r7 - mov r2, #0x14 - bl FUN_020A410C - add r0, sp, #0x0 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - mov r0, r7 - add r1, sp, #0x0 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r7 - add r1, r6, #0x1cc - mov r2, #0x8 - bl FUN_020A410C - mov r0, r7 - mov r1, r5 - mov r2, #0x1 - bl FUN_020A410C - mov r0, r7 - add r1, r5, #0x3 - add r2, r4, #0x2 - bl FUN_020A410C - mov r0, r7 - mov r1, r8 - bl FUN_020A4098 - mov r0, r7 - bl FUN_020A41CC - ldr r1, [r6, #0xbc] - mov r0, r7 - mov r2, #0x14 - bl FUN_020A410C - add r0, sp, #0x0 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - mov r0, r7 - add r1, sp, #0x0 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r7 - mov r1, r8 - mov r2, #0x14 - bl FUN_020A410C - mov r0, r7 - mov r1, r8 - bl FUN_020A4098 - add r4, r4, #0x14 -_020A1BD4: - mov r0, r4, asr #0x8 - strb r0, [r5, #0x3] - mov r2, r4 - add r0, r6, #0xc8 - add r1, r5, #0x5 - strb r4, [r5, #0x4] - bl FUN_020A49CC - add r0, r6, #0x1d4 - bl FUN_020A1E60 - add r0, r4, #0x5 - add sp, sp, #0x30 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020A1C08 -FUN_020A1C08: ; 0x020A1C08 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x44 - mov r6, r1 - ldrb r3, [r6, #0x3] - ldrb r2, [r6, #0x4] - mov r7, r0 - add r1, r6, #0x5 - add r2, r2, r3, lsl #0x8 - bl FUN_020A1E44 - ldrh r1, [r7, #0x32] - mov r5, r0 - cmp r1, #0x4 - beq _020A1C48 - cmp r1, #0x5 - beq _020A1D2C - b _020A1E0C -_020A1C48: - sub r5, r5, #0x10 - mov r0, r5, asr #0x8 - strb r0, [r6, #0x3] - add r4, r7, #0x3fc - mov r0, r4 - strb r5, [r6, #0x4] - bl FUN_020A3B8C - ldr r1, [r7, #0x1d4] - mov r0, r4 - mov r2, #0x10 - bl FUN_020A3ACC - add r0, sp, #0x14 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x14 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r4 - add r1, r7, #0x2e4 - mov r2, #0x8 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r6 - mov r2, #0x1 - bl FUN_020A3ACC - mov r0, r4 - add r1, r6, #0x3 - add r2, r5, #0x2 - bl FUN_020A3ACC - mov r0, r4 - add r1, sp, #0x0 - bl FUN_020A3A58 - mov r0, r4 - bl FUN_020A3B8C - ldr r1, [r7, #0x1d4] - mov r0, r4 - mov r2, #0x10 - bl FUN_020A3ACC - add r0, sp, #0x14 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x14 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r4 - add r1, sp, #0x0 - mov r2, #0x10 - bl FUN_020A3ACC - mov r0, r4 - add r1, sp, #0x0 - bl FUN_020A3A58 - mov r4, #0x10 - b _020A1E0C -_020A1D2C: - sub r5, r5, #0x14 - mov r0, r5, asr #0x8 - strb r0, [r6, #0x3] - add r4, r7, #0x348 - mov r0, r4 - strb r5, [r6, #0x4] - bl FUN_020A41CC - ldr r1, [r7, #0x1d4] - mov r0, r4 - mov r2, #0x14 - bl FUN_020A410C - add r0, sp, #0x14 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x14 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r4 - add r1, r7, #0x2e4 - mov r2, #0x8 - bl FUN_020A410C - mov r0, r4 - mov r1, r6 - mov r2, #0x1 - bl FUN_020A410C - mov r0, r4 - add r1, r6, #0x3 - add r2, r5, #0x2 - bl FUN_020A410C - mov r0, r4 - add r1, sp, #0x0 - bl FUN_020A4098 - mov r0, r4 - bl FUN_020A41CC - ldr r1, [r7, #0x1d4] - mov r0, r4 - mov r2, #0x14 - bl FUN_020A410C - add r0, sp, #0x14 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x14 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r4 - add r1, sp, #0x0 - mov r2, #0x14 - bl FUN_020A410C - mov r0, r4 - add r1, sp, #0x0 - bl FUN_020A4098 - mov r4, #0x14 -_020A1E0C: - add r0, r6, #0x5 - add r1, sp, #0x0 - mov r2, r4 - add r0, r0, r5 - bl memcmp - cmp r0, #0x0 - movne r0, #0x9 - strneb r0, [r7, #0x455] - add r0, r7, #0x2ec - bl FUN_020A1E60 - add r0, r5, #0x5 - add sp, sp, #0x44 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A1E44 -FUN_020A1E44: ; 0x020A1E44 - stmdb sp!, {r4,lr} - add r0, r0, #0x1e0 - mov r4, r2 - bl FUN_020A49CC - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A1E60 -FUN_020A1E60: ; 0x020A1E60 - mov r2, #0x8 -_020A1E64: - ldrb r1, [r0, #-0x1]! - add r1, r1, #0x1 - ands r1, r1, #0xff - strb r1, [r0, #0x0] - bxne lr - subs r2, r2, #0x1 - bne _020A1E64 - bx lr - - arm_func_start FUN_020A1E84 -FUN_020A1E84: ; 0x020A1E84 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x3a4 - add r1, r5, #0x3fc - mov r2, #0x58 - bl MI_CpuCopy8 - add r1, sp, #0x0 - mov r0, r5 - mov r2, #0x1 - bl FUN_020A2034 - add r0, r5, #0x3fc - add r1, r5, #0x3a4 - mov r2, #0x58 - bl MI_CpuCopy8 - add r1, sp, #0x0 - mov r0, r4 - mov r2, #0x10 - bl memcmp - cmp r0, #0x0 - movne r0, #0x9 - addne sp, sp, #0x14 - strneb r0, [r5, #0x455] - ldmneia sp!, {r4-r5,lr} - bxne lr - add r0, r5, #0x2ec - add r1, r5, #0x348 - mov r2, #0x5c - bl MI_CpuCopy8 - add r1, sp, #0x0 - mov r0, r5 - mov r2, #0x1 - bl FUN_020A1F4C - add r0, r5, #0x348 - add r1, r5, #0x2ec - mov r2, #0x5c - bl MI_CpuCopy8 - add r1, sp, #0x0 - add r0, r4, #0x10 - mov r2, #0x14 - bl memcmp - cmp r0, #0x0 - movne r0, #0x9 - strneb r0, [r5, #0x455] - moveq r0, #0x6 - streqb r0, [r5, #0x455] - add sp, sp, #0x14 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A1F4C -FUN_020A1F4C: ; 0x020A1F4C - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x28 - mov r6, r0 - ldrb r0, [r6, #0x454] - mov r5, r1 - add r4, r6, #0x2ec - eors r0, r0, r2 - beq _020A1F80 - ldr r1, _020A202C ; =UNK_02106290 - mov r0, r4 - mov r2, #0x4 - bl FUN_020A410C - b _020A1F90 -_020A1F80: - ldr r1, _020A2030 ; =UNK_02106298 - mov r0, r4 - mov r2, #0x4 - bl FUN_020A410C -_020A1F90: - mov r0, r4 - mov r1, r6 - mov r2, #0x30 - bl FUN_020A410C - add r0, sp, #0x0 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - add r1, sp, #0x0 - mov r0, r4 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - bl FUN_020A4098 - mov r0, r4 - bl FUN_020A41CC - mov r1, r6 - mov r0, r4 - mov r2, #0x30 - bl FUN_020A410C - add r0, sp, #0x0 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x0 - mov r2, #0x28 - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - mov r2, #0x14 - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - bl FUN_020A4098 - add sp, sp, #0x28 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A202C: .word UNK_02106290 -_020A2030: .word UNK_02106298 - - arm_func_start FUN_020A2034 -FUN_020A2034: ; 0x020A2034 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x30 - mov r6, r0 - ldrb r0, [r6, #0x454] - mov r5, r1 - add r4, r6, #0x3a4 - eors r0, r0, r2 - beq _020A2068 - ldr r1, _020A2114 ; =UNK_02106290 - mov r0, r4 - mov r2, #0x4 - bl FUN_020A3ACC - b _020A2078 -_020A2068: - ldr r1, _020A2118 ; =UNK_02106298 - mov r0, r4 - mov r2, #0x4 - bl FUN_020A3ACC -_020A2078: - mov r0, r4 - mov r1, r6 - mov r2, #0x30 - bl FUN_020A3ACC - add r0, sp, #0x0 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - add r1, sp, #0x0 - mov r0, r4 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r5 - bl FUN_020A3A58 - mov r0, r4 - bl FUN_020A3B8C - mov r1, r6 - mov r0, r4 - mov r2, #0x30 - bl FUN_020A3ACC - add r0, sp, #0x0 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - mov r0, r4 - add r1, sp, #0x0 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r5 - mov r2, #0x10 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r5 - bl FUN_020A3A58 - add sp, sp, #0x30 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A2114: .word UNK_02106290 -_020A2118: .word UNK_02106298 - - arm_func_start FUN_020A211C -FUN_020A211C: ; 0x020A211C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r2, [r4, #0x81c] - bl FUN_020A2470 - mov r0, r4 - bl FUN_020A2364 - mov r1, #0x0 - mov r0, r4 - mov r2, r1 - bl FUN_020A3808 - mov r0, r4 - bl FUN_020A215C - mov r0, #0x5 - strb r0, [r4, #0x455] - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A215C -FUN_020A215C: ; 0x020A215C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r10, r0 - ldrh r0, [r10, #0x32] - cmp r0, #0x4 - beq _020A2190 - cmp r0, #0x5 - moveq r0, #0x14 - streq r0, [sp, #0x0] - moveq r0, #0x10 - streq r0, [sp, #0x4] - moveq r2, #0x0 - b _020A21A0 -_020A2190: - mov r0, #0x10 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - mov r2, #0x0 -_020A21A0: - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - mov r9, #0x0 - add r0, r1, r0 - add r0, r2, r0 - mov r0, r0, lsl #0x1 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _020A22B8 - mov r0, #0x20 - str r0, [sp, #0x10] - mov r0, #0x14 - mov r6, r9 - add r5, sp, #0x18 - str r9, [sp, #0xc] - mov r4, #0x1 - mov r11, #0x30 - str r0, [sp, #0x14] -_020A21E8: - add r7, r10, #0x348 - mov r0, r7 - bl FUN_020A41CC - add r0, r9, #0x41 - strb r0, [sp, #0x18] - add r0, r9, #0x1 - ldr r8, [sp, #0xc] - cmp r0, #0x0 - ble _020A222C -_020A220C: - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl FUN_020A410C - add r8, r8, #0x1 - add r0, r9, #0x1 - cmp r8, r0 - blt _020A220C -_020A222C: - mov r0, r7 - mov r1, r10 - mov r2, r11 - bl FUN_020A410C - ldr r2, [sp, #0x10] - mov r0, r7 - add r1, r10, #0x54 - bl FUN_020A410C - ldr r2, [sp, #0x10] - mov r0, r7 - add r1, r10, #0x34 - bl FUN_020A410C - mov r0, r7 - add r1, sp, #0x19 - bl FUN_020A4098 - add r7, r10, #0x3fc - mov r0, r7 - bl FUN_020A3B8C - mov r0, r7 - mov r1, r10 - mov r2, r11 - bl FUN_020A3ACC - ldr r2, [sp, #0x14] - mov r0, r7 - add r1, sp, #0x19 - bl FUN_020A3ACC - add r1, r10, #0x74 - mov r0, r7 - add r1, r1, r6 - bl FUN_020A3A58 - ldr r0, [sp, #0x8] - add r6, r6, #0x10 - cmp r6, r0 - add r9, r9, #0x1 - blt _020A21E8 -_020A22B8: - ldrb r0, [r10, #0x454] - cmp r0, #0x0 - beq _020A2300 - add r1, r10, #0x74 - str r1, [r10, #0x1d4] - ldr r0, [sp, #0x0] - ldr r2, [r10, #0x1d4] - add r1, r1, r0 - add r0, r2, r0, lsl #0x1 - str r0, [r10, #0x1d8] - str r1, [r10, #0xbc] - ldr r1, [r10, #0xbc] - ldr r0, [sp, #0x0] - add r1, r1, r0 - ldr r0, [sp, #0x4] - add r0, r1, r0 - str r0, [r10, #0xc0] - b _020A2338 -_020A2300: - add r1, r10, #0x74 - str r1, [r10, #0xbc] - ldr r0, [sp, #0x0] - ldr r2, [r10, #0xbc] - add r1, r1, r0 - add r0, r2, r0, lsl #0x1 - str r0, [r10, #0xc0] - str r1, [r10, #0x1d4] - ldr r1, [r10, #0x1d4] - ldr r0, [sp, #0x0] - add r1, r1, r0 - ldr r0, [sp, #0x4] - add r0, r1, r0 - str r0, [r10, #0x1d8] -_020A2338: - ldr r1, [r10, #0x1d8] - add r0, r10, #0x1e0 - mov r2, #0x10 - bl FUN_020A4A3C - ldr r1, [r10, #0xc0] - add r0, r10, #0xc8 - mov r2, #0x10 - bl FUN_020A4A3C - add sp, sp, #0x34 - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_020A2364 -FUN_020A2364: ; 0x020A2364 - stmdb sp!, {r4,lr} - sub sp, sp, #0x30 - mov r4, r0 - ldr r1, _020A23BC ; =UNK_021062A0 - add r0, sp, #0x0 - mov r2, r4 - bl FUN_020A23C8 - ldr r1, _020A23C0 ; =UNK_021062A4 - add r0, sp, #0x10 - mov r2, r4 - bl FUN_020A23C8 - ldr r1, _020A23C4 ; =UNK_021062A8 - add r0, sp, #0x20 - mov r2, r4 - bl FUN_020A23C8 - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x30 - bl MI_CpuCopy8 - add sp, sp, #0x30 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A23BC: .word UNK_021062A0 -_020A23C0: .word UNK_021062A4 -_020A23C4: .word UNK_021062A8 - - arm_func_start FUN_020A23C8 -FUN_020A23C8: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r5, r2 - add r4, r5, #0x348 - mov r7, r0 - mov r6, r1 - mov r0, r4 - bl FUN_020A41CC - mov r0, r6 - bl strlen - mov r2, r0 - mov r1, r6 - mov r0, r4 - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - mov r2, #0x30 - bl FUN_020A410C - mov r0, r4 - add r1, r5, #0x34 - mov r2, #0x40 - bl FUN_020A410C - mov r0, r4 - add r1, sp, #0x0 - bl FUN_020A4098 - add r4, r5, #0x3fc - mov r0, r4 - bl FUN_020A3B8C - mov r1, r5 - mov r0, r4 - mov r2, #0x30 - bl FUN_020A3ACC - mov r0, r4 - add r1, sp, #0x0 - mov r2, #0x14 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r7 - bl FUN_020A3A58 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A2470 -FUN_020A2470: ; 0x020A2470 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x1c - movs r10, r2 - str r0, [sp, #0x8] - mov r11, r1 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldr r0, [r10, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r11,lr} - bxeq lr - mov r0, r0, lsl #0x1 - add r0, r0, r0, lsr #0x1f - mov r0, r0, asr #0x1 - add r9, r0, #0x1 - mov r0, #0x14 - mul r0, r9, r0 - ldr r1, _020A26C8 ; =UNK_021C8EC8 - ldr r1, [r1, #0x0] - blx r1 - movs r8, r0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r11,lr} - bxeq lr - add r7, r8, r9, lsl #0x1 - add r6, r7, r9, lsl #0x1 - add r1, r6, r9, lsl #0x1 - str r1, [sp, #0xc] - add r1, r1, r9, lsl #0x1 - add r5, r1, r9, lsl #0x1 - str r1, [sp, #0x10] - ldr r2, [r10, #0x0] - add r4, r5, r9, lsl #0x1 - mov r1, r11 - mov r3, r9 - add r11, r4, r9, lsl #0x1 - bl FUN_020A4B50 - ldr r1, [r10, #0x1c] - ldr r2, [r10, #0x18] - mov r0, r7 - mov r3, r9 - bl FUN_020A4B50 - ldr r1, [r10, #0xc] - ldr r2, [r10, #0x8] - mov r0, r5 - mov r3, r9 - bl FUN_020A4B50 - bl FUN_020A36EC - str r0, [sp, #0x14] - ldr r0, [sp, #0xc] - str r5, [sp, #0x0] - mov r1, r8 - mov r2, r7 - mov r3, r9 - bl FUN_020A4BB0 - ldr r1, [r10, #0x24] - ldr r2, [r10, #0x20] - mov r0, r7 - mov r3, r9 - bl FUN_020A4B50 - ldr r1, [r10, #0x14] - ldr r2, [r10, #0x10] - mov r0, r5 - mov r3, r9 - bl FUN_020A4B50 - ldr r0, [sp, #0x10] - mov r1, r8 - mov r2, r7 - mov r3, r9 - str r5, [sp, #0x0] - bl FUN_020A4BB0 - ldr r0, [sp, #0x14] - bl FUN_020A36B4 - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - mov r0, r8 - mov r3, r9 - bl FUN_020A57BC - ldr r1, [r10, #0x2c] - ldr r2, [r10, #0x28] - mov r0, r7 - mov r3, r9 - bl FUN_020A4B50 - mov r0, r6 - mov r1, r8 - mov r2, r7 - mov r3, r9 - bl FUN_020A5608 - ldr r1, [r10, #0x14] - ldr r2, [r10, #0x10] - mov r0, r7 - mov r3, r9 - bl FUN_020A4B50 - mov r0, r8 - mov r1, r6 - mov r2, r7 - mov r3, r9 - bl FUN_020A5608 - ldr r2, [sp, #0x10] - mov r0, r6 - mov r1, r8 - mov r3, r9 - bl FUN_020A5930 - ldr r1, [r10, #0x4] - ldr r2, [r10, #0x0] - mov r0, r7 - mov r3, r9 - bl FUN_020A4B50 - mov r0, r6 - mov r1, r9 - bl FUN_020A59DC - cmp r0, #0x0 - bge _020A267C - mov r0, r6 - mov r1, r9 - bl FUN_020A5874 - str r9, [sp, #0x0] - mov r1, r6 - mov r2, r7 - mov r3, r4 - mov r0, #0x0 - str r11, [sp, #0x4] - bl FUN_020A5240 - mov r0, r4 - mov r1, r7 - mov r2, r4 - mov r3, r9 - bl FUN_020A57BC - b _020A2698 -_020A267C: - str r9, [sp, #0x0] - mov r1, r6 - mov r2, r7 - mov r3, r4 - mov r0, #0x0 - str r11, [sp, #0x4] - bl FUN_020A5240 -_020A2698: - ldr r0, [sp, #0x8] - mov r1, r4 - mov r3, r9 - mov r2, #0x30 - bl FUN_020A4B08 - ldr r1, _020A26CC ; =UNK_021C8EF4 - mov r0, r8 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x1c - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A26C8: .word UNK_021C8EC8 -_020A26CC: .word UNK_021C8EF4 - - arm_func_start FUN_020A26D0 -FUN_020A26D0: ; 0x020A26D0 - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r4, r0 - ldrb r0, [r6, #0x0] - ldrb r1, [r6, #0x1] - bl FUN_020A284C - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - add r0, r6, #0x2 - add r1, r4, #0x34 - mov r2, #0x20 - bl MI_CpuCopy8 - ldrb r5, [r6, #0x22] - add r6, r6, #0x23 - cmp r5, #0x20 - movne r0, #0x0 - strneb r0, [r4, #0x30] - bne _020A2734 - mov r0, r6 - add r1, r4, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, r4 - bl FUN_020A39B0 -_020A2734: - add r0, r6, r5 - ldrb r1, [r0, #0x1] - ldrb r3, [r6, r5] - add r0, r0, #0x2 - mov r2, #0x2 - add r1, r1, r3, lsl #0x8 - add r1, r1, r1, lsr #0x1f - mov r1, r1, asr #0x1 - bl FUN_020A285C - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - strh r0, [r4, #0x32] - movne r0, #0x1 - strneb r0, [r4, #0x455] - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A2774 -FUN_020A2774: ; 0x020A2774 - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r6, r0 - ldrb r0, [r5, #0x0] - ldrb r1, [r5, #0x1] - bl FUN_020A284C - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrb r2, [r5, #0x2] - ldrb r1, [r5, #0x3] - ldr r3, _020A2848 ; =0x55555556 - add r0, r5, #0x8 - add r4, r1, r2, lsl #0x8 - smull r2, r1, r3, r4 - add r1, r1, r4, lsr #0x1f - mov r2, #0x3 - bl FUN_020A285C - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - strh r0, [r6, #0x32] - ldrb r12, [r5, #0x4] - ldrb r0, [r5, #0x5] - ldrb r3, [r5, #0x6] - ldrb r2, [r5, #0x7] - mov r1, #0x0 - add r12, r0, r12, lsl #0x8 - add r0, r4, #0x8 - add r4, r2, r3, lsl #0x8 - add r0, r0, r12 - strb r1, [r6, #0x30] - cmp r4, #0x20 - add r5, r5, r0 - blt _020A2818 - mov r0, r5 - add r1, r6, #0x34 - mov r2, #0x20 - bl MI_CpuCopy8 - b _020A2838 -_020A2818: - add r0, r6, #0x34 - rsb r2, r4, #0x20 - bl MI_CpuFill8 - add r1, r6, #0x54 - mov r0, r5 - mov r2, r4 - sub r1, r1, r4 - bl MI_CpuCopy8 -_020A2838: - mov r0, #0x1 - strb r0, [r6, #0x455] - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A2848: .word 0x55555556 - - arm_func_start FUN_020A284C -FUN_020A284C: - cmp r0, #0x3 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020A285C -FUN_020A285C: ; 0x020A285C - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0x0 - ldr r4, _020A28BC ; =UNK_0210623C -_020A2874: - mov r0, r5, lsl #0x1 - ldrh r3, [r4, r0] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl FUN_020A28C0 - cmp r0, #0x0 - ldrne r0, _020A28BC ; =UNK_0210623C - movne r1, r5, lsl #0x1 - ldrneh r0, [r0, r1] - ldmneia sp!, {r4-r8,lr} - bxne lr - add r5, r5, #0x1 - cmp r5, #0x2 - blo _020A2874 - mov r0, #0x0 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A28BC: .word UNK_0210623C - - arm_func_start FUN_020A28C0 -FUN_020A28C0: - stmdb sp!, {r4,lr} - cmp r1, #0x0 - mov r4, #0x0 - ble _020A2908 -_020A28D0: - ldrb lr, [r0, #0x0] - ldrb r12, [r0, #0x1] - cmp r2, #0x3 - add lr, r12, lr, lsl #0x8 - ldreqb r12, [r0, #0x2] - addeq lr, r12, lr, lsl #0x8 - cmp lr, r3 - moveq r0, #0x1 - ldmeqia sp!, {r4,lr} - bxeq lr - add r4, r4, #0x1 - cmp r4, r1 - add r0, r0, r2 - blt _020A28D0 -_020A2908: - mov r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A2914 -FUN_020A2914: ; 0x020A2914 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - add r0, r5, #0x2 - add r1, r6, #0x54 - mov r2, #0x20 - bl MI_CpuCopy8 - add r0, r5, #0x22 - ldrb r7, [r6, #0x30] - add r5, r5, #0x23 - ldrb r4, [r0, #0x0] - cmp r7, #0x0 - beq _020A2974 - cmp r4, #0x20 - bne _020A2974 - mov r1, r5 - add r0, r6, #0x74 - mov r2, #0x20 - bl memcmp - cmp r0, #0x0 - moveq r0, #0x1 - streqb r0, [r6, #0x31] - beq _020A29B4 -_020A2974: - cmp r7, #0x0 - beq _020A2984 - mov r0, r6 - bl FUN_020A3798 -_020A2984: - cmp r4, #0x0 - moveq r0, #0x0 - streqb r0, [r6, #0x30] - beq _020A29AC - mov r0, r5 - add r1, r6, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, #0x1 - strb r0, [r6, #0x30] -_020A29AC: - mov r0, #0x0 - strb r0, [r6, #0x31] -_020A29B4: - add r0, r5, r4 - ldrb r2, [r5, r4] - ldrb r1, [r0, #0x1] - mov r0, #0x2 - add r1, r1, r2, lsl #0x8 - strh r1, [r6, #0x32] - strb r0, [r6, #0x455] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A29DC -FUN_020A29DC: ; 0x020A29DC - stmdb sp!, {r0-r3} - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - ldr r1, [sp, #0x4c] - mov r10, r0 - ldrb r4, [r1, #0x2] - ldrb r3, [r1, #0x0] - ldrb r2, [r1, #0x1] - add r0, r1, #0x3 - mvn r1, #0x0 - str r0, [sp, #0x4c] - add r2, r2, r3, lsl #0x8 - add r0, sp, #0x14 - str r1, [r10, #0x45c] - add r7, r4, r2, lsl #0x8 - bl RTC_GetDate - mov r8, #0x0 - ldr r0, [sp, #0x14] - ldr r2, [sp, #0x1c] - add r1, r0, #0x7d0 - ldr r0, [sp, #0x18] - mov r1, r1, lsl #0x10 - add r0, r1, r0, lsl #0x8 - add r0, r2, r0 - str r0, [r10, #0x80c] - strb r8, [r10, #0x6b0] - str r8, [r10, #0x5a0] - ldr r0, [r10, #0x5a0] - mov r6, r8 - str r0, [r10, #0x594] - add r0, r10, #0x7b0 - str r0, [sp, #0x4] - mov r0, #0x1 - str r8, [sp, #0x8] - mov r4, r8 - mov r11, #0x2 - str r0, [sp, #0xc] - mvn r5, #0x0 -_020A2A74: - ldr r1, [sp, #0x4c] - mov r0, r10 - ldrb r2, [r1, #0x2] - ldrb r12, [r1, #0x0] - ldrb r3, [r1, #0x1] - add r9, r1, #0x3 - add r1, sp, #0x4c - str r9, [sp, #0x4c] - str r5, [r10, #0x458] - strb r4, [r10, #0x5ad] - strb r4, [r10, #0x5ac] - strb r4, [r10, #0x5af] - strb r4, [r10, #0x6b0] - strb r4, [r10, #0x5b0] - strb r4, [r10, #0x7b0] - add r3, r3, r12, lsl #0x8 - ldr r9, [sp, #0x4c] - add r3, r2, r3, lsl #0x8 - add r2, r3, #0x3 - str r9, [r10, #0x804] - str r3, [r10, #0x808] - sub r7, r7, r2 - mov r2, r4 - mov r3, r4 - str r8, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - bne _020A2AFC - ldr r0, [r10, #0x594] - cmp r0, #0x33 - blo _020A2AFC - ldr r0, [r10, #0x5a0] - cmp r0, #0x0 - bne _020A2B14 -_020A2AFC: - mov r0, #0x9 - add sp, sp, #0x24 - strb r0, [r10, #0x455] - ldmia sp!, {r4-r11,lr} - add sp, sp, #0x10 - bx lr -_020A2B14: - mov r0, r10 - bl FUN_020A2CBC - mov r8, r0 - cmp r6, #0x0 - bne _020A2B44 - ldr r0, [r10, #0x800] - cmp r0, #0x0 - beq _020A2B44 - ldr r1, [sp, #0x4] - bl FUN_020A2C18 - cmp r0, #0x0 - orrne r8, r8, #0x4000 -_020A2B44: - and r9, r8, #0xff - cmp r9, #0x1 - bne _020A2BB4 - cmp r7, #0x0 - beq _020A2BB4 - ldr r1, [sp, #0x4c] - ldr r2, [sp, #0x8] - add r1, r1, #0x3 - str r1, [sp, #0x10] - ldr r1, [sp, #0x8] - mov r0, r10 - strb r1, [r10, #0x5ad] - add r1, sp, #0x10 - mov r3, r2 - str r11, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - movne r0, #0x9 - addne sp, sp, #0x24 - strneb r0, [r10, #0x455] - ldmneia sp!, {r4-r11,lr} - addne sp, sp, #0x10 - bxne lr - mov r0, r10 - add r1, r10, #0x480 - bl FUN_020A2DBC - bic r1, r8, #0xff - orr r8, r1, r0 -_020A2BB4: - ldr r3, [r10, #0x810] - cmp r3, #0x0 - beq _020A2BD4 - mov r0, r8 - mov r1, r10 - mov r2, r6 - blx r3 - mov r8, r0 -_020A2BD4: - cmp r9, #0x0 - add r6, r6, #0x1 - beq _020A2BF4 - cmp r8, #0x0 - bne _020A2BF4 - cmp r7, #0x0 - ldrne r8, [sp, #0xc] - bne _020A2A74 -_020A2BF4: - cmp r8, #0x0 - moveq r0, #0x3 - streqb r0, [r10, #0x455] - movne r0, #0x9 - strneb r0, [r10, #0x455] - add sp, sp, #0x24 - ldmia sp!, {r4-r11,lr} - add sp, sp, #0x10 - bx lr - - arm_func_start FUN_020A2C18 -FUN_020A2C18: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - b _020A2C38 -_020A2C28: - cmp r1, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr -_020A2C38: - ldrsb r0, [r5], #0x1 - ldrsb r1, [r6], #0x1 - cmp r1, r0 - beq _020A2C28 - cmp r0, #0x2a - movne r0, #0x1 - ldmneia sp!, {r4-r6,lr} - bxne lr - sub r6, r6, #0x1 - mov r0, r6 - bl FUN_020A2C94 - mov r4, r0 - mov r0, r5 - bl FUN_020A2C94 - cmp r0, r4 - movgt r0, #0x1 - ldmgtia sp!, {r4-r6,lr} - bxgt lr - sub r0, r4, r0 - add r6, r6, r0 - b _020A2C38 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A2C94 -FUN_020A2C94: ; 0x020A2C94 - mov r2, r0 - b _020A2CA0 -_020A2C9C: - add r0, r0, #0x1 -_020A2CA0: - ldrsb r1, [r0, #0x0] - cmp r1, #0x2e - beq _020A2CB4 - cmp r1, #0x0 - bne _020A2C9C -_020A2CB4: - sub r0, r0, r2 - bx lr - - arm_func_start FUN_020A2CBC -FUN_020A2CBC: ; 0x020A2CBC - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldrb r0, [r5, #0x5af] - ldr r1, [r5, #0x45c] - cmp r0, #0x0 - movne r4, #0x0 - moveq r4, #0x8000 - mvn r0, #0x0 - cmp r1, r0 - orreq r0, r4, #0x4 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r0, [r5, #0x458] - cmp r0, #0x3 - beq _020A2D04 - cmp r0, #0x4 - beq _020A2D40 - b _020A2D7C -_020A2D04: - add r6, r5, #0x3fc - mov r0, r6 - bl FUN_020A3B8C - ldr r1, [r5, #0x460] - ldr r2, [r5, #0x464] - mov r0, r6 - sub r2, r2, r1 - bl FUN_020A3ACC - ldr r1, _020A2DB8 ; =0x00000468 - mov r0, r6 - add r1, r5, r1 - bl FUN_020A3A58 - mov r0, #0x10 - str r0, [r5, #0x47c] - b _020A2D88 -_020A2D40: - add r6, r5, #0x348 - mov r0, r6 - bl FUN_020A41CC - ldr r1, [r5, #0x460] - ldr r2, [r5, #0x464] - mov r0, r6 - sub r2, r2, r1 - bl FUN_020A410C - ldr r1, _020A2DB8 ; =0x00000468 - mov r0, r6 - add r1, r5, r1 - bl FUN_020A4098 - mov r0, #0x14 - str r0, [r5, #0x47c] - b _020A2D88 -_020A2D7C: - orr r0, r4, #0x3 - ldmia sp!, {r4-r6,lr} - bx lr -_020A2D88: - mov r0, r5 - add r1, r5, #0x5b0 - bl FUN_020A3628 - movs r1, r0 - orreq r0, r4, #0x1 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - mov r0, r5 - bl FUN_020A2DBC - orr r0, r4, r0 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020A2DB8: .word 0x00000468 - - arm_func_start FUN_020A2DBC -FUN_020A2DBC: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - mov r8, r0 - ldr r0, [r8, #0x5a4] - mov r7, r1 - cmp r0, #0x0 - beq _020A2E14 - ldr r0, [r8, #0x5a8] - cmp r0, #0x0 - beq _020A2E14 - ldr r0, [r7, #0x10] - cmp r0, #0x0 - beq _020A2E14 - ldr r0, [r7, #0xc] - cmp r0, #0x0 - beq _020A2E14 - ldr r0, [r7, #0x8] - cmp r0, #0x0 - beq _020A2E14 - ldr r0, [r7, #0x4] - cmp r0, #0x0 - bne _020A2E24 -_020A2E14: - add sp, sp, #0x8 - mov r0, #0x2 - ldmia sp!, {r4-r10,lr} - bx lr -_020A2E24: - mov r0, r0, lsl #0x1 - ldr r1, _020A2F8C ; =UNK_021C8EC8 - add r0, r0, r0, lsr #0x1f - mov r4, r0, asr #0x1 - ldr r1, [r1, #0x0] - mov r0, r4, lsl #0x3 - blx r1 - movs r6, r0 - addeq sp, sp, #0x8 - moveq r0, #0x2 - ldmeqia sp!, {r4-r10,lr} - bxeq lr - add r5, r6, r4, lsl #0x1 - add r10, r5, r4, lsl #0x1 - ldr r1, [r8, #0x5a4] - ldr r2, [r8, #0x5a8] - mov r0, r5 - mov r3, r4 - add r9, r10, r4, lsl #0x1 - bl FUN_020A4B50 - ldr r1, [r7, #0x10] - ldr r2, [r7, #0xc] - mov r0, r10 - mov r3, r4 - bl FUN_020A4B50 - mov r0, r9 - ldr r1, [r7, #0x8] - ldr r2, [r7, #0x4] - mov r3, r4 - bl FUN_020A4B50 - bl FUN_020A36EC - str r9, [sp, #0x0] - mov r2, r10 - mov r9, r0 - mov r0, r6 - mov r1, r5 - mov r3, r4 - bl FUN_020A507C - mov r0, r9 - bl FUN_020A36B4 - mov r0, r5 - mov r1, r6 - ldr r2, [r7, #0x4] - mov r3, r4 - bl FUN_020A4B08 - ldrb r0, [r6, r4, lsl #0x1] - mov r4, #0x0 - cmp r0, #0x0 - bne _020A2EF4 - ldrb r0, [r5, #0x1] - cmp r0, #0x1 - beq _020A2EFC -_020A2EF4: - mov r4, #0x2 - b _020A2F6C -_020A2EFC: - ldr r3, [r7, #0x4] - mov r2, #0x2 - cmp r3, #0x2 - ble _020A2F24 -_020A2F0C: - ldrb r0, [r5, r2] - cmp r0, #0xff - bne _020A2F24 - add r2, r2, #0x1 - cmp r2, r3 - blt _020A2F0C -_020A2F24: - add r1, r2, #0x1 - cmp r1, r3 - bge _020A2F68 - ldrb r0, [r5, r2] - cmp r0, #0x0 - bne _020A2F68 - ldrb r0, [r5, r1] - cmp r0, #0x30 - bne _020A2F68 - ldr r0, _020A2F90 ; =0x00000468 - ldr r2, [r8, #0x47c] - add r1, r5, r3 - add r0, r8, r0 - sub r1, r1, r2 - bl memcmp - cmp r0, #0x0 - beq _020A2F6C -_020A2F68: - mov r4, #0x2 -_020A2F6C: - ldr r1, _020A2F94 ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r10,lr} - bx lr - .balign 4 -_020A2F8C: .word UNK_021C8EC8 -_020A2F90: .word 0x00000468 -_020A2F94: .word UNK_021C8EF4 - - arm_func_start FUN_020A2F98 -FUN_020A2F98: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - str r1, [sp, #0x4] - ldr r1, [r1, #0x0] - mov r9, r0 - str r1, [sp, #0x8] - add r0, r1, #0x1 - str r0, [sp, #0x8] - add r0, sp, #0x8 - mov r5, r2 - mov r4, r3 - ldr r8, [sp, #0x30] - ldrb r6, [r1, #0x0] - bl FUN_020A35D8 - movs r7, r0 - bmi _020A2FE0 - cmp r7, #0x7d0 - ble _020A2FF0 -_020A2FE0: - add sp, sp, #0xc - mov r0, #0x1 - ldmia sp!, {r4-r11,lr} - bx lr -_020A2FF0: - and r1, r6, #0x1f - cmp r1, #0x18 - addls pc, pc, r1, lsl #0x2 - b _020A3430 -_020A3000: - b _020A3430 -_020A3004: - b _020A3430 -_020A3008: - b _020A3064 -_020A300C: - b _020A315C -_020A3010: - b _020A3430 -_020A3014: - b _020A3430 -_020A3018: - b _020A31DC -_020A301C: - b _020A3430 -_020A3020: - b _020A3430 -_020A3024: - b _020A3430 -_020A3028: - b _020A3430 -_020A302C: - b _020A3430 -_020A3030: - b _020A3274 -_020A3034: - b _020A3430 -_020A3038: - b _020A3430 -_020A303C: - b _020A3430 -_020A3040: - b _020A3348 -_020A3044: - b _020A33D8 -_020A3048: - b _020A3430 -_020A304C: - b _020A3274 -_020A3050: - b _020A3274 -_020A3054: - b _020A3430 -_020A3058: - b _020A3274 -_020A305C: - b _020A32F4 -_020A3060: - b _020A32F4 -_020A3064: - ldrb r0, [r9, #0x5ad] - cmp r0, #0x0 - beq _020A314C - cmp r4, #0x0 - bne _020A30E0 - ldr r0, [sp, #0x8] - ldrb r1, [r0, #0x0] - cmp r1, #0x0 - bne _020A30A4 -_020A3088: - ldr r1, [sp, #0x8] - sub r7, r7, #0x1 - add r0, r1, #0x1 - str r0, [sp, #0x8] - ldrb r1, [r1, #0x1] - cmp r1, #0x0 - beq _020A3088 -_020A30A4: - cmp r8, #0x0 - beq _020A30C0 - cmp r8, #0x2 - streq r7, [r9, #0x484] - ldreq r0, [sp, #0x8] - streq r0, [r9, #0x488] - b _020A314C -_020A30C0: - cmp r7, #0x100 - bgt _020A314C - ldr r1, _020A34B8 ; =0x00000494 - mov r2, r7 - add r1, r9, r1 - bl MI_CpuCopy8 - str r7, [r9, #0x594] - b _020A314C -_020A30E0: - cmp r4, #0x1 - bne _020A314C - ldr r0, [sp, #0x8] - ldrb r1, [r0, #0x0] - cmp r1, #0x0 - bne _020A3114 -_020A30F8: - ldr r1, [sp, #0x8] - sub r7, r7, #0x1 - add r0, r1, #0x1 - str r0, [sp, #0x8] - ldrb r1, [r1, #0x1] - cmp r1, #0x0 - beq _020A30F8 -_020A3114: - cmp r8, #0x0 - beq _020A3130 - cmp r8, #0x2 - streq r7, [r9, #0x48c] - ldreq r0, [sp, #0x8] - streq r0, [r9, #0x490] - b _020A314C -_020A3130: - cmp r7, #0x8 - bgt _020A314C - ldr r1, _020A34BC ; =0x00000598 - mov r2, r7 - add r1, r9, r1 - bl MI_CpuCopy8 - str r7, [r9, #0x5a0] -_020A314C: - ldr r0, [sp, #0x8] - add r0, r0, r7 - str r0, [sp, #0x8] - b _020A349C -_020A315C: - cmp r5, #0x1 - bne _020A317C - cmp r8, #0x2 - ldrne r1, [sp, #0x8] - subne r0, r7, #0x1 - addne r1, r1, #0x1 - strne r1, [r9, #0x5a4] - strne r0, [r9, #0x5a8] -_020A317C: - ldrb r0, [r9, #0x5ad] - cmp r0, #0x0 - beq _020A31CC - ldr r0, [sp, #0x8] - add r1, sp, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x8] - mov r0, r9 - mov r2, r5 - mov r3, #0x0 - str r8, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - addne sp, sp, #0xc - movne r0, #0x1 - ldmneia sp!, {r4-r11,lr} - bxne lr - mov r0, #0x0 - strb r0, [r9, #0x5ad] - b _020A349C -_020A31CC: - ldr r0, [sp, #0x8] - add r0, r0, r7 - str r0, [sp, #0x8] - b _020A349C -_020A31DC: - ldr r5, [sp, #0x8] - mov r6, #0x0 - ldr sl, _020A34C0 ; =UNK_02106278 -_020A31E8: - ldr r4, [r10, r6, lsl #0x2] - mov r0, r4 - bl strlen - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl memcmp - cmp r0, #0x0 - bne _020A3258 - cmp r6, #0x5 - addls pc, pc, r6, lsl #0x2 - b _020A3264 - b _020A3264 - b _020A3230 - b _020A3230 - b _020A3240 - b _020A3240 - b _020A324C -_020A3230: - cmp r8, #0x0 - streq r6, [r9, #0x45c] - strb r6, [r9, #0x5ad] - b _020A3264 -_020A3240: - cmp r8, #0x2 - strne r6, [r9, #0x458] - b _020A3264 -_020A324C: - cmp r8, #0x2 - strneb r6, [r9, #0x5ae] - b _020A3264 -_020A3258: - add r6, r6, #0x1 - cmp r6, #0x6 - blt _020A31E8 -_020A3264: - ldr r0, [sp, #0x8] - add r0, r0, r7 - str r0, [sp, #0x8] - b _020A349C -_020A3274: - cmp r8, #0x2 - beq _020A32DC - ldrb r0, [r9, #0x5ac] - cmp r0, #0x0 - beq _020A32CC - ldr r1, [sp, #0x8] - mov r2, r7 - add r0, r9, #0x6b0 - bl FUN_020A3554 - ldrb r0, [r9, #0x5ae] - cmp r0, #0x5 - bne _020A32DC - cmp r7, #0x4f - bgt _020A32DC - ldr r0, [sp, #0x8] - mov r2, r7 - add r1, r9, #0x7b0 - bl MI_CpuCopy8 - add r0, r9, r7 - mov r1, #0x0 - strb r1, [r0, #0x7b0] - b _020A32DC -_020A32CC: - ldr r1, [sp, #0x8] - mov r2, r7 - add r0, r9, #0x5b0 - bl FUN_020A3554 -_020A32DC: - mov r0, #0x0 - strb r0, [r9, #0x5ae] - ldr r0, [sp, #0x8] - add r0, r0, r7 - str r0, [sp, #0x8] - b _020A349C -_020A32F4: - cmp r8, #0x2 - beq _020A3330 - ldr r0, [sp, #0x8] - bl FUN_020A34C4 - cmp r4, #0x0 - bne _020A3320 - ldr r1, [r9, #0x80c] - cmp r1, r0 - movcs r0, #0x1 - strcsb r0, [r9, #0x5af] - b _020A3330 -_020A3320: - ldr r1, [r9, #0x80c] - cmp r1, r0 - movhi r0, #0x0 - strhib r0, [r9, #0x5af] -_020A3330: - ldr r1, [sp, #0x8] - mov r0, #0x1 - add r1, r1, r7 - str r1, [sp, #0x8] - strb r0, [r9, #0x5ac] - b _020A349C -_020A3348: - cmp r5, #0x0 - bne _020A3364 - cmp r4, #0x0 - bne _020A3364 - cmp r8, #0x2 - ldrne r0, [sp, #0x8] - strne r0, [r9, #0x460] -_020A3364: - ldr r0, [sp, #0x8] - mov r10, #0x0 - add r7, r0, r7 - cmp r0, r7 - bhs _020A33BC - add r11, sp, #0x8 - add r6, r5, #0x1 -_020A3380: - mov r0, r9 - mov r1, r11 - mov r2, r6 - mov r3, r10 - str r8, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - add r10, r10, #0x1 - addne sp, sp, #0xc - movne r0, #0x1 - ldmneia sp!, {r4-r11,lr} - bxne lr - ldr r0, [sp, #0x8] - cmp r0, r7 - blo _020A3380 -_020A33BC: - cmp r5, #0x1 - bne _020A349C - cmp r4, #0x0 - bne _020A349C - cmp r8, #0x2 - strne r0, [r9, #0x464] - b _020A349C -_020A33D8: - ldr r0, [sp, #0x8] - add r6, r0, r7 - cmp r0, r6 - bhs _020A349C - add r7, r5, #0x1 - add r4, sp, #0x8 - mov r5, #0x0 -_020A33F4: - mov r0, r9 - mov r1, r4 - mov r2, r7 - mov r3, r5 - str r8, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - addne sp, sp, #0xc - movne r0, #0x1 - ldmneia sp!, {r4-r11,lr} - bxne lr - ldr r0, [sp, #0x8] - cmp r0, r6 - blo _020A33F4 - b _020A349C -_020A3430: - cmp r6, #0xa0 - bne _020A3490 - ldr r0, [sp, #0x8] - add r6, r0, r7 - cmp r0, r6 - bhs _020A349C - add r7, r5, #0x1 - add r4, sp, #0x8 - mov r5, #0x0 -_020A3454: - mov r0, r9 - mov r1, r4 - mov r2, r7 - mov r3, r5 - str r8, [sp, #0x0] - bl FUN_020A2F98 - cmp r0, #0x0 - addne sp, sp, #0xc - movne r0, #0x1 - ldmneia sp!, {r4-r11,lr} - bxne lr - ldr r0, [sp, #0x8] - cmp r0, r6 - blo _020A3454 - b _020A349C -_020A3490: - ldr r0, [sp, #0x8] - add r0, r0, r7 - str r0, [sp, #0x8] -_020A349C: - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x4] - mov r0, #0x0 - str r2, [r1, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A34B8: .word 0x00000494 -_020A34BC: .word 0x00000598 -_020A34C0: .word UNK_02106278 - - arm_func_start FUN_020A34C4 -FUN_020A34C4: - stmdb sp!, {r4,lr} - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x0] - mov r2, #0xa - cmp r1, #0x17 - mla r1, r3, r2, r12 - sub lr, r1, #0x210 - add r0, r0, #0x2 - bne _020A34FC - cmp lr, #0x32 - ldrhs r1, _020A3550 ; =0x0000076C - addcc r4, lr, #0x7d0 - addcs r4, lr, r1 - b _020A3518 -_020A34FC: - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x0] - mov r1, #0x64 - add r0, r0, #0x2 - mla r2, r3, r2, r12 - sub r2, r2, #0x210 - mla r4, lr, r1, r2 -_020A3518: - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x0] - mov r1, #0xa - ldrb r2, [r0, #0x3] - ldrb r0, [r0, #0x2] - mla r12, r3, r1, r12 - mla r1, r0, r1, r2 - mov r2, r4, lsl #0x10 - sub r0, r12, #0x210 - add r2, r2, r0, lsl #0x8 - sub r0, r1, #0x210 - add r0, r2, r0 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A3550: .word 0x0000076C - - arm_func_start FUN_020A3554 -FUN_020A3554: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrsb r3, [r0, #0x0] - mov lr, r0 - cmp r3, #0x0 - beq _020A35AC -_020A356C: - ldrsb r3, [r0, #0x1]! - cmp r3, #0x0 - bne _020A356C - sub r3, r0, lr - cmp r3, #0xff - addge sp, sp, #0x4 - ldmgeia sp!, {lr} - bxge lr - mov r3, #0x2c - strb r3, [r0, #0x0] - mov r3, #0x20 - strb r3, [r0, #0x1] - add r0, r0, #0x2 - b _020A35AC -_020A35A4: - ldrsb r3, [r1], #0x1 - strb r3, [r0], #0x1 -_020A35AC: - cmp r2, #0x0 - sub r2, r2, #0x1 - beq _020A35C4 - sub r3, r0, lr - cmp r3, #0xff - blt _020A35A4 -_020A35C4: - mov r1, #0x0 - strb r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A35D8 -FUN_020A35D8: ; 0x020A35D8 - ldr r1, [r0, #0x0] - ldrb r3, [r1, #0x0] - add r12, r1, #0x1 - ands r1, r3, #0x80 - beq _020A361C - ands r1, r3, #0x7f - sub r2, r1, #0x1 - mov r3, #0x0 - beq _020A361C -_020A35FC: - ands r1, r3, #0xff000000 - mvnne r0, #0x0 - bxne lr - ldrb r1, [r12], #0x1 - cmp r2, #0x0 - sub r2, r2, #0x1 - add r3, r1, r3, lsl #0x8 - bne _020A35FC -_020A361C: - str r12, [r0, #0x0] - mov r0, r3 - bx lr - - arm_func_start FUN_020A3628 -FUN_020A3628: ; 0x020A3628 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, [r0, #0x818] - mov r7, r1 - cmp r4, #0x0 - mov r6, #0x0 - ble _020A3678 - ldr r5, [r0, #0x814] -_020A3648: - ldr r0, [r5, r6, lsl #0x2] - mov r1, r7 - ldr r0, [r0, #0x0] - bl strcmp - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldreq r0, [r5, r6, lsl #0x2] - ldmeqia sp!, {r4-r7,lr} - bxeq lr - add r6, r6, #0x1 - cmp r6, r4 - blt _020A3648 -_020A3678: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A3688 -FUN_020A3688: ; 0x020A3688 - ldr r2, _020A36B0 ; =OSi_ThreadInfo - ldr r2, [r2, #0x4] - ldr r2, [r2, #0xa4] - cmp r2, #0x0 - bxeq lr - ldr r2, [r2, #0xc] - cmp r2, #0x0 - strne r0, [r2, #0x814] - strne r1, [r2, #0x818] - bx lr - .balign 4 -_020A36B0: .word OSi_ThreadInfo - - arm_func_start FUN_020A36B4 -FUN_020A36B4: ; 0x020A36B4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, r0 - cmp r1, #0x20 - addcs sp, sp, #0x4 - ldmcsia sp!, {lr} - bxcs lr - ldr r0, _020A36E8 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - bl OS_SetThreadPriority - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A36E8: .word OSi_ThreadInfo - - arm_func_start FUN_020A36EC -FUN_020A36EC: ; 0x020A36EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020A3744 ; =UNK_02106244 - ldr r0, [r0, #0x0] - cmp r0, #0x20 - addcs sp, sp, #0x4 - mvncs r0, #0x0 - ldmcsia sp!, {r4-r5,lr} - bxcs lr - ldr r0, _020A3748 ; =OSi_ThreadInfo - ldr r5, [r0, #0x4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, _020A3744 ; =UNK_02106244 - mov r4, r0 - ldr r1, [r1, #0x0] - mov r0, r5 - bl OS_SetThreadPriority - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020A3744: .word UNK_02106244 -_020A3748: .word OSi_ThreadInfo - - arm_func_start FUN_020A374C -FUN_020A374C: ; 0x020A374C - ldr r1, _020A3758 ; =UNK_02106244 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020A3758: .word UNK_02106244 - - arm_func_start FUN_020A375C -FUN_020A375C: ; 0x020A375C - stmdb sp!, {lr} - sub sp, sp, #0x1c - add r0, sp, #0x0 - bl RTC_GetDate - add r0, sp, #0x10 - bl RTC_GetTime - add r0, sp, #0x0 - add r1, sp, #0x10 - bl RTC_ConvertDateTimeToSecond - ldr r1, _020A3794 ; =0x386D4380 - add r0, r0, r1 - add sp, sp, #0x1c - ldmia sp!, {lr} - bx lr - .balign 4 -_020A3794: .word 0x386D4380 - - arm_func_start FUN_020A3798 -FUN_020A3798: - stmdb sp!, {r4-r8,lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r6, _020A3804 ; =UNK_021CA6FC - mov r7, r0 - mov r8, #0x0 - add r5, r4, #0x74 - mov r4, #0x20 -_020A37B8: - ldrb r0, [r6, #0x5a] - cmp r0, #0x0 - beq _020A37E4 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl memcmp - cmp r0, #0x0 - moveq r0, #0x0 - streqb r0, [r6, #0x5a] - beq _020A37F4 -_020A37E4: - add r8, r8, #0x1 - cmp r8, #0x4 - add r6, r6, #0x5c - blt _020A37B8 -_020A37F4: - mov r0, r7 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A3804: .word UNK_021CA6FC - - arm_func_start FUN_020A3808 -FUN_020A3808: ; 0x020A3808 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, r1 - mov r7, r2 - bl OS_DisableInterrupts - mov r5, r0 - bl OS_GetTick - ldr r6, _020A3904 ; =UNK_021CA6FC - mov r4, r0, lsr #0x10 - mov r3, #0x0 - mov r12, r3 - mov r2, r6 - orr r4, r4, r1, lsl #0x10 - mvn r0, #0x0 -_020A3844: - ldrb r1, [r2, #0x5a] - cmp r1, #0x0 - beq _020A387C - cmp r8, #0x0 - beq _020A387C - ldr lr, [r2, #0x54] - cmp r8, lr - bne _020A387C - cmp r7, #0x0 - beq _020A387C - ldrh lr, [r2, #0x58] - cmp r7, lr - moveq r6, r2 - beq _020A38BC -_020A387C: - mvn lr, #0x0 - cmp r3, lr - beq _020A38AC - cmp r1, #0x0 - moveq r3, r0 - moveq r6, r2 - beq _020A38AC - ldr r1, [r2, #0x50] - sub r1, r4, r1 - cmp r1, r3 - movhi r3, r1 - movhi r6, r2 -_020A38AC: - add r12, r12, #0x1 - cmp r12, #0x4 - add r2, r2, #0x5c - blt _020A3844 -_020A38BC: - mov r1, r6 - add r0, r9, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, r9 - add r1, r6, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - str r4, [r6, #0x50] - mov r0, #0x1 - strb r0, [r6, #0x5a] - str r8, [r6, #0x54] - mov r0, r5 - strh r7, [r6, #0x58] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_020A3904: .word UNK_021CA6FC - - arm_func_start FUN_020A3908 -FUN_020A3908: ; 0x020A3908 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl OS_DisableInterrupts - mov r1, #0x0 - ldr r4, _020A39AC ; =UNK_021CA6FC - mov r5, r0 - strb r1, [r8, #0x30] -_020A392C: - ldrb r0, [r4, #0x5a] - cmp r0, #0x0 - beq _020A398C - ldr r0, [r4, #0x54] - cmp r0, r7 - bne _020A398C - ldrh r0, [r4, #0x58] - cmp r0, r6 - bne _020A398C - mov r0, r4 - add r1, r8, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r1, r8 - add r0, r4, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - str r0, [r4, #0x50] - mov r0, #0x1 - strb r0, [r8, #0x30] - b _020A399C -_020A398C: - add r1, r1, #0x1 - cmp r1, #0x4 - add r4, r4, #0x5c - blt _020A392C -_020A399C: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A39AC: .word UNK_021CA6FC - - arm_func_start FUN_020A39B0 -FUN_020A39B0: ; 0x020A39B0 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl OS_DisableInterrupts - mov r6, #0x0 - ldr r4, _020A3A54 ; =UNK_021CA6FC - mov r5, r0 - strb r6, [r7, #0x30] - add r9, r7, #0x74 - mov r8, #0x20 -_020A39D8: - ldrb r0, [r4, #0x5a] - cmp r0, #0x0 - beq _020A3A30 - ldr r0, [r4, #0x54] - cmp r0, #0x0 - bne _020A3A30 - ldrh r0, [r4, #0x58] - cmp r0, #0x0 - bne _020A3A30 - mov r0, r4 - mov r1, r9 - mov r2, r8 - bl memcmp - cmp r0, #0x0 - bne _020A3A30 - mov r1, r7 - add r0, r4, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - mov r0, #0x1 - strb r0, [r7, #0x30] - b _020A3A40 -_020A3A30: - add r6, r6, #0x1 - cmp r6, #0x4 - add r4, r4, #0x5c - blt _020A39D8 -_020A3A40: - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_020A3A54: .word UNK_021CA6FC - - arm_func_start FUN_020A3A58 -FUN_020A3A58: ; 0x020A3A58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - add r1, r5, #0x10 - mov r2, #0x8 - bl FUN_020A4044 - ldr r0, [r5, #0x10] - ldr r1, _020A3AC8 ; =UNK_021062EC - mov r0, r0, lsr #0x3 - and r0, r0, #0x3f - cmp r0, #0x38 - rsblt r2, r0, #0x38 - rsbge r2, r0, #0x78 - mov r0, r5 - bl FUN_020A3ACC - mov r0, r5 - mov r1, r4 - mov r2, #0x8 - bl FUN_020A3ACC - mov r0, r4 - mov r1, r5 - mov r2, #0x10 - bl FUN_020A4044 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020A3AC8: .word UNK_021062EC - - arm_func_start FUN_020A3ACC -FUN_020A3ACC: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r3, [r8, #0x10] - mov r6, r2 - add r0, r3, r6, lsl #0x3 - str r0, [r8, #0x10] - ldr r0, [r8, #0x10] - mov r2, r3, lsr #0x3 - cmp r0, r6, lsl #0x3 - ldrcc r0, [r8, #0x14] - and r4, r2, #0x3f - addcc r0, r0, #0x1 - strcc r0, [r8, #0x14] - ldr r0, [r8, #0x14] - rsb r5, r4, #0x40 - add r0, r0, r6, lsr #0x1d - mov r7, r1 - str r0, [r8, #0x14] - cmp r6, r5 - blo _020A3B6C - add r1, r8, #0x18 - mov r0, r7 - mov r2, r5 - add r1, r1, r4 - bl MI_CpuCopy8 - mov r0, r8 - add r1, r8, #0x18 - mov r4, #0x0 - bl FUN_020A3BD8 - add r0, r5, #0x3f - cmp r0, r6 - bhs _020A3B70 -_020A3B4C: - mov r0, r8 - add r1, r7, r5 - bl FUN_020A3BD8 - add r5, r5, #0x40 - add r0, r5, #0x3f - cmp r0, r6 - blo _020A3B4C - b _020A3B70 -_020A3B6C: - mov r5, #0x0 -_020A3B70: - add r1, r8, #0x18 - add r0, r7, r5 - add r1, r1, r4 - sub r2, r6, r5 - bl MI_CpuCopy8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020A3B8C -FUN_020A3B8C: ; 0x020A3B8C - stmdb sp!, {r4,lr} - mov r1, #0x0 - mov r2, #0x58 - mov r4, r0 - bl MI_CpuFill8 - ldr r1, _020A3BC8 ; =0x67452301 - ldr r0, _020A3BCC ; =0xEFCDAB89 - str r1, [r4, #0x0] - ldr r1, _020A3BD0 ; =0x98BADCFE - str r0, [r4, #0x4] - ldr r0, _020A3BD4 ; =0x10325476 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A3BC8: .word 0x67452301 -_020A3BCC: .word 0xEFCDAB89 -_020A3BD0: .word 0x98BADCFE -_020A3BD4: .word 0x10325476 - - arm_func_start FUN_020A3BD8 -FUN_020A3BD8: ; 0x020A3BD8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x44 - str r0, [sp, #0x0] - ldr r3, [sp, #0x0] - add r0, sp, #0x4 - mov r2, #0x40 - ldr r7, [r3, #0x0] - ldr r6, [r3, #0x4] - ldr r5, [r3, #0x8] - ldr r4, [r3, #0xc] - bl FUN_020A402C - ldr r2, _020A4024 ; =UNK_021062AC - mov r3, #0x0 - ldr r1, _020A4028 ; =UNK_0210632C - mov r11, r3 - add r0, sp, #0x4 - mov r10, r2 -_020A3C1C: - ldrb r9, [r2, #0x0] - add r8, r3, #0x1 - eor r12, r5, r4 - and r12, r6, r12 - eor r12, r4, r12 - ldr r9, [r0, r9, lsl #0x2] - ldr lr, [r1, r3, lsl #0x2] - add r9, r12, r9 - add r9, lr, r9 - add r9, r7, r9 - mov r7, r9, lsl #0x7 - orr r7, r7, r9, lsr #0x19 - ldrb r9, [r10, r8] - add r7, r6, r7 - ldr r8, [r1, r8, lsl #0x2] - ldr r9, [r0, r9, lsl #0x2] - eor r12, r6, r5 - and r12, r7, r12 - eor r12, r5, r12 - add r9, r12, r9 - add r9, r8, r9 - add r8, r3, #0x2 - add r9, r4, r9 - mov r4, r9, lsl #0xc - orr r4, r4, r9, lsr #0x14 - add r4, r7, r4 - ldr r9, [r1, r8, lsl #0x2] - ldrb r12, [r10, r8] - eor r8, r7, r6 - and r8, r4, r8 - eor r8, r6, r8 - ldr lr, [r0, r12, lsl #0x2] - add r12, r3, #0x3 - add r8, r8, lr - add r8, r9, r8 - add r8, r5, r8 - mov r5, r8, lsl #0x11 - orr r5, r5, r8, lsr #0xf - add r5, r4, r5 - ldr r9, [r1, r12, lsl #0x2] - ldrb r12, [r10, r12] - eor r8, r4, r7 - and r8, r5, r8 - eor r8, r7, r8 - ldr r12, [r0, r12, lsl #0x2] - add r2, r2, #0x4 - add r8, r8, r12 - add r8, r9, r8 - add r8, r6, r8 - mov r6, r8, lsl #0x16 - orr r6, r6, r8, lsr #0xa - add r6, r5, r6 - add r3, r3, #0x4 - add r11, r11, #0x1 - cmp r11, #0x4 - blt _020A3C1C - add r8, r10, r3 - mov r2, #0x0 - ldr r1, _020A4028 ; =UNK_0210632C - add r0, sp, #0x4 - ldr lr, _020A4024 ; =UNK_021062AC -_020A3D10: - ldrb r10, [r8, #0x0] - add r9, r3, #0x1 - eor r11, r6, r5 - and r11, r4, r11 - eor r11, r5, r11 - ldr r10, [r0, r10, lsl #0x2] - ldr r12, [r1, r3, lsl #0x2] - add r10, r11, r10 - add r10, r12, r10 - add r10, r7, r10 - mov r7, r10, lsl #0x5 - orr r7, r7, r10, lsr #0x1b - ldrb r10, [lr, r9] - add r7, r6, r7 - ldr r9, [r1, r9, lsl #0x2] - ldr r10, [r0, r10, lsl #0x2] - eor r11, r7, r6 - and r11, r5, r11 - eor r11, r6, r11 - add r10, r11, r10 - add r10, r9, r10 - add r9, r3, #0x2 - add r10, r4, r10 - mov r4, r10, lsl #0x9 - orr r4, r4, r10, lsr #0x17 - add r4, r7, r4 - ldr r12, [r1, r9, lsl #0x2] - ldrb r9, [lr, r9] - eor r10, r4, r7 - and r10, r6, r10 - eor r11, r7, r10 - ldr r10, [r0, r9, lsl #0x2] - add r9, r3, #0x3 - add r10, r11, r10 - add r10, r12, r10 - add r10, r5, r10 - mov r5, r10, lsl #0xe - orr r5, r5, r10, lsr #0x12 - add r5, r4, r5 - ldr r10, [r1, r9, lsl #0x2] - ldrb r11, [lr, r9] - eor r9, r5, r4 - and r9, r7, r9 - eor r9, r4, r9 - ldr r11, [r0, r11, lsl #0x2] - add r8, r8, #0x4 - add r9, r9, r11 - add r9, r10, r9 - add r9, r6, r9 - mov r6, r9, lsl #0x14 - orr r6, r6, r9, lsr #0xc - add r6, r5, r6 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r2, #0x4 - blt _020A3D10 - add r8, lr, r3 - mov lr, #0x0 - ldr r2, _020A4028 ; =UNK_0210632C - add r0, sp, #0x4 -_020A3E00: - ldrb r1, [r8, #0x0] - eor r12, r6, r5 - add lr, lr, #0x1 - ldr r11, [r0, r1, lsl #0x2] - eor r12, r4, r12 - ldr r1, [r2, r3, lsl #0x2] - add r11, r12, r11 - add r1, r1, r11 - add r7, r7, r1 - mov r1, r7, lsl #0x4 - orr r1, r1, r7, lsr #0x1c - add r7, r6, r1 - add r10, r3, #0x1 - ldr r1, _020A4024 ; =UNK_021062AC - ldr r12, [r2, r10, lsl #0x2] - ldrb r1, [r1, r10] - eor r10, r7, r6 - eor r11, r5, r10 - ldr r10, [r0, r1, lsl #0x2] - add r9, r3, #0x2 - add r10, r11, r10 - add r10, r12, r10 - add r4, r4, r10 - ldr sl, _020A4024 ; =UNK_021062AC - ldr r1, [r2, r9, lsl #0x2] - ldrb r9, [r10, r9] - mov r10, r4, lsl #0xb - orr r4, r10, r4, lsr #0x15 - add r4, r7, r4 - eor r10, r4, r7 - ldr r9, [r0, r9, lsl #0x2] - eor r10, r6, r10 - add r9, r10, r9 - add r1, r1, r9 - add r5, r5, r1 - add r10, r3, #0x3 - ldr sb, _020A4024 ; =UNK_021062AC - mov r1, r5, lsl #0x10 - ldrb r9, [r9, r10] - orr r1, r1, r5, lsr #0x10 - add r5, r4, r1 - ldr r1, [r2, r10, lsl #0x2] - eor r10, r5, r4 - ldr r9, [r0, r9, lsl #0x2] - eor r10, r7, r10 - add r9, r10, r9 - add r1, r1, r9 - add r6, r6, r1 - mov r1, r6, lsl #0x17 - orr r1, r1, r6, lsr #0x9 - add r8, r8, #0x4 - add r6, r5, r1 - add r3, r3, #0x4 - cmp lr, #0x4 - blt _020A3E00 - ldr r0, _020A4024 ; =UNK_021062AC - ldr r1, _020A4028 ; =UNK_0210632C - add r8, r0, r3 - ldr lr, _020A4024 ; =UNK_021062AC - mov r2, #0x0 - add r0, sp, #0x4 -_020A3EF4: - ldrb r10, [r8, #0x0] - add r9, r3, #0x1 - mvn r11, r4 - orr r11, r6, r11 - eor r11, r5, r11 - ldr r10, [r0, r10, lsl #0x2] - ldr r12, [r1, r3, lsl #0x2] - add r10, r11, r10 - add r10, r12, r10 - add r10, r7, r10 - mov r7, r10, lsl #0x6 - orr r7, r7, r10, lsr #0x1a - ldrb r10, [lr, r9] - add r7, r6, r7 - ldr r9, [r1, r9, lsl #0x2] - ldr r10, [r0, r10, lsl #0x2] - mvn r11, r5 - orr r11, r7, r11 - eor r11, r6, r11 - add r10, r11, r10 - add r10, r9, r10 - add r9, r3, #0x2 - add r10, r4, r10 - mov r4, r10, lsl #0xa - orr r4, r4, r10, lsr #0x16 - add r4, r7, r4 - ldr r12, [r1, r9, lsl #0x2] - ldrb r9, [lr, r9] - mvn r10, r6 - orr r10, r4, r10 - eor r11, r7, r10 - ldr r10, [r0, r9, lsl #0x2] - add r9, r3, #0x3 - add r10, r11, r10 - add r10, r12, r10 - add r10, r5, r10 - mov r5, r10, lsl #0xf - orr r5, r5, r10, lsr #0x11 - add r5, r4, r5 - ldr r10, [r1, r9, lsl #0x2] - ldrb r11, [lr, r9] - mvn r9, r7 - orr r9, r5, r9 - eor r9, r4, r9 - ldr r11, [r0, r11, lsl #0x2] - add r8, r8, #0x4 - add r9, r9, r11 - add r9, r10, r9 - add r9, r6, r9 - mov r6, r9, lsl #0x15 - orr r6, r6, r9, lsr #0xb - add r6, r5, r6 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r2, #0x4 - blt _020A3EF4 - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x0] - add r1, r0, r7 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - ldr r0, [r0, #0x4] - add r1, r0, r6 - ldr r0, [sp, #0x0] - str r1, [r0, #0x4] - ldr r0, [r0, #0x8] - add r1, r0, r5 - ldr r0, [sp, #0x0] - str r1, [r0, #0x8] - ldr r0, [r0, #0xc] - add r1, r0, r4 - ldr r0, [sp, #0x0] - str r1, [r0, #0xc] - add sp, sp, #0x44 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A4024: .word UNK_021062AC -_020A4028: .word UNK_0210632C - - arm_func_start FUN_020A402C -FUN_020A402C: ; 0x020A402C - ldr ip, _020A4040 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx r12 - .balign 4 -_020A4040: .word MI_CpuCopy8 - - arm_func_start FUN_020A4044 -FUN_020A4044: ; 0x020A4044 - ldr ip, _020A4058 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx r12 - .balign 4 -_020A4058: .word MI_CpuCopy8 - - arm_func_start FUN_020A405C -FUN_020A405C: ; 0x020A405C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - ldr r1, _020A4094 ; =UNK_0210642D - mov r5, r0 - mov r2, #0x2c - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - mov r2, #0x14 - bl FUN_020A4930 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020A4094: .word UNK_0210642D - - arm_func_start FUN_020A4098 -FUN_020A4098: ; 0x020A4098 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - add r1, r5, #0x14 - mov r2, #0x8 - bl FUN_020A4930 - ldr r0, [r5, #0x18] - ldr r1, _020A4108 ; =UNK_0210642C - mov r0, r0, lsr #0x3 - and r0, r0, #0x3f - cmp r0, #0x38 - rsblt r2, r0, #0x38 - rsbge r2, r0, #0x78 - mov r0, r5 - bl FUN_020A410C - mov r0, r5 - mov r1, r4 - mov r2, #0x8 - bl FUN_020A410C - mov r0, r4 - mov r1, r5 - mov r2, #0x14 - bl FUN_020A4930 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020A4108: .word UNK_0210642C - - arm_func_start FUN_020A410C -FUN_020A410C: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r3, [r8, #0x18] - mov r6, r2 - add r0, r3, r6, lsl #0x3 - str r0, [r8, #0x18] - ldr r0, [r8, #0x18] - mov r2, r3, lsr #0x3 - cmp r0, r6, lsl #0x3 - ldrcc r0, [r8, #0x14] - and r4, r2, #0x3f - addcc r0, r0, #0x1 - strcc r0, [r8, #0x14] - ldr r0, [r8, #0x14] - rsb r5, r4, #0x40 - add r0, r0, r6, lsr #0x1d - mov r7, r1 - str r0, [r8, #0x14] - cmp r6, r5 - blo _020A41AC - add r1, r8, #0x1c - mov r0, r7 - mov r2, r5 - add r1, r1, r4 - bl MI_CpuCopy8 - mov r0, r8 - add r1, r8, #0x1c - mov r4, #0x0 - bl FUN_020A4224 - add r0, r5, #0x3f - cmp r0, r6 - bhs _020A41B0 -_020A418C: - mov r0, r8 - add r1, r7, r5 - bl FUN_020A4224 - add r5, r5, #0x40 - add r0, r5, #0x3f - cmp r0, r6 - blo _020A418C - b _020A41B0 -_020A41AC: - mov r5, #0x0 -_020A41B0: - add r1, r8, #0x1c - add r0, r7, r5 - add r1, r1, r4 - sub r2, r6, r5 - bl MI_CpuCopy8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020A41CC -FUN_020A41CC: ; 0x020A41CC - stmdb sp!, {r4,lr} - mov r1, #0x0 - mov r2, #0x5c - mov r4, r0 - bl MI_CpuFill8 - ldr r0, _020A4210 ; =0x67452301 - ldr r1, _020A4214 ; =0xEFCDAB89 - str r0, [r4, #0x0] - ldr r0, _020A4218 ; =0x98BADCFE - str r1, [r4, #0x4] - ldr r1, _020A421C ; =0x10325476 - str r0, [r4, #0x8] - ldr r0, _020A4220 ; =0xC3D2E1F0 - str r1, [r4, #0xc] - str r0, [r4, #0x10] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A4210: .word 0x67452301 -_020A4214: .word 0xEFCDAB89 -_020A4218: .word 0x98BADCFE -_020A421C: .word 0x10325476 -_020A4220: .word 0xC3D2E1F0 - - arm_func_start FUN_020A4224 -FUN_020A4224: ; 0x020A4224 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - str r0, [sp, #0x0] - ldr r3, [sp, #0x0] - add r0, sp, #0x10 - mov r2, #0x40 - ldr r6, [r3, #0x0] - ldr r7, [r3, #0x4] - ldr r8, [r3, #0x8] - ldr r5, [r3, #0xc] - ldr r4, [r3, #0x10] - bl FUN_020A48CC - mov r2, #0x0 - ldr r3, _020A48BC ; =0x5A827999 - mov r0, r2 - add r1, sp, #0x10 -_020A4264: - eor r9, r8, r5 - mov r10, r6, lsl #0x5 - and r9, r7, r9 - orr r10, r10, r6, lsr #0x1b - eor r9, r5, r9 - mov r11, r7, lsl #0x1e - orr r7, r11, r7, lsr #0x2 - eor r11, r7, r8 - add r9, r10, r9 - ldr r12, [r1, r2, lsl #0x2] - and r10, r6, r11 - add r9, r12, r9 - add r9, r9, r3 - add r4, r4, r9 - add r9, r2, #0x1 - ldr r9, [r1, r9, lsl #0x2] - eor r10, r8, r10 - mov r11, r4, lsl #0x5 - orr r11, r11, r4, lsr #0x1b - add r10, r11, r10 - add r10, r9, r10 - mov r9, r6, lsl #0x1e - add r10, r10, r3 - add r5, r5, r10 - orr r6, r9, r6, lsr #0x2 - add r9, r2, #0x2 - ldr r10, [r1, r9, lsl #0x2] - mov r9, r5, lsl #0x5 - orr r9, r9, r5, lsr #0x1b - eor r11, r6, r7 - and r11, r4, r11 - eor r11, r7, r11 - add r9, r9, r11 - add r9, r10, r9 - add r9, r9, r3 - add r8, r8, r9 - mov r9, r4, lsl #0x1e - orr r4, r9, r4, lsr #0x2 - add r9, r2, #0x3 - ldr r10, [r1, r9, lsl #0x2] - mov r9, r8, lsl #0x5 - orr r9, r9, r8, lsr #0x1b - eor r11, r4, r6 - and r11, r5, r11 - eor r11, r6, r11 - add r9, r9, r11 - add r9, r10, r9 - add r9, r9, r3 - add r7, r7, r9 - mov r9, r5, lsl #0x1e - orr r5, r9, r5, lsr #0x2 - add r9, r2, #0x4 - ldr r10, [r1, r9, lsl #0x2] - mov r9, r7, lsl #0x5 - orr r9, r9, r7, lsr #0x1b - eor r11, r5, r4 - and r11, r8, r11 - eor r11, r4, r11 - add r9, r9, r11 - add r9, r10, r9 - add r9, r9, r3 - add r6, r6, r9 - mov r9, r8, lsl #0x1e - orr r8, r9, r8, lsr #0x2 - add r2, r2, #0x5 - add r0, r0, #0x1 - cmp r0, #0x3 - blt _020A4264 - eor r0, r8, r5 - mov r2, r6, lsl #0x5 - and r0, r7, r0 - orr r3, r2, r6, lsr #0x1b - eor r0, r5, r0 - add r3, r3, r0 - ldr r9, [sp, #0x4c] - ldr r0, _020A48BC ; =0x5A827999 - add r3, r9, r3 - add r3, r3, r0 - mov r2, r7, lsl #0x1e - orr r9, r2, r7, lsr #0x2 - mov r0, #0x0 - add r4, r4, r3 - bl FUN_020A4988 - eor r1, r9, r8 - mov r3, r4, lsl #0x5 - and r1, r6, r1 - mov r2, r6, lsl #0x1e - orr r3, r3, r4, lsr #0x1b - eor r1, r8, r1 - add r1, r3, r1 - add r3, r1, r0 - ldr r0, _020A48BC ; =0x5A827999 - add r1, sp, #0x10 - add r3, r3, r0 - orr r10, r2, r6, lsr #0x2 - mov r0, #0x1 - add r5, r5, r3 - bl FUN_020A4988 - eor r1, r10, r9 - mov r2, r5, lsl #0x5 - and r1, r4, r1 - orr r2, r2, r5, lsr #0x1b - eor r1, r9, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _020A48BC ; =0x5A827999 - mov r1, r4, lsl #0x1e - add r0, r2, r0 - orr r6, r1, r4, lsr #0x2 - add r8, r8, r0 - add r1, sp, #0x10 - mov r0, #0x2 - bl FUN_020A4988 - mov r1, r8, lsl #0x5 - orr r2, r1, r8, lsr #0x1b - eor r1, r6, r10 - and r1, r5, r1 - eor r1, r10, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _020A48BC ; =0x5A827999 - mov r1, r5, lsl #0x1e - add r0, r2, r0 - orr r7, r1, r5, lsr #0x2 - add r9, r9, r0 - mov r0, #0x3 - add r1, sp, #0x10 - bl FUN_020A4988 - mov r1, r9, lsl #0x5 - orr r2, r1, r9, lsr #0x1b - eor r1, r7, r6 - and r1, r8, r1 - eor r1, r6, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _020A48BC ; =0x5A827999 - mov r1, r8, lsl #0x1e - add r0, r2, r0 - add r10, r10, r0 - mov r0, #0x0 - ldr r4, _020A48C0 ; =0x6ED9EBA1 - orr r8, r1, r8, lsr #0x2 - mov r5, #0x4 - str r0, [sp, #0xc] - add r11, sp, #0x10 -_020A44A8: - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - mov r2, r10, lsl #0x5 - eor r1, r9, r8 - orr r2, r2, r10, lsr #0x1b - eor r1, r7, r1 - add r1, r2, r1 - add r0, r1, r0 - add r1, r0, r4 - mov r0, r9, lsl #0x1e - add r6, r6, r1 - orr r9, r0, r9, lsr #0x2 - add r0, r5, #0x1 - mov r1, r11 - bl FUN_020A4988 - mov r1, r6, lsl #0x5 - orr r2, r1, r6, lsr #0x1b - eor r1, r10, r9 - eor r1, r8, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, r10, lsl #0x1e - orr r10, r0, r10, lsr #0x2 - add r0, r5, #0x2 - and r5, r0, #0xf - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - mov r1, r7, lsl #0x5 - orr r2, r1, r7, lsr #0x1b - eor r1, r6, r10 - eor r1, r9, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r6, lsl #0x1e - orr r6, r0, r6, lsr #0x2 - add r0, r5, #0x1 - mov r1, r11 - bl FUN_020A4988 - mov r1, r8, lsl #0x5 - orr r2, r1, r8, lsr #0x1b - eor r1, r7, r6 - eor r1, r10, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r9, r9, r0 - mov r0, r7, lsl #0x1e - orr r7, r0, r7, lsr #0x2 - add r0, r5, #0x2 - mov r1, r11 - bl FUN_020A4988 - mov r1, r9, lsl #0x5 - orr r2, r1, r9, lsr #0x1b - eor r1, r8, r7 - eor r1, r6, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r10, r10, r0 - mov r0, r8, lsl #0x1e - orr r8, r0, r8, lsr #0x2 - ldr r0, [sp, #0xc] - add r5, r5, #0x3 - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, #0x4 - blt _020A44A8 - mov r0, #0x0 - ldr r4, _020A48C4 ; =0x8F1BBCDC - str r0, [sp, #0x8] - add r11, sp, #0x10 -_020A45DC: - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - orr r2, r8, r7 - mov r1, r10, lsl #0x5 - and r3, r9, r2 - and r2, r8, r7 - orr r1, r1, r10, lsr #0x1b - orr r2, r3, r2 - add r1, r1, r2 - add r1, r1, r0 - mov r0, r9, lsl #0x1e - add r1, r1, r4 - add r6, r6, r1 - orr r9, r0, r9, lsr #0x2 - add r0, r5, #0x1 - mov r1, r11 - bl FUN_020A4988 - orr r2, r9, r8 - mov r1, r6, lsl #0x5 - and r3, r10, r2 - and r2, r9, r8 - orr r1, r1, r6, lsr #0x1b - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, r10, lsl #0x1e - orr r10, r0, r10, lsr #0x2 - add r0, r5, #0x2 - mov r1, r11 - bl FUN_020A4988 - orr r2, r10, r9 - mov r1, r7, lsl #0x5 - and r3, r6, r2 - and r2, r10, r9 - orr r1, r1, r7, lsr #0x1b - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r6, lsl #0x1e - orr r6, r0, r6, lsr #0x2 - add r0, r5, #0x3 - and r5, r0, #0xf - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - orr r2, r6, r10 - mov r1, r8, lsl #0x5 - and r3, r7, r2 - and r2, r6, r10 - orr r1, r1, r8, lsr #0x1b - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r9, r9, r0 - mov r0, r7, lsl #0x1e - orr r7, r0, r7, lsr #0x2 - add r0, r5, #0x1 - mov r1, r11 - bl FUN_020A4988 - orr r2, r7, r6 - mov r1, r9, lsl #0x5 - and r3, r8, r2 - and r2, r7, r6 - orr r1, r1, r9, lsr #0x1b - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r10, r10, r0 - mov r0, r8, lsl #0x1e - orr r8, r0, r8, lsr #0x2 - ldr r0, [sp, #0x8] - add r5, r5, #0x2 - add r0, r0, #0x1 - str r0, [sp, #0x8] - cmp r0, #0x4 - blt _020A45DC - mov r0, #0x0 - ldr r4, _020A48C8 ; =0xCA62C1D6 - str r0, [sp, #0x4] - add r11, sp, #0x10 -_020A4738: - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - mov r2, r10, lsl #0x5 - eor r1, r9, r8 - orr r2, r2, r10, lsr #0x1b - eor r1, r7, r1 - add r1, r2, r1 - add r0, r1, r0 - add r1, r0, r4 - mov r0, r9, lsl #0x1e - add r6, r6, r1 - orr r9, r0, r9, lsr #0x2 - add r0, r5, #0x1 - mov r1, r11 - bl FUN_020A4988 - mov r1, r6, lsl #0x5 - orr r2, r1, r6, lsr #0x1b - eor r1, r10, r9 - eor r1, r8, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, r10, lsl #0x1e - orr r10, r0, r10, lsr #0x2 - add r0, r5, #0x2 - mov r1, r11 - bl FUN_020A4988 - mov r1, r7, lsl #0x5 - orr r2, r1, r7, lsr #0x1b - eor r1, r6, r10 - eor r1, r9, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r6, lsl #0x1e - orr r6, r0, r6, lsr #0x2 - add r0, r5, #0x3 - mov r1, r11 - bl FUN_020A4988 - mov r1, r8, lsl #0x5 - orr r2, r1, r8, lsr #0x1b - eor r1, r7, r6 - eor r1, r10, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r9, r9, r0 - mov r0, r7, lsl #0x1e - orr r7, r0, r7, lsr #0x2 - add r0, r5, #0x4 - and r5, r0, #0xf - mov r0, r5 - mov r1, r11 - bl FUN_020A4988 - mov r1, r9, lsl #0x5 - orr r2, r1, r9, lsr #0x1b - eor r1, r8, r7 - eor r1, r6, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r10, r10, r0 - mov r0, r8, lsl #0x1e - orr r8, r0, r8, lsr #0x2 - ldr r0, [sp, #0x4] - add r5, r5, #0x1 - add r0, r0, #0x1 - str r0, [sp, #0x4] - cmp r0, #0x4 - blt _020A4738 - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x0] - add r1, r0, r10 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - ldr r0, [r0, #0x4] - add r1, r0, r9 - ldr r0, [sp, #0x0] - str r1, [r0, #0x4] - ldr r0, [r0, #0x8] - add r1, r0, r8 - ldr r0, [sp, #0x0] - str r1, [r0, #0x8] - ldr r0, [r0, #0xc] - add r1, r0, r7 - ldr r0, [sp, #0x0] - str r1, [r0, #0xc] - ldr r0, [r0, #0x10] - add r1, r0, r6 - ldr r0, [sp, #0x0] - str r1, [r0, #0x10] - add sp, sp, #0x54 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A48BC: .word 0x5A827999 -_020A48C0: .word 0x6ED9EBA1 -_020A48C4: .word 0x8F1BBCDC -_020A48C8: .word 0xCA62C1D6 - - arm_func_start FUN_020A48CC -FUN_020A48CC: ; 0x020A48CC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r2, #0x0 - addls sp, sp, #0x4 - mov r3, #0x0 - ldmlsia sp!, {r4-r5,lr} - bxls lr -_020A48E8: - add r12, r3, #0x1 - ldrb lr, [r1, r3] - add r4, r3, #0x2 - add r5, r3, #0x3 - ldrb r12, [r1, r12] - mov lr, lr, lsl #0x18 - add r3, r3, #0x4 - ldrb r4, [r1, r4] - orr r12, lr, r12, lsl #0x10 - ldrb lr, [r1, r5] - orr r4, r12, r4, lsl #0x8 - cmp r3, r2 - orr r4, lr, r4 - str r4, [r0], #0x4 - blo _020A48E8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A4930 -FUN_020A4930: ; 0x020A4930 - stmdb sp!, {lr} - sub sp, sp, #0x4 - movs r12, r2, lsr #0x2 - mov lr, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr -_020A494C: - ldr r3, [r1], #0x4 - add lr, lr, #0x1 - mov r2, r3, lsr #0x18 - strb r2, [r0, #0x0] - mov r2, r3, lsr #0x10 - strb r2, [r0, #0x1] - mov r2, r3, lsr #0x8 - strb r2, [r0, #0x2] - strb r3, [r0, #0x3] - cmp lr, r12 - add r0, r0, #0x4 - blo _020A494C - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A4988 -FUN_020A4988: ; 0x020A4988 - add r2, r0, #0xd - add r12, r0, #0x2 - and r3, r2, #0xf - eor r2, r0, #0x8 - and r12, r12, #0xf - ldr r3, [r1, r3, lsl #0x2] - ldr r2, [r1, r2, lsl #0x2] - ldr r12, [r1, r12, lsl #0x2] - eor r2, r3, r2 - ldr r3, [r1, r0, lsl #0x2] - eor r2, r12, r2 - eor r3, r3, r2 - mov r2, r3, lsl #0x1 - orr r2, r2, r3, lsr #0x1f - str r2, [r1, r0, lsl #0x2] - ldr r0, [r1, r0, lsl #0x2] - bx lr - - arm_func_start FUN_020A49CC -FUN_020A49CC: ; 0x020A49CC - stmdb sp!, {r4-r6,lr} - cmp r2, #0x0 - add r3, r0, #0x2 - ldrb lr, [r0, #0x0] - ldrb r12, [r0, #0x1] - mov r4, #0x0 - ble _020A4A2C -_020A49E8: - add r5, lr, #0x1 - and lr, r5, #0xff - ldrb r6, [r3, lr] - add r5, r12, r6 - and r12, r5, #0xff - ldrb r5, [r3, r12] - strb r5, [r3, lr] - add r5, r6, r5 - strb r6, [r3, r12] - and r5, r5, #0xff - ldrb r6, [r1, r4] - ldrb r5, [r3, r5] - eor r5, r6, r5 - strb r5, [r1, r4] - add r4, r4, #0x1 - cmp r4, r2 - blt _020A49E8 -_020A4A2C: - strb lr, [r0, #0x0] - strb r12, [r0, #0x1] - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A4A3C -FUN_020A4A3C: ; 0x020A4A3C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r3, #0x0 - strb r3, [r0, #0x0] - strb r3, [r0, #0x1] - add r7, r0, #0x2 -_020A4A54: - strb r3, [r7, r3] - add r3, r3, #0x1 - cmp r3, #0x100 - blt _020A4A54 - mov r5, #0x0 - mov r6, r5 - mov r4, r5 - mov r0, r5 -_020A4A74: - ldrb lr, [r7, r4] - ldrb r12, [r1, r5] - add r3, r5, #0x1 - and r5, r3, #0xff - add r3, lr, r12 - add r3, r6, r3 - and r6, r3, #0xff - ldrb r3, [r7, r6] - cmp r5, r2 - movge r5, r0 - strb r3, [r7, r4] - add r4, r4, #0x1 - strb lr, [r7, r6] - cmp r4, #0x100 - blt _020A4A74 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A4ABC -FUN_020A4ABC: ; 0x020A4ABC - ldrh r1, [r0, #0x0] - mov r0, #0x0 - bx lr - - arm_func_start FUN_020A4AC8 -FUN_020A4AC8: ; 0x020A4AC8 - ldrh r1, [r0, #0x0] - ldrh r0, [r0, #-0x2] - mov r0, r0, lsl #0x10 - bx lr - - arm_func_start FUN_020A4AD8 -FUN_020A4AD8: ; 0x020A4AD8 - ldrh r1, [r0, #0x0] - ldrh r2, [r0, #-0x2] - ldrh r3, [r0, #-0x4] - orr r0, r3, r2, lsl #0x10 - bx lr - - arm_func_start FUN_020A4AEC -FUN_020A4AEC: ; 0x020A4AEC - ldrh r2, [r0, #0x0] - ldrh r3, [r0, #-0x2] - orr r1, r3, r2, lsl #0x10 - ldrh r2, [r0, #-0x4] - ldrh r3, [r0, #-0x6] - orr r0, r3, r2, lsl #0x10 - bx lr - - arm_func_start FUN_020A4B08 -FUN_020A4B08: ; 0x020A4B08 - sub r3, r2, #0x1 - cmp r2, #0x1 - add r0, r0, r3 - ble _020A4B40 -_020A4B18: - ldrh r3, [r1, #0x0] - sub r2, r2, #0x2 - sub r12, r0, #0x1 - strb r3, [r0, #0x0] - ldrh r3, [r1], #0x2 - cmp r2, #0x1 - sub r0, r0, #0x2 - mov r3, r3, asr #0x8 - strb r3, [r12, #0x0] - bgt _020A4B18 -_020A4B40: - cmp r2, #0x0 - ldrgth r1, [r1, #0x0] - strgtb r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020A4B50 -FUN_020A4B50: ; 0x020A4B50 - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r2, r3, lsl #0x1 - mov r1, #0x0 - mov r4, r0 - bl MI_CpuFill8 - sub r0, r5, #0x1 - cmp r5, #0x1 - add r6, r6, r0 - ble _020A4B9C -_020A4B7C: - ldrb r1, [r6, #0x0] - ldrb r0, [r6, #-0x1] - sub r5, r5, #0x2 - cmp r5, #0x1 - add r0, r1, r0, lsl #0x8 - strh r0, [r4], #0x2 - sub r6, r6, #0x2 - bgt _020A4B7C -_020A4B9C: - cmp r5, #0x0 - ldrgtb r0, [r6, #0x0] - strgth r0, [r4, #0x0] - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_020A4BB0 -FUN_020A4BB0: ; 0x020A4BB0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r10, r3 - mov r3, #0x16 - mul r4, r10, r3 - ldr r3, _020A4DE0 ; =UNK_021C8EC8 - mov r11, r0 - ldr r3, [r3, #0x0] - mov r0, r4 - ldr r9, [sp, #0x58] - str r1, [sp, #0x14] - str r2, [sp, #0x18] - blx r3 - str r0, [sp, #0x1c] - cmp r0, #0x0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - mov r2, r4 - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, [sp, #0x1c] - mov r1, r10 - add r6, r0, r10, lsl #0x1 - add r0, r6, r10, lsl #0x1 - add r5, r0, r10, lsl #0x1 - add r4, r5, r10, lsl #0x1 - str r0, [sp, #0x20] - add r0, r4, r10, lsl #0x1 - str r0, [sp, #0x24] - add r7, r0, r10, lsl #0x1 - mov r0, r9 - bl thunk_FUN_020a5a28 - mov r8, r0 - ldr r0, [sp, #0x1c] - mov r2, #0x1 - mov r1, r8, lsl #0x1 - strh r2, [r0, r1] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x1c] - str r0, [sp, #0x0] - mov r0, r6 - mov r2, r9 - mov r3, r10 - bl FUN_020A4F2C - ldr r1, [sp, #0x1c] - mov r0, r5 - mov r2, r6 - mov r3, r10 - bl FUN_020A5608 - mov r0, r6 - mov r1, r5 - mov r2, #0x1 - mov r3, r10 - bl FUN_020A5748 - str r10, [sp, #0x0] - mov r0, r6 - mov r1, r6 - mov r2, r9 - mov r3, #0x0 - str r7, [sp, #0x4] - bl FUN_020A5240 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x1c] - mov r3, r10 - bl FUN_020A5608 - ldr r1, [sp, #0x20] - str r10, [sp, #0x0] - mov r0, #0x0 - mov r2, r9 - mov r3, r1 - str r7, [sp, #0x4] - bl FUN_020A5240 - str r10, [sp, #0x0] - ldr r1, [sp, #0x1c] - mov r0, #0x0 - mov r2, r9 - mov r3, r11 - str r7, [sp, #0x4] - bl FUN_020A5240 - movs r0, r8, lsl #0x4 - mov r7, #0x0 - str r0, [sp, #0x28] - beq _020A4D9C - mov r0, #0x1 - str r0, [sp, #0x2c] - mov r0, #0x8000 - str r0, [sp, #0x30] -_020A4D14: - str r8, [sp, #0x0] - str r9, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x2c] - mov r0, r11 - mov r3, r10 - str r4, [sp, #0x10] - bl FUN_020A4DE8 - ldr r0, [sp, #0x30] - and r1, r7, #0xf - mov r0, r0, lsr r1 - sub r1, r8, r7, asr #0x4 - sub r1, r1, #0x1 - mov r2, r1, lsl #0x1 - ldr r1, [sp, #0x18] - ldrh r1, [r1, r2] - ands r0, r0, r1 - beq _020A4D8C - str r8, [sp, #0x0] - str r9, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x20] - mov r0, r11 - mov r3, r10 - str r4, [sp, #0x10] - bl FUN_020A4DE8 -_020A4D8C: - ldr r0, [sp, #0x28] - add r7, r7, #0x1 - cmp r7, r0 - blo _020A4D14 -_020A4D9C: - str r8, [sp, #0x0] - str r9, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldr r1, [sp, #0x24] - mov r0, r11 - mov r3, r10 - mov r2, #0x0 - str r4, [sp, #0x10] - bl FUN_020A4DE8 - ldr r1, _020A4DE4 ; =UNK_021C8EF4 - ldr r0, [sp, #0x1c] - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A4DE0: .word UNK_021C8EC8 -_020A4DE4: .word UNK_021C8EF4 - - arm_func_start FUN_020A4DE8 -FUN_020A4DE8: ; 0x020A4DE8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r5, r3 - mov r7, r5, lsl #0x1 - mov r8, r2 - mov r2, r7 - mov r6, r0 - mov r9, r1 - ldr r4, [sp, #0x20] - bl MI_CpuCopy8 - cmp r8, #0x1 - bne _020A4E2C - mov r0, r6 - mov r1, r9 - mov r2, r5 - bl FUN_020A5438 - b _020A4E48 -_020A4E2C: - cmp r8, #0x0 - beq _020A4E48 - mov r0, r6 - mov r1, r9 - mov r2, r8 - mov r3, r5 - bl FUN_020A5608 -_020A4E48: - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x28] - mov r1, r6 - mov r3, r4 - bl FUN_020A5608 - sub r1, r5, r4 - ldr r0, [sp, #0x2c] - mov r8, r1, lsl #0x1 - mov r2, r8 - add r0, r0, r4, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, [sp, #0x30] - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x24] - mov r3, r5 - bl FUN_020A5608 - mov r0, r6 - mov r1, r6 - ldr r2, [sp, #0x30] - mov r3, r5 - bl FUN_020A5930 - mov r2, r8 - mov r0, r6 - add r1, r6, r4, lsl #0x1 - bl memmove - add r0, r6, r5, lsl #0x1 - sub r0, r0, r4, lsl #0x1 - mov r2, r4, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - ldr r1, [sp, #0x24] - mov r2, r5 - bl FUN_020A570C - cmp r0, #0x0 - beq _020A4EF0 - cmp r0, #0x1 - beq _020A4F0C - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr -_020A4EF0: - mov r0, r6 - mov r2, r7 - mov r1, #0x0 - bl MI_CpuFill8 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr -_020A4F0C: - ldr r2, [sp, #0x24] - mov r0, r6 - mov r1, r6 - mov r3, r5 - bl FUN_020A57BC - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_020A4F2C -FUN_020A4F2C: ; 0x020A4F2C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - ldr r9, [sp, #0x38] - mov r10, r3 - add r11, r9, r10, lsl #0x1 - add r8, r11, r10, lsl #0x1 - add r7, r8, r10, lsl #0x1 - add r6, r7, r10, lsl #0x1 - add r5, r6, r10, lsl #0x1 - str r0, [sp, #0x8] - mov r0, r1 - add r1, r5, r10, lsl #0x1 - str r1, [sp, #0x10] - mov r4, r10, lsl #0x1 - str r2, [sp, #0xc] - mov r1, r9 - mov r2, r4 - bl MI_CpuCopy8 - ldr r0, [sp, #0xc] - mov r1, r8 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, #0x1 - strh r0, [r8, r4] - mov r0, r9 - mov r1, r10 - bl FUN_020A59DC - cmp r0, #0x0 - ble _020A503C -_020A4FA0: - ldr r3, [sp, #0x10] - str r10, [sp, #0x0] - str r3, [sp, #0x4] - mov r0, r11 - mov r1, r8 - mov r2, r9 - mov r3, r5 - bl FUN_020A5240 - mov r0, r9 - mov r1, r8 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, r5 - mov r1, r9 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, r5 - mov r1, r11 - mov r2, r7 - mov r3, r10 - bl FUN_020A5608 - mov r0, r5 - mov r1, r6 - mov r2, r5 - mov r3, r10 - bl FUN_020A57BC - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, r9 - mov r1, r10 - bl FUN_020A59DC - cmp r0, #0x0 - bgt _020A4FA0 -_020A503C: - ldr r2, [sp, #0xc] - mov r0, r6 - mov r1, r6 - mov r3, r10 - bl FUN_020A5930 - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - ldr r4, [sp, #0x10] - str r10, [sp, #0x0] - mov r1, r6 - mov r0, #0x0 - str r4, [sp, #0x4] - bl FUN_020A5240 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_020A507C -FUN_020A507C: ; 0x020A507C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x1c - ldr r4, _020A5238 ; =UNK_021C8EC8 - mov r8, r3 - ldr r3, [r4, #0x0] - mov r10, r0 - mov r0, r8, lsl #0x3 - ldr r7, [sp, #0x40] - str r1, [sp, #0x8] - mov r9, r2 - blx r3 - movs r6, r0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r11,lr} - bxeq lr - sub r1, r8, #0x1 - add r0, r10, #0x2 - mov r2, r1, lsl #0x1 - mov r1, #0x0 - add r11, r6, r8, lsl #0x1 - bl MI_CpuFill8 - mov r2, #0x1 - mov r0, r9 - mov r1, r8 - strh r2, [r10, #0x0] - bl thunk_FUN_020a5a28 - sub r0, r8, r0 - mov r5, r0, lsl #0x4 - mov r4, r8, lsl #0x4 - cmp r5, r4 - bhs _020A5140 - mov r0, #0x8000 -_020A50FC: - sub r1, r8, r5, asr #0x4 - sub r1, r1, #0x1 - mov r1, r1, lsl #0x1 - and r2, r5, #0xf - ldrh r1, [r9, r1] - mov r2, r0, lsr r2 - ands r1, r2, r1 - beq _020A5134 - ldr r0, [sp, #0x8] - mov r1, r10 - mov r2, r8, lsl #0x1 - bl MI_CpuCopy8 - add r5, r5, #0x1 - b _020A5140 -_020A5134: - add r5, r5, #0x1 - cmp r5, r4 - blo _020A50FC -_020A5140: - cmp r5, r4 - bhs _020A521C - mov r0, r8, lsl #0x1 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - mov r0, #0x8000 - str r0, [sp, #0x14] -_020A5160: - mov r0, r6 - mov r1, r10 - mov r2, r8 - bl FUN_020A5438 - ldr r2, [sp, #0xc] - mov r0, r6 - mov r1, r10 - bl MI_CpuCopy8 - cmp r7, #0x0 - beq _020A51A4 - ldr r0, [sp, #0x10] - str r8, [sp, #0x0] - mov r1, r10 - mov r2, r7 - mov r3, r10 - str r11, [sp, #0x4] - bl FUN_020A5240 -_020A51A4: - sub r0, r8, r5, asr #0x4 - sub r0, r0, #0x1 - mov r1, r0, lsl #0x1 - ldr r0, [sp, #0x14] - and r2, r5, #0xf - mov r2, r0, lsr r2 - ldrh r0, [r9, r1] - ands r0, r2, r0 - beq _020A5210 - ldr r2, [sp, #0x8] - mov r0, r6 - mov r1, r10 - mov r3, r8 - bl FUN_020A5608 - ldr r2, [sp, #0xc] - mov r0, r6 - mov r1, r10 - bl MI_CpuCopy8 - cmp r7, #0x0 - beq _020A5210 - ldr r0, [sp, #0x10] - str r8, [sp, #0x0] - mov r1, r10 - mov r2, r7 - mov r3, r10 - str r11, [sp, #0x4] - bl FUN_020A5240 -_020A5210: - add r5, r5, #0x1 - cmp r5, r4 - blo _020A5160 -_020A521C: - ldr r1, _020A523C ; =UNK_021C8EF4 - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x1c - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A5238: .word UNK_021C8EC8 -_020A523C: .word UNK_021C8EF4 - - arm_func_start FUN_020A5240 -FUN_020A5240: ; 0x020A5240 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - ldr r9, [sp, #0x48] - ldr r6, [sp, #0x4c] - str r1, [sp, #0x4] - add r5, r6, r9, lsl #0x1 - str r0, [sp, #0x0] - mov r10, r2 - mov r0, r5 - mov r2, r9, lsl #0x2 - mov r1, #0x0 - str r3, [sp, #0x8] - add r4, r5, r9, lsl #0x1 - bl MI_CpuFill8 - ldr r0, [sp, #0x4] - mov r1, r9 - bl thunk_FUN_020a5a28 - mov r11, r0 - mov r0, r10 - mov r1, r9 - bl thunk_FUN_020a5a28 - mov r7, r0 - cmp r11, #0x0 - ble _020A53E8 - cmp r7, #0x0 - ble _020A53E8 - sub r0, r9, r11 - add r0, r7, r0 - sub r8, r0, #0x1 - cmp r8, r9 - blt _020A52D0 - ldr r0, [sp, #0x4] - mov r1, r4 - mov r2, r9, lsl #0x1 - bl MI_CpuCopy8 - b _020A53E8 -_020A52D0: - ldr r0, [sp, #0x4] - add r1, r5, r8, lsl #0x1 - mov r2, r11, lsl #0x1 - bl MI_CpuCopy8 - cmp r7, #0x2 - ble _020A5304 - add r0, r10, r7, lsl #0x1 - sub r0, r0, #0x2 - mov r7, r7, lsl #0x1 - bl FUN_020A4AD8 - str r0, [sp, #0x14] - str r1, [sp, #0x10] - b _020A5340 -_020A5304: - cmp r7, #0x1 - ble _020A5328 - add r0, r10, r7, lsl #0x1 - sub r0, r0, #0x2 - mov r7, r7, lsl #0x1 - bl FUN_020A4AC8 - str r0, [sp, #0x14] - str r1, [sp, #0x10] - b _020A5340 -_020A5328: - add r0, r10, r7, lsl #0x1 - sub r0, r0, #0x2 - mov r7, r7, lsl #0x1 - bl FUN_020A4ABC - str r0, [sp, #0x14] - str r1, [sp, #0x10] -_020A5340: - cmp r8, r9 - bge _020A53E8 - mov r0, r9, lsl #0x1 - sub r0, r0, #0x1 - mov r11, r0, lsl #0x1 - add r0, r4, r7 - str r0, [sp, #0x1c] -_020A535C: - mov r1, r5 - add r0, r5, #0x2 - mov r2, r11 - bl memmove - ldr r0, [sp, #0x1c] - bl FUN_020A4AEC - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x10] - bl _ll_udiv - mov r7, r0 - ldr r0, _020A5434 ; =0x0000FFFF - cmp r7, r0 - movhi r7, r0 -_020A5390: - mov r2, r7, lsl #0x10 - mov r0, r6 - mov r1, r10 - mov r2, r2, lsr #0x10 - mov r3, r9 - bl FUN_020A5584 - mov r0, r4 - mov r1, r6 - mov r2, r9 - bl FUN_020A570C - cmp r0, #0x0 - sublt r7, r7, #0x1 - blt _020A5390 - mov r0, r4 - mov r1, r4 - mov r2, r6 - mov r3, r9 - bl FUN_020A57BC - strh r7, [r5, #0x0] - add r8, r8, #0x1 - cmp r8, r9 - blt _020A535C -_020A53E8: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _020A5404 - ldr r1, [sp, #0x0] - mov r0, r5 - mov r2, r9, lsl #0x1 - bl MI_CpuCopy8 -_020A5404: - ldr r0, [sp, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldr r1, [sp, #0x8] - mov r0, r4 - mov r2, r9, lsl #0x1 - bl MI_CpuCopy8 - add sp, sp, #0x24 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A5434: .word 0x0000FFFF - - arm_func_start FUN_020A5438 -FUN_020A5438: ; 0x020A5438 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - mov r8, r2 - mov r10, r0 - mov r0, r9 - mov r1, r8 - bl thunk_FUN_020a5a28 - mov r11, r0 - mov r0, r11, lsl #0x1 - cmp r0, r8 - bge _020A547C - sub r1, r8, r0 - add r0, r10, r0, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 -_020A547C: - cmp r11, #0x0 - mov r1, #0x0 - ble _020A54D4 - mov r0, r1 - sub r4, r8, #0x1 -_020A5490: - cmp r0, r8 - bge _020A54D4 - mov r2, r1, lsl #0x1 - ldrh r5, [r9, r2] - mov r2, r0, lsl #0x1 - cmp r0, r4 - mul r3, r5, r5 - strh r3, [r10, r2] - beq _020A54D4 - add r2, r0, #0x1 - add r1, r1, #0x1 - mov r3, r3, lsr #0x10 - mov r2, r2, lsl #0x1 - strh r3, [r10, r2] - cmp r1, r11 - add r0, r0, #0x2 - blt _020A5490 -_020A54D4: - cmp r11, #0x0 - mov r6, #0x0 - addle sp, sp, #0x4 - ldmleia sp!, {r4-r11,lr} - bxle lr -_020A54E8: - add r7, r6, #0x1 - b _020A5554 -_020A54F0: - mov r1, r7, lsl #0x1 - mov r0, r6, lsl #0x1 - ldrh r1, [r9, r1] - ldrh r0, [r9, r0] - mul r4, r1, r0 - ldr r0, _020A5580 ; =0x7FFF8000 - cmp r4, r0 - bhi _020A5528 - mov r0, r10 - mov r2, r5 - mov r3, r8 - mov r1, r4, lsl #0x1 - bl FUN_020A56C4 - b _020A5550 -_020A5528: - mov r0, r10 - mov r1, r4 - mov r2, r5 - mov r3, r8 - bl FUN_020A56C4 - mov r0, r10 - mov r1, r4 - mov r2, r5 - mov r3, r8 - bl FUN_020A56C4 -_020A5550: - add r7, r7, #0x1 -_020A5554: - cmp r7, r11 - bge _020A5568 - add r5, r6, r7 - cmp r5, r8 - blt _020A54F0 -_020A5568: - add r6, r6, #0x1 - cmp r6, r11 - blt _020A54E8 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020A5580: .word 0x7FFF8000 - - arm_func_start FUN_020A5584 -FUN_020A5584: ; 0x020A5584 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - mov r4, r3 - mov r7, r0 - mov r0, r6 - mov r1, r4 - mov r5, r2 - bl thunk_FUN_020a5a28 - mov r3, #0x0 - mov r12, r3 - cmp r0, #0x0 - ble _020A55D8 -_020A55B8: - mov r2, r12, lsl #0x1 - ldrh r1, [r6, r2] - add r12, r12, #0x1 - cmp r12, r0 - mla r1, r5, r1, r3 - strh r1, [r7, r2] - mov r3, r1, lsr #0x10 - blt _020A55B8 -_020A55D8: - cmp r12, r4 - movlt r0, r12, lsl #0x1 - addlt r12, r12, #0x1 - sub r1, r4, r12 - strlth r3, [r7, r0] - mov r2, r1, lsl #0x1 - add r0, r7, r12, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A5608 -FUN_020A5608: ; 0x020A5608 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r8, r3 - mov r10, r1 - mov r9, r2 - mov r2, r8, lsl #0x1 - mov r1, #0x0 - mov r11, r0 - bl MI_CpuFill8 - mov r0, r10 - mov r1, r8 - bl thunk_FUN_020a5a28 - mov r5, r0 - mov r0, r9 - mov r1, r8 - bl thunk_FUN_020a5a28 - str r0, [sp, #0x0] - cmp r0, #0x0 - mov r7, #0x0 - addle sp, sp, #0xc - ldmleia sp!, {r4-r11,lr} - bxle lr - str r7, [sp, #0x4] -_020A5664: - ldr r6, [sp, #0x4] - sub r4, r8, r7 - b _020A5698 -_020A5670: - mov r1, r6, lsl #0x1 - mov r0, r7, lsl #0x1 - ldrh r2, [r10, r1] - ldrh r1, [r9, r0] - mov r0, r11 - mov r3, r8 - mul r1, r2, r1 - add r2, r7, r6 - bl FUN_020A56C4 - add r6, r6, #0x1 -_020A5698: - cmp r6, r5 - bge _020A56A8 - cmp r6, r4 - blt _020A5670 -_020A56A8: - ldr r0, [sp, #0x0] - add r7, r7, #0x1 - cmp r7, r0 - blt _020A5664 - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_020A56C4 -FUN_020A56C4: ; 0x020A56C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - b _020A56E8 -_020A56D0: - mov lr, r2, lsl #0x1 - ldrh r12, [r0, lr] - add r2, r2, #0x1 - add r1, r1, r12 - strh r1, [r0, lr] - mov r1, r1, lsr #0x10 -_020A56E8: - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - cmp r2, r3 - blt _020A56D0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A570C -FUN_020A570C: - subs r12, r2, #0x1 - bmi _020A5740 -_020A5714: - mov r2, r12, lsl #0x1 - ldrh r3, [r1, r2] - ldrh r2, [r0, r2] - cmp r2, r3 - movhi r0, #0x1 - bxhi lr - cmp r2, r3 - mvncc r0, #0x0 - bxcc lr - subs r12, r12, #0x1 - bpl _020A5714 -_020A5740: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020A5748 -FUN_020A5748: ; 0x020A5748 - stmdb sp!, {r4,lr} - cmp r3, #0x0 - mov r4, #0x0 - ble _020A5780 -_020A5758: - mov lr, r4, lsl #0x1 - ldrh r12, [r1, lr] - sub r12, r12, r2 - mov r2, r12, lsr #0x10 - strh r12, [r0, lr] - ands r2, r2, #0x1 - beq _020A5780 - add r4, r4, #0x1 - cmp r4, r3 - blt _020A5758 -_020A5780: - cmp r0, r1 - ldmeqia sp!, {r4,lr} - bxeq lr - add r4, r4, #0x1 - cmp r4, r3 - ldmgeia sp!, {r4,lr} - bxge lr -_020A579C: - mov r12, r4, lsl #0x1 - ldrh r2, [r1, r12] - add r4, r4, #0x1 - cmp r4, r3 - strh r2, [r0, r12] - blt _020A579C - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A57BC -FUN_020A57BC: ; 0x020A57BC - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - mov r6, r2 - mov r0, r7 - mov r1, r5 - bl thunk_FUN_020a5a28 - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl thunk_FUN_020a5a28 - cmp r4, r0 - movlt r4, r0 - mov r3, #0x0 - cmp r4, r5 - addne r4, r4, #0x1 - mov r12, r3 - b _020A5828 -_020A5808: - mov r2, r12, lsl #0x1 - ldrh r1, [r7, r2] - ldrh r0, [r6, r2] - add r12, r12, #0x1 - sub r0, r1, r0 - add r0, r3, r0 - strh r0, [r8, r2] - mov r3, r0, asr #0x10 -_020A5828: - cmp r12, r4 - blt _020A5808 - cmp r12, r5 - bge _020A5840 - cmp r3, #0x0 - bne _020A5808 -_020A5840: - cmp r8, r7 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - cmp r8, r6 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - sub r1, r5, r12 - add r0, r8, r12, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020A5874 -FUN_020A5874: ; 0x020A5874 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r1 - cmp r3, #0x0 - mov r12, #0x0 - ble _020A58A8 -_020A588C: - mov r2, r12, lsl #0x1 - ldrh r1, [r0, r2] - add r12, r12, #0x1 - cmp r12, r3 - mvn r1, r1 - strh r1, [r0, r2] - blt _020A588C -_020A58A8: - mov r1, r0 - mov r2, #0x1 - bl FUN_020A58C0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A58C0 -FUN_020A58C0: ; 0x020A58C0 - stmdb sp!, {r4,lr} - cmp r3, #0x0 - mov r4, #0x0 - ble _020A58F4 -_020A58D0: - mov lr, r4, lsl #0x1 - ldrh r12, [r1, lr] - add r2, r2, r12 - strh r2, [r0, lr] - movs r2, r2, lsr #0x10 - beq _020A58F4 - add r4, r4, #0x1 - cmp r4, r3 - blt _020A58D0 -_020A58F4: - cmp r0, r1 - ldmeqia sp!, {r4,lr} - bxeq lr - add r4, r4, #0x1 - cmp r4, r3 - ldmgeia sp!, {r4,lr} - bxge lr -_020A5910: - mov r12, r4, lsl #0x1 - ldrh r2, [r1, r12] - add r4, r4, #0x1 - cmp r4, r3 - strh r2, [r0, r12] - blt _020A5910 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A5930 -FUN_020A5930: ; 0x020A5930 - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - mov r6, r2 - mov r0, r7 - mov r1, r5 - bl thunk_FUN_020a5a28 - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl thunk_FUN_020a5a28 - cmp r4, r0 - movlt r4, r0 - cmp r4, r5 - addne r4, r4, #0x1 - mov r3, #0x0 - mov r12, r3 - cmp r4, #0x0 - ble _020A59A8 -_020A5980: - mov r2, r12, lsl #0x1 - ldrh r1, [r7, r2] - ldrh r0, [r6, r2] - add r12, r12, #0x1 - cmp r12, r4 - add r0, r1, r0 - add r0, r3, r0 - strh r0, [r8, r2] - mov r3, r0, lsr #0x10 - blt _020A5980 -_020A59A8: - cmp r8, r7 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - cmp r8, r6 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - sub r1, r5, r12 - add r0, r8, r12, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, #0x0 - bl MI_CpuFill8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020A59DC -FUN_020A59DC: - stmdb sp!, {lr} - sub sp, sp, #0x4 - sub r2, r1, #0x1 - mov r2, r2, lsl #0x1 - ldrh r2, [r0, r2] - ands r2, r2, #0x8000 - addne sp, sp, #0x4 - mvnne r0, #0x0 - ldmneia sp!, {lr} - bxne lr - bl thunk_FUN_020a5a28 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start thunk_FUN_020a5a28 -thunk_FUN_020a5a28: - b _020A5A28 -_020A5A24: - sub r1, r1, #0x1 -_020A5A28: - cmp r1, #0x0 - beq _020A5A44 - sub r2, r1, #0x1 - mov r2, r2, lsl #0x1 - ldrh r2, [r0, r2] - cmp r2, #0x0 - beq _020A5A24 -_020A5A44: - mov r0, r1 - bx lr - - 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 +_020A01DC: .word CPSiFree diff --git a/arm9/global.inc b/arm9/global.inc index 08b51684..1bf30bfc 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5467,10 +5467,10 @@ .extern FUN_0209CB78 .extern FUN_0209CC10 .extern FUN_0209CC28 -.extern FUN_020A02EC -.extern FUN_020A136C -.extern FUN_020A3688 -.extern FUN_020A374C +.extern CPS_SetSsl +.extern CPS_SslAddRandomSeed +.extern CPS_SetRootCa +.extern CPS_SetSslHandshakePriority .extern FUN_020A71F8 .extern FUN_020A722C .extern FUN_020A7488 @@ -7756,3 +7756,75 @@ .extern FUN_0205C490 .extern FUN_0205C4A8 .extern FUN_0205C4D8 +.extern CPSiAlloc +.extern CPSiFree +.extern CPSiRand32ctx +.extern CPSi_SslCleanup +.extern CPSi_SslClose +.extern CPSi_SslConnect +.extern CPSi_SslConsume +.extern CPSi_SslGetLength +.extern CPSi_SslListen +.extern CPSi_SslPeriodical +.extern CPSi_SslRead +.extern CPSi_SslShutdown +.extern CPSi_SslWrite2 +.extern FUN_020A8644 +.extern FUN_020A87BC +.extern UNK_021C8ECC +.extern UNK_021C8ED0 +.extern UNK_021C8ED4 +.extern UNK_021C8ED8 +.extern UNK_021C8EDC +.extern UNK_021C8EE0 +.extern UNK_021C8EE4 +.extern UNK_021C8EE8 +.extern UNK_021C8EEC +.extern UNK_021C8EF0 +.extern UNK_021C8EF8 +.extern UNK_021C8EFC +.extern UNK_021C8F00 +.extern UNK_021C8F04 +.extern UNK_021C8F08 +.extern UNK_021C8F0C +.extern UNK_021C8F10 +.extern UNK_021C8F14 +.extern UNK_021C8F1C +.extern UNK_021C8F5E +.extern UNK_021C8F78 +.extern UNK_021C8F82 +.extern UNK_021C8FD8 +.extern UNK_021C903C +.extern UNK_021C90A0 +.extern UNK_021C9160 +.extern UNK_021C9220 +.extern UNK_021C924A +.extern UNK_021C93A0 +.extern UNK_021C9520 +.extern UNK_021C9EE0 +.extern pool_initialized +.extern CPSi_SocConsumeRaw +.extern CPSi_TcpConnectRaw +.extern CPSi_TcpReadRaw +.extern CPSi_TcpShutdownRaw +.extern CPSi_TcpWrite2Raw +.extern CPSi_big_add +.extern CPSi_big_div +.extern CPSi_big_from_char +.extern CPSi_big_montpower +.extern CPSi_big_mult +.extern CPSi_big_negate +.extern CPSi_big_power +.extern CPSi_big_sign +.extern CPSi_big_sub +.extern CPSi_char_from_big +.extern CPSi_md5_calc +.extern CPSi_md5_init +.extern CPSi_md5_result +.extern CPSi_rc4_crypt +.extern CPSi_rc4_init +.extern CPSi_sha1_calc +.extern CPSi_sha1_init +.extern CPSi_sha1_result +.extern CPSi_sha1_result_prng +.extern FUN_0209CAC4 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index e76d9801..e58f24ed 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -2432,9 +2432,9 @@ MOD04_021DAF18: ; 0x021DAF18 str r1, [r6, #0x800] mov r1, #0xb str r6, [r8, #0xc] - bl FUN_020A3688 + bl CPS_SetRootCa mov r0, #1 - bl FUN_020A02EC + bl CPS_SetSsl _021DAFC8: add r0, sl, #0x1100 ldrh r1, [r0, #0x30] @@ -2725,7 +2725,7 @@ MOD04_021DB3B8: ; 0x021DB3B8 ldr r0, _021DB438 ; =0x000019D0 mov r1, #0x20 add r0, r4, r0 - bl FUN_020A136C + bl CPS_SslAddRandomSeed _021DB3EC: ldr r0, _021DB43C ; =0x00001BF4 add r0, r4, r0 @@ -5830,7 +5830,7 @@ MOD04_021DDEE0: ; 0x021DDEE0 str r6, [r1] bl MOD04_021DDE7C mov r0, r4 - bl FUN_020A374C + bl CPS_SetSslHandshakePriority ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _021DDF3C: .word 0x02210518 @@ -56998,7 +56998,7 @@ MOD04_02209F5C: ; 0x02209F5C bl OS_GetLowEntropyData ldr r0, _02209F80 ; =0x02211A24 mov r1, #0x20 - bl FUN_020A136C + bl CPS_SslAddRandomSeed add sp, sp, #4 ldmfd sp!, {pc} .align 2, 0 -- cgit v1.2.3 From 6cc58b6c92491ce2396d86437b240c2f399620d2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 10:47:50 -0400 Subject: Fix libVCT split --- arm9/arm9.lcf | 4 - arm9/asm/libVCT.s | 26303 +++++++++++++++++++++++++++++++++++++++++++++- arm9/asm/unk_020AF030.s | 26267 --------------------------------------------- 3 files changed, 26291 insertions(+), 26283 deletions(-) delete mode 100644 arm9/asm/unk_020AF030.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 643ddb9f..d01beea9 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -437,7 +437,6 @@ SECTIONS { SSL_rca4.o (.text) SSL_biginteger.o (.text) libVCT.o (.text) - unk_020AF030.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) FX_mtx33.o (.text) @@ -718,7 +717,6 @@ SECTIONS { SSL_rca4.o (.rodata) SSL_biginteger.o (.rodata) libVCT.o (.rodata) - unk_020AF030.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) SND_util.o (.rodata) @@ -778,7 +776,6 @@ SECTIONS { SSL_rca4.o (.data) SSL_biginteger.o (.data) libVCT.o (.data) - unk_020AF030.o (.data) GX.o (.data) OS_irqHandler.o (.data) OS_emulator.o (.data) @@ -864,7 +861,6 @@ SECTIONS { SSL_rca4.o (.bss) SSL_biginteger.o (.bss) libVCT.o (.bss) - unk_020AF030.o (.bss) GX.o (.bss) GX_state.o (.bss) GX_load2d.o (.bss) diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s index 7345545f..58e54290 100644 --- a/arm9/asm/libVCT.s +++ b/arm9/asm/libVCT.s @@ -1,6 +1,9 @@ .include "asm/macros.inc" .include "global.inc" + .extern UNK_02103BAC + .extern GXi_DmaId + .section .rodata .global UNK_020FF590 @@ -94,19 +97,1173 @@ UNK_020FF788: ; 0x020FF788 .global UNK_020FF7CC UNK_020FF7CC: ; 0x020FF7CC - .byte 0x94, 0xE8, 0x0A, 0x02, 0x84, 0xE8, 0x0A, 0x02 + .word FUN_020AE894 + .word FUN_020AE884 .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 + .word FUN_020AF2B4 + .word FUN_020AF288 + .word FUN_020AF25C + .word FUN_020AF230 + .word GX_LoadBG0Char_2 + .word GX_LoadBG1Char_2 + .word GX_LoadBG2Char_2 + .word GX_LoadBG3Char_2 + .word GX_LoadBG0Scr_2 + .word GX_LoadBG1Scr_2 + .word GX_LoadBG2Scr_2 + .word GX_LoadBG3Scr_2 + .word GX_LoadBG2Scr_3 + .word GX_LoadBG3Scr_3 + .word GX_LoadOBJPltt_2 + .word GX_LoadBGPltt_2 + .word FUN_020AF174 + .word FUN_020AF148 + .word GX_LoadOAM_2 + .word GX_LoadOBJ_2 + .word GXS_LoadBG0Char_2 + .word GXS_LoadBG1Char_2 + .word GXS_LoadBG2Char_2 + .word GXS_LoadBG3Char_2 + .word GXS_LoadBG0Scr_2 + .word GXS_LoadBG1Scr_2 + .word GXS_LoadBG2Scr_2 + .word GXS_LoadBG3Scr_2 + .word GXS_LoadBG2Scr_3 + .word GXS_LoadBG3Scr_3 + .word GXS_LoadOBJPltt_2 + .word GXS_LoadBGPltt_2 + .word FUN_020AF074 + .word FUN_020AF048 + .word GXS_LoadOAM_2 + .word GXS_LoadOBJ_2 + + .global UNK_020FF864 +UNK_020FF864: ; 0x020FF864 + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_020FF894 +UNK_020FF894: ; 0x020FF894 + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + + .global UNK_020FF8AC +UNK_020FF8AC: ; 0x020FF8AC + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + + .global UNK_020FF8C4 +UNK_020FF8C4: ; 0x020FF8C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + + .global UNK_020FF8D0 +UNK_020FF8D0: ; 0x020FF8D0 + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + + .global UNK_020FF8D8 +UNK_020FF8D8: ; 0x020FF8D8 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + + .global UNK_020FF8F8 +UNK_020FF8F8: ; 0x020FF8F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_020FF928 +UNK_020FF928: ; 0x020FF928 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global UNK_020FF958 +UNK_020FF958: ; 0x020FF958 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_020FF970 +UNK_020FF970: ; 0x020FF970 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 + .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 + + .global UNK_020FF990 +UNK_020FF990: ; 0x020FF990 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 + + .global UNK_020FF9D0 +UNK_020FF9D0: ; 0x020FF9D0 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F + .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F + + .global UNK_020FF9F0 +UNK_020FF9F0: ; 0x020FF9F0 + .byte 0x04 + + .global UNK_020FF9F1 +UNK_020FF9F1: ; 0x020FF9F1 + .byte 0x05 + + .global UNK_020FF9F2 +UNK_020FF9F2: ; 0x020FF9F2 + .byte 0x07 + + .global UNK_020FF9F3 +UNK_020FF9F3: ; 0x020FF9F3 + .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 + .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 + .byte 0x04 + + .global UNK_020FFA14 +UNK_020FFA14: ; 0x020FFA14 + .byte 0x04 + + .global UNK_020FFA15 +UNK_020FFA15: ; 0x020FFA15 + .byte 0x05 + + .global UNK_020FFA16 +UNK_020FFA16: ; 0x020FFA16 + .byte 0x07 + + .global UNK_020FFA17 +UNK_020FFA17: ; 0x020FFA17 + .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 + .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 + .byte 0x04 + + .global UNK_020FFA38 +UNK_020FFA38: ; 0x020FFA38 + .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, + .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, + .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, + .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, + .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, + .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, + .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, + .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, + .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, + .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, + .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, + .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, + .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, + .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, + .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, + .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, + .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, + .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, + .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, + .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, + .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, + .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, + .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, + .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, + .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, + .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, + .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, + .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, + .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, + .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, + .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, + .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, + .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, + .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, + .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, + .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, + .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, + .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, + .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, + .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, + .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, + .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, + .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, + .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, + .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, + .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, + .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, + .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, + .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, + .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, + .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, + .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, + .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, + .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, + .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, + .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, + .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, + .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, + .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, + .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, + .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, + .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, + .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, + .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, + .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, + .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, + .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, + .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, + .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, + .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, + .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, + .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, + .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, + .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, + .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, + .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, + .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, + .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, + .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, + .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, + .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, + .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, + .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, + .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, + .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, + .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, + .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, + .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, + .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, + .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, + .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, + .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, + .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, + .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, + .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, + .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, + .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, + .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, + .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, + .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, + .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, + .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, + .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, + .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, + .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, + .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, + .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, + .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, + .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, + .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, + .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, + .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, + .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, + .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, + .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, + .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, + .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, + .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, + .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, + .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, + .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, + .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, + .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, + .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, + .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, + .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, + .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, + .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, + .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, + .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, + .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, + .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, + .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, + .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, + .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, + .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, + .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, + .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, + .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, + .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, + .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, + .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, + .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, + .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, + .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, + .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, + .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, + .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, + .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, + .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, + .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, + .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, + .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, + .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, + .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, + .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, + .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, + .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, + .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, + .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, + .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, + .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, + .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, + .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, + .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, + .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, + .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, + .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, + .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, + .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, + .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, + .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, + .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, + .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, + .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, + .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, + .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, + .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, + .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, + .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, + .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, + .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, + .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, + .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, + .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, + .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, + .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, + .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, + .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, + .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, + .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, + .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, + .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, + .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, + .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, + .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, + .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, + .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, + .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, + .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, + .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, + .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, + .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, + .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, + .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, + .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, + .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, + .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, + .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, + .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, + .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, + .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, + .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, + .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, + .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, + .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, + .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, + .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, + .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, + .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, + .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, + .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, + .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, + .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, + .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, + .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, + .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, + .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, + .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, + .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, + .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, + .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, + .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, + .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, + .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, + .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, + .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, + .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, + .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, + .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, + .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, + .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, + .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, + .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, + .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, + .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, + .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, + .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, + .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, + .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, + .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, + .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, + .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, + .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, + .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, + .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, + .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, + .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, + .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, + .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, + .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, + .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, + .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, + .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, + .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, + .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, + .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, + .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, + .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, + .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, + .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, + .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, + .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, + .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, + .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, + .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, + .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, + .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, + .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, + .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, + .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, + .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, + .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, + .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, + .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, + .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, + .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, + .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, + .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, + .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, + .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, + .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, + .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, + .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, + .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, + .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, + .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, + .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, + .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, + .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, + .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, + .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, + .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, + .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, + .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, + .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, + .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, + .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, + .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, + .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, + .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, + .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, + .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, + .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, + .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, + .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, + .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, + .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, + .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, + .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, + .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, + .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, + .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, + .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, + .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, + .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, + .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, + .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, + .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, + .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, + .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, + .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, + .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, + .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, + .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, + .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, + .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, + .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, + .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, + .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, + .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, + .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, + .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, + .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, + .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, + .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, + .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, + .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, + .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, + .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, + .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, + .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, + .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, + .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, + .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, + .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, + .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, + .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, + .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, + .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, + .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, + .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, + .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, + .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, + .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, + .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, + .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, + .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, + .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, + .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, + .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, + .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, + .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, + .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, + .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, + .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, + .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, + .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, + .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, + .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, + .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, + .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, + .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, + .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, + .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, + .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, + .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, + .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, + .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, + .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, + .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, + .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, + .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, + .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, + .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, + .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, + .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, + .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, + .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, + .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, + .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, + .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, + .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, + .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, + .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, + .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, + .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, + .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, + .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, + .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, + .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, + .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, + .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, + .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, + .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, + .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, + .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, + .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, + .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, + .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, + .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, + .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, + .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, + .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, + .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, + .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, + .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, + .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, + .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, + .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, + .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, + .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, + .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, + .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, + .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, + .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, + .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, + .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, + .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, + .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, + .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, + .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, + .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, + .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, + .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, + .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, + .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, + .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, + .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, + .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, + .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, + .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, + .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, + .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, + .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, + .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, + .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, + .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, + .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, + .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, + .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, + .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, + .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, + .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, + .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, + .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, + .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, + .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, + .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, + .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, + .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, + .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, + .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, + .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, + .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, + .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, + .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, + .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, + .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, + .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, + .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, + .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, + .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, + .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, + .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, + .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, + .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, + .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, + .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, + .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, + .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, + .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, + .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, + .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, + .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, + .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, + .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, + .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, + .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, + .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, + .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, + .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, + .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, + .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, + .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, + .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, + .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, + .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, + .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, + .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, + .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, + .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, + .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, + .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, + .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, + .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, + .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, + .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, + .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, + .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, + .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, + .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, + .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, + .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, + .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, + .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, + .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, + .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, + .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, + .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, + .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, + .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, + .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, + .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, + .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, + .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, + .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, + .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, + .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, + .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, + .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, + .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, + .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, + .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, + .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, + .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, + .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, + .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, + .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, + .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, + .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, + .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, + .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, + .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, + .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, + .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, + .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, + .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, + .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, + .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, + .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, + .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, + .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, + .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, + .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, + .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, + .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, + .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, + .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, + .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, + .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, + .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, + .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, + .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, + .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, + .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, + .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, + .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, + .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, + .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, + .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, + .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, + .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, + .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, + .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, + .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, + .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, + .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, + .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, + .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, + .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, + .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, + .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, + .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, + .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, + .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, + .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, + .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, + .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, + .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, + .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, + .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, + .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, + .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, + .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, + .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, + .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, + .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, + .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, + .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, + .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, + .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, + .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, + .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, + .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, + .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, + .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, + .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, + .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, + .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, + .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, + .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, + .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, + .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, + .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, + .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, + .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, + .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, + .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, + .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, + .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, + .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, + .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, + .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, + .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, + .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, + .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, + .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, + .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, + .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, + .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, + .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, + .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, + .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, + .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, + .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, + .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, + .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, + .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, + .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, + .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, + .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, + .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, + .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, + .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, + .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, + .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, + .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, + .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, + .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, + .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, + .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, + .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, + .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, + .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, + .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, + .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, + .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, + .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, + .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, + .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, + .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, + .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, + .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, + .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, + .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, + .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, + .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, + .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, + .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, + .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, + .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, + .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, + .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, + .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, + .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, + .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, + .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, + .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, + .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, + .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, + .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, + .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, + .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, + .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, + .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, + .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, + .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, + .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, + .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, + .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, + .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, + .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, + .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, + .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, + .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, + .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, + .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, + .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, + .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, + .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, + .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, + .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, + .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, + .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, + .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, + .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, + .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, + .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, + .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, + .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, + .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, + .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, + .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, + .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, + .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, + .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, + .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, + .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, + .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, + .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, + .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, + .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, + .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, + .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, + .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, + .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, + .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, + .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, + .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, + .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, + .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, + .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, + .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, + .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, + .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, + .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, + .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, + .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, + .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, + .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, + .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, + .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, + .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, + .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, + .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, + .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, + .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, + .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, + .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, + .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, + .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, + .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, + .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, + .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, + .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, + .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, + .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, + .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, + .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, + .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, + .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, + .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, + .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, + .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, + .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, + .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, + .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, + .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, + .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, + .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, + .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, + .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, + .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, + .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, + .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, + .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, + .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, + .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, + .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, + .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, + .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, + .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, + .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, + .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, + .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, + .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, + .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, + .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, + .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, + .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, + .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, + .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, + .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, + .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, + .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, + .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, + .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, + .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, + .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, + .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, + .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, + .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, + .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, + .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, + .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, + .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, + .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, + .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, + .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, + .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, + .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, + .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, + .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, + .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, + .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, + .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, + .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, + .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, + .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, + .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, + .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, + .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, + .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, + .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, + .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, + .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, + .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, + .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, + .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, + .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, + .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, + .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, + .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, + .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, + .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, + .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, + .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, + .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, + .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, + .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, + .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, + .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, + .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, + .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, + .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, + .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, + .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, + .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, + .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, + .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, + .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, + .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, + .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, + .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, + .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, + .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, + .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, + .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, + .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, + .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, + .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, + .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, + .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, + .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, + .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, + .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, + .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, + .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, + .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, + .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, + .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, + .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, + .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, + .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, + .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, + .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, + .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, + .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, + .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, + .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, + .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, + .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, + .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, + .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, + .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, + .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, + .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, + .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, + .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, + .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, + .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, + .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, + .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, + .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, + .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, + .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, + .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, + .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, + .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, + .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, + .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, + .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, + .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, + .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, + .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, + .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, + .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, + .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, + .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, + .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, + .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, + .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, + .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, + .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, + .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, + .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, + .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, + .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, + .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, + .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, + .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, + .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, + .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, + .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, + .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, + .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, + .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, + .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, + .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, + .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, + .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, + .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, + .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, + .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, + .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, + .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, + .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, + .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, + .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, + .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, + .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, + .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, + .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, + .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, + .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, + .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, + .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, + .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, + .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, + .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, + .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, + .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, + .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, + .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, + .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, + .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, + .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, + .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, + .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, + .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, + .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, + .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, + .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, + .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, + .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, + .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, + .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, + .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, + .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, + .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, + .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, + .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, + .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, + .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, + .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, + .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, + .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, + .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, + .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, + .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, + .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, + .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, + .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, + .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, + .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, + .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, + .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, + .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, + .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, + .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, + .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, + .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, + .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, + .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, + .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, + .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, + .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, + .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, + .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, + .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, + .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, + .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, + .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, + .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, + .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, + .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, + .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, + .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, + .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, + .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, + .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, + .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 .section .data @@ -185,6 +1342,238 @@ 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 + .global UNK_0210655C +UNK_0210655C: ; 0x0210655C + .word FUN_020B1088 + .word FUN_020B1098 + .word 0 + .word 0 + .word 0 + + .global UNK_02106570 +UNK_02106570: ; 0x02106570 + .short -2 + + .balign 4, 0 + .global UNK_02106574 +UNK_02106574: ; 0x02106574 + .word -1 + + .global UNK_02106578 +UNK_02106578: ; 0x02106578 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106590 +UNK_02106590: ; 0x02106590 + .byte 0x00, 0xF0, 0xFF, 0xFF + + .global UNK_02106594 +UNK_02106594: ; 0x02106594 + .byte 0x05, 0x00, 0x00, 0x00 + + .global UNK_02106598 +UNK_02106598: ; 0x02106598 + .word FUN_020BE5A0 + + .global UNK_0210659C +UNK_0210659C: ; 0x0210659C + .word FUN_020BDA70 + + .global UNK_021065A0 +UNK_021065A0: ; 0x021065A0 + .word FUN_020BDF38 + + .global UNK_021065A4 +UNK_021065A4: ; 0x021065A4 + .word FUN_020BE334 + + .global UNK_021065A8 +UNK_021065A8: ; 0x021065A8 + .word FUN_020BDB40 + + .global UNK_021065AC +UNK_021065AC: ; 0x021065AC + .word FUN_020B8640 + + .global UNK_021065B0 +UNK_021065B0: ; 0x021065B0 + .word FUN_020B86B0 + + .global UNK_021065B4 +UNK_021065B4: ; 0x021065B4 + .word FUN_020B8A08 + + .global UNK_021065B8 +UNK_021065B8: ; 0x021065B8 + .byte 0x4D, 0x00, 0x41, 0x4D + + .global UNK_021065BC +UNK_021065BC: ; 0x021065BC + .word FUN_020BDC0C + .byte 0x4D, 0x00, 0x50, 0x54 + .word FUN_020BE4F0 + .byte 0x4D, 0x00, 0x41, 0x54 + .word FUN_020BDF84 + .byte 0x56, 0x00, 0x41, 0x56 + .word FUN_020BE5E0 + .byte 0x4A, 0x00, 0x41, 0x43 + .word FUN_020BDAB4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106608 +UNK_02106608: ; 0x02106608 + .word FUN_020BE668 + .word FUN_020BEE3C + .word FUN_020BF2FC + + .global UNK_02106614 +UNK_02106614: ; 0x02106614 + .word FUN_020BE62C + .word FUN_020BECEC + .word FUN_020BF0D4 + + .global UNK_02106620 +UNK_02106620: ; 0x02106620 + .word FUN_020BE6E4 + .word FUN_020BEF10 + .word FUN_020BF42C + .word FUN_020BFA9C + + .global UNK_02106630 +UNK_02106630: ; 0x02106630 + .byte 0x2A, 0x00, 0x00, 0x00 + + .global UNK_02106634 +UNK_02106634: ; 0x02106634 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106638 +UNK_02106638: ; 0x02106638 + .byte 0x2A, 0x00, 0x00, 0x00 + + .global UNK_0210663C +UNK_0210663C: ; 0x0210663C + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106640 +UNK_02106640: ; 0x02106640 + .word FUN_020BA58C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106650 +UNK_02106650: ; 0x02106650 + .word FUN_020BA438 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106660 +UNK_02106660: ; 0x02106660 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + + .global UNK_021066A0 +UNK_021066A0: ; 0x021066A0 + .byte 0x12, 0x10, 0x17, 0x1B + + .global UNK_021066A4 +UNK_021066A4: ; 0x021066A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_021066AC +UNK_021066AC: ; 0x021066AC + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + .global UNK_021066D0 +UNK_021066D0: ; 0x021066D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021066DC +UNK_021066DC: ; 0x021066DC + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021066E8 +UNK_021066E8: ; 0x021066E8 + .byte 0x12, 0x10, 0x17, 0x1B + + .global UNK_021066EC +UNK_021066EC: ; 0x021066EC + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_021066F4 +UNK_021066F4: ; 0x021066F4 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + .global UNK_02106718 +UNK_02106718: ; 0x02106718 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106724 +UNK_02106724: ; 0x02106724 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106730 +UNK_02106730: ; 0x02106730 + .word FUN_020BAC70 + .word FUN_020BAC48 + .word FUN_020BAAC0 + .word FUN_020BA9EC + .word FUN_020BA50C + .word FUN_020BA3C4 + .word FUN_020B9F84 + .word FUN_020B9C54 + .word FUN_020B98C4 + .word FUN_020B9258 + .word FUN_020B9178 + .word FUN_020B9110 + .word FUN_020B8DF0 + .word FUN_020B8A60 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021067B0 +UNK_021067B0: ; 0x021067B0 + .word FUN_020BEBD8 + .word FUN_020BEB00 + .word FUN_020BEA84 + .word FUN_020BEA3C + .word FUN_020BE954 + .word FUN_020BE894 + .word FUN_020BE850 + .word FUN_020BE82C + + .global UNK_021067D0 +UNK_021067D0: ; 0x021067D0 + .word FUN_020BF988 + .word FUN_020BF894 + .word FUN_020BF810 + .word FUN_020BF7C8 + .word FUN_020BF6C8 + .word FUN_020BF5E8 + .word FUN_020BF598 + .word FUN_020BF574 + + .global UNK_021067F0 +UNK_021067F0: ; 0x021067F0 + .word FUN_020BFFD4 + .word FUN_020BFEEC + .word FUN_020BFE68 + .word FUN_020BFE0C + .word FUN_020BFD38 + .word FUN_020BFC8C + .word FUN_020BFC4C + .word FUN_020BFC28 + .bss .global UNK_021CA86C @@ -423,6 +1812,402 @@ UNK_021CCD4C: ; 0x021CCD4C UNK_021CCD58: ; 0x021CCD58 .space 0x14 + .global UNK_021CCD6C +UNK_021CCD6C: ; 0x021CCD6C + .space 0x4 + + .global UNK_021CCD70 +UNK_021CCD70: ; 0x021CCD70 + .space 0x4 + + .global UNK_021CCD74 +UNK_021CCD74: ; 0x021CCD74 + .space 0x14 + + .global UNK_021CCD88 +UNK_021CCD88: ; 0x021CCD88 + .space 0x4 + + .global UNK_021CCD8C +UNK_021CCD8C: ; 0x021CCD8C + .space 0x10 + + .global UNK_021CCD9C +UNK_021CCD9C: ; 0x021CCD9C + .space 0x4 + + .global UNK_021CCDA0 +UNK_021CCDA0: ; 0x021CCDA0 + .space 0x100 + + .global UNK_021CCEA0 +UNK_021CCEA0: ; 0x021CCEA0 + .space 0x400 + + .global UNK_021CD2A0 +UNK_021CD2A0: ; 0x021CD2A0 + .space 0x40 + + .global UNK_021CD2E0 +UNK_021CD2E0: ; 0x021CD2E0 + .space 0x100 + + .global UNK_021CD3E0 +UNK_021CD3E0: ; 0x021CD3E0 + .space 0x400 + + .global UNK_021CD7E0 +UNK_021CD7E0: ; 0x021CD7E0 + .space 0x40 + + .global UNK_021CD820 +UNK_021CD820: ; 0x021CD820 + .space 0x100 + + .global UNK_021CD920 +UNK_021CD920: ; 0x021CD920 + .space 0x400 + + .global UNK_021CDD20 +UNK_021CDD20: ; 0x021CDD20 + .space 0x40 + + .global UNK_021CDD60 +UNK_021CDD60: ; 0x021CDD60 + .space 0x4 + + .global UNK_021CDD64 +UNK_021CDD64: ; 0x021CDD64 + .space 0x4 + + .global UNK_021CDD68 +UNK_021CDD68: ; 0x021CDD68 + .space 0x4 + + .global UNK_021CDD6C +UNK_021CDD6C: ; 0x021CDD6C + .space 0x4 + + .global UNK_021CDD70 +UNK_021CDD70: ; 0x021CDD70 + .space 0x4 + + .global UNK_021CDD74 +UNK_021CDD74: ; 0x021CDD74 + .space 0x80 + + .global UNK_021CDDF4 +UNK_021CDDF4: ; 0x021CDDF4 + .space 0x4 + + .global UNK_021CDDF8 +UNK_021CDDF8: ; 0x021CDDF8 + .space 0xfc + + .global UNK_021CDEF4 +UNK_021CDEF4: ; 0x021CDEF4 + .space 0x10 + + .global UNK_021CDF04 +UNK_021CDF04: ; 0x021CDF04 + .space 0x4 + + .global UNK_021CDF08 +UNK_021CDF08: ; 0x021CDF08 + .space 0x2ec + + .global UNK_021CE1F4 +UNK_021CE1F4: ; 0x021CE1F4 + .space 0x300 + + .global UNK_021CE4F4 +UNK_021CE4F4: ; 0x021CE4F4 + .space 0x400 + + .global UNK_021CE8F4 +UNK_021CE8F4: ; 0x021CE8F4 + .space 0x4 + + .global UNK_021CE8F8 +UNK_021CE8F8: ; 0x021CE8F8 + .space 0x404 + + .global UNK_021CECFC +UNK_021CECFC: ; 0x021CECFC + .space 0x4 + + .global UNK_021CED00 +UNK_021CED00: ; 0x021CED00 + .space 0x4 + + .global UNK_021CED04 +UNK_021CED04: ; 0x021CED04 + .space 0x4 + + .global UNK_021CED08 +UNK_021CED08: ; 0x021CED08 + .space 0x4 + + .global UNK_021CED0C +UNK_021CED0C: ; 0x021CED0C + .space 0x4 + + .global UNK_021CED10 +UNK_021CED10: ; 0x021CED10 + .space 0x4 + + .global UNK_021CED14 +UNK_021CED14: ; 0x021CED14 + .space 0x4 + + .global UNK_021CED18 +UNK_021CED18: ; 0x021CED18 + .space 0x8 + + .global UNK_021CED20 +UNK_021CED20: ; 0x021CED20 + .space 0x44 + + .global UNK_021CED64 +UNK_021CED64: ; 0x021CED64 + .space 0x34 + + .global UNK_021CED98 +UNK_021CED98: ; 0x021CED98 + .space 0x28 + + .global UNK_021CEDC0 +UNK_021CEDC0: ; 0x021CEDC0 + .space 0x14 + + .global UNK_021CEDD4 +UNK_021CEDD4: ; 0x021CEDD4 + .space 0x24 + + .global UNK_021CEDF8 +UNK_021CEDF8: ; 0x021CEDF8 + .space 0xc + + .global UNK_021CEE04 +UNK_021CEE04: ; 0x021CEE04 + .space 0x14 + + .global UNK_021CEE18 +UNK_021CEE18: ; 0x021CEE18 + .space 0x30 + + .global UNK_021CEE48 +UNK_021CEE48: ; 0x021CEE48 + .space 0x30 + + .global UNK_021CEE78 +UNK_021CEE78: ; 0x021CEE78 + .space 0xe0 + + .global UNK_021CEF58 +UNK_021CEF58: ; 0x021CEF58 + .space 0xc + + .global UNK_021CEF64 +UNK_021CEF64: ; 0x021CEF64 + .space 0xc + + .global UNK_021CEF70 +UNK_021CEF70: ; 0x021CEF70 + .space 0xc + + .global UNK_021CEF7C +UNK_021CEF7C: ; 0x021CEF7C + .space 0x4 + + .global UNK_021CEF80 +UNK_021CEF80: ; 0x021CEF80 + .space 0xe00 + + .global UNK_021CFD80 +UNK_021CFD80: ; 0x021CFD80 + .space 0x4 + + .global UNK_021CFD84 +UNK_021CFD84: ; 0x021CFD84 + .space 0x4 + + .global UNK_021CFD88 +UNK_021CFD88: ; 0x021CFD88 + .space 0x4 + + .global UNK_021CFD8C +UNK_021CFD8C: ; 0x021CFD8C + .space 0x4 + + .global UNK_021CFD90 +UNK_021CFD90: ; 0x021CFD90 + .space 0x4 + + .global UNK_021CFD94 +UNK_021CFD94: ; 0x021CFD94 + .space 0x2ba + + .global UNK_021D004E +UNK_021D004E: ; 0x021D004E + .space 0x332 + + .global UNK_021D0380 +UNK_021D0380: ; 0x021D0380 + .space 0x40 + + .global UNK_021D03C0 +UNK_021D03C0: ; 0x021D03C0 + .space 0xb42 + + .global UNK_021D0F02 +UNK_021D0F02: ; 0x021D0F02 + .space 0xd7e + + .global UNK_021D1C80 +UNK_021D1C80: ; 0x021D1C80 + .space 0x4 + + .global UNK_021D1C84 +UNK_021D1C84: ; 0x021D1C84 + .space 0x4 + + .global UNK_021D1C88 +UNK_021D1C88: ; 0x021D1C88 + .space 0x4 + + .global UNK_021D1C8C +UNK_021D1C8C: ; 0x021D1C8C + .space 0x4 + + .global UNK_021D1C90 +UNK_021D1C90: ; 0x021D1C90 + .space 0x4 + + .global UNK_021D1C94 +UNK_021D1C94: ; 0x021D1C94 + .space 0x4 + + .global UNK_021D1C98 +UNK_021D1C98: ; 0x021D1C98 + .space 0xc + + .global UNK_021D1CA4 +UNK_021D1CA4: ; 0x021D1CA4 + .space 0xc + + .global UNK_021D1CB0 +UNK_021D1CB0: ; 0x021D1CB0 + .space 0x4 + + .global UNK_021D1CB4 +UNK_021D1CB4: ; 0x021D1CB4 + .space 0x4 + + .global UNK_021D1CB8 +UNK_021D1CB8: ; 0x021D1CB8 + .space 0x4 + + .global UNK_021D1CBC +UNK_021D1CBC: ; 0x021D1CBC + .space 0x140 + + .global UNK_021D1DFC +UNK_021D1DFC: ; 0x021D1DFC + .space 0xc + + .global UNK_021D1E08 +UNK_021D1E08: ; 0x021D1E08 + .space 0xc + + .global UNK_021D1E14 +UNK_021D1E14: ; 0x021D1E14 + .space 0x440 + + .global UNK_021D2254 +UNK_021D2254: ; 0x021D2254 + .space 0x8 + + .global UNK_021D225C +UNK_021D225C: ; 0x021D225C + .space 0x10 + + .global UNK_021D226C +UNK_021D226C: ; 0x021D226C + .space 0x4 + + .global UNK_021D2270 +UNK_021D2270: ; 0x021D2270 + .space 0x4 + + .global UNK_021D2274 +UNK_021D2274: ; 0x021D2274 + .space 0x460 + + .global UNK_021D26D4 +UNK_021D26D4: ; 0x021D26D4 + .space 0x4 + + .global UNK_021D26D8 +UNK_021D26D8: ; 0x021D26D8 + .space 0xc + + .global UNK_021D26E4 +UNK_021D26E4: ; 0x021D26E4 + .space 0x40 + + .global UNK_021D2724 +UNK_021D2724: ; 0x021D2724 + .space 0x80 + + .global UNK_021D27A4 +UNK_021D27A4: ; 0x021D27A4 + .space 0x4 + + .global UNK_021D27A8 +UNK_021D27A8: ; 0x021D27A8 + .space 0x4 + + .global UNK_021D27AC +UNK_021D27AC: ; 0x021D27AC + .space 0x20 + + .global UNK_021D27CC +UNK_021D27CC: ; 0x021D27CC + .space 0x54 + + .global UNK_021D2820 +UNK_021D2820: ; 0x021D2820 + .space 0xa0 + + .global UNK_021D28C0 +UNK_021D28C0: ; 0x021D28C0 + .space 0x4 + + .global UNK_021D28C4 +UNK_021D28C4: ; 0x021D28C4 + .space 0x3c + + .global UNK_021D2900 +UNK_021D2900: ; 0x021D2900 + .space 0x4 + + .global UNK_021D2904 +UNK_021D2904: ; 0x021D2904 + .space 0x4d4 + + .global UNK_021D2DD8 +UNK_021D2DD8: ; 0x021D2DD8 + .space 0x18 + + .global UNK_021D2DF0 +UNK_021D2DF0: ; 0x021D2DF0 + .space 0xc + + .global UNK_021D2DFC +UNK_021D2DFC: ; 0x021D2DFC + .space 0x5c0 + .text arm_func_start FUN_020A5A4C @@ -9867,8 +11652,6 @@ _020ADA78: .word _SDK_AbiossolibVCT _020ADA7C: .word UNK_021CCD1C _020ADA80: .word UNK_021CCD20 - ; unknown - arm_func_start FUN_020ADA84 FUN_020ADA84: ; 0x020ADA84 cmp r1, #0x0 @@ -11556,3 +13339,24499 @@ FUN_020AEFF0: ; 0x020AEFF0 ldmia sp!, {r4-r5,pc} .balign 4 _020AF02C: .word UNK_020FF7D4 + + arm_func_start GXS_LoadOBJ_2 +GXS_LoadOBJ_2: + ldr ip, _020AF038 ; =GXS_LoadOBJ + bx r12 + .balign 4 +_020AF038: .word GXS_LoadOBJ + + arm_func_start GXS_LoadOAM_2 +GXS_LoadOAM_2: ; 0x020AF03C + ldr ip, _020AF044 ; =GXS_LoadOAM + bx r12 + .balign 4 +_020AF044: .word GXS_LoadOAM + + arm_func_start FUN_020AF048 +FUN_020AF048: ; 0x020AF048 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadBGExtPltt + bl GXS_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF074 +FUN_020AF074: ; 0x020AF074 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GXS_LoadBGPltt_2 +GXS_LoadBGPltt_2: ; 0x020AF0A0 + ldr ip, _020AF0A8 ; =GXS_LoadBGPltt + bx r12 + .balign 4 +_020AF0A8: .word GXS_LoadBGPltt + + arm_func_start GXS_LoadOBJPltt_2 +GXS_LoadOBJPltt_2: ; 0x020AF0AC + ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt + bx r12 + .balign 4 +_020AF0B4: .word GXS_LoadOBJPltt + + arm_func_start GXS_LoadBG3Scr_3 +GXS_LoadBG3Scr_3: ; 0x020AF0B8 + ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0C0: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_3 +GXS_LoadBG2Scr_3: ; 0x020AF0C4 + ldr ip, _020AF0CC ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0CC: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG3Scr_2 +GXS_LoadBG3Scr_2: ; 0x020AF0D0 + ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0D8: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_2 +GXS_LoadBG2Scr_2: ; 0x020AF0DC + ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0E4: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG1Scr_2 +GXS_LoadBG1Scr_2: ; 0x020AF0E8 + ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr + bx r12 + .balign 4 +_020AF0F0: .word GXS_LoadBG1Scr + + arm_func_start GXS_LoadBG0Scr_2 +GXS_LoadBG0Scr_2: ; 0x020AF0F4 + ldr ip, _020AF0FC ; =GXS_LoadBG0Scr + bx r12 + .balign 4 +_020AF0FC: .word GXS_LoadBG0Scr + + arm_func_start GXS_LoadBG3Char_2 +GXS_LoadBG3Char_2: ; 0x020AF100 + ldr ip, _020AF108 ; =GXS_LoadBG3Char + bx r12 + .balign 4 +_020AF108: .word GXS_LoadBG3Char + + arm_func_start GXS_LoadBG2Char_2 +GXS_LoadBG2Char_2: ; 0x020AF10C + ldr ip, _020AF114 ; =GXS_LoadBG2Char + bx r12 + .balign 4 +_020AF114: .word GXS_LoadBG2Char + + arm_func_start GXS_LoadBG1Char_2 +GXS_LoadBG1Char_2: ; 0x020AF118 + ldr ip, _020AF120 ; =GXS_LoadBG1Char + bx r12 + .balign 4 +_020AF120: .word GXS_LoadBG1Char + + arm_func_start GXS_LoadBG0Char_2 +GXS_LoadBG0Char_2: ; 0x020AF124 + ldr ip, _020AF12C ; =GXS_LoadBG0Char + bx r12 + .balign 4 +_020AF12C: .word GXS_LoadBG0Char + + arm_func_start GX_LoadOBJ_2 +GX_LoadOBJ_2: ; 0x020AF130 + ldr ip, _020AF138 ; =GX_LoadOBJ + bx r12 + .balign 4 +_020AF138: .word GX_LoadOBJ + + arm_func_start GX_LoadOAM_2 +GX_LoadOAM_2: ; 0x020AF13C + ldr ip, _020AF144 ; =GX_LoadOAM + bx r12 + .balign 4 +_020AF144: .word GX_LoadOAM + + arm_func_start FUN_020AF148 +FUN_020AF148: ; 0x020AF148 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF174 +FUN_020AF174: ; 0x020AF174 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GX_LoadBGPltt_2 +GX_LoadBGPltt_2: ; 0x020AF1A0 + ldr ip, _020AF1A8 ; =GX_LoadBGPltt + bx r12 + .balign 4 +_020AF1A8: .word GX_LoadBGPltt + + arm_func_start GX_LoadOBJPltt_2 +GX_LoadOBJPltt_2: ; 0x020AF1AC + ldr ip, _020AF1B4 ; =GX_LoadOBJPltt + bx r12 + .balign 4 +_020AF1B4: .word GX_LoadOBJPltt + + arm_func_start GX_LoadBG3Scr_3 +GX_LoadBG3Scr_3: ; 0x020AF1B8 + ldr ip, _020AF1C0 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1C0: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_3 +GX_LoadBG2Scr_3: ; 0x020AF1C4 + ldr ip, _020AF1CC ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1CC: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG3Scr_2 +GX_LoadBG3Scr_2: ; 0x020AF1D0 + ldr ip, _020AF1D8 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1D8: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_2 +GX_LoadBG2Scr_2: ; 0x020AF1DC + ldr ip, _020AF1E4 ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1E4: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG1Scr_2 +GX_LoadBG1Scr_2: ; 0x020AF1E8 + ldr ip, _020AF1F0 ; =GX_LoadBG1Scr + bx r12 + .balign 4 +_020AF1F0: .word GX_LoadBG1Scr + + arm_func_start GX_LoadBG0Scr_2 +GX_LoadBG0Scr_2: ; 0x020AF1F4 + ldr ip, _020AF1FC ; =GX_LoadBG0Scr + bx r12 + .balign 4 +_020AF1FC: .word GX_LoadBG0Scr + + arm_func_start GX_LoadBG3Char_2 +GX_LoadBG3Char_2: ; 0x020AF200 + ldr ip, _020AF208 ; =GX_LoadBG3Char + bx r12 + .balign 4 +_020AF208: .word GX_LoadBG3Char + + arm_func_start GX_LoadBG2Char_2 +GX_LoadBG2Char_2: ; 0x020AF20C + ldr ip, _020AF214 ; =GX_LoadBG2Char + bx r12 + .balign 4 +_020AF214: .word GX_LoadBG2Char + + arm_func_start GX_LoadBG1Char_2 +GX_LoadBG1Char_2: ; 0x020AF218 + ldr ip, _020AF220 ; =GX_LoadBG1Char + bx r12 + .balign 4 +_020AF220: .word GX_LoadBG1Char + + arm_func_start GX_LoadBG0Char_2 +GX_LoadBG0Char_2: ; 0x020AF224 + ldr ip, _020AF22C ; =GX_LoadBG0Char + bx r12 + .balign 4 +_020AF22C: .word GX_LoadBG0Char + + arm_func_start FUN_020AF230 +FUN_020AF230: ; 0x020AF230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageDepth + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF25C +FUN_020AF25C: ; 0x020AF25C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageColor + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF288 +FUN_020AF288: ; 0x020AF288 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTexPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2B4 +FUN_020AF2B4: ; 0x020AF2B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTex + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTex + bl GX_EndLoadTex + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2E0 +FUN_020AF2E0: ; 0x020AF2E0 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF2F4 +FUN_020AF2F4: ; 0x020AF2F4 + ldrh r1, [r0, #0xc] + ldr r0, [r0, #0x4] + cmp r1, r0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF30C +FUN_020AF30C: ; 0x020AF30C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + add r0, r1, #0x1 + ldr r1, [r2, #0x4] + bl _u32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF334 +FUN_020AF334: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + add r3, r2, r3 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r3, [sp, #0x4] + str r3, [sp, #0xc] + ldr r3, [r0, #0x0] + add r12, sp, #0x0 + cmp r3, #0x0 + beq _020AF418 + mov r6, #0x0 +_020AF364: + ldr r5, [r3, #0x0] + ldr r4, [r12, #0x4] + ldr r2, [r3, #0xc] + cmp r5, r4 + bne _020AF3B8 + ldr r4, [r3, #0x4] + add r4, r5, r4 + str r4, [sp, #0xc] + ldr r4, [r3, #0x8] + cmp r4, #0x0 + strne r2, [r4, #0xc] + streq r2, [r0, #0x0] + cmp r2, #0x0 + strne r4, [r2, #0x8] + ldr r4, [r1, #0x0] + cmp r4, #0x0 + strne r3, [r4, #0x8] + ldr r4, [r1, #0x0] + str r4, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF3B8: + ldr r5, [r3, #0x0] + ldr lr, [r3, #0x4] + ldr r4, [r12, #0x0] + add lr, r5, lr + cmp r4, lr + bne _020AF40C + str r5, [sp, #0x8] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + cmp r5, #0x0 + strne r4, [r5, #0xc] + streq r4, [r0, #0x0] + cmp r4, #0x0 + strne r5, [r4, #0x8] + ldr lr, [r1, #0x0] + cmp lr, #0x0 + strne r3, [lr, #0x8] + ldr lr, [r1, #0x0] + str lr, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF40C: + mov r3, r2 + cmp r2, #0x0 + bne _020AF364 +_020AF418: + ldr r4, [r1, #0x0] + cmp r4, #0x0 + ldrne r2, [r4, #0xc] + strne r2, [r1, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [sp, #0x8] + mov r1, #0x0 + str r2, [r4, #0x0] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + sub r2, r3, r2 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + strne r4, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [r4, #0xc] + str r1, [r4, #0x8] + str r4, [r0, #0x0] + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF488 +FUN_020AF488: + stmdb sp!, {r4-r10,lr} + ldr r4, [r0, #0x0] + ldr r9, [sp, #0x20] + cmp r4, #0x0 + mov r5, #0x0 + beq _020AF4EC + sub r12, r9, #0x1 + mvn lr, r12 +_020AF4A8: + cmp r9, #0x1 + ldrls r8, [r4, #0x0] + movls r6, r5 + movls r7, r3 + bls _020AF4D0 + ldr r7, [r4, #0x0] + add r6, r7, r12 + and r8, lr, r6 + sub r6, r8, r7 + add r7, r3, r6 +_020AF4D0: + ldr r10, [r4, #0x4] + cmp r10, r7 + movcs r5, r4 + bhs _020AF4EC + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020AF4A8 +_020AF4EC: + cmp r5, #0x0 + beq _020AF5B8 + cmp r6, #0x0 + beq _020AF54C + ldr r9, [r1, #0x0] + cmp r9, #0x0 + ldrne r3, [r9, #0xc] + strne r3, [r1, #0x0] + cmp r9, #0x0 + beq _020AF5B8 + ldr r4, [r5, #0x0] + mov r3, #0x0 + str r4, [r9, #0x0] + str r6, [r9, #0x4] + str r3, [r9, #0x8] + str r3, [r9, #0xc] + ldr r3, [r0, #0x0] + cmp r3, #0x0 + strne r9, [r3, #0x8] + ldr r4, [r0, #0x0] + mov r3, #0x0 + str r4, [r9, #0xc] + str r3, [r9, #0x8] + str r9, [r0, #0x0] +_020AF54C: + ldr r3, [r5, #0x4] + sub r3, r3, r7 + str r3, [r5, #0x4] + ldr r3, [r5, #0x0] + add r3, r3, r7 + str r3, [r5, #0x0] + ldr r3, [r5, #0x4] + cmp r3, #0x0 + bne _020AF5AC + ldr r4, [r5, #0x8] + ldr r3, [r5, #0xc] + cmp r4, #0x0 + strne r3, [r4, #0xc] + streq r3, [r0, #0x0] + cmp r3, #0x0 + strne r4, [r3, #0x8] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + strne r5, [r0, #0x8] + ldr r3, [r1, #0x0] + mov r0, #0x0 + str r3, [r5, #0xc] + str r0, [r5, #0x8] + str r5, [r1, #0x0] +_020AF5AC: + str r8, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r10,pc} +_020AF5B8: + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020AF5C4 +FUN_020AF5C4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [sp, #0x0] + bl FUN_020AF488 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF5E0 +FUN_020AF5E0: ; 0x020AF5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x0] + cmp lr, #0x0 + ldrne r12, [lr, #0xc] + strne r12, [r1, #0x0] + cmp lr, #0x0 + beq _020AF640 + str r2, [lr, #0x0] + str r3, [lr, #0x4] + mov r1, #0x0 + str r1, [lr, #0x8] + str r1, [lr, #0xc] + ldr r1, [r0, #0x0] + add sp, sp, #0x4 + cmp r1, #0x0 + strne lr, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [lr, #0xc] + str r1, [lr, #0x8] + str lr, [r0, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020AF640: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF64C +FUN_020AF64C: ; 0x020AF64C + stmdb sp!, {r4,lr} + subs lr, r1, #0x1 + mov r2, #0x0 + beq _020AF684 + mov r4, r0 +_020AF660: + add r12, r2, #0x1 + add r2, r0, r2, lsl #0x4 + add r3, r0, r12, lsl #0x4 + str r3, [r2, #0xc] + str r4, [r3, #0x8] + mov r2, r12 + cmp r12, lr + add r4, r4, #0x10 + blo _020AF660 +_020AF684: + mov r2, #0x0 + str r2, [r0, #0x8] + add r1, r0, r1, lsl #0x4 + str r2, [r1, #-0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AF698 +FUN_020AF698: ; 0x020AF698 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020AF6A4 +FUN_020AF6A4: ; 0x020AF6A4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + ldr r6, _020AF884 ; =UNK_020FF864 + add r5, sp, #0x0 + ldmia r6!, {r0-r3} + mov r12, r5 + stmia r5!, {r0-r3} + ldmia r6!, {r0-r3} + stmia r5!, {r0-r3} + ldr r4, _020AF888 ; =UNK_021CCD6C + ldmia r6, {r0-r3} + stmia r5, {r0-r3} + ldr lr, [r4, #0x10] + ldr r1, [r4, #0xc] + add r0, lr, lr, lsr #0x1 + mov r4, lr, lsr #0x1 + sub r0, r1, r0 + mov r3, #0x0 +_020AF6EC: + cmp r3, #0x0 + beq _020AF6FC + cmp r3, #0x2 + bne _020AF734 +_020AF6FC: + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _020AF734 + cmp lr, #0x0 + beq _020AF734 + ldr r1, [r12, #0x8] + cmp r2, lr + movhi r2, lr + add r1, r1, r2 + str r1, [r12, #0x8] + ldr r1, [r12, #0x0] + sub lr, lr, r2 + sub r1, r1, r2 + str r1, [r12, #0x0] +_020AF734: + add r3, r3, #0x1 + cmp r3, #0x4 + add r12, r12, #0xc + blo _020AF6EC + ldr r1, [sp, #0xc] + add r5, sp, #0x0 + sub r1, r1, r4 + str r1, [sp, #0xc] + mov r3, #0x0 +_020AF758: + ldr r2, [r5, #0x0] + cmp r2, #0x0 + beq _020AF790 + cmp r0, #0x0 + beq _020AF790 + ldr r1, [r5, #0x4] + cmp r2, r0 + movhi r2, r0 + add r1, r1, r2 + str r1, [r5, #0x4] + ldr r1, [r5, #0x0] + sub r0, r0, r2 + sub r1, r1, r2 + str r1, [r5, #0x0] +_020AF790: + add r3, r3, #0x1 + cmp r3, #0x4 + add r5, r5, #0xc + blo _020AF758 + ldr r0, _020AF888 ; =UNK_021CCD6C + bl FUN_020AF698 + ldr r0, _020AF88C ; =UNK_021CCD70 + bl FUN_020AF698 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r3, [sp, #0x8] + ldr r1, _020AF888 ; =UNK_021CCD6C + cmp r3, #0x0 + str r0, [r1, #0x8] + beq _020AF7E8 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x0 + bl FUN_020AF5E0 +_020AF7E8: + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x8] + cmp r3, #0x0 + beq _020AF804 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF804: + ldr r3, [sp, #0x20] + cmp r3, #0x0 + beq _020AF820 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x40000 + bl FUN_020AF5E0 +_020AF820: + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r3, #0x0 + add r2, r0, #0x40000 + beq _020AF840 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF840: + ldr r3, [sp, #0x28] + cmp r3, #0x0 + beq _020AF85C + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x60000 + bl FUN_020AF5E0 +_020AF85C: + ldr r3, [sp, #0x10] + cmp r3, #0x0 + addeq sp, sp, #0x30 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + add r2, r4, #0x20000 + bl FUN_020AF5E0 + add sp, sp, #0x30 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AF884: .word UNK_020FF864 +_020AF888: .word UNK_021CCD6C +_020AF88C: .word UNK_021CCD70 +_020AF890: .word UNK_021CCD74 + + arm_func_start FUN_020AF894 +FUN_020AF894: ; 0x020AF894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020AF908 ; =0x7FFF0000 + ldr r1, _020AF90C ; =0x0000FFFF + and r2, r0, r2 + and r3, r0, r1 + mov r1, r2, lsr #0x10 + and r0, r0, #0x80000000 + mov r2, r3, lsl #0x3 + movs r3, r1, lsl #0x4 + mov r0, r0, lsr #0x1f + beq _020AF8FC + cmp r0, #0x0 + beq _020AF8DC + ldr r0, _020AF910 ; =UNK_021CCD70 + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 + b _020AF8E8 +_020AF8DC: + ldr r0, _020AF918 ; =UNK_021CCD6C + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 +_020AF8E8: + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x4 + moveq r0, #0x1 + ldmia sp!, {pc} +_020AF8FC: + mov r0, #0x2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AF908: .word 0x7FFF0000 +_020AF90C: .word 0x0000FFFF +_020AF910: .word UNK_021CCD70 +_020AF914: .word UNK_021CCD74 +_020AF918: .word UNK_021CCD6C + + arm_func_start FUN_020AF91C +FUN_020AF91C: ; 0x020AF91C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + moveq r5, #0x10 + addne r0, r0, #0xf + bicne r5, r0, #0xf + ldr r0, _020AF9B0 ; =0x0007FFF0 + mov r4, r1 + cmp r5, r0 + addcs sp, sp, #0x4 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} + cmp r4, #0x0 + beq _020AF96C + ldr r0, _020AF9B4 ; =UNK_021CCD70 + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 + b _020AF980 +_020AF96C: + ldr r0, _020AF9BC ; =UNK_021CCD6C + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 +_020AF980: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r1, [sp, #0x0] + ldr r0, _020AF9C0 ; =0x0000FFFF + mov r2, r5, lsr #0x4 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r4, lsl #0x1f + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF9B0: .word 0x0007FFF0 +_020AF9B4: .word UNK_021CCD70 +_020AF9B8: .word UNK_021CCD74 +_020AF9BC: .word UNK_021CCD6C +_020AF9C0: .word 0x0000FFFF + + arm_func_start FUN_020AF9C4 +FUN_020AF9C4: ; 0x020AF9C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020AFA14 ; =UNK_021CCD6C + str r0, [r12, #0xc] + str r1, [r12, #0x10] + str r2, [r12, #0x14] + str r3, [r12, #0x18] + bl FUN_020AF6A4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r3, _020AFA18 ; =FUN_020AF91C + ldr r1, _020AFA1C ; =UNK_021064B8 + ldr r2, _020AFA20 ; =FUN_020AF894 + ldr r0, _020AFA24 ; =UNK_021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA14: .word UNK_021CCD6C +_020AFA18: .word FUN_020AF91C +_020AFA1C: .word UNK_021064B8 +_020AFA20: .word FUN_020AF894 +_020AFA24: .word UNK_021064BC + + arm_func_start FUN_020AFA28 +FUN_020AFA28: ; 0x020AFA28 + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFA30 +FUN_020AFA30: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r1, _020AFA78 ; =UNK_021CCD88 + str r0, [r1, #0x4] + mov r0, r1 + bl FUN_020AF698 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, _020AFA7C ; =UNK_021CCD8C + ldr r3, [r0, #0x8] + mov r2, #0x0 + bl FUN_020AF5E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA78: .word UNK_021CCD88 +_020AFA7C: .word UNK_021CCD8C + + arm_func_start FUN_020AFA80 +FUN_020AFA80: ; 0x020AFA80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, #0x10000 + rsb r2, r1, #0x0 + ldr r1, _020AFAC8 ; =0x0000FFFF + and r2, r0, r2 + and r12, r0, r1 + mov r3, r2, lsr #0x10 + ldr r0, _020AFACC ; =UNK_021CCD88 + ldr r1, _020AFAD0 ; =UNK_021CCD8C + mov r2, r12, lsl #0x3 + mov r3, r3, lsl #0x3 + bl FUN_020AF334 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFAC8: .word 0x0000FFFF +_020AFACC: .word UNK_021CCD88 +_020AFAD0: .word UNK_021CCD8C + + arm_func_start FUN_020AFAD4 +FUN_020AFAD4: ; 0x020AFAD4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + cmp r0, #0x0 + moveq r4, #0x8 + addne r0, r0, #0x7 + bicne r4, r0, #0x7 + ldr r0, _020AFB98 ; =0x0007FFF8 + cmp r4, r0 + addcs sp, sp, #0x8 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r1, #0x0 + beq _020AFB50 + mov r12, #0x8 + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 + ldr r2, [sp, #0x4] + add r1, r2, r4 + cmp r1, #0x10000 + bls _020AFB6C + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + mov r3, r4 + bl FUN_020AF334 + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AFB50: + ldr r0, _020AFB9C ; =UNK_021CCD88 + mov r12, #0x10 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 +_020AFB6C: + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [sp, #0x4] + ldr r0, _020AFBA4 ; =0x0000FFFF + mov r2, r4, lsr #0x3 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AFB98: .word 0x0007FFF8 +_020AFB9C: .word UNK_021CCD88 +_020AFBA0: .word UNK_021CCD8C +_020AFBA4: .word 0x0000FFFF + + arm_func_start FUN_020AFBA8 +FUN_020AFBA8: ; 0x020AFBA8 + stmdb sp!, {r4,lr} + ldr ip, _020AFBE8 ; =UNK_021CCD88 + mov r4, r3 + str r0, [r12, #0x8] + str r1, [r12, #0xc] + str r2, [r12, #0x10] + bl FUN_020AFA30 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AFBEC ; =FUN_020AFAD4 + ldr r1, _020AFBF0 ; =UNK_021064C0 + ldr r2, _020AFBF4 ; =FUN_020AFA80 + ldr r0, _020AFBF8 ; =UNK_021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AFBE8: .word UNK_021CCD88 +_020AFBEC: .word FUN_020AFAD4 +_020AFBF0: .word UNK_021064C0 +_020AFBF4: .word FUN_020AFA80 +_020AFBF8: .word UNK_021064C4 + + arm_func_start FUN_020AFBFC +FUN_020AFBFC: ; 0x020AFBFC + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFC04 +FUN_020AFC04: ; 0x020AFC04 + ldrh r2, [r0, #0x0] + cmp r2, r1 + ldrhi r0, [r0, #0x4] + addhi r0, r0, r1, lsl #0x4 + movls r0, #0x0 + bx lr + + arm_func_start FUN_020AFC1C +FUN_020AFC1C: ; 0x020AFC1C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x4] + mov r6, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + ldrh r1, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + cmp r1, #0x0 + ldr r12, [r0, #0xc] + bls _020AFCCC + mov r1, r6 +_020AFC68: + add r2, r4, r6, lsl #0x4 + ldr r5, [r2, #0xc] + mov r3, r6, lsl #0x4 + add r5, lr, r5 + str r5, [r2, #0xc] + ldrh r7, [r4, r3] + mov r5, r1 + cmp r7, #0x0 + bls _020AFCB4 +_020AFC8C: + ldr r9, [r2, #0xc] + add r7, r5, #0x1 + ldr r8, [r9, r5, lsl #0x3] + mov r7, r7, lsl #0x10 + add r8, r12, r8 + str r8, [r9, r5, lsl #0x3] + ldrh r8, [r4, r3] + mov r5, r7, lsr #0x10 + cmp r5, r8 + blo _020AFC8C +_020AFCB4: + add r2, r6, #0x1 + mov r2, r2, lsl #0x10 + ldrh r3, [r0, #0x0] + mov r6, r2, lsr #0x10 + cmp r6, r3 + blo _020AFC68 +_020AFCCC: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + add r1, r1, r0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + mov r12, #0x0 + add r2, r1, #0x8 + ldr r0, [r2, #0x4] + add r0, r0, r2 + str r0, [r2, #0x4] + ldrh r0, [r1, #0x8] + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r0, r12 + mov r6, r12 +_020AFD14: + ldr r5, [r2, #0x4] + mov r3, r6 + add r1, r5, r0 + ldr r4, [r1, #0x4] + add r4, r4, r2 + str r4, [r1, #0x4] + ldr r4, [r1, #0x8] + add r4, r4, r2 + str r4, [r1, #0x8] + ldrh r4, [r5, r0] + cmp r4, #0x0 + bls _020AFD6C + mov r7, r6 +_020AFD48: + ldr r5, [r1, #0x8] + add r3, r3, #0x1 + ldr r4, [r5, r7] + add r4, r4, r2 + str r4, [r5, r7] + ldrh r4, [r1, #0x0] + add r7, r7, #0x4 + cmp r3, r4 + blo _020AFD48 +_020AFD6C: + ldrh r1, [r2, #0x0] + add r12, r12, #0x1 + add r0, r0, #0xc + cmp r12, r1 + blo _020AFD14 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start thunk_FUN_020afda0 +thunk_FUN_020afda0: ; 0x020AFD88 + ldr ip, _020AFD90 ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD90: .word FUN_020AFDA0 + + arm_func_start thunk_FUN_020afda0_2 +thunk_FUN_020afda0_2: ; 0x020AFD94 + ldr ip, _020AFD9C ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD9C: .word FUN_020AFDA0 + + arm_func_start FUN_020AFDA0 +FUN_020AFDA0: ; 0x020AFDA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFDE4 ; =0x41424E4B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFC1C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFDE4: .word 0x41424E4B + + arm_func_start FUN_020AFDE8 +FUN_020AFDE8: ; 0x020AFDE8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r1, [r5, #0x4] + add r1, r1, r5 + str r1, [r5, #0x4] + bl FUN_020AFF10 + ldrh r1, [r5, #0x0] + mov r4, r0 + mov r6, #0x0 + cmp r1, #0x0 + bls _020AFE44 +_020AFE14: + mov r0, r5 + mov r1, r6 + bl FUN_020AFE8C + ldr r2, [r0, #0x4] + add r1, r6, #0x1 + add r2, r2, r4 + str r2, [r0, #0x4] + mov r0, r1, lsl #0x10 + ldrh r1, [r5, #0x0] + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020AFE14 +_020AFE44: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _020AFE6C + add r0, r0, r5 + str r0, [r5, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r1, #0x4] + add r0, r0, r1 + str r0, [r1, #0x4] + str r1, [r5, #0xc] +_020AFE6C: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r0, r5 + str r0, [r5, #0x14] + ldr r0, [r5, #0x14] + bl FUN_020AFF00 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AFE8C +FUN_020AFE8C: ; 0x020AFE8C + ldrh r2, [r0, #0x0] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + ldrh r2, [r0, #0x2] + ands r2, r2, #0x1 + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFEB8 +FUN_020AFEB8: ; 0x020AFEB8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFEFC ; =0x4345424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFDE8 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFEFC: .word 0x4345424B + + arm_func_start FUN_020AFF00 +FUN_020AFF00: ; 0x020AFF00 + ldr ip, _020AFF0C ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFF0C: .word FUN_020B01B0 + + arm_func_start FUN_020AFF10 +FUN_020AFF10: ; 0x020AFF10 + ldrh r1, [r0, #0x2] + ands r1, r1, #0x1 + ldrneh r1, [r0, #0x0] + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreqh r1, [r0, #0x0] + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFF34 +FUN_020AFF34: ; 0x020AFF34 + ldrh r2, [r0, #0x0] + cmp r1, r2 + ldrcc r0, [r0, #0x4] + addcc r0, r0, r1, lsl #0x3 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020AFF4C +FUN_020AFF4C: ; 0x020AFF4C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + mov r4, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldrh r1, [r0, #0x0] + ldr lr, [r0, #0x4] + cmp r1, #0x0 + bls _020AFFA8 +_020AFF7C: + add r3, lr, r4, lsl #0x3 + ldr r12, [r0, #0x8] + ldr r2, [r3, #0x4] + add r1, r4, #0x1 + add r2, r12, r2 + str r2, [r3, #0x4] + mov r1, r1, lsl #0x10 + ldrh r2, [r0, #0x0] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020AFF7C +_020AFFA8: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + add r1, r1, r0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x10] + bl FUN_020AFFC8 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AFFC8 +FUN_020AFFC8: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFFD4: .word FUN_020B01B0 + + arm_func_start FUN_020AFFD8 +FUN_020AFFD8: ; 0x020AFFD8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B001C ; =0x4D43424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFF4C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B001C: .word 0x4D43424B + + arm_func_start FUN_020B0020 +FUN_020B0020: ; 0x020B0020 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0030 +FUN_020B0030: ; 0x020B0030 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0074 ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0020 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0074: .word 0x43484152 + + arm_func_start FUN_020B0078 +FUN_020B0078: ; 0x020B0078 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0088 +FUN_020B0088: ; 0x020B0088 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B00CC ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0078 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B00CC: .word 0x43484152 + + arm_func_start FUN_020B00D0 +FUN_020B00D0: ; 0x020B00D0 + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B00E0 +FUN_020B00E0: ; 0x020B00E0 + ldr r1, [r0, #0x4] + add r1, r1, r0 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B00F0 +FUN_020B00F0: ; 0x020B00F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0134 ; =0x50434D50 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00E0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0134: .word 0x50434D50 + + arm_func_start FUN_020B0138 +FUN_020B0138: ; 0x020B0138 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B017C ; =0x504C5454 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00D0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B017C: .word 0x504C5454 + + arm_func_start FUN_020B0180 +FUN_020B0180: ; 0x020B0180 + stmdb sp!, {r4,lr} + mov r4, r1 + ldr r1, _020B01AC ; =0x5343524E + bl FUN_020B01F8 + cmp r0, #0x0 + addne r0, r0, #0x8 + strne r0, [r4, #0x0] + movne r0, #0x1 + moveq r0, #0x0 + streq r0, [r4, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020B01AC: .word 0x5343524E + + arm_func_start FUN_020B01B0 +FUN_020B01B0: ; 0x020B01B0 + ldr r1, [r0, #0x4] + mov r12, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + bxls lr +_020B01CC: + ldr r3, [r0, #0x4] + add r1, r12, #0x1 + ldr r2, [r3, r12, lsl #0x2] + mov r1, r1, lsl #0x10 + add r2, r0, r2 + str r2, [r3, r12, lsl #0x2] + ldrh r2, [r0, #0x0] + mov r12, r1, lsr #0x10 + cmp r12, r2 + blo _020B01CC + bx lr + + arm_func_start FUN_020B01F8 +FUN_020B01F8: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r2, [r0, #0xc] + ldrh r12, [r0, #0xe] + mov lr, #0x0 + add r0, r0, r2 + cmp r12, #0x0 + bls _020B0244 +_020B0218: + ldr r2, [r0, #0x0] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r2, lr, #0x1 + mov r2, r2, lsl #0x10 + ldr r3, [r0, #0x4] + mov lr, r2, lsr #0x10 + cmp lr, r12 + add r0, r0, r3 + blo _020B0218 +_020B0244: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B0250 +FUN_020B0250: ; 0x020B0250 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020B02C0 ; =0x04000470 + mov r0, r0, lsl #0xc + str r0, [r5, #0x0] + mov r4, r1, lsl #0xc + ldr r12, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r4, [r5, #0x0] + mov r4, r2, lsl #0xc + ldr r2, [sp, #0x18] + ldr lr, _020B02C4 ; =0x0400046C + str r4, [r5, #0x0] + mov r4, r3, lsl #0xc + ldr r3, [sp, #0x20] + str r4, [lr, #0x0] + mov r12, r12, lsl #0xc + str r12, [lr, #0x0] + mov r12, #0x1000 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + mov r2, r2, lsl #0xc + mov r3, r3, lsl #0xc + str r12, [lr, #0x0] + bl FUN_020B0340 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B02C0: .word 0x04000470 +_020B02C4: .word 0x0400046C + + arm_func_start FUN_020B02C8 +FUN_020B02C8: ; 0x020B02C8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r2, _020B0330 ; =0xBFFF0000 + ldr r0, _020B0334 ; =0x04000580 + mov r1, #0x400000 + str r2, [r0, #0x0] + rsb r0, r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + mov r2, r0 + mov r1, #0xc0000 + mov r3, #0x100000 + str r0, [sp, #0x10] + bl G3i_OrthoW_ + ldr r1, _020B0338 ; =0x0400044C + mov r2, #0x0 + ldr r0, _020B033C ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B0330: .word 0xBFFF0000 +_020B0334: .word 0x04000580 +_020B0338: .word 0x0400044C +_020B033C: .word 0x04000440 + + arm_func_start FUN_020B0340 +FUN_020B0340: ; 0x020B0340 + stmdb sp!, {r4-r6,lr} + mov r3, r3, lsl #0x8 + mov r0, r0, lsl #0x8 + mov r4, r3, asr #0x10 + mov r3, r0, asr #0x10 + mov r0, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x8 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x8 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + ldr ip, _020B03F4 ; =0x04000500 + mov lr, #0x1 + mov r6, r0, lsr #0x10 + mov r5, r3, lsr #0x10 + mov r3, r1, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r4, _020B03F8 ; =0x04000488 + str lr, [r12, #0x0] + orr r0, r5, r6, lsl #0x10 + ldr lr, _020B03FC ; =0x0400048C + str r0, [r4, #0x0] + mov r0, #0x10000000 + str r0, [lr, #0x0] + mov r12, #0x0 + str r12, [lr, #0x0] + orr r2, r3, r6, lsl #0x10 + ldr r0, _020B0400 ; =0x10001000 + str r2, [r4, #0x0] + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r3, r1, lsl #0x10 + str r0, [r4, #0x0] + mov r0, #0x1000 + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r5, r1, lsl #0x10 + str r0, [r4, #0x0] + str r12, [lr, #0x0] + ldr r0, _020B0404 ; =0x04000504 + str r12, [lr, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B03F4: .word 0x04000500 +_020B03F8: .word 0x04000488 +_020B03FC: .word 0x0400048C +_020B0400: .word 0x10001000 +_020B0404: .word 0x04000504 + + arm_func_start FUN_020B0408 +FUN_020B0408: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + ldreq r0, [r0, #0x18] + ldreq r1, [r0, #0x8] + cmp r1, #0x2 + beq _020B0428 + cmp r1, #0x4 + bne _020B0430 +_020B0428: + mov r0, #0x1 + bx lr +_020B0430: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B0438 +FUN_020B0438: ; 0x020B0438 + ldr ip, _020B0444 ; =FUN_020B0448 + str r1, [r0, #0x18] + bx r12 + .balign 4 +_020B0444: .word FUN_020B0448 + + arm_func_start FUN_020B0448 +FUN_020B0448: ; 0x020B0448 + ldr r1, [r0, #0x10] + cmp r1, #0x0 + movgt r2, #0x1 + ldr r1, [r0, #0x4] + movle r2, #0x0 + eors r1, r2, r1 + beq _020B047C + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + str r1, [r0, #0x0] + b _020B0494 +_020B047C: + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + str r1, [r0, #0x0] +_020B0494: + ldr ip, _020B04A4 ; =FUN_020B0534 + mov r1, #0x0 + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020B04A4: .word FUN_020B0534 + + arm_func_start FUN_020B04A8 +FUN_020B04A8: ; 0x020B04A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + strh r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B04C0 +FUN_020B04C0: ; 0x020B04C0 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x1c + bl FUN_020B04A8 + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r1, [r4, #0xc] + mov r0, #0x1000 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + str r1, [r4, #0x18] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B04FC +FUN_020B04FC: ; 0x020B04FC + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [r1, #0xc] + sub r0, r2, r0 + mov r0, r0, lsl #0xd + mov r0, r0, lsr #0x10 + bx lr + + arm_func_start FUN_020B0518 +FUN_020B0518: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B06EC + cmp r0, #0x0 + movne r1, #0x0 + strne r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0534 +FUN_020B0534: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0x8] + mov r7, #0x0 + cmp r0, #0x1 + movne r0, r7 + ldmneia sp!, {r4-r8,pc} + ldr r2, [r8, #0x10] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r0, r3, r0 + adc r1, r1, r7 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + bl abs + ldr r1, [r8, #0xc] + add r6, r8, #0xc + add r0, r1, r0 + str r0, [r8, #0xc] + mov r4, r7 + mov r5, #0x1 + b _020B06A8 +_020B058C: + ldr r0, [r8, #0x0] + ldr r1, [r6, #0x0] + ldrh r0, [r0, #0x4] + mov r7, r5 + sub r0, r1, r0, lsl #0xc + str r0, [r6, #0x0] + ldr r0, [r8, #0x10] + cmp r0, #0x0 + movgt r1, r5 + ldr r0, [r8, #0x4] + movle r1, r4 + eors r0, r1, r0 + ldrne r0, [r8, #0x0] + addne r0, r0, #0x8 + strne r0, [r8, #0x0] + ldreq r0, [r8, #0x0] + subeq r0, r0, #0x8 + streq r0, [r8, #0x0] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0x0] + cmp r1, #0x0 + movgt r2, r5 + ldr r1, [r8, #0x4] + movle r2, r4 + eors r1, r2, r1 + beq _020B0614 + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + cmp r0, r1 + movcs r0, r5 + movcc r0, r4 + b _020B0634 +_020B0614: + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + cmp r0, r1 + movls r0, r5 + movhi r0, r4 +_020B0634: + cmp r0, #0x0 + beq _020B0644 + mov r0, r8 + bl FUN_020B0710 +_020B0644: + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B06A8 + ldr r0, [r8, #0x18] + ldr r2, [r8, #0x1c] + ldr r1, [r8, #0x0] + ldr r0, [r0, #0xc] + cmp r2, #0x2 + sub r0, r1, r0 + mov r0, r0, lsl #0xd + mov r1, r0, lsr #0x10 + beq _020B0680 + cmp r2, #0x3 + beq _020B069C + b _020B06A8 +_020B0680: + ldrh r0, [r8, #0x28] + cmp r1, r0 + bne _020B06A8 + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 + b _020B06A8 +_020B069C: + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 +_020B06A8: + ldr r0, [r8, #0x8] + cmp r0, #0x0 + beq _020B06CC + ldr r0, [r8, #0x0] + ldr r1, [r8, #0xc] + ldrh r0, [r0, #0x4] + cmp r1, r0, lsl #0xc + movge r0, r5 + bge _020B06D0 +_020B06CC: + mov r0, r4 +_020B06D0: + cmp r0, #0x0 + bne _020B058C + mov r0, r7 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B06E0 +FUN_020B06E0: ; 0x020B06E0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + + arm_func_start FUN_020B06EC +FUN_020B06EC: + ldr r3, [r0, #0x18] + ldrh r2, [r3, #0x0] + cmp r1, r2 + ldrcc r2, [r3, #0xc] + addcc r1, r2, r1, lsl #0x3 + strcc r1, [r0, #0x0] + movcc r0, #0x1 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020B0710 +FUN_020B0710: ; 0x020B0710 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x3 + beq _020B0738 + cmp r0, #0x4 + bne _020B07B4 +_020B0738: + ldr r0, [r4, #0x4] + eor r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x2] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + bhi _020B0800 + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B0780 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B0780: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07A8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07A8: + mov r0, r4 + bl FUN_020B0448 + b _020B0800 +_020B07B4: + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B07D0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B07D0: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07F8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07F8: + mov r0, r4 + bl FUN_020B0448 +_020B0800: + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x0] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + strhi r0, [r4, #0x0] + ldmhiia sp!, {r4,pc} + cmp r2, r1 + strcc r1, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0830 +FUN_020B0830: ; 0x020B0830 + ldrh r3, [r0, #0x6] + ldrh r2, [r0, #0x8] + mov r12, #0x0 + add r1, r3, #0x1 + cmp r2, r1 + bgt _020B0854 + ldrh r0, [r0, #0x4] + cmp r0, r3 + movls r12, #0x1 +_020B0854: + cmp r12, #0x0 + subne r0, r3, r2 + addne r0, r0, #0x1 + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B0870 +FUN_020B0870: ; 0x020B0870 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B09B4 + mov r0, r4 + bl FUN_020B0888 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0888 +FUN_020B0888: ; 0x020B0888 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _020B0944 + ldrh r2, [r5, #0x6] + ldrh r1, [r5, #0x8] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B08C0 + ldrh r0, [r5, #0x4] + cmp r0, r2 + movls r3, #0x1 +_020B08C0: + cmp r3, #0x0 + moveq r4, #0x0 + beq _020B08E0 + ldrh r0, [r5, #0x4] + sub r0, r2, r0 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0xd +_020B08E0: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r0, [r5, #0x4] + add r2, r1, #0x100 + mov r1, r4 + add r6, r2, r0, lsl #0x3 + mov r0, r6 + bl DC_InvalidateRange + ldr r0, _020B09B0 ; =GXi_DmaId + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020B0930 + mov r1, r6 + mov r3, r4 + mov r2, #0xc0 + bl MI_DmaFill32 + b _020B0998 +_020B0930: + mov r1, r6 + mov r2, r4 + mov r0, #0xc0 + bl MIi_CpuClear32 + b _020B0998 +_020B0944: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r2, [r5, #0x4] + ldrh r0, [r5, #0x6] + add r1, r1, #0x100 + add r3, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + movs r2, r0, lsr #0x10 + mov r0, #0x0 + beq _020B0998 + mov r1, #0xc0 +_020B0980: + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r2 + strh r1, [r3], #0x8 + blo _020B0980 +_020B0998: + ldrh r0, [r5, #0x4] + strh r0, [r5, #0x8] + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B09AC: .word UNK_021CCDA0 +_020B09B0: .word GXi_DmaId + + arm_func_start FUN_020B09B4 +FUN_020B09B4: ; 0x020B09B4 + stmdb sp!, {r4-r10,lr} + mov r7, r0 + ldr r0, [r7, #0x14] + cmp r0, #0x0 + beq _020B0A48 + ldr r5, [r7, #0x0] + ldr r1, _020B0BA8 ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r5, r0, r1 + ldrh r2, [r7, #0x4] + ldrh r0, [r7, #0x6] + add r1, r1, #0x100 + add r4, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x13 + mov r6, r0, lsr #0x10 + mov r2, r2, lsl #0x13 + mov r0, r4 + mov r1, r6 + mov r7, r2, lsr #0x10 + bl DC_FlushRange + cmp r5, #0x0 + beq _020B0A20 + cmp r5, #0x1 + beq _020B0A34 + ldmia sp!, {r4-r10,pc} +_020B0A20: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GX_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A34: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GXS_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A48: + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldr r3, _020B0BAC ; =UNK_0210655C + add r4, r2, #0x100 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + mov r2, r5, lsl #0x13 + add r6, r4, r5, lsl #0x3 + movs r5, r1, lsr #0x10 + mov r4, r2, lsr #0x10 + ldr r9, [r3, r0, lsl #0x2] + mov r10, #0x0 + beq _020B0AC8 + mov r8, #0x6 +_020B0A94: + mov r0, r6 + mov r1, r4 + mov r2, r8 + blx r9 + add r0, r10, #0x1 + add r2, r4, #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r10, r1, lsr #0x10 + cmp r10, r5 + mov r4, r0, lsr #0x10 + add r6, r6, #0x8 + blo _020B0A94 +_020B0AC8: + ldrh r2, [r7, #0xc] + ldrh r1, [r7, #0xe] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B0AEC + ldrh r0, [r7, #0xa] + cmp r0, r2 + movls r3, #0x1 +_020B0AEC: + cmp r3, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0xa] + add r4, r2, #0x100 + ldrh r1, [r7, #0xc] + mov r2, r5, lsl #0x15 + ldr r3, _020B0BAC ; =UNK_0210655C + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + add r9, r4, r5, lsl #0x5 + ldr r5, [r3, r0, lsl #0x2] + movs r8, r1, lsr #0x10 + mov r7, r2, lsr #0x10 + mov r6, #0x0 + ldmeqia sp!, {r4-r10,pc} + mov r4, #0x2 +_020B0B40: + mov r2, r4 + add r0, r9, #0x6 + add r1, r7, #0x6 + blx r5 + mov r2, r4 + add r0, r9, #0xe + add r1, r7, #0xe + blx r5 + mov r2, r4 + add r0, r9, #0x16 + add r1, r7, #0x16 + blx r5 + add r0, r9, #0x1e + add r1, r7, #0x1e + mov r2, r4 + blx r5 + add r0, r7, #0x20 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + add r9, r9, #0x20 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B0B40 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B0BA8: .word UNK_021CCDA0 +_020B0BAC: .word UNK_0210655C + + arm_func_start FUN_020B0BB0 +FUN_020B0BB0: ; 0x020B0BB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov lr, #0x0 + add r2, r12, #0x1 + cmp r3, r2 + bgt _020B0BDC + ldrh r2, [r0, #0xa] + cmp r2, r12 + movls lr, #0x1 +_020B0BDC: + cmp lr, #0x0 + subne r2, r12, r3 + addne r2, r2, #0x1 + movne r2, r2, lsl #0x10 + movne r2, r2, lsr #0x10 + moveq r2, #0x0 + cmp r2, #0x1 + movcs r2, #0x1 + movcc r2, #0x0 + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldreq r0, _020B0C74 ; =0x0000FFFE + ldmeqia sp!, {pc} + ldr lr, [r0, #0x0] + ldr r3, _020B0C78 ; =UNK_021CCDA0 + mov r2, #0x540 + mla r12, lr, r2, r3 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0xe] + add r12, r12, #0x100 + mov r3, r3, asr #0x4 + add r12, r12, r2, lsl #0x5 + strh r3, [r12, #0x6] + ldr r3, [r1, #0x4] + mov r3, r3, asr #0x4 + strh r3, [r12, #0xe] + ldr r3, [r1, #0x8] + mov r3, r3, asr #0x4 + strh r3, [r12, #0x16] + ldr r1, [r1, #0xc] + mov r1, r1, asr #0x4 + strh r1, [r12, #0x1e] + ldrh r1, [r0, #0xe] + add r1, r1, #0x1 + strh r1, [r0, #0xe] + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B0C74: .word 0x0000FFFE +_020B0C78: .word UNK_021CCDA0 + + arm_func_start FUN_020B0C7C +FUN_020B0C7C: ; 0x020B0C7C + stmdb sp!, {r4,lr} + ldrh r12, [r0, #0x6] + ldrh r4, [r0, #0x8] + mov lr, #0x0 + add r3, r12, #0x1 + cmp r4, r3 + bgt _020B0CA4 + ldrh r3, [r0, #0x4] + cmp r3, r12 + movls lr, #0x1 +_020B0CA4: + cmp lr, #0x0 + subne r3, r12, r4 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, #0x1 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0D48 + ldr r4, [r0, #0x0] + ldr ip, _020B0D50 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, r4, r3, r12 + ldrh r3, [r0, #0x8] + add r4, r12, #0x100 + ldrh r12, [r1, #0x0] + mov lr, r3, lsl #0x3 + add r3, r4, r3, lsl #0x3 + strh r12, [r4, lr] + ldrh lr, [r1, #0x2] + ldr ip, _020B0D54 ; =0x0000FFFE + strh lr, [r3, #0x2] + ldrh r1, [r1, #0x4] + cmp r2, r12 + strh r1, [r3, #0x4] + beq _020B0D34 + ldr r1, [r3, #0x0] + mov r12, r1, lsl #0x16 + mov r12, r12, lsr #0x1e + ands r12, r12, #0x1 + bicne r12, r1, #0x3e000000 + andne r1, r2, #0x1f + orrne r1, r12, r1, lsl #0x19 + strne r1, [r3, #0x0] +_020B0D34: + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020B0D48: + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020B0D50: .word UNK_021CCDA0 +_020B0D54: .word 0x0000FFFE + + arm_func_start FUN_020B0D58 +FUN_020B0D58: ; 0x020B0D58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh lr, [r0, #0x6] + ldrh r12, [r0, #0x8] + mov r4, #0x0 + add r3, lr, #0x1 + cmp r12, r3 + bgt _020B0D84 + ldrh r3, [r0, #0x4] + cmp r3, lr + movls r4, #0x1 +_020B0D84: + cmp r4, #0x0 + subne r3, lr, r12 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, r2 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0E24 + ldr lr, [r0, #0x0] + ldr ip, _020B0E30 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, lr, r3, r12 + ldrh r3, [r0, #0x8] + add r12, r12, #0x100 + cmp r2, #0x0 + add r4, r12, r3, lsl #0x3 + mov r5, #0x0 + ble _020B0E18 + add r3, r0, #0x8 +_020B0DDC: + ldrh lr, [r1, #0x0] + mov r0, r5, lsl #0x3 + add r12, r4, r5, lsl #0x3 + strh lr, [r4, r0] + ldrh r0, [r1, #0x2] + add r5, r5, #0x1 + cmp r5, r2 + strh r0, [r12, #0x2] + ldrh r0, [r1, #0x4] + add r1, r1, #0x8 + strh r0, [r12, #0x4] + ldrh r0, [r3, #0x0] + add r0, r0, #0x1 + strh r0, [r3, #0x0] + blt _020B0DDC +_020B0E18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020B0E24: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0E30: .word UNK_021CCDA0 + + arm_func_start FUN_020B0E34 +FUN_020B0E34: ; 0x020B0E34 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x1c] + ldr r6, _020B0FB4 ; =UNK_021CCDA0 + mov r4, #0x540 + mla r4, r5, r4, r6 + mov lr, r1 + sub r1, r2, #0x1 + add r1, lr, r1 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + add r7, r4, lr, lsl #0x1 + add r2, r4, r12, lsl #0x1 + mov r6, r0 + mov r5, r3 + cmp r7, r2 + mov r3, lr, lsl #0x1 + bhi _020B0E9C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0E80: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0EA0 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0E80 +_020B0E9C: + mov r0, #0x1 +_020B0EA0: + cmp r0, #0x0 + beq _020B0EE0 + ldr r0, _020B0FBC ; =UNK_021CCD9C + sub r2, r12, lr + ldrh r7, [r0, #0x0] + add r1, r4, r3 + mov r2, r2, lsl #0x1 + add r3, r7, #0x1 + strh r3, [r0, #0x0] + strh r7, [r6, #0x10] + strh lr, [r6, #0x4] + strh r12, [r6, #0x6] + strh lr, [r6, #0x8] + ldrh r0, [r6, #0x10] + bl MIi_CpuClear16 + b _020B0EEC +_020B0EE0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0EEC: + ldrh r0, [sp, #0x18] + add r4, r4, #0x500 + cmp r0, #0x0 + bne _020B0F18 + mov r0, #0x20 + strh r0, [r6, #0xa] + mov r0, #0x0 + strh r0, [r6, #0xc] + ldrh r0, [r6, #0xa] + strh r0, [r6, #0xe] + b _020B0F98 +_020B0F18: + sub r0, r0, #0x1 + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + add r7, r4, r5, lsl #0x1 + add r2, r4, r12, lsl #0x1 + cmp r7, r2 + mov r3, r5, lsl #0x1 + bhi _020B0F5C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0F40: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0F60 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0F40 +_020B0F5C: + mov r0, #0x1 +_020B0F60: + cmp r0, #0x0 + beq _020B0F8C + strh r5, [r6, #0xa] + strh r12, [r6, #0xc] + strh r5, [r6, #0xe] + ldrh r0, [r6, #0x10] + sub r2, r12, r5 + add r1, r4, r3 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + b _020B0F98 +_020B0F8C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0F98: + mov r1, #0x0 + ldr r0, [sp, #0x1c] + str r1, [r6, #0x14] + str r0, [r6, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B0FB4: .word UNK_021CCDA0 +_020B0FB8: .word 0x0000FFFF +_020B0FBC: .word UNK_021CCD9C + + arm_func_start FUN_020B0FC0 +FUN_020B0FC0: ; 0x020B0FC0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B1060 ; =UNK_021CCEA0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1064 ; =UNK_021CD3E0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1068 ; =UNK_021CD920 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1070 ; =UNK_021CCDA0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1074 ; =UNK_021CD2E0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1078 ; =UNK_021CD820 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B107C ; =UNK_021CD2A0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1080 ; =UNK_021CD7E0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1084 ; =UNK_021CDD20 + mov r2, #0x40 + bl MIi_CpuClear16 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B1060: .word UNK_021CCEA0 +_020B1064: .word UNK_021CD3E0 +_020B1068: .word UNK_021CD920 +_020B106C: .word 0x0000FFFF +_020B1070: .word UNK_021CCDA0 +_020B1074: .word UNK_021CD2E0 +_020B1078: .word UNK_021CD820 +_020B107C: .word UNK_021CD2A0 +_020B1080: .word UNK_021CD7E0 +_020B1084: .word UNK_021CDD20 + + arm_func_start FUN_020B1088 +FUN_020B1088: ; 0x020B1088 + ldr ip, _020B1094 ; =MIi_CpuCopy16 + add r1, r1, #0x7000000 + bx r12 + .balign 4 +_020B1094: .word MIi_CpuCopy16 + + arm_func_start FUN_020B1098 +FUN_020B1098: ; 0x020B1098 + ldr r3, _020B10A8 ; =0x07000400 + ldr ip, _020B10AC ; =MIi_CpuCopy16 + add r1, r1, r3 + bx r12 + .balign 4 +_020B10A8: .word 0x07000400 +_020B10AC: .word MIi_CpuCopy16 + + arm_func_start FUN_020B10B0 +FUN_020B10B0: ; 0x020B10B0 + mov r1, r1, lsl #0x1 + ldrh r0, [r0, r1] + bx lr + + arm_func_start FUN_020B10BC +FUN_020B10BC: ; 0x020B10BC + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10C4 +FUN_020B10C4: + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10CC +FUN_020B10CC: + mov r2, #0x0 + mvn r1, #0x0 +_020B10D4: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B10D4 + bx lr + + arm_func_start FUN_020B10E8 +FUN_020B10E8: ; 0x020B10E8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + cmp r0, #0x3 + ldr r0, [sp, #0x28] + moveq r7, #0x20 + str r0, [sp, #0x28] + ldrh r0, [r9, #0x0] + movne r7, #0x200 + mov r11, r2 + mov r8, r3 + str r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _020B1210 +_020B112C: + ldr r1, [r9, #0x4] + mov r0, r6, lsl #0x1 + ldrh r2, [r1, r0] + ldr r0, [r10, #0xc] + ldr r1, [r10, #0x8] + mla r5, r7, r2, r11 + mla r4, r7, r6, r0 + bl DC_FlushRange + cmp r8, #0x0 + beq _020B11E0 + cmp r8, #0x1 + beq _020B1168 + cmp r8, #0x2 + beq _020B11A4 + b _020B11F8 +_020B1168: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B1190 + bl GX_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B11F8 +_020B1190: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJPltt + b _020B11F8 +_020B11A4: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B11CC + bl GXS_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B11F8 +_020B11CC: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJPltt + b _020B11F8 +_020B11E0: + bl GX_BeginLoadTexPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B11F8: + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _020B112C +_020B1210: + ldr r0, [sp, #0x28] + ldr r2, [r10, #0x0] + mov r1, r0 + str r2, [r1, #0x0] + ldr r4, [r10, #0x4] + mov r3, r0 + mov r1, r8 + mov r2, r11 + str r4, [r3, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B1240 +FUN_020B1240: ; 0x020B1240 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r5, [r9, #0xc] + ldr r4, [r9, #0x8] + mov r8, r1 + mov r7, r2 + mov r0, r5 + mov r1, r4 + mov r6, r3 + bl DC_FlushRange + cmp r7, #0x0 + beq _020B1300 + cmp r7, #0x1 + beq _020B1288 + cmp r7, #0x2 + beq _020B12C4 + b _020B1318 +_020B1288: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12B0 + bl GX_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B1318 +_020B12B0: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJPltt + b _020B1318 +_020B12C4: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12EC + bl GXS_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B1318 +_020B12EC: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJPltt + b _020B1318 +_020B1300: + bl GX_BeginLoadTexPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B1318: + ldr r1, [r9, #0x0] + mov r0, r6 + str r1, [r6, #0x0] + ldr r3, [r9, #0x4] + mov r1, r7 + mov r2, r8 + str r3, [r6, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B1340 +FUN_020B1340: ; 0x020B1340 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + mov r5, r2 + mov r4, r3 + bl DC_FlushRange + cmp r5, #0x0 + ldr r0, [r7, #0x8] + beq _020B13B8 + cmp r5, #0x1 + beq _020B1384 + cmp r5, #0x2 + beq _020B13A0 + b _020B13B8 +_020B1384: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1520 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B13B8 +_020B13A0: + ldr r3, _020B1524 ; =0x04001000 + ldr r1, _020B1520 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B13B8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B14D8 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1408 + cmp r0, #0x10 + bge _020B1434 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1444 +_020B13E4: + b _020B1444 +_020B13E8: + b _020B1414 +_020B13EC: + b _020B141C +_020B13F0: + b _020B1444 +_020B13F4: + b _020B1424 +_020B13F8: + b _020B1444 +_020B13FC: + b _020B1444 +_020B1400: + b _020B1444 +_020B1404: + b _020B142C +_020B1408: + cmp r0, #0x20 + beq _020B143C + b _020B1444 +_020B1414: + mov r0, #0x0 + b _020B1448 +_020B141C: + mov r0, #0x1 + b _020B1448 +_020B1424: + mov r0, #0x2 + b _020B1448 +_020B142C: + mov r0, #0x3 + b _020B1448 +_020B1434: + mov r0, #0x4 + b _020B1448 +_020B143C: + mov r0, #0x5 + b _020B1448 +_020B1444: + mov r0, #0x0 +_020B1448: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1490 + cmp r0, #0x10 + bge _020B14BC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B14CC +_020B146C: + b _020B14CC +_020B1470: + b _020B149C +_020B1474: + b _020B14A4 +_020B1478: + b _020B14CC +_020B147C: + b _020B14AC +_020B1480: + b _020B14CC +_020B1484: + b _020B14CC +_020B1488: + b _020B14CC +_020B148C: + b _020B14B4 +_020B1490: + cmp r0, #0x20 + beq _020B14C4 + b _020B14CC +_020B149C: + mov r0, #0x0 + b _020B14D0 +_020B14A4: + mov r0, #0x1 + b _020B14D0 +_020B14AC: + mov r0, #0x2 + b _020B14D0 +_020B14B4: + mov r0, #0x3 + b _020B14D0 +_020B14BC: + mov r0, #0x4 + b _020B14D0 +_020B14C4: + mov r0, #0x5 + b _020B14D0 +_020B14CC: + mov r0, #0x0 +_020B14D0: + str r0, [r4, #0x10] + b _020B14E8 +_020B14D8: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B14E8: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1520: .word 0xFFCFFFEF +_020B1524: .word 0x04001000 + + arm_func_start FUN_020B1528 +FUN_020B1528: ; 0x020B1528 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B1590 + cmp r5, #0x1 + beq _020B155C + cmp r5, #0x2 + beq _020B1578 + b _020B1590 +_020B155C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1760 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B1590 +_020B1578: + ldr r3, _020B1764 ; =0x04001000 + ldr r1, _020B1760 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B1590: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B15B8 + cmp r5, #0x1 + beq _020B15D4 + cmp r5, #0x2 + beq _020B15E8 + b _020B15F8 +_020B15B8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B15F8 +_020B15D4: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B15F8 +_020B15E8: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B15F8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1718 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1648 + cmp r0, #0x10 + bge _020B1674 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1684 +_020B1624: + b _020B1684 +_020B1628: + b _020B1654 +_020B162C: + b _020B165C +_020B1630: + b _020B1684 +_020B1634: + b _020B1664 +_020B1638: + b _020B1684 +_020B163C: + b _020B1684 +_020B1640: + b _020B1684 +_020B1644: + b _020B166C +_020B1648: + cmp r0, #0x20 + beq _020B167C + b _020B1684 +_020B1654: + mov r0, #0x0 + b _020B1688 +_020B165C: + mov r0, #0x1 + b _020B1688 +_020B1664: + mov r0, #0x2 + b _020B1688 +_020B166C: + mov r0, #0x3 + b _020B1688 +_020B1674: + mov r0, #0x4 + b _020B1688 +_020B167C: + mov r0, #0x5 + b _020B1688 +_020B1684: + mov r0, #0x0 +_020B1688: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B16D0 + cmp r0, #0x10 + bge _020B16FC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B170C +_020B16AC: + b _020B170C +_020B16B0: + b _020B16DC +_020B16B4: + b _020B16E4 +_020B16B8: + b _020B170C +_020B16BC: + b _020B16EC +_020B16C0: + b _020B170C +_020B16C4: + b _020B170C +_020B16C8: + b _020B170C +_020B16CC: + b _020B16F4 +_020B16D0: + cmp r0, #0x20 + beq _020B1704 + b _020B170C +_020B16DC: + mov r0, #0x0 + b _020B1710 +_020B16E4: + mov r0, #0x1 + b _020B1710 +_020B16EC: + mov r0, #0x2 + b _020B1710 +_020B16F4: + mov r0, #0x3 + b _020B1710 +_020B16FC: + mov r0, #0x4 + b _020B1710 +_020B1704: + mov r0, #0x5 + b _020B1710 +_020B170C: + mov r0, #0x0 +_020B1710: + str r0, [r4, #0x10] + b _020B1728 +_020B1718: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1728: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1760: .word 0xFFCFFFEF +_020B1764: .word 0x04001000 + + arm_func_start FUN_020B1768 +FUN_020B1768: ; 0x020B1768 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B17D0 + cmp r5, #0x1 + beq _020B179C + cmp r5, #0x2 + beq _020B17B8 + b _020B17D0 +_020B179C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B19A0 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B17D0 +_020B17B8: + ldr r3, _020B19A4 ; =0x04001000 + ldr r1, _020B19A0 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B17D0: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B17F8 + cmp r5, #0x1 + beq _020B1814 + cmp r5, #0x2 + beq _020B1828 + b _020B1838 +_020B17F8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B1838 +_020B1814: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B1838 +_020B1828: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B1838: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1958 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1888 + cmp r0, #0x10 + bge _020B18B4 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B18C4 +_020B1864: + b _020B18C4 +_020B1868: + b _020B1894 +_020B186C: + b _020B189C +_020B1870: + b _020B18C4 +_020B1874: + b _020B18A4 +_020B1878: + b _020B18C4 +_020B187C: + b _020B18C4 +_020B1880: + b _020B18C4 +_020B1884: + b _020B18AC +_020B1888: + cmp r0, #0x20 + beq _020B18BC + b _020B18C4 +_020B1894: + mov r0, #0x0 + b _020B18C8 +_020B189C: + mov r0, #0x1 + b _020B18C8 +_020B18A4: + mov r0, #0x2 + b _020B18C8 +_020B18AC: + mov r0, #0x3 + b _020B18C8 +_020B18B4: + mov r0, #0x4 + b _020B18C8 +_020B18BC: + mov r0, #0x5 + b _020B18C8 +_020B18C4: + mov r0, #0x0 +_020B18C8: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1910 + cmp r0, #0x10 + bge _020B193C + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B194C +_020B18EC: + b _020B194C +_020B18F0: + b _020B191C +_020B18F4: + b _020B1924 +_020B18F8: + b _020B194C +_020B18FC: + b _020B192C +_020B1900: + b _020B194C +_020B1904: + b _020B194C +_020B1908: + b _020B194C +_020B190C: + b _020B1934 +_020B1910: + cmp r0, #0x20 + beq _020B1944 + b _020B194C +_020B191C: + mov r0, #0x0 + b _020B1950 +_020B1924: + mov r0, #0x1 + b _020B1950 +_020B192C: + mov r0, #0x2 + b _020B1950 +_020B1934: + mov r0, #0x3 + b _020B1950 +_020B193C: + mov r0, #0x4 + b _020B1950 +_020B1944: + mov r0, #0x5 + b _020B1950 +_020B194C: + mov r0, #0x0 +_020B1950: + str r0, [r4, #0x10] + b _020B1968 +_020B1958: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1968: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B19A0: .word 0xFFCFFFEF +_020B19A4: .word 0x04001000 + + arm_func_start FUN_020B19A8 +FUN_020B19A8: + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x8] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B19C4 +FUN_020B19C4: ; 0x020B19C4 + add r0, r0, r1, lsl #0x2 + ldr r0, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19D0 +FUN_020B19D0: ; 0x020B19D0 + add r0, r0, r1, lsl #0x2 + str r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19DC +FUN_020B19DC: ; 0x020B19DC + mov r3, #0x0 + mvn r2, #0x0 +_020B19E4: + add r1, r0, r3, lsl #0x2 + add r3, r3, #0x1 + str r2, [r1, #0x8] + cmp r3, #0x3 + blt _020B19E4 + bx lr + + arm_func_start FUN_020B19FC +FUN_020B19FC: + ldr r1, [r0, r1, lsl #0x2] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B1A14 +FUN_020B1A14: ; 0x020B1A14 + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A1C +FUN_020B1A1C: ; 0x020B1A1C + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A24 +FUN_020B1A24: ; 0x020B1A24 + mov r2, #0x0 + mvn r1, #0x0 +_020B1A2C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B1A2C + bx lr + + arm_func_start FUN_020B1A40 +FUN_020B1A40: ; 0x020B1A40 + stmdb sp!, {r4,lr} + mov r4, r0 + add r1, r4, #0x4 + mov r0, #0x0 + mov r2, #0x18 + bl MIi_CpuClear16 + mov r0, #0x1000 + str r0, [r4, #0x4] + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1A68 +FUN_020B1A68: + ldr ip, _020B1A74 ; =FUN_020B1A40 + str r1, [r0, #0x0] + bx r12 + .balign 4 +_020B1A74: .word FUN_020B1A40 + + arm_func_start FUN_020B1A78 +FUN_020B1A78: ; 0x020B1A78 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x2 + streqh r3, [r0, #0x12] + streq r1, [r0, #0x4] + streq r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B1A98 +FUN_020B1A98: ; 0x020B1A98 + ldr r2, [r0, #0x0] + cmp r2, #0x1 + ldreqh r2, [r0, #0x12] + orreq r2, r2, #0x4 + streqh r2, [r0, #0x12] + streqh r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B1AB4 +FUN_020B1AB4: ; 0x020B1AB4 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x8 + streqh r3, [r0, #0x12] + streqh r1, [r0, #0xc] + streqh r2, [r0, #0xe] + bx lr + + arm_func_start FUN_020B1AD4 +FUN_020B1AD4: ; 0x020B1AD4 + mov r2, #0x0 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + ldr ip, _020B1AF4 ; =FUN_020B1A68 + add r0, r0, #0xc + bx r12 + .balign 4 +_020B1AF4: .word FUN_020B1A68 + + arm_func_start FUN_020B1AF8 +FUN_020B1AF8: ; 0x020B1AF8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldrh r5, [r2, #0x0] + ldr r4, [sp, #0x60] + ldr r10, [sp, #0x58] + str r4, [sp, #0x60] + cmp r1, r5 + movcs r1, r5 + mov r4, #0x0 + cmp r1, #0x0 + str r4, [sp, #0x0] + bls _020B1E7C + ldrh r4, [sp, #0x5c] + mov r4, r4, lsl #0x19 + str r4, [sp, #0x4] + ldr r4, [sp, #0x0] + str r4, [sp, #0x14] + mov r4, #0x100 + str r4, [sp, #0xc] + mov r4, #0x300 + str r4, [sp, #0x8] + mov r4, #0x1 + str r4, [sp, #0x10] +_020B1B54: + ldr r5, [sp, #0x0] + mov r6, #0x6 + mul r6, r5, r6 + ldr r8, [r2, #0x4] + ldr r4, [sp, #0x0] + add r7, r0, r5, lsl #0x3 + ldrh r5, [r8, r6] + mov r4, r4, lsl #0x3 + add r9, r8, r6 + strh r5, [r0, r4] + ldrh r4, [r9, #0x2] + cmp r3, #0x0 + strh r4, [r7, #0x2] + ldrh r4, [r9, #0x4] + strh r4, [r7, #0x4] + bne _020B1B9C + cmp r10, #0x0 + beq _020B1E60 +_020B1B9C: + ldr r5, [r7, #0x0] + ldr r4, _020B1E88 ; =0x01FF0000 + and r4, r5, r4 + mov r4, r4, lsr #0x10 + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0xff + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x20] + ldr r4, [r7, #0x0] + and r4, r4, #0xff + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0x7f + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x24] + cmp r3, #0x0 + beq _020B1E00 + ldr r5, [r7, #0x0] + and r6, r5, #0x300 + cmp r6, #0x100 + beq _020B1C1C + cmp r6, #0x300 + beq _020B1C1C + and r4, r5, #0x30000000 + orr r6, r6, r4 +_020B1C1C: + cmp r6, #0x300 + bne _020B1C70 + ldr r4, _020B1E8C ; =0xC000C000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + and r5, r5, r4 + and r4, r5, #0xc000 + mov r6, r4, asr #0xe + and r4, r5, #0xc0000000 + mov r4, r4, lsr #0x1e + mov r4, r4, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r4, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r5, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + add r5, r5, r9, lsl #0xb + str r5, [sp, #0x20] + ldrh r4, [r4, r6] + ldr r5, [sp, #0x24] + add r4, r5, r4, lsl #0xb + str r4, [sp, #0x24] +_020B1C70: + ldr r4, [sp, #0x60] + ldr r5, [r3, #0x8] + cmp r4, #0x0 + ldrne r8, [sp, #0x8] + add r4, sp, #0x20 + ldreq r8, [sp, #0xc] + mov r6, r4 + cmp r8, #0x300 + ldreq r9, [sp, #0x10] + mov r12, #0x1000 + ldrne r9, [sp, #0x14] + cmp r4, r4 + ldr r4, [sp, #0x24] + addeq r6, sp, #0x28 + smull r11, r4, r5, r4 + adds r5, r11, r12 + adc r11, r4, #0x0 + ldr r4, [r3, #0x0] + ldr lr, [sp, #0x20] + smlal r5, r11, r4, lr + mov r4, r5, lsr #0xc + orr r4, r4, r11, lsl #0x14 + str r4, [r6, #0x0] + ldr r4, [r3, #0xc] + ldr r5, [sp, #0x24] + ldr lr, [r3, #0x4] + smull r11, r5, r4, r5 + adds r11, r11, r12 + adc r4, r5, #0x0 + add r5, sp, #0x28 + cmp r6, r5 + ldr r5, [sp, #0x20] + smlal r11, r4, lr, r5 + mov r5, r11, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, #0x4] + ldreq r5, [sp, #0x28] + ldreq r4, [sp, #0x2c] + streq r5, [sp, #0x20] + streq r4, [sp, #0x24] + cmp r8, #0x100 + beq _020B1D38 + cmp r8, #0x300 + beq _020B1D38 + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r4, r4, r8 + str r4, [r7, #0x0] + b _020B1D54 +_020B1D38: + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r5, r4, r8 + ldr r4, [sp, #0x4] + orr r4, r4, r5 + str r4, [r7, #0x0] +_020B1D54: + ldr r6, [r7, #0x0] + ldr r5, _020B1E8C ; =0xC000C000 + cmp r9, #0x0 + and r8, r6, r5 + and r5, r8, #0xc000 + mov r6, r5, asr #0xe + and r5, r8, #0xc0000000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + mov r5, r5, lsr #0x1e + mov r5, r5, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r5, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r4, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + mov r11, r9, asr #0x1 + ldrh r5, [r5, r6] + mov r8, r11, lsl #0xc + ldr r6, [r3, #0x0] + rsb r12, r8, #0x0 + mov r9, r5, asr #0x1 + mla r12, r6, r11, r12 + ldr r5, [r3, #0x8] + mla r6, r5, r9, r12 + add r6, r4, r6 + str r6, [sp, #0x20] + ldr r12, [r3, #0x4] + mov r5, r9, lsl #0xc + str r12, [sp, #0x1c] + ldr r12, [r3, #0xc] + rsb lr, r5, #0x0 + str r12, [sp, #0x18] + ldr r12, [sp, #0x1c] + ldr r4, [sp, #0x24] + mla r11, r12, r11, lr + ldr r12, [sp, #0x18] + subne r6, r6, r8 + mla r9, r12, r9, r11 + add r4, r4, r9 + str r4, [sp, #0x24] + subne r4, r4, r5 + strne r6, [sp, #0x20] + strne r4, [sp, #0x24] +_020B1E00: + cmp r10, #0x0 + beq _020B1E28 + ldr r6, [sp, #0x20] + ldr r4, [r10, #0x0] + ldr r5, [sp, #0x24] + add r4, r6, r4 + str r4, [sp, #0x20] + ldr r4, [r10, #0x4] + add r4, r5, r4 + str r4, [sp, #0x24] +_020B1E28: + ldr r4, [sp, #0x20] + ldr r6, [r7, #0x0] + add r5, r4, #0x800 + ldr r4, _020B1E9C ; =0x000001FF + and r4, r4, r5, asr #0xc + ldr r5, _020B1EA0 ; =0xFE00FF00 + and r6, r6, r5 + ldr r5, [sp, #0x24] + add r5, r5, #0x800 + mov r5, r5, asr #0xc + and r5, r5, #0xff + orr r5, r6, r5 + orr r4, r5, r4, lsl #0x10 + str r4, [r7, #0x0] +_020B1E60: + ldr r4, [sp, #0x0] + add r4, r4, #0x1 + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + str r4, [sp, #0x0] + cmp r4, r1 + blo _020B1B54 +_020B1E7C: + mov r0, r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B1E88: .word 0x01FF0000 +_020B1E8C: .word 0xC000C000 +_020B1E90: .word UNK_020FF8AC +_020B1E94: .word UNK_020FF894 +_020B1E98: .word 0xC1FFFCFF +_020B1E9C: .word 0x000001FF +_020B1EA0: .word 0xFE00FF00 + + arm_func_start FUN_020B1EA4 +FUN_020B1EA4: ; 0x020B1EA4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0518 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EC4 +FUN_020B1EC4: ; 0x020B1EC4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0534 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EE4 +FUN_020B1EE4: ; 0x020B1EE4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0438 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EFC +FUN_020B1EFC: ; 0x020B1EFC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r4, r2 + ldr r2, [r4, #0xc] + mov r5, r1 + ldr r1, [r2, #0x0] + ldr r2, [sp, #0x34] + str r1, [sp, #0x0] + ldr r1, [sp, #0x38] + str r2, [sp, #0x4] + mov r6, r3 + mov r7, r0 + ldr r12, [sp, #0x3c] + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r6 + str r12, [sp, #0xc] + bl FUN_020B45F0 + str r6, [r7, #0x34] + str r4, [r7, #0x30] + add r0, r7, #0x38 + mov r1, #0x1 + str r6, [r7, #0x34] + bl FUN_020B1A68 + mov r0, r7 + bl FUN_020B04C0 + mov r0, r7 + mov r1, r5 + bl FUN_020B1EE4 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B1F80 +FUN_020B1F80: ; 0x020B1F80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + str r2, [r5, #0x30] + mvn r2, #0x0 + add r0, r5, #0x38 + mov r1, #0x1 + str r2, [r5, #0x34] + bl FUN_020B1A68 + mov r0, r5 + bl FUN_020B04C0 + mov r0, r5 + mov r1, r4 + bl FUN_020B1EE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B1FC4 +FUN_020B1FC4: ; 0x020B1FC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldrh r1, [r1, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl FUN_020B06E0 + mov r4, r0 + ldr r7, [r5, #0x30] + ldrh r1, [r4, #0x0] + mov r0, r7 + bl FUN_020AFE8C + str r0, [r5, #0x2c] + ldr r1, [r5, #0x18] + add r0, r5, #0x38 + ldr r2, [r1, #0x4] + mov r1, #0x1 + and r6, r2, #0xff + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2068 + cmp r6, #0x2 + bne _020B203C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r5, #0x38 + bl FUN_020B1AB4 + b _020B2068 +_020B203C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x38 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r5, #0x38 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r5, #0x38 + bl FUN_020B1AB4 +_020B2068: + ldr r2, [r7, #0xc] + cmp r2, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r5, #0x34] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldrh r1, [r4, #0x0] + ldr r2, [r2, #0x4] + ldr r0, [r5, #0x34] + add r3, r2, r1, lsl #0x3 + ldr r1, [r2, r1, lsl #0x3] + ldr r2, [r3, #0x4] + bl FUN_020B4400 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B20C8 +FUN_020B20C8: ; 0x020B20C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r6, #0x0 + str r6, [r0, #0x38] + ldr r7, [sp, #0x30] + str r6, [r0, #0x30] + mov r10, r1 + str r7, [r0, #0x34] + str r0, [sp, #0x0] + movs r8, r3 + mov r9, r2 + str r10, [r0, #0x3c] + ldr r11, [sp, #0x34] + beq _020B215C + mov r0, #0x1 + str r6, [sp, #0x8] + str r0, [sp, #0x4] +_020B210C: + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, [sp, #0x4] + add r0, r10, r4 + bl FUN_020B1AD4 + mov r0, #0x54 + mla r5, r6, r0, r9 + ldr r1, [sp, #0x8] + mov r0, r7 + str r5, [r10, r4] + bl FUN_020AFC04 + mov r1, r0 + mov r0, r5 + mov r2, r11 + bl FUN_020B1F80 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B210C +_020B215C: + ldr r0, [sp, #0x0] + bl FUN_020B04C0 + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x0] + add r0, r0, #0x44 + mov r1, #0x1 + str r3, [r2, #0x40] + bl FUN_020B1A68 + ldr r0, [sp, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2c] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B2194 +FUN_020B2194: ; 0x020B2194 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0518 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r7 + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B2234 + cmp r5, #0x2 + bne _020B2208 + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B2234 +_020B2208: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B2234: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B224C +FUN_020B224C: ; 0x020B224C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x0] + mov r6, r1 + ldrh r5, [r2, #0x4] + bl FUN_020B0534 + cmp r0, #0x0 + beq _020B2318 + ldrh r1, [r4, #0x2c] + mov r0, r4 + add r1, r1, r5 + strh r1, [r4, #0x2c] + bl FUN_020B06E0 + mov r5, r0 + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x40] + bl FUN_020AFF34 + ldr r1, [r4, #0x18] + mov r7, r0 + ldr r1, [r1, #0x4] + add r0, r4, #0x44 + and r6, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2300 + cmp r6, #0x2 + bne _020B22D4 + ldrsh r1, [r5, #0x4] + ldrsh r2, [r5, #0x6] + add r0, r4, #0x44 + bl FUN_020B1AB4 + b _020B2300 +_020B22D4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r4, #0x44 + bl FUN_020B1A78 + ldrh r1, [r5, #0x2] + add r0, r4, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #0xe] + add r0, r4, #0x44 + bl FUN_020B1AB4 +_020B2300: + ldrh r2, [r4, #0x2c] + mov r1, r7 + add r0, r4, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B2318: + mov r1, r6 + add r0, r4, #0x30 + bl FUN_020B232C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B232C +FUN_020B232C: ; 0x020B232C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r0, [r7, #0x8] + mov r6, r1 + cmp r0, #0x1 + bne _020B238C + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x2] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x58 +_020B2360: + mla r0, r5, r8, r4 + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x2] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2360 + ldmia sp!, {r4-r8,pc} +_020B238C: + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x28 +_020B23A8: + mul r0, r5, r8 + ldr r0, [r4, r0] + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B23A8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B23D8 +FUN_020B23D8: ; 0x020B23D8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrh r0, [r5, #0x0] + mov r4, #0x0 + mov r6, r4 + cmp r0, #0x0 + bls _020B2424 +_020B23F4: + mov r0, r5 + mov r1, r6 + bl FUN_020AFF34 + ldrh r0, [r0, #0x0] + ldrh r1, [r5, #0x0] + cmp r0, r4 + movhi r4, r0 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020B23F4 +_020B2424: + mov r0, r4 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B242C +FUN_020B242C: ; 0x020B242C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0438 + mov r1, #0x0 + mov r0, r7 + strh r1, [r7, #0x2c] + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B24C8 + cmp r5, #0x2 + bne _020B249C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B24C8 +_020B249C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B24C8: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B24E0 +FUN_020B24E0: ; 0x020B24E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r1 + str r0, [sp, #0x0] + str r10, [r0, #0x0] + ldr r0, [r0, #0x8] + mov r9, r2 + cmp r0, #0x1 + bne _020B2654 + ldrh r1, [r10, #0x2] + ldr r0, [sp, #0x0] + mov r4, #0x0 + ldr r8, [r0, #0xc] + cmp r1, #0x0 + bls _020B2544 + mov r3, r4 + mov r0, #0x58 +_020B2524: + mla r1, r4, r0, r8 + str r3, [r1, #0x54] + add r1, r4, #0x1 + mov r1, r1, lsl #0x10 + ldrh r2, [r10, #0x2] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020B2524 +_020B2544: + ldrh r0, [r10, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + str r5, [sp, #0x4] + mov r11, #0x1 +_020B2560: + ldr r0, [r10, #0x4] + mov r1, #0x58 + add r7, r0, r5, lsl #0x3 + ldrh r0, [r7, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + mla r6, r0, r1, r8 + ldr r0, [r6, #0x54] + cmp r0, #0x0 + bne _020B2634 + ldr r0, [sp, #0x0] + ldrh r1, [r7, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020AFC04 + mov r4, r0 + mov r0, r6 + mov r1, r4 + bl FUN_020B1EE4 + str r11, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2630 + ldrh r1, [r4, #0x0] + ldr r7, [sp, #0x4] + mov r3, r7 + cmp r1, #0x0 + bls _020B25F0 + ldr r2, [r4, #0xc] +_020B25D8: + add r0, r2, r3, lsl #0x3 + ldrh r0, [r0, #0x4] + add r3, r3, #0x1 + cmp r3, r1 + add r7, r7, r0 + blo _020B25D8 +_020B25F0: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B261C + mov r0, r9 + mov r1, r7 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2630 +_020B261C: + cmp r9, r7 + movcc r7, r9 + mov r0, r6 + mov r1, r7, lsl #0xc + bl FUN_020B1EC4 +_020B2630: + str r11, [r6, #0x54] +_020B2634: + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2560 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} +_020B2654: + ldrh r1, [r10, #0x0] + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + ldr r11, [r0, #0xc] + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_020B267C: + mov r0, #0x28 + mul r2, r4, r0 + ldr r3, [r10, #0x4] + mov r0, r4, lsl #0x3 + ldrh r1, [r3, r0] + ldr r0, [sp, #0x0] + ldr r6, [r11, r2] + ldr r0, [r0, #0x4] + add r7, r3, r4, lsl #0x3 + bl FUN_020AFC04 + mov r5, r0 + mov r0, r6 + mov r1, r5 + bl FUN_020B1EE4 + ldr r0, [sp, #0x8] + str r0, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2740 + ldrh r1, [r5, #0x0] + ldr r8, [sp, #0xc] + mov r0, r8 + cmp r1, #0x0 + bls _020B2700 + ldr r3, [r5, #0xc] +_020B26E4: + add r1, r3, r0, lsl #0x3 + ldrh r2, [r1, #0x4] + add r0, r0, #0x1 + ldrh r1, [r5, #0x0] + add r8, r8, r2 + cmp r0, r1 + blo _020B26E4 +_020B2700: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B272C + mov r0, r9 + mov r1, r8 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2740 +_020B272C: + cmp r9, r8 + movcc r8, r9 + mov r0, r6 + mov r1, r8, lsl #0xc + bl FUN_020B1EC4 +_020B2740: + mov r0, #0x28 + mla r3, r4, r0, r11 + ldr r0, [sp, #0x8] + str r0, [r3, #0x8] + ldrsh r1, [r7, #0x2] + ldrsh r2, [r7, #0x4] + add r0, r3, #0xc + bl FUN_020B1AB4 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B267C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start thunk_FUN_020b5040 +thunk_FUN_020b5040: ; 0x020B2780 + ldr ip, _020B2788 ; =FUN_020B5040 + bx r12 + .balign 4 +_020B2788: .word FUN_020B5040 + + arm_func_start FUN_020B278C +FUN_020B278C: + ldr r0, [r0, #0x78] + bx lr + + arm_func_start FUN_020B2794 +FUN_020B2794: ; 0x020B2794 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr r2, _020B2894 ; =UNK_021CDD70 + mov lr, #0x0 + ldr r12, [r2, #0x0] + ldr r3, _020B2898 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x0] + str r1, [sp, #0xc] + mla r1, r12, r2, r3 + rsb r3, r0, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x8] + str lr, [sp, #0x10] + str lr, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B289C ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B28A0 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2824 + ldr r1, _020B28A4 ; =UNK_02106570 + ldr r0, _020B28A8 ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B2828 +_020B2824: + mov r0, #0x0 +_020B2828: + cmp r0, #0x0 + ldreq r1, _020B2894 ; =UNK_021CDD70 + ldreq r0, _020B28A4 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B28AC ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B288C +_020B2860: + b _020B2870 +_020B2864: + b _020B288C +_020B2868: + b _020B2870 +_020B286C: + b _020B2870 +_020B2870: + ldr r0, _020B28B0 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B288C: + add sp, sp, #0x1c + ldmia sp!, {pc} + .balign 4 +_020B2894: .word UNK_021CDD70 +_020B2898: .word UNK_021CDEF4 +_020B289C: .word UNK_021CE1F4 +_020B28A0: .word UNK_021CDD68 +_020B28A4: .word UNK_02106570 +_020B28A8: .word 0x0000FFFE +_020B28AC: .word UNK_021CDDF4 +_020B28B0: .word UNK_021CDD64 + + arm_func_start FUN_020B28B4 +FUN_020B28B4: ; 0x020B28B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r2, _020B29E8 ; =UNK_021CDD70 + mov r12, #0x0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r2, _020B29EC ; =UNK_021CDEF4 + mov r1, #0x18 + mla r1, r3, r1, r2 + mov r5, r0 + add r0, sp, #0x0 + mov r2, r1 + str r5, [sp, #0x0] + str r12, [sp, #0x4] + str r12, [sp, #0x8] + str r4, [sp, #0xc] + str r12, [sp, #0x10] + str r12, [sp, #0x14] + bl FUN_020B423C + mov r0, r5 + bl FX_Inv + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, r4 + str r1, [sp, #0x4] + str r1, [sp, #0x8] + bl FX_Inv + mov r3, #0x0 + ldr r1, _020B29E8 ; =UNK_021CDD70 + str r0, [sp, #0xc] + ldr r2, [r1, #0x0] + ldr r1, _020B29F0 ; =UNK_021CE1F4 + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B29F4 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2978 + ldr r1, _020B29F8 ; =UNK_02106570 + ldr r0, _020B29FC ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B297C +_020B2978: + mov r0, #0x0 +_020B297C: + cmp r0, #0x0 + ldreq r1, _020B29E8 ; =UNK_021CDD70 + ldreq r0, _020B29F8 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B29E8 ; =UNK_021CDD70 + ldr r1, _020B2A00 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B29E0 +_020B29B4: + b _020B29C4 +_020B29B8: + b _020B29E0 +_020B29BC: + b _020B29C4 +_020B29C0: + b _020B29C4 +_020B29C4: + ldr r0, _020B2A04 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B29E0: + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B29E8: .word UNK_021CDD70 +_020B29EC: .word UNK_021CDEF4 +_020B29F0: .word UNK_021CE1F4 +_020B29F4: .word UNK_021CDD68 +_020B29F8: .word UNK_02106570 +_020B29FC: .word 0x0000FFFE +_020B2A00: .word UNK_021CDDF4 +_020B2A04: .word UNK_021CDD64 + + arm_func_start FUN_020B2A08 +FUN_020B2A08: ; 0x020B2A08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r3, _020B2AEC ; =UNK_021CDD68 + mov r4, r2 + ldr r2, [r3, #0x0] + cmp r2, #0x0 + beq _020B2A6C + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov r3, #0x18 + ldr r2, [r2, #0x0] + ldr lr, _020B2AF4 ; =UNK_021CDF04 + mul r5, r2, r3 + ldr r3, [lr, r5] + ldr ip, _020B2AF8 ; =UNK_021CDF08 + add r0, r3, r0 + str r0, [lr, r5] + ldr r0, [r12, r5] + ldr r3, _020B2AFC ; =UNK_021CDD74 + add r0, r0, r1 + str r0, [r12, r5] + ldr r0, [r3, r2, lsl #0x2] + add sp, sp, #0x1c + add r0, r0, r4 + str r0, [r3, r2, lsl #0x2] + ldmia sp!, {r4-r5,pc} +_020B2A6C: + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov lr, #0x1000 + ldr r12, [r2, #0x0] + ldr r3, _020B2B00 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x14] + mla r1, r12, r2, r3 + mov r3, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x0 + mov r2, r1 + str lr, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r1, _020B2B04 ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r2, _020B2AFC ; =UNK_021CDD74 + ldr r1, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + add r0, r0, r4 + str r0, [r2, r1, lsl #0x2] + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B2AEC: .word UNK_021CDD68 +_020B2AF0: .word UNK_021CDD70 +_020B2AF4: .word UNK_021CDF04 +_020B2AF8: .word UNK_021CDF08 +_020B2AFC: .word UNK_021CDD74 +_020B2B00: .word UNK_021CDEF4 +_020B2B04: .word UNK_021CE1F4 + + arm_func_start FUN_020B2B08 +FUN_020B2B08: ; 0x020B2B08 + ldr r0, _020B2B4C ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movle r0, #0x1 + movgt r0, #0x0 + cmp r0, #0x0 + bxne lr + ldr r1, _020B2B4C ; =UNK_021CDD70 + ldr r0, _020B2B50 ; =UNK_02106570 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0x0] + sub r3, r3, #0x1 + str r3, [r1, #0x0] + cmp r2, r3 + ldrgt r1, _020B2B54 ; =0x0000FFFE + strgth r1, [r0, #0x0] + bx lr + .balign 4 +_020B2B4C: .word UNK_021CDD70 +_020B2B50: .word UNK_02106570 +_020B2B54: .word 0x0000FFFE + + arm_func_start FUN_020B2B58 +FUN_020B2B58: ; 0x020B2B58 + stmdb sp!, {r4-r10,lr} + ldr r0, _020B2D74 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + ands r0, r0, #0x1 + bne _020B2CA4 + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r1, [r0, #0x0] + mov r0, r1, lsl #0x10 + add r5, r1, #0x1 + cmp r5, #0x20 + mov r4, r0, lsr #0x10 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + beq _020B2C44 + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2BE4 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r8, r3, r0 + ldr r6, _020B2D84 ; =UNK_021CDF04 + mul r7, r5, r0 + ldr r2, [r6, r8] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r6, r7] + ldr r2, [r3, r8] + str r0, [r1, r5, lsl #0x2] + str r2, [r3, r7] + b _020B2C3C +_020B2BE4: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r7, _020B2D80 ; =UNK_021CDD74 + mul lr, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r12, r5, r0 + ldr r8, _020B2D90 ; =UNK_021CE1F4 + add r10, r1, lr + ldr r6, [r7, r2, lsl #0x2] + add r9, r1, r12 + ldmia r10!, {r0-r3} + stmia r9!, {r0-r3} + ldmia r10, {r0-r1} + str r6, [r7, r5, lsl #0x2] + add r7, r8, lr + stmia r9, {r0-r1} + add r6, r8, r12 + ldmia r7!, {r0-r3} + stmia r6!, {r0-r3} + ldmia r7, {r0-r1} + stmia r6, {r0-r1} +_020B2C3C: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r5, [r0, #0x0] +_020B2C44: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r2, _020B2D94 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r5, r4, lsl #0x3 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r4, r2, r4, lsl #0x3 + mov r6, r3, lsl #0x3 + ldrh r1, [r2, r5] + ldrh r0, [r4, #0x2] + add r3, r2, r3, lsl #0x3 + strh r1, [r2, r6] + strh r0, [r3, #0x2] + ldrh r2, [r4, #0x4] + ldrh r0, [r4, #0x6] + ldr r1, _020B2D98 ; =UNK_021CDDF8 + strh r2, [r3, #0x4] + strh r0, [r3, #0x6] + ldrh r0, [r1, r5] + cmp r0, #0x1 + moveq r0, #0x2 + streqh r0, [r1, r6] + strneh r0, [r1, r6] + ldmia sp!, {r4-r10,pc} +_020B2CA4: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + add r4, r0, #0x1 + cmp r4, #0x20 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2D10 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r7, r3, r0 + ldr r5, _020B2D84 ; =UNK_021CDF04 + mul r6, r4, r0 + ldr r2, [r5, r7] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r5, r6] + ldr r2, [r3, r7] + str r0, [r1, r4, lsl #0x2] + str r2, [r3, r6] + b _020B2D68 +_020B2D10: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr ip, _020B2D80 ; =UNK_021CDD74 + mul r9, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r8, r4, r0 + ldr lr, _020B2D90 ; =UNK_021CE1F4 + add r6, r1, r9 + ldr r5, [r12, r2, lsl #0x2] + add r7, r1, r8 + ldmia r6!, {r0-r3} + stmia r7!, {r0-r3} + ldmia r6, {r0-r1} + add r6, lr, r9 + stmia r7, {r0-r1} + add lr, lr, r8 + ldmia r6!, {r0-r3} + stmia lr!, {r0-r3} + ldmia r6, {r0-r1} + stmia lr, {r0-r1} + str r5, [r12, r4, lsl #0x2] +_020B2D68: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r4, [r0, #0x0] + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B2D74: .word UNK_021CDD6C +_020B2D78: .word UNK_021CDD70 +_020B2D7C: .word UNK_021CDD68 +_020B2D80: .word UNK_021CDD74 +_020B2D84: .word UNK_021CDF04 +_020B2D88: .word UNK_021CDF08 +_020B2D8C: .word UNK_021CDEF4 +_020B2D90: .word UNK_021CE1F4 +_020B2D94: .word UNK_021CDDF4 +_020B2D98: .word UNK_021CDDF8 + + arm_func_start FUN_020B2D9C +FUN_020B2D9C: ; 0x020B2D9C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldrh r0, [r4, #0x56] + cmp r0, #0x0 + bne _020B2DBC + add r0, r4, #0x30 + bl FUN_020B2E78 + ldmia sp!, {r4-r6,pc} +_020B2DBC: + bl FUN_020B2B58 + ldrh r0, [r4, #0x56] + ands r0, r0, #0x8 + beq _020B2E0C + ldr r0, _020B2E70 ; =UNK_021CDD6C + ldrsh r6, [r4, #0x52] + ldr r0, [r0, #0x0] + ldrsh r5, [r4, #0x50] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B2E70 ; =UNK_021CDD6C + rsbne r5, r5, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r6, r6, #0x0 + mov r0, r5, lsl #0xc + mov r1, r6, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B2E0C: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x4 + beq _020B2E40 + ldrh r0, [r4, #0x54] + ldr r2, _020B2E74 ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B2E40: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x2 + beq _020B2E5C + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x4c] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B2E5C: + add r0, r4, #0x30 + bl FUN_020B2E78 + mov r0, #0x1 + bl FUN_020B2B08 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B2E70: .word UNK_021CDD6C +_020B2E74: .word UNK_020FFA38 + + arm_func_start FUN_020B2E78 +FUN_020B2E78: ; 0x020B2E78 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020B309C + ldr r0, [r5, #0x0] + mov r2, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bls _020B2ED0 + ldr r3, _020B3174 ; =UNK_021CE8F4 + mov r4, r2 +_020B2EAC: + add r0, r3, r2, lsl #0x2 + str r4, [r0, #0x4] + ldr r0, [r5, #0x0] + add r2, r2, #0x1 + ldrh r1, [r0, #0x2] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + cmp r2, r1 + blo _020B2EAC +_020B2ED0: + ldr r0, _020B3178 ; =UNK_021CDD6C + mov r6, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _020B3174 ; =UNK_021CE8F4 + str r6, [r0, #0x404] + ldr r0, [r1, #0x80] + cmp r0, #0x0 + beq _020B2FD8 + bl FUN_020B4948 + str r0, [sp, #0x0] + mov r0, r6 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B2FC0 + mov r11, r7 +_020B2F28: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + mov r2, r11 + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mov r0, #0x58 + mla r0, r8, r0, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2F28 +_020B2FC0: + mov r0, #0x0 + bl FUN_020B497C + ldr r0, [sp, #0x0] + bl FUN_020B4958 + bl FUN_020B4968 + b _020B3088 +_020B2FD8: + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B3088 + str r7, [sp, #0x4] + mov r11, #0x58 +_020B2FF4: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + ldr r2, [sp, #0x4] + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mla r0, r8, r11, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2FF4 +_020B3088: + ldr r0, _020B3174 ; =UNK_021CE8F4 + mov r1, #0x0 + str r1, [r0, #0x404] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B309C: + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r7, [r5, #0xc] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + cmp r0, #0x0 + beq _020B312C + bl FUN_020B4948 + mov r6, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bls _020B3110 + mov r8, #0x28 +_020B30EC: + mla r0, r4, r8, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B30EC +_020B3110: + mov r0, #0x0 + bl FUN_020B497C + mov r0, r6 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B312C: + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0xc + ldmlsia sp!, {r4-r11,pc} + mov r6, #0x28 +_020B3148: + mla r0, r4, r6, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B3148 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3174: .word UNK_021CE8F4 +_020B3178: .word UNK_021CDD6C + + arm_func_start FUN_020B317C +FUN_020B317C: ; 0x020B317C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B31EC ; =UNK_021CDD6C + mov r5, r0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x80] + cmp r1, #0x0 + beq _020B31E0 + bl FUN_020B4948 + mov r4, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B31EC ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + mov r0, r5 + bl FUN_020B3554 + mov r0, #0x0 + bl FUN_020B497C + mov r0, r4 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B31E0: + bl FUN_020B3554 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B31EC: .word UNK_021CDD6C + + arm_func_start FUN_020B31F0 +FUN_020B31F0: ; 0x020B31F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B3260 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020B3264 ; =UNK_021CDD6C + str r2, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r3, [r2, #0x7c] + cmp r3, #0x0 + beq _020B324C + ands r0, r3, #0x1 + ldrne r0, _020B3268 ; =UNK_021CDD68 + movne r1, #0x0 + strne r1, [r0, #0x0] + ands r0, r3, #0x2 + beq _020B323C + mov r0, #0x0 + str r0, [r2, #0x74] + bl FUN_020B4DA0 +_020B323C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x7c] +_020B324C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B3260: .word 0x04000448 +_020B3264: .word UNK_021CDD6C +_020B3268: .word UNK_021CDD68 + + arm_func_start FUN_020B326C +FUN_020B326C: ; 0x020B326C + stmdb sp!, {r4-r8,lr} + ldr r5, _020B330C ; =UNK_021CDD60 + ldr r3, _020B3310 ; =UNK_021CDD6C + ldrh r6, [r5, #0x0] + ldr r2, _020B3314 ; =UNK_021CDD70 + mov r4, #0x0 + ldr r7, _020B3318 ; =0x0000FFFE + ldr r1, _020B331C ; =UNK_02106570 + str r0, [r3, #0x0] + str r4, [r2, #0x0] + strh r7, [r1, #0x0] + cmp r6, #0x0 + ble _020B32D0 + ldr r8, _020B3320 ; =UNK_021CE4F4 + mvn r7, #0x0 + mov r6, #0x10 +_020B32AC: + mov r0, r7 + mov r2, r6 + add r1, r8, #0x10 + bl MIi_CpuClearFast + ldrh r0, [r5, #0x0] + add r4, r4, #0x1 + add r8, r8, #0x20 + cmp r4, r0 + blt _020B32AC +_020B32D0: + ldr r4, _020B330C ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3324 ; =UNK_021CDD64 + ldr r1, _020B3328 ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r1, _020B332C ; =0x04000444 + mov r2, #0x0 + ldr r0, _020B3330 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bl FUN_020B4178 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B330C: .word UNK_021CDD60 +_020B3310: .word UNK_021CDD6C +_020B3314: .word UNK_021CDD70 +_020B3318: .word 0x0000FFFE +_020B331C: .word UNK_02106570 +_020B3320: .word UNK_021CE4F4 +_020B3324: .word UNK_021CDD64 +_020B3328: .word UNK_021CDDF4 +_020B332C: .word 0x04000444 +_020B3330: .word 0x04000454 + + arm_func_start FUN_020B3334 +FUN_020B3334: ; 0x020B3334 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x48 + bl MIi_CpuClear16 + mov r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x3 + ldr r1, _020B3380 ; =FUN_020B3EE0 + str r0, [r4, #0x14] + ldr r0, _020B3384 ; =FUN_020B3E48 + str r1, [r4, #0x18] + ldr r1, _020B3388 ; =FUN_020B3C40 + str r0, [r4, #0x1c] + ldr r0, _020B338C ; =FUN_020B3B90 + str r1, [r4, #0x20] + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020B3380: .word FUN_020B3EE0 +_020B3384: .word FUN_020B3E48 +_020B3388: .word FUN_020B3C40 +_020B338C: .word FUN_020B3B90 + + arm_func_start FUN_020B3390 +FUN_020B3390: ; 0x020B3390 + ldr r2, [r0, #0x70] + str r2, [r1, #0x30] + str r1, [r0, #0x70] + bx lr + + arm_func_start FUN_020B33A0 +FUN_020B33A0: ; 0x020B33A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl FUN_020B504C + mov r7, #0x0 + str r7, [r4, #0x70] + str r7, [r4, #0x74] + str r7, [r4, #0x78] + str r7, [r4, #0x7c] + str r7, [r4, #0x80] + str r7, [r4, #0x84] + strh r7, [r4, #0x88] + strh r7, [r4, #0x8a] + str r7, [r4, #0x8c] + str r7, [r4, #0x90] + ldr r1, _020B3454 ; =UNK_021CDD70 + strh r7, [r4, #0x94] + ldr r2, _020B3458 ; =0x0000FFFE + ldr r0, _020B345C ; =UNK_02106570 + ldr r6, _020B3460 ; =UNK_021CE4F4 + str r7, [r1, #0x0] + strh r2, [r0, #0x0] + mvn r5, #0x0 + mov r4, #0x10 +_020B3400: + mov r0, r5 + mov r2, r4 + add r1, r6, #0x10 + bl MIi_CpuClearFast + add r7, r7, #0x1 + cmp r7, #0x20 + add r6, r6, #0x20 + blt _020B3400 + ldr ip, _020B3464 ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3468 ; =UNK_021CDD64 + ldr r1, _020B346C ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r12, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B3470 ; =UNK_021CDD68 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B3454: .word UNK_021CDD70 +_020B3458: .word 0x0000FFFE +_020B345C: .word UNK_02106570 +_020B3460: .word UNK_021CE4F4 +_020B3464: .word UNK_021CDD60 +_020B3468: .word UNK_021CDD64 +_020B346C: .word UNK_021CDDF4 +_020B3470: .word UNK_021CDD68 + + arm_func_start FUN_020B3474 +FUN_020B3474: ; 0x020B3474 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r4, [r5, #0x0] + bl FUN_020B2B58 + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x8 + beq _020B34E4 + ldr r0, _020B354C ; =UNK_021CDD6C + ldrsh r7, [r5, #0x1a] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x18] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B354C ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B34E4: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x4 + beq _020B3518 + ldrh r0, [r5, #0x1c] + ldr r2, _020B3550 ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3518: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x2 + beq _020B3534 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3534: + mov r0, r4 + bl FUN_020B3554 + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B354C: .word UNK_021CDD6C +_020B3550: .word UNK_020FFA38 + + arm_func_start FUN_020B3554 +FUN_020B3554: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x4a] + ldr r4, [r5, #0x2c] + cmp r0, #0x0 + bne _020B35C0 + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B35B0 + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35B0: + mov r0, r4 + bl FUN_020B36C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35C0: + bl FUN_020B2B58 + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x8 + beq _020B3610 + ldr r0, _020B36B8 ; =UNK_021CDD6C + ldrsh r7, [r5, #0x46] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x44] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B36B8 ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B3610: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x4 + beq _020B3644 + ldrh r0, [r5, #0x48] + ldr r2, _020B36BC ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3644: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x2 + beq _020B3660 + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x40] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3660: + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B369C + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + b _020B36A4 +_020B369C: + mov r0, r4 + bl FUN_020B36C0 +_020B36A4: + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B36B4: .word UNK_02106574 +_020B36B8: .word UNK_021CDD6C +_020B36BC: .word UNK_020FFA38 + + arm_func_start FUN_020B36C0 +FUN_020B36C0: ; 0x020B36C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r5, _020B3B54 ; =UNK_021CDD6C + mov r10, r0 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x7c] + str r0, [sp, #0x0] + ldr r9, [r0, #0x70] + ands r0, r1, #0x2 + beq _020B38EC + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3840 + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3720 + ldr r2, _020B3B5C ; =UNK_02106570 + ldr r0, _020B3B60 ; =0x0000FFFE + ldrh r2, [r2, #0x0] + cmp r2, r0 + movne r0, #0x1 + bne _020B3724 +_020B3720: + mov r0, #0x0 +_020B3724: + cmp r0, #0x0 + beq _020B37AC + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r1, [r0, #0x404] + cmp r1, #0x0 + beq _020B3788 + ldrh r1, [r0, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + ldr r1, [r0, r1, lsl #0x2] + cmp r1, #0x0 + bne _020B37AC + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r2, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r1, _020B3B64 ; =UNK_021CE8F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r3, [r2, r0] + ldr r4, _020B3B74 ; =UNK_021CE4F4 + ldrh r2, [r1, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + add r1, r4, r3, lsl #0x5 + str r1, [r0, r2, lsl #0x2] + b _020B37AC +_020B3788: + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r2, _020B3B74 ; =UNK_021CE4F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r0, [r1, r0] + add r1, r2, r0, lsl #0x5 +_020B37AC: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r3, _020B3B78 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r3 + beq _020B37FC + ldr r2, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r2, #0x0] + ldr r3, _020B3B7C ; =UNK_021CDF04 + mul r4, r2, r0 + ldr r2, _020B3B80 ; =UNK_021CDF08 + ldr r3, [r3, r4] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r2, r4] + str r3, [r0, #0x10] + str r2, [r0, #0x14] +_020B37FC: + bl FUN_020B4FAC + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B3830 + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3830: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3840: + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r2, _020B3B78 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r2 + beq _020B38A8 + ldr r1, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r1, [r1, #0x0] + ldr r2, _020B3B7C ; =UNK_021CDF04 + mul r3, r1, r0 + ldr r1, _020B3B80 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r1, [r1, r3] + str r2, [r0, #0x10] + str r1, [r0, #0x14] +_020B38A8: + bl FUN_020B4FC4 + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B38DC + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38DC: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38EC: + cmp r9, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11,pc} + ldr r4, _020B3B6C ; =UNK_021CDD70 + ldr fp, _020B3B78 ; =UNK_021CDEF4 + mov r7, #0x0 + mov r6, #0x1 +_020B3908: + ldr r0, [r9, #0x10] + cmp r0, #0x0 + beq _020B3B40 + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3A8C + ldr r8, [r5, #0x0] + mov r1, r9 + str r9, [r8, #0x74] + mov r0, r8 + bl FUN_020B4F9C + ldr r1, [r9, #0x28] + ldr r2, [r9, #0x2c] + mov r0, r8 + bl FUN_020B5034 + mov r0, r8 + bl FUN_020B4E0C + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, r7 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3978 + ldr r0, _020B3B5C ; =UNK_02106570 + ldrh r2, [r0, #0x0] + ldr r0, _020B3B60 ; =0x0000FFFE + cmp r2, r0 + movne r0, r6 + bne _020B397C +_020B3978: + mov r0, r7 +_020B397C: + cmp r0, #0x0 + beq _020B3A04 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, [r0, #0x404] + cmp r0, #0x0 + beq _020B39E4 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldrh r1, [r0, #0x0] + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020B3A04 + bl FUN_020B4010 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r2, [r4, #0x0] + ldrh r1, [r0, #0x0] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r3, [r0, r2] + ldr r0, _020B3B64 ; =UNK_021CE8F4 + add r2, r0, r1, lsl #0x2 + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r3, lsl #0x5 + str r1, [r2, #0x4] + b _020B3A04 +_020B39E4: + bl FUN_020B4010 + ldr r0, [r4, #0x0] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r1, [r0, r1] + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r1, lsl #0x5 +_020B3A04: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r11 + beq _020B3A44 + ldr r2, [r4, #0x0] + mov r0, #0x18 + mla r8, r2, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r3, [r8, #0x10] + mov r2, r0 + str r3, [r2, #0x10] + ldr r3, [r8, #0x14] + str r3, [r2, #0x14] +_020B3A44: + bl FUN_020B4FAC + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3A74 + mov r0, r10 + bl FUN_020B4BF4 + b _020B3A7C +_020B3A74: + mov r0, r10 + bl FUN_020B4CDC +_020B3A7C: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 + b _020B3B40 +_020B3A8C: + ldr r8, [r5, #0x0] + mov r1, r9 + mov r0, r8 + str r9, [r8, #0x74] + bl FUN_020B4F9C + mov r0, r8 + bl FUN_020B4E0C + ldr r2, [r4, #0x0] + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r1, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r11 + beq _020B3AFC + ldr r1, [r4, #0x0] + mov r0, #0x18 + mla r3, r1, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r3, #0x10] + mov r1, r0 + str r2, [r1, #0x10] + ldr r2, [r3, #0x14] + str r2, [r1, #0x14] +_020B3AFC: + bl FUN_020B4FC4 + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3B2C + mov r0, r10 + bl FUN_020B4BF4 + b _020B3B34 +_020B3B2C: + mov r0, r10 + bl FUN_020B4CDC +_020B3B34: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 +_020B3B40: + ldr r9, [r9, #0x30] + cmp r9, #0x0 + bne _020B3908 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3B54: .word UNK_021CDD6C +_020B3B58: .word UNK_021CDD68 +_020B3B5C: .word UNK_02106570 +_020B3B60: .word 0x0000FFFE +_020B3B64: .word UNK_021CE8F4 +_020B3B68: .word UNK_021CE8F8 +_020B3B6C: .word UNK_021CDD70 +_020B3B70: .word UNK_021CDDF4 +_020B3B74: .word UNK_021CE4F4 +_020B3B78: .word UNK_021CDEF4 +_020B3B7C: .word UNK_021CDF04 +_020B3B80: .word UNK_021CDF08 +_020B3B84: .word UNK_02106578 +_020B3B88: .word UNK_02106574 +_020B3B8C: .word UNK_021CDD74 + + arm_func_start FUN_020B3B90 +FUN_020B3B90: ; 0x020B3B90 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r0, _020B3C24 ; =UNK_021CDD6C + mov r12, r1 + ldr r0, [r0, #0x0] + mov r3, r2 + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x44] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3C28 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3C2C ; =UNK_021CDD70 + ldreq r4, _020B3C30 ; =UNK_021CDEF4 + ldreq lr, [r2, #0x0] + moveq r2, #0x18 + mlaeq r6, lr, r2, r4 + beq _020B3C0C + ldr lr, _020B3C2C ; =UNK_021CDD70 + mov r2, #0x18 + ldr lr, [lr, #0x0] + ldr r4, _020B3C34 ; =UNK_021CDF04 + mul r5, lr, r2 + ldr r2, _020B3C38 ; =UNK_021CDF08 + ldr r4, [r4, r5] + ldr r6, _020B3C3C ; =UNK_02106578 + ldr r2, [r2, r5] + str r4, [r6, #0x10] + str r2, [r6, #0x14] +_020B3C0C: + str r6, [sp, #0x0] + ldr lr, [r1, #0x44] + mov r2, r12 + blx lr + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3C24: .word UNK_021CDD6C +_020B3C28: .word UNK_021CDD68 +_020B3C2C: .word UNK_021CDD70 +_020B3C30: .word UNK_021CDEF4 +_020B3C34: .word UNK_021CDF04 +_020B3C38: .word UNK_021CDF08 +_020B3C3C: .word UNK_02106578 + + arm_func_start FUN_020B3C40 +FUN_020B3C40: ; 0x020B3C40 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020B3E2C ; =UNK_021CDD6C + add r4, r0, #0x38 + ldr r0, [r3, #0x0] + mov r6, r1 + mov r5, r2 + bl FUN_020B278C + cmp r0, #0x0 + beq _020B3C90 + ldrh r1, [r4, #0x4] + and r1, r1, #0xf000 + mov r1, r1, lsl #0x4 + mov r1, r1, lsr #0x10 + bl FUN_020B10B0 + ldr r1, [r4, #0x4] + and r0, r0, #0xf + bic r1, r1, #0xf000 + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3C90: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + cmp r0, #0x0 + beq _020B3DA4 + ldr r0, [r1, #0x84] + ands r0, r0, #0x1 + beq _020B3CC8 + ldrh r0, [r1, #0x88] + ldr r1, [r4, #0x4] + bic r1, r1, #0xc00 + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0xa + str r0, [r4, #0x4] +_020B3CC8: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x2 + beq _020B3CF4 + ldrh r0, [r1, #0x8a] + ldr r1, [r4, #0x4] + bic r1, r1, #0xf000 + and r0, r0, #0xf + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3CF4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x10 + beq _020B3D2C + ldr r2, [r4, #0x4] + ldrh r0, [r1, #0x94] + mov r1, r2, lsl #0x10 + bic r2, r2, #0xf000 + add r0, r0, r1, lsr #0x1c + and r0, r0, #0xf + and r0, r0, #0xf + orr r0, r2, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3D2C: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x4 + beq _020B3D60 + ldr r0, [r1, #0x90] + cmp r0, #0x0 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x1000 + strne r0, [r4, #0x0] + ldreq r0, [r4, #0x0] + biceq r0, r0, #0x1000 + streq r0, [r4, #0x0] +_020B3D60: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x8 + beq _020B3DA4 + ldr r0, [r4, #0x0] + ldrh r2, [r4, #0x4] + ldr r1, [r1, #0x8c] + bic r0, r0, #0xc00 + orr r0, r0, r1, lsl #0xa + str r0, [r4, #0x0] + ldrh r0, [r4, #0x4] + and r1, r2, #0xf000 + mov r1, r1, asr #0xc + bic r0, r0, #0xf000 + orr r0, r0, r1, lsl #0xc + strh r0, [r4, #0x4] +_020B3DA4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x40] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3E30 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3E34 ; =UNK_021CDD70 + ldreq r4, _020B3E38 ; =UNK_021CDEF4 + ldreq r3, [r2, #0x0] + moveq r2, #0x18 + mlaeq r4, r3, r2, r4 + beq _020B3E10 + ldr r3, _020B3E34 ; =UNK_021CDD70 + mov r2, #0x18 + ldr r4, [r3, #0x0] + ldr r3, _020B3E3C ; =UNK_021CDF04 + mul r12, r4, r2 + ldr r2, _020B3E40 ; =UNK_021CDF08 + ldr r3, [r3, r12] + ldr r4, _020B3E44 ; =UNK_02106578 + ldr r2, [r2, r12] + str r3, [r4, #0x10] + str r2, [r4, #0x14] +_020B3E10: + str r4, [sp, #0x0] + ldr r4, [r1, #0x40] + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3E2C: .word UNK_021CDD6C +_020B3E30: .word UNK_021CDD68 +_020B3E34: .word UNK_021CDD70 +_020B3E38: .word UNK_021CDEF4 +_020B3E3C: .word UNK_021CDF04 +_020B3E40: .word UNK_021CDF08 +_020B3E44: .word UNK_02106578 + + arm_func_start FUN_020B3E48 +FUN_020B3E48: ; 0x020B3E48 + stmdb sp!, {r4,lr} + ldr r0, _020B3EC4 ; =UNK_021CDD6C + mov r2, r1 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r3, [r1, #0x3c] + cmp r3, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020B3EC8 ; =UNK_021CDD68 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + ldreq r3, _020B3ECC ; =UNK_021CDD70 + ldreq lr, _020B3ED0 ; =UNK_021CDEF4 + ldreq r12, [r3, #0x0] + moveq r3, #0x18 + mlaeq r3, r12, r3, lr + beq _020B3EB8 + ldr ip, _020B3ECC ; =UNK_021CDD70 + mov r3, #0x18 + ldr r12, [r12, #0x0] + ldr lr, _020B3ED4 ; =UNK_021CDF04 + mul r4, r12, r3 + ldr ip, _020B3ED8 ; =UNK_021CDF08 + ldr lr, [lr, r4] + ldr r3, _020B3EDC ; =UNK_02106578 + ldr r12, [r12, r4] + str lr, [r3, #0x10] + str r12, [r3, #0x14] +_020B3EB8: + ldr r12, [r1, #0x3c] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020B3EC4: .word UNK_021CDD6C +_020B3EC8: .word UNK_021CDD68 +_020B3ECC: .word UNK_021CDD70 +_020B3ED0: .word UNK_021CDEF4 +_020B3ED4: .word UNK_021CDF04 +_020B3ED8: .word UNK_021CDF08 +_020B3EDC: .word UNK_02106578 + + arm_func_start FUN_020B3EE0 +FUN_020B3EE0: ; 0x020B3EE0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B3FF4 ; =UNK_021CDD6C + mov r6, r0 + ldr r0, [r2, #0x0] + mov r5, r1 + ldr r4, [r0, #0x74] + ldr r0, [r4, #0x34] + cmp r0, #0x0 + beq _020B3F7C + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r1, _020B4000 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r1, r2, r0, r1 + beq _020B3F54 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r3, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r2, [r1, r3] + ldr r1, _020B400C ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r1, #0x10] + str r0, [r1, #0x14] +_020B3F54: + ldr r3, [r4, #0x34] + mov r0, r5 + mov r2, r4 + blx r3 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r6, #0x30] + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r6, #0x30] +_020B3F7C: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r2, _020B4000 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r3, r1, r0, r2 + beq _020B3FD8 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r6, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r1, [r1, r6] + ldr r3, _020B400C ; =UNK_02106578 + ldr r0, [r0, r6] + str r1, [r3, #0x10] + str r0, [r3, #0x14] +_020B3FD8: + ldr r0, _020B3FF4 ; =UNK_021CDD6C + ldr r6, [r4, #0x38] + ldr r0, [r0, #0x0] + mov r1, r4 + mov r2, r5 + blx r6 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3FF4: .word UNK_021CDD6C +_020B3FF8: .word UNK_021CDD68 +_020B3FFC: .word UNK_021CDD70 +_020B4000: .word UNK_021CDEF4 +_020B4004: .word UNK_021CDF04 +_020B4008: .word UNK_021CDF08 +_020B400C: .word UNK_02106578 + + arm_func_start FUN_020B4010 +FUN_020B4010: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4158 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r0, lsl #0x10 + add r3, r1, r0, lsr #0xd + ldrh r0, [r3, #0x4] + cmp r0, #0x1 + beq _020B4044 + cmp r0, #0x2 + movne r2, #0x0 +_020B4044: + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B415C ; =UNK_021CDD60 + mov r2, #0x10 + ldrh r4, [r0, #0x0] + cmp r4, #0x1f + addcc r1, r4, #0x1 + strcch r1, [r0, #0x0] + ldr r0, _020B4160 ; =UNK_021CE4F4 + ldrh r5, [r3, #0x2] + add r0, r0, r4, lsl #0x5 + add r1, r0, #0x10 + mvn r0, #0x0 + strh r4, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4164 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsl #0x10 + cmp r2, #0x0 + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r1, r1, lsr #0xd + ldrh r1, [r3, r1] + ldr r3, _020B4160 ; =UNK_021CE4F4 + moveq r2, #0x18 + add r1, r3, r1, lsl #0x5 + ldreq r3, _020B4168 ; =UNK_021CE1F4 + mlaeq r12, r0, r2, r3 + beq _020B40E4 + mov r2, #0x18 + mul r3, r0, r2 + ldr r2, _020B416C ; =UNK_021CDF04 + ldr r0, _020B4170 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr ip, _020B4174 ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r12, #0x10] + str r0, [r12, #0x14] +_020B40E4: + ldr r2, [r12, #0x0] + ldr r0, _020B4154 ; =UNK_021CDD70 + str r2, [r1, #0x0] + ldr r2, [r12, #0x4] + str r2, [r1, #0x4] + ldr r2, [r12, #0x8] + str r2, [r1, #0x8] + ldr r2, [r12, #0xc] + str r2, [r1, #0xc] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + movs lr, r0, lsr #0x10 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r5,pc} + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r0, #0x3 +_020B4124: + add r2, r3, lr, lsl #0x3 + ldrh r1, [r2, #0x2] + mov r12, lr, lsl #0x3 + cmp r5, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + strh r0, [r2, #0x4] + strh r4, [r3, r12] + subs lr, lr, #0x1 + bpl _020B4124 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4154: .word UNK_021CDD70 +_020B4158: .word UNK_021CDDF4 +_020B415C: .word UNK_021CDD60 +_020B4160: .word UNK_021CE4F4 +_020B4164: .word UNK_021CDD68 +_020B4168: .word UNK_021CE1F4 +_020B416C: .word UNK_021CDF04 +_020B4170: .word UNK_021CDF08 +_020B4174: .word UNK_02106578 + + arm_func_start FUN_020B4178 +FUN_020B4178: ; 0x020B4178 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4220 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B41B8 + ldr r1, _020B4224 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r12, [r1, #0x0] + ldr r1, _020B4228 ; =UNK_021CDF04 + mul r3, r12, r0 + mov r2, #0x0 + ldr r0, _020B422C ; =UNK_021CDF08 + str r2, [r1, r3] + str r2, [r0, r3] + b _020B420C +_020B41B8: + ldr r0, _020B4224 ; =UNK_021CDD70 + mov lr, #0x18 + ldr r1, [r0, #0x0] + ldr r4, _020B4230 ; =UNK_021CDEF4 + mul r3, r1, lr + mov r2, #0x1000 + str r2, [r4, r3] + add r5, r4, r3 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r2, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + ldr r12, [r0, #0x0] + ldr r4, _020B4234 ; =UNK_021CE1F4 + ldmia r5!, {r0-r3} + mla lr, r12, lr, r4 + stmia lr!, {r0-r3} + ldmia r5, {r0-r1} + stmia lr, {r0-r1} +_020B420C: + ldr r0, _020B4238 ; =UNK_021CDD74 + mov r1, #0x0 + str r1, [r0, r12, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4220: .word UNK_021CDD68 +_020B4224: .word UNK_021CDD70 +_020B4228: .word UNK_021CDF04 +_020B422C: .word UNK_021CDF08 +_020B4230: .word UNK_021CDEF4 +_020B4234: .word UNK_021CE1F4 +_020B4238: .word UNK_021CDD74 + + arm_func_start FUN_020B423C +FUN_020B423C: ; 0x020B423C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + ldr r4, [r0, #0x4] + ldr r3, [r1, #0x8] + mov r12, r2 + smull r6, r5, r4, r3 + ldr r4, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r5, r4, r3 + mov r3, r6, lsr #0xc + addeq r2, sp, #0x0 + orr r3, r3, r5, lsl #0x14 + str r3, [r2, #0x0] + ldr r4, [r0, #0x4] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x0] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + add lr, sp, #0x0 + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + cmp r2, lr + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x8] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x10] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + ldr r4, [r1, #0x10] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + add r3, r4, r3 + str r3, [r2, #0x10] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x10] + ldr r0, [r1, #0x4] + smull r6, r3, r4, r3 + smlal r6, r3, r5, r0 + mov r0, r6, lsr #0xc + ldr r1, [r1, #0x14] + orr r0, r0, r3, lsl #0x14 + add r0, r1, r0 + str r0, [r2, #0x14] + ldmeqia lr!, {r0-r3} + stmeqia r12!, {r0-r3} + ldmeqia lr, {r0-r1} + stmeqia r12, {r0-r1} + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B4358 +FUN_020B4358: ; 0x020B4358 + stmdb sp!, {r4,lr} + ldr r2, _020B43A0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r4, r0, r1, r2 + mov r0, r4 + bl FUN_020B10CC + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + .balign 4 +_020B43A0: .word UNK_021CED04 + + arm_func_start FUN_020B43A4 +FUN_020B43A4: ; 0x020B43A4 + ldr r1, _020B43F8 ; =UNK_021CED00 + mov r0, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bls _020B43F0 + ldr r1, _020B43FC ; =UNK_021CED04 + ldr r2, [r1, #0x0] + mov r12, r2 +_020B43C4: + ldr r1, [r12, #0x1c] + cmp r1, #0x1 + movne r1, #0x30 + mlane r1, r0, r1, r2 + movne r2, #0x1 + strne r2, [r1, #0x1c] + bxne lr + add r0, r0, #0x1 + cmp r0, r3 + add r12, r12, #0x30 + blo _020B43C4 +_020B43F0: + mvn r0, #0x0 + bx lr + .balign 4 +_020B43F8: .word UNK_021CED00 +_020B43FC: .word UNK_021CED04 + + arm_func_start FUN_020B4400 +FUN_020B4400: ; 0x020B4400 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + bl FUN_020B469C + mvn r1, #0x0 + str r1, [r0, #0x24] + str r5, [r0, #0x28] + str r4, [r0, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B442C +FUN_020B442C: ; 0x020B442C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + ldr r0, [sp, #0x0] + mov r5, #0x1 + str r0, [sp, #0x4] + mov r11, r0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] +_020B4468: + ldr r0, _020B455C ; =UNK_021CED04 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r8, r1, r0 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B4528 + ldr r9, [sp, #0x8] + mov r0, r9 + cmp r0, #0x3 + bge _020B4520 + add r4, r8, #0x24 +_020B4498: + mov r6, r5, lsl r9 + mov r1, r11 + ldr r0, [r8, #0x24] + ands r0, r0, r6 + beq _020B44B8 + ldr r0, [r8, #0x20] + ands r0, r0, r6 + movne r1, r5 +_020B44B8: + cmp r1, #0x0 + beq _020B4514 + ldr r0, _020B4560 ; =UNK_020FF8C4 + cmp r9, #0x0 + ldr r7, [r0, r9, lsl #0x2] + ldreq r10, [r8, #0x14] + mov r0, r8 + mov r1, r9 + ldrne r10, [r8, #0x10] + bl FUN_020B10BC + mov r1, r0 + mov r0, r7 + ldr r7, _020B4564 ; =UNK_021CECFC + ldr r2, [r8, #0x28] + ldr r3, [r8, #0x2c] + ldr r7, [r7, #0x0] + add r2, r10, r2 + blx r7 + cmp r0, #0x0 + ldrne r1, [r4, #0x0] + mvnne r0, r6 + andne r0, r1, r0 + strne r0, [r4, #0x0] +_020B4514: + add r9, r9, #0x1 + cmp r9, #0x3 + blt _020B4498 +_020B4520: + ldr r0, [sp, #0xc] + str r0, [r8, #0x20] +_020B4528: + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, r1 + ldr r0, [sp, #0x4] + add r0, r0, #0x30 + str r0, [sp, #0x4] + blo _020B4468 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B4558: .word UNK_021CED00 +_020B455C: .word UNK_021CED04 +_020B4560: .word UNK_020FF8C4 +_020B4564: .word UNK_021CECFC + + arm_func_start FUN_020B4568 +FUN_020B4568: ; 0x020B4568 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B45E4 ; =UNK_021CECFC + movs r6, r1 + ldr r1, _020B45E8 ; =UNK_021CED00 + ldr r3, _020B45EC ; =UNK_021CED04 + mov r7, r0 + str r2, [r12, #0x0] + mov r5, #0x0 + addeq sp, sp, #0x4 + str r7, [r3, #0x0] + str r6, [r1, #0x0] + ldmeqia sp!, {r4-r7,pc} + mov r4, r5 +_020B45A0: + mov r0, r7 + bl FUN_020B10CC + str r4, [r7, #0xc] + str r4, [r7, #0x10] + str r4, [r7, #0x14] + str r4, [r7, #0x18] + str r4, [r7, #0x1c] + str r4, [r7, #0x20] + str r4, [r7, #0x24] + str r4, [r7, #0x28] + add r5, r5, #0x1 + str r4, [r7, #0x2c] + cmp r5, r6 + add r7, r7, #0x30 + blo _020B45A0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B45E4: .word UNK_021CECFC +_020B45E8: .word UNK_021CED00 +_020B45EC: .word UNK_021CED04 + + arm_func_start FUN_020B45F0 +FUN_020B45F0: ; 0x020B45F0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B4698 ; =UNK_021CED04 + mov r4, #0x30 + ldr r12, [r12, #0x0] + mov r7, r1 + mla r4, r0, r4, r12 + mov r0, r4 + mov r6, r2 + mov r5, r3 + bl FUN_020B10CC + mvn r0, #0x0 + cmp r7, r0 + beq _020B4638 + mov r0, r4 + mov r2, r7 + mov r1, #0x0 + bl FUN_020B10C4 +_020B4638: + mvn r0, #0x0 + cmp r6, r0 + beq _020B4654 + mov r0, r4 + mov r2, r6 + mov r1, #0x1 + bl FUN_020B10C4 +_020B4654: + mvn r0, #0x0 + cmp r5, r0 + beq _020B4670 + mov r0, r4 + mov r2, r5 + mov r1, #0x2 + bl FUN_020B10C4 +_020B4670: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0xc] + ldr r1, [sp, #0x20] + str r0, [r4, #0x10] + ldr r0, [sp, #0x24] + str r1, [r4, #0x14] + str r0, [r4, #0x18] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4698: .word UNK_021CED04 + + arm_func_start FUN_020B469C +FUN_020B469C: ; 0x020B469C + ldr r2, _020B46B0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r0, r1, r0, r2 + bx lr + .balign 4 +_020B46B0: .word UNK_021CED04 + + arm_func_start FUN_020B46B4 +FUN_020B46B4: ; 0x020B46B4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + add r12, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r7, r3 + mov r6, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + mov r0, r7 + str r12, [sp, #0x0] + bl FUN_020B498C + ldr r2, [r7, #0x0] + and r1, r2, #0x300 + cmp r1, #0x100 + beq _020B4708 + cmp r1, #0x300 + beq _020B4708 + and r0, r2, #0x30000000 + orr r1, r1, r0 +_020B4708: + cmp r1, #0x300 + bne _020B478C + ldr r0, _020B4914 ; =0xC000C000 + ldr r1, _020B4918 ; =UNK_021CED08 + and r0, r2, r0 + and r2, r0, #0xc0000000 + mov r12, r2, lsr #0x1e + and r0, r0, #0xc000 + mov lr, r0, asr #0xe + ldr r3, _020B491C ; =UNK_020FF8AC + ldr r0, [r1, #0x0] + ldr r2, _020B4920 ; =UNK_020FF894 + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + mov r12, r12, lsl #0x1 + add r1, r2, lr, lsl #0x3 + add r3, r3, lr, lsl #0x3 + ldrh r2, [r12, r3] + ldrh r1, [r12, r1] + ldrne r0, [r0, #0x0] + mov r2, r2, asr #0x1 + addne r3, r0, r4, lsl #0xc + mov r1, r1, asr #0x1 + add r0, r5, r1 + add r2, r6, r2 + ldr r1, _020B4928 ; =0x04000470 + mov r2, r2, lsl #0xc + str r2, [r1, #0x0] + mov r0, r0, lsl #0xc + moveq r3, r4, lsl #0xc + str r0, [r1, #0x0] + str r3, [r1, #0x0] + b _020B47C0 +_020B478C: + ldr r0, _020B4918 ; =UNK_021CED08 + ldr r1, _020B4928 ; =0x04000470 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + ldrne r0, [r0, #0x0] + addne r2, r0, r4, lsl #0xc + mov r0, r6, lsl #0xc + str r0, [r1, #0x0] + mov r0, r5, lsl #0xc + moveq r2, r4, lsl #0xc + str r0, [r1, #0x0] + str r2, [r1, #0x0] +_020B47C0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, _020B492C ; =0x0400046C + mov r0, r0, lsl #0xc + str r0, [r2, #0x0] + mov r0, r1, lsl #0xc + str r0, [r2, #0x0] + mov r1, #0x1000 + str r1, [r2, #0x0] + ldr r0, _020B4930 ; =0x04000500 + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x10] + mov r0, r0, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r2, r2, r0, lsl #0x10 + ldr r1, _020B4934 ; =0x04000488 + ldr r0, _020B4938 ; =0x04000490 + str r2, [r1, #0x0] + mov r2, #0x10000 + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r3, r4, r2, lsl #0x10 + ldr r2, _020B493C ; =0x00010040 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x40 + str r2, [r0, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _020B4940 ; =0x04000504 + ldr r0, _020B4918 ; =UNK_021CED08 + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r7,pc} + ldr r1, _020B4924 ; =UNK_021CED10 + ldr r0, _020B4944 ; =UNK_02106590 + ldr r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r2, r0 + str r0, [r1, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4914: .word 0xC000C000 +_020B4918: .word UNK_021CED08 +_020B491C: .word UNK_020FF8AC +_020B4920: .word UNK_020FF894 +_020B4924: .word UNK_021CED10 +_020B4928: .word 0x04000470 +_020B492C: .word 0x0400046C +_020B4930: .word 0x04000500 +_020B4934: .word 0x04000488 +_020B4938: .word 0x04000490 +_020B493C: .word 0x00010040 +_020B4940: .word 0x04000504 +_020B4944: .word UNK_02106590 + + arm_func_start FUN_020B4948 +FUN_020B4948: + ldr r0, _020B4954 ; =UNK_02106590 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020B4954: .word UNK_02106590 + + arm_func_start FUN_020B4958 +FUN_020B4958: + ldr r1, _020B4964 ; =UNK_02106590 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4964: .word UNK_02106590 + + arm_func_start FUN_020B4968 +FUN_020B4968: ; 0x020B4968 + ldr r0, _020B4978 ; =UNK_021CED10 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4978: .word UNK_021CED10 + + arm_func_start FUN_020B497C +FUN_020B497C: + ldr r1, _020B4988 ; =UNK_021CED08 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4988: .word UNK_021CED08 + + arm_func_start FUN_020B498C +FUN_020B498C: ; 0x020B498C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r4, [r6, #0x0] + ldr r0, _020B4BCC ; =0xC000C000 + ldr r5, [r6, #0x4] + and r4, r4, r0 + and r0, r4, #0xc0000000 + and r4, r4, #0xc000 + mov lr, r0, lsr #0x1e + ldr r0, _020B4BD0 ; =UNK_020FF8AC + mov r12, r4, asr #0xe + ldr r8, _020B4BD4 ; =UNK_020FF894 + mov r4, lr, lsl #0x1 + add r0, r0, r12, lsl #0x3 + ldrh r9, [r4, r0] + ldr r0, [sp, #0x28] + mov r5, r5, lsl #0x16 + mov r5, r5, lsr #0x16 + mov r7, r5, lsl #0x10 + str r9, [r0, #0x10] + add r5, r8, r12, lsl #0x3 + ldrh r8, [r4, r5] + mov r5, r1 + mov r4, r3 + str r8, [r0, #0x14] + ldr r1, [r5, #0x14] + mov r7, r7, lsr #0x10 + cmp r1, #0x0 + bne _020B4A74 + ldr r1, [r5, #0x8] + mov r2, r2, lsr #0x3 + orr r1, r2, r1, lsl #0x1a + ldr r2, [r5, #0x0] + orr r1, r1, #0x40000000 + ldr r3, [r5, #0x4] + orr r1, r1, r2, lsl #0x14 + orr r2, r1, r3, lsl #0x17 + ldr r8, [r5, #0x10] + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r8, lsl #0x1d + str r2, [r1, #0x0] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x0] + cmp r1, #0x4 + moveq r1, r7, lsl #0xf + moveq r7, r1, lsr #0x10 + ldr r1, _020B4BDC ; =UNK_020FF8D8 + ldr r1, [r1, r2, lsl #0x2] + sub r1, r1, #0x1 + and r1, r7, r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + mov r1, r7, asr r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x4] + b _020B4AE0 +_020B4A74: + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + mov r12, r12, lsl #0x10 + add r1, r1, #0x5 + ldr r3, [r5, #0x8] + mov lr, lr, lsl #0x10 + ldr sb, _020B4BE0 ; =UNK_020FF8F8 + mov r12, r12, lsr #0x10 + ldr r8, _020B4BE4 ; =UNK_020FF928 + add r1, r2, r7, lsl r1 + mov r2, r3, lsl #0x1a + orr r3, r2, r1, lsr #0x3 + mov r7, lr, lsr #0x10 + add r2, r9, r12, lsl #0x4 + add r1, r8, r12, lsl #0x4 + ldr r2, [r2, r7, lsl #0x2] + orr r3, r3, #0x40000000 + ldr r1, [r1, r7, lsl #0x2] + orr r2, r3, r2, lsl #0x14 + ldr r3, [r5, #0x10] + orr r2, r2, r1, lsl #0x17 + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r3, lsl #0x1d + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020B4AE0: + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x10] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0x8] + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x14] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0xc] + ldr r1, [r6, #0x0] + mov r2, r1, lsl #0x2 + mov r1, r1, lsl #0x3 + movs r3, r1, lsr #0x1f + mov r12, r2, lsr #0x1f + ldrne r2, [r0, #0x0] + ldrne r1, [r0, #0x8] + strne r1, [r0, #0x0] + strne r2, [r0, #0x8] + cmp r12, #0x0 + ldrne r2, [r0, #0x4] + ldrne r1, [r0, #0xc] + strne r1, [r0, #0x4] + ldr r1, _020B4BE8 ; =UNK_021CED0C + strne r2, [r0, #0xc] + ldr r7, [r1, #0x0] + cmp r7, #0x0 + beq _020B4B60 + str r3, [sp, #0x0] + add r1, r0, #0x4 + add r2, r0, #0x8 + add r3, r0, #0xc + str r12, [sp, #0x4] + blx r7 +_020B4B60: + ldr r0, [r6, #0x4] + ldr r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x1c + mov r3, r1, lsl #0x12 + ldr r1, [r5, #0xc] + mov r0, r0, lsl #0x10 + ldr r2, _020B4BEC ; =UNK_020FF8D0 + mov r3, r3, lsr #0x1f + cmp r1, #0x0 + mov r0, r0, lsr #0x10 + ldr r1, [r2, r3, lsl #0x2] + movne r0, r0, lsl #0x9 + bne _020B4BA4 + cmp r1, #0x4 + moveq r0, #0x0 + movne r0, r0, lsl #0x5 +_020B4BA4: + cmp r1, #0x2 + moveq r2, #0x1 + movne r2, #0x0 + add r1, r4, r0 + rsb r0, r2, #0x4 + mov r1, r1, lsr r0 + ldr r0, _020B4BF0 ; =0x040004AC + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B4BCC: .word 0xC000C000 +_020B4BD0: .word UNK_020FF8AC +_020B4BD4: .word UNK_020FF894 +_020B4BD8: .word 0x040004A8 +_020B4BDC: .word UNK_020FF8D8 +_020B4BE0: .word UNK_020FF8F8 +_020B4BE4: .word UNK_020FF928 +_020B4BE8: .word UNK_021CED0C +_020B4BEC: .word UNK_020FF8D0 +_020B4BF0: .word 0x040004AC + + arm_func_start FUN_020B4BF4 +FUN_020B4BF4: ; 0x020B4BF4 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B4CD8 ; =UNK_021CED14 + mov r6, r0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r5, [r3, #0x0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r3, #0x30] + ldr r3, [r5, #0x18] + cmp r3, #0x0 + beq _020B4C38 + ldr r0, [r2, #0x0] + mov r1, r6 + blx r3 +_020B4C38: + ldr r0, _020B4CD8 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4CB8 + mvn r0, #0x0 + cmp r4, r0 + beq _020B4C7C + mov r0, r4 + ldr r4, [r5, #0x14] + bl FUN_020B469C + mov r3, #0x1 + mvn r1, r3, lsl r4 + ldr r2, [r0, #0x20] + and r1, r2, r1 + orr r1, r1, r3, lsl r4 + str r1, [r0, #0x20] +_020B4C7C: + ldr r0, [r5, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4CB8 +_020B4C8C: + b _020B4C9C +_020B4C90: + b _020B4CAC +_020B4C94: + b _020B4CAC +_020B4C98: + b _020B4CB8 +_020B4C9C: + mov r0, r5 + mov r1, r6 + bl FUN_020B5090 + b _020B4CB8 +_020B4CAC: + mov r0, r5 + mov r1, r6 + bl FUN_020B53B4 +_020B4CB8: + ldr r2, [r5, #0x1c] + cmp r2, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B4CD8 ; =UNK_021CED14 + mov r1, r6 + ldr r0, [r0, #0x0] + blx r2 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B4CD8: .word UNK_021CED14 + + arm_func_start FUN_020B4CDC +FUN_020B4CDC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B4D9C ; =UNK_021CED14 + mov r5, r0 + ldr r2, [r1, #0x0] + ldr r4, [r2, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, #0x1 + str r0, [r2, #0x30] + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _020B4D24 + ldr r0, [r1, #0x0] + mov r1, r5 + blx r2 +_020B4D24: + ldr r0, _020B4D9C ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4D74 + ldr r0, [r4, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4D74 +_020B4D48: + b _020B4D58 +_020B4D4C: + b _020B4D68 +_020B4D50: + b _020B4D68 +_020B4D54: + b _020B4D74 +_020B4D58: + mov r0, r4 + mov r1, r5 + bl FUN_020B5090 + b _020B4D74 +_020B4D68: + mov r0, r4 + mov r1, r5 + bl FUN_020B53B4 +_020B4D74: + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B4D9C ; =UNK_021CED14 + mov r1, r5 + ldr r0, [r0, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4D9C: .word UNK_021CED14 + + arm_func_start FUN_020B4DA0 +FUN_020B4DA0: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =UNK_021CED14 + ldr r3, [r0, #0x0] + ldr r1, [r3, #0x0] + ldr r1, [r1, #0x14] + cmp r1, #0x0 + bne _020B4DD8 + ldr r2, _020B4E04 ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4E08 ; =0x04000448 + str r1, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + b _020B4DF0 +_020B4DD8: + mov r2, #0x0 + str r2, [r3, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x2c] + ldr r0, [r0, #0x0] + str r2, [r0, #0x28] +_020B4DF0: + ldr r0, _020B4E00 ; =UNK_021CED14 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4E00: .word UNK_021CED14 +_020B4E04: .word 0x04000440 +_020B4E08: .word 0x04000448 + + arm_func_start FUN_020B4E0C +FUN_020B4E0C: ; 0x020B4E0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020B4F28 ; =UNK_021CED14 + mov r4, r0 + str r4, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r5, [r0, #0x14] + cmp r5, #0x0 + bne _020B4ED8 + ldr lr, _020B4F2C ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4F30 ; =0x04000444 + str r1, [lr, #0x0] + str r1, [r0, #0x0] + ldr r12, [r4, #0x0] + ldr r0, _020B4F34 ; =0x04000470 + ldr r3, [r12, #0x0] + ldr r12, [r12, #0x4] + rsb r3, r3, #0x0 + str r3, [r0, #0x0] + rsb r3, r12, #0x0 + str r3, [r0, #0x0] + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [lr, #0x0] + ldr r0, [r2, #0x0] + ldr r5, [r0, #0x8] + mov r0, r5 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4E98 + mov r0, r5 + mov r1, #0x0 + bl FUN_020B1A14 +_020B4E98: + ldr r1, _020B4F28 ; =UNK_021CED14 + str r0, [r4, #0x14] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r5, [r0, #0xc] + mov r0, r5 + bl FUN_020B19A8 + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4ECC + mov r0, r5 + mov r1, #0x0 + bl FUN_020B19C4 +_020B4ECC: + add sp, sp, #0x4 + str r0, [r4, #0x18] + ldmia sp!, {r4-r5,pc} +_020B4ED8: + ldr r4, [r4, #0x8] + mov r1, r5 + mov r0, r4 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r1, #0x0 + beq _020B4F14 + mov r0, r4 + mov r1, r5 + bl FUN_020B1A14 + ldr r1, [r4, #0x20] + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + add r1, r1, #0x5 + mov r1, r0, lsr r1 +_020B4F14: + ldr r0, _020B4F28 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4F28: .word UNK_021CED14 +_020B4F2C: .word 0x04000440 +_020B4F30: .word 0x04000444 +_020B4F34: .word 0x04000470 + + arm_func_start FUN_020B4F38 +FUN_020B4F38: ; 0x020B4F38 + cmp r1, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x1 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x1 + streq r1, [r0, #0x24] + cmp r2, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x2 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x2 + streq r1, [r0, #0x24] + bx lr + + arm_func_start FUN_020B4F74 +FUN_020B4F74: + ldr r0, [r0, #0x24] + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F88 +FUN_020B4F88: + ldr r0, [r0, #0x24] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F9C +FUN_020B4F9C: ; 0x020B4F9C + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020B4FA4 +FUN_020B4FA4: ; 0x020B4FA4 + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020B4FAC +FUN_020B4FAC: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =UNK_021CED14 + ldr r2, [r2, #0x0] + str r0, [r2, #0x2c] + str r1, [r2, #0x28] + bx lr + .balign 4 +_020B4FC0: .word UNK_021CED14 + + arm_func_start FUN_020B4FC4 +FUN_020B4FC4: ; 0x020B4FC4 + ldr r1, _020B5028 ; =UNK_021CED14 + mov r3, #0x0 + ldr r12, [r1, #0x0] + mov r1, #0x1000 + str r0, [r12, #0x2c] + ldr r2, [r0, #0x0] + str r2, [r12, #0x40] + ldr r2, [r0, #0x4] + str r2, [r12, #0x44] + str r3, [r12, #0x48] + ldr r2, [r0, #0x8] + str r2, [r12, #0x4c] + ldr r2, [r0, #0xc] + str r2, [r12, #0x50] + str r3, [r12, #0x54] + str r3, [r12, #0x58] + str r3, [r12, #0x5c] + str r1, [r12, #0x60] + ldr r1, [r0, #0x10] + str r1, [r12, #0x64] + ldr r0, [r0, #0x14] + str r0, [r12, #0x68] + ldr r0, [r12, #0x34] + str r0, [r12, #0x6c] + bx lr + .balign 4 +_020B5028: .word UNK_021CED14 + + arm_func_start FUN_020B502C +FUN_020B502C: ; 0x020B502C + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B5034 +FUN_020B5034: ; 0x020B5034 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + + arm_func_start FUN_020B5040 +FUN_020B5040: ; 0x020B5040 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + + arm_func_start FUN_020B504C +FUN_020B504C: ; 0x020B504C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x70 + bl MIi_CpuClear16 + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x2 + str r0, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x30] + str r1, [r4, #0x28] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B5090 +FUN_020B5090: ; 0x020B5090 + stmdb sp!, {r4-r10,lr} + ldr r5, _020B5158 ; =UNK_021CED14 + mov r9, r1 + ldrh r1, [r9, #0x0] + ldr r2, [r5, #0x0] + mov r10, r0 + add r7, r2, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + ldmlsia sp!, {r4-r10,pc} + mov r6, #0x1 + mov r4, #0x6 +_020B50C0: + mul r1, r8, r4 + ldr r0, [r5, #0x0] + str r6, [r0, #0x30] + ldr r2, [r9, #0x4] + ldrh r0, [r2, r1] + add r1, r2, r1 + strh r0, [r7, #0x0] + ldrh r0, [r1, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r1, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B5108 + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B5108: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5120 + mov r0, r7 + bl FUN_020B515C +_020B5120: + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B513C + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B513C: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r9, #0x0] + mov r8, r0, lsr #0x10 + cmp r8, r1 + blo _020B50C0 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5158: .word UNK_021CED14 + + arm_func_start FUN_020B515C +FUN_020B515C: ; 0x020B515C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r1, _020B53A4 ; =UNK_021CED14 + mov r7, r0 + ldr r0, [r1, #0x0] + add r0, r0, #0x40 + bl G3_LoadMtx43 + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B533C + ldr r2, [r7, #0x0] + ldr r1, _020B53A8 ; =0xC000C000 + and r4, r2, r1 + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B51F4 + ldr r0, [r7, #0x0] + and r2, r4, #0xc000 + mov r0, r0, lsl #0x7 + mov r3, r0, lsr #0x17 + and r1, r4, #0xc0000000 + mov r1, r1, lsr #0x1e + ldr r0, _020B53AC ; =UNK_020FF8AC + mov r2, r2, asr #0xe + mov r1, r1, lsl #0x1 + add r0, r0, r2, lsl #0x3 + cmp r3, #0xff + ldrh r1, [r1, r0] + orrgt r0, r3, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r3, r0, asr #0x10 + add r0, r3, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + b _020B5218 +_020B51F4: + ldr r0, [r7, #0x0] + mov r0, r0, lsl #0x7 + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 +_020B5218: + ldr r0, _020B53A4 ; =UNK_021CED14 + mov r1, r1, lsl #0x10 + ldr r0, [r0, #0x0] + mov r6, r1, asr #0x10 + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B527C + and r1, r4, #0xc000 + and r0, r4, #0xc0000000 + ldrb r4, [r7, #0x0] + ldr r2, _020B53B0 ; =UNK_020FF894 + mov r0, r0, lsr #0x1e + mov r3, r1, asr #0xe + mov r1, r0, lsl #0x1 + add r0, r2, r3, lsl #0x3 + cmp r4, #0x7f + ldrh r1, [r1, r0] + orrgt r0, r4, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r4, r0, asr #0x10 + add r0, r4, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + b _020B5298 +_020B527C: + ldrb r0, [r7, #0x0] + cmp r0, #0x7f + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_020B5298: + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + mov r5, r1, lsl #0x3 + bl FUN_020B4F88 + ldr r2, [r7, #0x0] + ldr r1, _020B53A4 ; =UNK_021CED14 + eor r5, r0, r5, lsr #0x1f + ldr r0, [r1, #0x0] + mov r8, r2, lsl #0x2 + bl FUN_020B4F74 + ldr r2, [r7, #0x0] + eor r1, r0, r8, lsr #0x1f + bic r0, r2, #0x10000000 + str r0, [r7, #0x0] + ldr r2, [r7, #0x0] + ldr r3, _020B53A4 ; =UNK_021CED14 + orr r2, r2, r5, lsl #0x1c + str r2, [r7, #0x0] + ldr r2, [r7, #0x0] + mov r0, r6 + bic r2, r2, #0x20000000 + str r2, [r7, #0x0] + ldr r5, [r7, #0x0] + mov r2, r4, lsl #0x10 + orr r1, r5, r1, lsl #0x1d + str r1, [r7, #0x0] + ldr r5, [r3, #0x0] + mov r1, r2, asr #0x10 + ldr r4, [r5, #0x8] + mov r3, r7 + add r2, r4, #0xc + str r2, [sp, #0x0] + ldr r4, [r5, #0x14] + mvn r2, #0x0 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} +_020B533C: + ldr r2, _020B53A4 ; =UNK_021CED14 + ldr r0, [r7, #0x0] + ldr r5, [r2, #0x0] + mov r0, r0, lsl #0x7 + ldr r4, [r5, #0x8] + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + ldrb r1, [r7, #0x0] + add r4, r4, #0xc + movgt r0, r0, asr #0x10 + str r4, [sp, #0x0] + ldr r4, [r5, #0x14] + cmp r1, #0x7f + orrgt r1, r1, #0xff00 + movgt r1, r1, lsl #0x10 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + movgt r1, r1, asr #0x10 + mov r3, r7 + mvn r2, #0x0 + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B53A4: .word UNK_021CED14 +_020B53A8: .word 0xC000C000 +_020B53AC: .word UNK_020FF8AC +_020B53B0: .word UNK_020FF894 + + arm_func_start FUN_020B53B4 +FUN_020B53B4: ; 0x020B53B4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r2, _020B57B0 ; =UNK_021CED14 + mov r10, r0 + ldr r0, [r2, #0x0] + mov r11, r1 + ldr r9, [r0, #0x2c] + ldr r1, _020B57B0 ; =UNK_021CED14 + cmp r9, #0x0 + ldreq sb, _020B57B4 ; =UNK_020FF958 + ldr r3, [r1, #0x0] + ldr r4, [r9, #0x10] + str r4, [sp, #0x18] + ldr r2, [r9, #0x14] + str r2, [sp, #0x1c] + ldr r1, [r10, #0x0] + sub r1, r4, r1 + str r1, [sp, #0x18] + ldr r1, [r10, #0x4] + sub r1, r2, r1 + str r1, [sp, #0x1c] + ldr r2, [r3, #0x24] + ldr r1, [r3, #0x10] + cmp r2, #0x0 + str r1, [sp, #0x4] + bne _020B5430 + ldr r1, [r3, #0x28] + cmp r1, #0x0 + movne r1, #0x1 + strne r1, [sp, #0x0] + bne _020B5438 +_020B5430: + mov r1, #0x0 + str r1, [sp, #0x0] +_020B5438: + ldrh r1, [r11, #0x0] + add r7, r0, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + addls sp, sp, #0x44 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + ldr r4, _020B57B0 ; =UNK_021CED14 + str r8, [sp, #0x14] + str r0, [sp, #0xc] +_020B5460: + ldr r2, [r4, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x6 + str r0, [r2, #0x30] + mul r0, r8, r1 + ldr r1, [r11, #0x4] + add r2, r1, r0 + ldrh r0, [r1, r0] + strh r0, [r7, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r2, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B54B0 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B54B0: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5790 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0x4] + cmp r0, #0x0 + mov r0, #0x400 + rsb r0, r0, #0x0 + and r2, r1, r0 + ldr r0, [sp, #0x4] + mov r1, r1, lsl #0x16 + add r1, r0, r1, lsr #0x16 + ldr r0, _020B57B8 ; =0x000003FF + and r0, r1, r0 + orr r0, r2, r0 + str r0, [r7, #0x4] + beq _020B5600 + ldr r0, [r10, #0x14] + ldr lr, [r4, #0x0] + sub r1, r0, #0x1 + ldr r0, [r7, #0x0] + ldr r6, [lr, #0x28] + mov r2, r0, lsl #0x2 + mov r2, r2, lsr #0x1f + mov r2, r2, lsl #0x1 + mov r0, r0, lsl #0x3 + orr r5, r2, r0, lsr #0x1f + add r0, r6, r5, lsl #0x2 + add r0, r0, r1, lsl #0x1 + ldrh r1, [r0, #0x10] + ldr r0, _020B57BC ; =0x0000FFFF + str r1, [sp, #0x8] + cmp r1, r0 + bne _020B55CC + cmp r5, #0x0 + bne _020B5558 + ldr r1, [lr, #0x20] + mov r0, r6 + blx r1 + str r0, [sp, #0x8] + b _020B55B4 +_020B5558: + ands r0, r5, #0x1 + add r12, sp, #0x30 + ldmia r6, {r0-r3} + stmia r12, {r0-r3} + beq _020B5584 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + rsb r1, r1, #0x0 + str r1, [sp, #0x30] + rsb r0, r0, #0x0 + str r0, [sp, #0x34] +_020B5584: + ands r0, r5, #0x2 + beq _020B55A4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + rsb r1, r1, #0x0 + str r1, [sp, #0x38] + rsb r0, r0, #0x0 + str r0, [sp, #0x3c] +_020B55A4: + ldr r1, [lr, #0x20] + add r0, sp, #0x30 + blx r1 + str r0, [sp, #0x8] +_020B55B4: + ldr r1, [r10, #0x14] + add r0, r6, r5, lsl #0x2 + sub r1, r1, #0x1 + add r1, r0, r1, lsl #0x1 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x10] +_020B55CC: + ldr r1, [r9, #0x0] + add r0, sp, #0x20 + str r1, [sp, #0x20] + ldr r2, [r9, #0x4] + mov r1, r7 + str r2, [sp, #0x24] + ldr r3, [r9, #0x8] + add r2, sp, #0x18 + str r3, [sp, #0x28] + ldr r3, [r9, #0xc] + str r3, [sp, #0x2c] + bl FUN_020B57D8 + b _020B5750 +_020B5600: + ldr r0, _020B57C0 ; =0x0000FFFE + str r0, [sp, #0x8] + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B5714 + ldr r2, [r7, #0x0] + ldr r1, _020B57C4 ; =0xC000C000 + mov r6, r2, lsl #0x3 + and r5, r2, r1 + bl FUN_020B4F88 + ldr r1, [r7, #0x0] + eor r6, r0, r6, lsr #0x1f + mov r1, r1, lsl #0x2 + ldr r0, [r4, #0x0] + str r1, [sp, #0x10] + bl FUN_020B4F74 + ldr r1, [sp, #0x10] + eor r0, r0, r1, lsr #0x1f + ldr r1, [r7, #0x0] + bic r1, r1, #0x10000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r1, r1, r6, lsl #0x1c + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + bic r1, r1, #0x20000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r0, r1, r0, lsl #0x1d + str r0, [r7, #0x0] + ldr r0, [r4, #0x0] + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B56D4 + and r1, r5, #0xc000 + mov r2, r1, asr #0xe + ldr r1, _020B57C8 ; =UNK_020FF8AC + and r3, r5, #0xc0000000 + mov r3, r3, lsr #0x1e + add r2, r1, r2, lsl #0x3 + mov r3, r3, lsl #0x1 + ldr r0, [r7, #0x0] + ldr r1, _020B57CC ; =0xFE00FFFF + ldrh r2, [r3, r2] + and r1, r0, r1 + mov r0, r0, lsl #0x7 + add r0, r2, r0, lsr #0x17 + rsb r2, r0, #0x0 + ldr r0, _020B57D0 ; =0x000001FF + and r0, r2, r0 + orr r0, r1, r0, lsl #0x10 + str r0, [r7, #0x0] +_020B56D4: + ldr r0, [r4, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B5714 + and r1, r5, #0xc000 + mov r3, r1, asr #0xe + and r1, r5, #0xc0000000 + mov r1, r1, lsr #0x1e + mov r2, r1, lsl #0x1 + ldr r1, _020B57D4 ; =UNK_020FF894 + ldrb r0, [r7, #0x0] + add r1, r1, r3, lsl #0x3 + ldrh r1, [r2, r1] + add r0, r0, r1 + rsb r0, r0, #0x0 + strb r0, [r7, #0x0] +_020B5714: + ldr r2, [r7, #0x0] + ldr r0, _020B57CC ; =0xFE00FFFF + ldr r1, [sp, #0x18] + and r0, r2, r0 + mov r2, r2, lsl #0x7 + mov r2, r2, lsr #0x17 + add r2, r2, r1, asr #0xc + ldr r1, _020B57D0 ; =0x000001FF + and r1, r2, r1 + orr r0, r0, r1, lsl #0x10 + str r0, [r7, #0x0] + ldrb r1, [r7, #0x0] + ldr r0, [sp, #0x1c] + add r0, r1, r0, asr #0xc + strb r0, [r7, #0x0] +_020B5750: + ldr r3, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x1c] + mov r0, r7 + blx r3 + cmp r0, #0x1 + addne sp, sp, #0x44 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B5790 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B5790: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + ldrh r0, [r11, #0x0] + cmp r8, r0 + blo _020B5460 + add sp, sp, #0x44 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B57B0: .word UNK_021CED14 +_020B57B4: .word UNK_020FF958 +_020B57B8: .word 0x000003FF +_020B57BC: .word 0x0000FFFF +_020B57C0: .word 0x0000FFFE +_020B57C4: .word 0xC000C000 +_020B57C8: .word UNK_020FF8AC +_020B57CC: .word 0xFE00FFFF +_020B57D0: .word 0x000001FF +_020B57D4: .word UNK_020FF894 + + arm_func_start FUN_020B57D8 +FUN_020B57D8: ; 0x020B57D8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r4, [r1, #0x0] + ldr r3, _020B5A9C ; =0x01FF0000 + and r3, r4, r3 + mov r3, r3, lsr #0x10 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0xff + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x0] + ldr r3, [r1, #0x0] + and r3, r3, #0xff + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0x7f + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x4] + ldr r5, [r1, #0x0] + and r4, r5, #0x300 + cmp r4, #0x100 + beq _020B5858 + cmp r4, #0x300 + beq _020B5858 + and r3, r5, #0x30000000 + orr r4, r4, r3 +_020B5858: + cmp r4, #0x300 + bne _020B58AC + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r5, r3 + and r5, r3, #0xc0000000 + and r3, r3, #0xc000 + mov r6, r5, lsr #0x1e + mov r5, r3, asr #0xe + ldr r3, _020B5AA8 ; =UNK_020FF894 + mov r6, r6, lsl #0x1 + add r4, r4, r5, lsl #0x3 + add r3, r3, r5, lsl #0x3 + ldrh r5, [r6, r4] + ldr r7, [sp, #0x0] + ldrh r3, [r6, r3] + ldr r4, [sp, #0x4] + add r5, r7, r5, lsl #0xb + add r3, r4, r3, lsl #0xb + str r5, [sp, #0x0] + str r3, [sp, #0x4] +_020B58AC: + ldr r5, [r0, #0x8] + ldr r4, [sp, #0x4] + add r3, sp, #0x0 + smull r8, r7, r5, r4 + cmp r3, r3 + ldr r6, [r0, #0x0] + mov r4, #0x1000 + addeq r3, sp, #0x8 + adds r8, r8, r4 + ldr r5, [sp, #0x0] + adc r7, r7, #0x0 + smlal r8, r7, r6, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r3, #0x0] + ldr r7, [r0, #0xc] + ldr r6, [sp, #0x4] + ldr r5, [r0, #0x4] + smull r8, r6, r7, r6 + adds r7, r8, r4 + ldr r4, [sp, #0x0] + adc r6, r6, #0x0 + smlal r7, r6, r5, r4 + mov r5, r7, lsr #0xc + add r4, sp, #0x8 + orr r5, r5, r6, lsl #0x14 + str r5, [r3, #0x4] + cmp r3, r4 + ldreq r3, [sp, #0xc] + ldreq r4, [sp, #0x8] + streq r3, [sp, #0x4] + ldr r3, _020B5AAC ; =UNK_021CED14 + streq r4, [sp, #0x0] + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x4] + cmp r3, #0x0 + beq _020B597C + cmp r3, #0x2 + moveq r5, #0x300 + movne r5, #0x100 + cmp r5, #0x100 + ldreq r4, [r1, #0x0] + ldreq r3, _020B5AB0 ; =0xC1FFFCFF + andeq r3, r4, r3 + orreq r3, r3, r5 + streq r3, [r1, #0x0] + beq _020B597C + ldr r4, [r1, #0x0] + ldr r3, _020B5AB0 ; =0xC1FFFCFF + and r3, r4, r3 + orr r3, r3, r5 + str r3, [r1, #0x0] +_020B597C: + ldr r6, [r1, #0x0] + and r5, r6, #0x300 + cmp r5, #0x100 + beq _020B599C + cmp r5, #0x300 + beq _020B599C + and r3, r6, #0x30000000 + orr r5, r5, r3 +_020B599C: + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r6, r3 + and r6, r3, #0xc0000000 + and r3, r3, #0xc000 + mov lr, r3, asr #0xe + mov r6, r6, lsr #0x1e + mov r3, r6, lsl #0x1 + add r4, r4, lr, lsl #0x3 + ldrh r4, [r3, r4] + ldr r6, [r0, #0x0] + ldr r8, _020B5AA8 ; =UNK_020FF894 + mov r12, r4, asr #0x1 + mov r4, r12, lsl #0xc + rsb r7, r4, #0x0 + mla r7, r6, r12, r7 + add lr, r8, lr, lsl #0x3 + ldrh r3, [r3, lr] + ldr r6, [r0, #0x8] + ldr lr, [sp, #0x0] + mov r3, r3, asr #0x1 + mla r7, r6, r3, r7 + add r6, lr, r7 + str r6, [sp, #0x0] + mov lr, r3, lsl #0xc + ldr r6, [r0, #0x4] + rsb r7, lr, #0x0 + mla r7, r6, r12, r7 + ldr r0, [r0, #0xc] + ldr r6, [sp, #0x4] + mla r3, r0, r3, r7 + add r0, r6, r3 + str r0, [sp, #0x4] + cmp r5, #0x300 + moveq r0, #0x1 + movne r0, #0x0 + cmp r0, #0x0 + beq _020B5A4C + ldr r3, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r3, r3, r4 + sub r0, r0, lr + str r3, [sp, #0x0] + str r0, [sp, #0x4] +_020B5A4C: + ldr r4, [sp, #0x0] + ldr r0, [r2, #0x0] + ldr r3, [sp, #0x4] + add r5, r4, r0 + str r5, [sp, #0x0] + ldr r2, [r2, #0x4] + ldr r0, _020B5AB4 ; =0x000001FF + add r2, r3, r2 + str r2, [sp, #0x4] + mov r3, r2, asr #0xc + ldr r4, [r1, #0x0] + ldr r2, _020B5AB8 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r4, r2 + and r4, r0, r5, asr #0xc + orr r0, r2, r3 + orr r0, r0, r4, lsl #0x10 + str r0, [r1, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B5A9C: .word 0x01FF0000 +_020B5AA0: .word 0xC000C000 +_020B5AA4: .word UNK_020FF8AC +_020B5AA8: .word UNK_020FF894 +_020B5AAC: .word UNK_021CED14 +_020B5AB0: .word 0xC1FFFCFF +_020B5AB4: .word 0x000001FF +_020B5AB8: .word 0xFE00FF00 + + arm_func_start FUN_020B5ABC +FUN_020B5ABC: ; 0x020B5ABC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + add r5, sp, #0x0 + mov r4, #0x0 + str r4, [r5, #0x0] + str r4, [r5, #0x4] + mov r8, r2 + ldr r2, [sp, #0x28] + mov r5, r0 + mov r9, r1 + mov r4, r3 + cmp r2, #0x0 + mov r7, #0x1 + beq _020B5B24 + add r6, sp, #0x28 +_020B5AF8: + mov r0, r9 + mov r1, r8 + mov r3, r6 + bl FUN_020B5BC8 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x28] + cmp r0, r1 + strgt r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r2, #0x0 + bne _020B5AF8 +_020B5B24: + ldr r0, [r9, #0x0] + sub r2, r7, #0x1 + ldrsb r1, [r0, #0x1] + ldr r0, [sp, #0x0] + add r1, r4, r1 + mul r1, r2, r1 + sub r1, r1, r4 + str r1, [sp, #0x4] + str r0, [r5, #0x0] + str r1, [r5, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B5B54 +FUN_020B5B54: ; 0x020B5B54 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + str r2, [sp, #0x0] + add r3, sp, #0x4 + mov r2, #0x0 + str r2, [r3, #0x0] + mov r8, r0 + str r2, [r3, #0x4] + ldr r7, [r8, #0x4] + add r0, sp, #0x0 + mov r5, r1 + mov r4, #0x1 + blx r7 + cmp r0, #0x0 + beq _020B5BAC + add r6, sp, #0x0 +_020B5B94: + cmp r0, #0xa + mov r0, r6 + addeq r4, r4, #0x1 + blx r7 + cmp r0, #0x0 + bne _020B5B94 +_020B5BAC: + ldr r0, [r8, #0x0] + ldrsb r0, [r0, #0x1] + add r0, r5, r0 + mul r0, r4, r0 + sub r0, r0, r5 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B5BC8 +FUN_020B5BC8: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + str r2, [sp, #0x0] + ldr r4, [r8, #0x4] + add r0, sp, #0x0 + mov r7, r1 + mov r6, r3 + mov r5, #0x0 + blx r4 + movs r1, r0 + beq _020B5C58 + ldr sb, _020B5C84 ; =0x0000FFFF + add r10, sp, #0x0 +_020B5C00: + cmp r1, #0xa + beq _020B5C58 + mov r0, r8 + bl FUN_020B5CE4 + mov r1, r0 + cmp r1, r9 + ldreq r0, [r8, #0x0] + ldreqh r1, [r0, #0x2] + mov r0, r8 + bl FUN_020B5C88 + ldrh r1, [r8, #0x8] + cmp r1, #0x0 + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreqsb r0, [r0, #0x2] + add r1, r7, r0 + mov r0, r10 + add r5, r5, r1 + blx r4 + movs r1, r0 + bne _020B5C00 +_020B5C58: + cmp r6, #0x0 + beq _020B5C70 + cmp r1, #0xa + ldreq r0, [sp, #0x0] + movne r0, #0x0 + str r0, [r6, #0x0] +_020B5C70: + cmp r5, #0x0 + subgt r5, r5, r7 + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5C84: .word 0x0000FFFF + + arm_func_start FUN_020B5C88 +FUN_020B5C88: ; 0x020B5C88 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + ldr lr, [r3, #0xc] + cmp lr, #0x0 + beq _020B5CD8 +_020B5CA0: + ldrh r12, [lr, #0x0] + cmp r12, r1 + bhi _020B5CCC + ldrh r2, [lr, #0x2] + cmp r1, r2 + ldrlsh r2, [r0, #0xa] + addls r3, lr, #0x8 + subls r0, r1, r12 + mlals r0, r2, r0, r3 + addls sp, sp, #0x4 + ldmlsia sp!, {pc} +_020B5CCC: + ldr lr, [lr, #0x4] + cmp lr, #0x0 + bne _020B5CA0 +_020B5CD8: + add r0, r3, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B5CE4 +FUN_020B5CE4: ; 0x020B5CE4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020B5D2C +_020B5CFC: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhi _020B5D20 + ldrh r2, [r0, #0x2] + cmp r1, r2 + bhi _020B5D20 + bl FUN_020B5D7C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020B5D20: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _020B5CFC +_020B5D2C: + ldr r0, _020B5D38 ; =0x0000FFFF + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5D38: .word 0x0000FFFF + + arm_func_start FUN_020B5D3C +FUN_020B5D3C: ; 0x020B5D3C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r4 + bl FUN_020B7558 + sub r0, r0, #0x1 + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x0 + movne r1, #0x2 + moveq r1, #0x3 + ldr r0, _020B5D78 ; =FUN_020B7718 + strh r1, [r4, #0xa] + str r0, [r4, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020B5D78: .word FUN_020B7718 + + arm_func_start FUN_020B5D7C +FUN_020B5D7C: ; 0x020B5D7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r3, [r0, #0x4] + ldr r2, _020B5E4C ; =0x0000FFFF + cmp r3, #0x0 + beq _020B5DA8 + cmp r3, #0x1 + beq _020B5DC4 + cmp r3, #0x2 + beq _020B5DD8 + b _020B5E40 +_020B5DA8: + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #0xc] + sub r0, r1, r2 + add r0, r3, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + b _020B5E40 +_020B5DC4: + ldrh r2, [r0, #0x0] + sub r1, r1, r2 + add r0, r0, r1, lsl #0x1 + ldrh r2, [r0, #0xc] + b _020B5E40 +_020B5DD8: + ldrh r3, [r0, #0xc] + add r0, r0, #0xc + add r0, r0, #0x2 + sub r3, r3, #0x1 + add lr, r0, r3, lsl #0x2 + cmp r0, lr + bhi _020B5E40 +_020B5DF4: + sub r12, lr, r0 + mov r3, r12, asr #0x1 + add r3, r12, r3, lsr #0x1e + mov r3, r3, asr #0x2 + add r3, r3, r3, lsr #0x1f + mov r12, r3, asr #0x1 + mov r3, r12, lsl #0x2 + ldrh r3, [r0, r3] + add r12, r0, r12, lsl #0x2 + cmp r3, r1 + addcc r0, r12, #0x4 + blo _020B5E38 + cmp r1, r3 + subcc lr, r12, #0x4 + blo _020B5E38 + ldrh r2, [r12, #0x2] + b _020B5E40 +_020B5E38: + cmp r0, lr + bls _020B5DF4 +_020B5E40: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5E4C: .word 0x0000FFFF + + arm_func_start FUN_020B5E50 +FUN_020B5E50: ; 0x020B5E50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r7, r0 + mov r0, r1 + cmp r0, #0x8 + ldr r0, [sp, #0x60] + str r1, [sp, #0x10] + str r0, [sp, #0x60] + ldr r0, [sp, #0x6c] + str r2, [sp, #0x14] + str r0, [sp, #0x6c] + ldrlt r0, [sp, #0x10] + mov r11, r3 + ldr r6, [sp, #0x64] + ldr r5, [sp, #0x68] + movge r2, #0x3 + clzlt r0, r0 + rsblt r2, r0, #0x1f + ldr r0, [sp, #0x14] + cmp r0, #0x8 + ldrlt r0, [sp, #0x14] + movge r1, #0x3 + clzlt r0, r0 + rsblt r1, r0, #0x1f + ldr r0, _020B6170 ; =UNK_020FF970 + mvn r3, #0x0 + add r1, r0, r1, lsl #0x3 + add r0, r1, r2, lsl #0x1 + ldrb r4, [r1, r2, lsl #0x1] + ldrb r1, [r0, #0x1] + ldr r2, [sp, #0x14] + cmp r6, #0x0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x10] + and r1, r1, r3, lsl r4 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x18] + and r1, r2, r3, lsl r1 + str r1, [sp, #0x20] + moveq r1, #0x1 + streq r1, [sp, #0x24] + movne r1, #0x2 + strne r1, [sp, #0x24] + mov r1, #0x0 + str r1, [sp, #0x28] + bl FUN_020B704C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r10, r1, asr r4 + ldr r1, [sp, #0x18] + mov r1, r2, asr r1 + str r1, [sp, #0x2c] + ldr r1, [sp, #0x24] + mov r2, r1, lsl r4 + ldr r1, [sp, #0x18] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x6c] + mov r9, r2, asr r1 + mov r1, #0x0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + b _020B5FE8 +_020B5F48: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x18] + ldr r8, [sp, #0x34] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x60] + add lr, r1, r2, lsl #0x3 + b _020B5FD4 +_020B5F64: + mov r1, r8, lsl r4 + add r2, r11, r1, lsl #0x3 + ldr r1, _020B6174 ; =0x000001FF + ldr r3, [r7, #0x0] + and r12, r2, r1 + ldr r1, _020B6178 ; =0xFE00FF00 + and r2, lr, #0xff + and r1, r3, r1 + orr r1, r1, r2 + orr r1, r1, r12, lsl #0x10 + str r1, [r7, #0x0] + ldr r3, [r7, #0x0] + ldr r1, _020B617C ; =0x3FFF3FFF + mov r2, #0x400 + and r1, r3, r1 + orr r1, r1, r0 + str r1, [r7, #0x0] + rsb r1, r2, #0x0 + ldrh r2, [r7, #0x4] + add r8, r8, #0x1 + and r1, r2, r1 + orr r1, r1, r5 + strh r1, [r7, #0x4] + ldr r1, [r7, #0x0] + add r5, r5, r9 + bic r1, r1, #0x2000 + orr r1, r1, r6, lsl #0xd + str r1, [r7], #0x8 +_020B5FD4: + cmp r8, r10 + blt _020B5F64 + ldr r1, [sp, #0x30] + add r1, r1, #0x1 + str r1, [sp, #0x30] +_020B5FE8: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x2c] + cmp r2, r1 + blt _020B5F48 + ldr r0, [sp, #0x28] + mla r0, r10, r1, r0 + str r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6078 + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r6, [sp, #0x4] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + str r5, [sp, #0x8] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r3, r11, r1, lsl #0x3 + mov r0, r7 + mov r1, r4 + bl FUN_020B5E50 + ldr r1, [sp, #0x24] + add r7, r7, r0, lsl #0x3 + mul r2, r1, r4 + ldr r1, [sp, #0x20] + mul r2, r1, r2 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6078: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B60F0 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + mov r3, r11 + add r0, r1, r0, lsl #0x3 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + str r5, [sp, #0x8] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + mov r0, r7 + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + mov r2, r4 + bl FUN_020B5E50 + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + add r7, r7, r0, lsl #0x3 + mul r1, r2, r1 + mul r2, r4, r1 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B60F0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r0, r1, r0, lsl #0x3 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + sub r1, r2, r1 + ldr r2, [sp, #0x20] + str r6, [sp, #0x4] + sub r2, r3, r2 + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x6c] + str r5, [sp, #0x8] + mov r0, r7 + add r3, r11, r3, lsl #0x3 + str r4, [sp, #0xc] + bl FUN_020B5E50 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6164: + ldr r0, [sp, #0x28] + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B6170: .word UNK_020FF970 +_020B6174: .word 0x000001FF +_020B6178: .word 0xFE00FF00 +_020B617C: .word 0x3FFF3FFF + + arm_func_start FUN_020B6180 +FUN_020B6180: ; 0x020B6180 + stmdb sp!, {r4-r6,lr} + mov r3, r0, lsr #0x3 + mov r6, r1, lsr #0x3 + mul r12, r3, r6 + and r2, r0, #0x4 + and lr, r0, #0x2 + and r0, r0, #0x1 + add r4, r0, lr, lsr #0x1 + mov r5, r2, lsr #0x2 + and r0, r1, #0x4 + add lr, r12, #0x0 + add r12, r5, r4, lsl #0x1 + mla r12, r6, r12, lr + and lr, r1, #0x2 + and r1, r1, #0x1 + add lr, r1, lr, lsr #0x1 + mov r1, r0, lsr #0x2 + add r1, r1, lr, lsl #0x1 + mla r12, r3, r1, r12 + add r1, r4, r2, lsr #0x2 + add r0, lr, r0, lsr #0x2 + mla r0, r1, r0, r12 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B61DC +FUN_020B61DC: ; 0x020B61DC + stmdb sp!, {r4-r8,lr} + ldr r12, [sp, #0x1c] + ldr r8, [sp, #0x18] + mov r12, r12, lsl #0x1c + mov r4, r12, lsr #0x10 + mov r6, #0x0 + cmp r2, #0x0 + ldmleia sp!, {r4-r8,pc} + mov lr, r3, lsl #0x1 + mov r12, r6 +_020B6204: + mov r5, r0 + mov r7, r12 + cmp r1, #0x0 + ble _020B622C +_020B6214: + orr r3, r4, r8 + add r7, r7, #0x1 + cmp r7, r1 + add r8, r8, #0x1 + strh r3, [r5], #0x2 + blt _020B6214 +_020B622C: + add r6, r6, #0x1 + cmp r6, r2 + add r0, r0, lr + blt _020B6204 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B6240 +FUN_020B6240: ; 0x020B6240 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x24] + ldr lr, [sp, #0x20] + cmp r5, #0x20 + ldr r12, [sp, #0x28] + bgt _020B6280 + mla r4, r5, lr, r3 + ldr lr, [sp, #0x2c] + str r12, [sp, #0x0] + mov r3, r5 + add r0, r0, r4, lsl #0x1 + str lr, [sp, #0x4] + bl FUN_020B61DC + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} +_020B6280: + ldr r4, [sp, #0x2c] + add r7, lr, r2 + mov r2, r4, lsl #0x1c + cmp lr, r7 + add r8, r3, r1 + mov r4, r2, lsr #0x10 + addge sp, sp, #0x8 + ldmgeia sp!, {r4-r8,pc} +_020B62A0: + cmp lr, #0x20 + movlt r1, lr + addge r1, lr, #0x20 + mov r6, r3 + cmp r3, r8 + add r5, r0, r1, lsl #0x6 + bge _020B62E4 +_020B62BC: + cmp r6, #0x20 + movlt r1, r6 + addge r1, r6, #0x3e0 + orr r2, r4, r12 + mov r1, r1, lsl #0x1 + add r6, r6, #0x1 + strh r2, [r5, r1] + cmp r6, r8 + add r12, r12, #0x1 + blt _020B62BC +_020B62E4: + add lr, lr, #0x1 + cmp lr, r7 + blt _020B62A0 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B62F8 +FUN_020B62F8: ; 0x020B62F8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + cmp r2, #0x8 + movlt r4, r2 + movge r12, #0x3 + clzlt r4, r4 + rsblt r12, r4, #0x1f + cmp r3, #0x8 + movlt r4, r3 + movge r6, #0x3 + clzlt r4, r4 + rsblt r6, r4, #0x1f + ldr r4, _020B6378 ; =UNK_020FF970 + ldr r5, [sp, #0x28] + add r4, r4, r6, lsl #0x3 + ldrb r6, [r4, r12, lsl #0x1] + add r12, r4, r12, lsl #0x1 + ldr r4, _020B637C ; =FUN_020B6908 + strb r6, [sp, #0x14] + ldrb r6, [r12, #0x1] + ldr lr, _020B6380 ; =FUN_020B68AC + ldr ip, _020B6384 ; =FUN_020B64C0 + strb r6, [sp, #0x15] + str r5, [sp, #0x0] + str r4, [sp, #0x4] + str lr, [sp, #0x8] + str r12, [sp, #0xc] + ldr r12, [sp, #0x14] + str r12, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x18 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B6378: .word UNK_020FF970 +_020B637C: .word FUN_020B6908 +_020B6380: .word FUN_020B68AC +_020B6384: .word FUN_020B64C0 + + arm_func_start FUN_020B6388 +FUN_020B6388: ; 0x020B6388 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, _020B63C0 ; =FUN_020B6B10 + str lr, [sp, #0x0] + ldr lr, _020B63C4 ; =FUN_020B68AC + str r12, [sp, #0x4] + ldr ip, _020B63C8 ; =FUN_020B66D4 + str lr, [sp, #0x8] + str r12, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B63C0: .word FUN_020B6B10 +_020B63C4: .word FUN_020B68AC +_020B63C8: .word FUN_020B66D4 + + arm_func_start FUN_020B63CC +FUN_020B63CC: ; 0x020B63CC + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrh r1, [sp, #0x2c] + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl FUN_020B5CE4 + ldr r1, _020B6484 ; =0x0000FFFF + mov r4, r0 + cmp r4, r1 + ldreq r0, [r7, #0x0] + ldreqh r4, [r0, #0x2] + mov r0, r7 + mov r1, r4 + bl FUN_020B5C88 + str r0, [sp, #0x8] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x8] + add r1, sp, #0x8 + ldrh r3, [r0, #0x2] + add r12, r0, #0x8 + mov r0, r8 + mla r3, r4, r3, r12 + str r3, [sp, #0xc] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r4, [r8, #0x14] + ldrsb r2, [r1, #0x0] + mov r1, r7 + mov r3, r5 + add r2, r6, r2 + blx r4 + ldrh r0, [r7, #0x8] + cmp r0, #0x0 + ldrne r0, [sp, #0x8] + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreq r0, [sp, #0x8] + ldreqsb r0, [r0, #0x2] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B6484: .word 0x0000FFFF + + arm_func_start FUN_020B6488 +FUN_020B6488: ; 0x020B6488 + str r2, [r0, #0x4] + ldr r2, [sp, #0x0] + str r3, [r0, #0x8] + strb r2, [r0, #0xc] + ldr r2, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [sp, #0x8] + str r2, [r0, #0x14] + ldr r2, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r2, [r0, #0x1c] + str r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B64C0 +FUN_020B64C0: ; 0x020B64C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x44] + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x78] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x1c] + ldr r2, [sp, #0x7c] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x20] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B6528 + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B6528: + bic r1, r10, #0x7 + str r1, [sp, #0x30] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x10] + bic r1, r1, #0x7 + str r1, [sp, #0x14] + ldr r1, [sp, #0x44] + str r2, [sp, #0x4c] + mov r3, r1, lsl #0x6 + mov r2, r3, asr #0x2 + ldr r1, [sp, #0x20] + add r3, r3, r2, lsr #0x1d + ldr r2, [sp, #0x1c] + add r6, r1, #0x7 + add r2, r2, #0x7 + bic r5, r2, #0x7 + bic r2, r6, #0x7 + ldr r1, [sp, #0x30] + str r2, [sp, #0x24] + mov r2, r3, asr #0x3 + str r2, [sp, #0x48] + mov r4, r1, asr #0x2 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x14] + add r2, r2, r4, lsr #0x1d + mov r2, r2, asr #0x3 + str r2, [sp, #0x2c] + ldr r2, [sp, #0x14] + mov r1, r1, asr #0x2 + add r1, r2, r1, lsr #0x1d + mov r6, r1, asr #0x3 + ldr r1, [sp, #0x24] + cmp r2, r1 + ldr r1, [r0, #0x4] + str r1, [sp, #0x40] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x0] + str r1, [sp, #0x3c] + str r0, [sp, #0x28] + ldrb r0, [sp, #0x4c] + str r0, [sp, #0x38] + ldrb r0, [sp, #0x4d] + str r0, [sp, #0x34] + addge sp, sp, #0x54 + ldmgeia sp!, {r4-r11,pc} + mov r4, #0x0 + mov r11, #0x8 +_020B65E4: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x2c] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + movge r9, r4 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r11 + sub r0, r0, r9 + str r0, [sp, #0x18] + ldr r0, [sp, #0x30] + cmp r0, r5 + mov r8, r0 + bge _020B66B0 +_020B6630: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x40] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x3c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + bl FUN_020B7068 + ldr r2, [sp, #0x1c] + cmp r8, r10 + sublt r1, r10, r8 + sub r2, r2, r8 + movge r1, r4 + cmp r2, #0x8 + movgt r2, r11 + sub r3, r2, r1 + ldr r2, [sp, #0x18] + ldr r12, [sp, #0x48] + str r2, [sp, #0x0] + ldr r2, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x44] + str r2, [sp, #0x8] + ldr r2, [sp, #0x28] + mla r0, r12, r0, r2 + mov r2, r9 + bl FUN_020B6F18 + add r8, r8, #0x8 + add r7, r7, #0x1 + cmp r8, r5 + blt _020B6630 +_020B66B0: + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r1, r0, #0x8 + ldr r0, [sp, #0x24] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B65E4 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B66D4 +FUN_020B66D4: ; 0x020B66D4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x2c] + ldr r1, [sp, #0x2c] + ldr r4, [sp, #0x60] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x18] + ldr r2, [sp, #0x64] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x1c] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B673C + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B673C: + ldr r1, [sp, #0x10] + bic r1, r1, #0x7 + mov r2, r1, asr #0x2 + str r1, [sp, #0x14] + add r1, r1, r2, lsr #0x1d + ldr r2, [r0, #0x10] + mov r3, r1, asr #0x3 + mul r1, r3, r2 + bic r3, r10, #0x7 + str r3, [sp, #0x28] + ldr r3, [sp, #0x2c] + mov r6, r3, lsl #0x6 + ldr r3, [sp, #0x28] + mov r4, r6, asr #0x2 + mov r5, r3, asr #0x2 + add r5, r3, r5, lsr #0x1d + add r4, r6, r4, lsr #0x1d + mov r3, r4, asr #0x3 + str r3, [sp, #0x30] + ldr r3, [sp, #0x1c] + add r1, r1, r5, asr #0x3 + add r4, r3, #0x7 + ldr r3, [r0, #0x0] + ldr r0, [sp, #0x18] + add r5, r0, #0x7 + ldr r0, [sp, #0x30] + bic r7, r5, #0x7 + mla r1, r0, r1, r3 + bic r0, r4, #0x7 + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r1, [sp, #0x24] + mul r0, r2, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + cmp r1, r0 + addge sp, sp, #0x3c + ldmgeia sp!, {r4-r11,pc} + mov r5, #0x0 + mov r4, #0x8 +_020B67E0: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x24] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + movge r9, r5 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r4 + sub r11, r0, r9 + ldr r0, [sp, #0x28] + cmp r0, r7 + mov r8, r0 + bge _020B687C +_020B6828: + ldr r0, [sp, #0x18] + cmp r8, r10 + sublt r1, r10, r8 + sub r0, r0, r8 + movge r1, r5 + cmp r0, #0x8 + movgt r0, r4 + sub r3, r0, r1 + ldr r0, [sp, #0xc] + str r11, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + mov r2, r9 + str r0, [sp, #0x8] + mov r0, r6 + bl FUN_020B6F18 + ldr r0, [sp, #0x30] + add r8, r8, #0x8 + add r6, r6, r0 + cmp r8, r7 + blt _020B6828 +_020B687C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r1, r0, #0x8 + ldr r0, [sp, #0x20] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B67E0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B68AC +FUN_020B68AC: ; 0x020B68AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldrb r2, [r3, #0xc] + ldr r12, [r3, #0x4] + cmp r2, #0x4 + orreq r0, r1, r1, lsl #0x4 + orreq r0, r0, r0, lsl #0x8 + orreq r1, r0, r0, lsl #0x10 + orrne r0, r1, r1, lsl #0x8 + orrne r1, r0, r0, lsl #0x10 + ldr r0, [r3, #0x8] + mov r2, r2, lsl #0x6 + mul lr, r12, r0 + mov r0, r2, asr #0x2 + add r0, r2, r0, lsr #0x1d + mov r2, r0, asr #0x3 + mov r0, r1 + mul r2, lr, r2 + ldr r1, [r3, #0x0] + bl MIi_CpuClearFast + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B6908 +FUN_020B6908: ; 0x020B6908 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r7, [sp, #0x74] + ldrb r5, [r0, #0xc] + ldr r6, [r1, #0x0] + ldr r4, [r7, #0x0] + ldr r9, [r6, #0x8] + mov r8, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r8, asr #0x2 + add r5, r8, r5, lsr #0x1d + ldrb r9, [r9, #0x1] + ldr r8, [r0, #0x4] + ldr r6, [r0, #0x8] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r4, #0x0 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} + adds r3, r2, r4 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r2, [sp, #0xc] + adds r2, r2, r9 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r10, [sp, #0x8] + add r3, r3, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + strle r10, [sp, #0x10] + movgt r10, r10, lsr #0x3 + strgt r10, [sp, #0x10] + ldr r10, [sp, #0xc] + add r2, r2, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + mov r11, r2, lsr #0x3 + mov r3, r3, lsr #0x3 + movgt r10, r10, lsr #0x3 + cmp r3, r8 + movcs r3, r8 + cmp r11, r6 + ldr r2, [sp, #0x10] + movcs r11, r6 + subs r8, r3, r2 + addmi sp, sp, #0x4c + sub r3, r11, r10 + ldmmiia sp!, {r4-r11,pc} + cmp r3, #0x0 + addlt sp, sp, #0x4c + ldmltia sp!, {r4-r11,pc} + ldr r2, [sp, #0x8] + ldr r6, [r0, #0x0] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r11, [sp, #0x8] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0xc] + sub r8, r11, r8, lsl #0x3 + ldr r11, [sp, #0xc] + ldr r2, [sp, #0x70] + sub r3, r11, r3, lsl #0x3 + str r3, [sp, #0x14] + ldr r3, [r7, #0x4] + sub r2, r2, #0x1 + str r3, [sp, #0x28] + str r2, [sp, #0x48] + str r9, [sp, #0x38] + str r4, [sp, #0x34] + ldr r4, [r1, #0x0] + ldr r2, [sp, #0x14] + mov r3, r11 + cmp r3, r2 + ldr r2, [r4, #0x8] + ldrb r3, [r2, #0x6] + str r3, [sp, #0x40] + ldrb r2, [r0, #0xc] + str r2, [sp, #0x44] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + ldrb r1, [r1, #0x0] + mul r1, r3, r1 + str r1, [sp, #0x3c] + ldr r1, [r0, #0x10] + str r1, [sp, #0x20] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x8] + ldrb r11, [sp, #0x20] + ldrb r4, [sp, #0x21] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + addle sp, sp, #0x4c + ldmleia sp!, {r4-r11,pc} +_020B6A90: + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [sp, #0x8] + cmp r0, r8 + mov r9, r0 + ble _020B6AEC +_020B6AAC: + ldr r2, [sp, #0x1c] + str r11, [sp, #0x0] + ldr r3, [sp, #0x18] + mov r0, r7 + mov r1, r10 + str r4, [sp, #0x4] + bl FUN_020B7068 + mla r1, r0, r5, r6 + add r0, sp, #0x24 + str r9, [sp, #0x2c] + str r1, [sp, #0x24] + bl FUN_020B6CAC + sub r9, r9, #0x8 + add r7, r7, #0x1 + cmp r9, r8 + bgt _020B6AAC +_020B6AEC: + ldr r0, [sp, #0xc] + add r10, r10, #0x1 + sub r1, r0, #0x8 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + bgt _020B6A90 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6B10 +FUN_020B6B10: ; 0x020B6B10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + ldr r4, [sp, #0x54] + ldrb r5, [r0, #0xc] + str r4, [sp, #0x54] + ldr r4, [r4, #0x0] + ldr r6, [r1, #0x0] + mov r7, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r7, asr #0x2 + add r5, r7, r5, lsr #0x1d + cmp r4, #0x0 + ldr r6, [r6, #0x8] + mov r9, r3 + ldr r8, [r0, #0x4] + ldr r7, [r0, #0x8] + mov r10, r2 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x2c + ldr lr, [r0, #0x0] + ldrb r3, [r6, #0x1] + ldmeqia sp!, {r4-r11,pc} + adds r6, r10, r4 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + adds r2, r9, r3 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + cmp r10, #0x0 + movle r11, #0x0 + add r6, r6, #0x7 + movgt r11, r10, lsr #0x3 + cmp r9, #0x0 + movle r12, #0x0 + add r2, r2, #0x7 + mov r6, r6, lsr #0x3 + movgt r12, r9, lsr #0x3 + cmp r6, r8 + movcs r6, r8 + mov r2, r2, lsr #0x3 + cmp r2, r7 + movcs r2, r7 + subs r7, r6, r11 + addmi sp, sp, #0x2c + sub r2, r2, r12 + ldmmiia sp!, {r4-r11,pc} + cmp r2, #0x0 + addlt sp, sp, #0x2c + ldmltia sp!, {r4-r11,pc} + ldr r6, [r0, #0x10] + cmp r10, #0x0 + sub r8, r6, r7 + mul r8, r5, r8 + mla r11, r6, r12, r11 + andge r10, r10, #0x7 + str r8, [sp, #0x0] + ldr r8, [sp, #0x54] + mla r6, r5, r11, lr + ldr r12, [r8, #0x4] + ldr r11, [sp, #0x50] + cmp r9, #0x0 + sub r8, r11, #0x1 + andge r9, r9, #0x7 + sub r11, r9, r2, lsl #0x3 + str r12, [sp, #0x8] + str r4, [sp, #0x14] + str r8, [sp, #0x28] + str r3, [sp, #0x18] + ldr r3, [r1, #0x0] + cmp r9, r11 + ldr r2, [r3, #0x8] + sub r7, r10, r7, lsl #0x3 + ldrb r2, [r2, #0x6] + str r2, [sp, #0x20] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x24] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r0, [r0, #0x0] + mul r0, r2, r0 + str r0, [sp, #0x1c] + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,pc} + add r4, sp, #0x4 +_020B6C60: + mov r8, r10 + str r9, [sp, #0x10] + cmp r10, r7 + ble _020B6C90 +_020B6C70: + mov r0, r4 + str r6, [sp, #0x4] + str r8, [sp, #0xc] + bl FUN_020B6CAC + sub r8, r8, #0x8 + cmp r8, r7 + add r6, r6, r5 + bgt _020B6C70 +_020B6C90: + ldr r0, [sp, #0x0] + sub r9, r9, #0x8 + cmp r9, r11 + add r6, r6, r0 + bgt _020B6C60 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6CAC +FUN_020B6CAC: ; 0x020B6CAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldr r5, [r0, #0x8] + ldr r4, [r0, #0xc] + cmp r5, #0x0 + strge r5, [sp, #0x0] + movlt r1, #0x0 + strlt r1, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r4, #0x0 + add r10, r5, r1 + ldr r1, [r0, #0x14] + movge r2, r4 + movlt r2, #0x0 + cmp r10, #0x8 + add r3, r4, r1 + movge r10, #0x8 + cmp r3, #0x8 + movge r3, #0x8 + cmp r4, #0x0 + movgt r4, #0x0 + cmp r5, #0x0 + ldr r8, [r0, #0x20] + movgt r5, #0x0 + rsb r1, r4, #0x0 + mul r7, r10, r8 + ldr r6, [r0, #0x1c] + rsb r4, r5, #0x0 + mul r9, r6, r4 + ldr r4, [r0, #0x18] + mov r10, r7 + str r4, [sp, #0x8] + ldr r4, [sp, #0x0] + cmp r8, #0x4 + mul r5, r4, r8 + ldr r4, [sp, #0x8] + str r5, [sp, #0x0] + mla r11, r1, r4, r9 + ldr r1, [r0, #0x4] + str r1, [sp, #0x4] + bne _020B6E24 + ldr r1, [r0, #0x0] + ldr r7, [r0, #0x24] + add r0, r1, r2, lsl #0x2 + str r0, [sp, #0xc] + add r0, r1, r3, lsl #0x2 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + add r9, sp, #0x24 + mov r4, #0xf + str r0, [sp, #0x1c] +_020B6D88: + ldr r0, [sp, #0xc] + mov r1, r11, lsr #0x1f + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x4] + rsb r2, r1, r11, lsl #0x1d + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + add r1, r1, r2, ror #0x1d + strb r0, [sp, #0x28] + strb r0, [sp, #0x29] + mov r0, r9 + bl FUN_020B76B0 + ldr r8, [sp, #0x0] + mov r0, r8 + cmp r0, r10 + bhs _020B6DF8 +_020B6DCC: + mov r0, r9 + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + mvnne r1, r4, lsl r8 + addne r0, r7, r0 + andne r1, r5, r1 + orrne r5, r1, r0, lsl r8 + add r8, r8, #0x4 + cmp r8, r10 + blo _020B6DCC +_020B6DF8: + ldr r0, [sp, #0xc] + add r1, r0, #0x4 + str r5, [r0, #0x0] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6D88 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020B6E24: + ldr r1, [r0, #0x0] + ldr r9, [r0, #0x24] + add r0, r1, r2, lsl #0x3 + str r0, [sp, #0x14] + add r0, r1, r3, lsl #0x3 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + mov r4, #0xff + str r0, [sp, #0x20] +_020B6E58: + mov r1, r11, lsr #0x1f + rsb r0, r1, r11, lsl #0x1d + add r1, r1, r0, ror #0x1d + ldr r0, [sp, #0x14] + ldr r8, [r0, #0x0] + ldr r7, [r0, #0x4] + ldr r0, [sp, #0x4] + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + strb r0, [sp, #0x30] + strb r0, [sp, #0x31] + add r0, sp, #0x2c + bl FUN_020B76B0 + ldr r0, [sp, #0x0] + cmp r0, r10 + mov r5, r0 + bhs _020B6EE8 +_020B6EA0: + add r0, sp, #0x2c + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + beq _020B6EDC + cmp r5, #0x20 + mvncc r1, r4, lsl r5 + addcc r0, r9, r0 + andcc r1, r8, r1 + orrcc r8, r1, r0, lsl r5 + subcs r2, r5, #0x20 + mvncs r1, r4, lsl r2 + addcs r0, r9, r0 + andcs r1, r7, r1 + orrcs r7, r1, r0, lsl r2 +_020B6EDC: + add r5, r5, #0x8 + cmp r5, r10 + blo _020B6EA0 +_020B6EE8: + ldr r0, [sp, #0x14] + str r8, [r0, #0x0] + add r1, r0, #0x8 + str r7, [r0, #0x4] + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6E58 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6F18 +FUN_020B6F18: ; 0x020B6F18 + stmdb sp!, {r4-r6,lr} + mov lr, r0 + cmp r3, #0x8 + ldr r0, [sp, #0x14] + bne _020B6F4C + ldr r4, [sp, #0x10] + cmp r4, #0x8 + bne _020B6F4C + ldr r2, [sp, #0x18] + mov r1, lr + mov r2, r2, lsl #0x3 + bl MIi_CpuClearFast + ldmia sp!, {r4-r6,pc} +_020B6F4C: + ldr r4, [sp, #0x18] + cmp r4, #0x4 + bne _020B6FAC + mov r5, r1, lsl #0x2 + add r4, r5, r3, lsl #0x2 + mvn r3, #0x0 + rsb r4, r4, #0x20 + mov r3, r3, lsr r5 + add r1, r4, r1, lsl #0x2 + mov r3, r3, lsl r1 + ldr r1, [sp, #0x10] + add r5, lr, r2, lsl #0x2 + add r2, r5, r1, lsl #0x2 + and r6, r0, r3, lsr r4 + cmp r5, r2 + mvn r1, r3, lsr r4 + ldmcsia sp!, {r4-r6,pc} +_020B6F90: + ldr r0, [r5, #0x0] + and r0, r0, r1 + orr r0, r6, r0 + str r0, [r5], #0x4 + cmp r5, r2 + blo _020B6F90 + ldmia sp!, {r4-r6,pc} +_020B6FAC: + mov r12, r1, lsl #0x3 + add r1, r12, r3, lsl #0x3 + rsb r1, r1, #0x40 + mvn r3, #0x0 + cmp r1, #0x20 + mov r5, r3, lsr r12 + subcs r4, r1, #0x20 + addcs r3, r12, r4 + movcs r3, r5, lsl r3 + movcs r3, r3, lsr r4 + movcc r3, r5, lsl r12 + mvn r4, #0x0 + add r5, lr, r2, lsl #0x3 + cmp r12, #0x20 + mov r4, r4, lsl r1 + subcs r12, r12, #0x20 + addcs r1, r12, r1 + movcs r1, r4, lsr r1 + movcs r6, r1, lsl r12 + movcc r6, r4, lsr r1 + ldr r1, [sp, #0x10] + and lr, r0, r3 + add r4, r5, r1, lsl #0x3 + cmp r5, r4 + and r12, r0, r6 + mvn r2, r3 + mvn r1, r6 + ldmcsia sp!, {r4-r6,pc} +_020B701C: + ldr r0, [r5, #0x0] + and r0, r0, r2 + orr r0, lr, r0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + and r0, r0, r1 + orr r0, r12, r0 + str r0, [r5, #0x4] + add r5, r5, #0x8 + cmp r5, r4 + blo _020B701C + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B704C +FUN_020B704C: ; 0x020B704C + ldrb r3, [r0, #0x1] + ldr r2, _020B7064 ; =UNK_020FF990 + ldrb r1, [r0, #0x0] + add r0, r2, r3, lsl #0x4 + ldr r0, [r0, r1, lsl #0x2] + bx lr + .balign 4 +_020B7064: .word UNK_020FF990 + + arm_func_start FUN_020B7068 +FUN_020B7068: ; 0x020B7068 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr fp, _020B7164 ; =UNK_020FF970 + mov r9, #0x0 + mov r10, #0x3 + mvn r7, #0x0 +_020B7080: + ldr r4, [sp, #0x2c] + ldr r6, [sp, #0x28] + and r12, r3, r7, lsl r4 + cmp r12, r1 + mov r8, r7, lsl r6 + mov r5, r7, lsl r4 + and lr, r2, r7, lsl r6 + bhi _020B70D0 + mla r9, r2, r12, r9 + cmp lr, r0 + movhi r2, lr + subhi r1, r1, r12 + subhi r3, r3, r12 + bhi _020B7118 + sub r3, r3, r12 + mla r9, lr, r3, r9 + sub r0, r0, lr + sub r1, r1, r12 + sub r2, r2, lr + b _020B7118 +_020B70D0: + cmp lr, r0 + mlals r9, lr, r12, r9 + mvn r3, r5 + movls r3, r12 + subls r0, r0, lr + subls r2, r2, lr + bls _020B7118 + and r2, r1, r5 + mla r5, lr, r2, r9 + and r2, r0, r8 + and r1, r1, r3 + add r2, r5, r2, lsl r4 + mvn r3, r8 + add r1, r2, r1, lsl r6 + and r0, r0, r3 + add sp, sp, #0x4 + add r0, r1, r0 + ldmia sp!, {r4-r11,pc} +_020B7118: + cmp r2, #0x8 + movlt r4, r2 + movge r5, r10 + clzlt r4, r4 + rsblt r5, r4, #0x1f + cmp r3, #0x8 + movge r4, r10 + movlt r4, r3 + clzlt r4, r4 + rsblt r4, r4, #0x1f + add r4, r11, r4, lsl #0x3 + add r6, r4, r5, lsl #0x1 + ldrb r5, [r4, r5, lsl #0x1] + ldrb r4, [r6, #0x1] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + b _020B7080 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7164: .word UNK_020FF970 + + arm_func_start FUN_020B7168 +FUN_020B7168: ; 0x020B7168 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r12, [sp, #0x28] + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + ands r0, r12, #0x100 + beq _020B71AC + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r1, [sp, #0x20] + sub r0, r1, r0 + add r5, r5, r0 + b _020B71E4 +_020B71AC: + ands r0, r12, #0x80 + beq _020B71E4 + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r2, [sp, #0x20] + add r1, r0, #0x1 + add r0, r2, #0x1 + add r0, r0, r0, lsr #0x1f + mov r2, r0, asr #0x1 + add r0, r1, r1, lsr #0x1f + sub r0, r2, r0, asr #0x1 + add r5, r5, r0 +_020B71E4: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [sp, #0x0] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x8] + bl FUN_020B72C4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7218 +FUN_020B7218: ; 0x020B7218 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + ldr r4, [sp, #0x34] + mov r8, r0 + str r4, [sp, #0x0] + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x30] + ldr r1, [r8, #0x4] + ldr r2, [r8, #0x8] + ldr r3, [r8, #0xc] + add r0, sp, #0xc + bl FUN_020B5ABC + ands r0, r4, #0x10 + ldrne r0, [sp, #0xc] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r7, r7, r0, asr #0x1 + bne _020B7274 + ands r0, r4, #0x20 + ldrne r0, [sp, #0xc] + subne r7, r7, r0 +_020B7274: + ands r0, r4, #0x2 + ldrne r0, [sp, #0x10] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r6, r6, r0, asr #0x1 + bne _020B7298 + ands r0, r4, #0x4 + ldrne r0, [sp, #0x10] + subne r6, r6, r0 +_020B7298: + str r5, [sp, #0x0] + ldr r0, [sp, #0x34] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_020B72C4 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B72C4 +FUN_020B72C4: ; 0x020B72C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r4, [r10, #0x4] + ldr r0, [sp, #0x40] + ldr r4, [r4, #0x0] + ldr r5, [r10, #0xc] + ldrsb r4, [r4, #0x1] + cmp r0, #0x0 + mov r9, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + mov r8, r2 + str r0, [sp, #0x38] + mov r7, r3 + add r6, r5, r4 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,pc} + add r0, r7, #0x1 + ldr r1, [sp, #0x3c] + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + and r5, r1, #0x800 + and r11, r1, #0x400 + str r0, [sp, #0x8] + mov r4, #0x0 +_020B732C: + mov r1, r9 + cmp r5, #0x0 + beq _020B7358 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + sub r0, r7, r0 + add r1, r9, r0 + b _020B7388 +_020B7358: + cmp r11, #0x0 + beq _020B7388 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + add r0, r0, #0x1 + add r1, r0, r0, lsr #0x1f + ldr r0, [sp, #0x8] + sub r0, r0, r1, asr #0x1 + add r1, r9, r0 +_020B7388: + ldr r2, [sp, #0xc] + add r3, sp, #0xc + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r3, [sp, #0x38] + mov r0, r10 + mov r2, r8 + bl FUN_020B73C0 + ldr r0, [sp, #0xc] + add r8, r8, r6 + cmp r0, #0x0 + bne _020B732C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B73C0 +FUN_020B73C0: ; 0x020B73C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + ldr r6, [r10, #0x8] + ldr r5, [r10, #0x4] + ldr r4, [sp, #0x30] + add r0, sp, #0x8 + str r4, [sp, #0x8] + ldr r4, [r5, #0x4] + mov r9, r1 + mov r8, r2 + mov r7, r3 + blx r4 + cmp r0, #0x0 + beq _020B743C + add r11, sp, #0x8 +_020B7400: + cmp r0, #0xa + beq _020B743C + str r7, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r10, #0x0] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl FUN_020B63CC + add r1, r9, r0 + mov r0, r11 + add r9, r1, r6 + blx r4 + cmp r0, #0x0 + bne _020B7400 +_020B743C: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + cmp r0, #0xa + ldreq r1, [sp, #0x8] + ldr r0, [sp, #0x34] + movne r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7468 +FUN_020B7468: ; 0x020B7468 + stmdb sp!, {r4-r6,lr} + ldrh r2, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov r1, #0x0 + add r2, r0, r2 + cmp r3, #0x0 + ldmleia sp!, {r4-r6,pc} + ldr r3, _020B7548 ; =0x46494E46 + ldr ip, _020B754C ; =0x43574448 + ldr r4, _020B7550 ; =0x434D4150 + ldr lr, _020B7554 ; =0x43474C50 +_020B7494: + ldr r5, [r2, #0x0] + cmp r5, r4 + bhi _020B74B0 + cmp r5, r4 + bhs _020B7518 + cmp r5, lr + b _020B752C +_020B74B0: + cmp r5, r12 + bhi _020B74C4 + cmp r5, r12 + beq _020B7500 + b _020B752C +_020B74C4: + cmp r5, r3 + bne _020B752C + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + add r5, r5, r0 + str r5, [r6, #0x8] + ldr r5, [r6, #0xc] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0xc] + ldr r5, [r6, #0x10] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x10] + b _020B752C +_020B7500: + add r6, r2, #0x8 + ldr r5, [r6, #0x4] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x4] + b _020B752C +_020B7518: + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x8] +_020B752C: + ldrh r5, [r0, #0xe] + ldr r6, [r2, #0x4] + add r1, r1, #0x1 + cmp r1, r5 + add r2, r2, r6 + blt _020B7494 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B7548: .word 0x46494E46 +_020B754C: .word 0x43574448 +_020B7550: .word 0x434D4150 +_020B7554: .word 0x43474C50 + + arm_func_start FUN_020B7558 +FUN_020B7558: ; 0x020B7558 + stmdb sp!, {r4-r6,lr} + movs r6, r0 + mov r5, r1 + beq _020B75C8 + cmp r6, #0x0 + beq _020B7584 + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7588 +_020B7584: + mov r0, #0x0 +_020B7588: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B75CC + cmp r6, #0x0 + beq _020B75B4 + ldrh r0, [r6, #0x6] + cmp r0, #0x100 + movcs r0, #0x1 + bhs _020B75B8 +_020B75B4: + mov r0, #0x0 +_020B75B8: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B75CC +_020B75C8: + mov r0, #0x0 +_020B75CC: + cmp r0, #0x0 + movne r4, #0x0 + bne _020B7654 + cmp r6, #0x0 + beq _020B7640 + cmp r6, #0x0 + beq _020B75FC + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7600 +_020B75FC: + mov r0, #0x0 +_020B7600: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B7644 + cmp r6, #0x0 + beq _020B762C + ldrh r0, [r6, #0x6] + cmp r0, #0x1 + movcs r0, #0x1 + bhs _020B7630 +_020B762C: + mov r0, #0x0 +_020B7630: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B7644 +_020B7640: + mov r0, #0x0 +_020B7644: + cmp r0, #0x0 + movne r4, #0x1 + bne _020B7654 + bl OS_Terminate +_020B7654: + mov r0, r6 + bl FUN_020B7468 + ldr r1, _020B76AC ; =0x46494E46 + mov r0, r6 + bl FUN_020B01F8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r6,pc} + add r0, r0, #0x8 + str r0, [r5, #0x0] + cmp r4, #0x0 + beq _020B76A0 + ldr r2, [r5, #0x0] + mov r1, #0x0 + ldrsb r0, [r2, #0x6] + strb r0, [r2, #0x7] + ldr r0, [r5, #0x0] + strb r1, [r0, #0x6] +_020B76A0: + add r0, r4, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B76A8: .word 0x4E465452 +_020B76AC: .word 0x46494E46 + + arm_func_start FUN_020B76B0 +FUN_020B76B0: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsb r2, [r0, #0x4] + ldrb r12, [r0, #0x5] + mov r4, r1 + cmp r2, r4 + subge r1, r2, r4 + movge r5, r12, lsr r1 + strgeb r1, [r0, #0x4] + bge _020B7704 + ldr r3, [r0, #0x0] + sub r1, r4, r2 + add r2, r3, #0x1 + str r2, [r0, #0x0] + ldrb r2, [r3, #0x0] + mov r5, r12, lsl r1 + strb r2, [r0, #0x5] + mov r2, #0x8 + strb r2, [r0, #0x4] + bl FUN_020B76B0 + orr r5, r0, r5 +_020B7704: + rsb r0, r4, #0x8 + mov r1, #0xff + and r0, r5, r1, asr r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7718 +FUN_020B7718: ; 0x020B7718 + ldr r1, [r0, #0x0] + ldrh r2, [r1], #0x2 + str r1, [r0, #0x0] + mov r0, r2 + bx lr + + arm_func_start FUN_020B772C +FUN_020B772C: ; 0x020B772C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r0, [r6, #0x9] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + add r4, r6, #0x8 +_020B7750: + ldrh r0, [r6, #0xe] + ldrh r1, [r4, r0] + add r0, r4, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r7, r6, r0 + mov r0, r7 + bl FUN_020B79A4 + mov r0, r7 + bl FUN_020B780C + ldrb r0, [r6, #0x9] + add r5, r5, #0x1 + cmp r5, r0 + blo _020B7750 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7790 +FUN_020B7790: ; 0x020B7790 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrb r0, [r8, #0x9] + mov r7, r1 + mov r5, #0x1 + cmp r0, #0x0 + mov r6, #0x0 + bls _020B7800 + add r4, r8, #0x8 +_020B77B8: + ldrh r0, [r8, #0xe] + mov r1, r7 + ldrh r2, [r4, r0] + add r0, r4, r0 + mla r0, r2, r6, r0 + ldr r0, [r0, #0x4] + add r9, r8, r0 + mov r0, r9 + bl FUN_020B7A04 + and r5, r5, r0 + mov r0, r9 + mov r1, r7 + bl FUN_020B7864 + ldrb r1, [r8, #0x9] + add r6, r6, #0x1 + and r5, r5, r0 + cmp r6, r1 + blo _020B77B8 +_020B7800: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B780C +FUN_020B780C: ; 0x020B780C + ldr r2, [r0, #0x8] + mov r1, #0x0 + add r2, r0, r2 + ldrh r0, [r2, #0x2] + add r12, r2, r0 + ldrb r0, [r12, #0x1] + cmp r0, #0x0 + bxls lr +_020B782C: + ldrh r2, [r12, #0x6] + ldrh r0, [r12, r2] + add r2, r12, r2 + add r2, r2, #0x4 + mla r3, r0, r1, r2 + ldrb r0, [r3, #0x3] + add r1, r1, #0x1 + ands r2, r0, #0x1 + bicne r0, r0, #0x1 + strneb r0, [r3, #0x3] + ldrb r0, [r12, #0x1] + cmp r1, r0 + blo _020B782C + bx lr + + arm_func_start FUN_020B7864 +FUN_020B7864: ; 0x020B7864 + stmdb sp!, {r4-r10,lr} + ldr r2, [r0, #0x8] + mov r10, r1 + add r9, r0, r2 + ldrh r0, [r9, #0x2] + mov r6, #0x1 + mov r7, #0x0 + add r8, r9, r0 + ldrb r0, [r8, #0x1] + cmp r0, #0x0 + bls _020B7908 + mov r5, r7 + mov r4, r7 +_020B7898: + ldrh r1, [r8, #0x6] + ldrh r0, [r10, #0x34] + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r0, r10, r0 + add r1, r2, r1 + add r1, r1, r5 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B78F0 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B78F4 + mov r0, r9 + mov r2, r10 + bl FUN_020B7910 + b _020B78F4 +_020B78F0: + mov r6, r4 +_020B78F4: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r5, r5, #0x10 + cmp r7, r0 + blo _020B7898 +_020B7908: + mov r0, r6 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020B7910 +FUN_020B7910: + stmdb sp!, {r4-r6,lr} + ldrh r5, [r1, #0x0] + ldr r2, [r2, #0x2c] + ldrh r4, [r3, #0x2] + mov r2, r2, lsl #0x10 + add r12, r0, r5 + mov r5, r2, lsr #0x10 + ands r2, r4, #0x1 + ldrh r4, [r3, #0x0] + moveq r3, r5, lsl #0xf + moveq r5, r3, lsr #0x10 + moveq r2, r4, lsl #0xf + moveq r4, r2, lsr #0x10 + ldrb r3, [r1, #0x2] + mov r2, #0x0 + cmp r3, #0x0 + bls _020B7994 + add r3, r4, r5 + mov r3, r3, lsl #0x10 + add r6, r0, #0x4 + mov r4, r3, lsr #0x10 +_020B7964: + ldrh r5, [r0, #0xa] + ldrb r3, [r12, r2] + add r2, r2, #0x1 + ldrh lr, [r6, r5] + add r5, r6, r5 + mla r3, lr, r3, r5 + ldr r3, [r3, #0x4] + add r3, r0, r3 + strh r4, [r3, #0x1c] + ldrb r3, [r1, #0x2] + cmp r2, r3 + blo _020B7964 +_020B7994: + ldrb r0, [r1, #0x3] + orr r0, r0, #0x1 + strb r0, [r1, #0x3] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B79A4 +FUN_020B79A4: ; 0x020B79A4 + stmdb sp!, {r4-r6,lr} + ldr r2, [r0, #0x8] + mov r4, #0x0 + ldrh r1, [r0, r2] + add r6, r0, r2 + add r5, r6, r1 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020B79C8: + ldrh r1, [r5, #0x6] + ldrh r0, [r5, r1] + add r1, r5, r1 + add r1, r1, #0x4 + mla r1, r0, r4, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + beq _020B79F0 + mov r0, r6 + bl FUN_020B7AB8 +_020B79F0: + ldrb r0, [r5, #0x1] + add r4, r4, #0x1 + cmp r4, r0 + blo _020B79C8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B7A04 +FUN_020B7A04: ; 0x020B7A04 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + mov r10, r1 + ldrh r1, [r0, r2] + add r9, r0, r2 + mov r11, #0x1 + add r8, r9, r1 + ldrb r0, [r8, #0x1] + mov r7, #0x0 + cmp r0, #0x0 + bls _020B7AAC + mov r6, r7 + mov r4, r7 + add r5, r10, #0x3c +_020B7A40: + ldrh r1, [r8, #0x6] + mov r0, r5 + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B7A94 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B7A98 + mov r0, r9 + mov r2, r10 + bl FUN_020B7B40 + b _020B7A98 +_020B7A94: + mov r11, r4 +_020B7A98: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020B7A40 +_020B7AAC: + mov r0, r11 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7AB8 +FUN_020B7AB8: ; 0x020B7AB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r1, #0x0] + ldrb r2, [r1, #0x2] + mov r3, #0x0 + add r12, r0, r4 + cmp r2, #0x0 + bls _020B7B28 + add r2, r0, #0x4 + mov r5, #0x1000 + ldr lr, _020B7B3C ; =0xC00F0000 +_020B7AE4: + ldrh r7, [r0, #0xa] + ldrb r4, [r12, r3] + add r3, r3, #0x1 + ldrh r6, [r2, r7] + add r7, r2, r7 + mla r4, r6, r4, r7 + ldr r4, [r4, #0x4] + add r6, r0, r4 + ldr r4, [r6, #0x14] + and r4, r4, lr + str r4, [r6, #0x14] + str r5, [r6, #0x24] + ldr r4, [r6, #0x24] + str r4, [r6, #0x28] + ldrb r4, [r1, #0x2] + cmp r3, r4 + blo _020B7AE4 +_020B7B28: + ldrb r0, [r1, #0x3] + bic r0, r0, #0x1 + strb r0, [r1, #0x3] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B7B3C: .word 0xC00F0000 + + arm_func_start FUN_020B7B40 +FUN_020B7B40: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r1 + mov r9, r3 + ldr r1, [r9, #0x0] + mov r10, r0 + and r0, r1, #0x1c000000 + cmp r0, #0x14000000 + ldrh r3, [r11, #0x0] + ldrne r1, [r2, #0x8] + mov r8, #0x0 + add r0, r10, r3 + str r0, [sp, #0x4] + ldrne r0, _020B7C50 ; =0x0000FFFF + andne r0, r1, r0 + strne r0, [sp, #0x0] + ldreq r1, [r2, #0x18] + ldreq r0, _020B7C50 ; =0x0000FFFF + andeq r0, r1, r0 + streq r0, [sp, #0x0] + ldrb r0, [r11, #0x2] + cmp r0, #0x0 + bls _020B7C3C + mov r4, #0x1000 + add r5, r10, #0x4 +_020B7BA4: + ldrh r6, [r10, #0xa] + ldr r0, [sp, #0x4] + ldr r1, [r9, #0x0] + ldrb r2, [r0, r8] + ldrh r3, [r5, r6] + ldr r0, [sp, #0x0] + add r6, r5, r6 + add r0, r1, r0 + mla r1, r3, r2, r6 + ldr r1, [r1, #0x4] + add r6, r10, r1 + ldr r1, [r6, #0x14] + orr r0, r1, r0 + str r0, [r6, #0x14] + ldr r3, [r9, #0x4] + ldr r0, _020B7C54 ; =0x000007FF + ldrh r1, [r6, #0x20] + and r2, r3, r0 + and r7, r0, r3, lsr #0xb + cmp r2, r1 + moveq r0, r4 + beq _020B7C08 + mov r0, r2, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C08: + str r0, [r6, #0x24] + ldrh r1, [r6, #0x22] + cmp r7, r1 + moveq r0, r4 + beq _020B7C28 + mov r0, r7, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C28: + str r0, [r6, #0x28] + ldrb r0, [r11, #0x2] + add r8, r8, #0x1 + cmp r8, r0 + blo _020B7BA4 +_020B7C3C: + ldrb r0, [r11, #0x3] + orr r0, r0, #0x1 + strb r0, [r11, #0x3] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7C50: .word 0x0000FFFF +_020B7C54: .word 0x000007FF + + arm_func_start FUN_020B7C58 +FUN_020B7C58: ; 0x020B7C58 + ldrh r2, [r0, #0x32] + mov r1, #0x0 + bic r2, r2, #0x1 + strh r2, [r0, #0x32] + ldr r2, [r0, #0x2c] + str r1, [r0, #0x2c] + mov r0, r2 + bx lr + + arm_func_start FUN_020B7C78 +FUN_020B7C78: ; 0x020B7C78 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + beq _020B7C90 + bl GX_BeginLoadTexPltt +_020B7C90: + ldrh r2, [r5, #0x30] + ldr r0, [r5, #0x38] + ldr r3, [r5, #0x2c] + ldr r1, _020B7CD8 ; =0x0000FFFF + add r0, r5, r0 + and r1, r3, r1 + mov r1, r1, lsl #0x3 + mov r2, r2, lsl #0x3 + bl GX_LoadTexPltt + ldrh r0, [r5, #0x32] + cmp r4, #0x0 + addeq sp, sp, #0x4 + orr r0, r0, #0x1 + strh r0, [r5, #0x32] + ldmeqia sp!, {r4-r5,pc} + bl GX_EndLoadTexPltt + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B7CD8: .word 0x0000FFFF + + arm_func_start FUN_020B7CDC +FUN_020B7CDC: ; 0x020B7CDC + str r1, [r0, #0x2c] + bx lr + + arm_func_start FUN_020B7CE4 +FUN_020B7CE4: ; 0x020B7CE4 + ldrh r0, [r0, #0x30] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7CF0 +FUN_020B7CF0: ; 0x020B7CF0 + ldrh r12, [r0, #0x10] + mov r3, #0x0 + bic r12, r12, #0x1 + strh r12, [r0, #0x10] + ldrh r12, [r0, #0x20] + bic r12, r12, #0x1 + strh r12, [r0, #0x20] + ldr r12, [r0, #0x8] + str r12, [r1, #0x0] + str r3, [r0, #0x8] + ldr r1, [r0, #0x18] + str r1, [r2, #0x0] + str r3, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7D28 +FUN_020B7D28: ; 0x020B7D28 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r8, r1 + mov r9, r0 + beq _020B7D40 + bl GX_BeginLoadTex +_020B7D40: + ldrh r0, [r9, #0xc] + movs r2, r0, lsl #0x3 + beq _020B7D74 + ldr r1, [r9, #0x8] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x14] + and r1, r1, r0 + add r0, r9, r3 + mov r1, r1, lsl #0x3 + bl GX_LoadTex + ldrh r0, [r9, #0x10] + orr r0, r0, #0x1 + strh r0, [r9, #0x10] +_020B7D74: + ldrh r0, [r9, #0x1c] + movs r7, r0, lsl #0x3 + beq _020B7DDC + ldr r1, [r9, #0x18] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x24] + and r4, r1, r0 + mov r5, r4, lsl #0x3 + ldr r6, [r9, #0x28] + mov r1, r5 + mov r2, r7 + add r0, r9, r3 + add r6, r9, r6 + bl GX_LoadTex + ldr r0, _020B7DF8 ; =0x0001FFFF + and r1, r5, #0x40000 + and r0, r0, r4, lsl #0x3 + mov r0, r0, lsr #0x1 + add r2, r0, #0x20000 + mov r0, r6 + add r1, r2, r1, lsr #0x2 + mov r2, r7, lsr #0x1 + bl GX_LoadTex + ldrh r0, [r9, #0x20] + orr r0, r0, #0x1 + strh r0, [r9, #0x20] +_020B7DDC: + cmp r8, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + bl GX_EndLoadTex + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B7DF4: .word 0x0000FFFF +_020B7DF8: .word 0x0001FFFF + + arm_func_start FUN_020B7DFC +FUN_020B7DFC: ; 0x020B7DFC + cmp r1, #0x0 + strne r1, [r0, #0x8] + cmp r2, #0x0 + strne r2, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7E10 +FUN_020B7E10: ; 0x020B7E10 + ldrh r0, [r0, #0x1c] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E1C +FUN_020B7E1C: ; 0x020B7E1C + ldrh r0, [r0, #0xc] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E28 +FUN_020B7E28: ; 0x020B7E28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x8 + mov r4, r1 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7E88 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7E74: + ldr r0, [r5, #0x0] + orr r0, r0, #0x10 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7E88 +FUN_020B7E88: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r2, r1 + bne _020B7EB8 + ldr r3, [r2, #0x10] + mov r2, #0x0 + str r3, [r0, #0x0] + str r2, [r1, #0x10] + mov r0, #0x1 + bx lr +_020B7EB8: + ldr r3, [r2, #0x10] + cmp r3, #0x0 + beq _020B7EF4 +_020B7EC4: + cmp r3, r1 + bne _020B7EE4 + ldr r1, [r3, #0x10] + mov r0, #0x0 + str r1, [r2, #0x10] + str r0, [r3, #0x10] + mov r0, #0x1 + bx lr +_020B7EE4: + mov r2, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B7EC4 +_020B7EF4: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B7EFC +FUN_020B7EFC: ; 0x020B7EFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r2, [r4, #0x8] + mov r5, r0 + ldrb r0, [r2, #0x0] + cmp r0, #0x4a + beq _020B7F50 + cmp r0, #0x4d + beq _020B7F34 + cmp r0, #0x56 + beq _020B7F6C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F34: + add r0, r5, #0x3c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F50: + add r0, r5, #0x44 + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F6C: + add r0, r5, #0x4c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7F88 +FUN_020B7F88: ; 0x020B7F88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020B7FA4: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020B7FE4 +_020B7FB4: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020B7FB4 +_020B7FE4: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020B7FA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7FF8 +FUN_020B7FF8: ; 0x020B7FF8 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + streq r1, [r0, #0x0] + bxeq lr + ldr r3, [r12, #0x10] + cmp r3, #0x0 + bne _020B8058 + ldrb r3, [r12, #0x18] + ldrb r2, [r1, #0x18] + cmp r3, r2 + bls _020B8050 + ldr r2, [r1, #0x10] + mov r3, r1 + cmp r2, #0x0 + beq _020B8044 +_020B8034: + ldr r3, [r3, #0x10] + ldr r2, [r3, #0x10] + cmp r2, #0x0 + bne _020B8034 +_020B8044: + str r12, [r3, #0x10] + str r1, [r0, #0x0] + bx lr +_020B8050: + str r1, [r12, #0x10] + bx lr +_020B8058: + cmp r3, #0x0 + beq _020B80AC + ldrb r2, [r1, #0x18] +_020B8064: + ldrb r0, [r3, #0x18] + cmp r0, r2 + blo _020B809C + ldr r0, [r1, #0x10] + mov r2, r1 + cmp r0, #0x0 + beq _020B8090 +_020B8080: + ldr r2, [r2, #0x10] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + bne _020B8080 +_020B8090: + str r1, [r12, #0x10] + str r3, [r2, #0x10] + bx lr +_020B809C: + mov r12, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B8064 +_020B80AC: + str r1, [r12, #0x10] + bx lr + + arm_func_start FUN_020B80B4 +FUN_020B80B4: ; 0x020B80B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x54 + bl MIi_CpuClear32 + ldr r0, _020B8104 ; =UNK_021065B4 + ldr r1, _020B8108 ; =UNK_021065B0 + ldr r2, [r0, #0x0] + ldr r0, _020B810C ; =UNK_021065AC + str r2, [r5, #0xc] + ldr r1, [r1, #0x0] + str r1, [r5, #0x14] + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B8104: .word UNK_021065B4 +_020B8108: .word UNK_021065B0 +_020B810C: .word UNK_021065AC + + arm_func_start FUN_020B8110 +FUN_020B8110: ; 0x020B8110 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x8] + str r12, [r0, #0x10] + mov r4, #0x7f + strb r4, [r0, #0x18] + mov r4, #0x1000 + str r4, [r0, #0x4] + ldr lr, _020B81A4 ; =UNK_02106594 + str r3, [r0, #0x14] + ldr r6, [lr, #0x0] + cmp r6, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + ldrb r7, [r1, #0x0] + ldr r4, _020B81A8 ; =UNK_021065B8 +_020B8158: + ldrb r3, [r4, r12, lsl #0x3] + mov r5, r12, lsl #0x3 + cmp r7, r3 + bne _020B8190 + add r3, r4, r5 + ldrh lr, [r1, #0x2] + ldrh r3, [r3, #0x2] + cmp lr, r3 + bne _020B8190 + ldr r3, _020B81AC ; =UNK_021065BC + ldr r3, [r3, r5] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B8190: + add r12, r12, #0x1 + cmp r12, r6 + blo _020B8158 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B81A4: .word UNK_02106594 +_020B81A8: .word UNK_021065B8 +_020B81AC: .word UNK_021065BC + + arm_func_start FUN_020B81B0 +FUN_020B81B0: ; 0x020B81B0 + ldrb r0, [r0, #0x0] + cmp r0, #0x4a + beq _020B81E4 + cmp r0, #0x4d + beq _020B81D0 + cmp r0, #0x56 + beq _020B81E4 + b _020B81F8 +_020B81D0: + ldrb r0, [r1, #0x18] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81E4: + ldrb r0, [r1, #0x17] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81F8: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B8200 +FUN_020B8200: ; 0x020B8200 + cmp r0, #0x0 + ldrne ip, _020B8260 ; =UNK_021CED18 + ldrne r12, [r12, #0xa0] + andne r12, r12, #0xff + strne r12, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x8 + andne r0, r0, #0xff + strne r0, [r1, #0x0] + cmp r2, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x10 + andne r0, r0, #0xff + strne r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x18 + andne r0, r0, #0xff + strne r0, [r3, #0x0] + bx lr + .balign 4 +_020B8260: .word UNK_021CED18 + + arm_func_start FUN_020B8264 +FUN_020B8264: ; 0x020B8264 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B8290 + bl FUN_020B82E4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B8290: + ldr r0, _020B82A0 ; =UNK_021CEE78 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B829C: .word UNK_021CED18 +_020B82A0: .word UNK_021CEE78 + + arm_func_start FUN_020B82A4 +FUN_020B82A4: ; 0x020B82A4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B82D0 + bl FUN_020B82E4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B82D0: + ldr r0, _020B82E0 ; =UNK_021CEE48 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B82DC: .word UNK_021CED18 +_020B82E0: .word UNK_021CEE48 + + arm_func_start FUN_020B82E4 +FUN_020B82E4: ; 0x020B82E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8330 ; =UNK_021CEDD4 + ldr r1, _020B8334 ; =UNK_021CED64 + ldr r2, _020B8338 ; =UNK_021CEE48 + bl MTX_Concat43 + ldr r3, _020B833C ; =UNK_021CED18 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r2, [r3, #0xf4] + mov r1, r0 + str r2, [sp, #0x0] + ldr r2, [r3, #0xec] + ldr r3, [r3, #0xf0] + bl MTX_ScaleApply43 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r1, _020B8340 ; =UNK_021CEE78 + bl MTX_Inverse43 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8330: .word UNK_021CEDD4 +_020B8334: .word UNK_021CED64 +_020B8338: .word UNK_021CEE48 +_020B833C: .word UNK_021CED18 +_020B8340: .word UNK_021CEE78 + + arm_func_start FUN_020B8344 +FUN_020B8344: ; 0x020B8344 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x8 + bne _020B8378 + ldr r0, _020B8388 ; =UNK_021CED64 + ldr r1, _020B838C ; =UNK_021CEE18 + bl MTX_Inverse43 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x8 + str r1, [r0, #0xfc] +_020B8378: + ldr r0, _020B838C ; =UNK_021CEE18 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8384: .word UNK_021CED18 +_020B8388: .word UNK_021CED64 +_020B838C: .word UNK_021CEE18 + + arm_func_start FUN_020B8390 +FUN_020B8390: ; 0x020B8390 + orr r0, r0, r1, lsl #0x4 + + arm_func_start FUN_020B8394 +FUN_020B8394: ; 0x020B8394 + ldr r1, [sp, #0x4] + orr r0, r0, r2, lsl #0x6 + orr r0, r1, r0 + ldr r2, [sp, #0x0] + orr r1, r0, r3, lsl #0x18 + ldr r0, _020B83B8 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x9c] + bx lr + .balign 4 +_020B83B8: .word UNK_021CED18 + + arm_func_start FUN_020B83BC +FUN_020B83BC: ; 0x020B83BC + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B83DC ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x98] + bx lr + .balign 4 +_020B83DC: .word UNK_021CED18 + + arm_func_start FUN_020B83E0 +FUN_020B83E0: ; 0x020B83E0 + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B8400 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x94] + bx lr + .balign 4 +_020B8400: .word UNK_021CED18 + + arm_func_start FUN_020B8404 +FUN_020B8404: ; 0x020B8404 + ldr r2, _020B8414 ; =UNK_021CEDC0 + orr r1, r1, r0, lsl #0x1e + str r1, [r2, r0, lsl #0x2] + bx lr + .balign 4 +_020B8414: .word UNK_021CEDC0 + + arm_func_start FUN_020B8418 +FUN_020B8418: ; 0x020B8418 + stmdb sp!, {r4,lr} + ldr ip, _020B8444 ; =0x000003FF + ldr lr, _020B8448 ; =UNK_021CED98 + and r4, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + orr r1, r4, r1, lsl #0xa + orr r1, r1, r2, lsl #0x14 + orr r1, r1, r0, lsl #0x1e + str r1, [lr, r0, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020B8444: .word 0x000003FF +_020B8448: .word UNK_021CED98 + + arm_func_start FUN_020B844C +FUN_020B844C: ; 0x020B844C + ldr r3, _020B846C ; =UNK_021CEE04 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8470 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B846C: .word UNK_021CEE04 +_020B8470: .word UNK_021CED18 + + arm_func_start FUN_020B8474 +FUN_020B8474: ; 0x020B8474 + ldr r3, _020B8494 ; =UNK_021CEDF8 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8498 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B8494: .word UNK_021CEDF8 +_020B8498: .word UNK_021CED18 + + arm_func_start FUN_020B849C +FUN_020B849C: ; 0x020B849C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B84D4 ; =UNK_021CED18 + mov r2, #0x3e + ldr r0, [r1], #0x4 + bl FUN_020BB1C0 + ldr r0, _020B84D4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0x1 + str r1, [r0, #0xfc] + bic r1, r1, #0x2 + str r1, [r0, #0xfc] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B84D4: .word UNK_021CED18 + + arm_func_start FUN_020B84D8 +FUN_020B84D8: ; 0x020B84D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r8, _020B85F4 ; =0x17101610 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r5, _020B85FC ; =0x32323232 + ldr r4, _020B8600 ; =0x60293130 + ldr r3, _020B8604 ; =0x33333333 + ldr r2, _020B8608 ; =0x002A1B19 + mov r7, #0x0 + mov r6, #0x2 + ldr r0, _020B860C ; =UNK_021CED64 + str r8, [r1, #0x0] + str r7, [r1, #0x4] + str r6, [r1, #0x48] + str r5, [r1, #0x7c] + str r4, [r1, #0x90] + str r3, [r1, #0xa4] + str r2, [r1, #0xb8] + bl MTX_Identity43_ + ldr r0, _020B8610 ; =UNK_021CED20 + bl MTX_Identity44_ + mov r2, r7 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r7, _020B8614 ; =0x4210C210 + ldr r0, _020B8618 ; =0x40000200 + ldr lr, _020B861C ; =0x2D8B62D8 + ldr sb, _020B8620 ; =0x800001FF + ldr r8, _020B8624 ; =0xC0080000 + ldr r6, _020B8628 ; =0x001F008F + ldr r5, _020B862C ; =0xBFFF0000 + ldr r4, _020B8630 ; =0x00007FFF + ldr ip, _020B8634 ; =0x800003E0 + ldr r3, _020B8638 ; =0xC0007C00 + str r0, [r1, #0x84] + str lr, [r1, #0x80] + mov lr, #0x4000001f + ldr r0, _020B863C ; =UNK_021CEDD4 + str r9, [r1, #0x88] + str r8, [r1, #0x8c] + str r7, [r1, #0x94] + str r7, [r1, #0x98] + str r6, [r1, #0x9c] + str r5, [r1, #0xa0] + str r4, [r1, #0xa8] + str lr, [r1, #0xac] + str r12, [r1, #0xb0] + str r3, [r1, #0xb4] + str r2, [r1, #0xe0] + str r2, [r1, #0xe4] + str r2, [r1, #0xe8] + bl MTX_Identity33_ + mov r3, #0x1000 + ldr r0, _020B85F8 ; =UNK_021CED18 + mov r2, #0x0 + rsb r1, r3, #0x0 + str r3, [r0, #0xec] + str r3, [r0, #0xf0] + str r3, [r0, #0xf4] + str r2, [r0, #0xf8] + str r2, [r0, #0xfc] + str r2, [r0, #0x248] + str r2, [r0, #0x244] + str r2, [r0, #0x240] + str r2, [r0, #0x254] + str r2, [r0, #0x24c] + str r3, [r0, #0x250] + str r2, [r0, #0x25c] + str r2, [r0, #0x258] + str r1, [r0, #0x260] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B85F4: .word 0x17101610 +_020B85F8: .word UNK_021CED18 +_020B85FC: .word 0x32323232 +_020B8600: .word 0x60293130 +_020B8604: .word 0x33333333 +_020B8608: .word 0x002A1B19 +_020B860C: .word UNK_021CED64 +_020B8610: .word UNK_021CED20 +_020B8614: .word 0x4210C210 +_020B8618: .word 0x40000200 +_020B861C: .word 0x2D8B62D8 +_020B8620: .word 0x800001FF +_020B8624: .word 0xC0080000 +_020B8628: .word 0x001F008F +_020B862C: .word 0xBFFF0000 +_020B8630: .word 0x00007FFF +_020B8634: .word 0x800003E0 +_020B8638: .word 0xC0007C00 +_020B863C: .word UNK_021CEDD4 + + arm_func_start FUN_020B8640 +FUN_020B8640: ; 0x020B8640 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r0 + mov r0, #0x0 + mov r6, r1 + str r0, [r7, #0x0] + add r4, sp, #0x0 + mov r5, r2, lsl #0x1 + mov r8, #0x1 +_020B8664: + add r1, r5, r6 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B869C + ldr r3, [r6, #0xc] + mov r0, r4 + mov r1, r6 + and r2, r2, #0xff + blx r3 + ldr r2, [r7, #0x0] + ldr r1, [sp, #0x0] + mov r0, r8 + orr r1, r2, r1 + str r1, [r7, #0x0] +_020B869C: + ldr r6, [r6, #0x10] + cmp r6, #0x0 + bne _020B8664 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B86B0 +FUN_020B86B0: ; 0x020B86B0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r9, r1 + ldr r3, [r9, #0x10] + mov r10, r0 + mov r8, r2 + cmp r3, #0x0 + bne _020B8704 + add r2, r9, r8, lsl #0x1 + ldrh r4, [r2, #0x1a] + and r2, r4, #0x300 + cmp r2, #0x100 + addne sp, sp, #0x5c + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r9, #0xc] + and r2, r4, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B8704: + mov r7, #0x0 + mov r3, r7 + mov r4, r9 + mov r2, r8, lsl #0x1 +_020B8714: + add r0, r2, r4 + ldrh r0, [r0, #0x1a] + and r0, r0, #0x300 + cmp r0, #0x100 + ldreq r0, [r4, #0x4] + moveq r1, r4 + ldr r4, [r4, #0x10] + addeq r7, r7, r0 + addeq r3, r3, #0x1 + cmp r4, #0x0 + bne _020B8714 + cmp r7, #0x0 + addeq sp, sp, #0x5c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + cmp r3, #0x1 + bne _020B877C + add r0, r1, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + ldr r3, [r1, #0xc] + mov r0, r10 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B877C: + mov r1, r10 + mov r0, #0x0 + mov r2, #0x58 + bl MIi_CpuClearFast + mvn r0, #0x0 + str r0, [r10, #0x0] + add r5, sp, #0x0 + add r4, sp, #0x4 + add r11, sp, #0x10 +_020B87A0: + add r0, r9, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + and r0, r2, #0x300 + cmp r0, #0x100 + bne _020B8948 + ldr r0, [r9, #0x4] + cmp r0, #0x0 + ble _020B8948 + ldr r3, [r9, #0xc] + mov r0, r5 + mov r1, r9 + and r2, r2, #0xff + blx r3 + cmp r7, #0x1000 + ldreq r6, [r9, #0x4] + beq _020B87F0 + ldr r0, [r9, #0x4] + mov r1, r7 + bl FX_Div + mov r6, r0 +_020B87F0: + ldr r3, [sp, #0x0] + mov r1, r4 + mov r2, r6 + add r0, r10, #0x4 + and r3, r3, #0x1 + bl FUN_020B8998 + ldr r1, [sp, #0x0] + add r0, r10, #0x10 + and r3, r1, #0x8 + mov r1, r11 + mov r2, r6 + bl FUN_020B8998 + ldr r3, [sp, #0x0] + add r0, r10, #0x1c + add r1, sp, #0x1c + mov r2, r6 + and r3, r3, #0x10 + bl FUN_020B8998 + ldr r0, [sp, #0x0] + ands r0, r0, #0x4 + bne _020B8898 + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x4c] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x4c] + ldr r0, [sp, #0x50] + ldr r2, [r10, #0x50] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x50] + ldr r0, [sp, #0x54] + ldr r2, [r10, #0x54] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x54] +_020B8898: + ldr r0, [sp, #0x0] + ands r0, r0, #0x2 + bne _020B8920 + ldr r0, [sp, #0x28] + ldr r1, [r10, #0x28] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x28] + ldr r0, [sp, #0x2c] + ldr r1, [r10, #0x2c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x2c] + ldr r0, [sp, #0x30] + ldr r1, [r10, #0x30] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x30] + ldr r0, [sp, #0x34] + ldr r1, [r10, #0x34] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x34] + ldr r0, [sp, #0x38] + ldr r1, [r10, #0x38] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x38] + ldr r0, [sp, #0x3c] + ldr r1, [r10, #0x3c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x3c] + b _020B8938 +_020B8920: + ldr r0, [r10, #0x28] + add r0, r0, r6 + str r0, [r10, #0x28] + ldr r0, [r10, #0x38] + add r0, r0, r6 + str r0, [r10, #0x38] +_020B8938: + ldr r1, [r10, #0x0] + ldr r0, [sp, #0x0] + and r0, r1, r0 + str r0, [r10, #0x0] +_020B8948: + ldr r9, [r9, #0x10] + cmp r9, #0x0 + bne _020B87A0 + add r0, r10, #0x28 + add r1, r10, #0x34 + add r2, r10, #0x40 + bl VEC_CrossProduct + add r0, r10, #0x28 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + add r1, r10, #0x28 + add r2, r10, #0x34 + bl VEC_CrossProduct + mov r0, #0x1 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B8998 +FUN_020B8998: + cmp r3, #0x0 + beq _020B89C8 + ldr r1, [r0, #0x0] + add r1, r1, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r2 + str r1, [r0, #0x8] + bx lr +_020B89C8: + ldr r3, [r1, #0x0] + ldr r12, [r0, #0x0] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x0] + ldr r3, [r1, #0x4] + ldr r12, [r0, #0x4] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x4] + ldr r1, [r1, #0x8] + ldr r3, [r0, #0x8] + mul r1, r2, r1 + add r1, r3, r1, asr #0xc + str r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020B8A08 +FUN_020B8A08: ; 0x020B8A08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r0, #0x0 + mov r4, r2, lsl #0x1 + mov r7, #0x1 +_020B8A24: + add r1, r4, r5 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B8A4C + ldr r3, [r5, #0xc] + mov r0, r6 + mov r1, r5 + and r2, r2, #0xff + blx r3 + mov r0, r7 +_020B8A4C: + ldr r5, [r5, #0x10] + cmp r5, #0x0 + bne _020B8A24 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B8A60 +FUN_020B8A60: ; 0x020B8A60 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x80 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020B8DB4 + ands r0, r1, #0x1 + beq _020B8DB4 + add r0, sp, #0x10 + mov r1, #0x0 + bl FUN_020BB824 + mov r0, #0x1e + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x13 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r2, [r5, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0xc0000000 + beq _020B8AF0 + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r3, _020B8DC8 ; =UNK_02106630 + ldr r0, [r2, #0x10] + ldr r1, _020B8DCC ; =UNK_02106634 + orr r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8AF0: + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B8B3C + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8B40 +_020B8B3C: + mov r0, #0x0 +_020B8B40: + cmp r0, #0x0 + bne _020B8B84 + ldr r0, [r5, #0xb0] + ldr r1, _020B8DD0 ; =UNK_02106660 + ldrh r6, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + mov r0, #0x16 + rsb r2, r6, #0x0 + mov lr, r3, lsl #0xf + mov r12, r2, lsl #0xf + mov r3, r6, lsl #0xf + mov r2, #0x10 + str lr, [r1, #0x0] + str r12, [r1, #0x14] + str lr, [r1, #0x30] + str r3, [r1, #0x34] + bl FUN_020BB1C0 +_020B8B84: + cmp r4, #0x2 + bne _020B8BC0 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8BC4 +_020B8BC0: + mov r0, #0x0 +_020B8BC4: + cmp r0, #0x0 + bne _020B8C28 + ldr r12, [r5, #0xd8] + ldr r0, [r5, #0x0] + ldrh r2, [r12, #0xa] + add r3, r12, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8C28 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8C28: + cmp r4, #0x3 + movne r0, #0x0 + bne _020B8C54 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x8] + and r0, r0, #0x40 +_020B8C54: + cmp r0, #0x0 + bne _020B8D84 + ldr r0, _020B8DD4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B8CA0 + ldr r1, _020B8DD8 ; =UNK_021CEDF8 + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + ldr r1, _020B8DDC ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CA0: + ands r0, r1, #0x2 + beq _020B8CBC + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CBC: + bl FUN_020B8344 + mov r1, r0 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 +_020B8CE0: + bl FUN_020BB394 + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020B8DE4 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020B8DE8 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add r4, sp, #0x40 +_020B8D04: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B8D04 + ldr r1, _020B8DEC ; =0x04000448 + mov r2, #0x1 + str r2, [r1, #0x0] + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x3 + str r2, [r0, #0x0] + add r1, sp, #0x40 + mov r0, #0x16 + mov r2, #0x10 + bl FUN_020BB1C0 + ldr r1, [sp, #0x70] + ldr r0, [sp, #0x74] + mov r2, r1, asr #0x4 + mov r1, r0, asr #0x4 + mov r0, r2, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8D84: + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + mov r3, #0x1e + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 +_020B8DB4: + ldr r0, [r5, #0x0] + add r0, r0, #0x3 + str r0, [r5, #0x0] + add sp, sp, #0x80 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B8DC8: .word UNK_02106630 +_020B8DCC: .word UNK_02106634 +_020B8DD0: .word UNK_02106660 +_020B8DD4: .word UNK_021CED18 +_020B8DD8: .word UNK_021CEDF8 +_020B8DDC: .word UNK_021CEDD4 +_020B8DE0: .word 0x04000440 +_020B8DE4: .word 0x04000444 +_020B8DE8: .word 0x04000454 +_020B8DEC: .word 0x04000448 + + arm_func_start FUN_020B8DF0 +FUN_020B8DF0: ; 0x020B8DF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r7, r0 + ldr r1, [r7, #0x8] + ands r0, r1, #0x200 + bne _020B90E8 + ands r0, r1, #0x1 + beq _020B90E8 + ldr r2, [r7, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0x80000000 + beq _020B8E5C + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r3, _020B90FC ; =UNK_02106638 + ldr r0, [r2, #0x10] + ldr r1, _020B9100 ; =UNK_0210663C + orr r0, r0, #0x80000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8E5C: + mov r0, #0x3 + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x10 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + moveq r6, #0x0 + cmp r6, #0x1 + bne _020B8EC0 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8EC4 +_020B8EC0: + mov r0, #0x0 +_020B8EC4: + cmp r0, #0x0 + bne _020B8F3C + ldr r0, [r7, #0xb0] + add r1, sp, #0x38 + ldrh r4, [r0, #0x2e] + ldrh r5, [r0, #0x2c] + mov r3, #0x10000 + rsb r0, r4, #0x0 + mov r12, r0, lsl #0xf + mov lr, r5, lsl #0xf + mov r0, #0x1b + mov r2, #0x3 + str lr, [sp, #0x38] + str r12, [sp, #0x3c] + str r3, [sp, #0x40] + bl FUN_020BB1C0 + mov r0, r5, lsl #0x13 + mov r1, r4, lsl #0x13 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8F3C: + cmp r6, #0x2 + bne _020B8F78 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8F7C +_020B8F78: + mov r0, #0x0 +_020B8F7C: + cmp r0, #0x0 + bne _020B8FE0 + ldr r4, [r7, #0xd8] + ldr r0, [r7, #0x0] + ldrh r2, [r4, #0xa] + add r3, r4, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8FE0 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8FE0: + cmp r6, #0x3 + movne r0, #0x0 + bne _020B900C + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x8] + and r0, r0, #0x40 +_020B900C: + cmp r0, #0x0 + bne _020B90D0 + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x0 + bl FUN_020BB824 + mov r3, #0x3 + add r1, sp, #0xc + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 + ldr r0, _020B9104 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9094 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + ldr r1, _020B910C ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B9094: + ands r0, r1, #0x2 + beq _020B90C0 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B90C0: + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020B90D0: + mov r3, #0x2 + add r1, sp, #0x10 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020B90E8: + ldr r0, [r7, #0x0] + add r0, r0, #0x3 + str r0, [r7, #0x0] + add sp, sp, #0x44 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B90FC: .word UNK_02106638 +_020B9100: .word UNK_0210663C +_020B9104: .word UNK_021CED18 +_020B9108: .word UNK_021CED64 +_020B910C: .word UNK_021CEDD4 + + arm_func_start FUN_020B9110 +FUN_020B9110: ; 0x020B9110 + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r2, [r4, #0x8] + ands r0, r2, #0x100 + bne _020B9164 + ands r0, r2, #0x200 + bne _020B9164 + cmp r1, #0x0 + ldreq r0, [r4, #0xe0] + add r1, sp, #0x0 + streq r0, [sp, #0x8] + streq r0, [sp, #0x4] + streq r0, [sp, #0x0] + ldrne r0, [r4, #0xe4] + mov r2, #0x3 + strne r0, [sp, #0x8] + strne r0, [sp, #0x4] + strne r0, [sp, #0x0] + mov r0, #0x1b + bl FUN_020BB1C0 +_020B9164: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B9178 +FUN_020B9178: ; 0x020B9178 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B91CC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r1, r0, #0x40 + b _020B91D0 +_020B91CC: + mov r1, #0x0 +_020B91D0: + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020B9228 + cmp r1, #0x0 + bne _020B9228 + ldr r0, [r5, #0x0] + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x2] + ldrb lr, [r0, #0x3] + ldrb r2, [r0, #0x5] + ldrb r1, [r0, #0x6] + orr r3, r12, r3, lsl #0x8 + ldrb r6, [r0, #0x4] + orr r12, r3, lr, lsl #0x10 + ldrb r3, [r0, #0x7] + orr r1, r2, r1, lsl #0x8 + orr r6, r12, r6, lsl #0x18 + ldrb r2, [r0, #0x8] + orr r1, r1, r3, lsl #0x10 + add r0, r0, r6 + orr r1, r1, r2, lsl #0x18 + bl FUN_020BB2B0 +_020B9228: + cmp r4, #0x3 + bne _020B9248 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 +_020B9248: + ldr r0, [r5, #0x0] + add r0, r0, #0x9 + str r0, [r5, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B9258 +FUN_020B9258: ; 0x020B9258 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x8c + ldr r1, [r0, #0x4] + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x4] + ldrb r2, [r4, #0x2] + ldr r3, [r6, #0x10] + mov r10, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x8] + add r3, r6, r3 + add r1, sp, #0x34 + mov r0, r10 + mov r2, #0x54 + mov r9, r10 + str r3, [sp, #0x4] + add r8, r4, #0x3 + bl MIi_CpuClearFast + bl FUN_020BB394 + ldr r0, _020B98AC ; =0x04000440 + mov r7, r10 + str r7, [r0, #0x0] + mov r0, #0x1 + ldr r2, _020B98B0 ; =0x0400044C + ldr r1, _020B98B4 ; =0x04000454 + str r0, [r2, #0x0] + str r0, [sp, #0x10] + str r7, [r1, #0x0] + mov r1, #0x2 + ldr r0, _020B98AC ; =0x04000440 + str r1, [sp, #0x14] + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _020B96CC +_020B92E4: + ldrb r4, [r8, #0x1] + mov r0, #0x64 + ldr r3, _020B98B8 ; =UNK_021D0380 + mul r0, r4, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r1, r4, lsr #0x5 + add r0, r0, r1, lsl #0x2 + ldr r1, [sp, #0x10] + and r2, r4, #0x1f + mov r1, r1, lsl r2 + ldr r11, [r0, #0xcc] + ldr r2, [sp, #0xc] + ands r11, r1, r11 + add r6, r3, r2 + bne _020B9358 + ldr r3, [r0, #0xcc] + mov r2, #0x54 + orr r1, r3, r1 + str r1, [r0, #0xcc] + ldr r0, [sp, #0x4] + ldr r1, _020B98BC ; =0x04000450 + mla r0, r4, r2, r0 + ldrb r2, [r8, #0x0] + str r2, [r1, #0x0] + ldr r2, [sp, #0x10] + ldr r1, _020B98AC ; =0x04000440 + str r2, [r1, #0x0] + bl G3_MultMtx43 +_020B9358: + cmp r7, #0x0 + beq _020B9500 + ldr r2, [sp, #0x6c] + ldr r1, [r5, #0x0] + str r2, [sp, #0x18] + ldr r2, [sp, #0x70] + mov r0, r1, asr #0x1f + str r2, [sp, #0x1c] + ldr r2, [sp, #0x74] + ldr r12, [sp, #0x64] + str r2, [sp, #0x20] + ldr r2, [sp, #0x78] + ldr lr, [sp, #0x68] + str r2, [sp, #0x24] + ldr r2, [sp, #0x7c] + str r2, [sp, #0x28] + ldr r2, [sp, #0x80] + str r2, [sp, #0x2c] + ldr r2, [sp, #0x84] + str r2, [sp, #0x30] + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r12, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, lr, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x18] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x6c] + ldr r1, [r5, #0xc] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x1c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x70] + ldr r1, [r5, #0x10] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x20] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x74] + ldr r1, [r5, #0x14] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x24] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x78] + ldr r1, [r5, #0x18] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x28] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x7c] + ldr r1, [r5, #0x1c] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x2c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x80] + ldr r1, [r5, #0x20] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x30] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x84] +_020B9500: + cmp r11, #0x0 + bne _020B9538 +_020B9508: + mov r0, r6 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9508 + ldr r1, [sp, #0x14] + ldr r0, _020B98AC ; =0x04000440 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x54 + mla r0, r4, r1, r0 + add r0, r0, #0x30 + bl G3_MultMtx33 +_020B9538: + ldrb r1, [r8, #0x2] + ldr r2, [sp, #0x34] + ldr r0, [r6, #0x0] + mov r10, r1, lsl #0x4 + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x34] + mov r9, r10, asr #0x1f + ldr r2, [sp, #0x38] + ldr r0, [r6, #0x4] + ldr r3, [sp, #0x3c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x38] + ldr r0, [r6, #0x8] + ldr r2, [sp, #0x40] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x3c] + ldr r0, [r6, #0x10] + ldr r3, [sp, #0x44] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x40] + ldr r0, [r6, #0x14] + ldr r2, [sp, #0x48] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x44] + ldr r0, [r6, #0x18] + ldr r3, [sp, #0x4c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x48] + ldr r0, [r6, #0x20] + ldr r2, [sp, #0x50] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x4c] + ldr r0, [r6, #0x24] + ldr r3, [sp, #0x54] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x50] + ldr r0, [r6, #0x28] + ldr r2, [sp, #0x58] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x54] + ldr r0, [r6, #0x30] + ldr r3, [sp, #0x5c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x58] + ldr r0, [r6, #0x34] + ldr r2, [sp, #0x60] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x5c] + ldr r0, [r6, #0x38] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x60] + cmp r11, #0x0 + ldr r1, _020B98C0 ; =UNK_021D03C0 + ldr r0, [sp, #0xc] + add r5, r1, r0 + add r8, r8, #0x3 + bne _020B96BC +_020B96AC: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020B96AC +_020B96BC: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + cmp r7, r0 + blo _020B92E4 +_020B96CC: + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x64] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x68] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + ldr r4, [sp, #0x6c] + umull r0, r2, r10, r1 + mov r3, r0, lsr #0xc + mov r0, r1, asr #0x1f + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + orr r3, r3, r2, lsl #0x14 + adds r0, r4, r3 + str r0, [sp, #0x6c] + ldr r7, [r5, #0xc] + ldr r12, [sp, #0x70] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r6, r12, r6 + str r6, [sp, #0x70] + ldr r7, [r5, #0x10] + ldr r4, [sp, #0x74] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r4, r4, r6 + str r4, [sp, #0x74] + ldr r6, [r5, #0x14] + ldr r3, [sp, #0x78] + mov r4, r6, asr #0x1f + umull r8, r7, r10, r6 + mla r7, r10, r4, r7 + mla r7, r9, r6, r7 + mov r4, r8, lsr #0xc + orr r4, r4, r7, lsl #0x14 + adds r3, r3, r4 + str r3, [sp, #0x78] + ldr r4, [r5, #0x18] + ldr r2, [sp, #0x7c] + mov r3, r4, asr #0x1f + umull r7, r6, r10, r4 + mla r6, r10, r3, r6 + mla r6, r9, r4, r6 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + adds r2, r2, r3 + str r2, [sp, #0x7c] + ldr r3, [r5, #0x1c] + ldr r1, [sp, #0x80] + mov r2, r3, asr #0x1f + umull r6, r4, r10, r3 + mla r4, r10, r2, r4 + mla r4, r9, r3, r4 + mov r2, r6, lsr #0xc + orr r2, r2, r4, lsl #0x14 + adds r1, r1, r2 + str r1, [sp, #0x80] + ldr r2, [r5, #0x20] + ldr lr, [sp, #0x84] + mov r1, r2, asr #0x1f + umull r4, r3, r10, r2 + mla r3, r10, r1, r3 + mla r3, r9, r2, r3 + mov r1, r4, lsr #0xc + orr r1, r1, r3, lsl #0x14 + adds r1, lr, r1 + add r0, sp, #0x64 + str r1, [sp, #0x84] + bl G3_LoadMtx43 + ldr r1, _020B98AC ; =0x04000440 + mov r2, #0x1 + add r0, sp, #0x34 + str r2, [r1, #0x0] + bl G3_LoadMtx43 + ldr r3, _020B98AC ; =0x04000440 + mov r0, #0x0 + str r0, [r3, #0x0] + ldr r1, _020B98BC ; =0x04000450 + mov r2, #0x1 + mov r0, #0x2 + str r2, [r1, #0x0] + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020B98B0 ; =0x0400044C + ldrb r2, [r1, #0x1] + mov r1, #0x3 + str r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x2] + add r0, r0, #0x1 + mla r1, r0, r1, r2 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x8c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B98AC: .word 0x04000440 +_020B98B0: .word 0x0400044C +_020B98B4: .word 0x04000454 +_020B98B8: .word UNK_021D0380 +_020B98BC: .word 0x04000450 +_020B98C0: .word UNK_021D03C0 + + arm_func_start FUN_020B98C4 +FUN_020B98C4: ; 0x020B98C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xcc + mov r10, r0 + ldr r2, [r10, #0x8] + mov r9, r1 + ands r0, r2, #0x200 + mov r7, #0x2 + ldr r6, _020B9C28 ; =UNK_02106718 + ldr fp, _020B9C2C ; =UNK_02106724 + ldr r5, _020B9C30 ; =UNK_021066F4 + beq _020B992C + cmp r9, #0x40 + beq _020B9900 + cmp r9, #0x60 + bne _020B9904 +_020B9900: + add r7, r7, #0x1 +_020B9904: + cmp r9, #0x20 + beq _020B9914 + cmp r9, #0x60 + bne _020B9918 +_020B9914: + add r7, r7, #0x1 +_020B9918: + ldr r0, [r10, #0x0] + add sp, sp, #0xcc + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020B992C: + cmp r9, #0x40 + beq _020B993C + cmp r9, #0x60 + bne _020B9974 +_020B993C: + add r7, r7, #0x1 + ands r0, r2, #0x100 + bne _020B9974 + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9974: + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020B99C0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r1, r0, #0x40 + b _020B99C4 +_020B99C0: + mov r1, #0x0 +_020B99C4: + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9BA4 + cmp r1, #0x0 + bne _020B9BA4 + bl FUN_020BB394 + ldr r2, _020B9C34 ; =0x00151110 + ldr r1, _020B9C38 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r4, sp, #0x8 +_020B99F8: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B99F8 + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9A38 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9A5C +_020B9A38: + ands r0, r1, #0x2 + beq _020B9A5C + ldr r0, _020B9C40 ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9A5C: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r6, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r6, #0x4] + ldr r1, [sp, #0x40] + str r1, [r6, #0x8] + bl VEC_Mag + str r0, [r11, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r11, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + str r0, [r11, #0x8] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _020B9AB0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _020B9AD4 +_020B9AB0: + add r0, sp, #0x18 + add r1, r5, #0xc + bl VEC_Normalize + ldr r0, [r5, #0x14] + rsb r0, r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x10] + str r0, [r5, #0x20] + b _020B9AF4 +_020B9AD4: + add r0, sp, #0x28 + add r1, r5, #0x18 + bl VEC_Normalize + ldr r0, [r5, #0x1c] + rsb r0, r0, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x20] + str r0, [r5, #0x10] +_020B9AF4: + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9B48 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B48: + ands r0, r1, #0x2 + beq _020B9B94 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B94: + ldr r0, _020B9C50 ; =UNK_021066E8 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9BA4: + cmp r8, #0x3 + movne r0, #0x0 + bne _020B9BD0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020B9BD0: + cmp r9, #0x20 + beq _020B9BE0 + cmp r9, #0x60 + bne _020B9C14 +_020B9BE0: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020B9C14 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9C14 + ldr r0, [r10, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9C14: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0xcc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B9C28: .word UNK_02106718 +_020B9C2C: .word UNK_02106724 +_020B9C30: .word UNK_021066F4 +_020B9C34: .word 0x00151110 +_020B9C38: .word 0x04000400 +_020B9C3C: .word UNK_021CED18 +_020B9C40: .word UNK_021CED64 +_020B9C44: .word 0x00171012 +_020B9C48: .word UNK_021066EC +_020B9C4C: .word 0x00001B19 +_020B9C50: .word UNK_021066E8 + + arm_func_start FUN_020B9C54 +FUN_020B9C54: ; 0x020B9C54 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0xc8 + mov r9, r0 + ldr r2, [r9, #0x8] + mov r8, r1 + ands r0, r2, #0x200 + mov r6, #0x2 + ldr r5, _020B9F58 ; =UNK_021066D0 + ldr r4, _020B9F5C ; =UNK_021066DC + beq _020B9CB8 + cmp r8, #0x40 + beq _020B9C8C + cmp r8, #0x60 + bne _020B9C90 +_020B9C8C: + add r6, r6, #0x1 +_020B9C90: + cmp r8, #0x20 + beq _020B9CA0 + cmp r8, #0x60 + bne _020B9CA4 +_020B9CA0: + add r6, r6, #0x1 +_020B9CA4: + ldr r0, [r9, #0x0] + add sp, sp, #0xc8 + add r0, r0, r6 + str r0, [r9, #0x0] + ldmia sp!, {r4-r10,pc} +_020B9CB8: + cmp r8, #0x40 + beq _020B9CC8 + cmp r8, #0x60 + bne _020B9D00 +_020B9CC8: + add r6, r6, #0x1 + ands r0, r2, #0x100 + bne _020B9D00 + cmp r8, #0x40 + ldreq r0, [r9, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r9, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9D00: + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + moveq r7, #0x0 + cmp r7, #0x1 + bne _020B9D4C + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + ldr r0, [r9, #0x8] + moveq r7, #0x0 + and r1, r0, #0x40 + b _020B9D50 +_020B9D4C: + mov r1, #0x0 +_020B9D50: + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9ED4 + cmp r1, #0x0 + bne _020B9ED4 + bl FUN_020BB394 + ldr r2, _020B9F60 ; =0x00151110 + ldr r1, _020B9F64 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r10, sp, #0x8 +_020B9D84: + mov r0, r10 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9D84 + ldr r0, _020B9F68 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9DC4 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9DE8 +_020B9DC4: + ands r0, r1, #0x2 + beq _020B9DE8 + ldr r0, _020B9F6C ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9DE8: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r5, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r5, #0x4] + ldr r1, [sp, #0x40] + str r1, [r5, #0x8] + bl VEC_Mag + str r0, [r4, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r4, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + ldr r1, _020B9F68 ; =UNK_021CED18 + str r0, [r4, #0x8] + ldr r1, [r1, #0xfc] + ands r0, r1, #0x1 + beq _020B9E78 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9E78: + ands r0, r1, #0x2 + beq _020B9EC4 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9EC4: + ldr r0, _020B9F80 ; =UNK_021066A0 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9ED4: + cmp r7, #0x3 + movne r0, #0x0 + bne _020B9F00 + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x8] + and r0, r0, #0x40 +_020B9F00: + cmp r8, #0x20 + beq _020B9F10 + cmp r8, #0x60 + bne _020B9F44 +_020B9F10: + cmp r0, #0x0 + add r6, r6, #0x1 + bne _020B9F44 + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9F44 + ldr r0, [r9, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9F44: + ldr r0, [r9, #0x0] + add r0, r0, r6 + str r0, [r9, #0x0] + add sp, sp, #0xc8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B9F58: .word UNK_021066D0 +_020B9F5C: .word UNK_021066DC +_020B9F60: .word 0x00151110 +_020B9F64: .word 0x04000400 +_020B9F68: .word UNK_021CED18 +_020B9F6C: .word UNK_021CED64 +_020B9F70: .word 0x00171012 +_020B9F74: .word UNK_021066A4 +_020B9F78: .word 0x00001B19 +_020B9F7C: .word UNK_021066AC +_020B9F80: .word UNK_021066A0 + + arm_func_start FUN_020B9F84 +FUN_020B9F84: ; 0x020B9F84 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + ldrb r4, [r0, #0x1] + mov r7, #0x4 + strb r4, [r10, #0xae] + ldr r0, [r10, #0x8] + orr r0, r0, #0x10 + str r0, [r10, #0x8] + ldr r1, [r10, #0x8] + ands r0, r1, #0x400 + beq _020BA01C + cmp r9, #0x40 + beq _020B9FCC + cmp r9, #0x60 + bne _020B9FD0 +_020B9FCC: + add r7, r7, #0x1 +_020B9FD0: + cmp r9, #0x20 + beq _020B9FE0 + cmp r9, #0x60 + bne _020BA008 +_020B9FE0: + add r7, r7, #0x1 + ands r0, r1, #0x100 + bne _020BA008 + ldr r0, [r10, #0x0] + add r1, sp, #0x8 + ldrb r3, [r0, #0x4] + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 +_020BA008: + ldr r0, [r10, #0x0] + add sp, sp, #0x14 + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020BA01C: + cmp r9, #0x40 + beq _020BA02C + cmp r9, #0x60 + bne _020BA068 +_020BA02C: + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r7, r7, #0x1 + ldreqb r0, [r0, #0x4] + streq r0, [sp, #0xc] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x5] + strne r0, [sp, #0xc] + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA068 + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BA068: + add r0, r10, #0x12c + str r0, [r10, #0xb4] + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020BA0BC + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA0C0 +_020BA0BC: + mov r0, #0x0 +_020BA0C0: + cmp r0, #0x0 + bne _020BA2CC + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x34] + cmp r1, #0x0 + beq _020BA0F4 + mov r0, #0x58 + mla r6, r4, r0, r1 + ldr r0, [r10, #0x8] + ands r0, r0, #0x80 + moveq r0, #0x1 + movne r0, #0x0 + b _020BA0FC +_020BA0F4: + add r6, r10, #0x12c + mov r0, #0x0 +_020BA0FC: + cmp r0, #0x0 + bne _020BA2C8 + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020BA134 + ldr r3, [r0, #0x14] + mov r0, r6 + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BA2C8 +_020BA134: + ldr r2, [r10, #0xd4] + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r1, [r0, #0x4] + ldrh r0, [r2, r1] + add r4, r2, r1 + add r5, r4, #0x4 + ands r0, r0, #0x1 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x4 + strne r0, [r6, #0x0] + bne _020BA188 + ldr r0, [r5, #0x0] + str r0, [r6, #0x4c] + ldr r0, [r5, #0x4] + str r0, [r6, #0x50] + ldr r0, [r5, #0x8] + add r5, r5, #0xc + str r0, [r6, #0x54] +_020BA188: + ldrh r1, [r4, #0x0] + ands r0, r1, #0x2 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x2 + strne r0, [r6, #0x0] + bne _020BA2B0 + ands r0, r1, #0x8 + beq _020BA264 + and r1, r1, #0xf0 + mov r11, r1, asr #0x4 + ldrsh r1, [r5, #0x0] + add r0, r6, #0x28 + str r1, [sp, #0x0] + ldrsh r1, [r5, #0x2] + str r1, [sp, #0x4] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r6, r11, lsl #0x2 + add r5, r5, #0x4 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + str r2, [r1, #0x28] + ldr r0, _020BA3B4 ; =UNK_020FF9F0 + ldr r1, _020BA3B8 ; =UNK_020FF9F1 + ldrb r0, [r0, r11, lsl #0x2] + add r2, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r2, #0x28] + ldrb r0, [r1, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldrne r0, [sp, #0x4] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x4] + ldr r0, _020BA3BC ; =UNK_020FF9F2 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldrne r0, [sp, #0x0] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x0] + ldr r0, _020BA3C0 ; =UNK_020FF9F3 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r1, #0x28] + b _020BA2B0 +_020BA264: + ldrsh r0, [r4, #0x2] + str r0, [r6, #0x28] + ldrsh r0, [r5, #0x0] + str r0, [r6, #0x2c] + ldrsh r0, [r5, #0x2] + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x4] + str r0, [r6, #0x34] + ldrsh r0, [r5, #0x6] + str r0, [r6, #0x38] + ldrsh r0, [r5, #0x8] + str r0, [r6, #0x3c] + ldrsh r0, [r5, #0xa] + str r0, [r6, #0x40] + ldrsh r0, [r5, #0xc] + str r0, [r6, #0x44] + ldrsh r0, [r5, #0xe] + add r5, r5, #0x10 + str r0, [r6, #0x48] +_020BA2B0: + ldrh r3, [r4, #0x0] + ldr r2, [r10, #0x0] + ldr r4, [r10, #0xe8] + mov r0, r6 + mov r1, r5 + blx r4 +_020BA2C8: + str r6, [r10, #0xb4] +_020BA2CC: + cmp r8, #0x2 + bne _020BA308 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA30C +_020BA308: + mov r0, #0x0 +_020BA30C: + cmp r0, #0x0 + bne _020BA32C + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA32C + ldr r0, [r10, #0xb4] + ldr r1, [r10, #0xec] + blx r1 +_020BA32C: + mov r0, #0x0 + str r0, [r10, #0xb4] + cmp r8, #0x3 + bne _020BA35C + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020BA35C: + cmp r9, #0x20 + beq _020BA36C + cmp r9, #0x60 + bne _020BA3A0 +_020BA36C: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020BA3A0 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA3A0 + ldr r0, [r10, #0x0] + add r1, sp, #0x10 + ldrb r3, [r0, #0x4] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020BA3A0: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BA3B4: .word UNK_020FF9F0 +_020BA3B8: .word UNK_020FF9F1 +_020BA3BC: .word UNK_020FF9F2 +_020BA3C0: .word UNK_020FF9F3 + + arm_func_start FUN_020BA3C4 +FUN_020BA3C4: ; 0x020BA3C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r3, [r4, #0x8] + ands r2, r3, #0x200 + bne _020BA420 + ands r2, r3, #0x1 + beq _020BA420 + ands r2, r3, #0x2 + bne _020BA420 + ldr r5, [r4, #0xdc] + ldr r3, [r4, #0x0] + ldrh r2, [r5, #0x6] + ldrb r3, [r3, #0x1] + ldr ip, _020BA434 ; =UNK_02106650 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r5, r2] + add r2, r5, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA420: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BA434: .word UNK_02106650 + + arm_func_start FUN_020BA438 +FUN_020BA438: ; 0x020BA438 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x20] + mov r5, r2 + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BA490 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + ldr r0, [r6, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BA494 +_020BA490: + mov r0, #0x0 +_020BA494: + cmp r0, #0x0 + bne _020BA4B8 + ldr r0, [r6, #0x8] + ands r0, r0, #0x100 + bne _020BA4B8 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + add r0, r5, r0 + bl FUN_020BB2B0 +_020BA4B8: + cmp r4, #0x2 + bne _020BA4E8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 +_020BA4E8: + cmp r4, #0x3 + ldmneia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BA50C +FUN_020BA50C: ; 0x020BA50C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r5, [r4, #0x8] + ands r0, r5, #0x200 + bne _020BA578 + ldr r2, [r4, #0x0] + ands r0, r5, #0x1 + ldrb r3, [r2, #0x1] + bne _020BA544 + ands r0, r5, #0x8 + beq _020BA544 + ldrb r0, [r4, #0xad] + cmp r3, r0 + beq _020BA578 +_020BA544: + ldr r6, [r4, #0xd8] + ldr ip, _020BA588 ; =UNK_02106640 + ldrh r2, [r6, #0xa] + add r5, r6, #0x4 + mov r0, r4 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r6, r2] + add r2, r6, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA578: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BA588: .word UNK_02106640 + + arm_func_start FUN_020BA58C +FUN_020BA58C: ; 0x020BA58C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x20 + mov r8, r0 + mov r6, r3 + strb r6, [r8, #0xad] + ldr r3, [r8, #0x8] + add r0, r8, #0xf4 + orr r3, r3, #0x8 + str r3, [r8, #0x8] + str r0, [r8, #0xb0] + ldr r0, [r8, #0x1c] + mov r4, r1 + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + mov r7, r2 + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BA608 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA60C +_020BA608: + mov r0, #0x0 +_020BA60C: + cmp r0, #0x0 + bne _020BA8C0 + ldr r0, [r8, #0x4] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _020BA638 + ldr r1, [r8, #0x8] + ands r1, r1, #0x80 + moveq r1, #0x38 + mlaeq r4, r6, r1, r0 + beq _020BA8BC +_020BA638: + cmp r4, #0x20 + beq _020BA648 + cmp r4, #0x40 + bne _020BA684 +_020BA648: + mov r1, r6, lsr #0x5 + add r1, r8, r1, lsl #0x2 + and r2, r6, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xbc] + ands r1, r2, r1 + beq _020BA684 + cmp r0, #0x0 + movne r1, #0x38 + mlane r4, r6, r1, r0 + ldreq r1, _020BA9D8 ; =UNK_021CEF80 + moveq r0, #0x38 + mlaeq r4, r6, r0, r1 + b _020BA8BC +_020BA684: + cmp r0, #0x0 + beq _020BA6BC + add r4, r8, #0xbc + mov r3, r6, lsr #0x5 + ldr r2, [r4, r3, lsl #0x2] + and r0, r6, #0x1f + mov r1, #0x1 + orr r0, r2, r1, lsl r0 + str r0, [r4, r3, lsl #0x2] + ldr r1, [r8, #0x4] + mov r0, #0x38 + ldr r1, [r1, #0x38] + mla r4, r6, r0, r1 + b _020BA6F0 +_020BA6BC: + cmp r4, #0x40 + addne r4, r8, #0xf4 + bne _020BA6F0 + add lr, r8, #0xbc + mov r12, r6, lsr #0x5 + ldr r1, _020BA9D8 ; =UNK_021CEF80 + ldr r4, [lr, r12, lsl #0x2] + mov r0, #0x38 + and r2, r6, #0x1f + mov r3, #0x1 + orr r2, r4, r3, lsl r2 + mla r4, r6, r0, r1 + str r2, [lr, r12, lsl #0x2] +_020BA6F0: + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r3, [r8, #0xd8] + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r6, r0 + ldr r0, [r0, #0x4] + ldr r1, _020BA9DC ; =UNK_021CED18 + add r0, r3, r0 + ldrh r0, [r0, #0x1e] + ands r0, r0, #0x20 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x20 + strne r0, [r4, #0x0] + ldrh r2, [r7, #0x1e] + ldr r0, _020BA9E0 ; =UNK_020FF9D0 + ldr r12, [r1, #0x94] + mov r2, r2, asr #0x6 + and r2, r2, #0x7 + ldr lr, [r0, r2, lsl #0x2] + ldr r2, [r7, #0x4] + mvn r3, lr + and r3, r12, r3 + and r2, r2, lr + orr r2, r3, r2 + str r2, [r4, #0x4] + ldrh r12, [r7, #0x1e] + ldr r3, [r1, #0x98] + ldr r2, [r7, #0x8] + mov r12, r12, asr #0x9 + and r12, r12, #0x7 + ldr r12, [r0, r12, lsl #0x2] + mvn r0, r12 + and r3, r3, r0 + and r0, r2, r12 + orr r0, r3, r0 + str r0, [r4, #0x8] + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + ldr r2, [r1, #0x9c] + mvn r1, r3 + and r1, r2, r1 + and r0, r0, r3 + orr r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x14] + str r0, [r4, #0x10] + ldrh r0, [r7, #0x1c] + str r0, [r4, #0x14] + ldrh r1, [r7, #0x1e] + ands r0, r1, #0x1 + beq _020BA850 + ands r1, r1, #0x2 + ldrne r1, [r4, #0x0] + add r0, r7, #0x2c + orrne r1, r1, #0x1 + strne r1, [r4, #0x0] + bne _020BA7F4 + ldr r1, [r0, #0x0] + str r1, [r4, #0x18] + ldr r1, [r0, #0x4] + add r0, r0, #0x8 + str r1, [r4, #0x1c] +_020BA7F4: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x4 + ldrne r1, [r4, #0x0] + orrne r1, r1, #0x2 + strne r1, [r4, #0x0] + bne _020BA820 + ldrsh r1, [r0, #0x0] + strh r1, [r4, #0x20] + ldrsh r1, [r0, #0x2] + add r0, r0, #0x4 + strh r1, [r4, #0x22] +_020BA820: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x8 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x24] + ldreq r0, [r0, #0x4] + streq r0, [r4, #0x28] + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x4 + strne r0, [r4, #0x0] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] +_020BA850: + ldr r0, [r8, #0x4] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _020BA890 + mov r2, r6, lsr #0x5 + add r2, r0, r2, lsl #0x2 + and r3, r6, #0x1f + mov r12, #0x1 + mov r3, r12, lsl r3 + ldr r2, [r2, #0x3c] + ands r2, r3, r2 + beq _020BA890 + ldr r3, [r0, #0xc] + mov r0, r4 + mov r2, r6 + blx r3 +_020BA890: + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA8BC + ldrh r0, [r7, #0x20] + strh r0, [r4, #0x2c] + ldrh r0, [r7, #0x22] + strh r0, [r4, #0x2e] + ldr r0, [r7, #0x24] + str r0, [r4, #0x30] + ldr r0, [r7, #0x28] + str r0, [r4, #0x34] +_020BA8BC: + str r4, [r8, #0xb0] +_020BA8C0: + cmp r5, #0x2 + bne _020BA8FC + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA900 +_020BA8FC: + mov r0, #0x0 +_020BA900: + cmp r0, #0x0 + bne _020BA9AC + ldr r4, [r8, #0xb0] + ldr r1, [r4, #0xc] + ands r0, r1, #0x1f0000 + beq _020BA9A0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + strne r0, [r4, #0xc] + ldr r0, [r8, #0x8] + bic r0, r0, #0x2 + str r0, [r8, #0x8] + ldr r0, [r8, #0x8] + ands r0, r0, #0x100 + bne _020BA9AC + ldr r0, _020BA9E4 ; =0x00293130 + ldr r3, _020BA9E8 ; =0x00002B2A + str r0, [sp, #0x0] + ldr r2, [r4, #0x4] + add r1, sp, #0x4 + str r2, [sp, #0x4] + ldr r6, [r4, #0x8] + mov r2, #0x6 + str r6, [sp, #0x8] + ldr r6, [r4, #0xc] + str r6, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r4, #0x10] + str r3, [sp, #0x14] + ldr r3, [r4, #0x14] + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA9AC + ldr r1, [r8, #0xf0] + mov r0, r4 + blx r1 + b _020BA9AC +_020BA9A0: + ldr r0, [r8, #0x8] + orr r0, r0, #0x2 + str r0, [r8, #0x8] +_020BA9AC: + cmp r5, #0x3 + addne sp, sp, #0x20 + ldmneia sp!, {r4-r8,pc} + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + add sp, sp, #0x20 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BA9D8: .word UNK_021CEF80 +_020BA9DC: .word UNK_021CED18 +_020BA9E0: .word UNK_020FF9D0 +_020BA9E4: .word 0x00293130 +_020BA9E8: .word 0x00002B2A + + arm_func_start FUN_020BA9EC +FUN_020BA9EC: ; 0x020BA9EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020BAAAC + ands r0, r1, #0x1 + beq _020BAAAC + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BAA58 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BAA5C +_020BAA58: + mov r0, #0x0 +_020BAA5C: + cmp r0, #0x0 + bne _020BAA8C + ldr r0, [r5, #0x0] + ldrb r0, [r0, #0x1] + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020BAA8C + add r1, sp, #0x0 + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BAA8C: + cmp r4, #0x3 + bne _020BAAAC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 +_020BAAAC: + ldr r0, [r5, #0x0] + add r0, r0, #0x2 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BAAC0 +FUN_020BAAC0: ; 0x020BAAC0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x8] + ands r0, r0, #0x200 + bne _020BAC38 + ldr r1, [r6, #0x0] + add r0, r6, #0x184 + ldrb r1, [r1, #0x1] + strb r1, [r6, #0xac] + ldr r1, [r6, #0x8] + ldrb r4, [r6, #0xac] + orr r1, r1, #0x4 + str r1, [r6, #0x8] + str r0, [r6, #0xb8] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BAB44 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BAB48 +_020BAB44: + mov r0, #0x0 +_020BAB48: + cmp r0, #0x0 + bne _020BABAC + ldr r12, [r6, #0x4] + ldr r1, [r12, #0x18] + cmp r1, #0x0 + beq _020BAB98 + mov r0, r4, lsr #0x5 + add r0, r12, r0, lsl #0x2 + and r2, r4, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x4c] + ands r0, r2, r0 + beq _020BAB98 + ldr r0, [r6, #0xb8] + ldr r3, [r12, #0x1c] + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BABAC +_020BAB98: + ldr r1, [r6, #0x0] + ldr r0, [r6, #0xb8] + ldrb r1, [r1, #0x2] + and r1, r1, #0x1 + str r1, [r0, #0x0] +_020BABAC: + cmp r5, #0x2 + bne _020BABE8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BABEC +_020BABE8: + mov r0, #0x0 +_020BABEC: + cmp r0, #0x0 + bne _020BAC18 + ldr r0, [r6, #0xb8] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, [r6, #0x8] + orrne r0, r0, #0x1 + strne r0, [r6, #0x8] + ldreq r0, [r6, #0x8] + biceq r0, r0, #0x1 + streq r0, [r6, #0x8] +_020BAC18: + cmp r5, #0x3 + bne _020BAC38 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 +_020BAC38: + ldr r0, [r6, #0x0] + add r0, r0, #0x3 + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BAC48 +FUN_020BAC48: ; 0x020BAC48 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAC60 + blx r1 +_020BAC60: + ldr r0, [r4, #0x8] + orr r0, r0, #0x20 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC70 +FUN_020BAC70: ; 0x020BAC70 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020BAC88 + blx r1 +_020BAC88: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC98 +FUN_020BAC98: ; 0x020BAC98 + stmdb sp!, {r4,lr} + sub sp, sp, #0x188 + mov r4, r0 + ldr r0, [r4, #0x0] + and r0, r0, #0x10 + cmp r0, #0x10 + bne _020BAD2C + add r1, r4, #0x3c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x44 + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x4c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020BACF8 + add r0, r4, #0x3c + bl FUN_020BAD74 +_020BACF8: + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAD0C + add r0, r4, #0x44 + bl FUN_020BAD74 +_020BAD0C: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _020BAD20 + add r0, r4, #0x4c + bl FUN_020BAD74 +_020BAD20: + ldr r0, [r4, #0x0] + bic r0, r0, #0x10 + str r0, [r4, #0x0] +_020BAD2C: + ldr r2, _020BAD70 ; =UNK_021CEF7C + ldr r0, [r2, #0x0] + cmp r0, #0x0 + beq _020BAD4C + mov r1, r4 + bl FUN_020BADE4 + add sp, sp, #0x188 + ldmia sp!, {r4,pc} +_020BAD4C: + add r0, sp, #0x0 + mov r1, r4 + str r0, [r2, #0x0] + bl FUN_020BADE4 + ldr r0, _020BAD70 ; =UNK_021CEF7C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x188 + ldmia sp!, {r4,pc} + .balign 4 +_020BAD70: .word UNK_021CEF7C + + arm_func_start FUN_020BAD74 +FUN_020BAD74: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020BAD90: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020BADD0 +_020BADA0: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020BADA0 +_020BADD0: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020BAD90 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BADE4 +FUN_020BADE4: ; 0x020BADE4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x188 + bl MIi_CpuClearFast + mov r0, #0x1 + str r0, [r5, #0xc4] + str r0, [r5, #0x8] + ldr r0, [r4, #0x30] + ldr r2, _020BAF60 ; =UNK_02106614 + cmp r0, #0x0 + strne r0, [r5, #0x0] + ldreq r1, [r4, #0x4] + ldreq r0, [r1, #0x4] + addeq r0, r1, r0 + streq r0, [r5, #0x0] + str r4, [r5, #0x4] + ldr r0, [r4, #0x4] + ldr r1, _020BAF64 ; =UNK_02106608 + add r0, r0, #0x40 + str r0, [r5, #0xd4] + ldr r12, [r4, #0x4] + ldr r0, _020BAF68 ; =UNK_02106620 + ldr r3, [r12, #0x8] + add r3, r12, r3 + str r3, [r5, #0xd8] + ldr r12, [r4, #0x4] + ldr r3, [r12, #0xc] + add r3, r12, r3 + str r3, [r5, #0xdc] + ldr r3, [r4, #0x4] + ldrb r3, [r3, #0x15] + ldr r2, [r2, r3, lsl #0x2] + str r2, [r5, #0xe8] + ldr r2, [r4, #0x4] + ldrb r2, [r2, #0x15] + ldr r1, [r1, r2, lsl #0x2] + str r1, [r5, #0xec] + ldr r1, [r4, #0x4] + ldrb r1, [r1, #0x16] + ldr r0, [r0, r1, lsl #0x2] + str r0, [r5, #0xf0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x1c] + str r0, [r5, #0xe0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x20] + str r0, [r5, #0xe4] + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _020BAEE0 + ldrb r0, [r4, #0x24] + cmp r0, #0x20 + bhs _020BAEE0 + add r0, r5, r0, lsl #0x2 + str r1, [r0, #0xc] + ldrb r0, [r4, #0x24] + ldrb r1, [r4, #0x25] + add r0, r5, r0 + strb r1, [r0, #0x8c] +_020BAEE0: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x80 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x100 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x200 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x8 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x400 + strne r0, [r5, #0x8] + ldr r1, [r4, #0x28] + cmp r1, #0x0 + beq _020BAF44 + mov r0, r5 + blx r1 +_020BAF44: + mov r0, r5 + bl FUN_020BAF6C + ldr r0, [r4, #0x0] + bic r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BAF60: .word UNK_02106614 +_020BAF64: .word UNK_02106608 +_020BAF68: .word UNK_02106620 + + arm_func_start FUN_020BAF6C +FUN_020BAF6C: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r6, _020BAFB4 ; =UNK_02106730 + add r4, r5, #0x8 +_020BAF7C: + ldr r1, [r4, #0x0] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r4, #0x0] + ldr r1, [r5, #0x0] + ldrb r3, [r1, #0x0] + and r1, r3, #0x1f + ldr r2, [r6, r1, lsl #0x2] + and r1, r3, #0xe0 + blx r2 + ldr r0, [r5, #0x8] + ands r0, r0, #0x20 + beq _020BAF7C + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BAFB4: .word UNK_02106730 + + arm_func_start FUN_020BAFB8 +FUN_020BAFB8: ; 0x020BAFB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x6c + mov r6, r0 + ldr r12, [r6, #0x1c] + mov r4, r1 + mov r5, r2 + mov r7, r3 + cmp r12, #0x1000 + beq _020BAFF8 + add r1, sp, #0x54 + mov r0, #0x1b + mov r2, #0x3 + str r12, [sp, #0x54] + str r12, [sp, #0x58] + str r12, [sp, #0x5c] + bl FUN_020BB1C0 +_020BAFF8: + cmp r7, #0x0 + beq _020BB150 + ldr r0, [r6, #0x8] + add r3, r6, r0 + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r0, [r0, #0x4] + add r4, r3, r0 + ldr r0, [r4, #0xc] + ands r0, r0, #0x1f0000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + ldr r0, _020BB1B4 ; =0x00293130 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + ldr r1, [r4, #0xc] + str r1, [sp, #0xc] + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + ldr r1, _020BB1B8 ; =0x00002B2A + strne r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [r4, #0x14] + ldr r0, [sp, #0x0] + str r2, [sp, #0x14] + ldrh r3, [r4, #0x1c] + add r1, sp, #0x4 + mov r2, #0x6 + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x1 + beq _020BB150 + ldrb r12, [r6, #0x16] + mov r3, #0x8 + ldr r1, _020BB1BC ; =UNK_02106620 + str r3, [sp, #0x1c] + ldrh r2, [r4, #0x20] + add r0, r4, #0x2c + ldr r1, [r1, r12, lsl #0x2] + strh r2, [sp, #0x48] + ldrh r2, [r4, #0x22] + strh r2, [sp, #0x4a] + ldr r2, [r4, #0x24] + str r2, [sp, #0x4c] + ldr r2, [r4, #0x28] + str r2, [sp, #0x50] + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x2 + orrne r2, r3, #0x1 + strne r2, [sp, #0x1c] + bne _020BB0F8 + ldr r2, [r0, #0x0] + str r2, [sp, #0x34] + ldr r2, [r0, #0x4] + add r0, r0, #0x8 + str r2, [sp, #0x38] +_020BB0F8: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x4 + ldrne r2, [sp, #0x1c] + orrne r2, r2, #0x2 + strne r2, [sp, #0x1c] + bne _020BB124 + ldrsh r2, [r0, #0x0] + strh r2, [sp, #0x3c] + ldrsh r2, [r0, #0x2] + add r0, r0, #0x4 + strh r2, [sp, #0x3e] +_020BB124: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x8 + ldreq r2, [r0, #0x0] + streq r2, [sp, #0x40] + ldreq r0, [r0, #0x4] + streq r0, [sp, #0x44] + ldrne r0, [sp, #0x1c] + orrne r0, r0, #0x4 + strne r0, [sp, #0x1c] + add r0, sp, #0x1c + blx r1 +_020BB150: + ldr r0, [r6, #0xc] + add r2, r6, r0 + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r2, r2, r0 + ldr r0, [r2, #0x8] + ldr r1, [r2, #0xc] + add r0, r2, r0 + bl FUN_020BB2B0 + ldr r3, [r6, #0x20] + cmp r3, #0x1000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + add r1, sp, #0x60 + mov r0, #0x1b + mov r2, #0x3 + str r3, [sp, #0x60] + str r3, [sp, #0x64] + str r3, [sp, #0x68] + bl FUN_020BB1C0 + add sp, sp, #0x6c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BB1B4: .word 0x00293130 +_020BB1B8: .word 0x00002B2A +_020BB1BC: .word UNK_02106620 + + arm_func_start FUN_020BB1C0 +FUN_020BB1C0: + stmdb sp!, {r4-r6,lr} + ldr r3, _020BB2A4 ; =UNK_021D1C80 + mov r6, r0 + ldr r12, [r3, #0x0] + mov r5, r1 + mov r4, r2 + cmp r12, #0x0 + beq _020BB278 + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB24C + ldr r2, [r12, #0x0] + add r0, r2, #0x1 + add r1, r0, r4 + cmp r1, #0xc0 + bhi _020BB24C + str r0, [r12, #0x0] + ldr r0, [r3, #0x0] + cmp r4, #0x0 + add r0, r0, r2, lsl #0x2 + str r6, [r0, #0x4] + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r3, #0x0] + mov r0, r5 + ldr r1, [r2], #0x4 + add r1, r2, r1, lsl #0x2 + mov r2, r4, lsl #0x2 + bl MIi_CpuCopyFast + ldr r0, _020BB2A4 ; =UNK_021D1C80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, r0, r4 + str r0, [r1, #0x0] + ldmia sp!, {r4-r6,pc} +_020BB24C: + ldr r0, [r12, #0x0] + cmp r0, #0x0 + beq _020BB260 + bl FUN_020BB394 + b _020BB28C +_020BB260: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C + b _020BB28C +_020BB278: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C +_020BB28C: + ldr r1, _020BB2AC ; =0x04000400 + mov r0, r5 + mov r2, r4, lsl #0x2 + str r6, [r1, #0x0] + bl MIi_CpuSend32 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB2A4: .word UNK_021D1C80 +_020BB2A8: .word UNK_021D1C84 +_020BB2AC: .word 0x04000400 + + arm_func_start FUN_020BB2B0 +FUN_020BB2B0: ; 0x020BB2B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + cmp r4, #0x100 + blo _020BB2DC + ldr r1, _020BB360 ; =GXi_DmaId + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020BB2F8 +_020BB2DC: + mov r2, r4, lsr #0x2 + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + sub r2, r2, #0x1 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB2F8: + bl FUN_020BB394 + ldr r0, _020BB364 ; =UNK_021D1C88 + ldr r1, _020BB368 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + cmp r0, #0x0 + beq _020BB33C + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsyncFast + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB33C: + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsync + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BB360: .word GXi_DmaId +_020BB364: .word UNK_021D1C88 +_020BB368: .word UNK_021D1C84 +_020BB36C: .word FUN_020BB370 + + arm_func_start FUN_020BB370 +FUN_020BB370: ; 0x020BB370 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BB37C +FUN_020BB37C: ; 0x020BB37C + ldr r0, _020BB390 ; =UNK_021D1C84 +_020BB380: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _020BB380 + bx lr + .balign 4 +_020BB390: .word UNK_021D1C84 + + arm_func_start FUN_020BB394 +FUN_020BB394: ; 0x020BB394 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020BB3FC ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB3B0 + bl FUN_020BB37C +_020BB3B0: + ldr r0, _020BB400 ; =UNK_021D1C80 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x0] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r1, _020BB404 ; =0x04000400 + add r0, r0, #0x4 + mov r2, r2, lsl #0x2 + bl MIi_CpuSend32 + ldr r0, _020BB400 ; =UNK_021D1C80 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB3FC: .word UNK_021D1C84 +_020BB400: .word UNK_021D1C80 +_020BB404: .word 0x04000400 + + arm_func_start FUN_020BB408 +FUN_020BB408: ; 0x020BB408 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + mov r5, r1 + mov r4, r2 + ldr r6, _020BB594 ; =UNK_021CED20 + ldr r1, _020BB598 ; =UNK_021CED64 + add r2, sp, #0x10 + bl MTX_MultVec43 + ldr r1, [sp, #0x14] + ldr r0, [r6, #0x1c] + ldr r2, [sp, #0x10] + smull r8, r7, r1, r0 + ldr r0, [r6, #0xc] + ldr r3, [sp, #0x18] + smlal r8, r7, r2, r0 + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + smlal r8, r7, r3, r1 + mov r1, r8, lsr #0xc + orr r1, r1, r7, lsl #0x14 + add r0, r1, r0 + bl FX_InvAsync + ldr r2, [sp, #0x14] + ldr r1, [r6, #0x10] + ldr r0, [r6, #0x14] + smull lr, r8, r2, r1 + smull r12, r9, r2, r0 + ldr r1, [sp, #0x10] + ldr r3, [r6, #0x0] + ldr r0, [sp, #0x18] + smlal lr, r8, r1, r3 + ldr r7, [r6, #0x20] + ldr r2, [r6, #0x30] + smlal lr, r8, r0, r7 + mov r3, lr, lsr #0xc + orr r3, r3, r8, lsl #0x14 + add r7, r3, r2 + ldr r3, [r6, #0x4] + ldr r8, [r6, #0x24] + smlal r12, r9, r1, r3 + smlal r12, r9, r0, r8 + mov r0, r12, lsr #0xc + ldr r2, [r6, #0x34] + orr r0, r0, r9, lsl #0x14 + add r6, r0, r2 + bl FX_GetDivResultFx64c + mov r2, r7, asr #0x1f + umull r9, lr, r0, r7 + mla lr, r0, r2, lr + mov r3, #0x80000000 + mla lr, r1, r7, lr + adds r9, r9, r3 + adc r2, lr, #0x0 + add r2, r2, #0x1000 + add r2, r2, r2, lsr #0x1f + mov r7, r2, asr #0x1 + umull lr, r2, r0, r6 + mov r12, r6, asr #0x1f + mla r2, r0, r12, r2 + mla r2, r1, r6, r2 + adds r3, lr, r3 + adc r0, r2, #0x0 + add r0, r0, #0x1000 + add r0, r0, r0, lsr #0x1f + mov r8, #0x0 + mov r6, r0, asr #0x1 + cmp r7, #0x0 + blt _020BB530 + cmp r6, #0x0 + blt _020BB530 + cmp r7, #0x1000 + bgt _020BB530 + cmp r6, #0x1000 + ble _020BB534 +_020BB530: + mvn r8, #0x0 +_020BB534: + add r0, sp, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0xc + bl FUN_020B8200 + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r12, [sp, #0xc] + sub r0, r0, r2 + mul r0, r7, r0 + add r1, r0, #0x800 + ldr r3, [sp, #0x4] + add r1, r2, r1, asr #0xc + sub r0, r12, r3 + mul r0, r6, r0 + str r1, [r5, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x800 + rsb r1, r1, #0xbf + sub r1, r1, r0, asr #0xc + mov r0, r8 + str r1, [r4, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BB594: .word UNK_021CED20 +_020BB598: .word UNK_021CED64 + + arm_func_start FUN_020BB59C +FUN_020BB59C: ; 0x020BB59C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldr r0, _020BB7C8 ; =0x30415642 + cmp r1, r0 + bhi _020BB5F4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7CC ; =0x30414D42 + cmp r1, r0 + bhi _020BB5E4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7D0 ; =0x30414342 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5E4: + ldr r0, _020BB7D4 ; =0x30415442 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5F4: + ldr r0, _020BB7D8 ; =0x30505442 + cmp r1, r0 + bhi _020BB618 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + beq _020BB624 + b _020BB7BC +_020BB618: + ldr r0, _020BB7E0 ; =0x30585442 + cmp r1, r0 + bne _020BB7BC +_020BB624: + mov r11, #0x1 + mov r0, r5 + mov r9, r11 + mov r8, r11 + bl FUN_020BC0FC + movs r4, r0 + beq _020BB77C + bl FUN_020B7E1C + mov r7, r0 + mov r0, r4 + bl FUN_020B7E10 + mov r6, r0 + mov r0, r4 + bl FUN_020B7CE4 + mov r10, r0 + cmp r7, #0x0 + beq _020BB68C + ldr r0, _020BB7E4 ; =UNK_021064B8 + mov r1, #0x0 + ldr r3, [r0, #0x0] + mov r0, r7 + mov r2, r1 + blx r3 + movs r7, r0 + moveq r11, #0x0 + b _020BB690 +_020BB68C: + mov r7, #0x0 +_020BB690: + cmp r6, #0x0 + beq _020BB6BC + ldr r1, _020BB7E4 ; =UNK_021064B8 + mov r0, r6 + ldr r3, [r1, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + movs r6, r0 + moveq r9, #0x0 + b _020BB6C0 +_020BB6BC: + mov r6, #0x0 +_020BB6C0: + cmp r10, #0x0 + beq _020BB6F0 + ldr r1, _020BB7E8 ; =UNK_021064C0 + ldrh r2, [r4, #0x20] + ldr r3, [r1, #0x0] + mov r0, r10 + and r1, r2, #0x8000 + mov r2, #0x0 + blx r3 + movs r10, r0 + moveq r8, #0x0 + b _020BB6F4 +_020BB6F0: + mov r10, #0x0 +_020BB6F4: + cmp r11, #0x0 + beq _020BB70C + cmp r9, #0x0 + beq _020BB70C + cmp r8, #0x0 + bne _020BB748 +_020BB70C: + ldr r1, _020BB7EC ; =UNK_021064C4 + mov r0, r10 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020BB748: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl FUN_020B7DFC + mov r0, r4 + mov r1, r10 + bl FUN_020B7CDC + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7D28 + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7C78 +_020BB77C: + ldr r1, [r5, #0x0] + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + bne _020BB7A4 + mov r0, r5 + bl FUN_020BC13C + cmp r4, #0x0 + beq _020BB7A4 + mov r1, r4 + bl FUN_020B7790 +_020BB7A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7B0: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BB7C8: .word 0x30415642 +_020BB7CC: .word 0x30414D42 +_020BB7D0: .word 0x30414342 +_020BB7D4: .word 0x30415442 +_020BB7D8: .word 0x30505442 +_020BB7DC: .word 0x30444D42 +_020BB7E0: .word 0x30585442 +_020BB7E4: .word UNK_021064B8 +_020BB7E8: .word UNK_021064C0 +_020BB7EC: .word UNK_021064C4 +_020BB7F0: .word UNK_021064BC + + arm_func_start FUN_020BB7F4 +FUN_020BB7F4: ; 0x020BB7F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_Init + bl FUN_020B84D8 + ldr r1, _020BB820 ; =0x04000600 + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB820: .word 0x04000600 + + arm_func_start FUN_020BB824 +FUN_020BB824: ; 0x020BB824 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r5, r1 + bl FUN_020BB394 + ldr r0, _020BB8B4 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020BB8B8 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020BB8BC ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + cmp r6, #0x0 + beq _020BB87C + add r4, sp, #0x0 +_020BB860: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020BB860 + add r0, sp, #0x0 + mov r1, r6 + bl MTX_Copy44To43_ +_020BB87C: + cmp r5, #0x0 + beq _020BB894 +_020BB884: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020BB884 +_020BB894: + ldr r1, _020BB8C0 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020BB8B4 ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB8B4: .word 0x04000440 +_020BB8B8: .word 0x04000444 +_020BB8BC: .word 0x04000454 +_020BB8C0: .word 0x04000448 + + arm_func_start thunk_FUN_020ae84c +thunk_FUN_020ae84c: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =FUN_020AE84C + bx r12 + .balign 4 +_020BB8CC: .word FUN_020AE84C + + arm_func_start FUN_020BB8D0 +FUN_020BB8D0: ; 0x020BB8D0 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl FUN_020B81B0 + mov r1, r0 + mov r0, r4 + bl FUN_020AE868 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BB8F4 +FUN_020BB8F4: ; 0x020BB8F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB910: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBC74 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB910 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB934 +FUN_020BB934: ; 0x020BB934 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB950: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCB8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB950 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB974 +FUN_020BB974: ; 0x020BB974 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB990: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCFC + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB990 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9B4 +FUN_020BB9B4: ; 0x020BB9B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB9D0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD40 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB9D0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9F4 +FUN_020BB9F4: ; 0x020BB9F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD84 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA34 +FUN_020BBA34: ; 0x020BBA34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBDC8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA74 +FUN_020BBA74: ; 0x020BBA74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE0C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAB4 +FUN_020BBAB4: ; 0x020BBAB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBAD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE50 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBAD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAF4 +FUN_020BBAF4: ; 0x020BBAF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE94 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB34 +FUN_020BBB34: ; 0x020BBB34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBED8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB74 +FUN_020BBB74: ; 0x020BBB74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF1C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBB4 +FUN_020BBBB4: ; 0x020BBBB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBBD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF60 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBBD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBF4 +FUN_020BBBF4: ; 0x020BBBF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFA4 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC34 +FUN_020BBC34: ; 0x020BBC34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFE8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC74 +FUN_020BBC74: ; 0x020BBC74 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x800 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x800 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCB8 +FUN_020BBCB8: ; 0x020BBCB8 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x1000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x1000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCFC +FUN_020BBCFC: ; 0x020BBCFC + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x2000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x2000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD40 +FUN_020BBD40: ; 0x020BBD40 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x4000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x4000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD84 +FUN_020BBD84: ; 0x020BBD84 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x8000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x8000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBDC8 +FUN_020BBDC8: ; 0x020BBDC8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x1f0000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE0C +FUN_020BBE0C: ; 0x020BBE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x3f000000 + orr r0, r0, r2, lsl #0x18 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE50 +FUN_020BBE50: ; 0x020BBE50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xc0 + orr r0, r0, r2, lsl #0x6 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE94 +FUN_020BBE94: ; 0x020BBE94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x30 + orr r0, r0, r2, lsl #0x4 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBED8 +FUN_020BBED8: ; 0x020BBED8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xf + orr r0, r0, r2 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBF1C +FUN_020BBF1C: ; 0x020BBF1C + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBF5C ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x8] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020BBF5C: .word 0x8000FFFF + + arm_func_start FUN_020BBF60 +FUN_020BBF60: ; 0x020BBF60 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x8] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BBFA4 +FUN_020BBFA4: ; 0x020BBFA4 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBFE4 ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x4] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020BBFE4: .word 0x8000FFFF + + arm_func_start FUN_020BBFE8 +FUN_020BBFE8: ; 0x020BBFE8 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x4] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BC02C +FUN_020BC02C: ; 0x020BC02C + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC050: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrne r5, [r6, #0x10] + orrne r5, r5, r2 + strne r5, [r6, #0x10] + ldreq r5, [r6, #0x10] + andeq r5, r5, r3 + streq r5, [r6, #0x10] + cmp lr, r4 + blo _020BC050 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC094 +FUN_020BC094: ; 0x020BC094 + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC0B8: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrneh r5, [r6, #0x1e] + orrne r5, r5, r2 + strneh r5, [r6, #0x1e] + ldreqh r5, [r6, #0x1e] + andeq r5, r5, r3 + streqh r5, [r6, #0x1e] + cmp lr, r4 + blo _020BC0B8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC0FC +FUN_020BC0FC: ; 0x020BC0FC + ldrh r2, [r0, #0xc] + ldrh r1, [r0, #0xe] + add r3, r0, r2 + cmp r1, #0x1 + bne _020BC12C + ldr r2, [r0, #0x0] + ldr r1, _020BC138 ; =0x30585442 + cmp r2, r1 + ldreq r1, [r3, #0x0] + addeq r0, r0, r1 + movne r0, #0x0 + bx lr +_020BC12C: + ldr r1, [r3, #0x4] + add r0, r0, r1 + bx lr + .balign 4 +_020BC138: .word 0x30585442 + + arm_func_start FUN_020BC13C +FUN_020BC13C: + ldrh r1, [r0, #0xc] + ldr r1, [r0, r1] + add r0, r0, r1 + bx lr + + arm_func_start FUN_020BC14C +FUN_020BC14C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC1E4 + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC294 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC190: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC1CC + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC1CC + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC1CC + ldr r5, [r7, #0xc] + cmp r5, r2 + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r7,pc} +_020BC1CC: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC190 + b _020BC294 +_020BC1E4: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC294 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC238 +_020BC208: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC208 +_020BC238: + ldrh r4, [r0, #0x6] + ldr r3, [r1, #0x0] + add r12, r0, r4 + ldrh r4, [r12, #0x2] + ldrb r0, [r2, #0x3] + add r4, r12, r4 + ldr r2, [r4, r0, lsl #0x4] + add r4, r4, r0, lsl #0x4 + cmp r2, r3 + bne _020BC294 + ldr r3, [r4, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bne _020BC294 + ldr r3, [r4, #0x8] + ldr r2, [r1, #0x8] + cmp r3, r2 + bne _020BC294 + ldr r2, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BC294: + mvn r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC2A0 +FUN_020BC2A0: ; 0x020BC2A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC34C + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC404 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC2E4: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC334 + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC334 + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC334 + ldr r5, [r7, #0xc] + cmp r5, r2 + bne _020BC334 + ldrh r2, [r0, #0x6] + add sp, sp, #0x4 + ldrh r1, [r0, r2] + add r0, r0, r2 + add r0, r0, #0x4 + mla r0, r1, r4, r0 + ldmia sp!, {r4-r7,pc} +_020BC334: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC2E4 + b _020BC404 +_020BC34C: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC404 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC3A0 +_020BC370: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC370 +_020BC3A0: + ldrh r4, [r0, #0x6] + ldrb r2, [r2, #0x3] + ldr r3, [r1, #0x0] + add r0, r0, r4 + ldrh r4, [r0, #0x2] + add r12, r0, r4 + ldr r4, [r12, r2, lsl #0x4] + add r12, r12, r2, lsl #0x4 + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x4] + ldr r3, [r1, #0x4] + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x8] + ldr r3, [r1, #0x8] + cmp r4, r3 + bne _020BC404 + ldr r3, [r12, #0xc] + ldr r1, [r1, #0xc] + cmp r3, r1 + ldreqh r1, [r0], #0x4 + addeq sp, sp, #0x4 + mlaeq r0, r1, r2, r0 + ldmeqia sp!, {r4-r7,pc} +_020BC404: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC410 +FUN_020BC410: ; 0x020BC410 + ldrh r3, [r0, #0x12] + add r0, r0, #0xc + ldrh r2, [r0, r3] + add r0, r0, r3 + add r0, r0, #0x4 + mla r0, r2, r1, r0 + bx lr + + arm_func_start FUN_020BC42C +FUN_020BC42C: ; 0x020BC42C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl FUN_020BC410 + ldrsh r1, [r0, #0x4] + ldrh r3, [r0, #0x6] + mul r2, r1, r4 + add r3, r5, r3 + mov r2, r2, lsr #0xc + b _020BC45C +_020BC458: + sub r2, r2, #0x1 +_020BC45C: + cmp r2, #0x0 + beq _020BC474 + mov r1, r2, lsl #0x2 + ldrh r1, [r3, r1] + cmp r1, r4 + bhs _020BC458 +_020BC474: + ldrh r1, [r0, #0x0] + b _020BC480 +_020BC47C: + add r2, r2, #0x1 +_020BC480: + add r0, r2, #0x1 + cmp r0, r1 + bhs _020BC49C + add r0, r3, r2, lsl #0x2 + ldrh r0, [r0, #0x4] + cmp r0, r4 + bls _020BC47C +_020BC49C: + add r0, r3, r2, lsl #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BC4A8 +FUN_020BC4A8: ; 0x020BC4A8 + ldrh r2, [r0, #0xa] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4B8 +FUN_020BC4B8: ; 0x020BC4B8 + ldrh r2, [r0, #0x8] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4C8 +FUN_020BC4C8: ; 0x020BC4C8 + ldrh r2, [r0, #0xc] + ldr r2, [r0, r2] + add r12, r0, r2 + ldrh r2, [r12, #0xe] + add r3, r12, #0x8 + ldrh r0, [r3, r2] + add r2, r3, r2 + add r2, r2, #0x4 + mul r1, r0, r1 + adds r0, r2, r1 + ldrne r0, [r0, #0x0] + addne r0, r12, r0 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020BC500 +FUN_020BC500: + stmdb sp!, {r4,lr} + ands r4, r3, #0x8000 + beq _020BC5E0 + mov r2, #0x0 + str r2, [r0, #0x20] + ldr r4, [r0, #0x20] + ldr r2, _020BC684 ; =0x00007FFF + str r4, [r0, #0x1c] + ldr r4, [r0, #0x1c] + and r3, r3, r2 + str r4, [r0, #0x18] + ldr r4, [r0, #0x18] + mov r2, #0x3 + str r4, [r0, #0x14] + ldr r4, [r0, #0x14] + mul r2, r3, r2 + str r4, [r0, #0x10] + ldr r4, [r0, #0x10] + mov r3, r2, lsl #0x1 + str r4, [r0, #0xc] + ldr r4, [r0, #0xc] + add r2, r1, r2, lsl #0x1 + str r4, [r0, #0x8] + ldr r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r4, [r0, #0x4] + str r4, [r0, #0x0] + ldrsh r4, [r1, r3] + ldrsh r12, [r2, #0x2] + ldrsh r3, [r2, #0x4] + and r1, r4, #0xf + ands r4, r4, #0x10 + movne lr, #0x1000 + rsbne lr, lr, #0x0 + moveq lr, #0x1000 + str lr, [r0, r1, lsl #0x2] + ldr r4, _020BC688 ; =UNK_020FFA14 + ldr lr, _020BC68C ; =UNK_020FFA15 + ldrb r4, [r4, r1, lsl #0x2] + str r12, [r0, r4, lsl #0x2] + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh lr, [r2, #0x0] + ands lr, lr, #0x20 + ldr lr, _020BC690 ; =UNK_020FFA16 + rsbne r3, r3, #0x0 + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh r2, [r2, #0x0] + ands r2, r2, #0x40 + ldr r2, _020BC694 ; =UNK_020FFA17 + rsbne r12, r12, #0x0 + ldrb r1, [r2, r1, lsl #0x2] + str r12, [r0, r1, lsl #0x2] + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020BC5E0: + ldr r1, _020BC684 ; =0x00007FFF + mov r12, #0x5 + and r1, r3, r1 + mul r3, r1, r12 + add r1, r2, r3, lsl #0x1 + ldrsh lr, [r1, #0x8] + mov r12, r3, lsl #0x1 + mov r3, lr, asr #0x3 + str r3, [r0, #0x10] + ldrsh r12, [r2, r12] + and r2, lr, #0x7 + mov r2, r2, lsl #0x10 + mov r3, r12, asr #0x3 + str r3, [r0, #0x0] + ldrsh r3, [r1, #0x2] + and r12, r12, #0x7 + orr lr, r12, r2, asr #0xd + mov r2, r3, asr #0x3 + str r2, [r0, #0x4] + ldrsh r12, [r1, #0x4] + mov r2, lr, lsl #0x10 + and lr, r3, #0x7 + mov r3, r12, asr #0x3 + str r3, [r0, #0x8] + ldrsh r3, [r1, #0x6] + orr r1, lr, r2, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r12, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r3, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r3, asr #0x3 + mov r1, r1, lsl #0x13 + str r2, [r0, #0xc] + mov r1, r1, asr #0x13 + str r1, [r0, #0x14] + mov r0, #0x1 + ldmia sp!, {r4,pc} + .balign 4 +_020BC684: .word 0x00007FFF +_020BC688: .word UNK_020FFA14 +_020BC68C: .word UNK_020FFA15 +_020BC690: .word UNK_020FFA16 +_020BC694: .word UNK_020FFA17 + + arm_func_start FUN_020BC698 +FUN_020BC698: ; 0x020BC698 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x48 + ldrh r4, [r3, #0x4] + ldr r5, [r3, #0xc] + ldr r8, [r3, #0x10] + ldr r7, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + mov r6, r0 + cmp r12, r4 + add r5, r3, r5 + add r4, r3, r8 + add r8, r3, r7 + ldr r7, [r2, #0x0] + bne _020BC780 + ands r0, r7, #0xc0000000 + beq _020BC6F0 + ands r0, r7, #0x40000000 + andne r0, r12, #0x1 + addne r12, r0, r12, lsr #0x1 + andeq r0, r12, #0x3 + addeq r12, r0, r12, lsr #0x2 +_020BC6F0: + ldr r0, [r3, #0x8] + ands r0, r0, #0x2 + movne r7, #0x0 + bne _020BC7F4 + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x48 + ldmeqia sp!, {r4-r10,pc} + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x48 + str r0, [r6, #0x20] + ldmia sp!, {r4-r10,pc} +_020BC780: + ands r0, r7, #0xc0000000 + beq _020BC7F0 + ldr r0, _020BC9C4 ; =0x1FFF0000 + ands r2, r7, #0x40000000 + and r0, r7, r0 + mov r0, r0, lsr #0x10 + beq _020BC7C4 + cmp r12, r0 + movcs r12, r0, lsr #0x1 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9C8 ; =0x00001FFF + mov r12, r12, lsr #0x1 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x2 + b _020BC800 +_020BC7C4: + cmp r12, r0 + andcs r0, r12, #0x3 + addcs r12, r0, r12, lsr #0x2 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9CC ; =0x00003FFF + mov r12, r12, lsr #0x2 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x4 + b _020BC800 +_020BC7F0: + add r7, r12, #0x1 +_020BC7F4: + ldr r0, _020BC9D0 ; =0x00000FFF + mov r9, #0x1 + and r10, r1, r0 +_020BC800: + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + mov r1, r7, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [sp, #0x24] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x28] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [sp, #0x2c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x8] + ldr r3, [sp, #0xc] + ldr r1, [sp, #0x30] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x34] + orr r7, r7, r0 + sub r0, r1, r2 + mul r1, r2, r9 + mul r0, r10, r0 + add r0, r1, r0, asr #0xc + str r0, [r6, #0x10] + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x38] + mul r1, r2, r9 + sub r0, r0, r2 + mul r0, r10, r0 + add r2, r1, r0, asr #0xc + mov r0, r6 + mov r1, r6 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BC968 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x3c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [sp, #0x40] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x1c] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x44] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r2, r2, r1, asr #0xc + add r0, r6, #0x18 + mov r1, r0 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} +_020BC968: + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020BC9C4: .word 0x1FFF0000 +_020BC9C8: .word 0x00001FFF +_020BC9CC: .word 0x00003FFF +_020BC9D0: .word 0x00000FFF + + arm_func_start FUN_020BC9D4 +FUN_020BC9D4: ; 0x020BC9D4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + ldr r12, [r2, #0x0] + ldr r2, [r2, #0x4] + mov r6, r0 + mov r0, r1, asr #0xc + add r5, r3, r5 + add r4, r3, r4 + add r8, r3, r2 + ands r1, r12, #0xc0000000 + beq _020BCD40 + ldr r1, _020BCDC0 ; =0x1FFF0000 + ands r2, r12, #0x40000000 + and r1, r12, r1 + mov r2, r1, lsr #0x10 + beq _020BCA44 + ands r1, r0, #0x1 + beq _020BCA3C + cmp r0, r2 + movhi r0, r2, lsr #0x1 + addhi r0, r0, #0x1 + bhi _020BCD40 + mov r7, r0, lsr #0x1 + b _020BCBE8 +_020BCA3C: + mov r0, r0, lsr #0x1 + b _020BCD40 +_020BCA44: + ands r1, r0, #0x3 + beq _020BCBE0 + cmp r0, r2 + addhi r0, r1, r2, lsr #0x2 + bhi _020BCD40 + ands r1, r0, #0x1 + beq _020BCBD8 + ands r1, r0, #0x2 + movne r9, r0, lsr #0x2 + addne r0, r9, #0x1 + moveq r0, r0, lsr #0x2 + addeq r9, r0, #0x1 + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r7, #0x0 + bl FUN_020BC500 + mov r1, r9, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r7, r0 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [r6, #0x0] + mov r2, #0x3 + mla r3, r1, r2, r3 + str r3, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [r6, #0x4] + orr r7, r7, r0 + mla r0, r1, r2, r3 + str r0, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r6, #0x8] + mov r0, r6 + mla r3, r1, r2, r3 + str r3, [r6, #0x8] + ldr r4, [sp, #0xc] + ldr r3, [r6, #0xc] + mov r1, r6 + mla r4, r3, r2, r4 + str r4, [r6, #0xc] + ldr r4, [sp, #0x10] + ldr r3, [r6, #0x10] + mla r4, r3, r2, r4 + str r4, [r6, #0x10] + ldr r4, [sp, #0x14] + ldr r3, [r6, #0x14] + mla r2, r3, r2, r4 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCB7C + ldr r1, [sp, #0x18] + ldr r0, [r6, #0x18] + mov r2, #0x3 + mla r1, r0, r2, r1 + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [r6, #0x1c] + add r0, r6, #0x18 + mla r3, r1, r2, r3 + str r3, [r6, #0x1c] + ldr r4, [sp, #0x20] + ldr r3, [r6, #0x20] + mov r1, r0 + mla r2, r3, r2, r4 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCB7C: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCBD8: + mov r7, r0, lsr #0x2 + b _020BCBE8 +_020BCBE0: + mov r0, r0, lsr #0x2 + b _020BCD40 +_020BCBE8: + mov r0, r7, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + add r1, r8, r7, lsl #0x1 + ldrh r3, [r1, #0x2] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r2, [r6, #0x0] + ldr r1, [sp, #0x24] + orr r7, r7, r0 + add r0, r2, r1 + str r0, [r6, #0x0] + ldr r2, [r6, #0x4] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r6, #0x4] + ldr r3, [r6, #0x8] + ldr r2, [sp, #0x2c] + mov r1, r6 + add r2, r3, r2 + str r2, [r6, #0x8] + ldr r3, [r6, #0xc] + ldr r2, [sp, #0x30] + add r2, r3, r2 + str r2, [r6, #0xc] + ldr r3, [r6, #0x10] + ldr r2, [sp, #0x34] + add r2, r3, r2 + str r2, [r6, #0x10] + ldr r3, [r6, #0x14] + ldr r2, [sp, #0x38] + add r2, r3, r2 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCCE4 + ldr r2, [r6, #0x18] + ldr r1, [sp, #0x3c] + add r0, r6, #0x18 + add r1, r2, r1 + str r1, [r6, #0x18] + ldr r3, [r6, #0x1c] + ldr r2, [sp, #0x40] + mov r1, r0 + add r2, r3, r2 + str r2, [r6, #0x1c] + ldr r3, [r6, #0x20] + ldr r2, [sp, #0x44] + add r2, r3, r2 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCCE4: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCD40: + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r9,pc} + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BCDC0: .word 0x1FFF0000 + + arm_func_start FUN_020BCDC4 +FUN_020BCDC4: ; 0x020BCDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1, asr #0xc + sub r4, r4, #0x1 + cmp r5, r4 + add r6, r3, r6 + ldr r2, [r2, #0x0] + bne _020BCE58 + ands r4, r2, #0xc0000000 + beq _020BCE08 + ands r4, r2, #0x40000000 + andne r4, r5, #0x1 + addne r5, r4, r5, lsr #0x1 + andeq r4, r5, #0x3 + addeq r5, r4, r5, lsr #0x2 +_020BCE08: + ldr r3, [r3, #0x8] + ands r3, r3, #0x2 + movne r4, #0x0 + bne _020BCED4 + ands r1, r2, #0x20000000 + ldreq r2, [r6, r5, lsl #0x3] + addeq r1, r6, r5, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r7,pc} + mov r1, r5, lsl #0x2 + ldrsh r2, [r6, r1] + add r1, r6, r5, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r7,pc} +_020BCE58: + ands r3, r2, #0xc0000000 + beq _020BCED0 + ldr r3, _020BCF60 ; =0x1FFF0000 + ands r4, r2, #0x40000000 + and r3, r2, r3 + mov r3, r3, lsr #0x10 + beq _020BCEA0 + cmp r5, r3 + movcs r5, r3, lsr #0x1 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF64 ; =0x00001FFF + mov r5, r5, lsr #0x1 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x2 + mov r3, #0x1 + b _020BCEE4 +_020BCEA0: + cmp r5, r3 + andcs r3, r5, #0x3 + addcs r5, r3, r5, lsr #0x2 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF68 ; =0x00003FFF + mov r5, r5, lsr #0x2 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x4 + mov r3, #0x2 + b _020BCEE4 +_020BCED0: + add r4, r5, #0x1 +_020BCED4: + ldr r3, _020BCF6C ; =0x00000FFF + mov r12, #0x1 + and lr, r1, r3 + mov r3, #0x0 +_020BCEE4: + ands r1, r2, #0x20000000 + beq _020BCF10 + mov r2, r5, lsl #0x2 + add r1, r6, r5, lsl #0x2 + mov r5, r4, lsl #0x2 + add r4, r6, r4, lsl #0x2 + ldrsh r2, [r6, r2] + ldrsh r1, [r1, #0x2] + ldrsh r5, [r6, r5] + ldrsh r4, [r4, #0x2] + b _020BCF28 +_020BCF10: + add r1, r6, r5, lsl #0x3 + add r7, r6, r4, lsl #0x3 + ldr r2, [r6, r5, lsl #0x3] + ldr r1, [r1, #0x4] + ldr r5, [r6, r4, lsl #0x3] + ldr r4, [r7, #0x4] +_020BCF28: + sub r5, r5, r2 + sub r4, r4, r1 + mul r6, r2, r12 + mul r2, lr, r5 + add r2, r6, r2, asr #0xc + mov r5, r2, asr r3 + mul r2, r1, r12 + mul r1, lr, r4 + add r1, r2, r1, asr #0xc + mov r1, r1, asr r3 + str r5, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BCF60: .word 0x1FFF0000 +_020BCF64: .word 0x00001FFF +_020BCF68: .word 0x00003FFF +_020BCF6C: .word 0x00000FFF + + arm_func_start FUN_020BCF70 +FUN_020BCF70: ; 0x020BCF70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x4] + ldr r12, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r4 + ands r2, r12, #0xc0000000 + beq _020BD0D0 + ldr r2, _020BD184 ; =0x1FFF0000 + ands r4, r12, #0x40000000 + and r2, r12, r2 + mov r4, r2, lsr #0x10 + beq _020BCFCC + ands r2, r1, #0x1 + beq _020BCFC4 + cmp r1, r4 + movhi r1, r4, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD0D0 + mov r2, r1, lsr #0x1 + b _020BD110 +_020BCFC4: + mov r1, r1, lsr #0x1 + b _020BD0D0 +_020BCFCC: + ands r2, r1, #0x3 + beq _020BD0CC + cmp r1, r4 + addhi r1, r2, r4, lsr #0x2 + bhi _020BD0D0 + ands r2, r1, #0x1 + beq _020BD0C4 + ands r2, r1, #0x2 + movne r1, r1, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r1, lsr #0x2 + addeq r1, r2, #0x1 + ands r4, r12, #0x20000000 + beq _020BD04C + mov r5, r2, lsl #0x2 + mov r4, r1, lsl #0x2 + ldrsh r12, [r3, r5] + ldrsh r5, [r3, r4] + add r2, r3, r2, lsl #0x2 + add r4, r12, r12, lsl #0x1 + add r4, r5, r4 + mov r4, r4, asr #0x2 + str r4, [r0, #0x0] + add r1, r3, r1, lsl #0x2 + ldrsh r3, [r2, #0x2] + ldrsh r2, [r1, #0x2] + add sp, sp, #0x4 + add r1, r3, r3, lsl #0x1 + add r1, r2, r1 + mov r1, r1, asr #0x2 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD04C: + ldr r5, [r3, r2, lsl #0x3] + ldr r4, [r3, r1, lsl #0x3] + mov r12, r5, asr #0x1f + mov r12, r12, lsl #0x1 + mov lr, r5, lsl #0x1 + orr r12, r12, r5, lsr #0x1f + adds lr, lr, r5 + adc r12, r12, r5, asr #0x1f + adds lr, lr, r4 + adc r12, r12, r4, asr #0x1f + mov lr, lr, lsr #0x2 + orr lr, lr, r12, lsl #0x1e + str lr, [r0, #0x0] + add r2, r3, r2, lsl #0x3 + ldr r12, [r2, #0x4] + add r1, r3, r1, lsl #0x3 + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + ldr r1, [r1, #0x4] + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BD0C4: + mov r2, r1, lsr #0x2 + b _020BD110 +_020BD0CC: + mov r1, r1, lsr #0x2 +_020BD0D0: + ands r2, r12, #0x20000000 + ldreq r2, [r3, r1, lsl #0x3] + addeq r1, r3, r1, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r5,pc} + mov r2, r1, lsl #0x2 + ldrsh r2, [r3, r2] + add r1, r3, r1, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD110: + ands r1, r12, #0x20000000 + beq _020BD150 + mov r1, r2, lsl #0x2 + add r12, r3, r2, lsl #0x2 + ldrsh r2, [r3, r1] + ldrsh r1, [r12, #0x4] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldrsh r2, [r12, #0x2] + ldrsh r1, [r12, #0x6] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD150: + add r12, r3, r2, lsl #0x3 + ldr r2, [r3, r2, lsl #0x3] + ldr r1, [r12, #0x8] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldr r2, [r12, #0x4] + ldr r1, [r12, #0xc] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD184: .word 0x1FFF0000 + + arm_func_start FUN_020BD188 +FUN_020BD188: ; 0x020BD188 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr lr, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + cmp r12, r4 + add r4, r3, lr + ldr lr, [r2, #0x0] + bne _020BD230 + ands r2, lr, #0xc0000000 + beq _020BD1CC + ands r2, lr, #0x40000000 + andne r2, r12, #0x1 + addne r12, r2, r12, lsr #0x1 + andeq r2, r12, #0x3 + addeq r12, r2, r12, lsr #0x2 +_020BD1CC: + ldr r2, [r3, #0x8] + ands r2, r2, #0x2 + beq _020BD210 + ldr r2, _020BD2E8 ; =0x00000FFF + ands r3, lr, #0x20000000 + and r3, r1, r2 + movne r1, r12, lsl #0x1 + ldrnesh r2, [r4, r1] + ldrnesh r1, [r4, #0x0] + add sp, sp, #0x4 + ldreq r2, [r4, r12, lsl #0x2] + ldreq r1, [r4, #0x0] + sub r1, r1, r2 + mul r1, r3, r1 + add r1, r2, r1, asr #0xc + str r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD210: + ands r1, lr, #0x20000000 + movne r1, r12, lsl #0x1 + ldrnesh r1, [r4, r1] + add sp, sp, #0x4 + strne r1, [r0, #0x0] + ldreq r1, [r4, r12, lsl #0x2] + streq r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD230: + ands r2, lr, #0xc0000000 + beq _020BD298 + ldr r2, _020BD2EC ; =0x1FFF0000 + ands r3, lr, #0x40000000 + and r2, lr, r2 + mov r2, r2, lsr #0x10 + beq _020BD270 + cmp r12, r2 + movcs r12, r2, lsr #0x1 + bhs _020BD298 + ldr r2, _020BD2F0 ; =0x00001FFF + mov r12, r12, lsr #0x1 + and r5, r1, r2 + mov r2, #0x2 + mov r1, #0x1 + b _020BD2A8 +_020BD270: + cmp r12, r2 + andcs r2, r12, #0x3 + addcs r12, r2, r12, lsr #0x2 + bhs _020BD298 + ldr r2, _020BD2F4 ; =0x00003FFF + mov r12, r12, lsr #0x2 + and r5, r1, r2 + mov r2, #0x4 + mov r1, #0x2 + b _020BD2A8 +_020BD298: + ldr r3, _020BD2E8 ; =0x00000FFF + mov r2, #0x1 + and r5, r1, r3 + mov r1, #0x0 +_020BD2A8: + ands r3, lr, #0x20000000 + addne r3, r4, r12, lsl #0x1 + movne lr, r12, lsl #0x1 + ldrnesh r12, [r4, lr] + ldrnesh r3, [r3, #0x2] + addeq r3, r4, r12, lsl #0x2 + ldreq r12, [r4, r12, lsl #0x2] + ldreq r3, [r3, #0x4] + mul r4, r12, r2 + sub r3, r3, r12 + mul r2, r5, r3 + add r2, r4, r2, asr #0xc + mov r1, r2, asr r1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD2E8: .word 0x00000FFF +_020BD2EC: .word 0x1FFF0000 +_020BD2F0: .word 0x00001FFF +_020BD2F4: .word 0x00003FFF + + arm_func_start FUN_020BD2F8 +FUN_020BD2F8: ; 0x020BD2F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r2, #0x4] + ldr r2, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r12 + ands r12, r2, #0xc0000000 + beq _020BD44C + ldr ip, _020BD46C ; =0x1FFF0000 + ands lr, r2, #0x40000000 + and r12, r2, r12 + mov lr, r12, lsr #0x10 + beq _020BD354 + ands r12, r1, #0x1 + beq _020BD34C + cmp r1, lr + movhi r1, lr, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD44C + mov r12, r1, lsr #0x1 + b _020BD400 +_020BD34C: + mov r1, r1, lsr #0x1 + b _020BD44C +_020BD354: + ands r12, r1, #0x3 + beq _020BD3F8 + cmp r1, lr + addhi r1, r12, lr, lsr #0x2 + bhi _020BD44C + ands r12, r1, #0x1 + beq _020BD3F0 + ands r12, r1, #0x2 + movne lr, r1, lsr #0x2 + addne r12, lr, #0x1 + moveq r12, r1, lsr #0x2 + addeq lr, r12, #0x1 + ands r1, r2, #0x20000000 + beq _020BD3B4 + mov r2, r12, lsl #0x1 + mov r1, lr, lsl #0x1 + ldrsh r12, [r3, r2] + ldrsh r2, [r3, r1] + mov r1, #0x3 + add sp, sp, #0x4 + smlabb r1, r12, r1, r2 + mov r1, r1, asr #0x2 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD3B4: + ldr r12, [r3, r12, lsl #0x2] + ldr r1, [r3, lr, lsl #0x2] + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD3F0: + mov r12, r1, lsr #0x2 + b _020BD400 +_020BD3F8: + mov r1, r1, lsr #0x2 + b _020BD44C +_020BD400: + ands r1, r2, #0x20000000 + beq _020BD42C + mov r2, r12, lsl #0x1 + add r1, r3, r12, lsl #0x1 + ldrsh r2, [r3, r2] + ldrsh r1, [r1, #0x2] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD42C: + add r1, r3, r12, lsl #0x2 + ldr r2, [r3, r12, lsl #0x2] + ldr r1, [r1, #0x4] + mov r2, r2, asr #0x1 + add r1, r2, r1, asr #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD44C: + ands r2, r2, #0x20000000 + movne r1, r1, lsl #0x1 + ldrnesh r1, [r3, r1] + strne r1, [r0, #0x0] + ldreq r1, [r3, r1, lsl #0x2] + streq r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BD46C: .word 0x1FFF0000 + + arm_func_start FUN_020BD470 +FUN_020BD470: ; 0x020BD470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r9, r0 + add r0, r9, r1, lsl #0x1 + ldrh r0, [r0, #0x14] + mov r7, r3 + mov r8, r2 + ldr r5, [r9, r0] + add r1, r9, r0 + ands r0, r5, #0x1 + movne r0, #0x7 + strne r0, [r7, #0x0] + bne _020BD814 + ldr r0, _020BD848 ; =0x00000FFF + add r4, r1, #0x4 + ands r0, r8, r0 + beq _020BD4C4 + ldr r0, [r9, #0x8] + ands r0, r0, #0x1 + movne r6, #0x1 + bne _020BD4C8 +_020BD4C4: + mov r6, #0x0 +_020BD4C8: + mov r0, #0x0 + str r0, [r7, #0x0] + ands r0, r5, #0x6 + bne _020BD5C0 + ands r0, r5, #0x8 + bne _020BD51C + cmp r6, #0x0 + beq _020BD500 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD188 + b _020BD514 +_020BD500: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD2F8 +_020BD514: + add r4, r4, #0x8 + b _020BD524 +_020BD51C: + ldr r0, [r4], #0x4 + str r0, [r7, #0x4c] +_020BD524: + ands r0, r5, #0x10 + bne _020BD568 + cmp r6, #0x0 + beq _020BD54C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD188 + b _020BD560 +_020BD54C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD2F8 +_020BD560: + add r4, r4, #0x8 + b _020BD570 +_020BD568: + ldr r0, [r4], #0x4 + str r0, [r7, #0x50] +_020BD570: + ands r0, r5, #0x20 + bne _020BD5B4 + cmp r6, #0x0 + beq _020BD598 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD188 + b _020BD5AC +_020BD598: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD2F8 +_020BD5AC: + add r4, r4, #0x8 + b _020BD5DC +_020BD5B4: + ldr r0, [r4], #0x4 + str r0, [r7, #0x54] + b _020BD5DC +_020BD5C0: + ands r0, r5, #0x2 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x4 + strne r0, [r7, #0x0] + bne _020BD5DC + mov r0, r7 + bl FUN_020BDA08 +_020BD5DC: + ands r0, r5, #0xc0 + bne _020BD6A8 + ands r0, r5, #0x100 + bne _020BD628 + cmp r6, #0x0 + beq _020BD60C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC698 + b _020BD620 +_020BD60C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC9D4 +_020BD620: + add r4, r4, #0x8 + b _020BD6C4 +_020BD628: + ldr r1, [r9, #0xc] + ldr r2, [r9, #0x10] + ldr r3, [r4, #0x0] + add r0, r7, #0x28 + add r1, r9, r1 + add r2, r9, r2 + bl FUN_020BC500 + cmp r0, #0x0 + beq _020BD6A0 + ldr r12, [r7, #0x3c] + ldr r0, [r7, #0x2c] + ldr r3, [r7, #0x28] + ldr r11, [r7, #0x38] + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x34] + mul r10, r0, r12 + mul lr, r1, r11 + sub r10, r10, lr + mov r10, r10, asr #0xc + mul lr, r1, r2 + mul r1, r3, r12 + sub r1, lr, r1 + mul r11, r3, r11 + mul r2, r0, r2 + sub r0, r11, r2 + str r10, [r7, #0x40] + mov r1, r1, asr #0xc + str r1, [r7, #0x44] + mov r0, r0, asr #0xc + str r0, [r7, #0x48] +_020BD6A0: + add r4, r4, #0x4 + b _020BD6C4 +_020BD6A8: + ands r0, r5, #0x40 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x2 + strne r0, [r7, #0x0] + bne _020BD6C4 + mov r0, r7 + bl FUN_020BD850 +_020BD6C4: + ands r0, r5, #0x600 + bne _020BD7F0 + ands r0, r5, #0x800 + bne _020BD71C + cmp r6, #0x0 + beq _020BD6F4 + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCDC4 + b _020BD708 +_020BD6F4: + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCF70 +_020BD708: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r1, [sp, #0x18] + str r0, [sp, #0x24] + b _020BD72C +_020BD71C: + ldr r0, [r4, #0x0] + str r0, [sp, #0x18] + ldr r0, [r4, #0x4] + str r0, [sp, #0x24] +_020BD72C: + ands r0, r5, #0x1000 + bne _020BD77C + cmp r6, #0x0 + beq _020BD754 + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCDC4 + b _020BD768 +_020BD754: + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCF70 +_020BD768: + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x1c] + str r0, [sp, #0x28] + b _020BD78C +_020BD77C: + ldr r0, [r4, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x28] +_020BD78C: + ands r0, r5, #0x2000 + bne _020BD7DC + cmp r6, #0x0 + beq _020BD7B4 + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCDC4 + b _020BD7C8 +_020BD7B4: + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCF70 +_020BD7C8: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7DC: + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + ldr r0, [r4, #0x14] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7F0: + ands r0, r5, #0x200 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x1 + strne r0, [r7, #0x0] + bne _020BD814 + mov r0, r7 + bl FUN_020BD9A4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020BD814: + ldr r0, [r7, #0x0] + add r1, sp, #0x18 + ands r0, r0, #0x1 + ldr r0, _020BD84C ; =UNK_021CEF7C + movne r3, #0x4 + ldr r4, [r0, #0x0] + moveq r3, #0x0 + ldr r2, [r4, #0x0] + ldr r4, [r4, #0xe8] + mov r0, r7 + blx r4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BD848: .word 0x00000FFF +_020BD84C: .word UNK_021CEF7C + + arm_func_start FUN_020BD850 +FUN_020BD850: ; 0x020BD850 + stmdb sp!, {r4-r8,lr} + ldr r1, _020BD990 ; =UNK_021CEF7C + mov r8, r0 + ldr r0, [r1, #0x0] + ldr r3, [r0, #0xd4] + ldr r0, [r0, #0x0] + ldrh r2, [r3, #0x6] + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + ldrh r2, [r3, r0] + add r4, r3, r0 + add r1, r4, #0x4 + ands r0, r2, #0x1 + addeq r1, r1, #0xc + ands r0, r2, #0x2 + bne _020BD980 + ands r0, r2, #0x8 + beq _020BD934 + and r2, r2, #0xf0 + add r0, r8, #0x28 + mov r5, r2, asr #0x4 + ldrsh r7, [r1, #0x0] + ldrsh r6, [r1, #0x2] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r8, r5, lsl #0x2 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + ldr r0, _020BD994 ; =UNK_020FFA14 + str r2, [r1, #0x28] + ldrb r1, [r0, r5, lsl #0x2] + ldr r0, _020BD998 ; =UNK_020FFA15 + add r1, r8, r1, lsl #0x2 + str r7, [r1, #0x28] + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldr r0, _020BD99C ; =UNK_020FFA16 + rsbne r6, r6, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldr r0, _020BD9A0 ; =UNK_020FFA17 + rsbne r7, r7, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r7, [r0, #0x28] + ldmia sp!, {r4-r8,pc} +_020BD934: + ldrsh r0, [r4, #0x2] + str r0, [r8, #0x28] + ldrsh r0, [r1, #0x0] + str r0, [r8, #0x2c] + ldrsh r0, [r1, #0x2] + str r0, [r8, #0x30] + ldrsh r0, [r1, #0x4] + str r0, [r8, #0x34] + ldrsh r0, [r1, #0x6] + str r0, [r8, #0x38] + ldrsh r0, [r1, #0x8] + str r0, [r8, #0x3c] + ldrsh r0, [r1, #0xa] + str r0, [r8, #0x40] + ldrsh r0, [r1, #0xc] + str r0, [r8, #0x44] + ldrsh r0, [r1, #0xe] + str r0, [r8, #0x48] + ldmia sp!, {r4-r8,pc} +_020BD980: + ldr r0, [r8, #0x0] + orr r0, r0, #0x2 + str r0, [r8, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BD990: .word UNK_021CEF7C +_020BD994: .word UNK_020FFA14 +_020BD998: .word UNK_020FFA15 +_020BD99C: .word UNK_020FFA16 +_020BD9A0: .word UNK_020FFA17 + + arm_func_start FUN_020BD9A4 +FUN_020BD9A4: ; 0x020BD9A4 + stmdb sp!, {r4,lr} + ldr r1, _020BDA04 ; =UNK_021CEF7C + ldr r12, [r1, #0x0] + ldr r4, [r12, #0xd4] + ldr r2, [r12, #0x0] + ldrh lr, [r4, #0x6] + ldrb r1, [r2, #0x1] + ldrh r3, [r4, lr] + add lr, r4, lr + mla r1, r3, r1, lr + ldr r1, [r1, #0x4] + ldrh r3, [r4, r1] + add r1, r4, r1 + add r1, r1, #0x4 + ands lr, r3, #0x1 + addeq r1, r1, #0xc + ands lr, r3, #0x2 + bne _020BD9F8 + ands lr, r3, #0x8 + addne r1, r1, #0x4 + addeq r1, r1, #0x10 +_020BD9F8: + ldr r12, [r12, #0xe8] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020BDA04: .word UNK_021CEF7C + + arm_func_start FUN_020BDA08 +FUN_020BDA08: ; 0x020BDA08 + ldr r1, _020BDA6C ; =UNK_021CEF7C + ldr r1, [r1, #0x0] + ldr r12, [r1, #0xd4] + ldr r1, [r1, #0x0] + ldrh r3, [r12, #0x6] + ldrb r1, [r1, #0x1] + ldrh r2, [r12, r3] + add r3, r12, r3 + mla r1, r2, r1, r3 + ldr r2, [r1, #0x4] + ldrh r1, [r12, r2] + add r2, r12, r2 + ands r1, r1, #0x1 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x4 + strne r1, [r0, #0x0] + bxne lr + ldr r1, [r2, #0x4] + add r2, r2, #0x4 + str r1, [r0, #0x4c] + ldr r1, [r2, #0x4] + str r1, [r0, #0x50] + ldr r1, [r2, #0x8] + str r1, [r0, #0x54] + bx lr + .balign 4 +_020BDA6C: .word UNK_021CEF7C + + arm_func_start FUN_020BDA70 +FUN_020BDA70: ; 0x020BDA70 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r1, #0x8] + ldr r12, [r1, #0x0] + ldrh r1, [r0, #0x4] + mov r1, r1, lsl #0xc + cmp r12, r1 + subge r12, r1, #0x1 + bge _020BDAA0 + cmp r12, #0x0 + movlt r12, #0x0 +_020BDAA0: + mov r1, r2 + mov r2, r12 + bl FUN_020BD470 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BDAB4 +FUN_020BDAB4: ; 0x020BDAB4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _020BDB3C ; =UNK_0210659C + str r4, [r5, #0x8] + ldr r0, [r0, #0x0] + add r1, r5, #0x1a + str r0, [r5, #0xc] + ldrb r2, [r2, #0x17] + mov r0, #0x0 + strb r2, [r5, #0x19] + ldrb r2, [r5, #0x19] + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrh r0, [r4, #0x6] + add r2, r4, #0x14 + mov r3, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020BDB08: + mov r0, r3, lsl #0x1 + ldrh r1, [r2, r0] + add r0, r5, r3, lsl #0x1 + add r3, r3, #0x1 + ldr r1, [r4, r1] + mov r1, r1, lsr #0x18 + orr r1, r1, #0x100 + strh r1, [r0, #0x1a] + ldrh r0, [r4, #0x6] + cmp r3, r0 + blo _020BDB08 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BDB3C: .word UNK_0210659C + + arm_func_start FUN_020BDB40 +FUN_020BDB40: ; 0x020BDB40 + stmdb sp!, {r4-r8,lr} + ldr r7, [r1, #0x8] + mov r2, r2, lsl #0x10 + ldrh r4, [r7, #0xe] + add r5, r7, #0x8 + ldr r6, [r1, #0x0] + ldrh r3, [r5, r4] + mov r1, r2, lsr #0x10 + add r2, r5, r4 + mul r4, r3, r1 + add r3, r2, #0x4 + mov r6, r6, asr #0xc + mov r8, r0 + ldr r1, [r3, r4] + mov r0, r7 + mov r2, r6 + add r5, r3, r4 + bl FUN_020BDDAC + mov r4, r0 + ldr r1, [r5, #0x4] + mov r0, r7 + mov r2, r6 + bl FUN_020BDDAC + ldr r1, [r8, #0x4] + mov r2, r6 + and r1, r1, #0x8000 + orr r1, r1, r4 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0x4] + mov r0, r7 + ldr r1, [r5, #0xc] + bl FUN_020BDDAC + mov r4, r0 + mov r0, r7 + ldr r1, [r5, #0x8] + mov r2, r6 + bl FUN_020BDDAC + mov r2, r6 + ldr r1, [r8, #0x8] + and r1, r1, #0x8000 + orr r0, r1, r0 + orr r0, r0, r4, lsl #0x10 + str r0, [r8, #0x8] + mov r0, r7 + ldr r1, [r5, #0x10] + bl FUN_020BDCB8 + ldr r1, [r8, #0xc] + bic r1, r1, #0x1f0000 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0xc] + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020BDC0C +FUN_020BDC0C: ; 0x020BDC0C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BDCB4 ; =UNK_021065A8 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDC6C: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDC6C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BDCB4: .word UNK_021065A8 + + arm_func_start FUN_020BDCB8 +FUN_020BDCB8: ; 0x020BDCB8 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + movne r0, r0, lsr #0x10 + bxne lr + ldr r3, _020BDDA4 ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + ldreqb r0, [r0, r2] + bxeq lr + ldr r3, _020BDDA8 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDD30 + ands r1, r2, #0x1 + beq _020BDD28 + cmp r2, r3 + addhi r0, r0, r3, lsr #0x1 + ldrhib r0, [r0, #0x1] + bxhi lr + add r1, r0, r2, lsr #0x1 + ldrb r2, [r0, r2, lsr #0x1] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD28: + ldrb r0, [r0, r2, lsr #0x1] + bx lr +_020BDD30: + ands r1, r2, #0x3 + beq _020BDD9C + cmp r2, r3 + addhi r0, r0, r3, lsr #0x2 + ldrhib r0, [r1, r0] + bxhi lr + ands r1, r2, #0x1 + beq _020BDD80 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + ldrb r2, [r0, r2] + ldrb r1, [r0, r1] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x10 + bx lr +_020BDD80: + add r1, r0, r2, lsr #0x2 + ldrb r2, [r0, r2, lsr #0x2] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD9C: + ldrb r0, [r0, r2, lsr #0x2] + bx lr + .balign 4 +_020BDDA4: .word 0x0000FFFF +_020BDDA8: .word 0x1FFF0000 + + arm_func_start FUN_020BDDAC +FUN_020BDDAC: ; 0x020BDDAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + addne sp, sp, #0x4 + movne r0, r0, lsr #0x10 + ldmneia sp!, {pc} + ldr r3, _020BDF2C ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + moveq r1, r2, lsl #0x1 + addeq sp, sp, #0x4 + ldreqh r0, [r0, r1] + ldmeqia sp!, {pc} + ldr r3, _020BDF30 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDE34 + ands r1, r2, #0x1 + beq _020BDE24 + cmp r2, r3 + bichi r1, r3, #0x1 + addhi r0, r0, r1 + addhi sp, sp, #0x4 + ldrhih r0, [r0, #0x2] + ldmhiia sp!, {pc} + mov r1, r2, lsr #0x1 + b _020BDEE0 +_020BDE24: + bic r1, r2, #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDE34: + ands r1, r2, #0x3 + beq _020BDECC + cmp r2, r3 + movhi r2, r3, lsr #0x2 + movhi r1, r1, lsl #0x1 + addhi r0, r0, r2, lsl #0x1 + addhi sp, sp, #0x4 + ldrhih r0, [r1, r0] + ldmhiia sp!, {pc} + ands r1, r2, #0x1 + beq _020BDEC4 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + mov r2, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + ldrh r12, [r0, r2] + ldrh lr, [r0, r1] + ldr r0, _020BDF34 ; =0x00007C1F + and r3, r12, #0x3e0 + and r2, lr, #0x3e0 + mov r1, #0x3 + mla r2, r3, r1, r2 + and r12, r12, r0 + and r3, lr, r0 + mla r1, r12, r1, r3 + mov r2, r2, lsr #0x2 + and r1, r0, r1, lsr #0x2 + and r0, r2, #0x3e0 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + add sp, sp, #0x4 + mov r0, r0, lsr #0x10 + ldmia sp!, {pc} +_020BDEC4: + mov r1, r2, lsr #0x2 + b _020BDEE0 +_020BDECC: + mov r1, r2, lsr #0x2 + mov r1, r1, lsl #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDEE0: + mov r2, r1, lsl #0x1 + add r1, r0, r1, lsl #0x1 + ldrh r3, [r0, r2] + ldrh r12, [r1, #0x2] + ldr r0, _020BDF34 ; =0x00007C1F + and r2, r3, #0x3e0 + and r1, r12, #0x3e0 + add r1, r2, r1 + mov r1, r1, lsr #0x1 + and r3, r3, r0 + and r2, r12, r0 + add r2, r3, r2 + and r2, r0, r2, lsr #0x1 + and r0, r1, #0x3e0 + orr r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BDF2C: .word 0x0000FFFF +_020BDF30: .word 0x1FFF0000 +_020BDF34: .word 0x00007C1F + + arm_func_start FUN_020BDF38 +FUN_020BDF38: ; 0x020BDF38 + stmdb sp!, {r4,lr} + ldr r12, [r1, #0x0] + mov r4, r0 + mov r2, r2, lsl #0x10 + ldr r0, [r1, #0x8] + mov r1, r2, lsr #0x10 + mov r3, r4 + mov r2, r12, asr #0xc + bl FUN_020BE030 + ldr r0, [r4, #0x10] + bic r0, r0, #0xc0000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + orr r0, r0, #0x40000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BDF84 +FUN_020BDF84: ; 0x020BDF84 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE02C ; =UNK_021065A0 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDFE4: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDFE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE02C: .word UNK_021065A0 + + arm_func_start FUN_020BE030 +FUN_020BE030: ; 0x020BE030 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrh r4, [r8, #0xe] + add r5, r8, #0x8 + mov r6, r3 + ldrh r3, [r5, r4] + add r4, r5, r4 + add r4, r4, #0x4 + mla r5, r3, r1, r4 + mov r7, r2 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + mov r3, r7 + ldr r4, [r6, #0x0] + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x20] + mov r0, r8 + ldr r2, [r5, #0x24] + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x0 + bne _020BE09C + cmp r0, #0x0 + orreq r4, r4, #0x4 + beq _020BE0A8 +_020BE09C: + str r9, [r6, #0x24] + str r0, [r6, #0x28] + bic r4, r4, #0x4 +_020BE0A8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r8 + mov r3, r7 + bl FUN_020BE12C + cmp r0, #0x10000000 + strneh r0, [r6, #0x20] + movne r0, r0, lsr #0x10 + strneh r0, [r6, #0x22] + orreq r4, r4, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r0, r8 + mov r3, r7 + bicne r4, r4, #0x2 + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r0, r8 + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x1000 + bne _020BE114 + cmp r0, #0x1000 + orreq r4, r4, #0x1 + beq _020BE120 +_020BE114: + str r9, [r6, #0x18] + str r0, [r6, #0x1c] + bic r4, r4, #0x1 +_020BE120: + str r4, [r6, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020BE12C +FUN_020BE12C: ; 0x020BE12C + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE1F8 + ldr r2, _020BE234 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r2, r1, r2 + beq _020BE17C + ands r1, r3, #0x1 + beq _020BE174 + cmp r3, r2 + movhi r1, r2, lsr #0x1 + addhi r3, r1, #0x1 + bhi _020BE1F8 + mov r2, r3, lsr #0x1 + b _020BE200 +_020BE174: + mov r3, r3, lsr #0x1 + b _020BE1F8 +_020BE17C: + ands r1, r3, #0x3 + beq _020BE1F4 + cmp r3, r2 + addhi r3, r1, r2, lsr #0x2 + bhi _020BE1F8 + ands r1, r3, #0x1 + beq _020BE1EC + ands r1, r3, #0x2 + movne r1, r3, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r3, lsr #0x2 + addeq r1, r2, #0x1 + mov r12, r2, lsl #0x2 + add r3, r0, r2, lsl #0x2 + mov r2, r1, lsl #0x2 + add r1, r0, r1, lsl #0x2 + ldrsh r12, [r0, r12] + ldrsh r2, [r0, r2] + mov r0, #0x3 + ldrsh r3, [r3, #0x2] + ldrsh r1, [r1, #0x2] + mla r2, r12, r0, r2 + mla r1, r3, r0, r1 + ldr r0, _020BE234 ; =0x0000FFFF + mov r1, r1, asr #0x2 + and r0, r0, r2, asr #0x2 + orr r0, r0, r1, lsl #0x10 + bx lr +_020BE1EC: + mov r2, r3, lsr #0x2 + b _020BE200 +_020BE1F4: + mov r3, r3, lsr #0x2 +_020BE1F8: + ldr r0, [r0, r3, lsl #0x2] + bx lr +_020BE200: + add r1, r0, r2, lsl #0x2 + mov r2, r2, lsl #0x2 + ldrsh r12, [r0, r2] + ldrsh r3, [r1, #0x4] + ldrsh r2, [r1, #0x2] + ldrsh r1, [r1, #0x6] + ldr r0, _020BE234 ; =0x0000FFFF + add r3, r12, r3 + add r1, r2, r1 + and r2, r0, r3, asr #0x1 + mov r0, r1, asr #0x1 + orr r0, r2, r0, lsl #0x10 + bx lr + .balign 4 +_020BE234: .word 0x0000FFFF + + arm_func_start FUN_020BE238 +FUN_020BE238: + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE2F0 + ldr r2, _020BE330 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r12, r1, r2 + beq _020BE288 + ands r2, r3, #0x1 + beq _020BE280 + cmp r3, r12 + movhi r2, r12, lsr #0x1 + addhi r3, r2, #0x1 + bhi _020BE2F0 + mov r3, r3, lsr #0x1 + b _020BE304 +_020BE280: + mov r3, r3, lsr #0x1 + b _020BE2F0 +_020BE288: + ands r2, r3, #0x3 + beq _020BE2EC + cmp r3, r12 + addhi r3, r2, r12, lsr #0x2 + bhi _020BE2F0 + ands r2, r3, #0x1 + beq _020BE2E4 + ands r2, r3, #0x2 + movne r3, r3, lsr #0x2 + addne r2, r3, #0x1 + moveq r2, r3, lsr #0x2 + addeq r3, r2, #0x1 + ands r1, r1, #0x10000000 + movne r2, r2, lsl #0x1 + movne r1, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r1, [r0, r1] + ldreq r2, [r0, r2, lsl #0x2] + ldreq r1, [r0, r3, lsl #0x2] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, asr #0x2 + bx lr +_020BE2E4: + mov r3, r3, lsr #0x2 + b _020BE304 +_020BE2EC: + mov r3, r3, lsr #0x2 +_020BE2F0: + ands r1, r1, #0x10000000 + movne r1, r3, lsl #0x1 + ldrnesh r0, [r0, r1] + ldreq r0, [r0, r3, lsl #0x2] + bx lr +_020BE304: + ands r1, r1, #0x10000000 + movne r2, r3, lsl #0x1 + addne r1, r0, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r0, [r1, #0x2] + addeq r1, r0, r3, lsl #0x2 + ldreq r2, [r0, r3, lsl #0x2] + ldreq r0, [r1, #0x4] + add r0, r2, r0 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020BE330: .word 0x0000FFFF + + arm_func_start FUN_020BE334 +FUN_020BE334: ; 0x020BE334 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r3, [r6, #0x0] + ldr r5, [r6, #0x8] + mov r1, r2, lsl #0x10 + mov r2, r3, lsl #0x4 + mov r7, r0 + mov r0, r5 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020BC42C + mov r4, r0 + ldrb r1, [r4, #0x2] + mov r0, r5 + bl FUN_020BC4B8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE408 + ldrb r1, [r4, #0x3] + cmp r1, #0xff + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r5 + bl FUN_020BC4A8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE3B4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE3B4 +FUN_020BE3B4: ; 0x020BE3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x34] + mov r4, r2 + add r0, r5, r0 + bl FUN_020BC2A0 + ldr r1, [r5, #0x2c] + ldrh r2, [r0, #0x2] + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + ands r1, r2, #0x1 + ldrh r0, [r0, #0x0] + moveq r1, r3, lsl #0xf + moveq r3, r1, lsr #0x10 + moveq r0, r0, lsl #0xf + moveq r0, r0, lsr #0x10 + add r0, r0, r3 + str r0, [r4, #0x14] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BE408 +FUN_020BE408: ; 0x020BE408 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x3c + mov r4, r2 + bl FUN_020BC2A0 + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + and r1, r1, #0x1c000000 + cmp r1, #0x14000000 + ldrne r2, [r5, #0x8] + ldrne r1, _020BE4E0 ; =0x0000FFFF + andne r5, r2, r1 + ldreq r2, [r5, #0x18] + ldreq r1, _020BE4E0 ; =0x0000FFFF + andeq r5, r2, r1 + ldr r1, _020BE4E4 ; =0xC00F0000 + ldr r2, _020BE4E8 ; =0x000007FF + and r1, r3, r1 + str r1, [r4, #0x10] + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + add r1, r1, r5 + orr r1, r3, r1 + str r1, [r4, #0x10] + ldr r3, [r0, #0x4] + ldr r1, _020BE4EC ; =0x003FF800 + and r3, r3, r2 + strh r3, [r4, #0x2c] + ldr r3, [r0, #0x4] + and r1, r3, r1 + mov r1, r1, lsr #0xb + strh r1, [r4, #0x2e] + ldr r3, [r0, #0x4] + ldrh r1, [r4, #0x2c] + and r0, r3, r2 + and r5, r2, r3, lsr #0xb + cmp r0, r1 + moveq r0, #0x1000 + beq _020BE4B4 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4B4: + str r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + cmp r5, r1 + moveq r0, #0x1000 + beq _020BE4D4 + mov r0, r5, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4D4: + str r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BE4E0: .word 0x0000FFFF +_020BE4E4: .word 0xC00F0000 +_020BE4E8: .word 0x000007FF +_020BE4EC: .word 0x003FF800 + + arm_func_start FUN_020BE4F0 +FUN_020BE4F0: ; 0x020BE4F0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE59C ; =UNK_021065A4 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + str r8, [r9, #0x8] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0xd] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0xc + add r4, r4, #0x4 +_020BE554: + ldrh r1, [r8, #0x12] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0xd] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BE554 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE59C: .word UNK_021065A4 + + arm_func_start FUN_020BE5A0 +FUN_020BE5A0: ; 0x020BE5A0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x8] + ldr r3, [r1, #0x0] + ldrh r1, [lr, #0x6] + mov r12, r3, asr #0xc + mov r3, #0x1 + mla r2, r12, r1, r2 + mov r1, r2, lsr #0x5 + add r1, lr, r1, lsl #0x2 + ldr r1, [r1, #0xc] + and r2, r2, #0x1f + and r1, r1, r3, lsl r2 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BE5E0 +FUN_020BE5E0: ; 0x020BE5E0 + ldr r3, _020BE628 ; =UNK_02106598 + mov r12, #0x0 + ldr r3, [r3, #0x0] + str r3, [r0, #0xc] + ldrb r2, [r2, #0x17] + strb r2, [r0, #0x19] + str r1, [r0, #0x8] + ldrb r1, [r0, #0x19] + cmp r1, #0x0 + bxls lr +_020BE608: + orr r2, r12, #0x100 + add r1, r0, r12, lsl #0x1 + strh r2, [r1, #0x1a] + ldrb r1, [r0, #0x19] + add r12, r12, #0x1 + cmp r12, r1 + blo _020BE608 + bx lr + .balign 4 +_020BE628: .word UNK_02106598 + + arm_func_start FUN_020BE62C +FUN_020BE62C: ; 0x020BE62C + ands r2, r3, #0x4 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x1 + strne r1, [r0, #0x0] + bne _020BE658 + + arm_func_start FUN_020BE640 +FUN_020BE640: ; 0x020BE640 + ldr r2, [r1, #0x0] + str r2, [r0, #0x4] + ldr r2, [r1, #0x4] + str r2, [r0, #0x8] + ldr r1, [r1, #0x8] + str r1, [r0, #0xc] +_020BE658: + ldr r1, [r0, #0x0] + orr r1, r1, #0x18 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BE668 +FUN_020BE668: ; 0x020BE668 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x0] + ands r0, r1, #0x4 + bne _020BE6AC + ands r0, r1, #0x2 + bne _020BE698 + add r1, r4, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BE6C4 +_020BE698: + add r1, r4, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + b _020BE6C4 +_020BE6AC: + ands r0, r1, #0x2 + bne _020BE6C4 + add r1, r4, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020BE6C4: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldmneia sp!, {r4,pc} + add r1, r4, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BE6E4 +FUN_020BE6E4: ; 0x020BE6E4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BE820 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BE824 ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BE828 ; =UNK_021067B0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BE7B4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BE7B4: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BE804 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BE804: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BE820: .word 0x00101610 +_020BE824: .word 0x00101810 +_020BE828: .word UNK_021067B0 + + arm_func_start FUN_020BE82C +FUN_020BE82C: ; 0x020BE82C + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BE850 +FUN_020BE850: ; 0x020BE850 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + str r12, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r3, [r1, #0x2e] + mov r1, r2, lsl #0x1 + rsb r1, r1, #0x0 + add r1, r1, #0x2000 + mul r1, r3, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BE894 +FUN_020BE894: ; 0x020BE894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2c] + add r0, r1, r0 + rsb r0, r0, #0x0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x30] + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + sub r0, r1, r0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE954 +FUN_020BE954: ; 0x020BE954 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r0, r7, r6 + ldrh r3, [r9, #0x2c] + ldr r2, [r9, #0x18] + sub r0, r2, r0 + mul r0, r3, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x30] + ldrh r2, [r9, #0x2e] + ldr r0, [r9, #0x1c] + sub r0, r1, r0 + add r0, r0, #0x2000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BEA3C +FUN_020BEA3C: ; 0x020BEA3C + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldrh r2, [r1, #0x2c] + ldr r3, [r1, #0x24] + mul r2, r3, r2 + rsb r2, r2, #0x0 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BEA84 +FUN_020BEA84: ; 0x020BEA84 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r4, [r1, #0x18] + ldr r3, [r1, #0x24] + ldrh lr, [r1, #0x2c] + smull r12, r3, r4, r3 + mov r4, r12, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + rsb r3, r4, #0x0 + mul r3, lr, r3 + str r3, [r0, #0x30] + ldr r4, [r1, #0x1c] + ldr r12, [r1, #0x28] + mov r3, r4, lsl #0x1 + smull lr, r12, r4, r12 + rsb r4, r3, #0x0 + mov r3, lr, lsr #0x8 + ldrh lr, [r1, #0x2e] + add r1, r4, #0x2000 + orr r3, r3, r12, lsl #0x18 + mul r4, lr, r1 + mul r1, lr, r3 + add r1, r1, r4, lsl #0x3 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BEB00 +FUN_020BEB00: ; 0x020BEB00 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2c] + ldr r0, [r5, #0x24] + add r1, r2, r1 + rsb r1, r1, #0x0 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + sub r0, r0, r1, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2e] + ldr r0, [r5, #0x28] + sub r1, r2, r1 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + add r0, r0, r1, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BEBD8 +FUN_020BEBD8: ; 0x020BEBD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r2, r7, r6 + ldr r5, [r9, #0x18] + ldrh r0, [r9, #0x2c] + sub r3, r5, r2 + ldr r2, [r9, #0x24] + mul r4, r0, r3 + smull r3, r2, r5, r2 + mov r4, r4, lsl #0x3 + mov r3, r3, lsr #0x8 + orr r3, r3, r2, lsl #0x18 + mul r2, r0, r3 + sub r0, r4, r2 + str r0, [r10, #0x30] + ldr r4, [r9, #0x1c] + ldrh r3, [r9, #0x2e] + sub r0, r1, r4 + add r0, r0, #0x2000 + mul r2, r3, r0 + ldr r0, [r9, #0x28] + smull r1, r0, r4, r0 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + mul r0, r3, r1 + add r0, r0, r2, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BECEC +FUN_020BECEC: ; 0x020BECEC + stmdb sp!, {r4-r8,lr} + mov r12, r0 + ands r0, r3, #0x4 + ldrb r3, [r2, #0x3] + beq _020BED40 + ldr r1, [r12, #0x0] + ands r0, r3, #0x2 + orr r0, r1, #0x1 + str r0, [r12, #0x0] + beq _020BEDB8 + ldr r0, _020BEE2C ; =UNK_021CEF7C + ldrb r7, [r2, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r6, r0, #0xc4 + mov r5, r7, lsr #0x5 + ldr r4, [r6, r5, lsl #0x2] + and r0, r7, #0x1f + orr r0, r4, r1, lsl r0 + str r0, [r6, r5, lsl #0x2] + b _020BEDB8 +_020BED40: + ldr r4, [r1, #0x0] + ands r0, r3, #0x2 + str r4, [r12, #0x4] + ldr r0, [r1, #0x4] + str r0, [r12, #0x8] + ldr r0, [r1, #0x8] + str r0, [r12, #0xc] + beq _020BEDB8 + ldr lr, _020BEE2C ; =UNK_021CEF7C + ldrb r0, [r2, #0x1] + ldr r4, [lr, #0x0] + mov lr, #0x18 + add r8, r4, #0xc4 + mov r7, r0, lsr #0x5 + and r4, r0, #0x1f + mov r5, #0x1 + mvn r4, r5, lsl r4 + ldr r6, [r8, r7, lsl #0x2] + mul r5, r0, lr + and r0, r6, r4 + str r0, [r8, r7, lsl #0x2] + ldr r4, [r1, #0xc] + ldr r0, _020BEE30 ; =UNK_021CFD8C + ldr lr, _020BEE34 ; =UNK_021CFD90 + str r4, [r0, r5] + ldr r4, [r1, #0x10] + ldr r0, _020BEE38 ; =UNK_021CFD94 + str r4, [lr, r5] + ldr r1, [r1, #0x14] + str r1, [r0, r5] +_020BEDB8: + ands r0, r3, #0x1 + beq _020BEE1C + ldrb r0, [r2, #0x2] + ldr r2, [r12, #0x0] + ldr r1, _020BEE2C ; =UNK_021CEF7C + orr r2, r2, #0x20 + str r2, [r12, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r2, r1, lsl #0x2 + and r2, r0, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + ldrne r0, [r12, #0x0] + orrne r0, r0, #0x8 + strne r0, [r12, #0x0] + bne _020BEE1C + ldr r2, _020BEE30 ; =UNK_021CFD8C + mov r1, #0x18 + mla r1, r0, r1, r2 + add r3, r12, #0x10 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} +_020BEE1C: + ldr r0, [r12, #0x0] + orr r0, r0, #0x10 + str r0, [r12, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BEE2C: .word UNK_021CEF7C +_020BEE30: .word UNK_021CFD8C +_020BEE34: .word UNK_021CFD90 +_020BEE38: .word UNK_021CFD94 + + arm_func_start FUN_020BEE3C +FUN_020BEE3C: ; 0x020BEE3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + mov r4, #0x0 + ands r0, r1, #0x4 + moveq r4, #0x1 + ands r0, r1, #0x20 + beq _020BEE94 + ands r0, r1, #0x8 + bne _020BEE94 + cmp r4, #0x0 + beq _020BEE84 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + mov r4, #0x0 +_020BEE84: + add r1, r5, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEE94: + ldr r0, [r5, #0x0] + ands r0, r0, #0x2 + bne _020BEED0 + cmp r4, #0x0 + beq _020BEEBC + add r1, r5, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BEEE8 +_020BEEBC: + add r1, r5, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BEEE8 +_020BEED0: + cmp r4, #0x0 + beq _020BEEE8 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEEE8: + ldr r0, [r5, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r1, r5, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BEF10 +FUN_020BEF10: ; 0x020BEF10 + stmdb sp!, {lr} + sub sp, sp, #0x3c + ldr r1, [r0, #0x0] + mov r3, #0x0 + ands r1, r1, #0x8 + ldrne r1, _020BF0CC ; =0x00101710 + mov r2, #0x3 + strne r1, [sp, #0x0] + ldreq r1, _020BF0D0 ; =0x00101910 + str r3, [sp, #0x34] + streq r1, [sp, #0x0] + mov r1, #0x2 + str r1, [sp, #0x38] + str r3, [sp, #0x28] + str r3, [sp, #0x24] + str r3, [sp, #0x20] + str r3, [sp, #0x1c] + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [r0, #0x0] + ands r1, r2, #0x4 + beq _020BEFA0 + str r3, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r1, [r0, #0x0] + ands r1, r1, #0x1 + movne r1, #0x1000 + strne r1, [sp, #0x8] + strne r1, [sp, #0x18] + ldreq r1, [r0, #0x18] + streq r1, [sp, #0x8] + ldreq r1, [r0, #0x1c] + streq r1, [sp, #0x18] + b _020BF040 +_020BEFA0: + ands r1, r2, #0x1 + beq _020BEFE8 + ldr r2, [r0, #0x24] + ldrh r1, [r0, #0x2c] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r1, r2, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x28] + ldrh r1, [r0, #0x2e] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r3, r2, r1 + mov r1, #0x1000 + str r3, [sp, #0x30] + str r1, [sp, #0x8] + str r1, [sp, #0x18] + b _020BF040 +_020BEFE8: + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x24] + ldrh r12, [r0, #0x2c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x28] + ldrh r12, [r0, #0x2e] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x30] + ldr r1, [r0, #0x18] + str r1, [sp, #0x8] + ldr r1, [r0, #0x1c] + str r1, [sp, #0x18] +_020BF040: + ldr r12, [r0, #0x30] + cmp r12, #0x1000 + beq _020BF078 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x2c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x8] + ldr r2, [r0, #0x30] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x2c] +_020BF078: + ldr r12, [r0, #0x34] + cmp r12, #0x1000 + beq _020BF0B0 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x30] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x18] + ldr r0, [r0, #0x34] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [sp, #0x30] +_020BF0B0: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0xe + bl FUN_020BB1C0 + add sp, sp, #0x3c + ldmia sp!, {pc} + .balign 4 +_020BF0CC: .word 0x00101710 +_020BF0D0: .word 0x00101910 + + arm_func_start FUN_020BF0D4 +FUN_020BF0D4: ; 0x020BF0D4 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + ands r0, r3, #0x4 + ldrb r4, [r2, #0x1] + ldrb r0, [r2, #0x2] + beq _020BF174 + ldr r2, [r5, #0x0] + ldr r1, _020BF2E0 ; =UNK_021CEF7C + orr r2, r2, #0x1 + str r2, [r5, #0x0] + ldr r3, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r3, r1, lsl #0x2 + and r2, r0, #0x1f + mov r6, #0x1 + mov r2, r6, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + beq _020BF148 + add r3, r3, #0xc4 + mov r2, r4, lsr #0x5 + ldr r1, [r3, r2, lsl #0x2] + and r0, r4, #0x1f + orr r0, r1, r6, lsl r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF148: + ldr r1, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mla r6, r0, r2, r1 + mla r1, r4, r2, r1 + mov r0, r6 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, r5, #0x10 + mov r2, #0x18 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} +_020BF174: + ldr r3, [r1, #0x0] + ldr r2, _020BF2E0 ; =UNK_021CEF7C + str r3, [r5, #0x4] + ldr r3, [r1, #0x4] + mov r7, r0, lsr #0x5 + str r3, [r5, #0x8] + ldr r3, [r1, #0x8] + and r8, r0, #0x1f + str r3, [r5, #0xc] + ldr r6, [r2, #0x0] + mov r3, #0x1 + add r2, r6, r7, lsl #0x2 + mov r7, r3, lsl r8 + ldr r2, [r2, #0xc4] + ands r2, r7, r2 + beq _020BF200 + ldr r3, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mov r0, r1 + mla r1, r4, r2, r3 + bl MIi_CpuCopy32 + ldr r0, _020BF2E0 ; =UNK_021CEF7C + mov r2, r4, lsr #0x5 + ldr r1, [r0, #0x0] + and r0, r4, #0x1f + add r3, r1, #0xc4 + mov r1, #0x1 + mvn r0, r1, lsl r0 + ldr r1, [r3, r2, lsl #0x2] + and r0, r1, r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF200: + mov r2, #0x18 + mul r12, r0, r2 + and r7, r4, #0x1f + ldr r0, _020BF2E4 ; =UNK_021CFD80 + add r6, r6, #0xc4 + mov lr, r4, lsr #0x5 + mvn r7, r3, lsl r7 + ldr r8, [r6, lr, lsl #0x2] + mul r3, r4, r2 + and r4, r8, r7 + str r4, [r6, lr, lsl #0x2] + ldr r7, [r1, #0x0] + ldr r4, [r0, r12] + ldr r6, _020BF2E8 ; =UNK_021CFD84 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r0, r3] + ldr r8, [r1, #0x4] + ldr r4, [r6, r12] + ldr r7, _020BF2EC ; =UNK_021CFD88 + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r6, r3] + ldr r8, [r1, #0x8] + ldr r4, [r7, r12] + ldr r6, _020BF2F0 ; =UNK_021CFD8C + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r7, r3] + ldr r7, [r1, #0xc] + ldr r4, [r6, r12] + ldr lr, _020BF2F4 ; =UNK_021CFD90 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r6, r3] + ldr r7, [r1, #0x10] + ldr r4, [lr, r12] + ldr r6, _020BF2F8 ; =UNK_021CFD94 + smull r8, r4, r7, r4 + add r0, r0, r12 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [lr, r3] + ldr lr, [r1, #0x14] + ldr r4, [r6, r12] + add r1, r5, #0x10 + smull r5, r4, lr, r4 + mov r5, r5, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, r3] + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BF2E0: .word UNK_021CEF7C +_020BF2E4: .word UNK_021CFD80 +_020BF2E8: .word UNK_021CFD84 +_020BF2EC: .word UNK_021CFD88 +_020BF2F0: .word UNK_021CFD8C +_020BF2F4: .word UNK_021CFD90 +_020BF2F8: .word UNK_021CFD94 + + arm_func_start FUN_020BF2FC +FUN_020BF2FC: ; 0x020BF2FC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r0, [r6, #0x0] + mov r5, #0x0 + ands r4, r0, #0x18 + bne _020BF328 + add r1, r6, #0x1c + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF328: + ldr r0, [r6, #0x0] + ands r0, r0, #0x4 + bne _020BF398 + cmp r4, #0x0 + movne r5, #0x1 + bne _020BF398 + ldr r2, [r6, #0x4c] + ldr r0, [r6, #0x10] + add r1, sp, #0x0 + smull r3, r0, r2, r0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x0] + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x14] + mov r0, #0x1c + smull r12, r2, r3, r2 + mov r3, r12, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x4] + ldr r12, [r6, #0x54] + ldr r3, [r6, #0x18] + mov r2, #0x3 + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + str r12, [sp, #0x8] + bl FUN_020BB1C0 +_020BF398: + ldr r0, [r6, #0x0] + ands r0, r0, #0x2 + bne _020BF3D4 + cmp r5, #0x0 + beq _020BF3C0 + add r1, r6, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BF3EC +_020BF3C0: + add r1, r6, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BF3EC +_020BF3D4: + cmp r5, #0x0 + beq _020BF3EC + add r1, r6, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF3EC: + cmp r4, #0x0 + bne _020BF404 + add r1, r6, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF404: + ldr r0, [r6, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x10 + ldmneia sp!, {r4-r6,pc} + add r1, r6, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF42C +FUN_020BF42C: ; 0x020BF42C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BF568 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BF56C ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BF570 ; =UNK_021067D0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BF4FC + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BF4FC: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BF54C + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BF54C: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BF568: .word 0x00101610 +_020BF56C: .word 0x00101810 +_020BF570: .word UNK_021067D0 + + arm_func_start FUN_020BF574 +FUN_020BF574: ; 0x020BF574 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BF598 +FUN_020BF598: ; 0x020BF598 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + ldr r3, [r1, #0x18] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x1000 + mul r2, r3, r2 + mov r2, r2, lsl #0x3 + str r2, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r1, [r1, #0x2e] + rsb r2, r2, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF5E8 +FUN_020BF5E8: ; 0x020BF5E8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + ldrsh r4, [r5, #0x22] + rsb r0, r2, #0x0 + rsb r1, r1, #0x0 + mov r0, r0, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r1, r1, lsl #0xb + smull r7, lr, r4, r0 + smull r12, r4, r3, r1 + subs r7, r7, r12 + sbc r3, lr, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF6C8 +FUN_020BF6C8: ; 0x020BF6C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r3, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + rsb r0, r3, #0x0 + rsb r1, r1, #0x0 + mov r2, r1, lsl #0xb + mov r11, r0, lsl #0xb + smull r1, r0, r7, r11 + smull r8, r7, r5, r2 + smlal r8, r7, r4, r11 + mov r4, r8, lsr #0x8 + orr r4, r4, r7, lsl #0x18 + smull r5, r2, r6, r2 + subs r1, r1, r5 + sbc r0, r0, r2 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + add r0, r1, r3, lsl #0xf + str r0, [r10, #0x30] + ldrh r0, [r9, #0x2e] + add r0, r4, r0, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BF7C8 +FUN_020BF7C8: ; 0x020BF7C8 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r1, #0x24] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x0 + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF810 +FUN_020BF810: ; 0x020BF810 + stmdb sp!, {r4-r6,lr} + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + ldrh r5, [r1, #0x2c] + ldr r12, [r1, #0x24] + ldrh r2, [r1, #0x2e] + mul lr, r12, r5 + rsb r12, r5, #0x0 + mov r12, r12, lsl #0xb + ldr r4, [r1, #0x18] + sub r12, r12, lr + smull lr, r12, r4, r12 + ldr r6, [r1, #0x28] + mov r4, lr, lsr #0x8 + orr r4, r4, r12, lsl #0x18 + add r4, r4, r5, lsl #0xf + str r4, [r0, #0x30] + mul r4, r6, r2 + rsb r5, r2, #0x0 + ldr r2, [r1, #0x1c] + add r4, r4, r5, lsl #0xb + smull lr, r12, r2, r4 + mov r2, lr, lsr #0x8 + ldrh r1, [r1, #0x2e] + orr r2, r2, r12, lsl #0x18 + add r1, r2, r1, lsl #0xf + str r1, [r0, #0x34] + str r3, [r0, #0x10] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF894 +FUN_020BF894: ; 0x020BF894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r7, [r5, #0x2e] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x24] + rsb r4, r2, #0x0 + mul r3, r1, r7 + rsb r1, r7, #0x0 + add r1, r3, r1, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r7, r4, lsl #0xb + mul r4, r0, r2 + sub r0, r7, r4 + ldrsh lr, [r5, #0x22] + smull r12, r4, r3, r1 + smull r7, r3, lr, r0 + subs r7, r7, r12 + sbc r3, r3, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF988 +FUN_020BF988: ; 0x020BF988 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r1, [r9, #0x2c] + ldrh r8, [r9, #0x2e] + ldr r2, [r9, #0x28] + rsb r0, r1, #0x0 + mul r3, r2, r8 + rsb r2, r8, #0x0 + add r8, r3, r2, lsl #0xb + mov r0, r0, lsl #0xb + smull r3, r2, r5, r8 + smull r8, r5, r6, r8 + ldr r11, [r9, #0x24] + mul r12, r11, r1 + sub r0, r0, r12 + smlal r3, r2, r4, r0 + smull r4, r0, r7, r0 + subs r4, r4, r8 + sbc r0, r0, r5 + mov r4, r4, lsr #0x8 + orr r4, r4, r0, lsl #0x18 + add r0, r4, r1, lsl #0xf + str r0, [r10, #0x30] + ldrh r1, [r9, #0x2e] + mov r0, r3, lsr #0x8 + orr r0, r0, r2, lsl #0x18 + add r0, r0, r1, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFA9C +FUN_020BFA9C: ; 0x020BFA9C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r3, #0x3 + ands r0, r0, #0x8 + ldrne r0, _020BFC1C ; =0x00101610 + mov r2, #0x2 + strne r0, [sp, #0x0] + ldreq r0, _020BFC20 ; =0x00101810 + mov r1, #0x1000 + streq r0, [sp, #0x0] + mov r0, #0x0 + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x2c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + strne r1, [r4, #0x1c] + ldrne r0, [r4, #0x1c] + strne r0, [r4, #0x18] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + movne r0, #0x1000 + strneh r0, [r4, #0x22] + movne r0, #0x0 + strneh r0, [r4, #0x20] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x28] + ldrne r0, [r4, #0x28] + strne r0, [r4, #0x24] + ldr r1, [r4, #0x0] + ldr r0, _020BFC24 ; =UNK_021067F0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BFBB0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BFBB0: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BFC00 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BFC00: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BFC1C: .word 0x00101610 +_020BFC20: .word 0x00101810 +_020BFC24: .word UNK_021067F0 + + arm_func_start FUN_020BFC28 +FUN_020BFC28: ; 0x020BFC28 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BFC4C +FUN_020BFC4C: ; 0x020BFC4C + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + str r3, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x1c] + rsb r2, r2, #0x0 + sub r1, r1, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r3, [r0, #0x10] + bx lr + + arm_func_start FUN_020BFC8C +FUN_020BFC8C: ; 0x020BFC8C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r1, [r5, #0x2c] + ldrsh r0, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrh r1, [r5, #0x2e] + ldrsh r0, [r5, #0x22] + rsb r1, r1, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFD38 +FUN_020BFD38: ; 0x020BFD38 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r3, [r9, #0x22] + ldr r0, [r9, #0x18] + ldrsh r7, [r9, #0x20] + ldr r5, [r9, #0x1c] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r10, #0x0] + smull r2, r1, r5, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r7 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + str r4, [r10, #0x14] + bl FX_GetDivResult + smull r2, r1, r5, r7 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + mov r1, r11 + bl FX_DivAsync + sub r0, r4, #0x1000 + ldrh r1, [r9, #0x2c] + mul r2, r1, r6 + mov r1, r2, lsl #0x4 + str r1, [r10, #0x30] + ldrh r1, [r9, #0x2e] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFE0C +FUN_020BFE0C: ; 0x020BFE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov lr, #0x0 + str lr, [r0, #0x4] + ldr r2, [r1, #0x24] + ldrh r3, [r1, #0x2c] + rsb r2, r2, #0x0 + ldr r12, [r1, #0x28] + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r1, [r1, #0x2e] + rsb r2, r12, #0x0 + rsb r1, r1, #0x0 + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str lr, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BFE68 +FUN_020BFE68: ; 0x020BFE68 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r12, [r1, #0x24] + ldr r3, [r1, #0x18] + ldr r4, [r1, #0x28] + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + ldrh lr, [r1, #0x2c] + rsb r3, r12, #0x0 + ldr r12, [r1, #0x1c] + rsb r4, r4, #0x0 + mul r3, lr, r3 + smull lr, r12, r4, r12 + mov r3, r3, lsl #0x4 + str r3, [r0, #0x30] + mov r4, lr, lsr #0xc + ldrh r3, [r1, #0x2e] + ldr r1, [r1, #0x1c] + orr r4, r4, r12, lsl #0x14 + add r1, r1, r4 + rsb r3, r3, #0x0 + sub r1, r1, #0x1000 + mul r1, r3, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BFEEC +FUN_020BFEEC: ; 0x020BFEEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh lr, [r5, #0x20] + ldr r4, [r5, #0x28] + ldrsh r0, [r5, #0x22] + ldr r12, [r5, #0x24] + smull r3, r2, r4, lr + smlal r3, r2, r12, r0 + smull r1, r0, r4, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r4, lr, r3 + smull r3, r2, r12, lr + subs r1, r3, r1 + sbc r0, r2, r0 + ldrh r2, [r5, #0x2c] + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + mul r0, r2, r4 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + add r0, r0, r1 + rsb r1, r2, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFFD4 +FUN_020BFFD4: ; 0x020BFFD4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrh r2, [r6, #0x2c] + ldrh r1, [r6, #0x2e] + mov r7, r0 + mov r10, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r10 + bl FX_DivAsync + ldrsh r3, [r6, #0x22] + ldr r0, [r6, #0x18] + ldrsh r9, [r6, #0x20] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + ldr r8, [r6, #0x1c] + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x0] + smull r2, r1, r8, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r1, lsl #0x14 + str r4, [r7, #0x14] + bl FX_GetDivResult + smull r2, r1, r8, r9 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x4] + mov r0, r10 + mov r1, r11 + bl FX_DivAsync + ldr lr, [r6, #0x1c] + ldrsh r2, [r6, #0x20] + ldr r8, [r6, #0x24] + ldr r0, [r6, #0x28] + smull r10, r9, r8, r2 + ldrh r1, [r6, #0x2c] + smull r3, r2, r0, r2 + ldrsh r12, [r6, #0x22] + str r1, [sp, #0x0] + mov r11, lr, asr #0x1f + smlal r3, r2, r8, r12 + smull r8, r12, r0, r12 + subs r8, r10, r8 + sbc r0, r9, r12 + mov r9, r8, lsr #0xc + mov r12, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r3, r2, asr #0xc + orr r12, r12, r2, lsl #0x14 + umull r10, r2, r9, lr + mla r2, r9, r11, r2 + mov r8, r0, asr #0xc + mla r2, r8, lr, r2 + ldr r1, [r6, #0x18] + mov r8, r10, lsr #0xc + orr r8, r8, r2, lsl #0x14 + add r2, r4, r8 + mov r0, r1, asr #0x1f + umull r8, r4, r12, r1 + mla r4, r12, r0, r4 + mla r4, r3, r1, r4 + mov r0, r8, lsr #0xc + orr r0, r0, r4, lsl #0x14 + sub r1, r5, r0 + ldr r0, [sp, #0x0] + sub r2, r2, #0x1000 + mul r1, r0, r1 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x30] + ldrh r0, [r6, #0x2e] + rsb r0, r0, #0x0 + mul r1, r0, r2 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x34] + bl FX_GetDivResult + rsb r1, r5, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C0130 +FUN_020C0130: ; 0x020C0130 + ldr ip, _020C0138 ; =FUN_020C187C + bx r12 + .balign 4 +_020C0138: .word FUN_020C187C + + arm_func_start FUN_020C013C +FUN_020C013C: ; 0x020C013C + stmdb sp!, {r4,lr} + bl FUN_020C18F8 + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0174 +FUN_020C0174: ; 0x020C0174 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020C0194 + mov r0, #0x40 + bl SND_SetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} +_020C0194: + bl SND_ResetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C01A0 +FUN_020C01A0: ; 0x020C01A0 + stmdb sp!, {r4,lr} + mov r4, #0x0 +_020C01A8: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020C01A8 + bl FUN_020C0BA0 + bl FUN_020C1D9C + bl FUN_020C3C88 + mov r0, #0x0 + bl SND_FlushCommand + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C01D0 +FUN_020C01D0: ; 0x020C01D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C0254 ; =UNK_021D1C94 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + mov r1, #0x1 + str r1, [r0, #0x0] + bl SND_Init + ldr ip, _020C0258 ; =FUN_020C013C + ldr r0, _020C025C ; =UNK_021D1C98 + mov r3, #0x0 + ldr r1, _020C0260 ; =UNK_021D1CA4 + ldr r2, _020C0264 ; =FUN_020C0130 + str r12, [r0, #0x0] + str r3, [r0, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x4] + bl PM_PrependPreSleepCallback + ldr r0, _020C0260 ; =UNK_021D1CA4 + bl PM_AppendPostSleepCallback + bl FUN_020C0270 + bl FUN_020C1E38 + bl FUN_020C0D20 + ldr r1, _020C0268 ; =UNK_021D1C8C + mvn r3, #0x0 + ldr r0, _020C026C ; =UNK_021D1C90 + mov r2, #0x1 + strb r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C0254: .word UNK_021D1C94 +_020C0258: .word FUN_020C013C +_020C025C: .word UNK_021D1C98 +_020C0260: .word UNK_021D1CA4 +_020C0264: .word FUN_020C0130 +_020C0268: .word UNK_021D1C8C +_020C026C: .word UNK_021D1C90 + + arm_func_start FUN_020C0270 +FUN_020C0270: ; 0x020C0270 + ldr r2, _020C0290 ; =UNK_021D1CB8 + mov r3, #0x0 + ldr r1, _020C0294 ; =UNK_021D1CB0 + ldr r0, _020C0298 ; =UNK_021D1CB4 + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + bx lr + .balign 4 +_020C0290: .word UNK_021D1CB8 +_020C0294: .word UNK_021D1CB0 +_020C0298: .word UNK_021D1CB4 + + arm_func_start FUN_020C029C +FUN_020C029C: ; 0x020C029C + ldr r1, _020C02B8 ; =UNK_021D1CB4 + mov r2, #0x1 + mvn r0, r2, lsl r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C02B8: .word UNK_021D1CB4 + + arm_func_start FUN_020C02BC +FUN_020C02BC: ; 0x020C02BC + ldr r0, _020C02FC ; =UNK_021D1CB4 + mov r3, #0x1 + ldr r2, [r0, #0x0] + mov r0, #0x0 +_020C02CC: + ands r1, r2, r3 + ldreq r1, _020C02FC ; =UNK_021D1CB4 + ldreq r2, [r1, #0x0] + orreq r2, r2, r3 + streq r2, [r1, #0x0] + bxeq lr + add r0, r0, #0x1 + cmp r0, #0x8 + mov r3, r3, lsl #0x1 + blt _020C02CC + mvn r0, #0x0 + bx lr + .balign 4 +_020C02FC: .word UNK_021D1CB4 + + arm_func_start FUN_020C0300 +FUN_020C0300: ; 0x020C0300 + ldr r1, _020C0318 ; =UNK_021D1CB0 + mvn r0, r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C0318: .word UNK_021D1CB0 + + arm_func_start FUN_020C031C +FUN_020C031C: + ldr r1, _020C033C ; =UNK_021D1CB0 + ldr r2, [r1, #0x0] + ands r3, r0, r2 + movne r0, #0x0 + orreq r0, r2, r0 + streq r0, [r1, #0x0] + moveq r0, #0x1 + bx lr + .balign 4 +_020C033C: .word UNK_021D1CB0 + + arm_func_start FUN_020C0340 +FUN_020C0340: + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,pc} + mov r1, #0x0 + bl SND_UnlockChannel + ldr r0, _020C036C ; =UNK_021D1CB8 + mvn r1, r4 + ldr r2, [r0, #0x0] + and r1, r2, r1 + str r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C036C: .word UNK_021D1CB8 + + arm_func_start FUN_020C0370 +FUN_020C0370: + stmdb sp!, {r4,lr} + movs r4, r0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + ldr r1, _020C03B4 ; =UNK_021D1CB8 + ldr r1, [r1, #0x0] + ands r1, r4, r1 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + mov r1, #0x0 + bl SND_LockChannel + ldr r1, _020C03B4 ; =UNK_021D1CB8 + mov r0, #0x1 + ldr r2, [r1, #0x0] + orr r2, r2, r4 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C03B4: .word UNK_021D1CB8 + + arm_func_start FUN_020C03B8 +FUN_020C03B8: ; 0x020C03B8 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020C03F8 + ldr r0, [r4, #0x10] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + mov r0, #0x1 + str r0, [r4, #0xc] +_020C03F8: + bl SND_GetChannelStatus + ldr r1, [r4, #0x0] + mov r2, #0x1 + mov r1, r2, lsl r1 + ands r0, r1, r0 + movne r0, r2 + moveq r0, #0x0 + streq r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C041C +FUN_020C041C: ; 0x020C041C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + bl SND_SetChannelPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C044C +FUN_020C044C: ; 0x020C044C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r2, [r5, #0x4] + ldr r0, _020C04D4 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + mov r2, r4 + mov r3, r4, asr #0x1f + bl _ll_udiv + mov r2, #0x0 + mov r3, r0 + mov r0, #0x10 + cmp r1, r2 + cmpeq r3, r0 + movcc r3, r0 + blo _020C04B8 + ldr r0, _020C04D8 ; =0x0000FFFF + cmp r1, r2 + cmpeq r3, r0 + movhi r3, r0 +_020C04B8: + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r0, r1, lsl r0 + mov r1, r3 + bl SND_SetChannelTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C04D4: .word 0xD87F8000 +_020C04D8: .word 0x0000FFFF + + arm_func_start FUN_020C04DC +FUN_020C04DC: ; 0x020C04DC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, #0x0 + bl SND_SetChannelVolume + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0510 +FUN_020C0510: ; 0x020C0510 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r1, #0x0 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StopTimer + mov r0, #0x0 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C054C +FUN_020C054C: ; 0x020C054C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + movs r8, r1 + mov r9, r0 + mov r7, r2 + mov r6, r3 + beq _020C0584 + cmp r8, #0x1 + ldreq r0, [sp, #0x3c] + ldreq r1, [sp, #0x38] + moveq r0, r0, asr #0x1 + moveq r5, r1, asr #0x1 + subeq r4, r0, r1, asr #0x1 + b _020C0598 +_020C0584: + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + mov r0, r0, asr #0x2 + mov r5, r1, asr #0x2 + sub r4, r0, r1, asr #0x2 +_020C0598: + ldr r2, [sp, #0x40] + ldr r0, _020C0668 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + ldr r2, [sp, #0x48] + mov r3, r2, asr #0x1f + bl _ll_udiv + mov r3, #0x0 + mov r2, #0x10 + cmp r1, r3 + cmpeq r0, r2 + movcc r0, r2 + blo _020C05E0 + ldr r2, _020C066C ; =0x0000FFFF + cmp r1, r3 + cmpeq r0, r2 + movhi r0, r2 +_020C05E0: + str r5, [sp, #0x0] + ldr r1, [sp, #0x44] + str r4, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + cmp r6, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x4c] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r9, #0x0] + moveq r3, #0x2 + mov r1, r8 + mov r2, r7 + bl SND_SetupChannelPcm + mov r1, #0x0 + ldr r0, [r9, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r9, #0x8] + mov r0, #0x0 + str r0, [r9, #0xc] + bl SND_GetCurrentCommandTag + str r0, [r9, #0x10] + ldr r1, [sp, #0x40] + mov r0, #0x1 + str r1, [r9, #0x4] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C0668: .word 0xD87F8000 +_020C066C: .word 0x0000FFFF + + arm_func_start FUN_020C0670 +FUN_020C0670: ; 0x020C0670 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr ip, _020C0684 ; =FUN_020C0340 + mov r0, r1, lsl r0 + bx r12 + .balign 4 +_020C0684: .word FUN_020C0340 + + arm_func_start FUN_020C0688 +FUN_020C0688: ; 0x020C0688 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + mov r0, r0, lsl r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x14 + mul r0, r4, r0 + ldr r2, _020C06C8 ; =UNK_021D1CBC + mov r1, #0x0 + str r4, [r2, r0] + add r0, r2, r0 + str r1, [r0, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020C06C8: .word UNK_021D1CBC + + arm_func_start FUN_020C06CC +FUN_020C06CC: ; 0x020C06CC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r4, [r6, #0x4] + mov r5, r1 + cmp r4, #0x0 + beq _020C06F8 + mov r0, r4 + mov r1, r6 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r6, #0x4] +_020C06F8: + ldr r0, _020C0728 ; =UNK_021D1E08 + mov r1, r6 + bl FUN_020ADAB0 + strb r5, [r6, #0x3d] + cmp r4, #0x0 + beq _020C071C + mov r0, r4 + mov r1, r6 + bl FUN_020C0910 +_020C071C: + mov r0, r6 + bl FUN_020C08B4 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0728: .word UNK_021D1E08 + + arm_func_start FUN_020C072C +FUN_020C072C: ; 0x020C072C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C2A7C + ldr r1, [r4, #0xc] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x8] + ldmneia sp!, {r4,pc} + ldr r1, [r4, #0x10] + ldr r2, _020C0778 ; =UNK_021D2254 + mov r0, #0x24 + mla r0, r1, r0, r2 + mov r1, r4 + add r0, r0, #0xc + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + .balign 4 +_020C0778: .word UNK_021D2254 + + arm_func_start FUN_020C077C +FUN_020C077C: ; 0x020C077C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + strne r0, [r4, #0x0] + ldr r5, [r4, #0x4] + mov r1, r4 + mov r0, r5 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020C07D8 + add r0, r5, #0xc + bl FUN_020ADBE8 + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r1, [r0, #0xc] + str r1, [r4, #0x8] +_020C07D8: + ldr r0, _020C0800 ; =UNK_021D1E08 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, _020C0804 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADBE8 + mov r0, #0x0 + strb r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0800: .word UNK_021D1E08 +_020C0804: .word UNK_021D1DFC + + arm_func_start FUN_020C0808 +FUN_020C0808: ; 0x020C0808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + bne _020C0850 + ldr r0, _020C0878 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + mov r4, r0 + ldrb r1, [r4, #0x3d] + cmp r5, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} + bl FUN_020C087C +_020C0850: + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADAB0 + mov r0, r4 + strb r5, [r4, #0x3d] + bl FUN_020C08B4 + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0874: .word UNK_021D1DFC +_020C0878: .word UNK_021D1E08 + + arm_func_start FUN_020C087C +FUN_020C087C: ; 0x020C087C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrb r0, [r4, #0x2c] + cmp r0, #0x2 + bne _020C089C + ldrb r0, [r4, #0x3c] + ldr r1, _020C08B0 ; =0xFFFFFD2D + bl SND_SetPlayerVolume +_020C089C: + ldrb r0, [r4, #0x3c] + bl SND_StopSeq + mov r0, r4 + bl FUN_020C077C + ldmia sp!, {r4,pc} + .balign 4 +_020C08B0: .word 0xFFFFFD2D + + arm_func_start FUN_020C08B4 +FUN_020C08B4: ; 0x020C08B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C090C ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C08F8 + ldr r4, _020C090C ; =UNK_021D1E08 +_020C08D8: + ldrb r2, [r5, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C08F8 + mov r0, r4 + bl FUN_020ADA98 + movs r1, r0 + bne _020C08D8 +_020C08F8: + ldr r0, _020C090C ; =UNK_021D1E08 + mov r2, r5 + bl FUN_020ADB18 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C090C: .word UNK_021D1E08 + + arm_func_start FUN_020C0910 +FUN_020C0910: ; 0x020C0910 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, #0x0 + mov r5, r0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C0950 +_020C0930: + ldrb r2, [r4, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C0950 + mov r0, r5 + bl FUN_020ADA98 + movs r1, r0 + bne _020C0930 +_020C0950: + mov r0, r5 + mov r2, r4 + bl FUN_020ADB18 + str r5, [r4, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0968 +FUN_020C0968: ; 0x020C0968 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x0 + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2f] + strh r0, [r4, #0x34] + strh r0, [r4, #0x3e] + mov r1, #0x7f + strb r1, [r4, #0x40] + add r0, r4, #0x1c + strb r1, [r4, #0x41] + bl FUN_020C3E6C + add r0, r4, #0x1c + mov r1, #0x7f00 + mov r2, #0x1 + bl FUN_020C3E40 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C09B0 +FUN_020C09B0: ; 0x020C09B0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C0A00 ; =UNK_021D2254 + mov r2, #0x24 + mla r5, r0, r2, r3 + mov r6, r1 + add r0, r5, #0xc + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r4 + add r0, r5, #0xc + bl FUN_020ADAB0 + str r6, [r4, #0xc] + str r4, [r6, #0x8] + ldr r0, [r4, #0x8] + bl FUN_020C29C0 + ldr r0, [r4, #0x8] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0A00: .word UNK_021D2254 + + arm_func_start FUN_020C0A04 +FUN_020C0A04: ; 0x020C0A04 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x2e] + cmp r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x3c] + bl SND_PauseSeq + strb r4, [r5, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0A40 +FUN_020C0A40: ; 0x020C0A40 + stmdb sp!, {r4,lr} + movs r4, r0 + mov r2, r1 + ldmeqia sp!, {r4,pc} + ldrb r1, [r4, #0x2c] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C0A6C + bl FUN_020C087C + ldmia sp!, {r4,pc} +_020C0A6C: + add r0, r4, #0x1c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, r4 + mov r1, #0x0 + bl FUN_020C06CC + mov r0, #0x2 + strb r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0A90 +FUN_020C0A90: ; 0x020C0A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3c] + ldr r4, [r5, #0x4] + bl SND_PrepareSeq + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + beq _020C0AC0 + ldrb r0, [r5, #0x3c] + ldr r1, _020C0AE4 ; =0x0000FFFF + bl SND_SetTrackAllocatableChannel +_020C0AC0: + mov r0, r5 + bl FUN_020C0968 + bl SND_GetCurrentCommandTag + str r0, [r5, #0x30] + mov r0, #0x1 + strb r0, [r5, #0x2f] + strb r0, [r5, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0AE4: .word 0x0000FFFF + + arm_func_start thunk_FUN_020c077c +thunk_FUN_020c077c: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =FUN_020C077C + bx r12 + .balign 4 +_020C0AF0: .word FUN_020C077C + + arm_func_start FUN_020C0AF4 +FUN_020C0AF4: ; 0x020C0AF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020C0B9C ; =UNK_021D2254 + mov r3, #0x24 + mov r4, r0 + ldr r5, [r4, #0x0] + mla r6, r1, r3, r12 + mov r7, r2 + cmp r5, #0x0 + beq _020C0B20 + bl FUN_020C0F68 +_020C0B20: + ldrh r1, [r6, #0x8] + ldr r0, [r6, #0x18] + cmp r1, r0 + blo _020C0B64 + mov r0, r6 + mov r1, #0x0 + bl FUN_020ADA98 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldrb r1, [r0, #0x3d] + cmp r7, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r7,pc} + bl FUN_020C087C +_020C0B64: + mov r0, r7 + bl FUN_020C0808 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r0, r6 + mov r1, r5 + bl FUN_020C0910 + str r4, [r5, #0x0] + mov r0, r5 + str r5, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C0B9C: .word UNK_021D2254 + + arm_func_start FUN_020C0BA0 +FUN_020C0BA0: ; 0x020C0BA0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + bl SND_GetPlayerStatus + str r0, [sp, #0x0] + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r10, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + mov r0, #0x8000 + rsb r0, r0, #0x0 + ldr r4, _020C0D18 ; =UNK_02103BAC + str r0, [sp, #0x4] + mov r5, #0x1 + mov r11, #0x0 +_020C0BE0: + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, r10 + bl FUN_020ADA98 + ldrb r1, [r10, #0x2d] + mov r9, r0 + cmp r1, #0x0 + bne _020C0C0C + ldr r0, [r10, #0x30] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + strneb r5, [r10, #0x2d] +_020C0C0C: + ldrb r0, [r10, #0x2d] + cmp r0, #0x0 + beq _020C0C38 + ldrb r0, [r10, #0x3c] + mov r1, r5, lsl r0 + ldr r0, [sp, #0x0] + ands r0, r0, r1 + bne _020C0C38 + mov r0, r10 + bl FUN_020C077C + b _020C0D00 +_020C0C38: + add r0, r10, #0x1c + bl FUN_020C3DF4 + ldr r0, [r10, #0x4] + ldrb r2, [r10, #0x41] + ldrb r1, [r10, #0x40] + ldrb r0, [r0, #0x20] + mov r3, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + add r0, r10, #0x1c + ldrsh r8, [r4, r3] + ldrsh r7, [r4, r2] + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r2, r0, lsl #0x1 + add r1, r7, r8 + mov r0, #0x8000 + ldrsh r2, [r4, r2] + add r1, r6, r1 + rsb r0, r0, #0x0 + add r6, r2, r1 + cmp r6, r0 + ldrlt r6, [sp, #0x4] + blt _020C0CA8 + ldr r0, _020C0D1C ; =0x00007FFF + cmp r6, r0 + movgt r6, r0 +_020C0CA8: + ldrsh r0, [r10, #0x3e] + cmp r6, r0 + beq _020C0CC4 + ldrb r0, [r10, #0x3c] + mov r1, r6 + bl SND_SetPlayerVolume + strh r6, [r10, #0x3e] +_020C0CC4: + ldrb r0, [r10, #0x2c] + cmp r0, #0x2 + bne _020C0CE8 + add r0, r10, #0x1c + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C0CE8 + mov r0, r10 + bl FUN_020C087C +_020C0CE8: + ldrb r0, [r10, #0x2f] + cmp r0, #0x0 + beq _020C0D00 + ldrb r0, [r10, #0x3c] + bl SND_StartPreparedSeq + strb r11, [r10, #0x2f] +_020C0D00: + mov r10, r9 + cmp r9, #0x0 + bne _020C0BE0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C0D14: .word UNK_021D1E08 +_020C0D18: .word UNK_02103BAC +_020C0D1C: .word 0x00007FFF + + arm_func_start FUN_020C0D20 +FUN_020C0D20: ; 0x020C0D20 + stmdb sp!, {r4-r10,lr} + ldr r0, _020C0DC4 ; =UNK_021D1E08 + mov r1, #0x14 + bl FUN_020ADC74 + ldr r0, _020C0DC8 ; =UNK_021D1DFC + mov r1, #0x14 + bl FUN_020ADC74 + ldr r6, _020C0DCC ; =UNK_021D1E14 + mov r7, #0x0 + ldr r4, _020C0DC8 ; =UNK_021D1DFC + mov r5, r7 +_020C0D4C: + strb r5, [r6, #0x2c] + mov r0, r4 + mov r1, r6 + strb r7, [r6, #0x3c] + bl FUN_020ADBE8 + add r7, r7, #0x1 + cmp r7, #0x10 + add r6, r6, #0x44 + blt _020C0D4C + ldr sl, _020C0DD0 ; =UNK_021D2254 + mov r9, #0x0 + mov r7, r9 + mov r4, r9 + mov r8, #0xc + mov r6, #0x7f + mov r5, #0x1 +_020C0D8C: + mov r0, r10 + mov r1, r8 + bl FUN_020ADC74 + mov r1, r7 + add r0, r10, #0xc + bl FUN_020ADC74 + strb r6, [r10, #0x20] + str r5, [r10, #0x18] + add r9, r9, #0x1 + str r4, [r10, #0x1c] + cmp r9, #0x20 + add r10, r10, #0x24 + blt _020C0D8C + ldmia sp!, {r4-r10,pc} + .balign 4 +_020C0DC4: .word UNK_021D1E08 +_020C0DC8: .word UNK_021D1DFC +_020C0DCC: .word UNK_021D1E14 +_020C0DD0: .word UNK_021D2254 + + arm_func_start FUN_020C0DD4 +FUN_020C0DD4: ; 0x020C0DD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x2d] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x3c] + bl SND_GetPlayerTickCounter + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0E14 +FUN_020C0E14: ; 0x020C0E14 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + mvneq r0, #0x0 + bxeq lr + ldrh r0, [r1, #0x34] + cmp r0, #0x1 + mvnne r0, #0x0 + ldreqh r0, [r1, #0x38] + bx lr + + arm_func_start FUN_020C0E38 +FUN_020C0E38: ; 0x020C0E38 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + bxeq lr + mov r3, #0x2 + strh r3, [r12, #0x34] + ldr r3, [r0, #0x0] + strh r1, [r3, #0x38] + ldr r0, [r0, #0x0] + strh r2, [r0, #0x3a] + bx lr + + arm_func_start FUN_020C0E60 +FUN_020C0E60: ; 0x020C0E60 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + movne r2, #0x1 + strneh r2, [r3, #0x34] + ldrne r0, [r0, #0x0] + strneh r1, [r0, #0x38] + bx lr + + arm_func_start FUN_020C0E7C +FUN_020C0E7C: ; 0x020C0E7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EA4 +FUN_020C0EA4: ; 0x020C0EA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPitch + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0ECC +FUN_020C0ECC: ; 0x020C0ECC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetPlayerChannelPriority + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EF4 +FUN_020C0EF4: ; 0x020C0EF4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r3, #0x2c] + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r0, r3, #0x1c + mov r1, r1, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0F30 +FUN_020C0F30: ; 0x020C0F30 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x40] + bx lr + + arm_func_start FUN_020C0F40 +FUN_020C0F40: ; 0x020C0F40 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x41] + bx lr + + arm_func_start FUN_020C0F50 +FUN_020C0F50: ; 0x020C0F50 + mov r1, #0x24 + mul r1, r0, r1 + ldr r0, _020C0F64 ; =UNK_021D225C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020C0F64: .word UNK_021D225C + + arm_func_start FUN_020C0F68 +FUN_020C0F68: ; 0x020C0F68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F80 +FUN_020C0F80: ; 0x020C0F80 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F8C +FUN_020C0F8C: ; 0x020C0F8C + ldr ip, _020C0F98 ; =FUN_020C0A04 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C0F98: .word FUN_020C0A04 + + arm_func_start FUN_020C0F9C +FUN_020C0F9C: ; 0x020C0F9C + stmdb sp!, {r4-r6,lr} + ldr r4, _020C0FD8 ; =UNK_021D1E14 + mov r6, r0 + mov r5, #0x0 +_020C0FAC: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C0FC4 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C0FC4: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FAC + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0FD8: .word UNK_021D1E14 + + arm_func_start FUN_020C0FDC +FUN_020C0FDC: ; 0x020C0FDC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C103C ; =UNK_021D1E14 + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020C0FF4: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C1024 + ldrh r0, [r4, #0x34] + cmp r0, #0x1 + bne _020C1024 + ldrh r0, [r4, #0x38] + cmp r0, r7 + bne _020C1024 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C1024: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C103C: .word UNK_021D1E14 + + arm_func_start FUN_020C1040 +FUN_020C1040: ; 0x020C1040 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _020C109C ; =UNK_021D2254 + mov r2, #0x24 + mla r4, r0, r2, r3 + ldr r5, _020C10A0 ; =UNK_021D1E14 + mov r7, r1 + mov r6, #0x0 +_020C1060: + ldrb r0, [r5, #0x2c] + cmp r0, #0x0 + beq _020C1084 + ldr r0, [r5, #0x4] + cmp r0, r4 + bne _020C1084 + mov r0, r5 + mov r1, r7 + bl FUN_020C0A40 +_020C1084: + add r6, r6, #0x1 + cmp r6, #0x10 + add r5, r5, #0x44 + blt _020C1060 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C109C: .word UNK_021D2254 +_020C10A0: .word UNK_021D1E14 + + arm_func_start FUN_020C10A4 +FUN_020C10A4: ; 0x020C10A4 + ldr ip, _020C10B0 ; =FUN_020C0A40 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C10B0: .word FUN_020C0A40 + + arm_func_start FUN_020C10B4 +FUN_020C10B4: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r2 + mov r6, r0 + mov r0, r1 + mov r3, #0x0 + ldr r2, _020C1140 ; =FUN_020C072C + add r1, r5, #0x14 + str r3, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r2, #0x0 + str r2, [r4, #0xc] + str r6, [r4, #0x10] + mov r1, r5 + add r0, r4, #0x14 + str r2, [r4, #0x8] + bl FUN_020C2A94 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020C1144 ; =UNK_021D2254 + mov r1, #0x24 + mla r2, r6, r1, r2 + str r0, [r4, #0x8] + mov r1, r4 + add r0, r2, #0xc + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C1140: .word FUN_020C072C +_020C1144: .word UNK_021D2254 + + arm_func_start FUN_020C1148 +FUN_020C1148: ; 0x020C1148 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C115C ; =UNK_021D2270 + str r1, [r0, r2] + bx lr + .balign 4 +_020C115C: .word UNK_021D2270 + + arm_func_start FUN_020C1160 +FUN_020C1160: ; 0x020C1160 + mov r2, #0x24 + mul r2, r0, r2 + mov r0, r1, lsl #0x10 + ldr r1, _020C117C ; =UNK_021D226C + mov r0, r0, lsr #0x10 + str r0, [r1, r2] + bx lr + .balign 4 +_020C117C: .word UNK_021D226C + + arm_func_start FUN_020C1180 +FUN_020C1180: ; 0x020C1180 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C1194 ; =UNK_021D2274 + strb r1, [r0, r2] + bx lr + .balign 4 +_020C1194: .word UNK_021D2274 + + arm_func_start FUN_020C1198 +FUN_020C1198: ; 0x020C1198 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmeqia sp!, {r4-r6,pc} + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020C11E8 + mov r5, #0x1 +_020C11C0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r4 + mov r1, r5 + bl FUN_020C1254 + mov r0, r6 + bl OS_RestoreInterrupts + ldr r0, [r4, #0x38] + cmp r0, #0x0 + bne _020C11C0 +_020C11E8: + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C1208 +FUN_020C1208: ; 0x020C1208 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1e + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + ldr r2, [r0, #0x40] + mov r3, #0x1 + mov r1, #0x0 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x44] + mov r3, r1 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C1254 +FUN_020C1254: ; 0x020C1254 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl _u32_div_f + ldr r1, [r5, #0x48] + ldr r2, [r5, #0x38] + mov r3, r0 + mul lr, r3, r2 + cmp r1, #0x0 + mov r12, #0x0 + ble _020C12B8 + ldr r2, _020C1300 ; =UNK_021D2724 + ldr r0, _020C1304 ; =UNK_021D26E4 +_020C1294: + add r1, r5, r12 + ldrb r1, [r1, #0x4c] + ldr r1, [r2, r1, lsl #0x3] + add r1, r1, lr + str r1, [r0, r12, lsl #0x2] + ldr r1, [r5, #0x48] + add r12, r12, #0x1 + cmp r12, r1 + blt _020C1294 +_020C12B8: + ldr r0, [r5, #0x20] + ldr r2, _020C1304 ; =UNK_021D26E4 + str r0, [sp, #0x0] + ldr r12, [r5, #0x34] + mov r0, r4 + str r12, [sp, #0x4] + ldr r4, [r5, #0x30] + blx r4 + ldr r0, [r5, #0x38] + add r0, r0, #0x1 + str r0, [r5, #0x38] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x2c] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r5, #0x38] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1300: .word UNK_021D2724 +_020C1304: .word UNK_021D26E4 + + arm_func_start FUN_020C1308 +FUN_020C1308: ; 0x020C1308 + ldr ip, _020C1314 ; =FUN_020C1254 + mov r1, #0x1 + bx r12 + .balign 4 +_020C1314: .word FUN_020C1254 + + arm_func_start FUN_020C1318 +FUN_020C1318: ; 0x020C1318 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + bl FUN_020C029C + ldr r0, _020C1344 ; =UNK_021D26D8 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C1344: .word UNK_021D26D8 + + arm_func_start FUN_020C1348 +FUN_020C1348: ; 0x020C1348 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C13B4 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StopTimer + add r0, r4, #0x8 + bl PM_DeletePreSleepCallback + add r0, r4, #0x14 + bl PM_DeletePostSleepCallback + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc +_020C13B4: + mov r0, r4 + bl FUN_020C1318 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C13C4 +FUN_020C13C4: ; 0x020C13C4 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + str r1, [r7, #0x3c] + ldr r0, [r7, #0x48] + mov r5, #0x0 + cmp r0, #0x0 + ldmleia sp!, {r4-r8,pc} + ldr r4, _020C142C ; =UNK_021D2724 + mov r8, #0x1 +_020C13E8: + add r0, r7, r5 + ldrb r6, [r0, #0x4c] + ldr r1, [r7, #0x3c] + add r0, r4, r6, lsl #0x3 + ldr r0, [r0, #0x4] + add r0, r1, r0 + bl SND_CalcChannelVolume + mov r2, r0 + mov r0, r8, lsl r6 + and r1, r2, #0xff + mov r2, r2, asr #0x8 + bl SND_SetChannelVolume + ldr r0, [r7, #0x48] + add r5, r5, #0x1 + cmp r5, r0 + blt _020C13E8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020C142C: .word UNK_021D2724 + + arm_func_start FUN_020C1430 +FUN_020C1430: ; 0x020C1430 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020C1348 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C1458 +FUN_020C1458: ; 0x020C1458 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmneia sp!, {r4,pc} + add r0, r4, #0x8 + bl PM_PrependPreSleepCallback + add r0, r4, #0x14 + bl PM_AppendPostSleepCallback + ldr r0, [r4, #0x24] + orr r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C14AC +FUN_020C14AC: ; 0x020C14AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + mov r10, r0 + ldr r4, [r10, #0x24] + mov r9, r1 + mov r1, r4, lsl #0x1f + movs r1, r1, asr #0x1f + ldr r1, [sp, #0x4c] + str r2, [sp, #0x18] + mov r4, r3 + str r1, [sp, #0x4c] + beq _020C14E0 + bl FUN_020C1430 +_020C14E0: + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x48] + mov r0, r0, lsl #0x5 + mul r1, r2, r0 + mov r0, r4 + bl _u32_div_f + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x48] + mul r1, r0, r1 + mov r0, r1, lsl #0x5 + str r0, [r10, #0x28] + ldr r0, [r10, #0x28] + cmp r9, #0x1 + moveq r0, r0, lsr #0x1 + mul r0, r2, r0 + ldr r1, [sp, #0x4c] + bl _u32_div_f + str r0, [sp, #0x1c] + bl FUN_020C02BC + str r0, [r10, #0x40] + ldr r0, [r10, #0x40] + cmp r0, #0x0 + addlt sp, sp, #0x24 + movlt r0, #0x0 + ldmltia sp!, {r4-r11,pc} + ldr r0, [r10, #0x48] + mov r8, #0x0 + cmp r0, #0x0 + ble _020C15D4 + ldr r0, [sp, #0x48] + mov r7, r0, lsl #0x5 + ldr r6, _020C1668 ; =UNK_021D2724 + mov r5, r8 + mov r4, #0x7f + mov r11, #0x40 + mov r0, #0x1 + str r0, [sp, #0x20] +_020C1574: + ldr r2, [r10, #0x28] + ldr r1, [sp, #0x18] + add r0, r10, r8 + mla r1, r2, r8, r1 + ldrb r0, [r0, #0x4c] + ldr r3, [sp, #0x20] + str r1, [r6, r0, lsl #0x3] + add r1, r6, r0, lsl #0x3 + str r5, [r1, #0x4] + str r5, [sp, #0x0] + ldr r2, [r10, #0x28] + mov r1, r9 + mov r2, r2, lsr #0x2 + str r2, [sp, #0x4] + str r4, [sp, #0x8] + str r5, [sp, #0xc] + str r7, [sp, #0x10] + str r11, [sp, #0x14] + ldr r2, [r6, r0, lsl #0x3] + bl SND_SetupChannelPcm + ldr r0, [r10, #0x48] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C1574 +_020C15D4: + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [r10, #0x40] + ldr r3, _020C166C ; =FUN_020C1308 + mov r2, r1 + bl SND_SetupAlarm + ldr r0, _020C1670 ; =UNK_021D26D8 + mov r1, r10 + bl FUN_020ADBE8 + ldr r0, [sp, #0x4c] + str r9, [r10, #0x20] + str r0, [r10, #0x2c] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + str r1, [r10, #0x30] + str r0, [r10, #0x34] + mov r0, #0x0 + str r0, [r10, #0x38] + str r0, [r10, #0x3c] + ldr r0, [r10, #0x24] + bic r0, r0, #0x1 + orr r0, r0, #0x1 + str r0, [r10, #0x24] + bl OS_DisableInterrupts + mov r4, r0 + mov r2, #0x1 + mov r0, r10 + mov r1, #0x0 + str r2, [r10, #0x2c] + bl FUN_020C1254 + ldr r1, [sp, #0x4c] + mov r0, r4 + str r1, [r10, #0x2c] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1668: .word UNK_021D2724 +_020C166C: .word FUN_020C1308 +_020C1670: .word UNK_021D26D8 + + arm_func_start FUN_020C1674 +FUN_020C1674: ; 0x020C1674 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C0340 + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C169C +FUN_020C169C: ; 0x020C169C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, #0x0 + mov r6, r0 + mov r12, r4 + cmp r5, #0x0 + ble _020C16DC + mov r1, #0x1 +_020C16BC: + ldrb r3, [r2, r12] + add r0, r6, r12 + strb r3, [r0, #0x4c] + ldrb r0, [r2, r12] + add r12, r12, #0x1 + cmp r12, r5 + orr r4, r4, r1, lsl r0 + blt _020C16BC +_020C16DC: + mov r0, r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + strne r5, [r6, #0x48] + strne r4, [r6, #0x44] + movne r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C16FC +FUN_020C16FC: ; 0x020C16FC + stmdb sp!, {r4,lr} + ldr r1, _020C176C ; =UNK_021D26D4 + mov r4, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020C172C + ldr r0, _020C1770 ; =UNK_021D26D8 + mov r1, #0x0 + bl FUN_020ADC74 + ldr r0, _020C176C ; =UNK_021D26D4 + mov r1, #0x1 + str r1, [r0, #0x0] +_020C172C: + ldr r1, _020C1774 ; =FUN_020C1208 + ldr r0, _020C1778 ; =FUN_020C1198 + str r1, [r4, #0x8] + str r4, [r4, #0xc] + str r0, [r4, #0x14] + str r4, [r4, #0x18] + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C176C: .word UNK_021D26D4 +_020C1770: .word UNK_021D26D8 +_020C1774: .word FUN_020C1208 +_020C1778: .word FUN_020C1198 + + arm_func_start FUN_020C177C +FUN_020C177C: ; 0x020C177C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x18] + ldr r0, [r7, #0x1c] + ldr r1, _020C186C ; =UNK_021D27A4 + mul r0, r4, r0 + ldr r3, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r1, #0x0] + add r6, r3, r0 + cmp r1, #0x0 + add r5, r2, r0 + beq _020C180C + ldr r2, _020C1870 ; =UNK_021D27A8 + mov r1, #0x14 + ldr r2, [r2, #0x0] + ldr r3, _020C1874 ; =UNK_021D2820 + mul r1, r2, r1 + str r7, [r3, r1] + add r1, r3, r1 + str r4, [r1, #0x4] + str r0, [r1, #0x8] + str r6, [r1, #0xc] + ldr r0, _020C1878 ; =UNK_021D27AC + mov r2, #0x0 + str r5, [r1, #0x10] + bl OS_SendMessage + ldr r0, _020C1870 ; =UNK_021D27A8 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + movge r1, #0x0 + strge r1, [r0, #0x0] + b _020C1844 +_020C180C: + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + mov r0, r5 + mov r1, r4 + bl DC_InvalidateRange + ldr r1, [r7, #0x38] + mov r0, r6 + str r1, [sp, #0x0] + ldr r3, [r7, #0x8] + ldr r6, [r7, #0x34] + mov r1, r5 + mov r2, r4 + blx r6 +_020C1844: + ldr r0, [r7, #0x1c] + add r0, r0, #0x1 + str r0, [r7, #0x1c] + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x30] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r7, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C186C: .word UNK_021D27A4 +_020C1870: .word UNK_021D27A8 +_020C1874: .word UNK_021D2820 +_020C1878: .word UNK_021D27AC + + arm_func_start FUN_020C187C +FUN_020C187C: ; 0x020C187C + stmdb sp!, {r4,lr} + ldr r4, _020C18F4 ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + bl MIi_CpuClear32 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + mov r0, #0x0 + bl MIi_CpuClear32 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + movlt r2, #0x0 + bl SND_StartTimer + ldmia sp!, {r4,pc} + .balign 4 +_020C18F4: .word UNK_021D27CC + + arm_func_start FUN_020C18F8 +FUN_020C18F8: + stmdb sp!, {r4,lr} + ldr r3, _020C194C ; =UNK_021D27CC + ldr r0, [r3, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [r3, #0x2c] + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r3, #0x24] + ldr r1, [r3, #0x28] + movlt r2, #0x0 + mov r3, #0x0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + .balign 4 +_020C194C: .word UNK_021D27CC + + arm_func_start FUN_020C1950 +FUN_020C1950: ; 0x020C1950 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C1A3C ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r7, #0x1 + movlt r7, #0x0 + cmp r7, #0x0 + movne r0, #0x1 + movne r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + moveq r2, #0x0 + bl SND_StopTimer + cmp r7, #0x0 + beq _020C19DC + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc + ldr r6, _020C1A40 ; =UNK_021D27AC + mov r5, #0x0 +_020C19C4: + mov r0, r6 + mov r1, r5 + mov r2, r5 + bl OS_ReceiveMessage + cmp r0, #0x0 + bne _020C19C4 +_020C19DC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020C19EC + bl FUN_020C0300 +_020C19EC: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020C19FC + bl FUN_020C0340 +_020C19FC: + cmp r7, #0x0 + beq _020C1A0C + ldr r0, [r4, #0x2c] + bl FUN_020C029C +_020C1A0C: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _020C1A2C + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_SetOutputSelector +_020C1A2C: + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1A3C: .word UNK_021D27CC +_020C1A40: .word UNK_021D27AC + + arm_func_start FUN_020C1A44 +FUN_020C1A44: ; 0x020C1A44 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r10, r3 + str r0, [sp, #0x18] + str r2, [sp, #0x20] + mov r2, #0x0 + str r1, [sp, #0x1c] + mov r0, r1 + mov r1, r10 + ldr r9, [sp, #0x6c] + ldr r8, [sp, #0x74] + str r2, [sp, #0x2c] + mvn r6, #0x0 + ldr r4, _020C1D90 ; =UNK_021D27CC + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r1, r10 + bl DC_FlushRange + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x70] + cmp r0, #0x1 + moveq r7, #0x1 + ldr r0, _020C1D94 ; =0x00FFB0FF + movne r7, #0x0 + bl _s32_div_f + ldr r1, [sp, #0x84] + mov r11, r0 + cmp r1, #0x0 + beq _020C1B00 + add r1, r11, #0x10 + bic r11, r1, #0x1f + mov r2, r11, asr #0x5 + mov r0, r10 + cmp r7, #0x0 + ldr r1, [sp, #0x80] + moveq r0, r10, lsr #0x1 + str r2, [sp, #0x34] + bl _u32_div_f + ldr r1, [sp, #0x34] + mov r5, #0x20 + mul r0, r1, r0 + str r0, [sp, #0x30] + cmp r7, #0x0 + ldr r0, [sp, #0x34] + moveq r5, r5, lsr #0x1 + mul r0, r5, r0 + mov r5, r0 +_020C1B00: + cmp r7, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x28] + moveq r0, #0x1 + streq r0, [sp, #0x28] + cmp r7, #0x0 + movne r0, #0x1 + strne r0, [sp, #0x24] + moveq r0, #0x0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x18] + cmp r0, #0x2 + movne r0, #0xa + strne r0, [sp, #0x2c] + ldr r0, [sp, #0x84] + cmp r0, #0x0 + beq _020C1B58 + bl FUN_020C02BC + movs r6, r0 + addmi sp, sp, #0x3c + movmi r0, #0x0 + ldmmiia sp!, {r4-r11,pc} +_020C1B58: + mov r0, #0x3 + bl FUN_020C031C + cmp r0, #0x0 + bne _020C1B84 + cmp r6, #0x0 + blt _020C1B78 + mov r0, r6 + bl FUN_020C029C +_020C1B78: + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1B84: + mov r0, #0xa + bl FUN_020C0370 + cmp r0, #0x0 + bne _020C1BB8 + cmp r6, #0x0 + blt _020C1BA4 + mov r0, r6 + bl FUN_020C029C +_020C1BA4: + mov r0, #0x3 + bl FUN_020C0300 + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1BB8: + mov r0, #0x0 + mov r7, r10, lsr #0x2 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x78] + str r11, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x1c] + moveq r3, #0x2 + mov r0, #0x1 + bl SND_SetupChannelPcm + ldr r1, [sp, #0x64] + str r9, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x1c] + mov r0, #0x0 + mov r3, r7 + bl SND_SetupCapture + mov r0, #0x0 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r2, [sp, #0x7c] + str r11, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + moveq r3, #0x2 + mov r0, #0x3 + bl SND_SetupChannelPcm + ldr r2, [sp, #0x64] + str r9, [sp, #0x0] + str r2, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x20] + mov r3, r7 + mov r0, #0x1 + bl SND_SetupCapture + cmp r6, #0x0 + blt _020C1CA8 + ldr r2, [sp, #0x30] + ldr r3, _020C1D98 ; =FUN_020C177C + mov r1, r2 + mov r0, r6 + add r1, r1, r5 + str r4, [sp, #0x0] + bl SND_SetupAlarm +_020C1CA8: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020C1CC8 + mov r0, #0x1 + mov r2, r0 + mov r3, r0 + mov r1, #0x2 + bl SND_SetOutputSelector +_020C1CC8: + cmp r6, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r6 + ldr r0, [sp, #0x2c] + movlt r2, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x80] + str r0, [r4, #0x4] + mov r0, #0xa + str r0, [r4, #0x20] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x24] + mov r0, #0x3 + str r0, [r4, #0x28] + ldr r0, [sp, #0x60] + str r6, [r4, #0x2c] + str r0, [r4, #0x8] + ldr r0, [sp, #0x1c] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + mov r0, r10 + str r10, [r4, #0x14] + bl _u32_div_f + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r0, [sp, #0x80] + ldr r1, [sp, #0x84] + str r0, [r4, #0x30] + ldr r0, [sp, #0x88] + str r1, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0x3c + str r8, [r4, #0x50] + bl FUN_020C3E6C + add r0, r4, #0x3c + mov r1, r8, lsl #0x8 + mov r2, #0x1 + bl FUN_020C3E40 + mov r0, #0x0 + str r0, [r4, #0x4c] + mov r0, #0x1 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1D90: .word UNK_021D27CC +_020C1D94: .word 0x00FFB0FF +_020C1D98: .word FUN_020C177C + + arm_func_start FUN_020C1D9C +FUN_020C1D9C: ; 0x020C1D9C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020C1E34 ; =UNK_021D27CC + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r4, r5, #0x3c + mov r0, r4 + bl FUN_020C3DF4 + ldr r0, [r5, #0x4c] + cmp r0, #0x0 + beq _020C1DFC + mov r0, r4 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C1DFC + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020C1DFC: + mov r0, r4 + bl FUN_020C3E0C + ldr r1, [r5, #0x50] + mov r4, r0, asr #0x8 + cmp r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x24] + mov r1, r4 + mov r2, #0x0 + bl SND_SetChannelVolume + str r4, [r5, #0x50] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1E34: .word UNK_021D27CC + + arm_func_start FUN_020C1E38 +FUN_020C1E38: ; 0x020C1E38 + ldr r1, _020C1E50 ; =UNK_021D27A4 + mov r2, #0x0 + ldr r0, _020C1E54 ; =UNK_021D27CC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020C1E50: .word UNK_021D27A4 +_020C1E54: .word UNK_021D27CC + + arm_func_start FUN_020C1E58 +FUN_020C1E58: ; 0x020C1E58 + ldr r0, _020C1E64 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C1E64: .word UNK_021D27CC + + arm_func_start FUN_020C1E68 +FUN_020C1E68: ; 0x020C1E68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C1EA0 ; =UNK_021D27CC + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1EA0: .word UNK_021D27CC + + arm_func_start FUN_020C1EA4 +FUN_020C1EA4: ; 0x020C1EA4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1E68 + ldr r0, _020C1F50 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + mov r1, #0x7f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x40] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x44] + str r2, [sp, #0x20] + ldr r12, [sp, #0x48] + str r1, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r12, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1F50: .word UNK_021D27CC + + arm_func_start FUN_020C1F54 +FUN_020C1F54: ; 0x020C1F54 + stmdb sp!, {r4,lr} + ldr r4, _020C1FA0 ; =UNK_021D27CC + mov r2, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x4] + cmp r0, #0x0 + ldmneia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C1F88 + bl FUN_020C1950 + ldmia sp!, {r4,pc} +_020C1F88: + add r0, r4, #0x3c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, #0x1 + str r0, [r4, #0x4c] + ldmia sp!, {r4,pc} + .balign 4 +_020C1FA0: .word UNK_021D27CC + + arm_func_start FUN_020C1FA4 +FUN_020C1FA4: ; 0x020C1FA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C1FEC ; =UNK_021D27CC + mov r12, r0 + ldr r0, [r3, #0x0] + mov r2, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r3, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + add r0, r3, #0x3c + mov r1, r12, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1FEC: .word UNK_021D27CC + + arm_func_start FUN_020C1FF0 +FUN_020C1FF0: ; 0x020C1FF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r0, #0x0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1F54 + ldr r0, _020C2098 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x40] + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + mov r1, #0x7f + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r0, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2098: .word UNK_021D27CC + + arm_func_start FUN_020C209C +FUN_020C209C: ; 0x020C209C + mov r0, #0x0 + str r0, [r2, #0x88] + bx lr + + arm_func_start FUN_020C20A8 +FUN_020C20A8: ; 0x020C20A8 + mov r0, #0x0 + str r0, [r2, #0x84] + bx lr + + arm_func_start FUN_020C20B4 +FUN_020C20B4: ; 0x020C20B4 + mov r0, #0x0 + str r0, [r2, #0x8c] + bx lr + + arm_func_start FUN_020C20C0 +FUN_020C20C0: ; 0x020C20C0 + ldr r2, _020C20D8 ; =UNK_021D28C0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x84] + add r0, r2, r0, lsl #0x4 + str r1, [r0, #0x14] + bx lr + .balign 4 +_020C20D8: .word UNK_021D28C0 + + arm_func_start FUN_020C20DC +FUN_020C20DC: + ldr r1, _020C2100 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x14] + bx lr + .balign 4 +_020C2100: .word UNK_021D28C0 + + arm_func_start FUN_020C2104 +FUN_020C2104: + stmdb sp!, {r4-r6,lr} + ldr r4, _020C2178 ; =UNK_021D28C0 + mov r5, r2 + ldr r4, [r4, #0x0] + mov r6, r1 + ldr r2, [r4, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r6,pc} + add r1, r2, #0xc + add r1, r1, r0, lsl #0x4 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x0] + sub r0, r0, r3 + cmp r5, r0 + movhi r5, r0 + add r0, r4, #0x34 + add r1, r1, r3 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + mov r2, r5 + add r0, r4, #0x34 + bl FS_ReadFile + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2178: .word UNK_021D28C0 + + arm_func_start FUN_020C217C +FUN_020C217C: ; 0x020C217C + ldr r1, _020C21A0 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x10] + bx lr + .balign 4 +_020C21A0: .word UNK_021D28C0 + + arm_func_start FUN_020C21A4 +FUN_020C21A4: ; 0x020C21A4 + ldr r1, _020C2204 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x1c] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2204: .word UNK_021D28C0 + + arm_func_start FUN_020C2208 +FUN_020C2208: ; 0x020C2208 + ldr r1, _020C2268 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x18] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2268: .word UNK_021D28C0 + + arm_func_start FUN_020C226C +FUN_020C226C: + ldr r1, _020C22CC ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C22CC: .word UNK_021D28C0 + + arm_func_start FUN_020C22D0 +FUN_020C22D0: ; 0x020C22D0 + ldr r1, _020C2330 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x10] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2330: .word UNK_021D28C0 + + arm_func_start FUN_020C2334 +FUN_020C2334: + ldr r1, _020C2394 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0xc] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2394: .word UNK_021D28C0 + + arm_func_start FUN_020C2398 +FUN_020C2398: + ldr r1, _020C23F8 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x8] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C23F8: .word UNK_021D28C0 + + arm_func_start FUN_020C23FC +FUN_020C23FC: ; 0x020C23FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C2398 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r0, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C241C +FUN_020C241C: ; 0x020C241C + ldr r0, _020C2428 ; =UNK_021D28C0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C2428: .word UNK_021D28C0 + + arm_func_start FUN_020C242C +FUN_020C242C: ; 0x020C242C + ldr r1, _020C2440 ; =UNK_021D28C0 + ldr r2, [r1, #0x0] + str r0, [r1, #0x0] + mov r0, r2 + bx lr + .balign 4 +_020C2440: .word UNK_021D28C0 + + arm_func_start FUN_020C2444 +FUN_020C2444: ; 0x020C2444 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl MIi_CpuCopy32 + ldr r0, [r5, #0x18] + mov r12, #0x0 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x8c] + ldr r0, [r5, #0x20] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x84] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x88] + ldr r2, [r5, #0x84] + ldr r0, [r2, #0x8] + cmp r0, #0x0 + bls _020C24F0 + mov r3, r12 + mov r1, r12 +_020C24BC: + add r2, r2, #0xc + ldr r0, [r2, r3] + add r2, r2, r3 + cmp r0, #0x0 + moveq r0, r1 + addne r0, r4, r0 + str r0, [r2, #0x8] + ldr r2, [r5, #0x84] + add r12, r12, #0x1 + ldr r0, [r2, #0x8] + add r3, r3, #0x10 + cmp r12, r0 + blo _020C24BC +_020C24F0: + mov r1, #0x0 + ldr r0, _020C2508 ; =UNK_021D28C0 + str r1, [r5, #0x30] + str r5, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C2508: .word UNK_021D28C0 + + arm_func_start FUN_020C250C +FUN_020C250C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + mov r5, r1 + mov r1, #0x0 + mov r4, r2 + mov r2, r1 + add r0, r6, #0x34 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + add r0, r6, #0x34 + mov r2, #0x30 + bl FS_ReadFile + cmp r0, #0x30 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r5, #0x0 + beq _020C26E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x1c] + ldr r2, _020C26EC ; =FUN_020C20B4 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x8c] + ldr r0, [r6, #0x8c] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x18] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8c] + ldr r2, [r6, #0x1c] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x1c] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x24] + ldr r2, _020C26F0 ; =FUN_020C20A8 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x84] + ldr r0, [r6, #0x84] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x20] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x84] + ldr r2, [r6, #0x24] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x24] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r4, #0x0 + beq _020C26E0 + ldr r1, [r6, #0x14] + cmp r1, #0x0 + beq _020C26E0 + mov r4, #0x0 + ldr r2, _020C26F4 ; =FUN_020C209C + mov r0, r5 + mov r3, r6 + str r4, [sp, #0x0] + bl FUN_020C2958 + str r0, [r6, #0x88] + ldr r0, [r6, #0x88] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x10] + add r0, r6, #0x34 + mov r2, r4 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x88] + ldr r2, [r6, #0x14] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x14] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, r4 + ldmneia sp!, {r4-r6,pc} +_020C26E0: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C26EC: .word FUN_020C20B4 +_020C26F0: .word FUN_020C20A8 +_020C26F4: .word FUN_020C209C + + arm_func_start FUN_020C26F8 +FUN_020C26F8: ; 0x020C26F8 + ; r0: &sSoundDataBuffer + ; r1: char* filename + ; r2: (&sSoundDataBuffer)->unk_0090 + ; r3: 0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r12, #0x0 + str r12, [r6, #0x8c] + str r12, [r6, #0x84] + add r0, r6, #0x7c + mov r5, r2 + mov r4, r3 + str r12, [r6, #0x88] + bl FS_ConvertPathToFileID + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r6, #0x34 + bl FS_InitFile + add r1, r6, #0x7c + add r0, r6, #0x34 + ldmia r1, {r1-r2} + bl FS_OpenFileFast + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r3, #0x1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r3, [r6, #0x30] + bl FUN_020C250C + cmp r0, #0x0 + ldrne r0, _020C2770 ; =UNK_021D28C0 + strne r6, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2770: .word UNK_021D28C0 + + arm_func_start FUN_020C2774 +FUN_020C2774: ; 0x020C2774 + stmdb sp!, {r4,lr} + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2794 +FUN_020C2794: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x0] + mov r1, #0x14 + mov r2, #0x4 + bl FUN_020AE638 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + bl FUN_020C2818 + mov r1, r4 + add r0, r5, #0x4 + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C27DC +FUN_020C27DC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x4 + mov r1, #0xc + bl FUN_020ADC74 + mov r0, r5 + str r4, [r5, #0x0] + bl FUN_020C2794 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2818 +FUN_020C2818: ; 0x020C2818 + ldr ip, _020C2824 ; =FUN_020ADC74 + mov r1, #0x0 + bx r12 + .balign 4 +_020C2824: .word FUN_020ADC74 + + arm_func_start FUN_020C2828 +FUN_020C2828: ; 0x020C2828 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + movs r9, r1 + mov r10, r0 + mov r6, r7 + bne _020C2850 + bl FUN_020C29C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020C2850: + ldrh r0, [r10, #0xc] + cmp r9, r0 + bge _020C28D8 + mov r11, r7 + add r5, r10, #0x4 + mov r4, #0x1 +_020C2868: + mov r0, r5 + mov r1, r11 + bl FUN_020ADA84 + mov r1, r7 + mov r8, r0 + bl FUN_020ADA84 + movs r7, r0 + beq _020C28C0 +_020C2888: + ldr r12, [r7, #0xc] + cmp r12, #0x0 + beq _020C28AC + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + add r0, r7, #0x20 + blx r12 + mov r6, r4 +_020C28AC: + mov r0, r8 + mov r1, r7 + bl FUN_020ADA84 + movs r7, r0 + bne _020C2888 +_020C28C0: + mov r0, r5 + mov r1, r8 + bl FUN_020ADAB0 + ldrh r0, [r10, #0xc] + cmp r9, r0 + blt _020C2868 +_020C28D8: + ldr r0, [r10, #0x0] + mov r1, r9 + bl FUN_020AE554 + cmp r6, #0x0 + beq _020C28F0 + bl FUN_020C2774 +_020C28F0: + ldrh r1, [r10, #0xc] + ldr r0, [r10, #0x0] + bl FUN_020AE5B0 + mov r0, r10 + bl FUN_020C2794 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C290C +FUN_020C290C: ; 0x020C290C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r1, [r4, #0xc] + ldr r0, [r4, #0x0] + bl FUN_020AE5B0 + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020C2794 + cmp r0, #0x0 + ldrneh r0, [r4, #0xc] + subne r0, r0, #0x1 + ldmneia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020AE554 + mvn r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2958 +FUN_020C2958: ; 0x020C2958 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r8, r0 + add r0, r7, #0x1f + bic r1, r0, #0x1f + mov r6, r2 + ldr r0, [r8, #0x0] + add r1, r1, #0x20 + mov r2, #0x20 + mov r5, r3 + bl FUN_020AE638 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + add r0, r8, #0x4 + mov r1, #0x0 + bl FUN_020ADA84 + str r7, [r4, #0x8] + str r6, [r4, #0xc] + ldr r2, [sp, #0x18] + str r5, [r4, #0x10] + mov r1, r4 + str r2, [r4, #0x14] + bl FUN_020ADBE8 + add r0, r4, #0x20 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C29C0 +FUN_020C29C0: + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r5, #0x0 + mov r1, r5 + add r0, r8, #0x4 + bl FUN_020ADA84 + movs r7, r0 + beq _020C2A58 + add r9, r8, #0x4 + mov r10, #0x1 + mov r4, r5 +_020C29EC: + mov r0, r7 + mov r1, r4 + bl FUN_020ADA84 + movs r6, r0 + beq _020C2A38 +_020C2A00: + ldr r12, [r6, #0xc] + cmp r12, #0x0 + beq _020C2A24 + ldr r1, [r6, #0x8] + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r6, #0x20 + blx r12 + mov r5, r10 +_020C2A24: + mov r0, r7 + mov r1, r6 + bl FUN_020ADA84 + movs r6, r0 + bne _020C2A00 +_020C2A38: + mov r0, r9 + mov r1, r7 + bl FUN_020ADAB0 + mov r0, r9 + mov r1, r4 + bl FUN_020ADA84 + movs r7, r0 + bne _020C29EC +_020C2A58: + ldr r0, [r8, #0x0] + mov r1, #0x3 + bl FUN_020AE600 + cmp r5, #0x0 + beq _020C2A70 + bl FUN_020C2774 +_020C2A70: + mov r0, r8 + bl FUN_020C2794 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2A7C +FUN_020C2A7C: ; 0x020C2A7C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020C29C0 + ldr r0, [r4, #0x0] + bl thunk_FUN_020adc8c_2 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2A94 +FUN_020C2A94: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + add r2, r0, #0x3 + add r0, r0, r1 + bic r5, r2, #0x3 + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r5,pc} + sub r1, r0, r5 + cmp r1, #0x10 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + add r0, r5, #0x10 + sub r1, r1, #0x10 + mov r2, #0x0 + bl FUN_020AE684 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + mov r1, r4 + bl FUN_020C27DC + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r5,pc} + mov r0, r4 + bl thunk_FUN_020adc8c_2 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2B1C +FUN_020C2B1C: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x20 + mov r8, r0 + add r0, sp, #0x8 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x40] + bl SND_GetFirstInstDataPos + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + cmp r7, #0x0 + add r2, sp, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + add r1, sp, #0x10 + mov r0, r7 + bl SND_GetNextInstData + cmp r0, #0x0 + beq _020C2BD4 + add r10, sp, #0x10 + add r9, sp, #0x0 +_020C2B80: + ldrb r0, [sp, #0x10] + cmp r0, #0x1 + bne _020C2BBC + ldrh r0, [sp, #0x14] + cmp r6, r0 + bne _020C2BBC + ldrh r1, [sp, #0x12] + mov r0, r8 + mov r2, r5 + mov r3, r4 + bl FUN_020C2BE0 + cmp r0, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2BBC: + mov r0, r7 + mov r1, r10 + mov r2, r9 + bl SND_GetNextInstData + cmp r0, #0x0 + bne _020C2B80 +_020C2BD4: + mov r0, #0x1 + add sp, sp, #0x20 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2BE0 +FUN_020C2BE0: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_GetWaveDataAddress + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r9,pc} + mov r0, r7 + bl SND_GetWaveDataCount + ldr r1, [r7, #0x38] + sub r0, r0, #0x1 + add r1, r1, r6 + add r1, r7, r1, lsl #0x2 + cmp r6, r0 + ldrcc r0, [r1, #0x40] + ldr r8, [r1, #0x3c] + ldrcs r0, [r7, #0x8] + cmp r4, #0x0 + sub r9, r0, r8 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + ldr r2, _020C2CBC ; =FUN_020C2CC0 + mov r0, r4 + mov r3, r7 + add r1, r9, #0x20 + str r6, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r5 + mov r1, r4 + mov r2, r9 + mov r3, r8 + bl FUN_020C2104 + cmp r9, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r4 + mov r1, r9 + bl DC_StoreRange + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl SND_SetWaveDataAddress + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2CBC: .word FUN_020C2CC0 + + arm_func_start FUN_020C2CC0 +FUN_020C2CC0: ; 0x020C2CC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r7, r0 + mov r4, r3 + mov r6, r1 + mov r0, r5 + mov r1, r4 + bl SND_GetWaveDataAddress + cmp r7, r0 + bne _020C2CFC + mov r0, r5 + mov r1, r4 + mov r2, #0x0 + bl SND_SetWaveDataAddress +_020C2CFC: + mov r0, r7 + add r1, r7, r6 + bl SND_InvalidateWaveData + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2D10 +FUN_020C2D10: ; 0x020C2D10 + stmdb sp!, {r4,lr} + mov r1, r2 + mov r4, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r4 + bl SND_DestroyWaveArc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2D30 +FUN_020C2D30: ; 0x020C2D30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateWaveData + mov r0, r5 + bl SND_DestroyWaveArc + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2D68 +FUN_020C2D68: ; 0x020C2D68 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateBankData + mov r0, r5 + bl SND_DestroyBank + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DA0 +FUN_020C2DA0: ; 0x020C2DA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateSeqData + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DD0 +FUN_020C2DD0: ; 0x020C2DD0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r1 + mov r7, r0 + mov r6, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl FUN_020C242C + mov r5, r0 + mov r0, r6 + bl FUN_020C20DC + cmp r7, r0 + bne _020C2E1C + mov r0, r6 + mov r1, #0x0 + bl FUN_020C20C0 +_020C2E1C: + mov r0, r5 + bl FUN_020C242C + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2E34 +FUN_020C2E34: ; 0x020C2E34 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl FUN_020C20DC + movs r6, r0 + bne _020C2F40 + ldr r1, _020C2F4C ; =UNK_021D28C4 + mov r0, r9 + mov r2, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + cmp r0, #0x3c + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r0, _020C2F4C ; =UNK_021D28C4 + cmp r8, #0x0 + ldr r0, [r0, #0x38] + addeq sp, sp, #0x4 + mov r4, r0, lsl #0x2 + mov r0, r4, lsl #0x1 + add r5, r0, #0x3c + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + cmp r7, #0x0 + moveq r3, #0x0 + beq _020C2EB0 + bl FUN_020C241C + mov r3, r0 +_020C2EB0: + ldr r2, _020C2F50 ; =FUN_020C2D10 + mov r0, r8 + add r1, r5, #0x20 + str r9, [sp, #0x0] + bl FUN_020C2958 + movs r6, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r9 + mov r1, r6 + add r2, r4, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + add r1, r4, #0x3c + cmp r0, r1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r1, [r6, #0x38] + add r0, r6, #0x3c + mov r2, r4 + add r1, r0, r1, lsl #0x2 + bl MI_CpuCopy8 + mov r2, r4 + add r0, r6, #0x3c + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + bl DC_StoreRange + cmp r7, #0x0 + beq _020C2F40 + mov r0, r9 + mov r1, r6 + bl FUN_020C20C0 +_020C2F40: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2F4C: .word UNK_021D28C4 +_020C2F50: .word FUN_020C2D10 + + arm_func_start FUN_020C2F54 +FUN_020C2F54: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C2FBC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C2F88 + bl FUN_020C241C + mov r2, r0 +_020C2F88: + ldr r1, _020C2FC8 ; =FUN_020C2D30 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C2FBC + cmp r4, #0x0 + beq _020C2FBC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C2FBC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2FC8: .word FUN_020C2D30 + + arm_func_start FUN_020C2FCC +FUN_020C2FCC: ; 0x020C2FCC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3034 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3000 + bl FUN_020C241C + mov r2, r0 +_020C3000: + ldr r1, _020C3040 ; =FUN_020C2D68 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3034 + cmp r4, #0x0 + beq _020C3034 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3034: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3040: .word FUN_020C2D68 + + arm_func_start FUN_020C3044 +FUN_020C3044: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C30AC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3078 + bl FUN_020C241C + mov r2, r0 +_020C3078: + ldr r1, _020C30B8 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C30AC + cmp r4, #0x0 + beq _020C30AC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C30AC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C30B8: .word FUN_020C2DA0 + + arm_func_start FUN_020C30BC +FUN_020C30BC: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3124 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C30F0 + bl FUN_020C241C + mov r2, r0 +_020C30F0: + ldr r1, _020C3130 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3124 + cmp r4, #0x0 + beq _020C3124 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3124: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3130: .word FUN_020C2DA0 + + arm_func_start FUN_020C3134 +FUN_020C3134: ; 0x020C3134 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, r3 + bl FUN_020C217C + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r2, r7 + mov r3, r6 + add r1, r5, #0x20 + str r4, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl FUN_020C2104 + cmp r5, r0 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} + mov r0, r4 + mov r1, r5 + bl DC_StoreRange + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C31D4 +FUN_020C31D4: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C226C + cmp r0, #0x0 + moveq r0, #0x5 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x4 + beq _020C324C + ldrb r1, [r0, #0x3] + ands r1, r1, #0x1 + beq _020C3224 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2E34 + b _020C323C +_020C3224: + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2F54 +_020C323C: + cmp r0, #0x0 + bne _020C325C + mov r0, #0x9 + ldmia sp!, {r4-r6,pc} +_020C324C: + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x8 + bl FUN_020C20DC +_020C325C: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3270 +FUN_020C3270: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r1 + mov r9, r2 + mov r11, r3 + bl FUN_020C22D0 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x4 + ldmeqia sp!, {r4-r11,pc} + ands r0, r10, #0x2 + beq _020C32C4 + ldr r0, [r8, #0x0] + mov r1, r9 + mov r2, r11 + bl FUN_020C2FCC + movs r7, r0 + bne _020C32D0 + add sp, sp, #0xc + mov r0, #0x8 + ldmia sp!, {r4-r11,pc} +_020C32C4: + ldr r0, [r8, #0x0] + bl FUN_020C20DC + mov r7, r0 +_020C32D0: + and r5, r10, #0x4 + mov r6, #0x0 +_020C32D8: + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + ldr r1, _020C33B4 ; =0x0000FFFF + cmp r0, r1 + beq _020C3390 + bl FUN_020C226C + movs r4, r0 + addeq sp, sp, #0xc + moveq r0, #0x5 + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x4 + str r0, [sp, #0x0] + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + mov r1, r10 + mov r2, r9 + mov r3, r11 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} + ldrb r0, [r4, #0x3] + ands r0, r0, #0x1 + beq _020C3370 + cmp r5, #0x0 + beq _020C3370 + str r9, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + mov r3, r1, lsl #0x8 + mov r1, r7 + mov r2, r6 + mov r3, r3, lsr #0x8 + bl FUN_020C2B1C + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x9 + ldmeqia sp!, {r4-r11,pc} +_020C3370: + cmp r7, #0x0 + beq _020C3390 + ldr r2, [sp, #0x4] + cmp r2, #0x0 + beq _020C3390 + mov r0, r7 + mov r1, r6 + bl SND_AssignWaveArc +_020C3390: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _020C32D8 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + strne r7, [r0, #0x0] + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C33B4: .word 0x0000FFFF + + arm_func_start FUN_020C33B8 +FUN_020C33B8: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2334 + cmp r0, #0x0 + moveq r0, #0x3 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x8 + beq _020C3400 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r2, r4 + bl FUN_020C3044 + cmp r0, #0x0 + bne _020C3408 + mov r0, #0x7 + ldmia sp!, {r4-r6,pc} +_020C3400: + ldr r0, [r0, #0x0] + bl FUN_020C20DC +_020C3408: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C341C +FUN_020C341C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020C2398 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl FUN_020C3270 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,pc} + ands r0, r7, #0x1 + beq _020C3498 + ldr r0, [r4, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020C30BC + cmp r0, #0x0 + bne _020C34A0 + add sp, sp, #0x4 + mov r0, #0x6 + ldmia sp!, {r4-r7,pc} +_020C3498: + ldr r0, [r4, #0x0] + bl FUN_020C20DC +_020C34A0: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C34B8 +FUN_020C34B8: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r1 + bl FUN_020C21A4 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ldr r0, [r8, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + bls _020C35D4 + add r6, r8, #0x4 + str r7, [sp, #0x4] + mov r11, r7 + mov r10, r7 + mov r5, r7 + mov r4, #0x1 +_020C3500: + ldrb r0, [r6, #0x0] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C35C0 +_020C3510: + b _020C3520 +_020C3514: + b _020C3570 +_020C3518: + b _020C3598 +_020C351C: + b _020C3548 +_020C3520: + str r5, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C341C + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3548: + str r10, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C33B8 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3570: + str r11, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3598: + ldr r0, [sp, #0x4] + mov r2, r9 + str r0, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r3, r4 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C35C0: + ldr r0, [r8, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + add r6, r6, #0x8 + blo _020C3500 +_020C35D4: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C35E0 +FUN_020C35E0: ; 0x020C35E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C360C +FUN_020C360C: ; 0x020C360C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C31D4 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3640 +FUN_020C3640: ; 0x020C3640 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3674 +FUN_020C3674: ; 0x020C3674 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36A8 +FUN_020C36A8: ; 0x020C36A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C34B8 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36C8 +FUN_020C36C8: ; 0x020C36C8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r2 + mov r2, r3 + ldr r6, [sp, #0x20] + mov r4, r0 + mov r8, r1 + bl FUN_020C0AF4 + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r5 + bl FUN_020C09B0 + add r12, sp, #0x4 + mov r2, r0 + mov r0, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C373C + mov r0, r5 + bl thunk_FUN_020c077c + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C373C: + ldr r12, [sp, #0x24] + ldr r2, [r6, #0x0] + ldr r1, [r12, #0x18] + ldr r3, [sp, #0x4] + mov r0, r5 + add r1, r12, r1 + bl FUN_020C0A90 + ldrb r1, [r6, #0x6] + mov r0, r4 + bl FUN_020C0F30 + ldrb r1, [r6, #0x7] + mov r0, r4 + bl FUN_020C0ECC + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r4 + bl FUN_020C0E38 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C378C +FUN_020C378C: ; 0x020C378C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r8, r2 + mov r2, r3 + ldr r5, [sp, #0x28] + mov r6, r0 + mov r7, r1 + bl FUN_020C0AF4 + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r7 + mov r1, r4 + bl FUN_020C09B0 + mov r7, r0 + add r12, sp, #0x8 + mov r0, r8 + mov r2, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C3804 + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C3804: + ldr r0, [sp, #0x2c] + add r12, sp, #0x4 + mov r2, r7 + mov r1, #0x1 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + beq _020C383C + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C383C: + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r2, #0x18] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x0 + bl FUN_020C0A90 + ldrb r1, [r5, #0x6] + mov r0, r6 + bl FUN_020C0F30 + ldrb r1, [r5, #0x7] + mov r0, r6 + bl FUN_020C0ECC + ldr r1, [sp, #0x2c] + mov r0, r6 + bl FUN_020C0E60 + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3888 +FUN_020C3888: ; 0x020C3888 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl FUN_020C2334 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldr r0, [r0, #0x0] + bl FUN_020C20DC + movs r4, r0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r1, r5 + bl FUN_020C3D9C + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r7 + bl FUN_020C36C8 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3910 +FUN_020C3910: ; 0x020C3910 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [sp, #0x20] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + cmp r4, #0x0 + ldrltb r4, [r0, #0x8] + cmp r5, #0x0 + ldrlth r5, [r0, #0x4] + cmp r6, #0x0 + ldrltb r6, [r0, #0x9] + ldr r12, [sp, #0x20] + mov r2, r5 + str r0, [sp, #0x0] + mov r0, r7 + mov r1, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3980 +FUN_020C3980: ; 0x020C3980 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r5 + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C39CC +FUN_020C39CC: ; 0x020C39CC + stmdb sp!, {r4-r8,lr} + mov r6, r0 + bl FUN_020C241C + mov r5, #0x0 + mov r7, r5 +_020C39E0: + mov r0, r5 + bl FUN_020C2208 + movs r4, r0 + beq _020C3A58 + ldrb r1, [r4, #0x0] + mov r0, r5 + bl FUN_020C1160 + ldrh r1, [r4, #0x2] + mov r0, r5 + bl FUN_020C1148 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020C3A58 + cmp r6, #0x0 + beq _020C3A58 + ldrb r0, [r4, #0x0] + mov r8, r7 + cmp r0, #0x0 + ble _020C3A58 +_020C3A2C: + ldr r2, [r4, #0x4] + mov r0, r5 + mov r1, r6 + bl FUN_020C10B4 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldrb r0, [r4, #0x0] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C3A2C +_020C3A58: + add r5, r5, #0x1 + cmp r5, #0x20 + blt _020C39E0 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3A6C +FUN_020C3A6C: ; 0x020C3A6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020C3A9C ; =UNK_021D2904 + mov r1, r5 + bl FUN_020ADBE8 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C3A9C: .word UNK_021D2904 + + arm_func_start FUN_020C3AA0 +FUN_020C3AA0: ; 0x020C3AA0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + mov r1, #0x0 + bl FUN_020ADA98 + movs r5, r0 + beq _020C3B04 +_020C3AC8: + mov r0, r8 + mov r1, r5 + bl FUN_020ADA98 + ldr r1, [r5, #0x8] + mov r4, r0 + cmp r1, r7 + bne _020C3AF8 + mov r0, r8 + mov r1, r5 + bl FUN_020ADAB0 + mov r0, r5 + bl FUN_020C3A6C +_020C3AF8: + mov r5, r4 + cmp r4, #0x0 + bne _020C3AC8 +_020C3B04: + mov r0, r6 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3B10 +FUN_020C3B10: ; 0x020C3B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + sub r1, r1, #0x1 + str r1, [r0, #0x120] + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1674 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3B4C +FUN_020C3B4C: ; 0x020C3B4C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x110] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + bl FUN_020C3B10 + ldr r1, [r4, #0x164] + mov r0, r4 + blx r1 + ldr r0, _020C3BA8 ; =UNK_021D2DF0 + mov r1, r4 + bl FUN_020C3AA0 + ldr r0, _020C3BAC ; =UNK_021D2900 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020C3B9C + mov r1, r4 + add r0, r0, #0x4e0 + bl FUN_020C3AA0 +_020C3B9C: + mov r0, r4 + bl FUN_020C3C4C + ldmia sp!, {r4,pc} + .balign 4 +_020C3BA8: .word UNK_021D2DF0 +_020C3BAC: .word UNK_021D2900 + + arm_func_start FUN_020C3BB0 +FUN_020C3BB0: ; 0x020C3BB0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_LockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020C3BDC + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_LockMutex +_020C3BDC: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3BF4 + mov r0, r4 + bl FUN_020C1430 +_020C3BF4: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3C10 + ldr r1, [r4, #0x16c] + mov r0, r4 + blx r1 +_020C3C10: + mov r0, r4 + bl FUN_020C3B4C + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_UnlockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_UnlockMutex + ldmia sp!, {r4,pc} + .balign 4 +_020C3C40: .word UNK_021D2DD8 +_020C3C44: .word UNK_021D2900 +_020C3C48: .word 0x000004C8 + + arm_func_start FUN_020C3C4C +FUN_020C3C4C: ; 0x020C3C4C + ldr r2, [r0, #0x14c] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x14c] + ldr r1, [r0, #0x110] + bic r1, r1, #0x1 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x4 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x2 + str r1, [r0, #0x110] + bx lr + + arm_func_start FUN_020C3C88 +FUN_020C3C88: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, _020C3D94 ; =UNK_021D2DFC + mov r7, #0x0 + ldr r4, _020C3D98 ; =UNK_02103BAC +_020C3C9C: + ldr r1, [r5, #0x110] + mov r0, r1, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3D7C + ldr r0, [r5, #0x114] + cmp r0, #0x0 + bne _020C3CC4 + mov r0, r5 + bl FUN_020C3BB0 + b _020C3D7C +_020C3CC4: + mov r0, r1, lsl #0x1d + movs r0, r0, asr #0x1f + beq _020C3CFC + ldr r0, [r5, #0x118] + cmp r0, #0x0 + beq _020C3CFC + mov r0, r5 + bl FUN_020C1458 + ldr r0, [r5, #0x110] + orr r0, r0, #0x2 + str r0, [r5, #0x110] + ldr r0, [r5, #0x110] + bic r0, r0, #0x4 + str r0, [r5, #0x110] +_020C3CFC: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DF4 + ldr r1, [r5, #0x154] + add r0, r5, #0xe8 + mov r1, r1, lsl #0x1 + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0x1 + ldrsh r1, [r4, r0] + ldr r0, [r5, #0x158] + add r6, r1, r6 + cmp r6, r0 + beq _020C3D54 + mov r0, r5 + mov r1, r6 + bl FUN_020C13C4 + str r6, [r5, #0x158] +_020C3D54: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1c + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C3D7C + mov r0, r5 + bl FUN_020C3BB0 +_020C3D7C: + add r7, r7, #0x1 + cmp r7, #0x4 + add r5, r5, #0x170 + blt _020C3C9C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3D94: .word UNK_021D2DFC +_020C3D98: .word UNK_02103BAC + + arm_func_start FUN_020C3D9C +FUN_020C3D9C: + cmp r1, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r2, [r0, #0x1c] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + mov r2, #0xc + mul r2, r1, r2 + add r3, r0, #0x20 + ldr r1, [r3, r2] + mvn r0, #0x0 + cmp r1, r0 + add r0, r3, r2 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020C3DDC +FUN_020C3DDC: + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + cmp r1, r0 + movge r0, #0x1 + movlt r0, #0x0 + bx lr + + arm_func_start FUN_020C3DF4 +FUN_020C3DF4: ; 0x020C3DF4 + ldr r2, [r0, #0x8] + ldr r1, [r0, #0xc] + cmp r2, r1 + addlt r1, r2, #0x1 + strlt r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020C3E0C +FUN_020C3E0C: + stmdb sp!, {r4,lr} + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x8] + cmp r2, r1 + ldrge r0, [r0, #0x4] + ldmgeia sp!, {r4,pc} + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x4] + sub r0, r0, r4 + mul r0, r2, r0 + bl _s32_div_f + add r0, r4, r0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C3E40 +FUN_020C3E40: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_020C3E0C + str r0, [r6, #0x0] + str r5, [r6, #0x4] + str r4, [r6, #0xc] + mov r0, #0x0 + str r0, [r6, #0x8] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3E6C +FUN_020C3E6C: ; 0x020C3E6C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0xc] + ldr r1, [r0, #0xc] + str r1, [r0, #0x8] + bx lr diff --git a/arm9/asm/unk_020AF030.s b/arm9/asm/unk_020AF030.s deleted file mode 100644 index ffbbdd7c..00000000 --- a/arm9/asm/unk_020AF030.s +++ /dev/null @@ -1,26267 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern GXi_DmaId - .extern UNK_02103BAC - .extern UNK_021064B8 - .extern UNK_021064BC - .extern UNK_021064C0 - .extern UNK_021064C4 - - .section .rodata - - .global UNK_020FF864 -UNK_020FF864: ; 0x020FF864 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF894 -UNK_020FF894: ; 0x020FF894 - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - - .global UNK_020FF8AC -UNK_020FF8AC: ; 0x020FF8AC - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - - .global UNK_020FF8C4 -UNK_020FF8C4: ; 0x020FF8C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - - .global UNK_020FF8D0 -UNK_020FF8D0: ; 0x020FF8D0 - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - - .global UNK_020FF8D8 -UNK_020FF8D8: ; 0x020FF8D8 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - - .global UNK_020FF8F8 -UNK_020FF8F8: ; 0x020FF8F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020FF928 -UNK_020FF928: ; 0x020FF928 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK_020FF958 -UNK_020FF958: ; 0x020FF958 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF970 -UNK_020FF970: ; 0x020FF970 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 - .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 - - .global UNK_020FF990 -UNK_020FF990: ; 0x020FF990 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 - - .global UNK_020FF9D0 -UNK_020FF9D0: ; 0x020FF9D0 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F - .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F - - .global UNK_020FF9F0 -UNK_020FF9F0: ; 0x020FF9F0 - .byte 0x04 - - .global UNK_020FF9F1 -UNK_020FF9F1: ; 0x020FF9F1 - .byte 0x05 - - .global UNK_020FF9F2 -UNK_020FF9F2: ; 0x020FF9F2 - .byte 0x07 - - .global UNK_020FF9F3 -UNK_020FF9F3: ; 0x020FF9F3 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA14 -UNK_020FFA14: ; 0x020FFA14 - .byte 0x04 - - .global UNK_020FFA15 -UNK_020FFA15: ; 0x020FFA15 - .byte 0x05 - - .global UNK_020FFA16 -UNK_020FFA16: ; 0x020FFA16 - .byte 0x07 - - .global UNK_020FFA17 -UNK_020FFA17: ; 0x020FFA17 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA38 -UNK_020FFA38: ; 0x020FFA38 - .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, - .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, - .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, - .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, - .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, - .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, - .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, - .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, - .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, - .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, - .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, - .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, - .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, - .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, - .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, - .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, - .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, - .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, - .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, - .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, - .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, - .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, - .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, - .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, - .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, - .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, - .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, - .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, - .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, - .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, - .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, - .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, - .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, - .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, - .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, - .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, - .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, - .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, - .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, - .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, - .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, - .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, - .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, - .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, - .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, - .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, - .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, - .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, - .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, - .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, - .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, - .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, - .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, - .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, - .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, - .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, - .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, - .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, - .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, - .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, - .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, - .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, - .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, - .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, - .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, - .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, - .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, - .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, - .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, - .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, - .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, - .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, - .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, - .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, - .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, - .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, - .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, - .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, - .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, - .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, - .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, - .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, - .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, - .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, - .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, - .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, - .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, - .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, - .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, - .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, - .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, - .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, - .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, - .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, - .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, - .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, - .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, - .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, - .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, - .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, - .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, - .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, - .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, - .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, - .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, - .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, - .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, - .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, - .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, - .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, - .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, - .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, - .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, - .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, - .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, - .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, - .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, - .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, - .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, - .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, - .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, - .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, - .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, - .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, - .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, - .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, - .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, - .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, - .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, - .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, - .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, - .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, - .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, - .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, - .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, - .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, - .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, - .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, - .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, - .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, - .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, - .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, - .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, - .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, - .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, - .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, - .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, - .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, - .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, - .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, - .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, - .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, - .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, - .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, - .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, - .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, - .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, - .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, - .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, - .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, - .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, - .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, - .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, - .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, - .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, - .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, - .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, - .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, - .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, - .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, - .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, - .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, - .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, - .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, - .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, - .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, - .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, - .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, - .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, - .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, - .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, - .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, - .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, - .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, - .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, - .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, - .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, - .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, - .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, - .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, - .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, - .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, - .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, - .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, - .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, - .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, - .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, - .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, - .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, - .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, - .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, - .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, - .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, - .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, - .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, - .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, - .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, - .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, - .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, - .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, - .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, - .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, - .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, - .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, - .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, - .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, - .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, - .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, - .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, - .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, - .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, - .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, - .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, - .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, - .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, - .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, - .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, - .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, - .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, - .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, - .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, - .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, - .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, - .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, - .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, - .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, - .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, - .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, - .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, - .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, - .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, - .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, - .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, - .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, - .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, - .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, - .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, - .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, - .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, - .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, - .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, - .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, - .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, - .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, - .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, - .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, - .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, - .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, - .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, - .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, - .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, - .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, - .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, - .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, - .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, - .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, - .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, - .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, - .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, - .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, - .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, - .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, - .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, - .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, - .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, - .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, - .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, - .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, - .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, - .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, - .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, - .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, - .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, - .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, - .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, - .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, - .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, - .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, - .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, - .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, - .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, - .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, - .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, - .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, - .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, - .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, - .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, - .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, - .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, - .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, - .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, - .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, - .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, - .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, - .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, - .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, - .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, - .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, - .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, - .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, - .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, - .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, - .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, - .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, - .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, - .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, - .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, - .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, - .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, - .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, - .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, - .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, - .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, - .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, - .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, - .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, - .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, - .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, - .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, - .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, - .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, - .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, - .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, - .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, - .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, - .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, - .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, - .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, - .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, - .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, - .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, - .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, - .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, - .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, - .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, - .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, - .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, - .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, - .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, - .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, - .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, - .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, - .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, - .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, - .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, - .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, - .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, - .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, - .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, - .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, - .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, - .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, - .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, - .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, - .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, - .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, - .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, - .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, - .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, - .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, - .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, - .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, - .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, - .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, - .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, - .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, - .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, - .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, - .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, - .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, - .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, - .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, - .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, - .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, - .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, - .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, - .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, - .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, - .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, - .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, - .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, - .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, - .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, - .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, - .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, - .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, - .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, - .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, - .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, - .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, - .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, - .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, - .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, - .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, - .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, - .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, - .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, - .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, - .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, - .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, - .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, - .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, - .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, - .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, - .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, - .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, - .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, - .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, - .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, - .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, - .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, - .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, - .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, - .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, - .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, - .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, - .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, - .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, - .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, - .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, - .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, - .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, - .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, - .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, - .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, - .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, - .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, - .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, - .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, - .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, - .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, - .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, - .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, - .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, - .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, - .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, - .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, - .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, - .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, - .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, - .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, - .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, - .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, - .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, - .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, - .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, - .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, - .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, - .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, - .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, - .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, - .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, - .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, - .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, - .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, - .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, - .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, - .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, - .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, - .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, - .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, - .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, - .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, - .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, - .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, - .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, - .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, - .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, - .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, - .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, - .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, - .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, - .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, - .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, - .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, - .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, - .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, - .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, - .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, - .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, - .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, - .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, - .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, - .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, - .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, - .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, - .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, - .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, - .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, - .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, - .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, - .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, - .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, - .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, - .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, - .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, - .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, - .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, - .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, - .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, - .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, - .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, - .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, - .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, - .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, - .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, - .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, - .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, - .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, - .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, - .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, - .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, - .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, - .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, - .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, - .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, - .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, - .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, - .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, - .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, - .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, - .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, - .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, - .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, - .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, - .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, - .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, - .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, - .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, - .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, - .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, - .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, - .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, - .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, - .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, - .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, - .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, - .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, - .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, - .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, - .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, - .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, - .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, - .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, - .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, - .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, - .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, - .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, - .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, - .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, - .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, - .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, - .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, - .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, - .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, - .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, - .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, - .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, - .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, - .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, - .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, - .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, - .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, - .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, - .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, - .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, - .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, - .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, - .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, - .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, - .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, - .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, - .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, - .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, - .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, - .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, - .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, - .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, - .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, - .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, - .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, - .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, - .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, - .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, - .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, - .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, - .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, - .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, - .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, - .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, - .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, - .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, - .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, - .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, - .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, - .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, - .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, - .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, - .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, - .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, - .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, - .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, - .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, - .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, - .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, - .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, - .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, - .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, - .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, - .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, - .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, - .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, - .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, - .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, - .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, - .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, - .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, - .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, - .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, - .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, - .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, - .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, - .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, - .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, - .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, - .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, - .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, - .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, - .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, - .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, - .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, - .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, - .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, - .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, - .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, - .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, - .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, - .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, - .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, - .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, - .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, - .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, - .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, - .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, - .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, - .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, - .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, - .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, - .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, - .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, - .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, - .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, - .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, - .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, - .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, - .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, - .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, - .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, - .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, - .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, - .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, - .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, - .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, - .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, - .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, - .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, - .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, - .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, - .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, - .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, - .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, - .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, - .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, - .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, - .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, - .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, - .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, - .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, - .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, - .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, - .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, - .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, - .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, - .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, - .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, - .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, - .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, - .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, - .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, - .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, - .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, - .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, - .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, - .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, - .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, - .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, - .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, - .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, - .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, - .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, - .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, - .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, - .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, - .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, - .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, - .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, - .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, - .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, - .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, - .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, - .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, - .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, - .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, - .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, - .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, - .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, - .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, - .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, - .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, - .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, - .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, - .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, - .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, - .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, - .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, - .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, - .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, - .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, - .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, - .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, - .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, - .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, - .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, - .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, - .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, - .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, - .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, - .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, - .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, - .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, - .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, - .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, - .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, - .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, - .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, - .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, - .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, - .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, - .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, - .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, - .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, - .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, - .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, - .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, - .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, - .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, - .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, - .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, - .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, - .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, - .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, - .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, - .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, - .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, - .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, - .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, - .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, - .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, - .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, - .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, - .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, - .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, - .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, - .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, - .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, - .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, - .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, - .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, - .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, - .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, - .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, - .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, - .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, - .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, - .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, - .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, - .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, - .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, - .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, - .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, - .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, - .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, - .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, - .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, - .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, - .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, - .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, - .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, - .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, - .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, - .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, - .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, - .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, - .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, - .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, - .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, - .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, - .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, - .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, - .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, - .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, - .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, - .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, - .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, - .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, - .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, - .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, - .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, - .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, - .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, - .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, - .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, - .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, - .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, - .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, - .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, - .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, - .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, - .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, - .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, - .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, - .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, - .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, - .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, - .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, - .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, - .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, - .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, - .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, - .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, - .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, - .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, - .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, - .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, - .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, - .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, - .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, - .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, - .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, - .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, - .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, - .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, - .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, - .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, - .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, - .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, - .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, - .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, - .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, - .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, - .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, - .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, - .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, - .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, - .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, - .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, - .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, - .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, - .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, - .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, - .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, - .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, - .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, - .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, - .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, - .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, - .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, - .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, - .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, - .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, - .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, - .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, - .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, - .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, - .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, - .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, - .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, - .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, - .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, - .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, - .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, - .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, - .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, - .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, - .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, - .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, - .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, - .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, - .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, - .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, - .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, - .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, - .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, - .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, - .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, - .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, - .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, - .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, - .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, - .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, - .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, - .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, - .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, - .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, - .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, - .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, - .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, - .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, - .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, - .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, - .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, - .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, - .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, - .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, - .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, - .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, - .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, - .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, - .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, - .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, - .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, - .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, - .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, - .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, - .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, - .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, - .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, - .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, - .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, - .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, - .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, - .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, - .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, - .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, - .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, - .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, - .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, - .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, - .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, - .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, - .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, - .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, - .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, - .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, - .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, - .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, - .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, - .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, - .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, - .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, - .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, - .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, - .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, - .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, - .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, - .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, - .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, - .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, - .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, - .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, - .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, - .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, - .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, - .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, - .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, - .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, - .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, - .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, - .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, - .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, - .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, - .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, - .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, - .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, - .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, - .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, - .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, - .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, - .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, - .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, - .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, - .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, - .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, - .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, - .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, - .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, - .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, - .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, - .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, - .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, - .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, - .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, - .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, - .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, - .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, - .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, - .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, - .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, - .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, - .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, - .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, - .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, - .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 - - .section .data - - .global UNK_0210655C -UNK_0210655C: ; 0x0210655C - .word FUN_020B1088 - .word FUN_020B1098 - .word 0 - .word 0 - .word 0 - - .global UNK_02106570 -UNK_02106570: ; 0x02106570 - .short -2 - - .balign 4, 0 - .global UNK_02106574 -UNK_02106574: ; 0x02106574 - .word -1 - - .global UNK_02106578 -UNK_02106578: ; 0x02106578 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106590 -UNK_02106590: ; 0x02106590 - .byte 0x00, 0xF0, 0xFF, 0xFF - - .global UNK_02106594 -UNK_02106594: ; 0x02106594 - .byte 0x05, 0x00, 0x00, 0x00 - - .global UNK_02106598 -UNK_02106598: ; 0x02106598 - .word FUN_020BE5A0 - - .global UNK_0210659C -UNK_0210659C: ; 0x0210659C - .word FUN_020BDA70 - - .global UNK_021065A0 -UNK_021065A0: ; 0x021065A0 - .word FUN_020BDF38 - - .global UNK_021065A4 -UNK_021065A4: ; 0x021065A4 - .word FUN_020BE334 - - .global UNK_021065A8 -UNK_021065A8: ; 0x021065A8 - .word FUN_020BDB40 - - .global UNK_021065AC -UNK_021065AC: ; 0x021065AC - .word FUN_020B8640 - - .global UNK_021065B0 -UNK_021065B0: ; 0x021065B0 - .word FUN_020B86B0 - - .global UNK_021065B4 -UNK_021065B4: ; 0x021065B4 - .word FUN_020B8A08 - - .global UNK_021065B8 -UNK_021065B8: ; 0x021065B8 - .byte 0x4D, 0x00, 0x41, 0x4D - - .global UNK_021065BC -UNK_021065BC: ; 0x021065BC - .word FUN_020BDC0C - .byte 0x4D, 0x00, 0x50, 0x54 - .word FUN_020BE4F0 - .byte 0x4D, 0x00, 0x41, 0x54 - .word FUN_020BDF84 - .byte 0x56, 0x00, 0x41, 0x56 - .word FUN_020BE5E0 - .byte 0x4A, 0x00, 0x41, 0x43 - .word FUN_020BDAB4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106608 -UNK_02106608: ; 0x02106608 - .word FUN_020BE668 - .word FUN_020BEE3C - .word FUN_020BF2FC - - .global UNK_02106614 -UNK_02106614: ; 0x02106614 - .word FUN_020BE62C - .word FUN_020BECEC - .word FUN_020BF0D4 - - .global UNK_02106620 -UNK_02106620: ; 0x02106620 - .word FUN_020BE6E4 - .word FUN_020BEF10 - .word FUN_020BF42C - .word FUN_020BFA9C - - .global UNK_02106630 -UNK_02106630: ; 0x02106630 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_02106634 -UNK_02106634: ; 0x02106634 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106638 -UNK_02106638: ; 0x02106638 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_0210663C -UNK_0210663C: ; 0x0210663C - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106640 -UNK_02106640: ; 0x02106640 - .word FUN_020BA58C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106650 -UNK_02106650: ; 0x02106650 - .word FUN_020BA438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106660 -UNK_02106660: ; 0x02106660 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - - .global UNK_021066A0 -UNK_021066A0: ; 0x021066A0 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066A4 -UNK_021066A4: ; 0x021066A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066AC -UNK_021066AC: ; 0x021066AC - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_021066D0 -UNK_021066D0: ; 0x021066D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066DC -UNK_021066DC: ; 0x021066DC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066E8 -UNK_021066E8: ; 0x021066E8 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066EC -UNK_021066EC: ; 0x021066EC - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066F4 -UNK_021066F4: ; 0x021066F4 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_02106718 -UNK_02106718: ; 0x02106718 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106724 -UNK_02106724: ; 0x02106724 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106730 -UNK_02106730: ; 0x02106730 - .word FUN_020BAC70 - .word FUN_020BAC48 - .word FUN_020BAAC0 - .word FUN_020BA9EC - .word FUN_020BA50C - .word FUN_020BA3C4 - .word FUN_020B9F84 - .word FUN_020B9C54 - .word FUN_020B98C4 - .word FUN_020B9258 - .word FUN_020B9178 - .word FUN_020B9110 - .word FUN_020B8DF0 - .word FUN_020B8A60 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021067B0 -UNK_021067B0: ; 0x021067B0 - .word FUN_020BEBD8 - .word FUN_020BEB00 - .word FUN_020BEA84 - .word FUN_020BEA3C - .word FUN_020BE954 - .word FUN_020BE894 - .word FUN_020BE850 - .word FUN_020BE82C - - .global UNK_021067D0 -UNK_021067D0: ; 0x021067D0 - .word FUN_020BF988 - .word FUN_020BF894 - .word FUN_020BF810 - .word FUN_020BF7C8 - .word FUN_020BF6C8 - .word FUN_020BF5E8 - .word FUN_020BF598 - .word FUN_020BF574 - - .global UNK_021067F0 -UNK_021067F0: ; 0x021067F0 - .word FUN_020BFFD4 - .word FUN_020BFEEC - .word FUN_020BFE68 - .word FUN_020BFE0C - .word FUN_020BFD38 - .word FUN_020BFC8C - .word FUN_020BFC4C - .word FUN_020BFC28 - - .section .bss - - .global UNK_021CCD6C -UNK_021CCD6C: ; 0x021CCD6C - .space 0x4 - - .global UNK_021CCD70 -UNK_021CCD70: ; 0x021CCD70 - .space 0x4 - - .global UNK_021CCD74 -UNK_021CCD74: ; 0x021CCD74 - .space 0x14 - - .global UNK_021CCD88 -UNK_021CCD88: ; 0x021CCD88 - .space 0x4 - - .global UNK_021CCD8C -UNK_021CCD8C: ; 0x021CCD8C - .space 0x10 - - .global UNK_021CCD9C -UNK_021CCD9C: ; 0x021CCD9C - .space 0x4 - - .global UNK_021CCDA0 -UNK_021CCDA0: ; 0x021CCDA0 - .space 0x100 - - .global UNK_021CCEA0 -UNK_021CCEA0: ; 0x021CCEA0 - .space 0x400 - - .global UNK_021CD2A0 -UNK_021CD2A0: ; 0x021CD2A0 - .space 0x40 - - .global UNK_021CD2E0 -UNK_021CD2E0: ; 0x021CD2E0 - .space 0x100 - - .global UNK_021CD3E0 -UNK_021CD3E0: ; 0x021CD3E0 - .space 0x400 - - .global UNK_021CD7E0 -UNK_021CD7E0: ; 0x021CD7E0 - .space 0x40 - - .global UNK_021CD820 -UNK_021CD820: ; 0x021CD820 - .space 0x100 - - .global UNK_021CD920 -UNK_021CD920: ; 0x021CD920 - .space 0x400 - - .global UNK_021CDD20 -UNK_021CDD20: ; 0x021CDD20 - .space 0x40 - - .global UNK_021CDD60 -UNK_021CDD60: ; 0x021CDD60 - .space 0x4 - - .global UNK_021CDD64 -UNK_021CDD64: ; 0x021CDD64 - .space 0x4 - - .global UNK_021CDD68 -UNK_021CDD68: ; 0x021CDD68 - .space 0x4 - - .global UNK_021CDD6C -UNK_021CDD6C: ; 0x021CDD6C - .space 0x4 - - .global UNK_021CDD70 -UNK_021CDD70: ; 0x021CDD70 - .space 0x4 - - .global UNK_021CDD74 -UNK_021CDD74: ; 0x021CDD74 - .space 0x80 - - .global UNK_021CDDF4 -UNK_021CDDF4: ; 0x021CDDF4 - .space 0x4 - - .global UNK_021CDDF8 -UNK_021CDDF8: ; 0x021CDDF8 - .space 0xfc - - .global UNK_021CDEF4 -UNK_021CDEF4: ; 0x021CDEF4 - .space 0x10 - - .global UNK_021CDF04 -UNK_021CDF04: ; 0x021CDF04 - .space 0x4 - - .global UNK_021CDF08 -UNK_021CDF08: ; 0x021CDF08 - .space 0x2ec - - .global UNK_021CE1F4 -UNK_021CE1F4: ; 0x021CE1F4 - .space 0x300 - - .global UNK_021CE4F4 -UNK_021CE4F4: ; 0x021CE4F4 - .space 0x400 - - .global UNK_021CE8F4 -UNK_021CE8F4: ; 0x021CE8F4 - .space 0x4 - - .global UNK_021CE8F8 -UNK_021CE8F8: ; 0x021CE8F8 - .space 0x404 - - .global UNK_021CECFC -UNK_021CECFC: ; 0x021CECFC - .space 0x4 - - .global UNK_021CED00 -UNK_021CED00: ; 0x021CED00 - .space 0x4 - - .global UNK_021CED04 -UNK_021CED04: ; 0x021CED04 - .space 0x4 - - .global UNK_021CED08 -UNK_021CED08: ; 0x021CED08 - .space 0x4 - - .global UNK_021CED0C -UNK_021CED0C: ; 0x021CED0C - .space 0x4 - - .global UNK_021CED10 -UNK_021CED10: ; 0x021CED10 - .space 0x4 - - .global UNK_021CED14 -UNK_021CED14: ; 0x021CED14 - .space 0x4 - - .global UNK_021CED18 -UNK_021CED18: ; 0x021CED18 - .space 0x8 - - .global UNK_021CED20 -UNK_021CED20: ; 0x021CED20 - .space 0x44 - - .global UNK_021CED64 -UNK_021CED64: ; 0x021CED64 - .space 0x34 - - .global UNK_021CED98 -UNK_021CED98: ; 0x021CED98 - .space 0x28 - - .global UNK_021CEDC0 -UNK_021CEDC0: ; 0x021CEDC0 - .space 0x14 - - .global UNK_021CEDD4 -UNK_021CEDD4: ; 0x021CEDD4 - .space 0x24 - - .global UNK_021CEDF8 -UNK_021CEDF8: ; 0x021CEDF8 - .space 0xc - - .global UNK_021CEE04 -UNK_021CEE04: ; 0x021CEE04 - .space 0x14 - - .global UNK_021CEE18 -UNK_021CEE18: ; 0x021CEE18 - .space 0x30 - - .global UNK_021CEE48 -UNK_021CEE48: ; 0x021CEE48 - .space 0x30 - - .global UNK_021CEE78 -UNK_021CEE78: ; 0x021CEE78 - .space 0xe0 - - .global UNK_021CEF58 -UNK_021CEF58: ; 0x021CEF58 - .space 0xc - - .global UNK_021CEF64 -UNK_021CEF64: ; 0x021CEF64 - .space 0xc - - .global UNK_021CEF70 -UNK_021CEF70: ; 0x021CEF70 - .space 0xc - - .global UNK_021CEF7C -UNK_021CEF7C: ; 0x021CEF7C - .space 0x4 - - .global UNK_021CEF80 -UNK_021CEF80: ; 0x021CEF80 - .space 0xe00 - - .global UNK_021CFD80 -UNK_021CFD80: ; 0x021CFD80 - .space 0x4 - - .global UNK_021CFD84 -UNK_021CFD84: ; 0x021CFD84 - .space 0x4 - - .global UNK_021CFD88 -UNK_021CFD88: ; 0x021CFD88 - .space 0x4 - - .global UNK_021CFD8C -UNK_021CFD8C: ; 0x021CFD8C - .space 0x4 - - .global UNK_021CFD90 -UNK_021CFD90: ; 0x021CFD90 - .space 0x4 - - .global UNK_021CFD94 -UNK_021CFD94: ; 0x021CFD94 - .space 0x2ba - - .global UNK_021D004E -UNK_021D004E: ; 0x021D004E - .space 0x332 - - .global UNK_021D0380 -UNK_021D0380: ; 0x021D0380 - .space 0x40 - - .global UNK_021D03C0 -UNK_021D03C0: ; 0x021D03C0 - .space 0xb42 - - .global UNK_021D0F02 -UNK_021D0F02: ; 0x021D0F02 - .space 0xd7e - - .global UNK_021D1C80 -UNK_021D1C80: ; 0x021D1C80 - .space 0x4 - - .global UNK_021D1C84 -UNK_021D1C84: ; 0x021D1C84 - .space 0x4 - - .global UNK_021D1C88 -UNK_021D1C88: ; 0x021D1C88 - .space 0x4 - - .global UNK_021D1C8C -UNK_021D1C8C: ; 0x021D1C8C - .space 0x4 - - .global UNK_021D1C90 -UNK_021D1C90: ; 0x021D1C90 - .space 0x4 - - .global UNK_021D1C94 -UNK_021D1C94: ; 0x021D1C94 - .space 0x4 - - .global UNK_021D1C98 -UNK_021D1C98: ; 0x021D1C98 - .space 0xc - - .global UNK_021D1CA4 -UNK_021D1CA4: ; 0x021D1CA4 - .space 0xc - - .global UNK_021D1CB0 -UNK_021D1CB0: ; 0x021D1CB0 - .space 0x4 - - .global UNK_021D1CB4 -UNK_021D1CB4: ; 0x021D1CB4 - .space 0x4 - - .global UNK_021D1CB8 -UNK_021D1CB8: ; 0x021D1CB8 - .space 0x4 - - .global UNK_021D1CBC -UNK_021D1CBC: ; 0x021D1CBC - .space 0x140 - - .global UNK_021D1DFC -UNK_021D1DFC: ; 0x021D1DFC - .space 0xc - - .global UNK_021D1E08 -UNK_021D1E08: ; 0x021D1E08 - .space 0xc - - .global UNK_021D1E14 -UNK_021D1E14: ; 0x021D1E14 - .space 0x440 - - .global UNK_021D2254 -UNK_021D2254: ; 0x021D2254 - .space 0x8 - - .global UNK_021D225C -UNK_021D225C: ; 0x021D225C - .space 0x10 - - .global UNK_021D226C -UNK_021D226C: ; 0x021D226C - .space 0x4 - - .global UNK_021D2270 -UNK_021D2270: ; 0x021D2270 - .space 0x4 - - .global UNK_021D2274 -UNK_021D2274: ; 0x021D2274 - .space 0x460 - - .global UNK_021D26D4 -UNK_021D26D4: ; 0x021D26D4 - .space 0x4 - - .global UNK_021D26D8 -UNK_021D26D8: ; 0x021D26D8 - .space 0xc - - .global UNK_021D26E4 -UNK_021D26E4: ; 0x021D26E4 - .space 0x40 - - .global UNK_021D2724 -UNK_021D2724: ; 0x021D2724 - .space 0x80 - - .global UNK_021D27A4 -UNK_021D27A4: ; 0x021D27A4 - .space 0x4 - - .global UNK_021D27A8 -UNK_021D27A8: ; 0x021D27A8 - .space 0x4 - - .global UNK_021D27AC -UNK_021D27AC: ; 0x021D27AC - .space 0x20 - - .global UNK_021D27CC -UNK_021D27CC: ; 0x021D27CC - .space 0x54 - - .global UNK_021D2820 -UNK_021D2820: ; 0x021D2820 - .space 0xa0 - - .global UNK_021D28C0 -UNK_021D28C0: ; 0x021D28C0 - .space 0x4 - - .global UNK_021D28C4 -UNK_021D28C4: ; 0x021D28C4 - .space 0x3c - - .global UNK_021D2900 -UNK_021D2900: ; 0x021D2900 - .space 0x4 - - .global UNK_021D2904 -UNK_021D2904: ; 0x021D2904 - .space 0x4d4 - - .global UNK_021D2DD8 -UNK_021D2DD8: ; 0x021D2DD8 - .space 0x18 - - .global UNK_021D2DF0 -UNK_021D2DF0: ; 0x021D2DF0 - .space 0xc - - .global UNK_021D2DFC -UNK_021D2DFC: ; 0x021D2DFC - .space 0x5c0 - - .text - - arm_func_start GXS_LoadOBJ_2 -GXS_LoadOBJ_2: - ldr ip, _020AF038 ; =GXS_LoadOBJ - bx r12 - .balign 4 -_020AF038: .word GXS_LoadOBJ - - arm_func_start GXS_LoadOAM_2 -GXS_LoadOAM_2: ; 0x020AF03C - ldr ip, _020AF044 ; =GXS_LoadOAM - bx r12 - .balign 4 -_020AF044: .word GXS_LoadOAM - - arm_func_start FUN_020AF048 -FUN_020AF048: ; 0x020AF048 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF074 -FUN_020AF074: ; 0x020AF074 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GXS_LoadBGPltt_2 -GXS_LoadBGPltt_2: ; 0x020AF0A0 - ldr ip, _020AF0A8 ; =GXS_LoadBGPltt - bx r12 - .balign 4 -_020AF0A8: .word GXS_LoadBGPltt - - arm_func_start GXS_LoadOBJPltt_2 -GXS_LoadOBJPltt_2: ; 0x020AF0AC - ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt - bx r12 - .balign 4 -_020AF0B4: .word GXS_LoadOBJPltt - - arm_func_start GXS_LoadBG3Scr_3 -GXS_LoadBG3Scr_3: ; 0x020AF0B8 - ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0C0: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_3 -GXS_LoadBG2Scr_3: ; 0x020AF0C4 - ldr ip, _020AF0CC ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0CC: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG3Scr_2 -GXS_LoadBG3Scr_2: ; 0x020AF0D0 - ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0D8: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_2 -GXS_LoadBG2Scr_2: ; 0x020AF0DC - ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0E4: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG1Scr_2 -GXS_LoadBG1Scr_2: ; 0x020AF0E8 - ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr - bx r12 - .balign 4 -_020AF0F0: .word GXS_LoadBG1Scr - - arm_func_start GXS_LoadBG0Scr_2 -GXS_LoadBG0Scr_2: ; 0x020AF0F4 - ldr ip, _020AF0FC ; =GXS_LoadBG0Scr - bx r12 - .balign 4 -_020AF0FC: .word GXS_LoadBG0Scr - - arm_func_start GXS_LoadBG3Char_2 -GXS_LoadBG3Char_2: ; 0x020AF100 - ldr ip, _020AF108 ; =GXS_LoadBG3Char - bx r12 - .balign 4 -_020AF108: .word GXS_LoadBG3Char - - arm_func_start GXS_LoadBG2Char_2 -GXS_LoadBG2Char_2: ; 0x020AF10C - ldr ip, _020AF114 ; =GXS_LoadBG2Char - bx r12 - .balign 4 -_020AF114: .word GXS_LoadBG2Char - - arm_func_start GXS_LoadBG1Char_2 -GXS_LoadBG1Char_2: ; 0x020AF118 - ldr ip, _020AF120 ; =GXS_LoadBG1Char - bx r12 - .balign 4 -_020AF120: .word GXS_LoadBG1Char - - arm_func_start GXS_LoadBG0Char_2 -GXS_LoadBG0Char_2: ; 0x020AF124 - ldr ip, _020AF12C ; =GXS_LoadBG0Char - bx r12 - .balign 4 -_020AF12C: .word GXS_LoadBG0Char - - arm_func_start GX_LoadOBJ_2 -GX_LoadOBJ_2: ; 0x020AF130 - ldr ip, _020AF138 ; =GX_LoadOBJ - bx r12 - .balign 4 -_020AF138: .word GX_LoadOBJ - - arm_func_start GX_LoadOAM_2 -GX_LoadOAM_2: ; 0x020AF13C - ldr ip, _020AF144 ; =GX_LoadOAM - bx r12 - .balign 4 -_020AF144: .word GX_LoadOAM - - arm_func_start FUN_020AF148 -FUN_020AF148: ; 0x020AF148 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF174 -FUN_020AF174: ; 0x020AF174 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GX_LoadBGPltt_2 -GX_LoadBGPltt_2: ; 0x020AF1A0 - ldr ip, _020AF1A8 ; =GX_LoadBGPltt - bx r12 - .balign 4 -_020AF1A8: .word GX_LoadBGPltt - - arm_func_start GX_LoadOBJPltt_2 -GX_LoadOBJPltt_2: ; 0x020AF1AC - ldr ip, _020AF1B4 ; =GX_LoadOBJPltt - bx r12 - .balign 4 -_020AF1B4: .word GX_LoadOBJPltt - - arm_func_start GX_LoadBG3Scr_3 -GX_LoadBG3Scr_3: ; 0x020AF1B8 - ldr ip, _020AF1C0 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1C0: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_3 -GX_LoadBG2Scr_3: ; 0x020AF1C4 - ldr ip, _020AF1CC ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1CC: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG3Scr_2 -GX_LoadBG3Scr_2: ; 0x020AF1D0 - ldr ip, _020AF1D8 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1D8: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_2 -GX_LoadBG2Scr_2: ; 0x020AF1DC - ldr ip, _020AF1E4 ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1E4: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG1Scr_2 -GX_LoadBG1Scr_2: ; 0x020AF1E8 - ldr ip, _020AF1F0 ; =GX_LoadBG1Scr - bx r12 - .balign 4 -_020AF1F0: .word GX_LoadBG1Scr - - arm_func_start GX_LoadBG0Scr_2 -GX_LoadBG0Scr_2: ; 0x020AF1F4 - ldr ip, _020AF1FC ; =GX_LoadBG0Scr - bx r12 - .balign 4 -_020AF1FC: .word GX_LoadBG0Scr - - arm_func_start GX_LoadBG3Char_2 -GX_LoadBG3Char_2: ; 0x020AF200 - ldr ip, _020AF208 ; =GX_LoadBG3Char - bx r12 - .balign 4 -_020AF208: .word GX_LoadBG3Char - - arm_func_start GX_LoadBG2Char_2 -GX_LoadBG2Char_2: ; 0x020AF20C - ldr ip, _020AF214 ; =GX_LoadBG2Char - bx r12 - .balign 4 -_020AF214: .word GX_LoadBG2Char - - arm_func_start GX_LoadBG1Char_2 -GX_LoadBG1Char_2: ; 0x020AF218 - ldr ip, _020AF220 ; =GX_LoadBG1Char - bx r12 - .balign 4 -_020AF220: .word GX_LoadBG1Char - - arm_func_start GX_LoadBG0Char_2 -GX_LoadBG0Char_2: ; 0x020AF224 - ldr ip, _020AF22C ; =GX_LoadBG0Char - bx r12 - .balign 4 -_020AF22C: .word GX_LoadBG0Char - - arm_func_start FUN_020AF230 -FUN_020AF230: ; 0x020AF230 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageDepth - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF25C -FUN_020AF25C: ; 0x020AF25C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageColor - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF288 -FUN_020AF288: ; 0x020AF288 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTexPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2B4 -FUN_020AF2B4: ; 0x020AF2B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTex - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTex - bl GX_EndLoadTex - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2E0 -FUN_020AF2E0: ; 0x020AF2E0 - ldrh r0, [r0, #0xc] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF2F4 -FUN_020AF2F4: ; 0x020AF2F4 - ldrh r1, [r0, #0xc] - ldr r0, [r0, #0x4] - cmp r1, r0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF30C -FUN_020AF30C: ; 0x020AF30C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r0 - add r0, r1, #0x1 - ldr r1, [r2, #0x4] - bl _u32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF334 -FUN_020AF334: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - add r3, r2, r3 - str r2, [sp, #0x0] - str r2, [sp, #0x8] - str r3, [sp, #0x4] - str r3, [sp, #0xc] - ldr r3, [r0, #0x0] - add r12, sp, #0x0 - cmp r3, #0x0 - beq _020AF418 - mov r6, #0x0 -_020AF364: - ldr r5, [r3, #0x0] - ldr r4, [r12, #0x4] - ldr r2, [r3, #0xc] - cmp r5, r4 - bne _020AF3B8 - ldr r4, [r3, #0x4] - add r4, r5, r4 - str r4, [sp, #0xc] - ldr r4, [r3, #0x8] - cmp r4, #0x0 - strne r2, [r4, #0xc] - streq r2, [r0, #0x0] - cmp r2, #0x0 - strne r4, [r2, #0x8] - ldr r4, [r1, #0x0] - cmp r4, #0x0 - strne r3, [r4, #0x8] - ldr r4, [r1, #0x0] - str r4, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF3B8: - ldr r5, [r3, #0x0] - ldr lr, [r3, #0x4] - ldr r4, [r12, #0x0] - add lr, r5, lr - cmp r4, lr - bne _020AF40C - str r5, [sp, #0x8] - ldr r5, [r3, #0x8] - ldr r4, [r3, #0xc] - cmp r5, #0x0 - strne r4, [r5, #0xc] - streq r4, [r0, #0x0] - cmp r4, #0x0 - strne r5, [r4, #0x8] - ldr lr, [r1, #0x0] - cmp lr, #0x0 - strne r3, [lr, #0x8] - ldr lr, [r1, #0x0] - str lr, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF40C: - mov r3, r2 - cmp r2, #0x0 - bne _020AF364 -_020AF418: - ldr r4, [r1, #0x0] - cmp r4, #0x0 - ldrne r2, [r4, #0xc] - strne r2, [r1, #0x0] - cmp r4, #0x0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [sp, #0x8] - mov r1, #0x0 - str r2, [r4, #0x0] - ldr r3, [sp, #0xc] - ldr r2, [sp, #0x8] - sub r2, r3, r2 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - strne r4, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [r4, #0xc] - str r1, [r4, #0x8] - str r4, [r0, #0x0] - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF488 -FUN_020AF488: - stmdb sp!, {r4-r10,lr} - ldr r4, [r0, #0x0] - ldr r9, [sp, #0x20] - cmp r4, #0x0 - mov r5, #0x0 - beq _020AF4EC - sub r12, r9, #0x1 - mvn lr, r12 -_020AF4A8: - cmp r9, #0x1 - ldrls r8, [r4, #0x0] - movls r6, r5 - movls r7, r3 - bls _020AF4D0 - ldr r7, [r4, #0x0] - add r6, r7, r12 - and r8, lr, r6 - sub r6, r8, r7 - add r7, r3, r6 -_020AF4D0: - ldr r10, [r4, #0x4] - cmp r10, r7 - movcs r5, r4 - bhs _020AF4EC - ldr r4, [r4, #0xc] - cmp r4, #0x0 - bne _020AF4A8 -_020AF4EC: - cmp r5, #0x0 - beq _020AF5B8 - cmp r6, #0x0 - beq _020AF54C - ldr r9, [r1, #0x0] - cmp r9, #0x0 - ldrne r3, [r9, #0xc] - strne r3, [r1, #0x0] - cmp r9, #0x0 - beq _020AF5B8 - ldr r4, [r5, #0x0] - mov r3, #0x0 - str r4, [r9, #0x0] - str r6, [r9, #0x4] - str r3, [r9, #0x8] - str r3, [r9, #0xc] - ldr r3, [r0, #0x0] - cmp r3, #0x0 - strne r9, [r3, #0x8] - ldr r4, [r0, #0x0] - mov r3, #0x0 - str r4, [r9, #0xc] - str r3, [r9, #0x8] - str r9, [r0, #0x0] -_020AF54C: - ldr r3, [r5, #0x4] - sub r3, r3, r7 - str r3, [r5, #0x4] - ldr r3, [r5, #0x0] - add r3, r3, r7 - str r3, [r5, #0x0] - ldr r3, [r5, #0x4] - cmp r3, #0x0 - bne _020AF5AC - ldr r4, [r5, #0x8] - ldr r3, [r5, #0xc] - cmp r4, #0x0 - strne r3, [r4, #0xc] - streq r3, [r0, #0x0] - cmp r3, #0x0 - strne r4, [r3, #0x8] - ldr r0, [r1, #0x0] - cmp r0, #0x0 - strne r5, [r0, #0x8] - ldr r3, [r1, #0x0] - mov r0, #0x0 - str r3, [r5, #0xc] - str r0, [r5, #0x8] - str r5, [r1, #0x0] -_020AF5AC: - str r8, [r2, #0x0] - mov r0, #0x1 - ldmia sp!, {r4-r10,pc} -_020AF5B8: - mov r0, #0x0 - str r0, [r2, #0x0] - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020AF5C4 -FUN_020AF5C4: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [sp, #0x0] - bl FUN_020AF488 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF5E0 -FUN_020AF5E0: ; 0x020AF5E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x0] - cmp lr, #0x0 - ldrne r12, [lr, #0xc] - strne r12, [r1, #0x0] - cmp lr, #0x0 - beq _020AF640 - str r2, [lr, #0x0] - str r3, [lr, #0x4] - mov r1, #0x0 - str r1, [lr, #0x8] - str r1, [lr, #0xc] - ldr r1, [r0, #0x0] - add sp, sp, #0x4 - cmp r1, #0x0 - strne lr, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [lr, #0xc] - str r1, [lr, #0x8] - str lr, [r0, #0x0] - mov r0, #0x1 - ldmia sp!, {pc} -_020AF640: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF64C -FUN_020AF64C: ; 0x020AF64C - stmdb sp!, {r4,lr} - subs lr, r1, #0x1 - mov r2, #0x0 - beq _020AF684 - mov r4, r0 -_020AF660: - add r12, r2, #0x1 - add r2, r0, r2, lsl #0x4 - add r3, r0, r12, lsl #0x4 - str r3, [r2, #0xc] - str r4, [r3, #0x8] - mov r2, r12 - cmp r12, lr - add r4, r4, #0x10 - blo _020AF660 -_020AF684: - mov r2, #0x0 - str r2, [r0, #0x8] - add r1, r0, r1, lsl #0x4 - str r2, [r1, #-0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AF698 -FUN_020AF698: ; 0x020AF698 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020AF6A4 -FUN_020AF6A4: ; 0x020AF6A4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x30 - ldr r6, _020AF884 ; =UNK_020FF864 - add r5, sp, #0x0 - ldmia r6!, {r0-r3} - mov r12, r5 - stmia r5!, {r0-r3} - ldmia r6!, {r0-r3} - stmia r5!, {r0-r3} - ldr r4, _020AF888 ; =UNK_021CCD6C - ldmia r6, {r0-r3} - stmia r5, {r0-r3} - ldr lr, [r4, #0x10] - ldr r1, [r4, #0xc] - add r0, lr, lr, lsr #0x1 - mov r4, lr, lsr #0x1 - sub r0, r1, r0 - mov r3, #0x0 -_020AF6EC: - cmp r3, #0x0 - beq _020AF6FC - cmp r3, #0x2 - bne _020AF734 -_020AF6FC: - ldr r2, [r12, #0x0] - cmp r2, #0x0 - beq _020AF734 - cmp lr, #0x0 - beq _020AF734 - ldr r1, [r12, #0x8] - cmp r2, lr - movhi r2, lr - add r1, r1, r2 - str r1, [r12, #0x8] - ldr r1, [r12, #0x0] - sub lr, lr, r2 - sub r1, r1, r2 - str r1, [r12, #0x0] -_020AF734: - add r3, r3, #0x1 - cmp r3, #0x4 - add r12, r12, #0xc - blo _020AF6EC - ldr r1, [sp, #0xc] - add r5, sp, #0x0 - sub r1, r1, r4 - str r1, [sp, #0xc] - mov r3, #0x0 -_020AF758: - ldr r2, [r5, #0x0] - cmp r2, #0x0 - beq _020AF790 - cmp r0, #0x0 - beq _020AF790 - ldr r1, [r5, #0x4] - cmp r2, r0 - movhi r2, r0 - add r1, r1, r2 - str r1, [r5, #0x4] - ldr r1, [r5, #0x0] - sub r0, r0, r2 - sub r1, r1, r2 - str r1, [r5, #0x0] -_020AF790: - add r3, r3, #0x1 - cmp r3, #0x4 - add r5, r5, #0xc - blo _020AF758 - ldr r0, _020AF888 ; =UNK_021CCD6C - bl FUN_020AF698 - ldr r0, _020AF88C ; =UNK_021CCD70 - bl FUN_020AF698 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, [r0, #0x18] - ldr r0, [r0, #0x14] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r3, [sp, #0x8] - ldr r1, _020AF888 ; =UNK_021CCD6C - cmp r3, #0x0 - str r0, [r1, #0x8] - beq _020AF7E8 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x0 - bl FUN_020AF5E0 -_020AF7E8: - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x8] - cmp r3, #0x0 - beq _020AF804 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF804: - ldr r3, [sp, #0x20] - cmp r3, #0x0 - beq _020AF820 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x40000 - bl FUN_020AF5E0 -_020AF820: - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x20] - cmp r3, #0x0 - add r2, r0, #0x40000 - beq _020AF840 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF840: - ldr r3, [sp, #0x28] - cmp r3, #0x0 - beq _020AF85C - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x60000 - bl FUN_020AF5E0 -_020AF85C: - ldr r3, [sp, #0x10] - cmp r3, #0x0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - add r2, r4, #0x20000 - bl FUN_020AF5E0 - add sp, sp, #0x30 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AF884: .word UNK_020FF864 -_020AF888: .word UNK_021CCD6C -_020AF88C: .word UNK_021CCD70 -_020AF890: .word UNK_021CCD74 - - arm_func_start FUN_020AF894 -FUN_020AF894: ; 0x020AF894 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020AF908 ; =0x7FFF0000 - ldr r1, _020AF90C ; =0x0000FFFF - and r2, r0, r2 - and r3, r0, r1 - mov r1, r2, lsr #0x10 - and r0, r0, #0x80000000 - mov r2, r3, lsl #0x3 - movs r3, r1, lsl #0x4 - mov r0, r0, lsr #0x1f - beq _020AF8FC - cmp r0, #0x0 - beq _020AF8DC - ldr r0, _020AF910 ; =UNK_021CCD70 - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 - b _020AF8E8 -_020AF8DC: - ldr r0, _020AF918 ; =UNK_021CCD6C - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 -_020AF8E8: - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x4 - moveq r0, #0x1 - ldmia sp!, {pc} -_020AF8FC: - mov r0, #0x2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AF908: .word 0x7FFF0000 -_020AF90C: .word 0x0000FFFF -_020AF910: .word UNK_021CCD70 -_020AF914: .word UNK_021CCD74 -_020AF918: .word UNK_021CCD6C - - arm_func_start FUN_020AF91C -FUN_020AF91C: ; 0x020AF91C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - moveq r5, #0x10 - addne r0, r0, #0xf - bicne r5, r0, #0xf - ldr r0, _020AF9B0 ; =0x0007FFF0 - mov r4, r1 - cmp r5, r0 - addcs sp, sp, #0x4 - movcs r0, #0x0 - ldmcsia sp!, {r4-r5,pc} - cmp r4, #0x0 - beq _020AF96C - ldr r0, _020AF9B4 ; =UNK_021CCD70 - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 - b _020AF980 -_020AF96C: - ldr r0, _020AF9BC ; =UNK_021CCD6C - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 -_020AF980: - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - ldr r1, [sp, #0x0] - ldr r0, _020AF9C0 ; =0x0000FFFF - mov r2, r5, lsr #0x4 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r4, lsl #0x1f - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF9B0: .word 0x0007FFF0 -_020AF9B4: .word UNK_021CCD70 -_020AF9B8: .word UNK_021CCD74 -_020AF9BC: .word UNK_021CCD6C -_020AF9C0: .word 0x0000FFFF - - arm_func_start FUN_020AF9C4 -FUN_020AF9C4: ; 0x020AF9C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr ip, _020AFA14 ; =UNK_021CCD6C - str r0, [r12, #0xc] - str r1, [r12, #0x10] - str r2, [r12, #0x14] - str r3, [r12, #0x18] - bl FUN_020AF6A4 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r3, _020AFA18 ; =FUN_020AF91C - ldr r1, _020AFA1C ; =UNK_021064B8 - ldr r2, _020AFA20 ; =FUN_020AF894 - ldr r0, _020AFA24 ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA14: .word UNK_021CCD6C -_020AFA18: .word FUN_020AF91C -_020AFA1C: .word UNK_021064B8 -_020AFA20: .word FUN_020AF894 -_020AFA24: .word UNK_021064BC - - arm_func_start FUN_020AFA28 -FUN_020AFA28: ; 0x020AFA28 - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFA30 -FUN_020AFA30: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, [r0, #0x10] - ldr r0, [r0, #0xc] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r1, _020AFA78 ; =UNK_021CCD88 - str r0, [r1, #0x4] - mov r0, r1 - bl FUN_020AF698 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, _020AFA7C ; =UNK_021CCD8C - ldr r3, [r0, #0x8] - mov r2, #0x0 - bl FUN_020AF5E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA78: .word UNK_021CCD88 -_020AFA7C: .word UNK_021CCD8C - - arm_func_start FUN_020AFA80 -FUN_020AFA80: ; 0x020AFA80 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, #0x10000 - rsb r2, r1, #0x0 - ldr r1, _020AFAC8 ; =0x0000FFFF - and r2, r0, r2 - and r12, r0, r1 - mov r3, r2, lsr #0x10 - ldr r0, _020AFACC ; =UNK_021CCD88 - ldr r1, _020AFAD0 ; =UNK_021CCD8C - mov r2, r12, lsl #0x3 - mov r3, r3, lsl #0x3 - bl FUN_020AF334 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFAC8: .word 0x0000FFFF -_020AFACC: .word UNK_021CCD88 -_020AFAD0: .word UNK_021CCD8C - - arm_func_start FUN_020AFAD4 -FUN_020AFAD4: ; 0x020AFAD4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - cmp r0, #0x0 - moveq r4, #0x8 - addne r0, r0, #0x7 - bicne r4, r0, #0x7 - ldr r0, _020AFB98 ; =0x0007FFF8 - cmp r4, r0 - addcs sp, sp, #0x8 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r1, #0x0 - beq _020AFB50 - mov r12, #0x8 - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 - ldr r2, [sp, #0x4] - add r1, r2, r4 - cmp r1, #0x10000 - bls _020AFB6C - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - mov r3, r4 - bl FUN_020AF334 - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020AFB50: - ldr r0, _020AFB9C ; =UNK_021CCD88 - mov r12, #0x10 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 -_020AFB6C: - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [sp, #0x4] - ldr r0, _020AFBA4 ; =0x0000FFFF - mov r2, r4, lsr #0x3 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020AFB98: .word 0x0007FFF8 -_020AFB9C: .word UNK_021CCD88 -_020AFBA0: .word UNK_021CCD8C -_020AFBA4: .word 0x0000FFFF - - arm_func_start FUN_020AFBA8 -FUN_020AFBA8: ; 0x020AFBA8 - stmdb sp!, {r4,lr} - ldr ip, _020AFBE8 ; =UNK_021CCD88 - mov r4, r3 - str r0, [r12, #0x8] - str r1, [r12, #0xc] - str r2, [r12, #0x10] - bl FUN_020AFA30 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AFBEC ; =FUN_020AFAD4 - ldr r1, _020AFBF0 ; =UNK_021064C0 - ldr r2, _020AFBF4 ; =FUN_020AFA80 - ldr r0, _020AFBF8 ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AFBE8: .word UNK_021CCD88 -_020AFBEC: .word FUN_020AFAD4 -_020AFBF0: .word UNK_021064C0 -_020AFBF4: .word FUN_020AFA80 -_020AFBF8: .word UNK_021064C4 - - arm_func_start FUN_020AFBFC -FUN_020AFBFC: ; 0x020AFBFC - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFC04 -FUN_020AFC04: ; 0x020AFC04 - ldrh r2, [r0, #0x0] - cmp r2, r1 - ldrhi r0, [r0, #0x4] - addhi r0, r0, r1, lsl #0x4 - movls r0, #0x0 - bx lr - - arm_func_start FUN_020AFC1C -FUN_020AFC1C: ; 0x020AFC1C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x4] - mov r6, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - ldrh r1, [r0, #0x0] - ldr r4, [r0, #0x4] - ldr lr, [r0, #0x8] - cmp r1, #0x0 - ldr r12, [r0, #0xc] - bls _020AFCCC - mov r1, r6 -_020AFC68: - add r2, r4, r6, lsl #0x4 - ldr r5, [r2, #0xc] - mov r3, r6, lsl #0x4 - add r5, lr, r5 - str r5, [r2, #0xc] - ldrh r7, [r4, r3] - mov r5, r1 - cmp r7, #0x0 - bls _020AFCB4 -_020AFC8C: - ldr r9, [r2, #0xc] - add r7, r5, #0x1 - ldr r8, [r9, r5, lsl #0x3] - mov r7, r7, lsl #0x10 - add r8, r12, r8 - str r8, [r9, r5, lsl #0x3] - ldrh r8, [r4, r3] - mov r5, r7, lsr #0x10 - cmp r5, r8 - blo _020AFC8C -_020AFCB4: - add r2, r6, #0x1 - mov r2, r2, lsl #0x10 - ldrh r3, [r0, #0x0] - mov r6, r2, lsr #0x10 - cmp r6, r3 - blo _020AFC68 -_020AFCCC: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - add r1, r1, r0 - str r1, [r0, #0x14] - ldr r1, [r0, #0x14] - mov r12, #0x0 - add r2, r1, #0x8 - ldr r0, [r2, #0x4] - add r0, r0, r2 - str r0, [r2, #0x4] - ldrh r0, [r1, #0x8] - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r0, r12 - mov r6, r12 -_020AFD14: - ldr r5, [r2, #0x4] - mov r3, r6 - add r1, r5, r0 - ldr r4, [r1, #0x4] - add r4, r4, r2 - str r4, [r1, #0x4] - ldr r4, [r1, #0x8] - add r4, r4, r2 - str r4, [r1, #0x8] - ldrh r4, [r5, r0] - cmp r4, #0x0 - bls _020AFD6C - mov r7, r6 -_020AFD48: - ldr r5, [r1, #0x8] - add r3, r3, #0x1 - ldr r4, [r5, r7] - add r4, r4, r2 - str r4, [r5, r7] - ldrh r4, [r1, #0x0] - add r7, r7, #0x4 - cmp r3, r4 - blo _020AFD48 -_020AFD6C: - ldrh r1, [r2, #0x0] - add r12, r12, #0x1 - add r0, r0, #0xc - cmp r12, r1 - blo _020AFD14 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start thunk_FUN_020afda0 -thunk_FUN_020afda0: ; 0x020AFD88 - ldr ip, _020AFD90 ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD90: .word FUN_020AFDA0 - - arm_func_start thunk_FUN_020afda0_2 -thunk_FUN_020afda0_2: ; 0x020AFD94 - ldr ip, _020AFD9C ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD9C: .word FUN_020AFDA0 - - arm_func_start FUN_020AFDA0 -FUN_020AFDA0: ; 0x020AFDA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFDE4 ; =0x41424E4B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFC1C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFDE4: .word 0x41424E4B - - arm_func_start FUN_020AFDE8 -FUN_020AFDE8: ; 0x020AFDE8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r1, [r5, #0x4] - add r1, r1, r5 - str r1, [r5, #0x4] - bl FUN_020AFF10 - ldrh r1, [r5, #0x0] - mov r4, r0 - mov r6, #0x0 - cmp r1, #0x0 - bls _020AFE44 -_020AFE14: - mov r0, r5 - mov r1, r6 - bl FUN_020AFE8C - ldr r2, [r0, #0x4] - add r1, r6, #0x1 - add r2, r2, r4 - str r2, [r0, #0x4] - mov r0, r1, lsl #0x10 - ldrh r1, [r5, #0x0] - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020AFE14 -_020AFE44: - ldr r0, [r5, #0xc] - cmp r0, #0x0 - beq _020AFE6C - add r0, r0, r5 - str r0, [r5, #0xc] - ldr r1, [r5, #0xc] - ldr r0, [r1, #0x4] - add r0, r0, r1 - str r0, [r1, #0x4] - str r1, [r5, #0xc] -_020AFE6C: - ldr r0, [r5, #0x14] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r0, r5 - str r0, [r5, #0x14] - ldr r0, [r5, #0x14] - bl FUN_020AFF00 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AFE8C -FUN_020AFE8C: ; 0x020AFE8C - ldrh r2, [r0, #0x0] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - ldrh r2, [r0, #0x2] - ands r2, r2, #0x1 - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFEB8 -FUN_020AFEB8: ; 0x020AFEB8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFEFC ; =0x4345424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFDE8 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFEFC: .word 0x4345424B - - arm_func_start FUN_020AFF00 -FUN_020AFF00: ; 0x020AFF00 - ldr ip, _020AFF0C ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFF0C: .word FUN_020B01B0 - - arm_func_start FUN_020AFF10 -FUN_020AFF10: ; 0x020AFF10 - ldrh r1, [r0, #0x2] - ands r1, r1, #0x1 - ldrneh r1, [r0, #0x0] - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreqh r1, [r0, #0x0] - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFF34 -FUN_020AFF34: ; 0x020AFF34 - ldrh r2, [r0, #0x0] - cmp r1, r2 - ldrcc r0, [r0, #0x4] - addcc r0, r0, r1, lsl #0x3 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020AFF4C -FUN_020AFF4C: ; 0x020AFF4C - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x4] - mov r4, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldrh r1, [r0, #0x0] - ldr lr, [r0, #0x4] - cmp r1, #0x0 - bls _020AFFA8 -_020AFF7C: - add r3, lr, r4, lsl #0x3 - ldr r12, [r0, #0x8] - ldr r2, [r3, #0x4] - add r1, r4, #0x1 - add r2, r12, r2 - str r2, [r3, #0x4] - mov r1, r1, lsl #0x10 - ldrh r2, [r0, #0x0] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020AFF7C -_020AFFA8: - ldr r1, [r0, #0x10] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - add r1, r1, r0 - str r1, [r0, #0x10] - ldr r0, [r0, #0x10] - bl FUN_020AFFC8 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AFFC8 -FUN_020AFFC8: ; 0x020AFFC8 - ldr ip, _020AFFD4 ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFFD4: .word FUN_020B01B0 - - arm_func_start FUN_020AFFD8 -FUN_020AFFD8: ; 0x020AFFD8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B001C ; =0x4D43424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFF4C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B001C: .word 0x4D43424B - - arm_func_start FUN_020B0020 -FUN_020B0020: ; 0x020B0020 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0030 -FUN_020B0030: ; 0x020B0030 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0074 ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0020 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0074: .word 0x43484152 - - arm_func_start FUN_020B0078 -FUN_020B0078: ; 0x020B0078 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0088 -FUN_020B0088: ; 0x020B0088 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B00CC ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0078 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B00CC: .word 0x43484152 - - arm_func_start FUN_020B00D0 -FUN_020B00D0: ; 0x020B00D0 - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B00E0 -FUN_020B00E0: ; 0x020B00E0 - ldr r1, [r0, #0x4] - add r1, r1, r0 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B00F0 -FUN_020B00F0: ; 0x020B00F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0134 ; =0x50434D50 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00E0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0134: .word 0x50434D50 - - arm_func_start FUN_020B0138 -FUN_020B0138: ; 0x020B0138 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B017C ; =0x504C5454 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00D0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B017C: .word 0x504C5454 - - arm_func_start FUN_020B0180 -FUN_020B0180: ; 0x020B0180 - stmdb sp!, {r4,lr} - mov r4, r1 - ldr r1, _020B01AC ; =0x5343524E - bl FUN_020B01F8 - cmp r0, #0x0 - addne r0, r0, #0x8 - strne r0, [r4, #0x0] - movne r0, #0x1 - moveq r0, #0x0 - streq r0, [r4, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020B01AC: .word 0x5343524E - - arm_func_start FUN_020B01B0 -FUN_020B01B0: ; 0x020B01B0 - ldr r1, [r0, #0x4] - mov r12, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - bxls lr -_020B01CC: - ldr r3, [r0, #0x4] - add r1, r12, #0x1 - ldr r2, [r3, r12, lsl #0x2] - mov r1, r1, lsl #0x10 - add r2, r0, r2 - str r2, [r3, r12, lsl #0x2] - ldrh r2, [r0, #0x0] - mov r12, r1, lsr #0x10 - cmp r12, r2 - blo _020B01CC - bx lr - - arm_func_start FUN_020B01F8 -FUN_020B01F8: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r2, [r0, #0xc] - ldrh r12, [r0, #0xe] - mov lr, #0x0 - add r0, r0, r2 - cmp r12, #0x0 - bls _020B0244 -_020B0218: - ldr r2, [r0, #0x0] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r2, lr, #0x1 - mov r2, r2, lsl #0x10 - ldr r3, [r0, #0x4] - mov lr, r2, lsr #0x10 - cmp lr, r12 - add r0, r0, r3 - blo _020B0218 -_020B0244: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B0250 -FUN_020B0250: ; 0x020B0250 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020B02C0 ; =0x04000470 - mov r0, r0, lsl #0xc - str r0, [r5, #0x0] - mov r4, r1, lsl #0xc - ldr r12, [sp, #0x10] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x1c] - str r4, [r5, #0x0] - mov r4, r2, lsl #0xc - ldr r2, [sp, #0x18] - ldr lr, _020B02C4 ; =0x0400046C - str r4, [r5, #0x0] - mov r4, r3, lsl #0xc - ldr r3, [sp, #0x20] - str r4, [lr, #0x0] - mov r12, r12, lsl #0xc - str r12, [lr, #0x0] - mov r12, #0x1000 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - mov r2, r2, lsl #0xc - mov r3, r3, lsl #0xc - str r12, [lr, #0x0] - bl FUN_020B0340 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B02C0: .word 0x04000470 -_020B02C4: .word 0x0400046C - - arm_func_start FUN_020B02C8 -FUN_020B02C8: ; 0x020B02C8 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r2, _020B0330 ; =0xBFFF0000 - ldr r0, _020B0334 ; =0x04000580 - mov r1, #0x400000 - str r2, [r0, #0x0] - rsb r0, r1, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - mov r0, #0x0 - str r1, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - mov r2, r0 - mov r1, #0xc0000 - mov r3, #0x100000 - str r0, [sp, #0x10] - bl G3i_OrthoW_ - ldr r1, _020B0338 ; =0x0400044C - mov r2, #0x0 - ldr r0, _020B033C ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B0330: .word 0xBFFF0000 -_020B0334: .word 0x04000580 -_020B0338: .word 0x0400044C -_020B033C: .word 0x04000440 - - arm_func_start FUN_020B0340 -FUN_020B0340: ; 0x020B0340 - stmdb sp!, {r4-r6,lr} - mov r3, r3, lsl #0x8 - mov r0, r0, lsl #0x8 - mov r4, r3, asr #0x10 - mov r3, r0, asr #0x10 - mov r0, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r1, r1, lsl #0x8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x8 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - ldr ip, _020B03F4 ; =0x04000500 - mov lr, #0x1 - mov r6, r0, lsr #0x10 - mov r5, r3, lsr #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - ldr r4, _020B03F8 ; =0x04000488 - str lr, [r12, #0x0] - orr r0, r5, r6, lsl #0x10 - ldr lr, _020B03FC ; =0x0400048C - str r0, [r4, #0x0] - mov r0, #0x10000000 - str r0, [lr, #0x0] - mov r12, #0x0 - str r12, [lr, #0x0] - orr r2, r3, r6, lsl #0x10 - ldr r0, _020B0400 ; =0x10001000 - str r2, [r4, #0x0] - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r3, r1, lsl #0x10 - str r0, [r4, #0x0] - mov r0, #0x1000 - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r5, r1, lsl #0x10 - str r0, [r4, #0x0] - str r12, [lr, #0x0] - ldr r0, _020B0404 ; =0x04000504 - str r12, [lr, #0x0] - str r12, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B03F4: .word 0x04000500 -_020B03F8: .word 0x04000488 -_020B03FC: .word 0x0400048C -_020B0400: .word 0x10001000 -_020B0404: .word 0x04000504 - - arm_func_start FUN_020B0408 -FUN_020B0408: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - ldreq r0, [r0, #0x18] - ldreq r1, [r0, #0x8] - cmp r1, #0x2 - beq _020B0428 - cmp r1, #0x4 - bne _020B0430 -_020B0428: - mov r0, #0x1 - bx lr -_020B0430: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B0438 -FUN_020B0438: ; 0x020B0438 - ldr ip, _020B0444 ; =FUN_020B0448 - str r1, [r0, #0x18] - bx r12 - .balign 4 -_020B0444: .word FUN_020B0448 - - arm_func_start FUN_020B0448 -FUN_020B0448: ; 0x020B0448 - ldr r1, [r0, #0x10] - cmp r1, #0x0 - movgt r2, #0x1 - ldr r1, [r0, #0x4] - movle r2, #0x0 - eors r1, r2, r1 - beq _020B047C - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - str r1, [r0, #0x0] - b _020B0494 -_020B047C: - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - str r1, [r0, #0x0] -_020B0494: - ldr ip, _020B04A4 ; =FUN_020B0534 - mov r1, #0x0 - str r1, [r0, #0xc] - bx r12 - .balign 4 -_020B04A4: .word FUN_020B0534 - - arm_func_start FUN_020B04A8 -FUN_020B04A8: ; 0x020B04A8 - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] - str r1, [r0, #0x8] - strh r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B04C0 -FUN_020B04C0: ; 0x020B04C0 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x1c - bl FUN_020B04A8 - mov r1, #0x0 - str r1, [r4, #0x0] - str r1, [r4, #0x4] - mov r0, #0x1 - str r0, [r4, #0x8] - str r1, [r4, #0xc] - mov r0, #0x1000 - str r0, [r4, #0x10] - str r1, [r4, #0x14] - str r1, [r4, #0x18] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B04FC -FUN_020B04FC: ; 0x020B04FC - ldr r1, [r0, #0x18] - ldr r2, [r0, #0x0] - ldr r0, [r1, #0xc] - sub r0, r2, r0 - mov r0, r0, lsl #0xd - mov r0, r0, lsr #0x10 - bx lr - - arm_func_start FUN_020B0518 -FUN_020B0518: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B06EC - cmp r0, #0x0 - movne r1, #0x0 - strne r1, [r4, #0xc] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0534 -FUN_020B0534: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r0, [r8, #0x8] - mov r7, #0x0 - cmp r0, #0x1 - movne r0, r7 - ldmneia sp!, {r4-r8,pc} - ldr r2, [r8, #0x10] - mov r0, #0x800 - smull r3, r1, r2, r1 - adds r0, r3, r0 - adc r1, r1, r7 - mov r0, r0, lsr #0xc - orr r0, r0, r1, lsl #0x14 - bl abs - ldr r1, [r8, #0xc] - add r6, r8, #0xc - add r0, r1, r0 - str r0, [r8, #0xc] - mov r4, r7 - mov r5, #0x1 - b _020B06A8 -_020B058C: - ldr r0, [r8, #0x0] - ldr r1, [r6, #0x0] - ldrh r0, [r0, #0x4] - mov r7, r5 - sub r0, r1, r0, lsl #0xc - str r0, [r6, #0x0] - ldr r0, [r8, #0x10] - cmp r0, #0x0 - movgt r1, r5 - ldr r0, [r8, #0x4] - movle r1, r4 - eors r0, r1, r0 - ldrne r0, [r8, #0x0] - addne r0, r0, #0x8 - strne r0, [r8, #0x0] - ldreq r0, [r8, #0x0] - subeq r0, r0, #0x8 - streq r0, [r8, #0x0] - ldr r1, [r8, #0x10] - ldr r0, [r8, #0x0] - cmp r1, #0x0 - movgt r2, r5 - ldr r1, [r8, #0x4] - movle r2, r4 - eors r1, r2, r1 - beq _020B0614 - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - cmp r0, r1 - movcs r0, r5 - movcc r0, r4 - b _020B0634 -_020B0614: - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - cmp r0, r1 - movls r0, r5 - movhi r0, r4 -_020B0634: - cmp r0, #0x0 - beq _020B0644 - mov r0, r8 - bl FUN_020B0710 -_020B0644: - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B06A8 - ldr r0, [r8, #0x18] - ldr r2, [r8, #0x1c] - ldr r1, [r8, #0x0] - ldr r0, [r0, #0xc] - cmp r2, #0x2 - sub r0, r1, r0 - mov r0, r0, lsl #0xd - mov r1, r0, lsr #0x10 - beq _020B0680 - cmp r2, #0x3 - beq _020B069C - b _020B06A8 -_020B0680: - ldrh r0, [r8, #0x28] - cmp r1, r0 - bne _020B06A8 - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 - b _020B06A8 -_020B069C: - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 -_020B06A8: - ldr r0, [r8, #0x8] - cmp r0, #0x0 - beq _020B06CC - ldr r0, [r8, #0x0] - ldr r1, [r8, #0xc] - ldrh r0, [r0, #0x4] - cmp r1, r0, lsl #0xc - movge r0, r5 - bge _020B06D0 -_020B06CC: - mov r0, r4 -_020B06D0: - cmp r0, #0x0 - bne _020B058C - mov r0, r7 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B06E0 -FUN_020B06E0: ; 0x020B06E0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - - arm_func_start FUN_020B06EC -FUN_020B06EC: - ldr r3, [r0, #0x18] - ldrh r2, [r3, #0x0] - cmp r1, r2 - ldrcc r2, [r3, #0xc] - addcc r1, r2, r1, lsl #0x3 - strcc r1, [r0, #0x0] - movcc r0, #0x1 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020B0710 -FUN_020B0710: ; 0x020B0710 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x3 - beq _020B0738 - cmp r0, #0x4 - bne _020B07B4 -_020B0738: - ldr r0, [r4, #0x4] - eor r0, r0, #0x1 - str r0, [r4, #0x4] - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x2] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - bhi _020B0800 - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B0780 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B0780: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07A8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07A8: - mov r0, r4 - bl FUN_020B0448 - b _020B0800 -_020B07B4: - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B07D0 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B07D0: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07F8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07F8: - mov r0, r4 - bl FUN_020B0448 -_020B0800: - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x0] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - strhi r0, [r4, #0x0] - ldmhiia sp!, {r4,pc} - cmp r2, r1 - strcc r1, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0830 -FUN_020B0830: ; 0x020B0830 - ldrh r3, [r0, #0x6] - ldrh r2, [r0, #0x8] - mov r12, #0x0 - add r1, r3, #0x1 - cmp r2, r1 - bgt _020B0854 - ldrh r0, [r0, #0x4] - cmp r0, r3 - movls r12, #0x1 -_020B0854: - cmp r12, #0x0 - subne r0, r3, r2 - addne r0, r0, #0x1 - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B0870 -FUN_020B0870: ; 0x020B0870 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B09B4 - mov r0, r4 - bl FUN_020B0888 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0888 -FUN_020B0888: ; 0x020B0888 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x14] - cmp r0, #0x0 - beq _020B0944 - ldrh r2, [r5, #0x6] - ldrh r1, [r5, #0x8] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B08C0 - ldrh r0, [r5, #0x4] - cmp r0, r2 - movls r3, #0x1 -_020B08C0: - cmp r3, #0x0 - moveq r4, #0x0 - beq _020B08E0 - ldrh r0, [r5, #0x4] - sub r0, r2, r0 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0xd -_020B08E0: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r0, [r5, #0x4] - add r2, r1, #0x100 - mov r1, r4 - add r6, r2, r0, lsl #0x3 - mov r0, r6 - bl DC_InvalidateRange - ldr r0, _020B09B0 ; =GXi_DmaId - mvn r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, r1 - beq _020B0930 - mov r1, r6 - mov r3, r4 - mov r2, #0xc0 - bl MI_DmaFill32 - b _020B0998 -_020B0930: - mov r1, r6 - mov r2, r4 - mov r0, #0xc0 - bl MIi_CpuClear32 - b _020B0998 -_020B0944: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r2, [r5, #0x4] - ldrh r0, [r5, #0x6] - add r1, r1, #0x100 - add r3, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - movs r2, r0, lsr #0x10 - mov r0, #0x0 - beq _020B0998 - mov r1, #0xc0 -_020B0980: - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r2 - strh r1, [r3], #0x8 - blo _020B0980 -_020B0998: - ldrh r0, [r5, #0x4] - strh r0, [r5, #0x8] - ldrh r0, [r5, #0xa] - strh r0, [r5, #0xe] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B09AC: .word UNK_021CCDA0 -_020B09B0: .word GXi_DmaId - - arm_func_start FUN_020B09B4 -FUN_020B09B4: ; 0x020B09B4 - stmdb sp!, {r4-r10,lr} - mov r7, r0 - ldr r0, [r7, #0x14] - cmp r0, #0x0 - beq _020B0A48 - ldr r5, [r7, #0x0] - ldr r1, _020B0BA8 ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r5, r0, r1 - ldrh r2, [r7, #0x4] - ldrh r0, [r7, #0x6] - add r1, r1, #0x100 - add r4, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x13 - mov r6, r0, lsr #0x10 - mov r2, r2, lsl #0x13 - mov r0, r4 - mov r1, r6 - mov r7, r2, lsr #0x10 - bl DC_FlushRange - cmp r5, #0x0 - beq _020B0A20 - cmp r5, #0x1 - beq _020B0A34 - ldmia sp!, {r4-r10,pc} -_020B0A20: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GX_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A34: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GXS_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A48: - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0x4] - ldrh r1, [r7, #0x6] - ldr r3, _020B0BAC ; =UNK_0210655C - add r4, r2, #0x100 - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - mov r2, r5, lsl #0x13 - add r6, r4, r5, lsl #0x3 - movs r5, r1, lsr #0x10 - mov r4, r2, lsr #0x10 - ldr r9, [r3, r0, lsl #0x2] - mov r10, #0x0 - beq _020B0AC8 - mov r8, #0x6 -_020B0A94: - mov r0, r6 - mov r1, r4 - mov r2, r8 - blx r9 - add r0, r10, #0x1 - add r2, r4, #0x8 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r10, r1, lsr #0x10 - cmp r10, r5 - mov r4, r0, lsr #0x10 - add r6, r6, #0x8 - blo _020B0A94 -_020B0AC8: - ldrh r2, [r7, #0xc] - ldrh r1, [r7, #0xe] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B0AEC - ldrh r0, [r7, #0xa] - cmp r0, r2 - movls r3, #0x1 -_020B0AEC: - cmp r3, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0xa] - add r4, r2, #0x100 - ldrh r1, [r7, #0xc] - mov r2, r5, lsl #0x15 - ldr r3, _020B0BAC ; =UNK_0210655C - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - add r9, r4, r5, lsl #0x5 - ldr r5, [r3, r0, lsl #0x2] - movs r8, r1, lsr #0x10 - mov r7, r2, lsr #0x10 - mov r6, #0x0 - ldmeqia sp!, {r4-r10,pc} - mov r4, #0x2 -_020B0B40: - mov r2, r4 - add r0, r9, #0x6 - add r1, r7, #0x6 - blx r5 - mov r2, r4 - add r0, r9, #0xe - add r1, r7, #0xe - blx r5 - mov r2, r4 - add r0, r9, #0x16 - add r1, r7, #0x16 - blx r5 - add r0, r9, #0x1e - add r1, r7, #0x1e - mov r2, r4 - blx r5 - add r0, r7, #0x20 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - add r9, r9, #0x20 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B0B40 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B0BA8: .word UNK_021CCDA0 -_020B0BAC: .word UNK_0210655C - - arm_func_start FUN_020B0BB0 -FUN_020B0BB0: ; 0x020B0BB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov lr, #0x0 - add r2, r12, #0x1 - cmp r3, r2 - bgt _020B0BDC - ldrh r2, [r0, #0xa] - cmp r2, r12 - movls lr, #0x1 -_020B0BDC: - cmp lr, #0x0 - subne r2, r12, r3 - addne r2, r2, #0x1 - movne r2, r2, lsl #0x10 - movne r2, r2, lsr #0x10 - moveq r2, #0x0 - cmp r2, #0x1 - movcs r2, #0x1 - movcc r2, #0x0 - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldreq r0, _020B0C74 ; =0x0000FFFE - ldmeqia sp!, {pc} - ldr lr, [r0, #0x0] - ldr r3, _020B0C78 ; =UNK_021CCDA0 - mov r2, #0x540 - mla r12, lr, r2, r3 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0xe] - add r12, r12, #0x100 - mov r3, r3, asr #0x4 - add r12, r12, r2, lsl #0x5 - strh r3, [r12, #0x6] - ldr r3, [r1, #0x4] - mov r3, r3, asr #0x4 - strh r3, [r12, #0xe] - ldr r3, [r1, #0x8] - mov r3, r3, asr #0x4 - strh r3, [r12, #0x16] - ldr r1, [r1, #0xc] - mov r1, r1, asr #0x4 - strh r1, [r12, #0x1e] - ldrh r1, [r0, #0xe] - add r1, r1, #0x1 - strh r1, [r0, #0xe] - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B0C74: .word 0x0000FFFE -_020B0C78: .word UNK_021CCDA0 - - arm_func_start FUN_020B0C7C -FUN_020B0C7C: ; 0x020B0C7C - stmdb sp!, {r4,lr} - ldrh r12, [r0, #0x6] - ldrh r4, [r0, #0x8] - mov lr, #0x0 - add r3, r12, #0x1 - cmp r4, r3 - bgt _020B0CA4 - ldrh r3, [r0, #0x4] - cmp r3, r12 - movls lr, #0x1 -_020B0CA4: - cmp lr, #0x0 - subne r3, r12, r4 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, #0x1 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0D48 - ldr r4, [r0, #0x0] - ldr ip, _020B0D50 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, r4, r3, r12 - ldrh r3, [r0, #0x8] - add r4, r12, #0x100 - ldrh r12, [r1, #0x0] - mov lr, r3, lsl #0x3 - add r3, r4, r3, lsl #0x3 - strh r12, [r4, lr] - ldrh lr, [r1, #0x2] - ldr ip, _020B0D54 ; =0x0000FFFE - strh lr, [r3, #0x2] - ldrh r1, [r1, #0x4] - cmp r2, r12 - strh r1, [r3, #0x4] - beq _020B0D34 - ldr r1, [r3, #0x0] - mov r12, r1, lsl #0x16 - mov r12, r12, lsr #0x1e - ands r12, r12, #0x1 - bicne r12, r1, #0x3e000000 - andne r1, r2, #0x1f - orrne r1, r12, r1, lsl #0x19 - strne r1, [r3, #0x0] -_020B0D34: - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - mov r0, #0x1 - ldmia sp!, {r4,pc} -_020B0D48: - mov r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020B0D50: .word UNK_021CCDA0 -_020B0D54: .word 0x0000FFFE - - arm_func_start FUN_020B0D58 -FUN_020B0D58: ; 0x020B0D58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh lr, [r0, #0x6] - ldrh r12, [r0, #0x8] - mov r4, #0x0 - add r3, lr, #0x1 - cmp r12, r3 - bgt _020B0D84 - ldrh r3, [r0, #0x4] - cmp r3, lr - movls r4, #0x1 -_020B0D84: - cmp r4, #0x0 - subne r3, lr, r12 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, r2 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0E24 - ldr lr, [r0, #0x0] - ldr ip, _020B0E30 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, lr, r3, r12 - ldrh r3, [r0, #0x8] - add r12, r12, #0x100 - cmp r2, #0x0 - add r4, r12, r3, lsl #0x3 - mov r5, #0x0 - ble _020B0E18 - add r3, r0, #0x8 -_020B0DDC: - ldrh lr, [r1, #0x0] - mov r0, r5, lsl #0x3 - add r12, r4, r5, lsl #0x3 - strh lr, [r4, r0] - ldrh r0, [r1, #0x2] - add r5, r5, #0x1 - cmp r5, r2 - strh r0, [r12, #0x2] - ldrh r0, [r1, #0x4] - add r1, r1, #0x8 - strh r0, [r12, #0x4] - ldrh r0, [r3, #0x0] - add r0, r0, #0x1 - strh r0, [r3, #0x0] - blt _020B0DDC -_020B0E18: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r5,pc} -_020B0E24: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0E30: .word UNK_021CCDA0 - - arm_func_start FUN_020B0E34 -FUN_020B0E34: ; 0x020B0E34 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, [sp, #0x1c] - ldr r6, _020B0FB4 ; =UNK_021CCDA0 - mov r4, #0x540 - mla r4, r5, r4, r6 - mov lr, r1 - sub r1, r2, #0x1 - add r1, lr, r1 - mov r1, r1, lsl #0x10 - mov r12, r1, lsr #0x10 - add r7, r4, lr, lsl #0x1 - add r2, r4, r12, lsl #0x1 - mov r6, r0 - mov r5, r3 - cmp r7, r2 - mov r3, lr, lsl #0x1 - bhi _020B0E9C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0E80: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0EA0 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0E80 -_020B0E9C: - mov r0, #0x1 -_020B0EA0: - cmp r0, #0x0 - beq _020B0EE0 - ldr r0, _020B0FBC ; =UNK_021CCD9C - sub r2, r12, lr - ldrh r7, [r0, #0x0] - add r1, r4, r3 - mov r2, r2, lsl #0x1 - add r3, r7, #0x1 - strh r3, [r0, #0x0] - strh r7, [r6, #0x10] - strh lr, [r6, #0x4] - strh r12, [r6, #0x6] - strh lr, [r6, #0x8] - ldrh r0, [r6, #0x10] - bl MIi_CpuClear16 - b _020B0EEC -_020B0EE0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0EEC: - ldrh r0, [sp, #0x18] - add r4, r4, #0x500 - cmp r0, #0x0 - bne _020B0F18 - mov r0, #0x20 - strh r0, [r6, #0xa] - mov r0, #0x0 - strh r0, [r6, #0xc] - ldrh r0, [r6, #0xa] - strh r0, [r6, #0xe] - b _020B0F98 -_020B0F18: - sub r0, r0, #0x1 - add r0, r5, r0 - mov r0, r0, lsl #0x10 - mov r12, r0, lsr #0x10 - add r7, r4, r5, lsl #0x1 - add r2, r4, r12, lsl #0x1 - cmp r7, r2 - mov r3, r5, lsl #0x1 - bhi _020B0F5C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0F40: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0F60 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0F40 -_020B0F5C: - mov r0, #0x1 -_020B0F60: - cmp r0, #0x0 - beq _020B0F8C - strh r5, [r6, #0xa] - strh r12, [r6, #0xc] - strh r5, [r6, #0xe] - ldrh r0, [r6, #0x10] - sub r2, r12, r5 - add r1, r4, r3 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - b _020B0F98 -_020B0F8C: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0F98: - mov r1, #0x0 - ldr r0, [sp, #0x1c] - str r1, [r6, #0x14] - str r0, [r6, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B0FB4: .word UNK_021CCDA0 -_020B0FB8: .word 0x0000FFFF -_020B0FBC: .word UNK_021CCD9C - - arm_func_start FUN_020B0FC0 -FUN_020B0FC0: ; 0x020B0FC0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B1060 ; =UNK_021CCEA0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1064 ; =UNK_021CD3E0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1068 ; =UNK_021CD920 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1070 ; =UNK_021CCDA0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1074 ; =UNK_021CD2E0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1078 ; =UNK_021CD820 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B107C ; =UNK_021CD2A0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1080 ; =UNK_021CD7E0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1084 ; =UNK_021CDD20 - mov r2, #0x40 - bl MIi_CpuClear16 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B1060: .word UNK_021CCEA0 -_020B1064: .word UNK_021CD3E0 -_020B1068: .word UNK_021CD920 -_020B106C: .word 0x0000FFFF -_020B1070: .word UNK_021CCDA0 -_020B1074: .word UNK_021CD2E0 -_020B1078: .word UNK_021CD820 -_020B107C: .word UNK_021CD2A0 -_020B1080: .word UNK_021CD7E0 -_020B1084: .word UNK_021CDD20 - - arm_func_start FUN_020B1088 -FUN_020B1088: ; 0x020B1088 - ldr ip, _020B1094 ; =MIi_CpuCopy16 - add r1, r1, #0x7000000 - bx r12 - .balign 4 -_020B1094: .word MIi_CpuCopy16 - - arm_func_start FUN_020B1098 -FUN_020B1098: ; 0x020B1098 - ldr r3, _020B10A8 ; =0x07000400 - ldr ip, _020B10AC ; =MIi_CpuCopy16 - add r1, r1, r3 - bx r12 - .balign 4 -_020B10A8: .word 0x07000400 -_020B10AC: .word MIi_CpuCopy16 - - arm_func_start FUN_020B10B0 -FUN_020B10B0: ; 0x020B10B0 - mov r1, r1, lsl #0x1 - ldrh r0, [r0, r1] - bx lr - - arm_func_start FUN_020B10BC -FUN_020B10BC: ; 0x020B10BC - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10C4 -FUN_020B10C4: - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10CC -FUN_020B10CC: - mov r2, #0x0 - mvn r1, #0x0 -_020B10D4: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B10D4 - bx lr - - arm_func_start FUN_020B10E8 -FUN_020B10E8: ; 0x020B10E8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - cmp r0, #0x3 - ldr r0, [sp, #0x28] - moveq r7, #0x20 - str r0, [sp, #0x28] - ldrh r0, [r9, #0x0] - movne r7, #0x200 - mov r11, r2 - mov r8, r3 - str r0, [sp, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - bls _020B1210 -_020B112C: - ldr r1, [r9, #0x4] - mov r0, r6, lsl #0x1 - ldrh r2, [r1, r0] - ldr r0, [r10, #0xc] - ldr r1, [r10, #0x8] - mla r5, r7, r2, r11 - mla r4, r7, r6, r0 - bl DC_FlushRange - cmp r8, #0x0 - beq _020B11E0 - cmp r8, #0x1 - beq _020B1168 - cmp r8, #0x2 - beq _020B11A4 - b _020B11F8 -_020B1168: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B1190 - bl GX_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B11F8 -_020B1190: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJPltt - b _020B11F8 -_020B11A4: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B11CC - bl GXS_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B11F8 -_020B11CC: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJPltt - b _020B11F8 -_020B11E0: - bl GX_BeginLoadTexPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B11F8: - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _020B112C -_020B1210: - ldr r0, [sp, #0x28] - ldr r2, [r10, #0x0] - mov r1, r0 - str r2, [r1, #0x0] - ldr r4, [r10, #0x4] - mov r3, r0 - mov r1, r8 - mov r2, r11 - str r4, [r3, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B1240 -FUN_020B1240: ; 0x020B1240 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r5, [r9, #0xc] - ldr r4, [r9, #0x8] - mov r8, r1 - mov r7, r2 - mov r0, r5 - mov r1, r4 - mov r6, r3 - bl DC_FlushRange - cmp r7, #0x0 - beq _020B1300 - cmp r7, #0x1 - beq _020B1288 - cmp r7, #0x2 - beq _020B12C4 - b _020B1318 -_020B1288: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12B0 - bl GX_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B1318 -_020B12B0: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJPltt - b _020B1318 -_020B12C4: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12EC - bl GXS_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B1318 -_020B12EC: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJPltt - b _020B1318 -_020B1300: - bl GX_BeginLoadTexPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B1318: - ldr r1, [r9, #0x0] - mov r0, r6 - str r1, [r6, #0x0] - ldr r3, [r9, #0x4] - mov r1, r7 - mov r2, r8 - str r3, [r6, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B1340 -FUN_020B1340: ; 0x020B1340 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - mov r5, r2 - mov r4, r3 - bl DC_FlushRange - cmp r5, #0x0 - ldr r0, [r7, #0x8] - beq _020B13B8 - cmp r5, #0x1 - beq _020B1384 - cmp r5, #0x2 - beq _020B13A0 - b _020B13B8 -_020B1384: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1520 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B13B8 -_020B13A0: - ldr r3, _020B1524 ; =0x04001000 - ldr r1, _020B1520 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B13B8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B14D8 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1408 - cmp r0, #0x10 - bge _020B1434 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1444 -_020B13E4: - b _020B1444 -_020B13E8: - b _020B1414 -_020B13EC: - b _020B141C -_020B13F0: - b _020B1444 -_020B13F4: - b _020B1424 -_020B13F8: - b _020B1444 -_020B13FC: - b _020B1444 -_020B1400: - b _020B1444 -_020B1404: - b _020B142C -_020B1408: - cmp r0, #0x20 - beq _020B143C - b _020B1444 -_020B1414: - mov r0, #0x0 - b _020B1448 -_020B141C: - mov r0, #0x1 - b _020B1448 -_020B1424: - mov r0, #0x2 - b _020B1448 -_020B142C: - mov r0, #0x3 - b _020B1448 -_020B1434: - mov r0, #0x4 - b _020B1448 -_020B143C: - mov r0, #0x5 - b _020B1448 -_020B1444: - mov r0, #0x0 -_020B1448: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1490 - cmp r0, #0x10 - bge _020B14BC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B14CC -_020B146C: - b _020B14CC -_020B1470: - b _020B149C -_020B1474: - b _020B14A4 -_020B1478: - b _020B14CC -_020B147C: - b _020B14AC -_020B1480: - b _020B14CC -_020B1484: - b _020B14CC -_020B1488: - b _020B14CC -_020B148C: - b _020B14B4 -_020B1490: - cmp r0, #0x20 - beq _020B14C4 - b _020B14CC -_020B149C: - mov r0, #0x0 - b _020B14D0 -_020B14A4: - mov r0, #0x1 - b _020B14D0 -_020B14AC: - mov r0, #0x2 - b _020B14D0 -_020B14B4: - mov r0, #0x3 - b _020B14D0 -_020B14BC: - mov r0, #0x4 - b _020B14D0 -_020B14C4: - mov r0, #0x5 - b _020B14D0 -_020B14CC: - mov r0, #0x0 -_020B14D0: - str r0, [r4, #0x10] - b _020B14E8 -_020B14D8: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B14E8: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1520: .word 0xFFCFFFEF -_020B1524: .word 0x04001000 - - arm_func_start FUN_020B1528 -FUN_020B1528: ; 0x020B1528 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B1590 - cmp r5, #0x1 - beq _020B155C - cmp r5, #0x2 - beq _020B1578 - b _020B1590 -_020B155C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1760 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B1590 -_020B1578: - ldr r3, _020B1764 ; =0x04001000 - ldr r1, _020B1760 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B1590: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B15B8 - cmp r5, #0x1 - beq _020B15D4 - cmp r5, #0x2 - beq _020B15E8 - b _020B15F8 -_020B15B8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B15F8 -_020B15D4: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B15F8 -_020B15E8: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B15F8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1718 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1648 - cmp r0, #0x10 - bge _020B1674 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1684 -_020B1624: - b _020B1684 -_020B1628: - b _020B1654 -_020B162C: - b _020B165C -_020B1630: - b _020B1684 -_020B1634: - b _020B1664 -_020B1638: - b _020B1684 -_020B163C: - b _020B1684 -_020B1640: - b _020B1684 -_020B1644: - b _020B166C -_020B1648: - cmp r0, #0x20 - beq _020B167C - b _020B1684 -_020B1654: - mov r0, #0x0 - b _020B1688 -_020B165C: - mov r0, #0x1 - b _020B1688 -_020B1664: - mov r0, #0x2 - b _020B1688 -_020B166C: - mov r0, #0x3 - b _020B1688 -_020B1674: - mov r0, #0x4 - b _020B1688 -_020B167C: - mov r0, #0x5 - b _020B1688 -_020B1684: - mov r0, #0x0 -_020B1688: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B16D0 - cmp r0, #0x10 - bge _020B16FC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B170C -_020B16AC: - b _020B170C -_020B16B0: - b _020B16DC -_020B16B4: - b _020B16E4 -_020B16B8: - b _020B170C -_020B16BC: - b _020B16EC -_020B16C0: - b _020B170C -_020B16C4: - b _020B170C -_020B16C8: - b _020B170C -_020B16CC: - b _020B16F4 -_020B16D0: - cmp r0, #0x20 - beq _020B1704 - b _020B170C -_020B16DC: - mov r0, #0x0 - b _020B1710 -_020B16E4: - mov r0, #0x1 - b _020B1710 -_020B16EC: - mov r0, #0x2 - b _020B1710 -_020B16F4: - mov r0, #0x3 - b _020B1710 -_020B16FC: - mov r0, #0x4 - b _020B1710 -_020B1704: - mov r0, #0x5 - b _020B1710 -_020B170C: - mov r0, #0x0 -_020B1710: - str r0, [r4, #0x10] - b _020B1728 -_020B1718: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1728: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1760: .word 0xFFCFFFEF -_020B1764: .word 0x04001000 - - arm_func_start FUN_020B1768 -FUN_020B1768: ; 0x020B1768 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B17D0 - cmp r5, #0x1 - beq _020B179C - cmp r5, #0x2 - beq _020B17B8 - b _020B17D0 -_020B179C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B19A0 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B17D0 -_020B17B8: - ldr r3, _020B19A4 ; =0x04001000 - ldr r1, _020B19A0 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B17D0: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B17F8 - cmp r5, #0x1 - beq _020B1814 - cmp r5, #0x2 - beq _020B1828 - b _020B1838 -_020B17F8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B1838 -_020B1814: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B1838 -_020B1828: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B1838: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1958 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1888 - cmp r0, #0x10 - bge _020B18B4 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B18C4 -_020B1864: - b _020B18C4 -_020B1868: - b _020B1894 -_020B186C: - b _020B189C -_020B1870: - b _020B18C4 -_020B1874: - b _020B18A4 -_020B1878: - b _020B18C4 -_020B187C: - b _020B18C4 -_020B1880: - b _020B18C4 -_020B1884: - b _020B18AC -_020B1888: - cmp r0, #0x20 - beq _020B18BC - b _020B18C4 -_020B1894: - mov r0, #0x0 - b _020B18C8 -_020B189C: - mov r0, #0x1 - b _020B18C8 -_020B18A4: - mov r0, #0x2 - b _020B18C8 -_020B18AC: - mov r0, #0x3 - b _020B18C8 -_020B18B4: - mov r0, #0x4 - b _020B18C8 -_020B18BC: - mov r0, #0x5 - b _020B18C8 -_020B18C4: - mov r0, #0x0 -_020B18C8: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1910 - cmp r0, #0x10 - bge _020B193C - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B194C -_020B18EC: - b _020B194C -_020B18F0: - b _020B191C -_020B18F4: - b _020B1924 -_020B18F8: - b _020B194C -_020B18FC: - b _020B192C -_020B1900: - b _020B194C -_020B1904: - b _020B194C -_020B1908: - b _020B194C -_020B190C: - b _020B1934 -_020B1910: - cmp r0, #0x20 - beq _020B1944 - b _020B194C -_020B191C: - mov r0, #0x0 - b _020B1950 -_020B1924: - mov r0, #0x1 - b _020B1950 -_020B192C: - mov r0, #0x2 - b _020B1950 -_020B1934: - mov r0, #0x3 - b _020B1950 -_020B193C: - mov r0, #0x4 - b _020B1950 -_020B1944: - mov r0, #0x5 - b _020B1950 -_020B194C: - mov r0, #0x0 -_020B1950: - str r0, [r4, #0x10] - b _020B1968 -_020B1958: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1968: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B19A0: .word 0xFFCFFFEF -_020B19A4: .word 0x04001000 - - arm_func_start FUN_020B19A8 -FUN_020B19A8: - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x8] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B19C4 -FUN_020B19C4: ; 0x020B19C4 - add r0, r0, r1, lsl #0x2 - ldr r0, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19D0 -FUN_020B19D0: ; 0x020B19D0 - add r0, r0, r1, lsl #0x2 - str r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19DC -FUN_020B19DC: ; 0x020B19DC - mov r3, #0x0 - mvn r2, #0x0 -_020B19E4: - add r1, r0, r3, lsl #0x2 - add r3, r3, #0x1 - str r2, [r1, #0x8] - cmp r3, #0x3 - blt _020B19E4 - bx lr - - arm_func_start FUN_020B19FC -FUN_020B19FC: - ldr r1, [r0, r1, lsl #0x2] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B1A14 -FUN_020B1A14: ; 0x020B1A14 - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A1C -FUN_020B1A1C: ; 0x020B1A1C - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A24 -FUN_020B1A24: ; 0x020B1A24 - mov r2, #0x0 - mvn r1, #0x0 -_020B1A2C: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B1A2C - bx lr - - arm_func_start FUN_020B1A40 -FUN_020B1A40: ; 0x020B1A40 - stmdb sp!, {r4,lr} - mov r4, r0 - add r1, r4, #0x4 - mov r0, #0x0 - mov r2, #0x18 - bl MIi_CpuClear16 - mov r0, #0x1000 - str r0, [r4, #0x4] - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1A68 -FUN_020B1A68: - ldr ip, _020B1A74 ; =FUN_020B1A40 - str r1, [r0, #0x0] - bx r12 - .balign 4 -_020B1A74: .word FUN_020B1A40 - - arm_func_start FUN_020B1A78 -FUN_020B1A78: ; 0x020B1A78 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x2 - streqh r3, [r0, #0x12] - streq r1, [r0, #0x4] - streq r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B1A98 -FUN_020B1A98: ; 0x020B1A98 - ldr r2, [r0, #0x0] - cmp r2, #0x1 - ldreqh r2, [r0, #0x12] - orreq r2, r2, #0x4 - streqh r2, [r0, #0x12] - streqh r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B1AB4 -FUN_020B1AB4: ; 0x020B1AB4 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x8 - streqh r3, [r0, #0x12] - streqh r1, [r0, #0xc] - streqh r2, [r0, #0xe] - bx lr - - arm_func_start FUN_020B1AD4 -FUN_020B1AD4: ; 0x020B1AD4 - mov r2, #0x0 - str r2, [r0, #0x0] - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x8] - ldr ip, _020B1AF4 ; =FUN_020B1A68 - add r0, r0, #0xc - bx r12 - .balign 4 -_020B1AF4: .word FUN_020B1A68 - - arm_func_start FUN_020B1AF8 -FUN_020B1AF8: ; 0x020B1AF8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldrh r5, [r2, #0x0] - ldr r4, [sp, #0x60] - ldr r10, [sp, #0x58] - str r4, [sp, #0x60] - cmp r1, r5 - movcs r1, r5 - mov r4, #0x0 - cmp r1, #0x0 - str r4, [sp, #0x0] - bls _020B1E7C - ldrh r4, [sp, #0x5c] - mov r4, r4, lsl #0x19 - str r4, [sp, #0x4] - ldr r4, [sp, #0x0] - str r4, [sp, #0x14] - mov r4, #0x100 - str r4, [sp, #0xc] - mov r4, #0x300 - str r4, [sp, #0x8] - mov r4, #0x1 - str r4, [sp, #0x10] -_020B1B54: - ldr r5, [sp, #0x0] - mov r6, #0x6 - mul r6, r5, r6 - ldr r8, [r2, #0x4] - ldr r4, [sp, #0x0] - add r7, r0, r5, lsl #0x3 - ldrh r5, [r8, r6] - mov r4, r4, lsl #0x3 - add r9, r8, r6 - strh r5, [r0, r4] - ldrh r4, [r9, #0x2] - cmp r3, #0x0 - strh r4, [r7, #0x2] - ldrh r4, [r9, #0x4] - strh r4, [r7, #0x4] - bne _020B1B9C - cmp r10, #0x0 - beq _020B1E60 -_020B1B9C: - ldr r5, [r7, #0x0] - ldr r4, _020B1E88 ; =0x01FF0000 - and r4, r5, r4 - mov r4, r4, lsr #0x10 - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0xff - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x20] - ldr r4, [r7, #0x0] - and r4, r4, #0xff - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0x7f - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x24] - cmp r3, #0x0 - beq _020B1E00 - ldr r5, [r7, #0x0] - and r6, r5, #0x300 - cmp r6, #0x100 - beq _020B1C1C - cmp r6, #0x300 - beq _020B1C1C - and r4, r5, #0x30000000 - orr r6, r6, r4 -_020B1C1C: - cmp r6, #0x300 - bne _020B1C70 - ldr r4, _020B1E8C ; =0xC000C000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - and r5, r5, r4 - and r4, r5, #0xc000 - mov r6, r4, asr #0xe - and r4, r5, #0xc0000000 - mov r4, r4, lsr #0x1e - mov r4, r4, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r4, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r5, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - add r5, r5, r9, lsl #0xb - str r5, [sp, #0x20] - ldrh r4, [r4, r6] - ldr r5, [sp, #0x24] - add r4, r5, r4, lsl #0xb - str r4, [sp, #0x24] -_020B1C70: - ldr r4, [sp, #0x60] - ldr r5, [r3, #0x8] - cmp r4, #0x0 - ldrne r8, [sp, #0x8] - add r4, sp, #0x20 - ldreq r8, [sp, #0xc] - mov r6, r4 - cmp r8, #0x300 - ldreq r9, [sp, #0x10] - mov r12, #0x1000 - ldrne r9, [sp, #0x14] - cmp r4, r4 - ldr r4, [sp, #0x24] - addeq r6, sp, #0x28 - smull r11, r4, r5, r4 - adds r5, r11, r12 - adc r11, r4, #0x0 - ldr r4, [r3, #0x0] - ldr lr, [sp, #0x20] - smlal r5, r11, r4, lr - mov r4, r5, lsr #0xc - orr r4, r4, r11, lsl #0x14 - str r4, [r6, #0x0] - ldr r4, [r3, #0xc] - ldr r5, [sp, #0x24] - ldr lr, [r3, #0x4] - smull r11, r5, r4, r5 - adds r11, r11, r12 - adc r4, r5, #0x0 - add r5, sp, #0x28 - cmp r6, r5 - ldr r5, [sp, #0x20] - smlal r11, r4, lr, r5 - mov r5, r11, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, #0x4] - ldreq r5, [sp, #0x28] - ldreq r4, [sp, #0x2c] - streq r5, [sp, #0x20] - streq r4, [sp, #0x24] - cmp r8, #0x100 - beq _020B1D38 - cmp r8, #0x300 - beq _020B1D38 - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r4, r4, r8 - str r4, [r7, #0x0] - b _020B1D54 -_020B1D38: - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r5, r4, r8 - ldr r4, [sp, #0x4] - orr r4, r4, r5 - str r4, [r7, #0x0] -_020B1D54: - ldr r6, [r7, #0x0] - ldr r5, _020B1E8C ; =0xC000C000 - cmp r9, #0x0 - and r8, r6, r5 - and r5, r8, #0xc000 - mov r6, r5, asr #0xe - and r5, r8, #0xc0000000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - mov r5, r5, lsr #0x1e - mov r5, r5, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r5, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r4, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - mov r11, r9, asr #0x1 - ldrh r5, [r5, r6] - mov r8, r11, lsl #0xc - ldr r6, [r3, #0x0] - rsb r12, r8, #0x0 - mov r9, r5, asr #0x1 - mla r12, r6, r11, r12 - ldr r5, [r3, #0x8] - mla r6, r5, r9, r12 - add r6, r4, r6 - str r6, [sp, #0x20] - ldr r12, [r3, #0x4] - mov r5, r9, lsl #0xc - str r12, [sp, #0x1c] - ldr r12, [r3, #0xc] - rsb lr, r5, #0x0 - str r12, [sp, #0x18] - ldr r12, [sp, #0x1c] - ldr r4, [sp, #0x24] - mla r11, r12, r11, lr - ldr r12, [sp, #0x18] - subne r6, r6, r8 - mla r9, r12, r9, r11 - add r4, r4, r9 - str r4, [sp, #0x24] - subne r4, r4, r5 - strne r6, [sp, #0x20] - strne r4, [sp, #0x24] -_020B1E00: - cmp r10, #0x0 - beq _020B1E28 - ldr r6, [sp, #0x20] - ldr r4, [r10, #0x0] - ldr r5, [sp, #0x24] - add r4, r6, r4 - str r4, [sp, #0x20] - ldr r4, [r10, #0x4] - add r4, r5, r4 - str r4, [sp, #0x24] -_020B1E28: - ldr r4, [sp, #0x20] - ldr r6, [r7, #0x0] - add r5, r4, #0x800 - ldr r4, _020B1E9C ; =0x000001FF - and r4, r4, r5, asr #0xc - ldr r5, _020B1EA0 ; =0xFE00FF00 - and r6, r6, r5 - ldr r5, [sp, #0x24] - add r5, r5, #0x800 - mov r5, r5, asr #0xc - and r5, r5, #0xff - orr r5, r6, r5 - orr r4, r5, r4, lsl #0x10 - str r4, [r7, #0x0] -_020B1E60: - ldr r4, [sp, #0x0] - add r4, r4, #0x1 - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - str r4, [sp, #0x0] - cmp r4, r1 - blo _020B1B54 -_020B1E7C: - mov r0, r1 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B1E88: .word 0x01FF0000 -_020B1E8C: .word 0xC000C000 -_020B1E90: .word UNK_020FF8AC -_020B1E94: .word UNK_020FF894 -_020B1E98: .word 0xC1FFFCFF -_020B1E9C: .word 0x000001FF -_020B1EA0: .word 0xFE00FF00 - - arm_func_start FUN_020B1EA4 -FUN_020B1EA4: ; 0x020B1EA4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0518 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EC4 -FUN_020B1EC4: ; 0x020B1EC4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0534 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EE4 -FUN_020B1EE4: ; 0x020B1EE4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0438 - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EFC -FUN_020B1EFC: ; 0x020B1EFC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r4, r2 - ldr r2, [r4, #0xc] - mov r5, r1 - ldr r1, [r2, #0x0] - ldr r2, [sp, #0x34] - str r1, [sp, #0x0] - ldr r1, [sp, #0x38] - str r2, [sp, #0x4] - mov r6, r3 - mov r7, r0 - ldr r12, [sp, #0x3c] - str r1, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - mov r0, r6 - str r12, [sp, #0xc] - bl FUN_020B45F0 - str r6, [r7, #0x34] - str r4, [r7, #0x30] - add r0, r7, #0x38 - mov r1, #0x1 - str r6, [r7, #0x34] - bl FUN_020B1A68 - mov r0, r7 - bl FUN_020B04C0 - mov r0, r7 - mov r1, r5 - bl FUN_020B1EE4 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B1F80 -FUN_020B1F80: ; 0x020B1F80 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - str r2, [r5, #0x30] - mvn r2, #0x0 - add r0, r5, #0x38 - mov r1, #0x1 - str r2, [r5, #0x34] - bl FUN_020B1A68 - mov r0, r5 - bl FUN_020B04C0 - mov r0, r5 - mov r1, r4 - bl FUN_020B1EE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B1FC4 -FUN_020B1FC4: ; 0x020B1FC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldrh r1, [r1, #0x4] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl FUN_020B06E0 - mov r4, r0 - ldr r7, [r5, #0x30] - ldrh r1, [r4, #0x0] - mov r0, r7 - bl FUN_020AFE8C - str r0, [r5, #0x2c] - ldr r1, [r5, #0x18] - add r0, r5, #0x38 - ldr r2, [r1, #0x4] - mov r1, #0x1 - and r6, r2, #0xff - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2068 - cmp r6, #0x2 - bne _020B203C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r5, #0x38 - bl FUN_020B1AB4 - b _020B2068 -_020B203C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r5, #0x38 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r5, #0x38 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r5, #0x38 - bl FUN_020B1AB4 -_020B2068: - ldr r2, [r7, #0xc] - cmp r2, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r5, #0x34] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldrh r1, [r4, #0x0] - ldr r2, [r2, #0x4] - ldr r0, [r5, #0x34] - add r3, r2, r1, lsl #0x3 - ldr r1, [r2, r1, lsl #0x3] - ldr r2, [r3, #0x4] - bl FUN_020B4400 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B20C8 -FUN_020B20C8: ; 0x020B20C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r6, #0x0 - str r6, [r0, #0x38] - ldr r7, [sp, #0x30] - str r6, [r0, #0x30] - mov r10, r1 - str r7, [r0, #0x34] - str r0, [sp, #0x0] - movs r8, r3 - mov r9, r2 - str r10, [r0, #0x3c] - ldr r11, [sp, #0x34] - beq _020B215C - mov r0, #0x1 - str r6, [sp, #0x8] - str r0, [sp, #0x4] -_020B210C: - mov r0, #0x28 - mul r4, r6, r0 - ldr r1, [sp, #0x4] - add r0, r10, r4 - bl FUN_020B1AD4 - mov r0, #0x54 - mla r5, r6, r0, r9 - ldr r1, [sp, #0x8] - mov r0, r7 - str r5, [r10, r4] - bl FUN_020AFC04 - mov r1, r0 - mov r0, r5 - mov r2, r11 - bl FUN_020B1F80 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B210C -_020B215C: - ldr r0, [sp, #0x0] - bl FUN_020B04C0 - ldr r0, [sp, #0x0] - ldr r3, [sp, #0x38] - ldr r2, [sp, #0x0] - add r0, r0, #0x44 - mov r1, #0x1 - str r3, [r2, #0x40] - bl FUN_020B1A68 - ldr r0, [sp, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2c] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B2194 -FUN_020B2194: ; 0x020B2194 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0518 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r7 - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B2234 - cmp r5, #0x2 - bne _020B2208 - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B2234 -_020B2208: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B2234: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B224C -FUN_020B224C: ; 0x020B224C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r2, [r4, #0x0] - mov r6, r1 - ldrh r5, [r2, #0x4] - bl FUN_020B0534 - cmp r0, #0x0 - beq _020B2318 - ldrh r1, [r4, #0x2c] - mov r0, r4 - add r1, r1, r5 - strh r1, [r4, #0x2c] - bl FUN_020B06E0 - mov r5, r0 - ldrh r1, [r5, #0x0] - ldr r0, [r4, #0x40] - bl FUN_020AFF34 - ldr r1, [r4, #0x18] - mov r7, r0 - ldr r1, [r1, #0x4] - add r0, r4, #0x44 - and r6, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2300 - cmp r6, #0x2 - bne _020B22D4 - ldrsh r1, [r5, #0x4] - ldrsh r2, [r5, #0x6] - add r0, r4, #0x44 - bl FUN_020B1AB4 - b _020B2300 -_020B22D4: - ldr r1, [r5, #0x4] - ldr r2, [r5, #0x8] - add r0, r4, #0x44 - bl FUN_020B1A78 - ldrh r1, [r5, #0x2] - add r0, r4, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #0xe] - add r0, r4, #0x44 - bl FUN_020B1AB4 -_020B2300: - ldrh r2, [r4, #0x2c] - mov r1, r7 - add r0, r4, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B2318: - mov r1, r6 - add r0, r4, #0x30 - bl FUN_020B232C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B232C -FUN_020B232C: ; 0x020B232C - stmdb sp!, {r4-r8,lr} - mov r7, r0 - ldr r0, [r7, #0x8] - mov r6, r1 - cmp r0, #0x1 - bne _020B238C - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x2] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x58 -_020B2360: - mla r0, r5, r8, r4 - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x2] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2360 - ldmia sp!, {r4-r8,pc} -_020B238C: - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x28 -_020B23A8: - mul r0, r5, r8 - ldr r0, [r4, r0] - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B23A8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B23D8 -FUN_020B23D8: ; 0x020B23D8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldrh r0, [r5, #0x0] - mov r4, #0x0 - mov r6, r4 - cmp r0, #0x0 - bls _020B2424 -_020B23F4: - mov r0, r5 - mov r1, r6 - bl FUN_020AFF34 - ldrh r0, [r0, #0x0] - ldrh r1, [r5, #0x0] - cmp r0, r4 - movhi r4, r0 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020B23F4 -_020B2424: - mov r0, r4 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B242C -FUN_020B242C: ; 0x020B242C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0438 - mov r1, #0x0 - mov r0, r7 - strh r1, [r7, #0x2c] - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B24C8 - cmp r5, #0x2 - bne _020B249C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B24C8 -_020B249C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B24C8: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B24E0 -FUN_020B24E0: ; 0x020B24E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r1 - str r0, [sp, #0x0] - str r10, [r0, #0x0] - ldr r0, [r0, #0x8] - mov r9, r2 - cmp r0, #0x1 - bne _020B2654 - ldrh r1, [r10, #0x2] - ldr r0, [sp, #0x0] - mov r4, #0x0 - ldr r8, [r0, #0xc] - cmp r1, #0x0 - bls _020B2544 - mov r3, r4 - mov r0, #0x58 -_020B2524: - mla r1, r4, r0, r8 - str r3, [r1, #0x54] - add r1, r4, #0x1 - mov r1, r1, lsl #0x10 - ldrh r2, [r10, #0x2] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020B2524 -_020B2544: - ldrh r0, [r10, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - str r5, [sp, #0x4] - mov r11, #0x1 -_020B2560: - ldr r0, [r10, #0x4] - mov r1, #0x58 - add r7, r0, r5, lsl #0x3 - ldrh r0, [r7, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x10 - mla r6, r0, r1, r8 - ldr r0, [r6, #0x54] - cmp r0, #0x0 - bne _020B2634 - ldr r0, [sp, #0x0] - ldrh r1, [r7, #0x0] - ldr r0, [r0, #0x4] - bl FUN_020AFC04 - mov r4, r0 - mov r0, r6 - mov r1, r4 - bl FUN_020B1EE4 - str r11, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2630 - ldrh r1, [r4, #0x0] - ldr r7, [sp, #0x4] - mov r3, r7 - cmp r1, #0x0 - bls _020B25F0 - ldr r2, [r4, #0xc] -_020B25D8: - add r0, r2, r3, lsl #0x3 - ldrh r0, [r0, #0x4] - add r3, r3, #0x1 - cmp r3, r1 - add r7, r7, r0 - blo _020B25D8 -_020B25F0: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B261C - mov r0, r9 - mov r1, r7 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2630 -_020B261C: - cmp r9, r7 - movcc r7, r9 - mov r0, r6 - mov r1, r7, lsl #0xc - bl FUN_020B1EC4 -_020B2630: - str r11, [r6, #0x54] -_020B2634: - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2560 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} -_020B2654: - ldrh r1, [r10, #0x0] - ldr r0, [sp, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - ldr r11, [r0, #0xc] - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - str r4, [sp, #0xc] - str r0, [sp, #0x8] -_020B267C: - mov r0, #0x28 - mul r2, r4, r0 - ldr r3, [r10, #0x4] - mov r0, r4, lsl #0x3 - ldrh r1, [r3, r0] - ldr r0, [sp, #0x0] - ldr r6, [r11, r2] - ldr r0, [r0, #0x4] - add r7, r3, r4, lsl #0x3 - bl FUN_020AFC04 - mov r5, r0 - mov r0, r6 - mov r1, r5 - bl FUN_020B1EE4 - ldr r0, [sp, #0x8] - str r0, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2740 - ldrh r1, [r5, #0x0] - ldr r8, [sp, #0xc] - mov r0, r8 - cmp r1, #0x0 - bls _020B2700 - ldr r3, [r5, #0xc] -_020B26E4: - add r1, r3, r0, lsl #0x3 - ldrh r2, [r1, #0x4] - add r0, r0, #0x1 - ldrh r1, [r5, #0x0] - add r8, r8, r2 - cmp r0, r1 - blo _020B26E4 -_020B2700: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B272C - mov r0, r9 - mov r1, r8 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2740 -_020B272C: - cmp r9, r8 - movcc r8, r9 - mov r0, r6 - mov r1, r8, lsl #0xc - bl FUN_020B1EC4 -_020B2740: - mov r0, #0x28 - mla r3, r4, r0, r11 - ldr r0, [sp, #0x8] - str r0, [r3, #0x8] - ldrsh r1, [r7, #0x2] - ldrsh r2, [r7, #0x4] - add r0, r3, #0xc - bl FUN_020B1AB4 - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B267C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start thunk_FUN_020b5040 -thunk_FUN_020b5040: ; 0x020B2780 - ldr ip, _020B2788 ; =FUN_020B5040 - bx r12 - .balign 4 -_020B2788: .word FUN_020B5040 - - arm_func_start FUN_020B278C -FUN_020B278C: - ldr r0, [r0, #0x78] - bx lr - - arm_func_start FUN_020B2794 -FUN_020B2794: ; 0x020B2794 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr r2, _020B2894 ; =UNK_021CDD70 - mov lr, #0x0 - ldr r12, [r2, #0x0] - ldr r3, _020B2898 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x0] - str r1, [sp, #0xc] - mla r1, r12, r2, r3 - rsb r3, r0, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x8] - str lr, [sp, #0x10] - str lr, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B289C ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B28A0 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2824 - ldr r1, _020B28A4 ; =UNK_02106570 - ldr r0, _020B28A8 ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B2828 -_020B2824: - mov r0, #0x0 -_020B2828: - cmp r0, #0x0 - ldreq r1, _020B2894 ; =UNK_021CDD70 - ldreq r0, _020B28A4 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B28AC ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B288C -_020B2860: - b _020B2870 -_020B2864: - b _020B288C -_020B2868: - b _020B2870 -_020B286C: - b _020B2870 -_020B2870: - ldr r0, _020B28B0 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B288C: - add sp, sp, #0x1c - ldmia sp!, {pc} - .balign 4 -_020B2894: .word UNK_021CDD70 -_020B2898: .word UNK_021CDEF4 -_020B289C: .word UNK_021CE1F4 -_020B28A0: .word UNK_021CDD68 -_020B28A4: .word UNK_02106570 -_020B28A8: .word 0x0000FFFE -_020B28AC: .word UNK_021CDDF4 -_020B28B0: .word UNK_021CDD64 - - arm_func_start FUN_020B28B4 -FUN_020B28B4: ; 0x020B28B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r2, _020B29E8 ; =UNK_021CDD70 - mov r12, #0x0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r2, _020B29EC ; =UNK_021CDEF4 - mov r1, #0x18 - mla r1, r3, r1, r2 - mov r5, r0 - add r0, sp, #0x0 - mov r2, r1 - str r5, [sp, #0x0] - str r12, [sp, #0x4] - str r12, [sp, #0x8] - str r4, [sp, #0xc] - str r12, [sp, #0x10] - str r12, [sp, #0x14] - bl FUN_020B423C - mov r0, r5 - bl FX_Inv - mov r1, #0x0 - str r0, [sp, #0x0] - mov r0, r4 - str r1, [sp, #0x4] - str r1, [sp, #0x8] - bl FX_Inv - mov r3, #0x0 - ldr r1, _020B29E8 ; =UNK_021CDD70 - str r0, [sp, #0xc] - ldr r2, [r1, #0x0] - ldr r1, _020B29F0 ; =UNK_021CE1F4 - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x10] - str r3, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B29F4 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2978 - ldr r1, _020B29F8 ; =UNK_02106570 - ldr r0, _020B29FC ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B297C -_020B2978: - mov r0, #0x0 -_020B297C: - cmp r0, #0x0 - ldreq r1, _020B29E8 ; =UNK_021CDD70 - ldreq r0, _020B29F8 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B29E8 ; =UNK_021CDD70 - ldr r1, _020B2A00 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B29E0 -_020B29B4: - b _020B29C4 -_020B29B8: - b _020B29E0 -_020B29BC: - b _020B29C4 -_020B29C0: - b _020B29C4 -_020B29C4: - ldr r0, _020B2A04 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B29E0: - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B29E8: .word UNK_021CDD70 -_020B29EC: .word UNK_021CDEF4 -_020B29F0: .word UNK_021CE1F4 -_020B29F4: .word UNK_021CDD68 -_020B29F8: .word UNK_02106570 -_020B29FC: .word 0x0000FFFE -_020B2A00: .word UNK_021CDDF4 -_020B2A04: .word UNK_021CDD64 - - arm_func_start FUN_020B2A08 -FUN_020B2A08: ; 0x020B2A08 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r3, _020B2AEC ; =UNK_021CDD68 - mov r4, r2 - ldr r2, [r3, #0x0] - cmp r2, #0x0 - beq _020B2A6C - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov r3, #0x18 - ldr r2, [r2, #0x0] - ldr lr, _020B2AF4 ; =UNK_021CDF04 - mul r5, r2, r3 - ldr r3, [lr, r5] - ldr ip, _020B2AF8 ; =UNK_021CDF08 - add r0, r3, r0 - str r0, [lr, r5] - ldr r0, [r12, r5] - ldr r3, _020B2AFC ; =UNK_021CDD74 - add r0, r0, r1 - str r0, [r12, r5] - ldr r0, [r3, r2, lsl #0x2] - add sp, sp, #0x1c - add r0, r0, r4 - str r0, [r3, r2, lsl #0x2] - ldmia sp!, {r4-r5,pc} -_020B2A6C: - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov lr, #0x1000 - ldr r12, [r2, #0x0] - ldr r3, _020B2B00 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x14] - mla r1, r12, r2, r3 - mov r3, #0x0 - str r0, [sp, #0x10] - add r0, sp, #0x0 - mov r2, r1 - str lr, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - str lr, [sp, #0xc] - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r1, _020B2B04 ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r2, _020B2AFC ; =UNK_021CDD74 - ldr r1, [r0, #0x0] - ldr r0, [r2, r1, lsl #0x2] - add r0, r0, r4 - str r0, [r2, r1, lsl #0x2] - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B2AEC: .word UNK_021CDD68 -_020B2AF0: .word UNK_021CDD70 -_020B2AF4: .word UNK_021CDF04 -_020B2AF8: .word UNK_021CDF08 -_020B2AFC: .word UNK_021CDD74 -_020B2B00: .word UNK_021CDEF4 -_020B2B04: .word UNK_021CE1F4 - - arm_func_start FUN_020B2B08 -FUN_020B2B08: ; 0x020B2B08 - ldr r0, _020B2B4C ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - movle r0, #0x1 - movgt r0, #0x0 - cmp r0, #0x0 - bxne lr - ldr r1, _020B2B4C ; =UNK_021CDD70 - ldr r0, _020B2B50 ; =UNK_02106570 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0x0] - sub r3, r3, #0x1 - str r3, [r1, #0x0] - cmp r2, r3 - ldrgt r1, _020B2B54 ; =0x0000FFFE - strgth r1, [r0, #0x0] - bx lr - .balign 4 -_020B2B4C: .word UNK_021CDD70 -_020B2B50: .word UNK_02106570 -_020B2B54: .word 0x0000FFFE - - arm_func_start FUN_020B2B58 -FUN_020B2B58: ; 0x020B2B58 - stmdb sp!, {r4-r10,lr} - ldr r0, _020B2D74 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x7c] - ands r0, r0, #0x1 - bne _020B2CA4 - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r1, [r0, #0x0] - mov r0, r1, lsl #0x10 - add r5, r1, #0x1 - cmp r5, #0x20 - mov r4, r0, lsr #0x10 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - beq _020B2C44 - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2BE4 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r8, r3, r0 - ldr r6, _020B2D84 ; =UNK_021CDF04 - mul r7, r5, r0 - ldr r2, [r6, r8] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r6, r7] - ldr r2, [r3, r8] - str r0, [r1, r5, lsl #0x2] - str r2, [r3, r7] - b _020B2C3C -_020B2BE4: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r7, _020B2D80 ; =UNK_021CDD74 - mul lr, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r12, r5, r0 - ldr r8, _020B2D90 ; =UNK_021CE1F4 - add r10, r1, lr - ldr r6, [r7, r2, lsl #0x2] - add r9, r1, r12 - ldmia r10!, {r0-r3} - stmia r9!, {r0-r3} - ldmia r10, {r0-r1} - str r6, [r7, r5, lsl #0x2] - add r7, r8, lr - stmia r9, {r0-r1} - add r6, r8, r12 - ldmia r7!, {r0-r3} - stmia r6!, {r0-r3} - ldmia r7, {r0-r1} - stmia r6, {r0-r1} -_020B2C3C: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r5, [r0, #0x0] -_020B2C44: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r2, _020B2D94 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r5, r4, lsl #0x3 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - add r4, r2, r4, lsl #0x3 - mov r6, r3, lsl #0x3 - ldrh r1, [r2, r5] - ldrh r0, [r4, #0x2] - add r3, r2, r3, lsl #0x3 - strh r1, [r2, r6] - strh r0, [r3, #0x2] - ldrh r2, [r4, #0x4] - ldrh r0, [r4, #0x6] - ldr r1, _020B2D98 ; =UNK_021CDDF8 - strh r2, [r3, #0x4] - strh r0, [r3, #0x6] - ldrh r0, [r1, r5] - cmp r0, #0x1 - moveq r0, #0x2 - streqh r0, [r1, r6] - strneh r0, [r1, r6] - ldmia sp!, {r4-r10,pc} -_020B2CA4: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - add r4, r0, #0x1 - cmp r4, #0x20 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2D10 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r7, r3, r0 - ldr r5, _020B2D84 ; =UNK_021CDF04 - mul r6, r4, r0 - ldr r2, [r5, r7] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r5, r6] - ldr r2, [r3, r7] - str r0, [r1, r4, lsl #0x2] - str r2, [r3, r6] - b _020B2D68 -_020B2D10: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr ip, _020B2D80 ; =UNK_021CDD74 - mul r9, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r8, r4, r0 - ldr lr, _020B2D90 ; =UNK_021CE1F4 - add r6, r1, r9 - ldr r5, [r12, r2, lsl #0x2] - add r7, r1, r8 - ldmia r6!, {r0-r3} - stmia r7!, {r0-r3} - ldmia r6, {r0-r1} - add r6, lr, r9 - stmia r7, {r0-r1} - add lr, lr, r8 - ldmia r6!, {r0-r3} - stmia lr!, {r0-r3} - ldmia r6, {r0-r1} - stmia lr, {r0-r1} - str r5, [r12, r4, lsl #0x2] -_020B2D68: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r4, [r0, #0x0] - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B2D74: .word UNK_021CDD6C -_020B2D78: .word UNK_021CDD70 -_020B2D7C: .word UNK_021CDD68 -_020B2D80: .word UNK_021CDD74 -_020B2D84: .word UNK_021CDF04 -_020B2D88: .word UNK_021CDF08 -_020B2D8C: .word UNK_021CDEF4 -_020B2D90: .word UNK_021CE1F4 -_020B2D94: .word UNK_021CDDF4 -_020B2D98: .word UNK_021CDDF8 - - arm_func_start FUN_020B2D9C -FUN_020B2D9C: ; 0x020B2D9C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldrh r0, [r4, #0x56] - cmp r0, #0x0 - bne _020B2DBC - add r0, r4, #0x30 - bl FUN_020B2E78 - ldmia sp!, {r4-r6,pc} -_020B2DBC: - bl FUN_020B2B58 - ldrh r0, [r4, #0x56] - ands r0, r0, #0x8 - beq _020B2E0C - ldr r0, _020B2E70 ; =UNK_021CDD6C - ldrsh r6, [r4, #0x52] - ldr r0, [r0, #0x0] - ldrsh r5, [r4, #0x50] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B2E70 ; =UNK_021CDD6C - rsbne r5, r5, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r6, r6, #0x0 - mov r0, r5, lsl #0xc - mov r1, r6, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B2E0C: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x4 - beq _020B2E40 - ldrh r0, [r4, #0x54] - ldr r2, _020B2E74 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B2E40: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x2 - beq _020B2E5C - ldr r0, [r4, #0x48] - ldr r1, [r4, #0x4c] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B2E5C: - add r0, r4, #0x30 - bl FUN_020B2E78 - mov r0, #0x1 - bl FUN_020B2B08 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B2E70: .word UNK_021CDD6C -_020B2E74: .word UNK_020FFA38 - - arm_func_start FUN_020B2E78 -FUN_020B2E78: ; 0x020B2E78 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x1 - bne _020B309C - ldr r0, [r5, #0x0] - mov r2, #0x0 - ldrh r0, [r0, #0x2] - cmp r0, #0x0 - bls _020B2ED0 - ldr r3, _020B3174 ; =UNK_021CE8F4 - mov r4, r2 -_020B2EAC: - add r0, r3, r2, lsl #0x2 - str r4, [r0, #0x4] - ldr r0, [r5, #0x0] - add r2, r2, #0x1 - ldrh r1, [r0, #0x2] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0x10 - cmp r2, r1 - blo _020B2EAC -_020B2ED0: - ldr r0, _020B3178 ; =UNK_021CDD6C - mov r6, #0x1 - ldr r1, [r0, #0x0] - ldr r0, _020B3174 ; =UNK_021CE8F4 - str r6, [r0, #0x404] - ldr r0, [r1, #0x80] - cmp r0, #0x0 - beq _020B2FD8 - bl FUN_020B4948 - str r0, [sp, #0x0] - mov r0, r6 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B2FC0 - mov r11, r7 -_020B2F28: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - mov r2, r11 - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mov r0, #0x58 - mla r0, r8, r0, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2F28 -_020B2FC0: - mov r0, #0x0 - bl FUN_020B497C - ldr r0, [sp, #0x0] - bl FUN_020B4958 - bl FUN_020B4968 - b _020B3088 -_020B2FD8: - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B3088 - str r7, [sp, #0x4] - mov r11, #0x58 -_020B2FF4: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - ldr r2, [sp, #0x4] - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mla r0, r8, r11, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2FF4 -_020B3088: - ldr r0, _020B3174 ; =UNK_021CE8F4 - mov r1, #0x0 - str r1, [r0, #0x404] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B309C: - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r7, [r5, #0xc] - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - cmp r0, #0x0 - beq _020B312C - bl FUN_020B4948 - mov r6, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bls _020B3110 - mov r8, #0x28 -_020B30EC: - mla r0, r4, r8, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B30EC -_020B3110: - mov r0, #0x0 - bl FUN_020B497C - mov r0, r6 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B312C: - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0xc - ldmlsia sp!, {r4-r11,pc} - mov r6, #0x28 -_020B3148: - mla r0, r4, r6, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B3148 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3174: .word UNK_021CE8F4 -_020B3178: .word UNK_021CDD6C - - arm_func_start FUN_020B317C -FUN_020B317C: ; 0x020B317C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B31EC ; =UNK_021CDD6C - mov r5, r0 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x80] - cmp r1, #0x0 - beq _020B31E0 - bl FUN_020B4948 - mov r4, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B31EC ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - mov r0, r5 - bl FUN_020B3554 - mov r0, #0x0 - bl FUN_020B497C - mov r0, r4 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B31E0: - bl FUN_020B3554 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B31EC: .word UNK_021CDD6C - - arm_func_start FUN_020B31F0 -FUN_020B31F0: ; 0x020B31F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B3260 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020B3264 ; =UNK_021CDD6C - str r2, [r1, #0x0] - ldr r2, [r0, #0x0] - ldr r3, [r2, #0x7c] - cmp r3, #0x0 - beq _020B324C - ands r0, r3, #0x1 - ldrne r0, _020B3268 ; =UNK_021CDD68 - movne r1, #0x0 - strne r1, [r0, #0x0] - ands r0, r3, #0x2 - beq _020B323C - mov r0, #0x0 - str r0, [r2, #0x74] - bl FUN_020B4DA0 -_020B323C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x7c] -_020B324C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B3260: .word 0x04000448 -_020B3264: .word UNK_021CDD6C -_020B3268: .word UNK_021CDD68 - - arm_func_start FUN_020B326C -FUN_020B326C: ; 0x020B326C - stmdb sp!, {r4-r8,lr} - ldr r5, _020B330C ; =UNK_021CDD60 - ldr r3, _020B3310 ; =UNK_021CDD6C - ldrh r6, [r5, #0x0] - ldr r2, _020B3314 ; =UNK_021CDD70 - mov r4, #0x0 - ldr r7, _020B3318 ; =0x0000FFFE - ldr r1, _020B331C ; =UNK_02106570 - str r0, [r3, #0x0] - str r4, [r2, #0x0] - strh r7, [r1, #0x0] - cmp r6, #0x0 - ble _020B32D0 - ldr r8, _020B3320 ; =UNK_021CE4F4 - mvn r7, #0x0 - mov r6, #0x10 -_020B32AC: - mov r0, r7 - mov r2, r6 - add r1, r8, #0x10 - bl MIi_CpuClearFast - ldrh r0, [r5, #0x0] - add r4, r4, #0x1 - add r8, r8, #0x20 - cmp r4, r0 - blt _020B32AC -_020B32D0: - ldr r4, _020B330C ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3324 ; =UNK_021CDD64 - ldr r1, _020B3328 ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r4, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r1, _020B332C ; =0x04000444 - mov r2, #0x0 - ldr r0, _020B3330 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bl FUN_020B4178 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B330C: .word UNK_021CDD60 -_020B3310: .word UNK_021CDD6C -_020B3314: .word UNK_021CDD70 -_020B3318: .word 0x0000FFFE -_020B331C: .word UNK_02106570 -_020B3320: .word UNK_021CE4F4 -_020B3324: .word UNK_021CDD64 -_020B3328: .word UNK_021CDDF4 -_020B332C: .word 0x04000444 -_020B3330: .word 0x04000454 - - arm_func_start FUN_020B3334 -FUN_020B3334: ; 0x020B3334 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x48 - bl MIi_CpuClear16 - mov r0, #0x1 - str r0, [r4, #0x10] - mov r0, #0x3 - ldr r1, _020B3380 ; =FUN_020B3EE0 - str r0, [r4, #0x14] - ldr r0, _020B3384 ; =FUN_020B3E48 - str r1, [r4, #0x18] - ldr r1, _020B3388 ; =FUN_020B3C40 - str r0, [r4, #0x1c] - ldr r0, _020B338C ; =FUN_020B3B90 - str r1, [r4, #0x20] - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020B3380: .word FUN_020B3EE0 -_020B3384: .word FUN_020B3E48 -_020B3388: .word FUN_020B3C40 -_020B338C: .word FUN_020B3B90 - - arm_func_start FUN_020B3390 -FUN_020B3390: ; 0x020B3390 - ldr r2, [r0, #0x70] - str r2, [r1, #0x30] - str r1, [r0, #0x70] - bx lr - - arm_func_start FUN_020B33A0 -FUN_020B33A0: ; 0x020B33A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl FUN_020B504C - mov r7, #0x0 - str r7, [r4, #0x70] - str r7, [r4, #0x74] - str r7, [r4, #0x78] - str r7, [r4, #0x7c] - str r7, [r4, #0x80] - str r7, [r4, #0x84] - strh r7, [r4, #0x88] - strh r7, [r4, #0x8a] - str r7, [r4, #0x8c] - str r7, [r4, #0x90] - ldr r1, _020B3454 ; =UNK_021CDD70 - strh r7, [r4, #0x94] - ldr r2, _020B3458 ; =0x0000FFFE - ldr r0, _020B345C ; =UNK_02106570 - ldr r6, _020B3460 ; =UNK_021CE4F4 - str r7, [r1, #0x0] - strh r2, [r0, #0x0] - mvn r5, #0x0 - mov r4, #0x10 -_020B3400: - mov r0, r5 - mov r2, r4 - add r1, r6, #0x10 - bl MIi_CpuClearFast - add r7, r7, #0x1 - cmp r7, #0x20 - add r6, r6, #0x20 - blt _020B3400 - ldr ip, _020B3464 ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3468 ; =UNK_021CDD64 - ldr r1, _020B346C ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r12, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B3470 ; =UNK_021CDD68 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B3454: .word UNK_021CDD70 -_020B3458: .word 0x0000FFFE -_020B345C: .word UNK_02106570 -_020B3460: .word UNK_021CE4F4 -_020B3464: .word UNK_021CDD60 -_020B3468: .word UNK_021CDD64 -_020B346C: .word UNK_021CDDF4 -_020B3470: .word UNK_021CDD68 - - arm_func_start FUN_020B3474 -FUN_020B3474: ; 0x020B3474 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r4, [r5, #0x0] - bl FUN_020B2B58 - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x8 - beq _020B34E4 - ldr r0, _020B354C ; =UNK_021CDD6C - ldrsh r7, [r5, #0x1a] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x18] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B354C ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B34E4: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x4 - beq _020B3518 - ldrh r0, [r5, #0x1c] - ldr r2, _020B3550 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3518: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x2 - beq _020B3534 - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3534: - mov r0, r4 - bl FUN_020B3554 - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B354C: .word UNK_021CDD6C -_020B3550: .word UNK_020FFA38 - - arm_func_start FUN_020B3554 -FUN_020B3554: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x4a] - ldr r4, [r5, #0x2c] - cmp r0, #0x0 - bne _020B35C0 - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B35B0 - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35B0: - mov r0, r4 - bl FUN_020B36C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35C0: - bl FUN_020B2B58 - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x8 - beq _020B3610 - ldr r0, _020B36B8 ; =UNK_021CDD6C - ldrsh r7, [r5, #0x46] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x44] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B36B8 ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B3610: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x4 - beq _020B3644 - ldrh r0, [r5, #0x48] - ldr r2, _020B36BC ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3644: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x2 - beq _020B3660 - ldr r0, [r5, #0x3c] - ldr r1, [r5, #0x40] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3660: - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B369C - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - b _020B36A4 -_020B369C: - mov r0, r4 - bl FUN_020B36C0 -_020B36A4: - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B36B4: .word UNK_02106574 -_020B36B8: .word UNK_021CDD6C -_020B36BC: .word UNK_020FFA38 - - arm_func_start FUN_020B36C0 -FUN_020B36C0: ; 0x020B36C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r5, _020B3B54 ; =UNK_021CDD6C - mov r10, r0 - ldr r0, [r5, #0x0] - ldr r1, [r0, #0x7c] - str r0, [sp, #0x0] - ldr r9, [r0, #0x70] - ands r0, r1, #0x2 - beq _020B38EC - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3840 - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3720 - ldr r2, _020B3B5C ; =UNK_02106570 - ldr r0, _020B3B60 ; =0x0000FFFE - ldrh r2, [r2, #0x0] - cmp r2, r0 - movne r0, #0x1 - bne _020B3724 -_020B3720: - mov r0, #0x0 -_020B3724: - cmp r0, #0x0 - beq _020B37AC - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r1, [r0, #0x404] - cmp r1, #0x0 - beq _020B3788 - ldrh r1, [r0, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - ldr r1, [r0, r1, lsl #0x2] - cmp r1, #0x0 - bne _020B37AC - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r2, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r1, _020B3B64 ; =UNK_021CE8F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r3, [r2, r0] - ldr r4, _020B3B74 ; =UNK_021CE4F4 - ldrh r2, [r1, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - add r1, r4, r3, lsl #0x5 - str r1, [r0, r2, lsl #0x2] - b _020B37AC -_020B3788: - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r2, _020B3B74 ; =UNK_021CE4F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r0, [r1, r0] - add r1, r2, r0, lsl #0x5 -_020B37AC: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r3, _020B3B78 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r3 - beq _020B37FC - ldr r2, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r2, #0x0] - ldr r3, _020B3B7C ; =UNK_021CDF04 - mul r4, r2, r0 - ldr r2, _020B3B80 ; =UNK_021CDF08 - ldr r3, [r3, r4] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r2, r4] - str r3, [r0, #0x10] - str r2, [r0, #0x14] -_020B37FC: - bl FUN_020B4FAC - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B3830 - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3830: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3840: - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r2, _020B3B78 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r2 - beq _020B38A8 - ldr r1, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r1, [r1, #0x0] - ldr r2, _020B3B7C ; =UNK_021CDF04 - mul r3, r1, r0 - ldr r1, _020B3B80 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r1, [r1, r3] - str r2, [r0, #0x10] - str r1, [r0, #0x14] -_020B38A8: - bl FUN_020B4FC4 - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B38DC - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38DC: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38EC: - cmp r9, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r11,pc} - ldr r4, _020B3B6C ; =UNK_021CDD70 - ldr fp, _020B3B78 ; =UNK_021CDEF4 - mov r7, #0x0 - mov r6, #0x1 -_020B3908: - ldr r0, [r9, #0x10] - cmp r0, #0x0 - beq _020B3B40 - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3A8C - ldr r8, [r5, #0x0] - mov r1, r9 - str r9, [r8, #0x74] - mov r0, r8 - bl FUN_020B4F9C - ldr r1, [r9, #0x28] - ldr r2, [r9, #0x2c] - mov r0, r8 - bl FUN_020B5034 - mov r0, r8 - bl FUN_020B4E0C - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, r7 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3978 - ldr r0, _020B3B5C ; =UNK_02106570 - ldrh r2, [r0, #0x0] - ldr r0, _020B3B60 ; =0x0000FFFE - cmp r2, r0 - movne r0, r6 - bne _020B397C -_020B3978: - mov r0, r7 -_020B397C: - cmp r0, #0x0 - beq _020B3A04 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r0, [r0, #0x404] - cmp r0, #0x0 - beq _020B39E4 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldrh r1, [r0, #0x0] - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020B3A04 - bl FUN_020B4010 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r2, [r4, #0x0] - ldrh r1, [r0, #0x0] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r3, [r0, r2] - ldr r0, _020B3B64 ; =UNK_021CE8F4 - add r2, r0, r1, lsl #0x2 - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r3, lsl #0x5 - str r1, [r2, #0x4] - b _020B3A04 -_020B39E4: - bl FUN_020B4010 - ldr r0, [r4, #0x0] - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r1, [r0, r1] - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r1, lsl #0x5 -_020B3A04: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r2, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r11 - beq _020B3A44 - ldr r2, [r4, #0x0] - mov r0, #0x18 - mla r8, r2, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r3, [r8, #0x10] - mov r2, r0 - str r3, [r2, #0x10] - ldr r3, [r8, #0x14] - str r3, [r2, #0x14] -_020B3A44: - bl FUN_020B4FAC - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3A74 - mov r0, r10 - bl FUN_020B4BF4 - b _020B3A7C -_020B3A74: - mov r0, r10 - bl FUN_020B4CDC -_020B3A7C: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 - b _020B3B40 -_020B3A8C: - ldr r8, [r5, #0x0] - mov r1, r9 - mov r0, r8 - str r9, [r8, #0x74] - bl FUN_020B4F9C - mov r0, r8 - bl FUN_020B4E0C - ldr r2, [r4, #0x0] - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r1, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r11 - beq _020B3AFC - ldr r1, [r4, #0x0] - mov r0, #0x18 - mla r3, r1, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r3, #0x10] - mov r1, r0 - str r2, [r1, #0x10] - ldr r2, [r3, #0x14] - str r2, [r1, #0x14] -_020B3AFC: - bl FUN_020B4FC4 - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3B2C - mov r0, r10 - bl FUN_020B4BF4 - b _020B3B34 -_020B3B2C: - mov r0, r10 - bl FUN_020B4CDC -_020B3B34: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 -_020B3B40: - ldr r9, [r9, #0x30] - cmp r9, #0x0 - bne _020B3908 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3B54: .word UNK_021CDD6C -_020B3B58: .word UNK_021CDD68 -_020B3B5C: .word UNK_02106570 -_020B3B60: .word 0x0000FFFE -_020B3B64: .word UNK_021CE8F4 -_020B3B68: .word UNK_021CE8F8 -_020B3B6C: .word UNK_021CDD70 -_020B3B70: .word UNK_021CDDF4 -_020B3B74: .word UNK_021CE4F4 -_020B3B78: .word UNK_021CDEF4 -_020B3B7C: .word UNK_021CDF04 -_020B3B80: .word UNK_021CDF08 -_020B3B84: .word UNK_02106578 -_020B3B88: .word UNK_02106574 -_020B3B8C: .word UNK_021CDD74 - - arm_func_start FUN_020B3B90 -FUN_020B3B90: ; 0x020B3B90 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r0, _020B3C24 ; =UNK_021CDD6C - mov r12, r1 - ldr r0, [r0, #0x0] - mov r3, r2 - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x44] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3C28 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3C2C ; =UNK_021CDD70 - ldreq r4, _020B3C30 ; =UNK_021CDEF4 - ldreq lr, [r2, #0x0] - moveq r2, #0x18 - mlaeq r6, lr, r2, r4 - beq _020B3C0C - ldr lr, _020B3C2C ; =UNK_021CDD70 - mov r2, #0x18 - ldr lr, [lr, #0x0] - ldr r4, _020B3C34 ; =UNK_021CDF04 - mul r5, lr, r2 - ldr r2, _020B3C38 ; =UNK_021CDF08 - ldr r4, [r4, r5] - ldr r6, _020B3C3C ; =UNK_02106578 - ldr r2, [r2, r5] - str r4, [r6, #0x10] - str r2, [r6, #0x14] -_020B3C0C: - str r6, [sp, #0x0] - ldr lr, [r1, #0x44] - mov r2, r12 - blx lr - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3C24: .word UNK_021CDD6C -_020B3C28: .word UNK_021CDD68 -_020B3C2C: .word UNK_021CDD70 -_020B3C30: .word UNK_021CDEF4 -_020B3C34: .word UNK_021CDF04 -_020B3C38: .word UNK_021CDF08 -_020B3C3C: .word UNK_02106578 - - arm_func_start FUN_020B3C40 -FUN_020B3C40: ; 0x020B3C40 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r3, _020B3E2C ; =UNK_021CDD6C - add r4, r0, #0x38 - ldr r0, [r3, #0x0] - mov r6, r1 - mov r5, r2 - bl FUN_020B278C - cmp r0, #0x0 - beq _020B3C90 - ldrh r1, [r4, #0x4] - and r1, r1, #0xf000 - mov r1, r1, lsl #0x4 - mov r1, r1, lsr #0x10 - bl FUN_020B10B0 - ldr r1, [r4, #0x4] - and r0, r0, #0xf - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3C90: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - cmp r0, #0x0 - beq _020B3DA4 - ldr r0, [r1, #0x84] - ands r0, r0, #0x1 - beq _020B3CC8 - ldrh r0, [r1, #0x88] - ldr r1, [r4, #0x4] - bic r1, r1, #0xc00 - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0xa - str r0, [r4, #0x4] -_020B3CC8: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x2 - beq _020B3CF4 - ldrh r0, [r1, #0x8a] - ldr r1, [r4, #0x4] - bic r1, r1, #0xf000 - and r0, r0, #0xf - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3CF4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x10 - beq _020B3D2C - ldr r2, [r4, #0x4] - ldrh r0, [r1, #0x94] - mov r1, r2, lsl #0x10 - bic r2, r2, #0xf000 - add r0, r0, r1, lsr #0x1c - and r0, r0, #0xf - and r0, r0, #0xf - orr r0, r2, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3D2C: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x4 - beq _020B3D60 - ldr r0, [r1, #0x90] - cmp r0, #0x0 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x1000 - strne r0, [r4, #0x0] - ldreq r0, [r4, #0x0] - biceq r0, r0, #0x1000 - streq r0, [r4, #0x0] -_020B3D60: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x8 - beq _020B3DA4 - ldr r0, [r4, #0x0] - ldrh r2, [r4, #0x4] - ldr r1, [r1, #0x8c] - bic r0, r0, #0xc00 - orr r0, r0, r1, lsl #0xa - str r0, [r4, #0x0] - ldrh r0, [r4, #0x4] - and r1, r2, #0xf000 - mov r1, r1, asr #0xc - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #0xc - strh r0, [r4, #0x4] -_020B3DA4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x40] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3E30 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3E34 ; =UNK_021CDD70 - ldreq r4, _020B3E38 ; =UNK_021CDEF4 - ldreq r3, [r2, #0x0] - moveq r2, #0x18 - mlaeq r4, r3, r2, r4 - beq _020B3E10 - ldr r3, _020B3E34 ; =UNK_021CDD70 - mov r2, #0x18 - ldr r4, [r3, #0x0] - ldr r3, _020B3E3C ; =UNK_021CDF04 - mul r12, r4, r2 - ldr r2, _020B3E40 ; =UNK_021CDF08 - ldr r3, [r3, r12] - ldr r4, _020B3E44 ; =UNK_02106578 - ldr r2, [r2, r12] - str r3, [r4, #0x10] - str r2, [r4, #0x14] -_020B3E10: - str r4, [sp, #0x0] - ldr r4, [r1, #0x40] - mov r2, r6 - mov r3, r5 - blx r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3E2C: .word UNK_021CDD6C -_020B3E30: .word UNK_021CDD68 -_020B3E34: .word UNK_021CDD70 -_020B3E38: .word UNK_021CDEF4 -_020B3E3C: .word UNK_021CDF04 -_020B3E40: .word UNK_021CDF08 -_020B3E44: .word UNK_02106578 - - arm_func_start FUN_020B3E48 -FUN_020B3E48: ; 0x020B3E48 - stmdb sp!, {r4,lr} - ldr r0, _020B3EC4 ; =UNK_021CDD6C - mov r2, r1 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r3, [r1, #0x3c] - cmp r3, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020B3EC8 ; =UNK_021CDD68 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - ldreq r3, _020B3ECC ; =UNK_021CDD70 - ldreq lr, _020B3ED0 ; =UNK_021CDEF4 - ldreq r12, [r3, #0x0] - moveq r3, #0x18 - mlaeq r3, r12, r3, lr - beq _020B3EB8 - ldr ip, _020B3ECC ; =UNK_021CDD70 - mov r3, #0x18 - ldr r12, [r12, #0x0] - ldr lr, _020B3ED4 ; =UNK_021CDF04 - mul r4, r12, r3 - ldr ip, _020B3ED8 ; =UNK_021CDF08 - ldr lr, [lr, r4] - ldr r3, _020B3EDC ; =UNK_02106578 - ldr r12, [r12, r4] - str lr, [r3, #0x10] - str r12, [r3, #0x14] -_020B3EB8: - ldr r12, [r1, #0x3c] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020B3EC4: .word UNK_021CDD6C -_020B3EC8: .word UNK_021CDD68 -_020B3ECC: .word UNK_021CDD70 -_020B3ED0: .word UNK_021CDEF4 -_020B3ED4: .word UNK_021CDF04 -_020B3ED8: .word UNK_021CDF08 -_020B3EDC: .word UNK_02106578 - - arm_func_start FUN_020B3EE0 -FUN_020B3EE0: ; 0x020B3EE0 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B3FF4 ; =UNK_021CDD6C - mov r6, r0 - ldr r0, [r2, #0x0] - mov r5, r1 - ldr r4, [r0, #0x74] - ldr r0, [r4, #0x34] - cmp r0, #0x0 - beq _020B3F7C - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r1, _020B4000 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r1, r2, r0, r1 - beq _020B3F54 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r3, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r2, [r1, r3] - ldr r1, _020B400C ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r1, #0x10] - str r0, [r1, #0x14] -_020B3F54: - ldr r3, [r4, #0x34] - mov r0, r5 - mov r2, r4 - blx r3 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r6, #0x30] - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r6, #0x30] -_020B3F7C: - ldr r0, [r4, #0x38] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r2, _020B4000 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r3, r1, r0, r2 - beq _020B3FD8 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r6, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r1, [r1, r6] - ldr r3, _020B400C ; =UNK_02106578 - ldr r0, [r0, r6] - str r1, [r3, #0x10] - str r0, [r3, #0x14] -_020B3FD8: - ldr r0, _020B3FF4 ; =UNK_021CDD6C - ldr r6, [r4, #0x38] - ldr r0, [r0, #0x0] - mov r1, r4 - mov r2, r5 - blx r6 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3FF4: .word UNK_021CDD6C -_020B3FF8: .word UNK_021CDD68 -_020B3FFC: .word UNK_021CDD70 -_020B4000: .word UNK_021CDEF4 -_020B4004: .word UNK_021CDF04 -_020B4008: .word UNK_021CDF08 -_020B400C: .word UNK_02106578 - - arm_func_start FUN_020B4010 -FUN_020B4010: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4158 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r0, lsl #0x10 - add r3, r1, r0, lsr #0xd - ldrh r0, [r3, #0x4] - cmp r0, #0x1 - beq _020B4044 - cmp r0, #0x2 - movne r2, #0x0 -_020B4044: - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B415C ; =UNK_021CDD60 - mov r2, #0x10 - ldrh r4, [r0, #0x0] - cmp r4, #0x1f - addcc r1, r4, #0x1 - strcch r1, [r0, #0x0] - ldr r0, _020B4160 ; =UNK_021CE4F4 - ldrh r5, [r3, #0x2] - add r0, r0, r4, lsl #0x5 - add r1, r0, #0x10 - mvn r0, #0x0 - strh r4, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4164 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsl #0x10 - cmp r2, #0x0 - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r1, r1, lsr #0xd - ldrh r1, [r3, r1] - ldr r3, _020B4160 ; =UNK_021CE4F4 - moveq r2, #0x18 - add r1, r3, r1, lsl #0x5 - ldreq r3, _020B4168 ; =UNK_021CE1F4 - mlaeq r12, r0, r2, r3 - beq _020B40E4 - mov r2, #0x18 - mul r3, r0, r2 - ldr r2, _020B416C ; =UNK_021CDF04 - ldr r0, _020B4170 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr ip, _020B4174 ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r12, #0x10] - str r0, [r12, #0x14] -_020B40E4: - ldr r2, [r12, #0x0] - ldr r0, _020B4154 ; =UNK_021CDD70 - str r2, [r1, #0x0] - ldr r2, [r12, #0x4] - str r2, [r1, #0x4] - ldr r2, [r12, #0x8] - str r2, [r1, #0x8] - ldr r2, [r12, #0xc] - str r2, [r1, #0xc] - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - movs lr, r0, lsr #0x10 - addmi sp, sp, #0x4 - ldmmiia sp!, {r4-r5,pc} - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r0, #0x3 -_020B4124: - add r2, r3, lr, lsl #0x3 - ldrh r1, [r2, #0x2] - mov r12, lr, lsl #0x3 - cmp r5, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - strh r0, [r2, #0x4] - strh r4, [r3, r12] - subs lr, lr, #0x1 - bpl _020B4124 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4154: .word UNK_021CDD70 -_020B4158: .word UNK_021CDDF4 -_020B415C: .word UNK_021CDD60 -_020B4160: .word UNK_021CE4F4 -_020B4164: .word UNK_021CDD68 -_020B4168: .word UNK_021CE1F4 -_020B416C: .word UNK_021CDF04 -_020B4170: .word UNK_021CDF08 -_020B4174: .word UNK_02106578 - - arm_func_start FUN_020B4178 -FUN_020B4178: ; 0x020B4178 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4220 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B41B8 - ldr r1, _020B4224 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r12, [r1, #0x0] - ldr r1, _020B4228 ; =UNK_021CDF04 - mul r3, r12, r0 - mov r2, #0x0 - ldr r0, _020B422C ; =UNK_021CDF08 - str r2, [r1, r3] - str r2, [r0, r3] - b _020B420C -_020B41B8: - ldr r0, _020B4224 ; =UNK_021CDD70 - mov lr, #0x18 - ldr r1, [r0, #0x0] - ldr r4, _020B4230 ; =UNK_021CDEF4 - mul r3, r1, lr - mov r2, #0x1000 - str r2, [r4, r3] - add r5, r4, r3 - mov r1, #0x0 - str r1, [r5, #0x4] - str r1, [r5, #0x8] - str r2, [r5, #0xc] - str r1, [r5, #0x10] - str r1, [r5, #0x14] - ldr r12, [r0, #0x0] - ldr r4, _020B4234 ; =UNK_021CE1F4 - ldmia r5!, {r0-r3} - mla lr, r12, lr, r4 - stmia lr!, {r0-r3} - ldmia r5, {r0-r1} - stmia lr, {r0-r1} -_020B420C: - ldr r0, _020B4238 ; =UNK_021CDD74 - mov r1, #0x0 - str r1, [r0, r12, lsl #0x2] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4220: .word UNK_021CDD68 -_020B4224: .word UNK_021CDD70 -_020B4228: .word UNK_021CDF04 -_020B422C: .word UNK_021CDF08 -_020B4230: .word UNK_021CDEF4 -_020B4234: .word UNK_021CE1F4 -_020B4238: .word UNK_021CDD74 - - arm_func_start FUN_020B423C -FUN_020B423C: ; 0x020B423C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - ldr r4, [r0, #0x4] - ldr r3, [r1, #0x8] - mov r12, r2 - smull r6, r5, r4, r3 - ldr r4, [r0, #0x0] - ldr r3, [r1, #0x0] - cmp r12, r1 - smlal r6, r5, r4, r3 - mov r3, r6, lsr #0xc - addeq r2, sp, #0x0 - orr r3, r3, r5, lsl #0x14 - str r3, [r2, #0x0] - ldr r4, [r0, #0x4] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x0] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - add lr, sp, #0x0 - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x4] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - cmp r2, lr - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x8] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0xc] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x10] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - ldr r4, [r1, #0x10] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - add r3, r4, r3 - str r3, [r2, #0x10] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x10] - ldr r0, [r1, #0x4] - smull r6, r3, r4, r3 - smlal r6, r3, r5, r0 - mov r0, r6, lsr #0xc - ldr r1, [r1, #0x14] - orr r0, r0, r3, lsl #0x14 - add r0, r1, r0 - str r0, [r2, #0x14] - ldmeqia lr!, {r0-r3} - stmeqia r12!, {r0-r3} - ldmeqia lr, {r0-r1} - stmeqia r12, {r0-r1} - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B4358 -FUN_020B4358: ; 0x020B4358 - stmdb sp!, {r4,lr} - ldr r2, _020B43A0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r4, r0, r1, r2 - mov r0, r4 - bl FUN_020B10CC - mov r0, #0x0 - str r0, [r4, #0xc] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - str r0, [r4, #0x20] - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - .balign 4 -_020B43A0: .word UNK_021CED04 - - arm_func_start FUN_020B43A4 -FUN_020B43A4: ; 0x020B43A4 - ldr r1, _020B43F8 ; =UNK_021CED00 - mov r0, #0x0 - ldr r3, [r1, #0x0] - cmp r3, #0x0 - bls _020B43F0 - ldr r1, _020B43FC ; =UNK_021CED04 - ldr r2, [r1, #0x0] - mov r12, r2 -_020B43C4: - ldr r1, [r12, #0x1c] - cmp r1, #0x1 - movne r1, #0x30 - mlane r1, r0, r1, r2 - movne r2, #0x1 - strne r2, [r1, #0x1c] - bxne lr - add r0, r0, #0x1 - cmp r0, r3 - add r12, r12, #0x30 - blo _020B43C4 -_020B43F0: - mvn r0, #0x0 - bx lr - .balign 4 -_020B43F8: .word UNK_021CED00 -_020B43FC: .word UNK_021CED04 - - arm_func_start FUN_020B4400 -FUN_020B4400: ; 0x020B4400 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - bl FUN_020B469C - mvn r1, #0x0 - str r1, [r0, #0x24] - str r5, [r0, #0x28] - str r4, [r0, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B442C -FUN_020B442C: ; 0x020B442C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - ldr r0, [sp, #0x0] - mov r5, #0x1 - str r0, [sp, #0x4] - mov r11, r0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] -_020B4468: - ldr r0, _020B455C ; =UNK_021CED04 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x4] - add r8, r1, r0 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B4528 - ldr r9, [sp, #0x8] - mov r0, r9 - cmp r0, #0x3 - bge _020B4520 - add r4, r8, #0x24 -_020B4498: - mov r6, r5, lsl r9 - mov r1, r11 - ldr r0, [r8, #0x24] - ands r0, r0, r6 - beq _020B44B8 - ldr r0, [r8, #0x20] - ands r0, r0, r6 - movne r1, r5 -_020B44B8: - cmp r1, #0x0 - beq _020B4514 - ldr r0, _020B4560 ; =UNK_020FF8C4 - cmp r9, #0x0 - ldr r7, [r0, r9, lsl #0x2] - ldreq r10, [r8, #0x14] - mov r0, r8 - mov r1, r9 - ldrne r10, [r8, #0x10] - bl FUN_020B10BC - mov r1, r0 - mov r0, r7 - ldr r7, _020B4564 ; =UNK_021CECFC - ldr r2, [r8, #0x28] - ldr r3, [r8, #0x2c] - ldr r7, [r7, #0x0] - add r2, r10, r2 - blx r7 - cmp r0, #0x0 - ldrne r1, [r4, #0x0] - mvnne r0, r6 - andne r0, r1, r0 - strne r0, [r4, #0x0] -_020B4514: - add r9, r9, #0x1 - cmp r9, #0x3 - blt _020B4498 -_020B4520: - ldr r0, [sp, #0xc] - str r0, [r8, #0x20] -_020B4528: - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x0] - add r0, r0, #0x1 - str r0, [sp, #0x0] - cmp r0, r1 - ldr r0, [sp, #0x4] - add r0, r0, #0x30 - str r0, [sp, #0x4] - blo _020B4468 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B4558: .word UNK_021CED00 -_020B455C: .word UNK_021CED04 -_020B4560: .word UNK_020FF8C4 -_020B4564: .word UNK_021CECFC - - arm_func_start FUN_020B4568 -FUN_020B4568: ; 0x020B4568 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B45E4 ; =UNK_021CECFC - movs r6, r1 - ldr r1, _020B45E8 ; =UNK_021CED00 - ldr r3, _020B45EC ; =UNK_021CED04 - mov r7, r0 - str r2, [r12, #0x0] - mov r5, #0x0 - addeq sp, sp, #0x4 - str r7, [r3, #0x0] - str r6, [r1, #0x0] - ldmeqia sp!, {r4-r7,pc} - mov r4, r5 -_020B45A0: - mov r0, r7 - bl FUN_020B10CC - str r4, [r7, #0xc] - str r4, [r7, #0x10] - str r4, [r7, #0x14] - str r4, [r7, #0x18] - str r4, [r7, #0x1c] - str r4, [r7, #0x20] - str r4, [r7, #0x24] - str r4, [r7, #0x28] - add r5, r5, #0x1 - str r4, [r7, #0x2c] - cmp r5, r6 - add r7, r7, #0x30 - blo _020B45A0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B45E4: .word UNK_021CECFC -_020B45E8: .word UNK_021CED00 -_020B45EC: .word UNK_021CED04 - - arm_func_start FUN_020B45F0 -FUN_020B45F0: ; 0x020B45F0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B4698 ; =UNK_021CED04 - mov r4, #0x30 - ldr r12, [r12, #0x0] - mov r7, r1 - mla r4, r0, r4, r12 - mov r0, r4 - mov r6, r2 - mov r5, r3 - bl FUN_020B10CC - mvn r0, #0x0 - cmp r7, r0 - beq _020B4638 - mov r0, r4 - mov r2, r7 - mov r1, #0x0 - bl FUN_020B10C4 -_020B4638: - mvn r0, #0x0 - cmp r6, r0 - beq _020B4654 - mov r0, r4 - mov r2, r6 - mov r1, #0x1 - bl FUN_020B10C4 -_020B4654: - mvn r0, #0x0 - cmp r5, r0 - beq _020B4670 - mov r0, r4 - mov r2, r5 - mov r1, #0x2 - bl FUN_020B10C4 -_020B4670: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0xc] - ldr r1, [sp, #0x20] - str r0, [r4, #0x10] - ldr r0, [sp, #0x24] - str r1, [r4, #0x14] - str r0, [r4, #0x18] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4698: .word UNK_021CED04 - - arm_func_start FUN_020B469C -FUN_020B469C: ; 0x020B469C - ldr r2, _020B46B0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r0, r1, r0, r2 - bx lr - .balign 4 -_020B46B0: .word UNK_021CED04 - - arm_func_start FUN_020B46B4 -FUN_020B46B4: ; 0x020B46B4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - add r12, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r7, r3 - mov r6, r0 - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x34] - ldr r3, [sp, #0x38] - mov r0, r7 - str r12, [sp, #0x0] - bl FUN_020B498C - ldr r2, [r7, #0x0] - and r1, r2, #0x300 - cmp r1, #0x100 - beq _020B4708 - cmp r1, #0x300 - beq _020B4708 - and r0, r2, #0x30000000 - orr r1, r1, r0 -_020B4708: - cmp r1, #0x300 - bne _020B478C - ldr r0, _020B4914 ; =0xC000C000 - ldr r1, _020B4918 ; =UNK_021CED08 - and r0, r2, r0 - and r2, r0, #0xc0000000 - mov r12, r2, lsr #0x1e - and r0, r0, #0xc000 - mov lr, r0, asr #0xe - ldr r3, _020B491C ; =UNK_020FF8AC - ldr r0, [r1, #0x0] - ldr r2, _020B4920 ; =UNK_020FF894 - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - mov r12, r12, lsl #0x1 - add r1, r2, lr, lsl #0x3 - add r3, r3, lr, lsl #0x3 - ldrh r2, [r12, r3] - ldrh r1, [r12, r1] - ldrne r0, [r0, #0x0] - mov r2, r2, asr #0x1 - addne r3, r0, r4, lsl #0xc - mov r1, r1, asr #0x1 - add r0, r5, r1 - add r2, r6, r2 - ldr r1, _020B4928 ; =0x04000470 - mov r2, r2, lsl #0xc - str r2, [r1, #0x0] - mov r0, r0, lsl #0xc - moveq r3, r4, lsl #0xc - str r0, [r1, #0x0] - str r3, [r1, #0x0] - b _020B47C0 -_020B478C: - ldr r0, _020B4918 ; =UNK_021CED08 - ldr r1, _020B4928 ; =0x04000470 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - ldrne r0, [r0, #0x0] - addne r2, r0, r4, lsl #0xc - mov r0, r6, lsl #0xc - str r0, [r1, #0x0] - mov r0, r5, lsl #0xc - moveq r2, r4, lsl #0xc - str r0, [r1, #0x0] - str r2, [r1, #0x0] -_020B47C0: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x18] - ldr r2, _020B492C ; =0x0400046C - mov r0, r0, lsl #0xc - str r0, [r2, #0x0] - mov r0, r1, lsl #0xc - str r0, [r2, #0x0] - mov r1, #0x1000 - str r1, [r2, #0x0] - ldr r0, _020B4930 ; =0x04000500 - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x10] - mov r0, r0, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r2, r2, r0, lsl #0x10 - ldr r1, _020B4934 ; =0x04000488 - ldr r0, _020B4938 ; =0x04000490 - str r2, [r1, #0x0] - mov r2, #0x10000 - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r3, r4, r2, lsl #0x10 - ldr r2, _020B493C ; =0x00010040 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x40 - str r2, [r0, #0x0] - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r0, #0x0] - ldr r1, _020B4940 ; =0x04000504 - ldr r0, _020B4918 ; =UNK_021CED08 - str r2, [r1, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r7,pc} - ldr r1, _020B4924 ; =UNK_021CED10 - ldr r0, _020B4944 ; =UNK_02106590 - ldr r2, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, r2, r0 - str r0, [r1, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4914: .word 0xC000C000 -_020B4918: .word UNK_021CED08 -_020B491C: .word UNK_020FF8AC -_020B4920: .word UNK_020FF894 -_020B4924: .word UNK_021CED10 -_020B4928: .word 0x04000470 -_020B492C: .word 0x0400046C -_020B4930: .word 0x04000500 -_020B4934: .word 0x04000488 -_020B4938: .word 0x04000490 -_020B493C: .word 0x00010040 -_020B4940: .word 0x04000504 -_020B4944: .word UNK_02106590 - - arm_func_start FUN_020B4948 -FUN_020B4948: - ldr r0, _020B4954 ; =UNK_02106590 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020B4954: .word UNK_02106590 - - arm_func_start FUN_020B4958 -FUN_020B4958: - ldr r1, _020B4964 ; =UNK_02106590 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4964: .word UNK_02106590 - - arm_func_start FUN_020B4968 -FUN_020B4968: ; 0x020B4968 - ldr r0, _020B4978 ; =UNK_021CED10 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4978: .word UNK_021CED10 - - arm_func_start FUN_020B497C -FUN_020B497C: - ldr r1, _020B4988 ; =UNK_021CED08 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4988: .word UNK_021CED08 - - arm_func_start FUN_020B498C -FUN_020B498C: ; 0x020B498C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r4, [r6, #0x0] - ldr r0, _020B4BCC ; =0xC000C000 - ldr r5, [r6, #0x4] - and r4, r4, r0 - and r0, r4, #0xc0000000 - and r4, r4, #0xc000 - mov lr, r0, lsr #0x1e - ldr r0, _020B4BD0 ; =UNK_020FF8AC - mov r12, r4, asr #0xe - ldr r8, _020B4BD4 ; =UNK_020FF894 - mov r4, lr, lsl #0x1 - add r0, r0, r12, lsl #0x3 - ldrh r9, [r4, r0] - ldr r0, [sp, #0x28] - mov r5, r5, lsl #0x16 - mov r5, r5, lsr #0x16 - mov r7, r5, lsl #0x10 - str r9, [r0, #0x10] - add r5, r8, r12, lsl #0x3 - ldrh r8, [r4, r5] - mov r5, r1 - mov r4, r3 - str r8, [r0, #0x14] - ldr r1, [r5, #0x14] - mov r7, r7, lsr #0x10 - cmp r1, #0x0 - bne _020B4A74 - ldr r1, [r5, #0x8] - mov r2, r2, lsr #0x3 - orr r1, r2, r1, lsl #0x1a - ldr r2, [r5, #0x0] - orr r1, r1, #0x40000000 - ldr r3, [r5, #0x4] - orr r1, r1, r2, lsl #0x14 - orr r2, r1, r3, lsl #0x17 - ldr r8, [r5, #0x10] - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r8, lsl #0x1d - str r2, [r1, #0x0] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0x0] - cmp r1, #0x4 - moveq r1, r7, lsl #0xf - moveq r7, r1, lsr #0x10 - ldr r1, _020B4BDC ; =UNK_020FF8D8 - ldr r1, [r1, r2, lsl #0x2] - sub r1, r1, #0x1 - and r1, r7, r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x0] - ldr r1, [r5, #0x0] - mov r1, r7, asr r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x4] - b _020B4AE0 -_020B4A74: - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - mov r12, r12, lsl #0x10 - add r1, r1, #0x5 - ldr r3, [r5, #0x8] - mov lr, lr, lsl #0x10 - ldr sb, _020B4BE0 ; =UNK_020FF8F8 - mov r12, r12, lsr #0x10 - ldr r8, _020B4BE4 ; =UNK_020FF928 - add r1, r2, r7, lsl r1 - mov r2, r3, lsl #0x1a - orr r3, r2, r1, lsr #0x3 - mov r7, lr, lsr #0x10 - add r2, r9, r12, lsl #0x4 - add r1, r8, r12, lsl #0x4 - ldr r2, [r2, r7, lsl #0x2] - orr r3, r3, #0x40000000 - ldr r1, [r1, r7, lsl #0x2] - orr r2, r3, r2, lsl #0x14 - ldr r3, [r5, #0x10] - orr r2, r2, r1, lsl #0x17 - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r3, lsl #0x1d - str r2, [r1, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] -_020B4AE0: - ldr r2, [r0, #0x0] - ldr r1, [r0, #0x10] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0x8] - ldr r2, [r0, #0x4] - ldr r1, [r0, #0x14] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0xc] - ldr r1, [r6, #0x0] - mov r2, r1, lsl #0x2 - mov r1, r1, lsl #0x3 - movs r3, r1, lsr #0x1f - mov r12, r2, lsr #0x1f - ldrne r2, [r0, #0x0] - ldrne r1, [r0, #0x8] - strne r1, [r0, #0x0] - strne r2, [r0, #0x8] - cmp r12, #0x0 - ldrne r2, [r0, #0x4] - ldrne r1, [r0, #0xc] - strne r1, [r0, #0x4] - ldr r1, _020B4BE8 ; =UNK_021CED0C - strne r2, [r0, #0xc] - ldr r7, [r1, #0x0] - cmp r7, #0x0 - beq _020B4B60 - str r3, [sp, #0x0] - add r1, r0, #0x4 - add r2, r0, #0x8 - add r3, r0, #0xc - str r12, [sp, #0x4] - blx r7 -_020B4B60: - ldr r0, [r6, #0x4] - ldr r1, [r6, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x1c - mov r3, r1, lsl #0x12 - ldr r1, [r5, #0xc] - mov r0, r0, lsl #0x10 - ldr r2, _020B4BEC ; =UNK_020FF8D0 - mov r3, r3, lsr #0x1f - cmp r1, #0x0 - mov r0, r0, lsr #0x10 - ldr r1, [r2, r3, lsl #0x2] - movne r0, r0, lsl #0x9 - bne _020B4BA4 - cmp r1, #0x4 - moveq r0, #0x0 - movne r0, r0, lsl #0x5 -_020B4BA4: - cmp r1, #0x2 - moveq r2, #0x1 - movne r2, #0x0 - add r1, r4, r0 - rsb r0, r2, #0x4 - mov r1, r1, lsr r0 - ldr r0, _020B4BF0 ; =0x040004AC - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B4BCC: .word 0xC000C000 -_020B4BD0: .word UNK_020FF8AC -_020B4BD4: .word UNK_020FF894 -_020B4BD8: .word 0x040004A8 -_020B4BDC: .word UNK_020FF8D8 -_020B4BE0: .word UNK_020FF8F8 -_020B4BE4: .word UNK_020FF928 -_020B4BE8: .word UNK_021CED0C -_020B4BEC: .word UNK_020FF8D0 -_020B4BF0: .word 0x040004AC - - arm_func_start FUN_020B4BF4 -FUN_020B4BF4: ; 0x020B4BF4 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B4CD8 ; =UNK_021CED14 - mov r6, r0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r5, [r3, #0x0] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r3, #0x30] - ldr r3, [r5, #0x18] - cmp r3, #0x0 - beq _020B4C38 - ldr r0, [r2, #0x0] - mov r1, r6 - blx r3 -_020B4C38: - ldr r0, _020B4CD8 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4CB8 - mvn r0, #0x0 - cmp r4, r0 - beq _020B4C7C - mov r0, r4 - ldr r4, [r5, #0x14] - bl FUN_020B469C - mov r3, #0x1 - mvn r1, r3, lsl r4 - ldr r2, [r0, #0x20] - and r1, r2, r1 - orr r1, r1, r3, lsl r4 - str r1, [r0, #0x20] -_020B4C7C: - ldr r0, [r5, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4CB8 -_020B4C8C: - b _020B4C9C -_020B4C90: - b _020B4CAC -_020B4C94: - b _020B4CAC -_020B4C98: - b _020B4CB8 -_020B4C9C: - mov r0, r5 - mov r1, r6 - bl FUN_020B5090 - b _020B4CB8 -_020B4CAC: - mov r0, r5 - mov r1, r6 - bl FUN_020B53B4 -_020B4CB8: - ldr r2, [r5, #0x1c] - cmp r2, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B4CD8 ; =UNK_021CED14 - mov r1, r6 - ldr r0, [r0, #0x0] - blx r2 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B4CD8: .word UNK_021CED14 - - arm_func_start FUN_020B4CDC -FUN_020B4CDC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B4D9C ; =UNK_021CED14 - mov r5, r0 - ldr r2, [r1, #0x0] - ldr r4, [r2, #0x0] - ldr r0, [r4, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, #0x1 - str r0, [r2, #0x30] - ldr r2, [r4, #0x18] - cmp r2, #0x0 - beq _020B4D24 - ldr r0, [r1, #0x0] - mov r1, r5 - blx r2 -_020B4D24: - ldr r0, _020B4D9C ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4D74 - ldr r0, [r4, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4D74 -_020B4D48: - b _020B4D58 -_020B4D4C: - b _020B4D68 -_020B4D50: - b _020B4D68 -_020B4D54: - b _020B4D74 -_020B4D58: - mov r0, r4 - mov r1, r5 - bl FUN_020B5090 - b _020B4D74 -_020B4D68: - mov r0, r4 - mov r1, r5 - bl FUN_020B53B4 -_020B4D74: - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B4D9C ; =UNK_021CED14 - mov r1, r5 - ldr r0, [r0, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4D9C: .word UNK_021CED14 - - arm_func_start FUN_020B4DA0 -FUN_020B4DA0: ; 0x020B4DA0 - ldr r0, _020B4E00 ; =UNK_021CED14 - ldr r3, [r0, #0x0] - ldr r1, [r3, #0x0] - ldr r1, [r1, #0x14] - cmp r1, #0x0 - bne _020B4DD8 - ldr r2, _020B4E04 ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4E08 ; =0x04000448 - str r1, [r2, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - str r1, [r2, #0x0] - b _020B4DF0 -_020B4DD8: - mov r2, #0x0 - str r2, [r3, #0x10] - ldr r1, [r0, #0x0] - str r2, [r1, #0x2c] - ldr r0, [r0, #0x0] - str r2, [r0, #0x28] -_020B4DF0: - ldr r0, _020B4E00 ; =UNK_021CED14 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4E00: .word UNK_021CED14 -_020B4E04: .word 0x04000440 -_020B4E08: .word 0x04000448 - - arm_func_start FUN_020B4E0C -FUN_020B4E0C: ; 0x020B4E0C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r2, _020B4F28 ; =UNK_021CED14 - mov r4, r0 - str r4, [r2, #0x0] - ldr r0, [r4, #0x0] - ldr r5, [r0, #0x14] - cmp r5, #0x0 - bne _020B4ED8 - ldr lr, _020B4F2C ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4F30 ; =0x04000444 - str r1, [lr, #0x0] - str r1, [r0, #0x0] - ldr r12, [r4, #0x0] - ldr r0, _020B4F34 ; =0x04000470 - ldr r3, [r12, #0x0] - ldr r12, [r12, #0x4] - rsb r3, r3, #0x0 - str r3, [r0, #0x0] - rsb r3, r12, #0x0 - str r3, [r0, #0x0] - str r1, [r0, #0x0] - mov r0, #0x1 - str r0, [lr, #0x0] - ldr r0, [r2, #0x0] - ldr r5, [r0, #0x8] - mov r0, r5 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4E98 - mov r0, r5 - mov r1, #0x0 - bl FUN_020B1A14 -_020B4E98: - ldr r1, _020B4F28 ; =UNK_021CED14 - str r0, [r4, #0x14] - ldr r0, [r1, #0x0] - mov r1, #0x0 - ldr r5, [r0, #0xc] - mov r0, r5 - bl FUN_020B19A8 - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4ECC - mov r0, r5 - mov r1, #0x0 - bl FUN_020B19C4 -_020B4ECC: - add sp, sp, #0x4 - str r0, [r4, #0x18] - ldmia sp!, {r4-r5,pc} -_020B4ED8: - ldr r4, [r4, #0x8] - mov r1, r5 - mov r0, r4 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r1, #0x0 - beq _020B4F14 - mov r0, r4 - mov r1, r5 - bl FUN_020B1A14 - ldr r1, [r4, #0x20] - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - add r1, r1, #0x5 - mov r1, r0, lsr r1 -_020B4F14: - ldr r0, _020B4F28 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4F28: .word UNK_021CED14 -_020B4F2C: .word 0x04000440 -_020B4F30: .word 0x04000444 -_020B4F34: .word 0x04000470 - - arm_func_start FUN_020B4F38 -FUN_020B4F38: ; 0x020B4F38 - cmp r1, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x1 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x1 - streq r1, [r0, #0x24] - cmp r2, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x2 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x2 - streq r1, [r0, #0x24] - bx lr - - arm_func_start FUN_020B4F74 -FUN_020B4F74: - ldr r0, [r0, #0x24] - ands r0, r0, #0x2 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F88 -FUN_020B4F88: - ldr r0, [r0, #0x24] - ands r0, r0, #0x1 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F9C -FUN_020B4F9C: ; 0x020B4F9C - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020B4FA4 -FUN_020B4FA4: ; 0x020B4FA4 - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020B4FAC -FUN_020B4FAC: ; 0x020B4FAC - ldr r2, _020B4FC0 ; =UNK_021CED14 - ldr r2, [r2, #0x0] - str r0, [r2, #0x2c] - str r1, [r2, #0x28] - bx lr - .balign 4 -_020B4FC0: .word UNK_021CED14 - - arm_func_start FUN_020B4FC4 -FUN_020B4FC4: ; 0x020B4FC4 - ldr r1, _020B5028 ; =UNK_021CED14 - mov r3, #0x0 - ldr r12, [r1, #0x0] - mov r1, #0x1000 - str r0, [r12, #0x2c] - ldr r2, [r0, #0x0] - str r2, [r12, #0x40] - ldr r2, [r0, #0x4] - str r2, [r12, #0x44] - str r3, [r12, #0x48] - ldr r2, [r0, #0x8] - str r2, [r12, #0x4c] - ldr r2, [r0, #0xc] - str r2, [r12, #0x50] - str r3, [r12, #0x54] - str r3, [r12, #0x58] - str r3, [r12, #0x5c] - str r1, [r12, #0x60] - ldr r1, [r0, #0x10] - str r1, [r12, #0x64] - ldr r0, [r0, #0x14] - str r0, [r12, #0x68] - ldr r0, [r12, #0x34] - str r0, [r12, #0x6c] - bx lr - .balign 4 -_020B5028: .word UNK_021CED14 - - arm_func_start FUN_020B502C -FUN_020B502C: ; 0x020B502C - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B5034 -FUN_020B5034: ; 0x020B5034 - str r1, [r0, #0x1c] - str r2, [r0, #0x20] - bx lr - - arm_func_start FUN_020B5040 -FUN_020B5040: ; 0x020B5040 - str r1, [r0, #0x8] - str r2, [r0, #0xc] - bx lr - - arm_func_start FUN_020B504C -FUN_020B504C: ; 0x020B504C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x70 - bl MIi_CpuClear16 - mov r1, #0x0 - str r1, [r4, #0x0] - mov r0, #0x2 - str r0, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - str r1, [r4, #0x24] - mov r0, #0x1 - str r0, [r4, #0x30] - str r1, [r4, #0x28] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B5090 -FUN_020B5090: ; 0x020B5090 - stmdb sp!, {r4-r10,lr} - ldr r5, _020B5158 ; =UNK_021CED14 - mov r9, r1 - ldrh r1, [r9, #0x0] - ldr r2, [r5, #0x0] - mov r10, r0 - add r7, r2, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - ldmlsia sp!, {r4-r10,pc} - mov r6, #0x1 - mov r4, #0x6 -_020B50C0: - mul r1, r8, r4 - ldr r0, [r5, #0x0] - str r6, [r0, #0x30] - ldr r2, [r9, #0x4] - ldrh r0, [r2, r1] - add r1, r2, r1 - strh r0, [r7, #0x0] - ldrh r0, [r1, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r1, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B5108 - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B5108: - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5120 - mov r0, r7 - bl FUN_020B515C -_020B5120: - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B513C - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B513C: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r9, #0x0] - mov r8, r0, lsr #0x10 - cmp r8, r1 - blo _020B50C0 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5158: .word UNK_021CED14 - - arm_func_start FUN_020B515C -FUN_020B515C: ; 0x020B515C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r1, _020B53A4 ; =UNK_021CED14 - mov r7, r0 - ldr r0, [r1, #0x0] - add r0, r0, #0x40 - bl G3_LoadMtx43 - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B533C - ldr r2, [r7, #0x0] - ldr r1, _020B53A8 ; =0xC000C000 - and r4, r2, r1 - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B51F4 - ldr r0, [r7, #0x0] - and r2, r4, #0xc000 - mov r0, r0, lsl #0x7 - mov r3, r0, lsr #0x17 - and r1, r4, #0xc0000000 - mov r1, r1, lsr #0x1e - ldr r0, _020B53AC ; =UNK_020FF8AC - mov r2, r2, asr #0xe - mov r1, r1, lsl #0x1 - add r0, r0, r2, lsl #0x3 - cmp r3, #0xff - ldrh r1, [r1, r0] - orrgt r0, r3, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r3, r0, asr #0x10 - add r0, r3, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - b _020B5218 -_020B51F4: - ldr r0, [r7, #0x0] - mov r0, r0, lsl #0x7 - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 -_020B5218: - ldr r0, _020B53A4 ; =UNK_021CED14 - mov r1, r1, lsl #0x10 - ldr r0, [r0, #0x0] - mov r6, r1, asr #0x10 - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B527C - and r1, r4, #0xc000 - and r0, r4, #0xc0000000 - ldrb r4, [r7, #0x0] - ldr r2, _020B53B0 ; =UNK_020FF894 - mov r0, r0, lsr #0x1e - mov r3, r1, asr #0xe - mov r1, r0, lsl #0x1 - add r0, r2, r3, lsl #0x3 - cmp r4, #0x7f - ldrh r1, [r1, r0] - orrgt r0, r4, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r4, r0, asr #0x10 - add r0, r4, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - b _020B5298 -_020B527C: - ldrb r0, [r7, #0x0] - cmp r0, #0x7f - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 -_020B5298: - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - mov r5, r1, lsl #0x3 - bl FUN_020B4F88 - ldr r2, [r7, #0x0] - ldr r1, _020B53A4 ; =UNK_021CED14 - eor r5, r0, r5, lsr #0x1f - ldr r0, [r1, #0x0] - mov r8, r2, lsl #0x2 - bl FUN_020B4F74 - ldr r2, [r7, #0x0] - eor r1, r0, r8, lsr #0x1f - bic r0, r2, #0x10000000 - str r0, [r7, #0x0] - ldr r2, [r7, #0x0] - ldr r3, _020B53A4 ; =UNK_021CED14 - orr r2, r2, r5, lsl #0x1c - str r2, [r7, #0x0] - ldr r2, [r7, #0x0] - mov r0, r6 - bic r2, r2, #0x20000000 - str r2, [r7, #0x0] - ldr r5, [r7, #0x0] - mov r2, r4, lsl #0x10 - orr r1, r5, r1, lsl #0x1d - str r1, [r7, #0x0] - ldr r5, [r3, #0x0] - mov r1, r2, asr #0x10 - ldr r4, [r5, #0x8] - mov r3, r7 - add r2, r4, #0xc - str r2, [sp, #0x0] - ldr r4, [r5, #0x14] - mvn r2, #0x0 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} -_020B533C: - ldr r2, _020B53A4 ; =UNK_021CED14 - ldr r0, [r7, #0x0] - ldr r5, [r2, #0x0] - mov r0, r0, lsl #0x7 - ldr r4, [r5, #0x8] - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - ldrb r1, [r7, #0x0] - add r4, r4, #0xc - movgt r0, r0, asr #0x10 - str r4, [sp, #0x0] - ldr r4, [r5, #0x14] - cmp r1, #0x7f - orrgt r1, r1, #0xff00 - movgt r1, r1, lsl #0x10 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - movgt r1, r1, asr #0x10 - mov r3, r7 - mvn r2, #0x0 - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B53A4: .word UNK_021CED14 -_020B53A8: .word 0xC000C000 -_020B53AC: .word UNK_020FF8AC -_020B53B0: .word UNK_020FF894 - - arm_func_start FUN_020B53B4 -FUN_020B53B4: ; 0x020B53B4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x44 - ldr r2, _020B57B0 ; =UNK_021CED14 - mov r10, r0 - ldr r0, [r2, #0x0] - mov r11, r1 - ldr r9, [r0, #0x2c] - ldr r1, _020B57B0 ; =UNK_021CED14 - cmp r9, #0x0 - ldreq sb, _020B57B4 ; =UNK_020FF958 - ldr r3, [r1, #0x0] - ldr r4, [r9, #0x10] - str r4, [sp, #0x18] - ldr r2, [r9, #0x14] - str r2, [sp, #0x1c] - ldr r1, [r10, #0x0] - sub r1, r4, r1 - str r1, [sp, #0x18] - ldr r1, [r10, #0x4] - sub r1, r2, r1 - str r1, [sp, #0x1c] - ldr r2, [r3, #0x24] - ldr r1, [r3, #0x10] - cmp r2, #0x0 - str r1, [sp, #0x4] - bne _020B5430 - ldr r1, [r3, #0x28] - cmp r1, #0x0 - movne r1, #0x1 - strne r1, [sp, #0x0] - bne _020B5438 -_020B5430: - mov r1, #0x0 - str r1, [sp, #0x0] -_020B5438: - ldrh r1, [r11, #0x0] - add r7, r0, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - addls sp, sp, #0x44 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - ldr r4, _020B57B0 ; =UNK_021CED14 - str r8, [sp, #0x14] - str r0, [sp, #0xc] -_020B5460: - ldr r2, [r4, #0x0] - ldr r0, [sp, #0xc] - mov r1, #0x6 - str r0, [r2, #0x30] - mul r0, r8, r1 - ldr r1, [r11, #0x4] - add r2, r1, r0 - ldrh r0, [r1, r0] - strh r0, [r7, #0x0] - ldrh r0, [r2, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r2, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B54B0 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B54B0: - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5790 - ldr r0, [sp, #0x0] - ldr r1, [r7, #0x4] - cmp r0, #0x0 - mov r0, #0x400 - rsb r0, r0, #0x0 - and r2, r1, r0 - ldr r0, [sp, #0x4] - mov r1, r1, lsl #0x16 - add r1, r0, r1, lsr #0x16 - ldr r0, _020B57B8 ; =0x000003FF - and r0, r1, r0 - orr r0, r2, r0 - str r0, [r7, #0x4] - beq _020B5600 - ldr r0, [r10, #0x14] - ldr lr, [r4, #0x0] - sub r1, r0, #0x1 - ldr r0, [r7, #0x0] - ldr r6, [lr, #0x28] - mov r2, r0, lsl #0x2 - mov r2, r2, lsr #0x1f - mov r2, r2, lsl #0x1 - mov r0, r0, lsl #0x3 - orr r5, r2, r0, lsr #0x1f - add r0, r6, r5, lsl #0x2 - add r0, r0, r1, lsl #0x1 - ldrh r1, [r0, #0x10] - ldr r0, _020B57BC ; =0x0000FFFF - str r1, [sp, #0x8] - cmp r1, r0 - bne _020B55CC - cmp r5, #0x0 - bne _020B5558 - ldr r1, [lr, #0x20] - mov r0, r6 - blx r1 - str r0, [sp, #0x8] - b _020B55B4 -_020B5558: - ands r0, r5, #0x1 - add r12, sp, #0x30 - ldmia r6, {r0-r3} - stmia r12, {r0-r3} - beq _020B5584 - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x34] - rsb r1, r1, #0x0 - str r1, [sp, #0x30] - rsb r0, r0, #0x0 - str r0, [sp, #0x34] -_020B5584: - ands r0, r5, #0x2 - beq _020B55A4 - ldr r1, [sp, #0x38] - ldr r0, [sp, #0x3c] - rsb r1, r1, #0x0 - str r1, [sp, #0x38] - rsb r0, r0, #0x0 - str r0, [sp, #0x3c] -_020B55A4: - ldr r1, [lr, #0x20] - add r0, sp, #0x30 - blx r1 - str r0, [sp, #0x8] -_020B55B4: - ldr r1, [r10, #0x14] - add r0, r6, r5, lsl #0x2 - sub r1, r1, #0x1 - add r1, r0, r1, lsl #0x1 - ldr r0, [sp, #0x8] - strh r0, [r1, #0x10] -_020B55CC: - ldr r1, [r9, #0x0] - add r0, sp, #0x20 - str r1, [sp, #0x20] - ldr r2, [r9, #0x4] - mov r1, r7 - str r2, [sp, #0x24] - ldr r3, [r9, #0x8] - add r2, sp, #0x18 - str r3, [sp, #0x28] - ldr r3, [r9, #0xc] - str r3, [sp, #0x2c] - bl FUN_020B57D8 - b _020B5750 -_020B5600: - ldr r0, _020B57C0 ; =0x0000FFFE - str r0, [sp, #0x8] - ldr r0, [r4, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B5714 - ldr r2, [r7, #0x0] - ldr r1, _020B57C4 ; =0xC000C000 - mov r6, r2, lsl #0x3 - and r5, r2, r1 - bl FUN_020B4F88 - ldr r1, [r7, #0x0] - eor r6, r0, r6, lsr #0x1f - mov r1, r1, lsl #0x2 - ldr r0, [r4, #0x0] - str r1, [sp, #0x10] - bl FUN_020B4F74 - ldr r1, [sp, #0x10] - eor r0, r0, r1, lsr #0x1f - ldr r1, [r7, #0x0] - bic r1, r1, #0x10000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r1, r1, r6, lsl #0x1c - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - bic r1, r1, #0x20000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r0, r1, r0, lsl #0x1d - str r0, [r7, #0x0] - ldr r0, [r4, #0x0] - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B56D4 - and r1, r5, #0xc000 - mov r2, r1, asr #0xe - ldr r1, _020B57C8 ; =UNK_020FF8AC - and r3, r5, #0xc0000000 - mov r3, r3, lsr #0x1e - add r2, r1, r2, lsl #0x3 - mov r3, r3, lsl #0x1 - ldr r0, [r7, #0x0] - ldr r1, _020B57CC ; =0xFE00FFFF - ldrh r2, [r3, r2] - and r1, r0, r1 - mov r0, r0, lsl #0x7 - add r0, r2, r0, lsr #0x17 - rsb r2, r0, #0x0 - ldr r0, _020B57D0 ; =0x000001FF - and r0, r2, r0 - orr r0, r1, r0, lsl #0x10 - str r0, [r7, #0x0] -_020B56D4: - ldr r0, [r4, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B5714 - and r1, r5, #0xc000 - mov r3, r1, asr #0xe - and r1, r5, #0xc0000000 - mov r1, r1, lsr #0x1e - mov r2, r1, lsl #0x1 - ldr r1, _020B57D4 ; =UNK_020FF894 - ldrb r0, [r7, #0x0] - add r1, r1, r3, lsl #0x3 - ldrh r1, [r2, r1] - add r0, r0, r1 - rsb r0, r0, #0x0 - strb r0, [r7, #0x0] -_020B5714: - ldr r2, [r7, #0x0] - ldr r0, _020B57CC ; =0xFE00FFFF - ldr r1, [sp, #0x18] - and r0, r2, r0 - mov r2, r2, lsl #0x7 - mov r2, r2, lsr #0x17 - add r2, r2, r1, asr #0xc - ldr r1, _020B57D0 ; =0x000001FF - and r1, r2, r1 - orr r0, r0, r1, lsl #0x10 - str r0, [r7, #0x0] - ldrb r1, [r7, #0x0] - ldr r0, [sp, #0x1c] - add r0, r1, r0, asr #0xc - strb r0, [r7, #0x0] -_020B5750: - ldr r3, [r4, #0x0] - ldr r1, [sp, #0x8] - ldr r2, [sp, #0x14] - ldr r3, [r3, #0x1c] - mov r0, r7 - blx r3 - cmp r0, #0x1 - addne sp, sp, #0x44 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B5790 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B5790: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - ldrh r0, [r11, #0x0] - cmp r8, r0 - blo _020B5460 - add sp, sp, #0x44 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B57B0: .word UNK_021CED14 -_020B57B4: .word UNK_020FF958 -_020B57B8: .word 0x000003FF -_020B57BC: .word 0x0000FFFF -_020B57C0: .word 0x0000FFFE -_020B57C4: .word 0xC000C000 -_020B57C8: .word UNK_020FF8AC -_020B57CC: .word 0xFE00FFFF -_020B57D0: .word 0x000001FF -_020B57D4: .word UNK_020FF894 - - arm_func_start FUN_020B57D8 -FUN_020B57D8: ; 0x020B57D8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r4, [r1, #0x0] - ldr r3, _020B5A9C ; =0x01FF0000 - and r3, r4, r3 - mov r3, r3, lsr #0x10 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0xff - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x0] - ldr r3, [r1, #0x0] - and r3, r3, #0xff - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0x7f - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x4] - ldr r5, [r1, #0x0] - and r4, r5, #0x300 - cmp r4, #0x100 - beq _020B5858 - cmp r4, #0x300 - beq _020B5858 - and r3, r5, #0x30000000 - orr r4, r4, r3 -_020B5858: - cmp r4, #0x300 - bne _020B58AC - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r5, r3 - and r5, r3, #0xc0000000 - and r3, r3, #0xc000 - mov r6, r5, lsr #0x1e - mov r5, r3, asr #0xe - ldr r3, _020B5AA8 ; =UNK_020FF894 - mov r6, r6, lsl #0x1 - add r4, r4, r5, lsl #0x3 - add r3, r3, r5, lsl #0x3 - ldrh r5, [r6, r4] - ldr r7, [sp, #0x0] - ldrh r3, [r6, r3] - ldr r4, [sp, #0x4] - add r5, r7, r5, lsl #0xb - add r3, r4, r3, lsl #0xb - str r5, [sp, #0x0] - str r3, [sp, #0x4] -_020B58AC: - ldr r5, [r0, #0x8] - ldr r4, [sp, #0x4] - add r3, sp, #0x0 - smull r8, r7, r5, r4 - cmp r3, r3 - ldr r6, [r0, #0x0] - mov r4, #0x1000 - addeq r3, sp, #0x8 - adds r8, r8, r4 - ldr r5, [sp, #0x0] - adc r7, r7, #0x0 - smlal r8, r7, r6, r5 - mov r5, r8, lsr #0xc - orr r5, r5, r7, lsl #0x14 - str r5, [r3, #0x0] - ldr r7, [r0, #0xc] - ldr r6, [sp, #0x4] - ldr r5, [r0, #0x4] - smull r8, r6, r7, r6 - adds r7, r8, r4 - ldr r4, [sp, #0x0] - adc r6, r6, #0x0 - smlal r7, r6, r5, r4 - mov r5, r7, lsr #0xc - add r4, sp, #0x8 - orr r5, r5, r6, lsl #0x14 - str r5, [r3, #0x4] - cmp r3, r4 - ldreq r3, [sp, #0xc] - ldreq r4, [sp, #0x8] - streq r3, [sp, #0x4] - ldr r3, _020B5AAC ; =UNK_021CED14 - streq r4, [sp, #0x0] - ldr r3, [r3, #0x0] - ldr r3, [r3, #0x4] - cmp r3, #0x0 - beq _020B597C - cmp r3, #0x2 - moveq r5, #0x300 - movne r5, #0x100 - cmp r5, #0x100 - ldreq r4, [r1, #0x0] - ldreq r3, _020B5AB0 ; =0xC1FFFCFF - andeq r3, r4, r3 - orreq r3, r3, r5 - streq r3, [r1, #0x0] - beq _020B597C - ldr r4, [r1, #0x0] - ldr r3, _020B5AB0 ; =0xC1FFFCFF - and r3, r4, r3 - orr r3, r3, r5 - str r3, [r1, #0x0] -_020B597C: - ldr r6, [r1, #0x0] - and r5, r6, #0x300 - cmp r5, #0x100 - beq _020B599C - cmp r5, #0x300 - beq _020B599C - and r3, r6, #0x30000000 - orr r5, r5, r3 -_020B599C: - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r6, r3 - and r6, r3, #0xc0000000 - and r3, r3, #0xc000 - mov lr, r3, asr #0xe - mov r6, r6, lsr #0x1e - mov r3, r6, lsl #0x1 - add r4, r4, lr, lsl #0x3 - ldrh r4, [r3, r4] - ldr r6, [r0, #0x0] - ldr r8, _020B5AA8 ; =UNK_020FF894 - mov r12, r4, asr #0x1 - mov r4, r12, lsl #0xc - rsb r7, r4, #0x0 - mla r7, r6, r12, r7 - add lr, r8, lr, lsl #0x3 - ldrh r3, [r3, lr] - ldr r6, [r0, #0x8] - ldr lr, [sp, #0x0] - mov r3, r3, asr #0x1 - mla r7, r6, r3, r7 - add r6, lr, r7 - str r6, [sp, #0x0] - mov lr, r3, lsl #0xc - ldr r6, [r0, #0x4] - rsb r7, lr, #0x0 - mla r7, r6, r12, r7 - ldr r0, [r0, #0xc] - ldr r6, [sp, #0x4] - mla r3, r0, r3, r7 - add r0, r6, r3 - str r0, [sp, #0x4] - cmp r5, #0x300 - moveq r0, #0x1 - movne r0, #0x0 - cmp r0, #0x0 - beq _020B5A4C - ldr r3, [sp, #0x0] - ldr r0, [sp, #0x4] - sub r3, r3, r4 - sub r0, r0, lr - str r3, [sp, #0x0] - str r0, [sp, #0x4] -_020B5A4C: - ldr r4, [sp, #0x0] - ldr r0, [r2, #0x0] - ldr r3, [sp, #0x4] - add r5, r4, r0 - str r5, [sp, #0x0] - ldr r2, [r2, #0x4] - ldr r0, _020B5AB4 ; =0x000001FF - add r2, r3, r2 - str r2, [sp, #0x4] - mov r3, r2, asr #0xc - ldr r4, [r1, #0x0] - ldr r2, _020B5AB8 ; =0xFE00FF00 - and r3, r3, #0xff - and r2, r4, r2 - and r4, r0, r5, asr #0xc - orr r0, r2, r3 - orr r0, r0, r4, lsl #0x10 - str r0, [r1, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B5A9C: .word 0x01FF0000 -_020B5AA0: .word 0xC000C000 -_020B5AA4: .word UNK_020FF8AC -_020B5AA8: .word UNK_020FF894 -_020B5AAC: .word UNK_021CED14 -_020B5AB0: .word 0xC1FFFCFF -_020B5AB4: .word 0x000001FF -_020B5AB8: .word 0xFE00FF00 - - arm_func_start FUN_020B5ABC -FUN_020B5ABC: ; 0x020B5ABC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - add r5, sp, #0x0 - mov r4, #0x0 - str r4, [r5, #0x0] - str r4, [r5, #0x4] - mov r8, r2 - ldr r2, [sp, #0x28] - mov r5, r0 - mov r9, r1 - mov r4, r3 - cmp r2, #0x0 - mov r7, #0x1 - beq _020B5B24 - add r6, sp, #0x28 -_020B5AF8: - mov r0, r9 - mov r1, r8 - mov r3, r6 - bl FUN_020B5BC8 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x28] - cmp r0, r1 - strgt r0, [sp, #0x0] - add r7, r7, #0x1 - cmp r2, #0x0 - bne _020B5AF8 -_020B5B24: - ldr r0, [r9, #0x0] - sub r2, r7, #0x1 - ldrsb r1, [r0, #0x1] - ldr r0, [sp, #0x0] - add r1, r4, r1 - mul r1, r2, r1 - sub r1, r1, r4 - str r1, [sp, #0x4] - str r0, [r5, #0x0] - str r1, [r5, #0x4] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B5B54 -FUN_020B5B54: ; 0x020B5B54 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - str r2, [sp, #0x0] - add r3, sp, #0x4 - mov r2, #0x0 - str r2, [r3, #0x0] - mov r8, r0 - str r2, [r3, #0x4] - ldr r7, [r8, #0x4] - add r0, sp, #0x0 - mov r5, r1 - mov r4, #0x1 - blx r7 - cmp r0, #0x0 - beq _020B5BAC - add r6, sp, #0x0 -_020B5B94: - cmp r0, #0xa - mov r0, r6 - addeq r4, r4, #0x1 - blx r7 - cmp r0, #0x0 - bne _020B5B94 -_020B5BAC: - ldr r0, [r8, #0x0] - ldrsb r0, [r0, #0x1] - add r0, r5, r0 - mul r0, r4, r0 - sub r0, r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B5BC8 -FUN_020B5BC8: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - mov r8, r0 - str r2, [sp, #0x0] - ldr r4, [r8, #0x4] - add r0, sp, #0x0 - mov r7, r1 - mov r6, r3 - mov r5, #0x0 - blx r4 - movs r1, r0 - beq _020B5C58 - ldr sb, _020B5C84 ; =0x0000FFFF - add r10, sp, #0x0 -_020B5C00: - cmp r1, #0xa - beq _020B5C58 - mov r0, r8 - bl FUN_020B5CE4 - mov r1, r0 - cmp r1, r9 - ldreq r0, [r8, #0x0] - ldreqh r1, [r0, #0x2] - mov r0, r8 - bl FUN_020B5C88 - ldrh r1, [r8, #0x8] - cmp r1, #0x0 - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreqsb r0, [r0, #0x2] - add r1, r7, r0 - mov r0, r10 - add r5, r5, r1 - blx r4 - movs r1, r0 - bne _020B5C00 -_020B5C58: - cmp r6, #0x0 - beq _020B5C70 - cmp r1, #0xa - ldreq r0, [sp, #0x0] - movne r0, #0x0 - str r0, [r6, #0x0] -_020B5C70: - cmp r5, #0x0 - subgt r5, r5, r7 - mov r0, r5 - add sp, sp, #0x8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5C84: .word 0x0000FFFF - - arm_func_start FUN_020B5C88 -FUN_020B5C88: ; 0x020B5C88 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - ldr lr, [r3, #0xc] - cmp lr, #0x0 - beq _020B5CD8 -_020B5CA0: - ldrh r12, [lr, #0x0] - cmp r12, r1 - bhi _020B5CCC - ldrh r2, [lr, #0x2] - cmp r1, r2 - ldrlsh r2, [r0, #0xa] - addls r3, lr, #0x8 - subls r0, r1, r12 - mlals r0, r2, r0, r3 - addls sp, sp, #0x4 - ldmlsia sp!, {pc} -_020B5CCC: - ldr lr, [lr, #0x4] - cmp lr, #0x0 - bne _020B5CA0 -_020B5CD8: - add r0, r3, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B5CE4 -FUN_020B5CE4: ; 0x020B5CE4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - cmp r0, #0x0 - beq _020B5D2C -_020B5CFC: - ldrh r2, [r0, #0x0] - cmp r2, r1 - bhi _020B5D20 - ldrh r2, [r0, #0x2] - cmp r1, r2 - bhi _020B5D20 - bl FUN_020B5D7C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020B5D20: - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _020B5CFC -_020B5D2C: - ldr r0, _020B5D38 ; =0x0000FFFF - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5D38: .word 0x0000FFFF - - arm_func_start FUN_020B5D3C -FUN_020B5D3C: ; 0x020B5D3C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r4 - bl FUN_020B7558 - sub r0, r0, #0x1 - strh r0, [r4, #0x8] - ldrh r0, [r4, #0x8] - cmp r0, #0x0 - movne r1, #0x2 - moveq r1, #0x3 - ldr r0, _020B5D78 ; =FUN_020B7718 - strh r1, [r4, #0xa] - str r0, [r4, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020B5D78: .word FUN_020B7718 - - arm_func_start FUN_020B5D7C -FUN_020B5D7C: ; 0x020B5D7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r3, [r0, #0x4] - ldr r2, _020B5E4C ; =0x0000FFFF - cmp r3, #0x0 - beq _020B5DA8 - cmp r3, #0x1 - beq _020B5DC4 - cmp r3, #0x2 - beq _020B5DD8 - b _020B5E40 -_020B5DA8: - ldrh r2, [r0, #0x0] - ldrh r3, [r0, #0xc] - sub r0, r1, r2 - add r0, r3, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - b _020B5E40 -_020B5DC4: - ldrh r2, [r0, #0x0] - sub r1, r1, r2 - add r0, r0, r1, lsl #0x1 - ldrh r2, [r0, #0xc] - b _020B5E40 -_020B5DD8: - ldrh r3, [r0, #0xc] - add r0, r0, #0xc - add r0, r0, #0x2 - sub r3, r3, #0x1 - add lr, r0, r3, lsl #0x2 - cmp r0, lr - bhi _020B5E40 -_020B5DF4: - sub r12, lr, r0 - mov r3, r12, asr #0x1 - add r3, r12, r3, lsr #0x1e - mov r3, r3, asr #0x2 - add r3, r3, r3, lsr #0x1f - mov r12, r3, asr #0x1 - mov r3, r12, lsl #0x2 - ldrh r3, [r0, r3] - add r12, r0, r12, lsl #0x2 - cmp r3, r1 - addcc r0, r12, #0x4 - blo _020B5E38 - cmp r1, r3 - subcc lr, r12, #0x4 - blo _020B5E38 - ldrh r2, [r12, #0x2] - b _020B5E40 -_020B5E38: - cmp r0, lr - bls _020B5DF4 -_020B5E40: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5E4C: .word 0x0000FFFF - - arm_func_start FUN_020B5E50 -FUN_020B5E50: ; 0x020B5E50 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r7, r0 - mov r0, r1 - cmp r0, #0x8 - ldr r0, [sp, #0x60] - str r1, [sp, #0x10] - str r0, [sp, #0x60] - ldr r0, [sp, #0x6c] - str r2, [sp, #0x14] - str r0, [sp, #0x6c] - ldrlt r0, [sp, #0x10] - mov r11, r3 - ldr r6, [sp, #0x64] - ldr r5, [sp, #0x68] - movge r2, #0x3 - clzlt r0, r0 - rsblt r2, r0, #0x1f - ldr r0, [sp, #0x14] - cmp r0, #0x8 - ldrlt r0, [sp, #0x14] - movge r1, #0x3 - clzlt r0, r0 - rsblt r1, r0, #0x1f - ldr r0, _020B6170 ; =UNK_020FF970 - mvn r3, #0x0 - add r1, r0, r1, lsl #0x3 - add r0, r1, r2, lsl #0x1 - ldrb r4, [r1, r2, lsl #0x1] - ldrb r1, [r0, #0x1] - ldr r2, [sp, #0x14] - cmp r6, #0x0 - str r1, [sp, #0x18] - ldr r1, [sp, #0x10] - and r1, r1, r3, lsl r4 - str r1, [sp, #0x1c] - ldr r1, [sp, #0x18] - and r1, r2, r3, lsl r1 - str r1, [sp, #0x20] - moveq r1, #0x1 - streq r1, [sp, #0x24] - movne r1, #0x2 - strne r1, [sp, #0x24] - mov r1, #0x0 - str r1, [sp, #0x28] - bl FUN_020B704C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r10, r1, asr r4 - ldr r1, [sp, #0x18] - mov r1, r2, asr r1 - str r1, [sp, #0x2c] - ldr r1, [sp, #0x24] - mov r2, r1, lsl r4 - ldr r1, [sp, #0x18] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x6c] - mov r9, r2, asr r1 - mov r1, #0x0 - str r1, [sp, #0x30] - str r1, [sp, #0x34] - b _020B5FE8 -_020B5F48: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x18] - ldr r8, [sp, #0x34] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x60] - add lr, r1, r2, lsl #0x3 - b _020B5FD4 -_020B5F64: - mov r1, r8, lsl r4 - add r2, r11, r1, lsl #0x3 - ldr r1, _020B6174 ; =0x000001FF - ldr r3, [r7, #0x0] - and r12, r2, r1 - ldr r1, _020B6178 ; =0xFE00FF00 - and r2, lr, #0xff - and r1, r3, r1 - orr r1, r1, r2 - orr r1, r1, r12, lsl #0x10 - str r1, [r7, #0x0] - ldr r3, [r7, #0x0] - ldr r1, _020B617C ; =0x3FFF3FFF - mov r2, #0x400 - and r1, r3, r1 - orr r1, r1, r0 - str r1, [r7, #0x0] - rsb r1, r2, #0x0 - ldrh r2, [r7, #0x4] - add r8, r8, #0x1 - and r1, r2, r1 - orr r1, r1, r5 - strh r1, [r7, #0x4] - ldr r1, [r7, #0x0] - add r5, r5, r9 - bic r1, r1, #0x2000 - orr r1, r1, r6, lsl #0xd - str r1, [r7], #0x8 -_020B5FD4: - cmp r8, r10 - blt _020B5F64 - ldr r1, [sp, #0x30] - add r1, r1, #0x1 - str r1, [sp, #0x30] -_020B5FE8: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x2c] - cmp r2, r1 - blt _020B5F48 - ldr r0, [sp, #0x28] - mla r0, r10, r1, r0 - str r0, [sp, #0x28] - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6078 - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - str r6, [sp, #0x4] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - str r5, [sp, #0x8] - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x20] - add r3, r11, r1, lsl #0x3 - mov r0, r7 - mov r1, r4 - bl FUN_020B5E50 - ldr r1, [sp, #0x24] - add r7, r7, r0, lsl #0x3 - mul r2, r1, r4 - ldr r1, [sp, #0x20] - mul r2, r1, r2 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6078: - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B60F0 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - mov r3, r11 - add r0, r1, r0, lsl #0x3 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - str r5, [sp, #0x8] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - mov r0, r7 - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - mov r2, r4 - bl FUN_020B5E50 - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x1c] - add r7, r7, r0, lsl #0x3 - mul r1, r2, r1 - mul r2, r4, r1 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B60F0: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - add r0, r1, r0, lsl #0x3 - ldr r1, [sp, #0x1c] - ldr r3, [sp, #0x14] - str r0, [sp, #0x0] - sub r1, r2, r1 - ldr r2, [sp, #0x20] - str r6, [sp, #0x4] - sub r2, r3, r2 - ldr r3, [sp, #0x1c] - ldr r4, [sp, #0x6c] - str r5, [sp, #0x8] - mov r0, r7 - add r3, r11, r3, lsl #0x3 - str r4, [sp, #0xc] - bl FUN_020B5E50 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6164: - ldr r0, [sp, #0x28] - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B6170: .word UNK_020FF970 -_020B6174: .word 0x000001FF -_020B6178: .word 0xFE00FF00 -_020B617C: .word 0x3FFF3FFF - - arm_func_start FUN_020B6180 -FUN_020B6180: ; 0x020B6180 - stmdb sp!, {r4-r6,lr} - mov r3, r0, lsr #0x3 - mov r6, r1, lsr #0x3 - mul r12, r3, r6 - and r2, r0, #0x4 - and lr, r0, #0x2 - and r0, r0, #0x1 - add r4, r0, lr, lsr #0x1 - mov r5, r2, lsr #0x2 - and r0, r1, #0x4 - add lr, r12, #0x0 - add r12, r5, r4, lsl #0x1 - mla r12, r6, r12, lr - and lr, r1, #0x2 - and r1, r1, #0x1 - add lr, r1, lr, lsr #0x1 - mov r1, r0, lsr #0x2 - add r1, r1, lr, lsl #0x1 - mla r12, r3, r1, r12 - add r1, r4, r2, lsr #0x2 - add r0, lr, r0, lsr #0x2 - mla r0, r1, r0, r12 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B61DC -FUN_020B61DC: ; 0x020B61DC - stmdb sp!, {r4-r8,lr} - ldr r12, [sp, #0x1c] - ldr r8, [sp, #0x18] - mov r12, r12, lsl #0x1c - mov r4, r12, lsr #0x10 - mov r6, #0x0 - cmp r2, #0x0 - ldmleia sp!, {r4-r8,pc} - mov lr, r3, lsl #0x1 - mov r12, r6 -_020B6204: - mov r5, r0 - mov r7, r12 - cmp r1, #0x0 - ble _020B622C -_020B6214: - orr r3, r4, r8 - add r7, r7, #0x1 - cmp r7, r1 - add r8, r8, #0x1 - strh r3, [r5], #0x2 - blt _020B6214 -_020B622C: - add r6, r6, #0x1 - cmp r6, r2 - add r0, r0, lr - blt _020B6204 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B6240 -FUN_020B6240: ; 0x020B6240 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r5, [sp, #0x24] - ldr lr, [sp, #0x20] - cmp r5, #0x20 - ldr r12, [sp, #0x28] - bgt _020B6280 - mla r4, r5, lr, r3 - ldr lr, [sp, #0x2c] - str r12, [sp, #0x0] - mov r3, r5 - add r0, r0, r4, lsl #0x1 - str lr, [sp, #0x4] - bl FUN_020B61DC - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} -_020B6280: - ldr r4, [sp, #0x2c] - add r7, lr, r2 - mov r2, r4, lsl #0x1c - cmp lr, r7 - add r8, r3, r1 - mov r4, r2, lsr #0x10 - addge sp, sp, #0x8 - ldmgeia sp!, {r4-r8,pc} -_020B62A0: - cmp lr, #0x20 - movlt r1, lr - addge r1, lr, #0x20 - mov r6, r3 - cmp r3, r8 - add r5, r0, r1, lsl #0x6 - bge _020B62E4 -_020B62BC: - cmp r6, #0x20 - movlt r1, r6 - addge r1, r6, #0x3e0 - orr r2, r4, r12 - mov r1, r1, lsl #0x1 - add r6, r6, #0x1 - strh r2, [r5, r1] - cmp r6, r8 - add r12, r12, #0x1 - blt _020B62BC -_020B62E4: - add lr, lr, #0x1 - cmp lr, r7 - blt _020B62A0 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B62F8 -FUN_020B62F8: ; 0x020B62F8 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x18 - cmp r2, #0x8 - movlt r4, r2 - movge r12, #0x3 - clzlt r4, r4 - rsblt r12, r4, #0x1f - cmp r3, #0x8 - movlt r4, r3 - movge r6, #0x3 - clzlt r4, r4 - rsblt r6, r4, #0x1f - ldr r4, _020B6378 ; =UNK_020FF970 - ldr r5, [sp, #0x28] - add r4, r4, r6, lsl #0x3 - ldrb r6, [r4, r12, lsl #0x1] - add r12, r4, r12, lsl #0x1 - ldr r4, _020B637C ; =FUN_020B6908 - strb r6, [sp, #0x14] - ldrb r6, [r12, #0x1] - ldr lr, _020B6380 ; =FUN_020B68AC - ldr ip, _020B6384 ; =FUN_020B64C0 - strb r6, [sp, #0x15] - str r5, [sp, #0x0] - str r4, [sp, #0x4] - str lr, [sp, #0x8] - str r12, [sp, #0xc] - ldr r12, [sp, #0x14] - str r12, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x18 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B6378: .word UNK_020FF970 -_020B637C: .word FUN_020B6908 -_020B6380: .word FUN_020B68AC -_020B6384: .word FUN_020B64C0 - - arm_func_start FUN_020B6388 -FUN_020B6388: ; 0x020B6388 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr lr, [sp, #0x18] - ldr ip, _020B63C0 ; =FUN_020B6B10 - str lr, [sp, #0x0] - ldr lr, _020B63C4 ; =FUN_020B68AC - str r12, [sp, #0x4] - ldr ip, _020B63C8 ; =FUN_020B66D4 - str lr, [sp, #0x8] - str r12, [sp, #0xc] - str r2, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B63C0: .word FUN_020B6B10 -_020B63C4: .word FUN_020B68AC -_020B63C8: .word FUN_020B66D4 - - arm_func_start FUN_020B63CC -FUN_020B63CC: ; 0x020B63CC - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r7, r1 - ldrh r1, [sp, #0x2c] - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl FUN_020B5CE4 - ldr r1, _020B6484 ; =0x0000FFFF - mov r4, r0 - cmp r4, r1 - ldreq r0, [r7, #0x0] - ldreqh r4, [r0, #0x2] - mov r0, r7 - mov r1, r4 - bl FUN_020B5C88 - str r0, [sp, #0x8] - ldr r0, [r7, #0x0] - ldr r2, [sp, #0x28] - ldr r0, [r0, #0x8] - add r1, sp, #0x8 - ldrh r3, [r0, #0x2] - add r12, r0, #0x8 - mov r0, r8 - mla r3, r4, r3, r12 - str r3, [sp, #0xc] - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x8] - ldr r4, [r8, #0x14] - ldrsb r2, [r1, #0x0] - mov r1, r7 - mov r3, r5 - add r2, r6, r2 - blx r4 - ldrh r0, [r7, #0x8] - cmp r0, #0x0 - ldrne r0, [sp, #0x8] - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreq r0, [sp, #0x8] - ldreqsb r0, [r0, #0x2] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B6484: .word 0x0000FFFF - - arm_func_start FUN_020B6488 -FUN_020B6488: ; 0x020B6488 - str r2, [r0, #0x4] - ldr r2, [sp, #0x0] - str r3, [r0, #0x8] - strb r2, [r0, #0xc] - ldr r2, [sp, #0x4] - str r1, [r0, #0x0] - ldr r1, [sp, #0x8] - str r2, [r0, #0x14] - ldr r2, [sp, #0xc] - str r1, [r0, #0x18] - ldr r1, [sp, #0x10] - str r2, [r0, #0x1c] - str r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B64C0 -FUN_020B64C0: ; 0x020B64C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x44] - ldr r1, [sp, #0x44] - ldr r4, [sp, #0x78] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x1c] - ldr r2, [sp, #0x7c] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x20] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B6528 - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B6528: - bic r1, r10, #0x7 - str r1, [sp, #0x30] - ldr r1, [sp, #0x10] - ldr r2, [r0, #0x10] - bic r1, r1, #0x7 - str r1, [sp, #0x14] - ldr r1, [sp, #0x44] - str r2, [sp, #0x4c] - mov r3, r1, lsl #0x6 - mov r2, r3, asr #0x2 - ldr r1, [sp, #0x20] - add r3, r3, r2, lsr #0x1d - ldr r2, [sp, #0x1c] - add r6, r1, #0x7 - add r2, r2, #0x7 - bic r5, r2, #0x7 - bic r2, r6, #0x7 - ldr r1, [sp, #0x30] - str r2, [sp, #0x24] - mov r2, r3, asr #0x3 - str r2, [sp, #0x48] - mov r4, r1, asr #0x2 - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x14] - add r2, r2, r4, lsr #0x1d - mov r2, r2, asr #0x3 - str r2, [sp, #0x2c] - ldr r2, [sp, #0x14] - mov r1, r1, asr #0x2 - add r1, r2, r1, lsr #0x1d - mov r6, r1, asr #0x3 - ldr r1, [sp, #0x24] - cmp r2, r1 - ldr r1, [r0, #0x4] - str r1, [sp, #0x40] - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x0] - str r1, [sp, #0x3c] - str r0, [sp, #0x28] - ldrb r0, [sp, #0x4c] - str r0, [sp, #0x38] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x34] - addge sp, sp, #0x54 - ldmgeia sp!, {r4-r11,pc} - mov r4, #0x0 - mov r11, #0x8 -_020B65E4: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r7, [sp, #0x2c] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - movge r9, r4 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r11 - sub r0, r0, r9 - str r0, [sp, #0x18] - ldr r0, [sp, #0x30] - cmp r0, r5 - mov r8, r0 - bge _020B66B0 -_020B6630: - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x40] - str r0, [sp, #0x0] - ldr r0, [sp, #0x34] - ldr r3, [sp, #0x3c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - bl FUN_020B7068 - ldr r2, [sp, #0x1c] - cmp r8, r10 - sublt r1, r10, r8 - sub r2, r2, r8 - movge r1, r4 - cmp r2, #0x8 - movgt r2, r11 - sub r3, r2, r1 - ldr r2, [sp, #0x18] - ldr r12, [sp, #0x48] - str r2, [sp, #0x0] - ldr r2, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x44] - str r2, [sp, #0x8] - ldr r2, [sp, #0x28] - mla r0, r12, r0, r2 - mov r2, r9 - bl FUN_020B6F18 - add r8, r8, #0x8 - add r7, r7, #0x1 - cmp r8, r5 - blt _020B6630 -_020B66B0: - ldr r0, [sp, #0x14] - add r6, r6, #0x1 - add r1, r0, #0x8 - ldr r0, [sp, #0x24] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B65E4 - add sp, sp, #0x54 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B66D4 -FUN_020B66D4: ; 0x020B66D4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x2c] - ldr r1, [sp, #0x2c] - ldr r4, [sp, #0x60] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x18] - ldr r2, [sp, #0x64] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x1c] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B673C - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B673C: - ldr r1, [sp, #0x10] - bic r1, r1, #0x7 - mov r2, r1, asr #0x2 - str r1, [sp, #0x14] - add r1, r1, r2, lsr #0x1d - ldr r2, [r0, #0x10] - mov r3, r1, asr #0x3 - mul r1, r3, r2 - bic r3, r10, #0x7 - str r3, [sp, #0x28] - ldr r3, [sp, #0x2c] - mov r6, r3, lsl #0x6 - ldr r3, [sp, #0x28] - mov r4, r6, asr #0x2 - mov r5, r3, asr #0x2 - add r5, r3, r5, lsr #0x1d - add r4, r6, r4, lsr #0x1d - mov r3, r4, asr #0x3 - str r3, [sp, #0x30] - ldr r3, [sp, #0x1c] - add r1, r1, r5, asr #0x3 - add r4, r3, #0x7 - ldr r3, [r0, #0x0] - ldr r0, [sp, #0x18] - add r5, r0, #0x7 - ldr r0, [sp, #0x30] - bic r7, r5, #0x7 - mla r1, r0, r1, r3 - bic r0, r4, #0x7 - str r0, [sp, #0x20] - ldr r0, [sp, #0x30] - str r1, [sp, #0x24] - mul r0, r2, r0 - str r0, [sp, #0x34] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - cmp r1, r0 - addge sp, sp, #0x3c - ldmgeia sp!, {r4-r11,pc} - mov r5, #0x0 - mov r4, #0x8 -_020B67E0: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r6, [sp, #0x24] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x14] - movge r9, r5 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r4 - sub r11, r0, r9 - ldr r0, [sp, #0x28] - cmp r0, r7 - mov r8, r0 - bge _020B687C -_020B6828: - ldr r0, [sp, #0x18] - cmp r8, r10 - sublt r1, r10, r8 - sub r0, r0, r8 - movge r1, r5 - cmp r0, #0x8 - movgt r0, r4 - sub r3, r0, r1 - ldr r0, [sp, #0xc] - str r11, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - mov r2, r9 - str r0, [sp, #0x8] - mov r0, r6 - bl FUN_020B6F18 - ldr r0, [sp, #0x30] - add r8, r8, #0x8 - add r6, r6, r0 - cmp r8, r7 - blt _020B6828 -_020B687C: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x34] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - add r1, r0, #0x8 - ldr r0, [sp, #0x20] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B67E0 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B68AC -FUN_020B68AC: ; 0x020B68AC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldrb r2, [r3, #0xc] - ldr r12, [r3, #0x4] - cmp r2, #0x4 - orreq r0, r1, r1, lsl #0x4 - orreq r0, r0, r0, lsl #0x8 - orreq r1, r0, r0, lsl #0x10 - orrne r0, r1, r1, lsl #0x8 - orrne r1, r0, r0, lsl #0x10 - ldr r0, [r3, #0x8] - mov r2, r2, lsl #0x6 - mul lr, r12, r0 - mov r0, r2, asr #0x2 - add r0, r2, r0, lsr #0x1d - mov r2, r0, asr #0x3 - mov r0, r1 - mul r2, lr, r2 - ldr r1, [r3, #0x0] - bl MIi_CpuClearFast - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B6908 -FUN_020B6908: ; 0x020B6908 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4c - ldr r7, [sp, #0x74] - ldrb r5, [r0, #0xc] - ldr r6, [r1, #0x0] - ldr r4, [r7, #0x0] - ldr r9, [r6, #0x8] - mov r8, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r8, asr #0x2 - add r5, r8, r5, lsr #0x1d - ldrb r9, [r9, #0x1] - ldr r8, [r0, #0x4] - ldr r6, [r0, #0x8] - str r2, [sp, #0x8] - str r3, [sp, #0xc] - cmp r4, #0x0 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r11,pc} - adds r3, r2, r4 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r2, [sp, #0xc] - adds r2, r2, r9 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r10, [sp, #0x8] - add r3, r3, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - strle r10, [sp, #0x10] - movgt r10, r10, lsr #0x3 - strgt r10, [sp, #0x10] - ldr r10, [sp, #0xc] - add r2, r2, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - mov r11, r2, lsr #0x3 - mov r3, r3, lsr #0x3 - movgt r10, r10, lsr #0x3 - cmp r3, r8 - movcs r3, r8 - cmp r11, r6 - ldr r2, [sp, #0x10] - movcs r11, r6 - subs r8, r3, r2 - addmi sp, sp, #0x4c - sub r3, r11, r10 - ldmmiia sp!, {r4-r11,pc} - cmp r3, #0x0 - addlt sp, sp, #0x4c - ldmltia sp!, {r4-r11,pc} - ldr r2, [sp, #0x8] - ldr r6, [r0, #0x0] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0x8] - ldr r2, [sp, #0xc] - ldr r11, [sp, #0x8] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0xc] - sub r8, r11, r8, lsl #0x3 - ldr r11, [sp, #0xc] - ldr r2, [sp, #0x70] - sub r3, r11, r3, lsl #0x3 - str r3, [sp, #0x14] - ldr r3, [r7, #0x4] - sub r2, r2, #0x1 - str r3, [sp, #0x28] - str r2, [sp, #0x48] - str r9, [sp, #0x38] - str r4, [sp, #0x34] - ldr r4, [r1, #0x0] - ldr r2, [sp, #0x14] - mov r3, r11 - cmp r3, r2 - ldr r2, [r4, #0x8] - ldrb r3, [r2, #0x6] - str r3, [sp, #0x40] - ldrb r2, [r0, #0xc] - str r2, [sp, #0x44] - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x8] - ldrb r1, [r1, #0x0] - mul r1, r3, r1 - str r1, [sp, #0x3c] - ldr r1, [r0, #0x10] - str r1, [sp, #0x20] - ldr r1, [r0, #0x4] - ldr r0, [r0, #0x8] - ldrb r11, [sp, #0x20] - ldrb r4, [sp, #0x21] - str r1, [sp, #0x1c] - str r0, [sp, #0x18] - addle sp, sp, #0x4c - ldmleia sp!, {r4-r11,pc} -_020B6A90: - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x10] - str r0, [sp, #0x30] - ldr r0, [sp, #0x8] - cmp r0, r8 - mov r9, r0 - ble _020B6AEC -_020B6AAC: - ldr r2, [sp, #0x1c] - str r11, [sp, #0x0] - ldr r3, [sp, #0x18] - mov r0, r7 - mov r1, r10 - str r4, [sp, #0x4] - bl FUN_020B7068 - mla r1, r0, r5, r6 - add r0, sp, #0x24 - str r9, [sp, #0x2c] - str r1, [sp, #0x24] - bl FUN_020B6CAC - sub r9, r9, #0x8 - add r7, r7, #0x1 - cmp r9, r8 - bgt _020B6AAC -_020B6AEC: - ldr r0, [sp, #0xc] - add r10, r10, #0x1 - sub r1, r0, #0x8 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - bgt _020B6A90 - add sp, sp, #0x4c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6B10 -FUN_020B6B10: ; 0x020B6B10 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x2c - ldr r4, [sp, #0x54] - ldrb r5, [r0, #0xc] - str r4, [sp, #0x54] - ldr r4, [r4, #0x0] - ldr r6, [r1, #0x0] - mov r7, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r7, asr #0x2 - add r5, r7, r5, lsr #0x1d - cmp r4, #0x0 - ldr r6, [r6, #0x8] - mov r9, r3 - ldr r8, [r0, #0x4] - ldr r7, [r0, #0x8] - mov r10, r2 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x2c - ldr lr, [r0, #0x0] - ldrb r3, [r6, #0x1] - ldmeqia sp!, {r4-r11,pc} - adds r6, r10, r4 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - adds r2, r9, r3 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - cmp r10, #0x0 - movle r11, #0x0 - add r6, r6, #0x7 - movgt r11, r10, lsr #0x3 - cmp r9, #0x0 - movle r12, #0x0 - add r2, r2, #0x7 - mov r6, r6, lsr #0x3 - movgt r12, r9, lsr #0x3 - cmp r6, r8 - movcs r6, r8 - mov r2, r2, lsr #0x3 - cmp r2, r7 - movcs r2, r7 - subs r7, r6, r11 - addmi sp, sp, #0x2c - sub r2, r2, r12 - ldmmiia sp!, {r4-r11,pc} - cmp r2, #0x0 - addlt sp, sp, #0x2c - ldmltia sp!, {r4-r11,pc} - ldr r6, [r0, #0x10] - cmp r10, #0x0 - sub r8, r6, r7 - mul r8, r5, r8 - mla r11, r6, r12, r11 - andge r10, r10, #0x7 - str r8, [sp, #0x0] - ldr r8, [sp, #0x54] - mla r6, r5, r11, lr - ldr r12, [r8, #0x4] - ldr r11, [sp, #0x50] - cmp r9, #0x0 - sub r8, r11, #0x1 - andge r9, r9, #0x7 - sub r11, r9, r2, lsl #0x3 - str r12, [sp, #0x8] - str r4, [sp, #0x14] - str r8, [sp, #0x28] - str r3, [sp, #0x18] - ldr r3, [r1, #0x0] - cmp r9, r11 - ldr r2, [r3, #0x8] - sub r7, r10, r7, lsl #0x3 - ldrb r2, [r2, #0x6] - str r2, [sp, #0x20] - ldrb r0, [r0, #0xc] - str r0, [sp, #0x24] - ldr r0, [r1, #0x0] - ldr r0, [r0, #0x8] - ldrb r0, [r0, #0x0] - mul r0, r2, r0 - str r0, [sp, #0x1c] - addle sp, sp, #0x2c - ldmleia sp!, {r4-r11,pc} - add r4, sp, #0x4 -_020B6C60: - mov r8, r10 - str r9, [sp, #0x10] - cmp r10, r7 - ble _020B6C90 -_020B6C70: - mov r0, r4 - str r6, [sp, #0x4] - str r8, [sp, #0xc] - bl FUN_020B6CAC - sub r8, r8, #0x8 - cmp r8, r7 - add r6, r6, r5 - bgt _020B6C70 -_020B6C90: - ldr r0, [sp, #0x0] - sub r9, r9, #0x8 - cmp r9, r11 - add r6, r6, r0 - bgt _020B6C60 - add sp, sp, #0x2c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6CAC -FUN_020B6CAC: ; 0x020B6CAC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldr r5, [r0, #0x8] - ldr r4, [r0, #0xc] - cmp r5, #0x0 - strge r5, [sp, #0x0] - movlt r1, #0x0 - strlt r1, [sp, #0x0] - ldr r1, [r0, #0x10] - cmp r4, #0x0 - add r10, r5, r1 - ldr r1, [r0, #0x14] - movge r2, r4 - movlt r2, #0x0 - cmp r10, #0x8 - add r3, r4, r1 - movge r10, #0x8 - cmp r3, #0x8 - movge r3, #0x8 - cmp r4, #0x0 - movgt r4, #0x0 - cmp r5, #0x0 - ldr r8, [r0, #0x20] - movgt r5, #0x0 - rsb r1, r4, #0x0 - mul r7, r10, r8 - ldr r6, [r0, #0x1c] - rsb r4, r5, #0x0 - mul r9, r6, r4 - ldr r4, [r0, #0x18] - mov r10, r7 - str r4, [sp, #0x8] - ldr r4, [sp, #0x0] - cmp r8, #0x4 - mul r5, r4, r8 - ldr r4, [sp, #0x8] - str r5, [sp, #0x0] - mla r11, r1, r4, r9 - ldr r1, [r0, #0x4] - str r1, [sp, #0x4] - bne _020B6E24 - ldr r1, [r0, #0x0] - ldr r7, [r0, #0x24] - add r0, r1, r2, lsl #0x2 - str r0, [sp, #0xc] - add r0, r1, r3, lsl #0x2 - ldr r1, [sp, #0xc] - str r0, [sp, #0x10] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - add r9, sp, #0x24 - mov r4, #0xf - str r0, [sp, #0x1c] -_020B6D88: - ldr r0, [sp, #0xc] - mov r1, r11, lsr #0x1f - ldr r5, [r0, #0x0] - ldr r0, [sp, #0x4] - rsb r2, r1, r11, lsl #0x1d - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - add r1, r1, r2, ror #0x1d - strb r0, [sp, #0x28] - strb r0, [sp, #0x29] - mov r0, r9 - bl FUN_020B76B0 - ldr r8, [sp, #0x0] - mov r0, r8 - cmp r0, r10 - bhs _020B6DF8 -_020B6DCC: - mov r0, r9 - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - mvnne r1, r4, lsl r8 - addne r0, r7, r0 - andne r1, r5, r1 - orrne r5, r1, r0, lsl r8 - add r8, r8, #0x4 - cmp r8, r10 - blo _020B6DCC -_020B6DF8: - ldr r0, [sp, #0xc] - add r1, r0, #0x4 - str r5, [r0, #0x0] - ldr r0, [sp, #0x10] - str r1, [sp, #0xc] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6D88 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020B6E24: - ldr r1, [r0, #0x0] - ldr r9, [r0, #0x24] - add r0, r1, r2, lsl #0x3 - str r0, [sp, #0x14] - add r0, r1, r3, lsl #0x3 - ldr r1, [sp, #0x14] - str r0, [sp, #0x18] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - mov r4, #0xff - str r0, [sp, #0x20] -_020B6E58: - mov r1, r11, lsr #0x1f - rsb r0, r1, r11, lsl #0x1d - add r1, r1, r0, ror #0x1d - ldr r0, [sp, #0x14] - ldr r8, [r0, #0x0] - ldr r7, [r0, #0x4] - ldr r0, [sp, #0x4] - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x20] - strb r0, [sp, #0x30] - strb r0, [sp, #0x31] - add r0, sp, #0x2c - bl FUN_020B76B0 - ldr r0, [sp, #0x0] - cmp r0, r10 - mov r5, r0 - bhs _020B6EE8 -_020B6EA0: - add r0, sp, #0x2c - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - beq _020B6EDC - cmp r5, #0x20 - mvncc r1, r4, lsl r5 - addcc r0, r9, r0 - andcc r1, r8, r1 - orrcc r8, r1, r0, lsl r5 - subcs r2, r5, #0x20 - mvncs r1, r4, lsl r2 - addcs r0, r9, r0 - andcs r1, r7, r1 - orrcs r7, r1, r0, lsl r2 -_020B6EDC: - add r5, r5, #0x8 - cmp r5, r10 - blo _020B6EA0 -_020B6EE8: - ldr r0, [sp, #0x14] - str r8, [r0, #0x0] - add r1, r0, #0x8 - str r7, [r0, #0x4] - ldr r0, [sp, #0x18] - str r1, [sp, #0x14] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6E58 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6F18 -FUN_020B6F18: ; 0x020B6F18 - stmdb sp!, {r4-r6,lr} - mov lr, r0 - cmp r3, #0x8 - ldr r0, [sp, #0x14] - bne _020B6F4C - ldr r4, [sp, #0x10] - cmp r4, #0x8 - bne _020B6F4C - ldr r2, [sp, #0x18] - mov r1, lr - mov r2, r2, lsl #0x3 - bl MIi_CpuClearFast - ldmia sp!, {r4-r6,pc} -_020B6F4C: - ldr r4, [sp, #0x18] - cmp r4, #0x4 - bne _020B6FAC - mov r5, r1, lsl #0x2 - add r4, r5, r3, lsl #0x2 - mvn r3, #0x0 - rsb r4, r4, #0x20 - mov r3, r3, lsr r5 - add r1, r4, r1, lsl #0x2 - mov r3, r3, lsl r1 - ldr r1, [sp, #0x10] - add r5, lr, r2, lsl #0x2 - add r2, r5, r1, lsl #0x2 - and r6, r0, r3, lsr r4 - cmp r5, r2 - mvn r1, r3, lsr r4 - ldmcsia sp!, {r4-r6,pc} -_020B6F90: - ldr r0, [r5, #0x0] - and r0, r0, r1 - orr r0, r6, r0 - str r0, [r5], #0x4 - cmp r5, r2 - blo _020B6F90 - ldmia sp!, {r4-r6,pc} -_020B6FAC: - mov r12, r1, lsl #0x3 - add r1, r12, r3, lsl #0x3 - rsb r1, r1, #0x40 - mvn r3, #0x0 - cmp r1, #0x20 - mov r5, r3, lsr r12 - subcs r4, r1, #0x20 - addcs r3, r12, r4 - movcs r3, r5, lsl r3 - movcs r3, r3, lsr r4 - movcc r3, r5, lsl r12 - mvn r4, #0x0 - add r5, lr, r2, lsl #0x3 - cmp r12, #0x20 - mov r4, r4, lsl r1 - subcs r12, r12, #0x20 - addcs r1, r12, r1 - movcs r1, r4, lsr r1 - movcs r6, r1, lsl r12 - movcc r6, r4, lsr r1 - ldr r1, [sp, #0x10] - and lr, r0, r3 - add r4, r5, r1, lsl #0x3 - cmp r5, r4 - and r12, r0, r6 - mvn r2, r3 - mvn r1, r6 - ldmcsia sp!, {r4-r6,pc} -_020B701C: - ldr r0, [r5, #0x0] - and r0, r0, r2 - orr r0, lr, r0 - str r0, [r5, #0x0] - ldr r0, [r5, #0x4] - and r0, r0, r1 - orr r0, r12, r0 - str r0, [r5, #0x4] - add r5, r5, #0x8 - cmp r5, r4 - blo _020B701C - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B704C -FUN_020B704C: ; 0x020B704C - ldrb r3, [r0, #0x1] - ldr r2, _020B7064 ; =UNK_020FF990 - ldrb r1, [r0, #0x0] - add r0, r2, r3, lsl #0x4 - ldr r0, [r0, r1, lsl #0x2] - bx lr - .balign 4 -_020B7064: .word UNK_020FF990 - - arm_func_start FUN_020B7068 -FUN_020B7068: ; 0x020B7068 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr fp, _020B7164 ; =UNK_020FF970 - mov r9, #0x0 - mov r10, #0x3 - mvn r7, #0x0 -_020B7080: - ldr r4, [sp, #0x2c] - ldr r6, [sp, #0x28] - and r12, r3, r7, lsl r4 - cmp r12, r1 - mov r8, r7, lsl r6 - mov r5, r7, lsl r4 - and lr, r2, r7, lsl r6 - bhi _020B70D0 - mla r9, r2, r12, r9 - cmp lr, r0 - movhi r2, lr - subhi r1, r1, r12 - subhi r3, r3, r12 - bhi _020B7118 - sub r3, r3, r12 - mla r9, lr, r3, r9 - sub r0, r0, lr - sub r1, r1, r12 - sub r2, r2, lr - b _020B7118 -_020B70D0: - cmp lr, r0 - mlals r9, lr, r12, r9 - mvn r3, r5 - movls r3, r12 - subls r0, r0, lr - subls r2, r2, lr - bls _020B7118 - and r2, r1, r5 - mla r5, lr, r2, r9 - and r2, r0, r8 - and r1, r1, r3 - add r2, r5, r2, lsl r4 - mvn r3, r8 - add r1, r2, r1, lsl r6 - and r0, r0, r3 - add sp, sp, #0x4 - add r0, r1, r0 - ldmia sp!, {r4-r11,pc} -_020B7118: - cmp r2, #0x8 - movlt r4, r2 - movge r5, r10 - clzlt r4, r4 - rsblt r5, r4, #0x1f - cmp r3, #0x8 - movge r4, r10 - movlt r4, r3 - clzlt r4, r4 - rsblt r4, r4, #0x1f - add r4, r11, r4, lsl #0x3 - add r6, r4, r5, lsl #0x1 - ldrb r5, [r4, r5, lsl #0x1] - ldrb r4, [r6, #0x1] - str r5, [sp, #0x28] - str r4, [sp, #0x2c] - b _020B7080 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7164: .word UNK_020FF970 - - arm_func_start FUN_020B7168 -FUN_020B7168: ; 0x020B7168 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r12, [sp, #0x28] - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - ands r0, r12, #0x100 - beq _020B71AC - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r1, [sp, #0x20] - sub r0, r1, r0 - add r5, r5, r0 - b _020B71E4 -_020B71AC: - ands r0, r12, #0x80 - beq _020B71E4 - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r2, [sp, #0x20] - add r1, r0, #0x1 - add r0, r2, #0x1 - add r0, r0, r0, lsr #0x1f - mov r2, r0, asr #0x1 - add r0, r1, r1, lsr #0x1f - sub r0, r2, r0, asr #0x1 - add r5, r5, r0 -_020B71E4: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [sp, #0x0] - ldr r12, [sp, #0x2c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str r12, [sp, #0x8] - bl FUN_020B72C4 - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7218 -FUN_020B7218: ; 0x020B7218 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - ldr r4, [sp, #0x34] - mov r8, r0 - str r4, [sp, #0x0] - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x30] - ldr r1, [r8, #0x4] - ldr r2, [r8, #0x8] - ldr r3, [r8, #0xc] - add r0, sp, #0xc - bl FUN_020B5ABC - ands r0, r4, #0x10 - ldrne r0, [sp, #0xc] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r7, r7, r0, asr #0x1 - bne _020B7274 - ands r0, r4, #0x20 - ldrne r0, [sp, #0xc] - subne r7, r7, r0 -_020B7274: - ands r0, r4, #0x2 - ldrne r0, [sp, #0x10] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r6, r6, r0, asr #0x1 - bne _020B7298 - ands r0, r4, #0x4 - ldrne r0, [sp, #0x10] - subne r6, r6, r0 -_020B7298: - str r5, [sp, #0x0] - ldr r0, [sp, #0x34] - str r4, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0xc] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl FUN_020B72C4 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B72C4 -FUN_020B72C4: ; 0x020B72C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r4, [r10, #0x4] - ldr r0, [sp, #0x40] - ldr r4, [r4, #0x0] - ldr r5, [r10, #0xc] - ldrsb r4, [r4, #0x1] - cmp r0, #0x0 - mov r9, r1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x38] - mov r8, r2 - str r0, [sp, #0x38] - mov r7, r3 - add r6, r5, r4 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4-r11,pc} - add r0, r7, #0x1 - ldr r1, [sp, #0x3c] - add r0, r0, r0, lsr #0x1f - mov r0, r0, asr #0x1 - and r5, r1, #0x800 - and r11, r1, #0x400 - str r0, [sp, #0x8] - mov r4, #0x0 -_020B732C: - mov r1, r9 - cmp r5, #0x0 - beq _020B7358 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - sub r0, r7, r0 - add r1, r9, r0 - b _020B7388 -_020B7358: - cmp r11, #0x0 - beq _020B7388 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - add r0, r0, #0x1 - add r1, r0, r0, lsr #0x1f - ldr r0, [sp, #0x8] - sub r0, r0, r1, asr #0x1 - add r1, r9, r0 -_020B7388: - ldr r2, [sp, #0xc] - add r3, sp, #0xc - str r2, [sp, #0x0] - str r3, [sp, #0x4] - ldr r3, [sp, #0x38] - mov r0, r10 - mov r2, r8 - bl FUN_020B73C0 - ldr r0, [sp, #0xc] - add r8, r8, r6 - cmp r0, #0x0 - bne _020B732C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B73C0 -FUN_020B73C0: ; 0x020B73C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r0 - ldr r6, [r10, #0x8] - ldr r5, [r10, #0x4] - ldr r4, [sp, #0x30] - add r0, sp, #0x8 - str r4, [sp, #0x8] - ldr r4, [r5, #0x4] - mov r9, r1 - mov r8, r2 - mov r7, r3 - blx r4 - cmp r0, #0x0 - beq _020B743C - add r11, sp, #0x8 -_020B7400: - cmp r0, #0xa - beq _020B743C - str r7, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [r10, #0x0] - mov r1, r5 - mov r2, r9 - mov r3, r8 - bl FUN_020B63CC - add r1, r9, r0 - mov r0, r11 - add r9, r1, r6 - blx r4 - cmp r0, #0x0 - bne _020B7400 -_020B743C: - ldr r1, [sp, #0x34] - cmp r1, #0x0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - cmp r0, #0xa - ldreq r1, [sp, #0x8] - ldr r0, [sp, #0x34] - movne r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7468 -FUN_020B7468: ; 0x020B7468 - stmdb sp!, {r4-r6,lr} - ldrh r2, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov r1, #0x0 - add r2, r0, r2 - cmp r3, #0x0 - ldmleia sp!, {r4-r6,pc} - ldr r3, _020B7548 ; =0x46494E46 - ldr ip, _020B754C ; =0x43574448 - ldr r4, _020B7550 ; =0x434D4150 - ldr lr, _020B7554 ; =0x43474C50 -_020B7494: - ldr r5, [r2, #0x0] - cmp r5, r4 - bhi _020B74B0 - cmp r5, r4 - bhs _020B7518 - cmp r5, lr - b _020B752C -_020B74B0: - cmp r5, r12 - bhi _020B74C4 - cmp r5, r12 - beq _020B7500 - b _020B752C -_020B74C4: - cmp r5, r3 - bne _020B752C - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - add r5, r5, r0 - str r5, [r6, #0x8] - ldr r5, [r6, #0xc] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0xc] - ldr r5, [r6, #0x10] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x10] - b _020B752C -_020B7500: - add r6, r2, #0x8 - ldr r5, [r6, #0x4] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x4] - b _020B752C -_020B7518: - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x8] -_020B752C: - ldrh r5, [r0, #0xe] - ldr r6, [r2, #0x4] - add r1, r1, #0x1 - cmp r1, r5 - add r2, r2, r6 - blt _020B7494 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B7548: .word 0x46494E46 -_020B754C: .word 0x43574448 -_020B7550: .word 0x434D4150 -_020B7554: .word 0x43474C50 - - arm_func_start FUN_020B7558 -FUN_020B7558: ; 0x020B7558 - stmdb sp!, {r4-r6,lr} - movs r6, r0 - mov r5, r1 - beq _020B75C8 - cmp r6, #0x0 - beq _020B7584 - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7588 -_020B7584: - mov r0, #0x0 -_020B7588: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B75CC - cmp r6, #0x0 - beq _020B75B4 - ldrh r0, [r6, #0x6] - cmp r0, #0x100 - movcs r0, #0x1 - bhs _020B75B8 -_020B75B4: - mov r0, #0x0 -_020B75B8: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B75CC -_020B75C8: - mov r0, #0x0 -_020B75CC: - cmp r0, #0x0 - movne r4, #0x0 - bne _020B7654 - cmp r6, #0x0 - beq _020B7640 - cmp r6, #0x0 - beq _020B75FC - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7600 -_020B75FC: - mov r0, #0x0 -_020B7600: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B7644 - cmp r6, #0x0 - beq _020B762C - ldrh r0, [r6, #0x6] - cmp r0, #0x1 - movcs r0, #0x1 - bhs _020B7630 -_020B762C: - mov r0, #0x0 -_020B7630: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B7644 -_020B7640: - mov r0, #0x0 -_020B7644: - cmp r0, #0x0 - movne r4, #0x1 - bne _020B7654 - bl OS_Terminate -_020B7654: - mov r0, r6 - bl FUN_020B7468 - ldr r1, _020B76AC ; =0x46494E46 - mov r0, r6 - bl FUN_020B01F8 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r6,pc} - add r0, r0, #0x8 - str r0, [r5, #0x0] - cmp r4, #0x0 - beq _020B76A0 - ldr r2, [r5, #0x0] - mov r1, #0x0 - ldrsb r0, [r2, #0x6] - strb r0, [r2, #0x7] - ldr r0, [r5, #0x0] - strb r1, [r0, #0x6] -_020B76A0: - add r0, r4, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B76A8: .word 0x4E465452 -_020B76AC: .word 0x46494E46 - - arm_func_start FUN_020B76B0 -FUN_020B76B0: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrsb r2, [r0, #0x4] - ldrb r12, [r0, #0x5] - mov r4, r1 - cmp r2, r4 - subge r1, r2, r4 - movge r5, r12, lsr r1 - strgeb r1, [r0, #0x4] - bge _020B7704 - ldr r3, [r0, #0x0] - sub r1, r4, r2 - add r2, r3, #0x1 - str r2, [r0, #0x0] - ldrb r2, [r3, #0x0] - mov r5, r12, lsl r1 - strb r2, [r0, #0x5] - mov r2, #0x8 - strb r2, [r0, #0x4] - bl FUN_020B76B0 - orr r5, r0, r5 -_020B7704: - rsb r0, r4, #0x8 - mov r1, #0xff - and r0, r5, r1, asr r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7718 -FUN_020B7718: ; 0x020B7718 - ldr r1, [r0, #0x0] - ldrh r2, [r1], #0x2 - str r1, [r0, #0x0] - mov r0, r2 - bx lr - - arm_func_start FUN_020B772C -FUN_020B772C: ; 0x020B772C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - ldrb r0, [r6, #0x9] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - add r4, r6, #0x8 -_020B7750: - ldrh r0, [r6, #0xe] - ldrh r1, [r4, r0] - add r0, r4, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r7, r6, r0 - mov r0, r7 - bl FUN_020B79A4 - mov r0, r7 - bl FUN_020B780C - ldrb r0, [r6, #0x9] - add r5, r5, #0x1 - cmp r5, r0 - blo _020B7750 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7790 -FUN_020B7790: ; 0x020B7790 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrb r0, [r8, #0x9] - mov r7, r1 - mov r5, #0x1 - cmp r0, #0x0 - mov r6, #0x0 - bls _020B7800 - add r4, r8, #0x8 -_020B77B8: - ldrh r0, [r8, #0xe] - mov r1, r7 - ldrh r2, [r4, r0] - add r0, r4, r0 - mla r0, r2, r6, r0 - ldr r0, [r0, #0x4] - add r9, r8, r0 - mov r0, r9 - bl FUN_020B7A04 - and r5, r5, r0 - mov r0, r9 - mov r1, r7 - bl FUN_020B7864 - ldrb r1, [r8, #0x9] - add r6, r6, #0x1 - and r5, r5, r0 - cmp r6, r1 - blo _020B77B8 -_020B7800: - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B780C -FUN_020B780C: ; 0x020B780C - ldr r2, [r0, #0x8] - mov r1, #0x0 - add r2, r0, r2 - ldrh r0, [r2, #0x2] - add r12, r2, r0 - ldrb r0, [r12, #0x1] - cmp r0, #0x0 - bxls lr -_020B782C: - ldrh r2, [r12, #0x6] - ldrh r0, [r12, r2] - add r2, r12, r2 - add r2, r2, #0x4 - mla r3, r0, r1, r2 - ldrb r0, [r3, #0x3] - add r1, r1, #0x1 - ands r2, r0, #0x1 - bicne r0, r0, #0x1 - strneb r0, [r3, #0x3] - ldrb r0, [r12, #0x1] - cmp r1, r0 - blo _020B782C - bx lr - - arm_func_start FUN_020B7864 -FUN_020B7864: ; 0x020B7864 - stmdb sp!, {r4-r10,lr} - ldr r2, [r0, #0x8] - mov r10, r1 - add r9, r0, r2 - ldrh r0, [r9, #0x2] - mov r6, #0x1 - mov r7, #0x0 - add r8, r9, r0 - ldrb r0, [r8, #0x1] - cmp r0, #0x0 - bls _020B7908 - mov r5, r7 - mov r4, r7 -_020B7898: - ldrh r1, [r8, #0x6] - ldrh r0, [r10, #0x34] - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r0, r10, r0 - add r1, r2, r1 - add r1, r1, r5 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B78F0 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B78F4 - mov r0, r9 - mov r2, r10 - bl FUN_020B7910 - b _020B78F4 -_020B78F0: - mov r6, r4 -_020B78F4: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r5, r5, #0x10 - cmp r7, r0 - blo _020B7898 -_020B7908: - mov r0, r6 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020B7910 -FUN_020B7910: - stmdb sp!, {r4-r6,lr} - ldrh r5, [r1, #0x0] - ldr r2, [r2, #0x2c] - ldrh r4, [r3, #0x2] - mov r2, r2, lsl #0x10 - add r12, r0, r5 - mov r5, r2, lsr #0x10 - ands r2, r4, #0x1 - ldrh r4, [r3, #0x0] - moveq r3, r5, lsl #0xf - moveq r5, r3, lsr #0x10 - moveq r2, r4, lsl #0xf - moveq r4, r2, lsr #0x10 - ldrb r3, [r1, #0x2] - mov r2, #0x0 - cmp r3, #0x0 - bls _020B7994 - add r3, r4, r5 - mov r3, r3, lsl #0x10 - add r6, r0, #0x4 - mov r4, r3, lsr #0x10 -_020B7964: - ldrh r5, [r0, #0xa] - ldrb r3, [r12, r2] - add r2, r2, #0x1 - ldrh lr, [r6, r5] - add r5, r6, r5 - mla r3, lr, r3, r5 - ldr r3, [r3, #0x4] - add r3, r0, r3 - strh r4, [r3, #0x1c] - ldrb r3, [r1, #0x2] - cmp r2, r3 - blo _020B7964 -_020B7994: - ldrb r0, [r1, #0x3] - orr r0, r0, #0x1 - strb r0, [r1, #0x3] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B79A4 -FUN_020B79A4: ; 0x020B79A4 - stmdb sp!, {r4-r6,lr} - ldr r2, [r0, #0x8] - mov r4, #0x0 - ldrh r1, [r0, r2] - add r6, r0, r2 - add r5, r6, r1 - ldrb r0, [r5, #0x1] - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020B79C8: - ldrh r1, [r5, #0x6] - ldrh r0, [r5, r1] - add r1, r5, r1 - add r1, r1, #0x4 - mla r1, r0, r4, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - beq _020B79F0 - mov r0, r6 - bl FUN_020B7AB8 -_020B79F0: - ldrb r0, [r5, #0x1] - add r4, r4, #0x1 - cmp r4, r0 - blo _020B79C8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B7A04 -FUN_020B7A04: ; 0x020B7A04 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - mov r10, r1 - ldrh r1, [r0, r2] - add r9, r0, r2 - mov r11, #0x1 - add r8, r9, r1 - ldrb r0, [r8, #0x1] - mov r7, #0x0 - cmp r0, #0x0 - bls _020B7AAC - mov r6, r7 - mov r4, r7 - add r5, r10, #0x3c -_020B7A40: - ldrh r1, [r8, #0x6] - mov r0, r5 - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B7A94 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B7A98 - mov r0, r9 - mov r2, r10 - bl FUN_020B7B40 - b _020B7A98 -_020B7A94: - mov r11, r4 -_020B7A98: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020B7A40 -_020B7AAC: - mov r0, r11 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7AB8 -FUN_020B7AB8: ; 0x020B7AB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r1, #0x0] - ldrb r2, [r1, #0x2] - mov r3, #0x0 - add r12, r0, r4 - cmp r2, #0x0 - bls _020B7B28 - add r2, r0, #0x4 - mov r5, #0x1000 - ldr lr, _020B7B3C ; =0xC00F0000 -_020B7AE4: - ldrh r7, [r0, #0xa] - ldrb r4, [r12, r3] - add r3, r3, #0x1 - ldrh r6, [r2, r7] - add r7, r2, r7 - mla r4, r6, r4, r7 - ldr r4, [r4, #0x4] - add r6, r0, r4 - ldr r4, [r6, #0x14] - and r4, r4, lr - str r4, [r6, #0x14] - str r5, [r6, #0x24] - ldr r4, [r6, #0x24] - str r4, [r6, #0x28] - ldrb r4, [r1, #0x2] - cmp r3, r4 - blo _020B7AE4 -_020B7B28: - ldrb r0, [r1, #0x3] - bic r0, r0, #0x1 - strb r0, [r1, #0x3] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B7B3C: .word 0xC00F0000 - - arm_func_start FUN_020B7B40 -FUN_020B7B40: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r11, r1 - mov r9, r3 - ldr r1, [r9, #0x0] - mov r10, r0 - and r0, r1, #0x1c000000 - cmp r0, #0x14000000 - ldrh r3, [r11, #0x0] - ldrne r1, [r2, #0x8] - mov r8, #0x0 - add r0, r10, r3 - str r0, [sp, #0x4] - ldrne r0, _020B7C50 ; =0x0000FFFF - andne r0, r1, r0 - strne r0, [sp, #0x0] - ldreq r1, [r2, #0x18] - ldreq r0, _020B7C50 ; =0x0000FFFF - andeq r0, r1, r0 - streq r0, [sp, #0x0] - ldrb r0, [r11, #0x2] - cmp r0, #0x0 - bls _020B7C3C - mov r4, #0x1000 - add r5, r10, #0x4 -_020B7BA4: - ldrh r6, [r10, #0xa] - ldr r0, [sp, #0x4] - ldr r1, [r9, #0x0] - ldrb r2, [r0, r8] - ldrh r3, [r5, r6] - ldr r0, [sp, #0x0] - add r6, r5, r6 - add r0, r1, r0 - mla r1, r3, r2, r6 - ldr r1, [r1, #0x4] - add r6, r10, r1 - ldr r1, [r6, #0x14] - orr r0, r1, r0 - str r0, [r6, #0x14] - ldr r3, [r9, #0x4] - ldr r0, _020B7C54 ; =0x000007FF - ldrh r1, [r6, #0x20] - and r2, r3, r0 - and r7, r0, r3, lsr #0xb - cmp r2, r1 - moveq r0, r4 - beq _020B7C08 - mov r0, r2, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C08: - str r0, [r6, #0x24] - ldrh r1, [r6, #0x22] - cmp r7, r1 - moveq r0, r4 - beq _020B7C28 - mov r0, r7, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C28: - str r0, [r6, #0x28] - ldrb r0, [r11, #0x2] - add r8, r8, #0x1 - cmp r8, r0 - blo _020B7BA4 -_020B7C3C: - ldrb r0, [r11, #0x3] - orr r0, r0, #0x1 - strb r0, [r11, #0x3] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7C50: .word 0x0000FFFF -_020B7C54: .word 0x000007FF - - arm_func_start FUN_020B7C58 -FUN_020B7C58: ; 0x020B7C58 - ldrh r2, [r0, #0x32] - mov r1, #0x0 - bic r2, r2, #0x1 - strh r2, [r0, #0x32] - ldr r2, [r0, #0x2c] - str r1, [r0, #0x2c] - mov r0, r2 - bx lr - - arm_func_start FUN_020B7C78 -FUN_020B7C78: ; 0x020B7C78 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r4, r1 - mov r5, r0 - beq _020B7C90 - bl GX_BeginLoadTexPltt -_020B7C90: - ldrh r2, [r5, #0x30] - ldr r0, [r5, #0x38] - ldr r3, [r5, #0x2c] - ldr r1, _020B7CD8 ; =0x0000FFFF - add r0, r5, r0 - and r1, r3, r1 - mov r1, r1, lsl #0x3 - mov r2, r2, lsl #0x3 - bl GX_LoadTexPltt - ldrh r0, [r5, #0x32] - cmp r4, #0x0 - addeq sp, sp, #0x4 - orr r0, r0, #0x1 - strh r0, [r5, #0x32] - ldmeqia sp!, {r4-r5,pc} - bl GX_EndLoadTexPltt - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B7CD8: .word 0x0000FFFF - - arm_func_start FUN_020B7CDC -FUN_020B7CDC: ; 0x020B7CDC - str r1, [r0, #0x2c] - bx lr - - arm_func_start FUN_020B7CE4 -FUN_020B7CE4: ; 0x020B7CE4 - ldrh r0, [r0, #0x30] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7CF0 -FUN_020B7CF0: ; 0x020B7CF0 - ldrh r12, [r0, #0x10] - mov r3, #0x0 - bic r12, r12, #0x1 - strh r12, [r0, #0x10] - ldrh r12, [r0, #0x20] - bic r12, r12, #0x1 - strh r12, [r0, #0x20] - ldr r12, [r0, #0x8] - str r12, [r1, #0x0] - str r3, [r0, #0x8] - ldr r1, [r0, #0x18] - str r1, [r2, #0x0] - str r3, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7D28 -FUN_020B7D28: ; 0x020B7D28 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - movs r8, r1 - mov r9, r0 - beq _020B7D40 - bl GX_BeginLoadTex -_020B7D40: - ldrh r0, [r9, #0xc] - movs r2, r0, lsl #0x3 - beq _020B7D74 - ldr r1, [r9, #0x8] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x14] - and r1, r1, r0 - add r0, r9, r3 - mov r1, r1, lsl #0x3 - bl GX_LoadTex - ldrh r0, [r9, #0x10] - orr r0, r0, #0x1 - strh r0, [r9, #0x10] -_020B7D74: - ldrh r0, [r9, #0x1c] - movs r7, r0, lsl #0x3 - beq _020B7DDC - ldr r1, [r9, #0x18] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x24] - and r4, r1, r0 - mov r5, r4, lsl #0x3 - ldr r6, [r9, #0x28] - mov r1, r5 - mov r2, r7 - add r0, r9, r3 - add r6, r9, r6 - bl GX_LoadTex - ldr r0, _020B7DF8 ; =0x0001FFFF - and r1, r5, #0x40000 - and r0, r0, r4, lsl #0x3 - mov r0, r0, lsr #0x1 - add r2, r0, #0x20000 - mov r0, r6 - add r1, r2, r1, lsr #0x2 - mov r2, r7, lsr #0x1 - bl GX_LoadTex - ldrh r0, [r9, #0x20] - orr r0, r0, #0x1 - strh r0, [r9, #0x20] -_020B7DDC: - cmp r8, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - bl GX_EndLoadTex - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B7DF4: .word 0x0000FFFF -_020B7DF8: .word 0x0001FFFF - - arm_func_start FUN_020B7DFC -FUN_020B7DFC: ; 0x020B7DFC - cmp r1, #0x0 - strne r1, [r0, #0x8] - cmp r2, #0x0 - strne r2, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7E10 -FUN_020B7E10: ; 0x020B7E10 - ldrh r0, [r0, #0x1c] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E1C -FUN_020B7E1C: ; 0x020B7E1C - ldrh r0, [r0, #0xc] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E28 -FUN_020B7E28: ; 0x020B7E28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x8 - mov r4, r1 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7E88 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} -_020B7E74: - ldr r0, [r5, #0x0] - orr r0, r0, #0x10 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7E88 -FUN_020B7E88: - ldr r2, [r0, #0x0] - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r2, r1 - bne _020B7EB8 - ldr r3, [r2, #0x10] - mov r2, #0x0 - str r3, [r0, #0x0] - str r2, [r1, #0x10] - mov r0, #0x1 - bx lr -_020B7EB8: - ldr r3, [r2, #0x10] - cmp r3, #0x0 - beq _020B7EF4 -_020B7EC4: - cmp r3, r1 - bne _020B7EE4 - ldr r1, [r3, #0x10] - mov r0, #0x0 - str r1, [r2, #0x10] - str r0, [r3, #0x10] - mov r0, #0x1 - bx lr -_020B7EE4: - mov r2, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B7EC4 -_020B7EF4: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B7EFC -FUN_020B7EFC: ; 0x020B7EFC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - ldr r2, [r4, #0x8] - mov r5, r0 - ldrb r0, [r2, #0x0] - cmp r0, #0x4a - beq _020B7F50 - cmp r0, #0x4d - beq _020B7F34 - cmp r0, #0x56 - beq _020B7F6C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F34: - add r0, r5, #0x3c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F50: - add r0, r5, #0x44 - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F6C: - add r0, r5, #0x4c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7F88 -FUN_020B7F88: ; 0x020B7F88 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020B7FA4: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020B7FE4 -_020B7FB4: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020B7FB4 -_020B7FE4: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020B7FA4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7FF8 -FUN_020B7FF8: ; 0x020B7FF8 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - streq r1, [r0, #0x0] - bxeq lr - ldr r3, [r12, #0x10] - cmp r3, #0x0 - bne _020B8058 - ldrb r3, [r12, #0x18] - ldrb r2, [r1, #0x18] - cmp r3, r2 - bls _020B8050 - ldr r2, [r1, #0x10] - mov r3, r1 - cmp r2, #0x0 - beq _020B8044 -_020B8034: - ldr r3, [r3, #0x10] - ldr r2, [r3, #0x10] - cmp r2, #0x0 - bne _020B8034 -_020B8044: - str r12, [r3, #0x10] - str r1, [r0, #0x0] - bx lr -_020B8050: - str r1, [r12, #0x10] - bx lr -_020B8058: - cmp r3, #0x0 - beq _020B80AC - ldrb r2, [r1, #0x18] -_020B8064: - ldrb r0, [r3, #0x18] - cmp r0, r2 - blo _020B809C - ldr r0, [r1, #0x10] - mov r2, r1 - cmp r0, #0x0 - beq _020B8090 -_020B8080: - ldr r2, [r2, #0x10] - ldr r0, [r2, #0x10] - cmp r0, #0x0 - bne _020B8080 -_020B8090: - str r1, [r12, #0x10] - str r3, [r2, #0x10] - bx lr -_020B809C: - mov r12, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B8064 -_020B80AC: - str r1, [r12, #0x10] - bx lr - - arm_func_start FUN_020B80B4 -FUN_020B80B4: ; 0x020B80B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x54 - bl MIi_CpuClear32 - ldr r0, _020B8104 ; =UNK_021065B4 - ldr r1, _020B8108 ; =UNK_021065B0 - ldr r2, [r0, #0x0] - ldr r0, _020B810C ; =UNK_021065AC - str r2, [r5, #0xc] - ldr r1, [r1, #0x0] - str r1, [r5, #0x14] - ldr r0, [r0, #0x0] - str r0, [r5, #0x1c] - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B8104: .word UNK_021065B4 -_020B8108: .word UNK_021065B0 -_020B810C: .word UNK_021065AC - - arm_func_start FUN_020B8110 -FUN_020B8110: ; 0x020B8110 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x8] - str r12, [r0, #0x10] - mov r4, #0x7f - strb r4, [r0, #0x18] - mov r4, #0x1000 - str r4, [r0, #0x4] - ldr lr, _020B81A4 ; =UNK_02106594 - str r3, [r0, #0x14] - ldr r6, [lr, #0x0] - cmp r6, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - ldrb r7, [r1, #0x0] - ldr r4, _020B81A8 ; =UNK_021065B8 -_020B8158: - ldrb r3, [r4, r12, lsl #0x3] - mov r5, r12, lsl #0x3 - cmp r7, r3 - bne _020B8190 - add r3, r4, r5 - ldrh lr, [r1, #0x2] - ldrh r3, [r3, #0x2] - cmp lr, r3 - bne _020B8190 - ldr r3, _020B81AC ; =UNK_021065BC - ldr r3, [r3, r5] - blx r3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B8190: - add r12, r12, #0x1 - cmp r12, r6 - blo _020B8158 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B81A4: .word UNK_02106594 -_020B81A8: .word UNK_021065B8 -_020B81AC: .word UNK_021065BC - - arm_func_start FUN_020B81B0 -FUN_020B81B0: ; 0x020B81B0 - ldrb r0, [r0, #0x0] - cmp r0, #0x4a - beq _020B81E4 - cmp r0, #0x4d - beq _020B81D0 - cmp r0, #0x56 - beq _020B81E4 - b _020B81F8 -_020B81D0: - ldrb r0, [r1, #0x18] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81E4: - ldrb r0, [r1, #0x17] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81F8: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B8200 -FUN_020B8200: ; 0x020B8200 - cmp r0, #0x0 - ldrne ip, _020B8260 ; =UNK_021CED18 - ldrne r12, [r12, #0xa0] - andne r12, r12, #0xff - strne r12, [r0, #0x0] - cmp r1, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x8 - andne r0, r0, #0xff - strne r0, [r1, #0x0] - cmp r2, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x10 - andne r0, r0, #0xff - strne r0, [r2, #0x0] - cmp r3, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x18 - andne r0, r0, #0xff - strne r0, [r3, #0x0] - bx lr - .balign 4 -_020B8260: .word UNK_021CED18 - - arm_func_start FUN_020B8264 -FUN_020B8264: ; 0x020B8264 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B8290 - bl FUN_020B82E4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B8290: - ldr r0, _020B82A0 ; =UNK_021CEE78 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B829C: .word UNK_021CED18 -_020B82A0: .word UNK_021CEE78 - - arm_func_start FUN_020B82A4 -FUN_020B82A4: ; 0x020B82A4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B82D0 - bl FUN_020B82E4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B82D0: - ldr r0, _020B82E0 ; =UNK_021CEE48 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B82DC: .word UNK_021CED18 -_020B82E0: .word UNK_021CEE48 - - arm_func_start FUN_020B82E4 -FUN_020B82E4: ; 0x020B82E4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8330 ; =UNK_021CEDD4 - ldr r1, _020B8334 ; =UNK_021CED64 - ldr r2, _020B8338 ; =UNK_021CEE48 - bl MTX_Concat43 - ldr r3, _020B833C ; =UNK_021CED18 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r2, [r3, #0xf4] - mov r1, r0 - str r2, [sp, #0x0] - ldr r2, [r3, #0xec] - ldr r3, [r3, #0xf0] - bl MTX_ScaleApply43 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r1, _020B8340 ; =UNK_021CEE78 - bl MTX_Inverse43 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8330: .word UNK_021CEDD4 -_020B8334: .word UNK_021CED64 -_020B8338: .word UNK_021CEE48 -_020B833C: .word UNK_021CED18 -_020B8340: .word UNK_021CEE78 - - arm_func_start FUN_020B8344 -FUN_020B8344: ; 0x020B8344 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x8 - bne _020B8378 - ldr r0, _020B8388 ; =UNK_021CED64 - ldr r1, _020B838C ; =UNK_021CEE18 - bl MTX_Inverse43 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x8 - str r1, [r0, #0xfc] -_020B8378: - ldr r0, _020B838C ; =UNK_021CEE18 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8384: .word UNK_021CED18 -_020B8388: .word UNK_021CED64 -_020B838C: .word UNK_021CEE18 - - arm_func_start FUN_020B8390 -FUN_020B8390: ; 0x020B8390 - orr r0, r0, r1, lsl #0x4 - - arm_func_start FUN_020B8394 -FUN_020B8394: ; 0x020B8394 - ldr r1, [sp, #0x4] - orr r0, r0, r2, lsl #0x6 - orr r0, r1, r0 - ldr r2, [sp, #0x0] - orr r1, r0, r3, lsl #0x18 - ldr r0, _020B83B8 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0x10 - str r1, [r0, #0x9c] - bx lr - .balign 4 -_020B83B8: .word UNK_021CED18 - - arm_func_start FUN_020B83BC -FUN_020B83BC: ; 0x020B83BC - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B83DC ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x98] - bx lr - .balign 4 -_020B83DC: .word UNK_021CED18 - - arm_func_start FUN_020B83E0 -FUN_020B83E0: ; 0x020B83E0 - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B8400 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x94] - bx lr - .balign 4 -_020B8400: .word UNK_021CED18 - - arm_func_start FUN_020B8404 -FUN_020B8404: ; 0x020B8404 - ldr r2, _020B8414 ; =UNK_021CEDC0 - orr r1, r1, r0, lsl #0x1e - str r1, [r2, r0, lsl #0x2] - bx lr - .balign 4 -_020B8414: .word UNK_021CEDC0 - - arm_func_start FUN_020B8418 -FUN_020B8418: ; 0x020B8418 - stmdb sp!, {r4,lr} - ldr ip, _020B8444 ; =0x000003FF - ldr lr, _020B8448 ; =UNK_021CED98 - and r4, r12, r1, asr #0x3 - and r1, r12, r2, asr #0x3 - and r2, r12, r3, asr #0x3 - orr r1, r4, r1, lsl #0xa - orr r1, r1, r2, lsl #0x14 - orr r1, r1, r0, lsl #0x1e - str r1, [lr, r0, lsl #0x2] - ldmia sp!, {r4,pc} - .balign 4 -_020B8444: .word 0x000003FF -_020B8448: .word UNK_021CED98 - - arm_func_start FUN_020B844C -FUN_020B844C: ; 0x020B844C - ldr r3, _020B846C ; =UNK_021CEE04 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8470 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B846C: .word UNK_021CEE04 -_020B8470: .word UNK_021CED18 - - arm_func_start FUN_020B8474 -FUN_020B8474: ; 0x020B8474 - ldr r3, _020B8494 ; =UNK_021CEDF8 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8498 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B8494: .word UNK_021CEDF8 -_020B8498: .word UNK_021CED18 - - arm_func_start FUN_020B849C -FUN_020B849C: ; 0x020B849C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B84D4 ; =UNK_021CED18 - mov r2, #0x3e - ldr r0, [r1], #0x4 - bl FUN_020BB1C0 - ldr r0, _020B84D4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0x1 - str r1, [r0, #0xfc] - bic r1, r1, #0x2 - str r1, [r0, #0xfc] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B84D4: .word UNK_021CED18 - - arm_func_start FUN_020B84D8 -FUN_020B84D8: ; 0x020B84D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r8, _020B85F4 ; =0x17101610 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r5, _020B85FC ; =0x32323232 - ldr r4, _020B8600 ; =0x60293130 - ldr r3, _020B8604 ; =0x33333333 - ldr r2, _020B8608 ; =0x002A1B19 - mov r7, #0x0 - mov r6, #0x2 - ldr r0, _020B860C ; =UNK_021CED64 - str r8, [r1, #0x0] - str r7, [r1, #0x4] - str r6, [r1, #0x48] - str r5, [r1, #0x7c] - str r4, [r1, #0x90] - str r3, [r1, #0xa4] - str r2, [r1, #0xb8] - bl MTX_Identity43_ - ldr r0, _020B8610 ; =UNK_021CED20 - bl MTX_Identity44_ - mov r2, r7 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r7, _020B8614 ; =0x4210C210 - ldr r0, _020B8618 ; =0x40000200 - ldr lr, _020B861C ; =0x2D8B62D8 - ldr sb, _020B8620 ; =0x800001FF - ldr r8, _020B8624 ; =0xC0080000 - ldr r6, _020B8628 ; =0x001F008F - ldr r5, _020B862C ; =0xBFFF0000 - ldr r4, _020B8630 ; =0x00007FFF - ldr ip, _020B8634 ; =0x800003E0 - ldr r3, _020B8638 ; =0xC0007C00 - str r0, [r1, #0x84] - str lr, [r1, #0x80] - mov lr, #0x4000001f - ldr r0, _020B863C ; =UNK_021CEDD4 - str r9, [r1, #0x88] - str r8, [r1, #0x8c] - str r7, [r1, #0x94] - str r7, [r1, #0x98] - str r6, [r1, #0x9c] - str r5, [r1, #0xa0] - str r4, [r1, #0xa8] - str lr, [r1, #0xac] - str r12, [r1, #0xb0] - str r3, [r1, #0xb4] - str r2, [r1, #0xe0] - str r2, [r1, #0xe4] - str r2, [r1, #0xe8] - bl MTX_Identity33_ - mov r3, #0x1000 - ldr r0, _020B85F8 ; =UNK_021CED18 - mov r2, #0x0 - rsb r1, r3, #0x0 - str r3, [r0, #0xec] - str r3, [r0, #0xf0] - str r3, [r0, #0xf4] - str r2, [r0, #0xf8] - str r2, [r0, #0xfc] - str r2, [r0, #0x248] - str r2, [r0, #0x244] - str r2, [r0, #0x240] - str r2, [r0, #0x254] - str r2, [r0, #0x24c] - str r3, [r0, #0x250] - str r2, [r0, #0x25c] - str r2, [r0, #0x258] - str r1, [r0, #0x260] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B85F4: .word 0x17101610 -_020B85F8: .word UNK_021CED18 -_020B85FC: .word 0x32323232 -_020B8600: .word 0x60293130 -_020B8604: .word 0x33333333 -_020B8608: .word 0x002A1B19 -_020B860C: .word UNK_021CED64 -_020B8610: .word UNK_021CED20 -_020B8614: .word 0x4210C210 -_020B8618: .word 0x40000200 -_020B861C: .word 0x2D8B62D8 -_020B8620: .word 0x800001FF -_020B8624: .word 0xC0080000 -_020B8628: .word 0x001F008F -_020B862C: .word 0xBFFF0000 -_020B8630: .word 0x00007FFF -_020B8634: .word 0x800003E0 -_020B8638: .word 0xC0007C00 -_020B863C: .word UNK_021CEDD4 - - arm_func_start FUN_020B8640 -FUN_020B8640: ; 0x020B8640 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r0 - mov r0, #0x0 - mov r6, r1 - str r0, [r7, #0x0] - add r4, sp, #0x0 - mov r5, r2, lsl #0x1 - mov r8, #0x1 -_020B8664: - add r1, r5, r6 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B869C - ldr r3, [r6, #0xc] - mov r0, r4 - mov r1, r6 - and r2, r2, #0xff - blx r3 - ldr r2, [r7, #0x0] - ldr r1, [sp, #0x0] - mov r0, r8 - orr r1, r2, r1 - str r1, [r7, #0x0] -_020B869C: - ldr r6, [r6, #0x10] - cmp r6, #0x0 - bne _020B8664 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B86B0 -FUN_020B86B0: ; 0x020B86B0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x5c - mov r9, r1 - ldr r3, [r9, #0x10] - mov r10, r0 - mov r8, r2 - cmp r3, #0x0 - bne _020B8704 - add r2, r9, r8, lsl #0x1 - ldrh r4, [r2, #0x1a] - and r2, r4, #0x300 - cmp r2, #0x100 - addne sp, sp, #0x5c - movne r0, #0x0 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r9, #0xc] - and r2, r4, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B8704: - mov r7, #0x0 - mov r3, r7 - mov r4, r9 - mov r2, r8, lsl #0x1 -_020B8714: - add r0, r2, r4 - ldrh r0, [r0, #0x1a] - and r0, r0, #0x300 - cmp r0, #0x100 - ldreq r0, [r4, #0x4] - moveq r1, r4 - ldr r4, [r4, #0x10] - addeq r7, r7, r0 - addeq r3, r3, #0x1 - cmp r4, #0x0 - bne _020B8714 - cmp r7, #0x0 - addeq sp, sp, #0x5c - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,pc} - cmp r3, #0x1 - bne _020B877C - add r0, r1, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - ldr r3, [r1, #0xc] - mov r0, r10 - and r2, r2, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B877C: - mov r1, r10 - mov r0, #0x0 - mov r2, #0x58 - bl MIi_CpuClearFast - mvn r0, #0x0 - str r0, [r10, #0x0] - add r5, sp, #0x0 - add r4, sp, #0x4 - add r11, sp, #0x10 -_020B87A0: - add r0, r9, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - and r0, r2, #0x300 - cmp r0, #0x100 - bne _020B8948 - ldr r0, [r9, #0x4] - cmp r0, #0x0 - ble _020B8948 - ldr r3, [r9, #0xc] - mov r0, r5 - mov r1, r9 - and r2, r2, #0xff - blx r3 - cmp r7, #0x1000 - ldreq r6, [r9, #0x4] - beq _020B87F0 - ldr r0, [r9, #0x4] - mov r1, r7 - bl FX_Div - mov r6, r0 -_020B87F0: - ldr r3, [sp, #0x0] - mov r1, r4 - mov r2, r6 - add r0, r10, #0x4 - and r3, r3, #0x1 - bl FUN_020B8998 - ldr r1, [sp, #0x0] - add r0, r10, #0x10 - and r3, r1, #0x8 - mov r1, r11 - mov r2, r6 - bl FUN_020B8998 - ldr r3, [sp, #0x0] - add r0, r10, #0x1c - add r1, sp, #0x1c - mov r2, r6 - and r3, r3, #0x10 - bl FUN_020B8998 - ldr r0, [sp, #0x0] - ands r0, r0, #0x4 - bne _020B8898 - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x4c] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x4c] - ldr r0, [sp, #0x50] - ldr r2, [r10, #0x50] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x50] - ldr r0, [sp, #0x54] - ldr r2, [r10, #0x54] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x54] -_020B8898: - ldr r0, [sp, #0x0] - ands r0, r0, #0x2 - bne _020B8920 - ldr r0, [sp, #0x28] - ldr r1, [r10, #0x28] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x28] - ldr r0, [sp, #0x2c] - ldr r1, [r10, #0x2c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x2c] - ldr r0, [sp, #0x30] - ldr r1, [r10, #0x30] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x30] - ldr r0, [sp, #0x34] - ldr r1, [r10, #0x34] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x34] - ldr r0, [sp, #0x38] - ldr r1, [r10, #0x38] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x38] - ldr r0, [sp, #0x3c] - ldr r1, [r10, #0x3c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x3c] - b _020B8938 -_020B8920: - ldr r0, [r10, #0x28] - add r0, r0, r6 - str r0, [r10, #0x28] - ldr r0, [r10, #0x38] - add r0, r0, r6 - str r0, [r10, #0x38] -_020B8938: - ldr r1, [r10, #0x0] - ldr r0, [sp, #0x0] - and r0, r1, r0 - str r0, [r10, #0x0] -_020B8948: - ldr r9, [r9, #0x10] - cmp r9, #0x0 - bne _020B87A0 - add r0, r10, #0x28 - add r1, r10, #0x34 - add r2, r10, #0x40 - bl VEC_CrossProduct - add r0, r10, #0x28 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - add r1, r10, #0x28 - add r2, r10, #0x34 - bl VEC_CrossProduct - mov r0, #0x1 - add sp, sp, #0x5c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B8998 -FUN_020B8998: - cmp r3, #0x0 - beq _020B89C8 - ldr r1, [r0, #0x0] - add r1, r1, r2 - str r1, [r0, #0x0] - ldr r1, [r0, #0x4] - add r1, r1, r2 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r2 - str r1, [r0, #0x8] - bx lr -_020B89C8: - ldr r3, [r1, #0x0] - ldr r12, [r0, #0x0] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x0] - ldr r3, [r1, #0x4] - ldr r12, [r0, #0x4] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x4] - ldr r1, [r1, #0x8] - ldr r3, [r0, #0x8] - mul r1, r2, r1 - add r1, r3, r1, asr #0xc - str r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020B8A08 -FUN_020B8A08: ; 0x020B8A08 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - mov r0, #0x0 - mov r4, r2, lsl #0x1 - mov r7, #0x1 -_020B8A24: - add r1, r4, r5 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B8A4C - ldr r3, [r5, #0xc] - mov r0, r6 - mov r1, r5 - and r2, r2, #0xff - blx r3 - mov r0, r7 -_020B8A4C: - ldr r5, [r5, #0x10] - cmp r5, #0x0 - bne _020B8A24 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B8A60 -FUN_020B8A60: ; 0x020B8A60 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x80 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020B8DB4 - ands r0, r1, #0x1 - beq _020B8DB4 - add r0, sp, #0x10 - mov r1, #0x0 - bl FUN_020BB824 - mov r0, #0x1e - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x13 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r2, [r5, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0xc0000000 - beq _020B8AF0 - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r3, _020B8DC8 ; =UNK_02106630 - ldr r0, [r2, #0x10] - ldr r1, _020B8DCC ; =UNK_02106634 - orr r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8AF0: - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B8B3C - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8B40 -_020B8B3C: - mov r0, #0x0 -_020B8B40: - cmp r0, #0x0 - bne _020B8B84 - ldr r0, [r5, #0xb0] - ldr r1, _020B8DD0 ; =UNK_02106660 - ldrh r6, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - mov r0, #0x16 - rsb r2, r6, #0x0 - mov lr, r3, lsl #0xf - mov r12, r2, lsl #0xf - mov r3, r6, lsl #0xf - mov r2, #0x10 - str lr, [r1, #0x0] - str r12, [r1, #0x14] - str lr, [r1, #0x30] - str r3, [r1, #0x34] - bl FUN_020BB1C0 -_020B8B84: - cmp r4, #0x2 - bne _020B8BC0 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8BC4 -_020B8BC0: - mov r0, #0x0 -_020B8BC4: - cmp r0, #0x0 - bne _020B8C28 - ldr r12, [r5, #0xd8] - ldr r0, [r5, #0x0] - ldrh r2, [r12, #0xa] - add r3, r12, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8C28 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8C28: - cmp r4, #0x3 - movne r0, #0x0 - bne _020B8C54 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x8] - and r0, r0, #0x40 -_020B8C54: - cmp r0, #0x0 - bne _020B8D84 - ldr r0, _020B8DD4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B8CA0 - ldr r1, _020B8DD8 ; =UNK_021CEDF8 - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - ldr r1, _020B8DDC ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CA0: - ands r0, r1, #0x2 - beq _020B8CBC - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CBC: - bl FUN_020B8344 - mov r1, r0 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 -_020B8CE0: - bl FUN_020BB394 - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020B8DE4 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020B8DE8 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - add r4, sp, #0x40 -_020B8D04: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B8D04 - ldr r1, _020B8DEC ; =0x04000448 - mov r2, #0x1 - str r2, [r1, #0x0] - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x3 - str r2, [r0, #0x0] - add r1, sp, #0x40 - mov r0, #0x16 - mov r2, #0x10 - bl FUN_020BB1C0 - ldr r1, [sp, #0x70] - ldr r0, [sp, #0x74] - mov r2, r1, asr #0x4 - mov r1, r0, asr #0x4 - mov r0, r2, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8D84: - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - mov r3, #0x1e - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 -_020B8DB4: - ldr r0, [r5, #0x0] - add r0, r0, #0x3 - str r0, [r5, #0x0] - add sp, sp, #0x80 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B8DC8: .word UNK_02106630 -_020B8DCC: .word UNK_02106634 -_020B8DD0: .word UNK_02106660 -_020B8DD4: .word UNK_021CED18 -_020B8DD8: .word UNK_021CEDF8 -_020B8DDC: .word UNK_021CEDD4 -_020B8DE0: .word 0x04000440 -_020B8DE4: .word 0x04000444 -_020B8DE8: .word 0x04000454 -_020B8DEC: .word 0x04000448 - - arm_func_start FUN_020B8DF0 -FUN_020B8DF0: ; 0x020B8DF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x44 - mov r7, r0 - ldr r1, [r7, #0x8] - ands r0, r1, #0x200 - bne _020B90E8 - ands r0, r1, #0x1 - beq _020B90E8 - ldr r2, [r7, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0x80000000 - beq _020B8E5C - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r3, _020B90FC ; =UNK_02106638 - ldr r0, [r2, #0x10] - ldr r1, _020B9100 ; =UNK_0210663C - orr r0, r0, #0x80000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8E5C: - mov r0, #0x3 - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x10 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - moveq r6, #0x0 - cmp r6, #0x1 - bne _020B8EC0 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8EC4 -_020B8EC0: - mov r0, #0x0 -_020B8EC4: - cmp r0, #0x0 - bne _020B8F3C - ldr r0, [r7, #0xb0] - add r1, sp, #0x38 - ldrh r4, [r0, #0x2e] - ldrh r5, [r0, #0x2c] - mov r3, #0x10000 - rsb r0, r4, #0x0 - mov r12, r0, lsl #0xf - mov lr, r5, lsl #0xf - mov r0, #0x1b - mov r2, #0x3 - str lr, [sp, #0x38] - str r12, [sp, #0x3c] - str r3, [sp, #0x40] - bl FUN_020BB1C0 - mov r0, r5, lsl #0x13 - mov r1, r4, lsl #0x13 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8F3C: - cmp r6, #0x2 - bne _020B8F78 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8F7C -_020B8F78: - mov r0, #0x0 -_020B8F7C: - cmp r0, #0x0 - bne _020B8FE0 - ldr r4, [r7, #0xd8] - ldr r0, [r7, #0x0] - ldrh r2, [r4, #0xa] - add r3, r4, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8FE0 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8FE0: - cmp r6, #0x3 - movne r0, #0x0 - bne _020B900C - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x8] - and r0, r0, #0x40 -_020B900C: - cmp r0, #0x0 - bne _020B90D0 - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x0 - bl FUN_020BB824 - mov r3, #0x3 - add r1, sp, #0xc - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 - ldr r0, _020B9104 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9094 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - ldr r1, _020B910C ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B9094: - ands r0, r1, #0x2 - beq _020B90C0 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B90C0: - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020B90D0: - mov r3, #0x2 - add r1, sp, #0x10 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020B90E8: - ldr r0, [r7, #0x0] - add r0, r0, #0x3 - str r0, [r7, #0x0] - add sp, sp, #0x44 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B90FC: .word UNK_02106638 -_020B9100: .word UNK_0210663C -_020B9104: .word UNK_021CED18 -_020B9108: .word UNK_021CED64 -_020B910C: .word UNK_021CEDD4 - - arm_func_start FUN_020B9110 -FUN_020B9110: ; 0x020B9110 - stmdb sp!, {r4,lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r2, [r4, #0x8] - ands r0, r2, #0x100 - bne _020B9164 - ands r0, r2, #0x200 - bne _020B9164 - cmp r1, #0x0 - ldreq r0, [r4, #0xe0] - add r1, sp, #0x0 - streq r0, [sp, #0x8] - streq r0, [sp, #0x4] - streq r0, [sp, #0x0] - ldrne r0, [r4, #0xe4] - mov r2, #0x3 - strne r0, [sp, #0x8] - strne r0, [sp, #0x4] - strne r0, [sp, #0x0] - mov r0, #0x1b - bl FUN_020BB1C0 -_020B9164: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B9178 -FUN_020B9178: ; 0x020B9178 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B91CC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r1, r0, #0x40 - b _020B91D0 -_020B91CC: - mov r1, #0x0 -_020B91D0: - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020B9228 - cmp r1, #0x0 - bne _020B9228 - ldr r0, [r5, #0x0] - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x2] - ldrb lr, [r0, #0x3] - ldrb r2, [r0, #0x5] - ldrb r1, [r0, #0x6] - orr r3, r12, r3, lsl #0x8 - ldrb r6, [r0, #0x4] - orr r12, r3, lr, lsl #0x10 - ldrb r3, [r0, #0x7] - orr r1, r2, r1, lsl #0x8 - orr r6, r12, r6, lsl #0x18 - ldrb r2, [r0, #0x8] - orr r1, r1, r3, lsl #0x10 - add r0, r0, r6 - orr r1, r1, r2, lsl #0x18 - bl FUN_020BB2B0 -_020B9228: - cmp r4, #0x3 - bne _020B9248 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 -_020B9248: - ldr r0, [r5, #0x0] - add r0, r0, #0x9 - str r0, [r5, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B9258 -FUN_020B9258: ; 0x020B9258 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x8c - ldr r1, [r0, #0x4] - ldr r4, [r0, #0x0] - ldr r6, [r1, #0x4] - ldrb r2, [r4, #0x2] - ldr r3, [r6, #0x10] - mov r10, #0x0 - str r0, [sp, #0x0] - str r2, [sp, #0x8] - add r3, r6, r3 - add r1, sp, #0x34 - mov r0, r10 - mov r2, #0x54 - mov r9, r10 - str r3, [sp, #0x4] - add r8, r4, #0x3 - bl MIi_CpuClearFast - bl FUN_020BB394 - ldr r0, _020B98AC ; =0x04000440 - mov r7, r10 - str r7, [r0, #0x0] - mov r0, #0x1 - ldr r2, _020B98B0 ; =0x0400044C - ldr r1, _020B98B4 ; =0x04000454 - str r0, [r2, #0x0] - str r0, [sp, #0x10] - str r7, [r1, #0x0] - mov r1, #0x2 - ldr r0, _020B98AC ; =0x04000440 - str r1, [sp, #0x14] - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bls _020B96CC -_020B92E4: - ldrb r4, [r8, #0x1] - mov r0, #0x64 - ldr r3, _020B98B8 ; =UNK_021D0380 - mul r0, r4, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x0] - mov r1, r4, lsr #0x5 - add r0, r0, r1, lsl #0x2 - ldr r1, [sp, #0x10] - and r2, r4, #0x1f - mov r1, r1, lsl r2 - ldr r11, [r0, #0xcc] - ldr r2, [sp, #0xc] - ands r11, r1, r11 - add r6, r3, r2 - bne _020B9358 - ldr r3, [r0, #0xcc] - mov r2, #0x54 - orr r1, r3, r1 - str r1, [r0, #0xcc] - ldr r0, [sp, #0x4] - ldr r1, _020B98BC ; =0x04000450 - mla r0, r4, r2, r0 - ldrb r2, [r8, #0x0] - str r2, [r1, #0x0] - ldr r2, [sp, #0x10] - ldr r1, _020B98AC ; =0x04000440 - str r2, [r1, #0x0] - bl G3_MultMtx43 -_020B9358: - cmp r7, #0x0 - beq _020B9500 - ldr r2, [sp, #0x6c] - ldr r1, [r5, #0x0] - str r2, [sp, #0x18] - ldr r2, [sp, #0x70] - mov r0, r1, asr #0x1f - str r2, [sp, #0x1c] - ldr r2, [sp, #0x74] - ldr r12, [sp, #0x64] - str r2, [sp, #0x20] - ldr r2, [sp, #0x78] - ldr lr, [sp, #0x68] - str r2, [sp, #0x24] - ldr r2, [sp, #0x7c] - str r2, [sp, #0x28] - ldr r2, [sp, #0x80] - str r2, [sp, #0x2c] - ldr r2, [sp, #0x84] - str r2, [sp, #0x30] - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r12, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, lr, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x18] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x6c] - ldr r1, [r5, #0xc] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x1c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x70] - ldr r1, [r5, #0x10] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x20] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x74] - ldr r1, [r5, #0x14] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x24] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x78] - ldr r1, [r5, #0x18] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x28] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x7c] - ldr r1, [r5, #0x1c] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x2c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x80] - ldr r1, [r5, #0x20] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x30] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x84] -_020B9500: - cmp r11, #0x0 - bne _020B9538 -_020B9508: - mov r0, r6 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9508 - ldr r1, [sp, #0x14] - ldr r0, _020B98AC ; =0x04000440 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - mov r1, #0x54 - mla r0, r4, r1, r0 - add r0, r0, #0x30 - bl G3_MultMtx33 -_020B9538: - ldrb r1, [r8, #0x2] - ldr r2, [sp, #0x34] - ldr r0, [r6, #0x0] - mov r10, r1, lsl #0x4 - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x34] - mov r9, r10, asr #0x1f - ldr r2, [sp, #0x38] - ldr r0, [r6, #0x4] - ldr r3, [sp, #0x3c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x38] - ldr r0, [r6, #0x8] - ldr r2, [sp, #0x40] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x3c] - ldr r0, [r6, #0x10] - ldr r3, [sp, #0x44] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x40] - ldr r0, [r6, #0x14] - ldr r2, [sp, #0x48] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x44] - ldr r0, [r6, #0x18] - ldr r3, [sp, #0x4c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x48] - ldr r0, [r6, #0x20] - ldr r2, [sp, #0x50] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x4c] - ldr r0, [r6, #0x24] - ldr r3, [sp, #0x54] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x50] - ldr r0, [r6, #0x28] - ldr r2, [sp, #0x58] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x54] - ldr r0, [r6, #0x30] - ldr r3, [sp, #0x5c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x58] - ldr r0, [r6, #0x34] - ldr r2, [sp, #0x60] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x5c] - ldr r0, [r6, #0x38] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x60] - cmp r11, #0x0 - ldr r1, _020B98C0 ; =UNK_021D03C0 - ldr r0, [sp, #0xc] - add r5, r1, r0 - add r8, r8, #0x3 - bne _020B96BC -_020B96AC: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020B96AC -_020B96BC: - ldr r0, [sp, #0x8] - add r7, r7, #0x1 - cmp r7, r0 - blo _020B92E4 -_020B96CC: - ldr r1, [r5, #0x0] - ldr r4, [sp, #0x64] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - ldr r4, [sp, #0x68] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - ldr r4, [sp, #0x6c] - umull r0, r2, r10, r1 - mov r3, r0, lsr #0xc - mov r0, r1, asr #0x1f - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - orr r3, r3, r2, lsl #0x14 - adds r0, r4, r3 - str r0, [sp, #0x6c] - ldr r7, [r5, #0xc] - ldr r12, [sp, #0x70] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r6, r12, r6 - str r6, [sp, #0x70] - ldr r7, [r5, #0x10] - ldr r4, [sp, #0x74] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r4, r4, r6 - str r4, [sp, #0x74] - ldr r6, [r5, #0x14] - ldr r3, [sp, #0x78] - mov r4, r6, asr #0x1f - umull r8, r7, r10, r6 - mla r7, r10, r4, r7 - mla r7, r9, r6, r7 - mov r4, r8, lsr #0xc - orr r4, r4, r7, lsl #0x14 - adds r3, r3, r4 - str r3, [sp, #0x78] - ldr r4, [r5, #0x18] - ldr r2, [sp, #0x7c] - mov r3, r4, asr #0x1f - umull r7, r6, r10, r4 - mla r6, r10, r3, r6 - mla r6, r9, r4, r6 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - adds r2, r2, r3 - str r2, [sp, #0x7c] - ldr r3, [r5, #0x1c] - ldr r1, [sp, #0x80] - mov r2, r3, asr #0x1f - umull r6, r4, r10, r3 - mla r4, r10, r2, r4 - mla r4, r9, r3, r4 - mov r2, r6, lsr #0xc - orr r2, r2, r4, lsl #0x14 - adds r1, r1, r2 - str r1, [sp, #0x80] - ldr r2, [r5, #0x20] - ldr lr, [sp, #0x84] - mov r1, r2, asr #0x1f - umull r4, r3, r10, r2 - mla r3, r10, r1, r3 - mla r3, r9, r2, r3 - mov r1, r4, lsr #0xc - orr r1, r1, r3, lsl #0x14 - adds r1, lr, r1 - add r0, sp, #0x64 - str r1, [sp, #0x84] - bl G3_LoadMtx43 - ldr r1, _020B98AC ; =0x04000440 - mov r2, #0x1 - add r0, sp, #0x34 - str r2, [r1, #0x0] - bl G3_LoadMtx43 - ldr r3, _020B98AC ; =0x04000440 - mov r0, #0x0 - str r0, [r3, #0x0] - ldr r1, _020B98BC ; =0x04000450 - mov r2, #0x1 - mov r0, #0x2 - str r2, [r1, #0x0] - str r0, [r3, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, _020B98B0 ; =0x0400044C - ldrb r2, [r1, #0x1] - mov r1, #0x3 - str r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r2, [r0, #0x0] - ldrb r0, [r2, #0x2] - add r0, r0, #0x1 - mla r1, r0, r1, r2 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x8c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B98AC: .word 0x04000440 -_020B98B0: .word 0x0400044C -_020B98B4: .word 0x04000454 -_020B98B8: .word UNK_021D0380 -_020B98BC: .word 0x04000450 -_020B98C0: .word UNK_021D03C0 - - arm_func_start FUN_020B98C4 -FUN_020B98C4: ; 0x020B98C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xcc - mov r10, r0 - ldr r2, [r10, #0x8] - mov r9, r1 - ands r0, r2, #0x200 - mov r7, #0x2 - ldr r6, _020B9C28 ; =UNK_02106718 - ldr fp, _020B9C2C ; =UNK_02106724 - ldr r5, _020B9C30 ; =UNK_021066F4 - beq _020B992C - cmp r9, #0x40 - beq _020B9900 - cmp r9, #0x60 - bne _020B9904 -_020B9900: - add r7, r7, #0x1 -_020B9904: - cmp r9, #0x20 - beq _020B9914 - cmp r9, #0x60 - bne _020B9918 -_020B9914: - add r7, r7, #0x1 -_020B9918: - ldr r0, [r10, #0x0] - add sp, sp, #0xcc - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020B992C: - cmp r9, #0x40 - beq _020B993C - cmp r9, #0x60 - bne _020B9974 -_020B993C: - add r7, r7, #0x1 - ands r0, r2, #0x100 - bne _020B9974 - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9974: - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020B99C0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r1, r0, #0x40 - b _020B99C4 -_020B99C0: - mov r1, #0x0 -_020B99C4: - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9BA4 - cmp r1, #0x0 - bne _020B9BA4 - bl FUN_020BB394 - ldr r2, _020B9C34 ; =0x00151110 - ldr r1, _020B9C38 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r4, sp, #0x8 -_020B99F8: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B99F8 - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9A38 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9A5C -_020B9A38: - ands r0, r1, #0x2 - beq _020B9A5C - ldr r0, _020B9C40 ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9A5C: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r6, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r6, #0x4] - ldr r1, [sp, #0x40] - str r1, [r6, #0x8] - bl VEC_Mag - str r0, [r11, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r11, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - str r0, [r11, #0x8] - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - bne _020B9AB0 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - beq _020B9AD4 -_020B9AB0: - add r0, sp, #0x18 - add r1, r5, #0xc - bl VEC_Normalize - ldr r0, [r5, #0x14] - rsb r0, r0, #0x0 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x10] - str r0, [r5, #0x20] - b _020B9AF4 -_020B9AD4: - add r0, sp, #0x28 - add r1, r5, #0x18 - bl VEC_Normalize - ldr r0, [r5, #0x1c] - rsb r0, r0, #0x0 - str r0, [r5, #0x14] - ldr r0, [r5, #0x20] - str r0, [r5, #0x10] -_020B9AF4: - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9B48 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B48: - ands r0, r1, #0x2 - beq _020B9B94 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B94: - ldr r0, _020B9C50 ; =UNK_021066E8 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9BA4: - cmp r8, #0x3 - movne r0, #0x0 - bne _020B9BD0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020B9BD0: - cmp r9, #0x20 - beq _020B9BE0 - cmp r9, #0x60 - bne _020B9C14 -_020B9BE0: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020B9C14 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9C14 - ldr r0, [r10, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9C14: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0xcc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B9C28: .word UNK_02106718 -_020B9C2C: .word UNK_02106724 -_020B9C30: .word UNK_021066F4 -_020B9C34: .word 0x00151110 -_020B9C38: .word 0x04000400 -_020B9C3C: .word UNK_021CED18 -_020B9C40: .word UNK_021CED64 -_020B9C44: .word 0x00171012 -_020B9C48: .word UNK_021066EC -_020B9C4C: .word 0x00001B19 -_020B9C50: .word UNK_021066E8 - - arm_func_start FUN_020B9C54 -FUN_020B9C54: ; 0x020B9C54 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0xc8 - mov r9, r0 - ldr r2, [r9, #0x8] - mov r8, r1 - ands r0, r2, #0x200 - mov r6, #0x2 - ldr r5, _020B9F58 ; =UNK_021066D0 - ldr r4, _020B9F5C ; =UNK_021066DC - beq _020B9CB8 - cmp r8, #0x40 - beq _020B9C8C - cmp r8, #0x60 - bne _020B9C90 -_020B9C8C: - add r6, r6, #0x1 -_020B9C90: - cmp r8, #0x20 - beq _020B9CA0 - cmp r8, #0x60 - bne _020B9CA4 -_020B9CA0: - add r6, r6, #0x1 -_020B9CA4: - ldr r0, [r9, #0x0] - add sp, sp, #0xc8 - add r0, r0, r6 - str r0, [r9, #0x0] - ldmia sp!, {r4-r10,pc} -_020B9CB8: - cmp r8, #0x40 - beq _020B9CC8 - cmp r8, #0x60 - bne _020B9D00 -_020B9CC8: - add r6, r6, #0x1 - ands r0, r2, #0x100 - bne _020B9D00 - cmp r8, #0x40 - ldreq r0, [r9, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r9, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9D00: - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - moveq r7, #0x0 - cmp r7, #0x1 - bne _020B9D4C - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - ldr r0, [r9, #0x8] - moveq r7, #0x0 - and r1, r0, #0x40 - b _020B9D50 -_020B9D4C: - mov r1, #0x0 -_020B9D50: - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9ED4 - cmp r1, #0x0 - bne _020B9ED4 - bl FUN_020BB394 - ldr r2, _020B9F60 ; =0x00151110 - ldr r1, _020B9F64 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r10, sp, #0x8 -_020B9D84: - mov r0, r10 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9D84 - ldr r0, _020B9F68 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9DC4 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9DE8 -_020B9DC4: - ands r0, r1, #0x2 - beq _020B9DE8 - ldr r0, _020B9F6C ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9DE8: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r5, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r5, #0x4] - ldr r1, [sp, #0x40] - str r1, [r5, #0x8] - bl VEC_Mag - str r0, [r4, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r4, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - ldr r1, _020B9F68 ; =UNK_021CED18 - str r0, [r4, #0x8] - ldr r1, [r1, #0xfc] - ands r0, r1, #0x1 - beq _020B9E78 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9E78: - ands r0, r1, #0x2 - beq _020B9EC4 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9EC4: - ldr r0, _020B9F80 ; =UNK_021066A0 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9ED4: - cmp r7, #0x3 - movne r0, #0x0 - bne _020B9F00 - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x8] - and r0, r0, #0x40 -_020B9F00: - cmp r8, #0x20 - beq _020B9F10 - cmp r8, #0x60 - bne _020B9F44 -_020B9F10: - cmp r0, #0x0 - add r6, r6, #0x1 - bne _020B9F44 - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9F44 - ldr r0, [r9, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9F44: - ldr r0, [r9, #0x0] - add r0, r0, r6 - str r0, [r9, #0x0] - add sp, sp, #0xc8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B9F58: .word UNK_021066D0 -_020B9F5C: .word UNK_021066DC -_020B9F60: .word 0x00151110 -_020B9F64: .word 0x04000400 -_020B9F68: .word UNK_021CED18 -_020B9F6C: .word UNK_021CED64 -_020B9F70: .word 0x00171012 -_020B9F74: .word UNK_021066A4 -_020B9F78: .word 0x00001B19 -_020B9F7C: .word UNK_021066AC -_020B9F80: .word UNK_021066A0 - - arm_func_start FUN_020B9F84 -FUN_020B9F84: ; 0x020B9F84 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - ldrb r4, [r0, #0x1] - mov r7, #0x4 - strb r4, [r10, #0xae] - ldr r0, [r10, #0x8] - orr r0, r0, #0x10 - str r0, [r10, #0x8] - ldr r1, [r10, #0x8] - ands r0, r1, #0x400 - beq _020BA01C - cmp r9, #0x40 - beq _020B9FCC - cmp r9, #0x60 - bne _020B9FD0 -_020B9FCC: - add r7, r7, #0x1 -_020B9FD0: - cmp r9, #0x20 - beq _020B9FE0 - cmp r9, #0x60 - bne _020BA008 -_020B9FE0: - add r7, r7, #0x1 - ands r0, r1, #0x100 - bne _020BA008 - ldr r0, [r10, #0x0] - add r1, sp, #0x8 - ldrb r3, [r0, #0x4] - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 -_020BA008: - ldr r0, [r10, #0x0] - add sp, sp, #0x14 - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020BA01C: - cmp r9, #0x40 - beq _020BA02C - cmp r9, #0x60 - bne _020BA068 -_020BA02C: - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r7, r7, #0x1 - ldreqb r0, [r0, #0x4] - streq r0, [sp, #0xc] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x5] - strne r0, [sp, #0xc] - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA068 - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BA068: - add r0, r10, #0x12c - str r0, [r10, #0xb4] - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020BA0BC - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA0C0 -_020BA0BC: - mov r0, #0x0 -_020BA0C0: - cmp r0, #0x0 - bne _020BA2CC - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x34] - cmp r1, #0x0 - beq _020BA0F4 - mov r0, #0x58 - mla r6, r4, r0, r1 - ldr r0, [r10, #0x8] - ands r0, r0, #0x80 - moveq r0, #0x1 - movne r0, #0x0 - b _020BA0FC -_020BA0F4: - add r6, r10, #0x12c - mov r0, #0x0 -_020BA0FC: - cmp r0, #0x0 - bne _020BA2C8 - mov r0, #0x0 - str r0, [r6, #0x0] - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x10] - cmp r1, #0x0 - beq _020BA134 - ldr r3, [r0, #0x14] - mov r0, r6 - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BA2C8 -_020BA134: - ldr r2, [r10, #0xd4] - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r1, [r0, #0x4] - ldrh r0, [r2, r1] - add r4, r2, r1 - add r5, r4, #0x4 - ands r0, r0, #0x1 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x4 - strne r0, [r6, #0x0] - bne _020BA188 - ldr r0, [r5, #0x0] - str r0, [r6, #0x4c] - ldr r0, [r5, #0x4] - str r0, [r6, #0x50] - ldr r0, [r5, #0x8] - add r5, r5, #0xc - str r0, [r6, #0x54] -_020BA188: - ldrh r1, [r4, #0x0] - ands r0, r1, #0x2 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x2 - strne r0, [r6, #0x0] - bne _020BA2B0 - ands r0, r1, #0x8 - beq _020BA264 - and r1, r1, #0xf0 - mov r11, r1, asr #0x4 - ldrsh r1, [r5, #0x0] - add r0, r6, #0x28 - str r1, [sp, #0x0] - ldrsh r1, [r5, #0x2] - str r1, [sp, #0x4] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r6, r11, lsl #0x2 - add r5, r5, #0x4 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - str r2, [r1, #0x28] - ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F1 - ldrb r0, [r0, r11, lsl #0x2] - add r2, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r2, #0x28] - ldrb r0, [r1, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldrne r0, [sp, #0x4] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F2 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldrne r0, [sp, #0x0] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F3 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r1, #0x28] - b _020BA2B0 -_020BA264: - ldrsh r0, [r4, #0x2] - str r0, [r6, #0x28] - ldrsh r0, [r5, #0x0] - str r0, [r6, #0x2c] - ldrsh r0, [r5, #0x2] - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x4] - str r0, [r6, #0x34] - ldrsh r0, [r5, #0x6] - str r0, [r6, #0x38] - ldrsh r0, [r5, #0x8] - str r0, [r6, #0x3c] - ldrsh r0, [r5, #0xa] - str r0, [r6, #0x40] - ldrsh r0, [r5, #0xc] - str r0, [r6, #0x44] - ldrsh r0, [r5, #0xe] - add r5, r5, #0x10 - str r0, [r6, #0x48] -_020BA2B0: - ldrh r3, [r4, #0x0] - ldr r2, [r10, #0x0] - ldr r4, [r10, #0xe8] - mov r0, r6 - mov r1, r5 - blx r4 -_020BA2C8: - str r6, [r10, #0xb4] -_020BA2CC: - cmp r8, #0x2 - bne _020BA308 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA30C -_020BA308: - mov r0, #0x0 -_020BA30C: - cmp r0, #0x0 - bne _020BA32C - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA32C - ldr r0, [r10, #0xb4] - ldr r1, [r10, #0xec] - blx r1 -_020BA32C: - mov r0, #0x0 - str r0, [r10, #0xb4] - cmp r8, #0x3 - bne _020BA35C - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020BA35C: - cmp r9, #0x20 - beq _020BA36C - cmp r9, #0x60 - bne _020BA3A0 -_020BA36C: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020BA3A0 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA3A0 - ldr r0, [r10, #0x0] - add r1, sp, #0x10 - ldrb r3, [r0, #0x4] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020BA3A0: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F1 -_020BA3BC: .word UNK_020FF9F2 -_020BA3C0: .word UNK_020FF9F3 - - arm_func_start FUN_020BA3C4 -FUN_020BA3C4: ; 0x020BA3C4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r3, [r4, #0x8] - ands r2, r3, #0x200 - bne _020BA420 - ands r2, r3, #0x1 - beq _020BA420 - ands r2, r3, #0x2 - bne _020BA420 - ldr r5, [r4, #0xdc] - ldr r3, [r4, #0x0] - ldrh r2, [r5, #0x6] - ldrb r3, [r3, #0x1] - ldr ip, _020BA434 ; =UNK_02106650 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r5, r2] - add r2, r5, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA420: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BA434: .word UNK_02106650 - - arm_func_start FUN_020BA438 -FUN_020BA438: ; 0x020BA438 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x20] - mov r5, r2 - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BA490 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - ldr r0, [r6, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BA494 -_020BA490: - mov r0, #0x0 -_020BA494: - cmp r0, #0x0 - bne _020BA4B8 - ldr r0, [r6, #0x8] - ands r0, r0, #0x100 - bne _020BA4B8 - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - add r0, r5, r0 - bl FUN_020BB2B0 -_020BA4B8: - cmp r4, #0x2 - bne _020BA4E8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 -_020BA4E8: - cmp r4, #0x3 - ldmneia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BA50C -FUN_020BA50C: ; 0x020BA50C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r5, [r4, #0x8] - ands r0, r5, #0x200 - bne _020BA578 - ldr r2, [r4, #0x0] - ands r0, r5, #0x1 - ldrb r3, [r2, #0x1] - bne _020BA544 - ands r0, r5, #0x8 - beq _020BA544 - ldrb r0, [r4, #0xad] - cmp r3, r0 - beq _020BA578 -_020BA544: - ldr r6, [r4, #0xd8] - ldr ip, _020BA588 ; =UNK_02106640 - ldrh r2, [r6, #0xa] - add r5, r6, #0x4 - mov r0, r4 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r6, r2] - add r2, r6, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA578: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BA588: .word UNK_02106640 - - arm_func_start FUN_020BA58C -FUN_020BA58C: ; 0x020BA58C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x20 - mov r8, r0 - mov r6, r3 - strb r6, [r8, #0xad] - ldr r3, [r8, #0x8] - add r0, r8, #0xf4 - orr r3, r3, #0x8 - str r3, [r8, #0x8] - str r0, [r8, #0xb0] - ldr r0, [r8, #0x1c] - mov r4, r1 - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - mov r7, r2 - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BA608 - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA60C -_020BA608: - mov r0, #0x0 -_020BA60C: - cmp r0, #0x0 - bne _020BA8C0 - ldr r0, [r8, #0x4] - ldr r0, [r0, #0x38] - cmp r0, #0x0 - beq _020BA638 - ldr r1, [r8, #0x8] - ands r1, r1, #0x80 - moveq r1, #0x38 - mlaeq r4, r6, r1, r0 - beq _020BA8BC -_020BA638: - cmp r4, #0x20 - beq _020BA648 - cmp r4, #0x40 - bne _020BA684 -_020BA648: - mov r1, r6, lsr #0x5 - add r1, r8, r1, lsl #0x2 - and r2, r6, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xbc] - ands r1, r2, r1 - beq _020BA684 - cmp r0, #0x0 - movne r1, #0x38 - mlane r4, r6, r1, r0 - ldreq r1, _020BA9D8 ; =UNK_021CEF80 - moveq r0, #0x38 - mlaeq r4, r6, r0, r1 - b _020BA8BC -_020BA684: - cmp r0, #0x0 - beq _020BA6BC - add r4, r8, #0xbc - mov r3, r6, lsr #0x5 - ldr r2, [r4, r3, lsl #0x2] - and r0, r6, #0x1f - mov r1, #0x1 - orr r0, r2, r1, lsl r0 - str r0, [r4, r3, lsl #0x2] - ldr r1, [r8, #0x4] - mov r0, #0x38 - ldr r1, [r1, #0x38] - mla r4, r6, r0, r1 - b _020BA6F0 -_020BA6BC: - cmp r4, #0x40 - addne r4, r8, #0xf4 - bne _020BA6F0 - add lr, r8, #0xbc - mov r12, r6, lsr #0x5 - ldr r1, _020BA9D8 ; =UNK_021CEF80 - ldr r4, [lr, r12, lsl #0x2] - mov r0, #0x38 - and r2, r6, #0x1f - mov r3, #0x1 - orr r2, r4, r3, lsl r2 - mla r4, r6, r0, r1 - str r2, [lr, r12, lsl #0x2] -_020BA6F0: - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r3, [r8, #0xd8] - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r6, r0 - ldr r0, [r0, #0x4] - ldr r1, _020BA9DC ; =UNK_021CED18 - add r0, r3, r0 - ldrh r0, [r0, #0x1e] - ands r0, r0, #0x20 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x20 - strne r0, [r4, #0x0] - ldrh r2, [r7, #0x1e] - ldr r0, _020BA9E0 ; =UNK_020FF9D0 - ldr r12, [r1, #0x94] - mov r2, r2, asr #0x6 - and r2, r2, #0x7 - ldr lr, [r0, r2, lsl #0x2] - ldr r2, [r7, #0x4] - mvn r3, lr - and r3, r12, r3 - and r2, r2, lr - orr r2, r3, r2 - str r2, [r4, #0x4] - ldrh r12, [r7, #0x1e] - ldr r3, [r1, #0x98] - ldr r2, [r7, #0x8] - mov r12, r12, asr #0x9 - and r12, r12, #0x7 - ldr r12, [r0, r12, lsl #0x2] - mvn r0, r12 - and r3, r3, r0 - and r0, r2, r12 - orr r0, r3, r0 - str r0, [r4, #0x8] - ldr r3, [r7, #0x10] - ldr r0, [r7, #0xc] - ldr r2, [r1, #0x9c] - mvn r1, r3 - and r1, r2, r1 - and r0, r0, r3 - orr r0, r1, r0 - str r0, [r4, #0xc] - ldr r0, [r7, #0x14] - str r0, [r4, #0x10] - ldrh r0, [r7, #0x1c] - str r0, [r4, #0x14] - ldrh r1, [r7, #0x1e] - ands r0, r1, #0x1 - beq _020BA850 - ands r1, r1, #0x2 - ldrne r1, [r4, #0x0] - add r0, r7, #0x2c - orrne r1, r1, #0x1 - strne r1, [r4, #0x0] - bne _020BA7F4 - ldr r1, [r0, #0x0] - str r1, [r4, #0x18] - ldr r1, [r0, #0x4] - add r0, r0, #0x8 - str r1, [r4, #0x1c] -_020BA7F4: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x4 - ldrne r1, [r4, #0x0] - orrne r1, r1, #0x2 - strne r1, [r4, #0x0] - bne _020BA820 - ldrsh r1, [r0, #0x0] - strh r1, [r4, #0x20] - ldrsh r1, [r0, #0x2] - add r0, r0, #0x4 - strh r1, [r4, #0x22] -_020BA820: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x8 - ldreq r1, [r0, #0x0] - streq r1, [r4, #0x24] - ldreq r0, [r0, #0x4] - streq r0, [r4, #0x28] - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x4 - strne r0, [r4, #0x0] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] -_020BA850: - ldr r0, [r8, #0x4] - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _020BA890 - mov r2, r6, lsr #0x5 - add r2, r0, r2, lsl #0x2 - and r3, r6, #0x1f - mov r12, #0x1 - mov r3, r12, lsl r3 - ldr r2, [r2, #0x3c] - ands r2, r3, r2 - beq _020BA890 - ldr r3, [r0, #0xc] - mov r0, r4 - mov r2, r6 - blx r3 -_020BA890: - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA8BC - ldrh r0, [r7, #0x20] - strh r0, [r4, #0x2c] - ldrh r0, [r7, #0x22] - strh r0, [r4, #0x2e] - ldr r0, [r7, #0x24] - str r0, [r4, #0x30] - ldr r0, [r7, #0x28] - str r0, [r4, #0x34] -_020BA8BC: - str r4, [r8, #0xb0] -_020BA8C0: - cmp r5, #0x2 - bne _020BA8FC - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA900 -_020BA8FC: - mov r0, #0x0 -_020BA900: - cmp r0, #0x0 - bne _020BA9AC - ldr r4, [r8, #0xb0] - ldr r1, [r4, #0xc] - ands r0, r1, #0x1f0000 - beq _020BA9A0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - strne r0, [r4, #0xc] - ldr r0, [r8, #0x8] - bic r0, r0, #0x2 - str r0, [r8, #0x8] - ldr r0, [r8, #0x8] - ands r0, r0, #0x100 - bne _020BA9AC - ldr r0, _020BA9E4 ; =0x00293130 - ldr r3, _020BA9E8 ; =0x00002B2A - str r0, [sp, #0x0] - ldr r2, [r4, #0x4] - add r1, sp, #0x4 - str r2, [sp, #0x4] - ldr r6, [r4, #0x8] - mov r2, #0x6 - str r6, [sp, #0x8] - ldr r6, [r4, #0xc] - str r6, [sp, #0xc] - str r3, [sp, #0x10] - ldr r3, [r4, #0x10] - str r3, [sp, #0x14] - ldr r3, [r4, #0x14] - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA9AC - ldr r1, [r8, #0xf0] - mov r0, r4 - blx r1 - b _020BA9AC -_020BA9A0: - ldr r0, [r8, #0x8] - orr r0, r0, #0x2 - str r0, [r8, #0x8] -_020BA9AC: - cmp r5, #0x3 - addne sp, sp, #0x20 - ldmneia sp!, {r4-r8,pc} - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - add sp, sp, #0x20 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BA9D8: .word UNK_021CEF80 -_020BA9DC: .word UNK_021CED18 -_020BA9E0: .word UNK_020FF9D0 -_020BA9E4: .word 0x00293130 -_020BA9E8: .word 0x00002B2A - - arm_func_start FUN_020BA9EC -FUN_020BA9EC: ; 0x020BA9EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020BAAAC - ands r0, r1, #0x1 - beq _020BAAAC - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BAA58 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BAA5C -_020BAA58: - mov r0, #0x0 -_020BAA5C: - cmp r0, #0x0 - bne _020BAA8C - ldr r0, [r5, #0x0] - ldrb r0, [r0, #0x1] - str r0, [sp, #0x0] - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020BAA8C - add r1, sp, #0x0 - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BAA8C: - cmp r4, #0x3 - bne _020BAAAC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 -_020BAAAC: - ldr r0, [r5, #0x0] - add r0, r0, #0x2 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BAAC0 -FUN_020BAAC0: ; 0x020BAAC0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x8] - ands r0, r0, #0x200 - bne _020BAC38 - ldr r1, [r6, #0x0] - add r0, r6, #0x184 - ldrb r1, [r1, #0x1] - strb r1, [r6, #0xac] - ldr r1, [r6, #0x8] - ldrb r4, [r6, #0xac] - orr r1, r1, #0x4 - str r1, [r6, #0x8] - str r0, [r6, #0xb8] - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BAB44 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BAB48 -_020BAB44: - mov r0, #0x0 -_020BAB48: - cmp r0, #0x0 - bne _020BABAC - ldr r12, [r6, #0x4] - ldr r1, [r12, #0x18] - cmp r1, #0x0 - beq _020BAB98 - mov r0, r4, lsr #0x5 - add r0, r12, r0, lsl #0x2 - and r2, r4, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x4c] - ands r0, r2, r0 - beq _020BAB98 - ldr r0, [r6, #0xb8] - ldr r3, [r12, #0x1c] - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BABAC -_020BAB98: - ldr r1, [r6, #0x0] - ldr r0, [r6, #0xb8] - ldrb r1, [r1, #0x2] - and r1, r1, #0x1 - str r1, [r0, #0x0] -_020BABAC: - cmp r5, #0x2 - bne _020BABE8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BABEC -_020BABE8: - mov r0, #0x0 -_020BABEC: - cmp r0, #0x0 - bne _020BAC18 - ldr r0, [r6, #0xb8] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, [r6, #0x8] - orrne r0, r0, #0x1 - strne r0, [r6, #0x8] - ldreq r0, [r6, #0x8] - biceq r0, r0, #0x1 - streq r0, [r6, #0x8] -_020BAC18: - cmp r5, #0x3 - bne _020BAC38 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 -_020BAC38: - ldr r0, [r6, #0x0] - add r0, r0, #0x3 - str r0, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BAC48 -FUN_020BAC48: ; 0x020BAC48 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAC60 - blx r1 -_020BAC60: - ldr r0, [r4, #0x8] - orr r0, r0, #0x20 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC70 -FUN_020BAC70: ; 0x020BAC70 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0xc] - cmp r1, #0x0 - beq _020BAC88 - blx r1 -_020BAC88: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC98 -FUN_020BAC98: ; 0x020BAC98 - stmdb sp!, {r4,lr} - sub sp, sp, #0x188 - mov r4, r0 - ldr r0, [r4, #0x0] - and r0, r0, #0x10 - cmp r0, #0x10 - bne _020BAD2C - add r1, r4, #0x3c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x44 - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x4c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020BACF8 - add r0, r4, #0x3c - bl FUN_020BAD74 -_020BACF8: - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAD0C - add r0, r4, #0x44 - bl FUN_020BAD74 -_020BAD0C: - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _020BAD20 - add r0, r4, #0x4c - bl FUN_020BAD74 -_020BAD20: - ldr r0, [r4, #0x0] - bic r0, r0, #0x10 - str r0, [r4, #0x0] -_020BAD2C: - ldr r2, _020BAD70 ; =UNK_021CEF7C - ldr r0, [r2, #0x0] - cmp r0, #0x0 - beq _020BAD4C - mov r1, r4 - bl FUN_020BADE4 - add sp, sp, #0x188 - ldmia sp!, {r4,pc} -_020BAD4C: - add r0, sp, #0x0 - mov r1, r4 - str r0, [r2, #0x0] - bl FUN_020BADE4 - ldr r0, _020BAD70 ; =UNK_021CEF7C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x188 - ldmia sp!, {r4,pc} - .balign 4 -_020BAD70: .word UNK_021CEF7C - - arm_func_start FUN_020BAD74 -FUN_020BAD74: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020BAD90: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020BADD0 -_020BADA0: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020BADA0 -_020BADD0: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020BAD90 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BADE4 -FUN_020BADE4: ; 0x020BADE4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x188 - bl MIi_CpuClearFast - mov r0, #0x1 - str r0, [r5, #0xc4] - str r0, [r5, #0x8] - ldr r0, [r4, #0x30] - ldr r2, _020BAF60 ; =UNK_02106614 - cmp r0, #0x0 - strne r0, [r5, #0x0] - ldreq r1, [r4, #0x4] - ldreq r0, [r1, #0x4] - addeq r0, r1, r0 - streq r0, [r5, #0x0] - str r4, [r5, #0x4] - ldr r0, [r4, #0x4] - ldr r1, _020BAF64 ; =UNK_02106608 - add r0, r0, #0x40 - str r0, [r5, #0xd4] - ldr r12, [r4, #0x4] - ldr r0, _020BAF68 ; =UNK_02106620 - ldr r3, [r12, #0x8] - add r3, r12, r3 - str r3, [r5, #0xd8] - ldr r12, [r4, #0x4] - ldr r3, [r12, #0xc] - add r3, r12, r3 - str r3, [r5, #0xdc] - ldr r3, [r4, #0x4] - ldrb r3, [r3, #0x15] - ldr r2, [r2, r3, lsl #0x2] - str r2, [r5, #0xe8] - ldr r2, [r4, #0x4] - ldrb r2, [r2, #0x15] - ldr r1, [r1, r2, lsl #0x2] - str r1, [r5, #0xec] - ldr r1, [r4, #0x4] - ldrb r1, [r1, #0x16] - ldr r0, [r0, r1, lsl #0x2] - str r0, [r5, #0xf0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x1c] - str r0, [r5, #0xe0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x20] - str r0, [r5, #0xe4] - ldr r1, [r4, #0x20] - cmp r1, #0x0 - beq _020BAEE0 - ldrb r0, [r4, #0x24] - cmp r0, #0x20 - bhs _020BAEE0 - add r0, r5, r0, lsl #0x2 - str r1, [r0, #0xc] - ldrb r0, [r4, #0x24] - ldrb r1, [r4, #0x25] - add r0, r5, r0 - strb r1, [r0, #0x8c] -_020BAEE0: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x80 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x100 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x200 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x8 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x400 - strne r0, [r5, #0x8] - ldr r1, [r4, #0x28] - cmp r1, #0x0 - beq _020BAF44 - mov r0, r5 - blx r1 -_020BAF44: - mov r0, r5 - bl FUN_020BAF6C - ldr r0, [r4, #0x0] - bic r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BAF60: .word UNK_02106614 -_020BAF64: .word UNK_02106608 -_020BAF68: .word UNK_02106620 - - arm_func_start FUN_020BAF6C -FUN_020BAF6C: - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r6, _020BAFB4 ; =UNK_02106730 - add r4, r5, #0x8 -_020BAF7C: - ldr r1, [r4, #0x0] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r4, #0x0] - ldr r1, [r5, #0x0] - ldrb r3, [r1, #0x0] - and r1, r3, #0x1f - ldr r2, [r6, r1, lsl #0x2] - and r1, r3, #0xe0 - blx r2 - ldr r0, [r5, #0x8] - ands r0, r0, #0x20 - beq _020BAF7C - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BAFB4: .word UNK_02106730 - - arm_func_start FUN_020BAFB8 -FUN_020BAFB8: ; 0x020BAFB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x6c - mov r6, r0 - ldr r12, [r6, #0x1c] - mov r4, r1 - mov r5, r2 - mov r7, r3 - cmp r12, #0x1000 - beq _020BAFF8 - add r1, sp, #0x54 - mov r0, #0x1b - mov r2, #0x3 - str r12, [sp, #0x54] - str r12, [sp, #0x58] - str r12, [sp, #0x5c] - bl FUN_020BB1C0 -_020BAFF8: - cmp r7, #0x0 - beq _020BB150 - ldr r0, [r6, #0x8] - add r3, r6, r0 - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r0, [r0, #0x4] - add r4, r3, r0 - ldr r0, [r4, #0xc] - ands r0, r0, #0x1f0000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - ldr r0, _020BB1B4 ; =0x00293130 - str r0, [sp, #0x0] - ldr r0, [r4, #0x4] - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - ldr r1, [r4, #0xc] - str r1, [sp, #0xc] - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - ldr r1, _020BB1B8 ; =0x00002B2A - strne r0, [sp, #0xc] - str r1, [sp, #0x10] - ldr r2, [r4, #0x14] - ldr r0, [sp, #0x0] - str r2, [sp, #0x14] - ldrh r3, [r4, #0x1c] - add r1, sp, #0x4 - mov r2, #0x6 - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x1 - beq _020BB150 - ldrb r12, [r6, #0x16] - mov r3, #0x8 - ldr r1, _020BB1BC ; =UNK_02106620 - str r3, [sp, #0x1c] - ldrh r2, [r4, #0x20] - add r0, r4, #0x2c - ldr r1, [r1, r12, lsl #0x2] - strh r2, [sp, #0x48] - ldrh r2, [r4, #0x22] - strh r2, [sp, #0x4a] - ldr r2, [r4, #0x24] - str r2, [sp, #0x4c] - ldr r2, [r4, #0x28] - str r2, [sp, #0x50] - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x2 - orrne r2, r3, #0x1 - strne r2, [sp, #0x1c] - bne _020BB0F8 - ldr r2, [r0, #0x0] - str r2, [sp, #0x34] - ldr r2, [r0, #0x4] - add r0, r0, #0x8 - str r2, [sp, #0x38] -_020BB0F8: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x4 - ldrne r2, [sp, #0x1c] - orrne r2, r2, #0x2 - strne r2, [sp, #0x1c] - bne _020BB124 - ldrsh r2, [r0, #0x0] - strh r2, [sp, #0x3c] - ldrsh r2, [r0, #0x2] - add r0, r0, #0x4 - strh r2, [sp, #0x3e] -_020BB124: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x8 - ldreq r2, [r0, #0x0] - streq r2, [sp, #0x40] - ldreq r0, [r0, #0x4] - streq r0, [sp, #0x44] - ldrne r0, [sp, #0x1c] - orrne r0, r0, #0x4 - strne r0, [sp, #0x1c] - add r0, sp, #0x1c - blx r1 -_020BB150: - ldr r0, [r6, #0xc] - add r2, r6, r0 - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r2, r2, r0 - ldr r0, [r2, #0x8] - ldr r1, [r2, #0xc] - add r0, r2, r0 - bl FUN_020BB2B0 - ldr r3, [r6, #0x20] - cmp r3, #0x1000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - add r1, sp, #0x60 - mov r0, #0x1b - mov r2, #0x3 - str r3, [sp, #0x60] - str r3, [sp, #0x64] - str r3, [sp, #0x68] - bl FUN_020BB1C0 - add sp, sp, #0x6c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BB1B4: .word 0x00293130 -_020BB1B8: .word 0x00002B2A -_020BB1BC: .word UNK_02106620 - - arm_func_start FUN_020BB1C0 -FUN_020BB1C0: - stmdb sp!, {r4-r6,lr} - ldr r3, _020BB2A4 ; =UNK_021D1C80 - mov r6, r0 - ldr r12, [r3, #0x0] - mov r5, r1 - mov r4, r2 - cmp r12, #0x0 - beq _020BB278 - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB24C - ldr r2, [r12, #0x0] - add r0, r2, #0x1 - add r1, r0, r4 - cmp r1, #0xc0 - bhi _020BB24C - str r0, [r12, #0x0] - ldr r0, [r3, #0x0] - cmp r4, #0x0 - add r0, r0, r2, lsl #0x2 - str r6, [r0, #0x4] - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r3, #0x0] - mov r0, r5 - ldr r1, [r2], #0x4 - add r1, r2, r1, lsl #0x2 - mov r2, r4, lsl #0x2 - bl MIi_CpuCopyFast - ldr r0, _020BB2A4 ; =UNK_021D1C80 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, r0, r4 - str r0, [r1, #0x0] - ldmia sp!, {r4-r6,pc} -_020BB24C: - ldr r0, [r12, #0x0] - cmp r0, #0x0 - beq _020BB260 - bl FUN_020BB394 - b _020BB28C -_020BB260: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C - b _020BB28C -_020BB278: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C -_020BB28C: - ldr r1, _020BB2AC ; =0x04000400 - mov r0, r5 - mov r2, r4, lsl #0x2 - str r6, [r1, #0x0] - bl MIi_CpuSend32 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB2A4: .word UNK_021D1C80 -_020BB2A8: .word UNK_021D1C84 -_020BB2AC: .word 0x04000400 - - arm_func_start FUN_020BB2B0 -FUN_020BB2B0: ; 0x020BB2B0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - cmp r4, #0x100 - blo _020BB2DC - ldr r1, _020BB360 ; =GXi_DmaId - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - bne _020BB2F8 -_020BB2DC: - mov r2, r4, lsr #0x2 - ldr r0, [r5, #0x0] - add r1, r5, #0x4 - sub r2, r2, #0x1 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB2F8: - bl FUN_020BB394 - ldr r0, _020BB364 ; =UNK_021D1C88 - ldr r1, _020BB368 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - mov r2, #0x1 - str r2, [r1, #0x0] - cmp r0, #0x0 - beq _020BB33C - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsyncFast - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB33C: - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsync - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BB360: .word GXi_DmaId -_020BB364: .word UNK_021D1C88 -_020BB368: .word UNK_021D1C84 -_020BB36C: .word FUN_020BB370 - - arm_func_start FUN_020BB370 -FUN_020BB370: ; 0x020BB370 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BB37C -FUN_020BB37C: ; 0x020BB37C - ldr r0, _020BB390 ; =UNK_021D1C84 -_020BB380: - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _020BB380 - bx lr - .balign 4 -_020BB390: .word UNK_021D1C84 - - arm_func_start FUN_020BB394 -FUN_020BB394: ; 0x020BB394 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020BB3FC ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB3B0 - bl FUN_020BB37C -_020BB3B0: - ldr r0, _020BB400 ; =UNK_021D1C80 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r2, [r0, #0x0] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r1, _020BB404 ; =0x04000400 - add r0, r0, #0x4 - mov r2, r2, lsl #0x2 - bl MIi_CpuSend32 - ldr r0, _020BB400 ; =UNK_021D1C80 - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB3FC: .word UNK_021D1C84 -_020BB400: .word UNK_021D1C80 -_020BB404: .word 0x04000400 - - arm_func_start FUN_020BB408 -FUN_020BB408: ; 0x020BB408 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - mov r5, r1 - mov r4, r2 - ldr r6, _020BB594 ; =UNK_021CED20 - ldr r1, _020BB598 ; =UNK_021CED64 - add r2, sp, #0x10 - bl MTX_MultVec43 - ldr r1, [sp, #0x14] - ldr r0, [r6, #0x1c] - ldr r2, [sp, #0x10] - smull r8, r7, r1, r0 - ldr r0, [r6, #0xc] - ldr r3, [sp, #0x18] - smlal r8, r7, r2, r0 - ldr r1, [r6, #0x2c] - ldr r0, [r6, #0x3c] - smlal r8, r7, r3, r1 - mov r1, r8, lsr #0xc - orr r1, r1, r7, lsl #0x14 - add r0, r1, r0 - bl FX_InvAsync - ldr r2, [sp, #0x14] - ldr r1, [r6, #0x10] - ldr r0, [r6, #0x14] - smull lr, r8, r2, r1 - smull r12, r9, r2, r0 - ldr r1, [sp, #0x10] - ldr r3, [r6, #0x0] - ldr r0, [sp, #0x18] - smlal lr, r8, r1, r3 - ldr r7, [r6, #0x20] - ldr r2, [r6, #0x30] - smlal lr, r8, r0, r7 - mov r3, lr, lsr #0xc - orr r3, r3, r8, lsl #0x14 - add r7, r3, r2 - ldr r3, [r6, #0x4] - ldr r8, [r6, #0x24] - smlal r12, r9, r1, r3 - smlal r12, r9, r0, r8 - mov r0, r12, lsr #0xc - ldr r2, [r6, #0x34] - orr r0, r0, r9, lsl #0x14 - add r6, r0, r2 - bl FX_GetDivResultFx64c - mov r2, r7, asr #0x1f - umull r9, lr, r0, r7 - mla lr, r0, r2, lr - mov r3, #0x80000000 - mla lr, r1, r7, lr - adds r9, r9, r3 - adc r2, lr, #0x0 - add r2, r2, #0x1000 - add r2, r2, r2, lsr #0x1f - mov r7, r2, asr #0x1 - umull lr, r2, r0, r6 - mov r12, r6, asr #0x1f - mla r2, r0, r12, r2 - mla r2, r1, r6, r2 - adds r3, lr, r3 - adc r0, r2, #0x0 - add r0, r0, #0x1000 - add r0, r0, r0, lsr #0x1f - mov r8, #0x0 - mov r6, r0, asr #0x1 - cmp r7, #0x0 - blt _020BB530 - cmp r6, #0x0 - blt _020BB530 - cmp r7, #0x1000 - bgt _020BB530 - cmp r6, #0x1000 - ble _020BB534 -_020BB530: - mvn r8, #0x0 -_020BB534: - add r0, sp, #0x0 - add r1, sp, #0x4 - add r2, sp, #0x8 - add r3, sp, #0xc - bl FUN_020B8200 - ldr r2, [sp, #0x0] - ldr r0, [sp, #0x8] - ldr r12, [sp, #0xc] - sub r0, r0, r2 - mul r0, r7, r0 - add r1, r0, #0x800 - ldr r3, [sp, #0x4] - add r1, r2, r1, asr #0xc - sub r0, r12, r3 - mul r0, r6, r0 - str r1, [r5, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x800 - rsb r1, r1, #0xbf - sub r1, r1, r0, asr #0xc - mov r0, r8 - str r1, [r4, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BB594: .word UNK_021CED20 -_020BB598: .word UNK_021CED64 - - arm_func_start FUN_020BB59C -FUN_020BB59C: ; 0x020BB59C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldr r0, _020BB7C8 ; =0x30415642 - cmp r1, r0 - bhi _020BB5F4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7CC ; =0x30414D42 - cmp r1, r0 - bhi _020BB5E4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7D0 ; =0x30414342 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5E4: - ldr r0, _020BB7D4 ; =0x30415442 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5F4: - ldr r0, _020BB7D8 ; =0x30505442 - cmp r1, r0 - bhi _020BB618 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - beq _020BB624 - b _020BB7BC -_020BB618: - ldr r0, _020BB7E0 ; =0x30585442 - cmp r1, r0 - bne _020BB7BC -_020BB624: - mov r11, #0x1 - mov r0, r5 - mov r9, r11 - mov r8, r11 - bl FUN_020BC0FC - movs r4, r0 - beq _020BB77C - bl FUN_020B7E1C - mov r7, r0 - mov r0, r4 - bl FUN_020B7E10 - mov r6, r0 - mov r0, r4 - bl FUN_020B7CE4 - mov r10, r0 - cmp r7, #0x0 - beq _020BB68C - ldr r0, _020BB7E4 ; =UNK_021064B8 - mov r1, #0x0 - ldr r3, [r0, #0x0] - mov r0, r7 - mov r2, r1 - blx r3 - movs r7, r0 - moveq r11, #0x0 - b _020BB690 -_020BB68C: - mov r7, #0x0 -_020BB690: - cmp r6, #0x0 - beq _020BB6BC - ldr r1, _020BB7E4 ; =UNK_021064B8 - mov r0, r6 - ldr r3, [r1, #0x0] - mov r1, #0x1 - mov r2, #0x0 - blx r3 - movs r6, r0 - moveq r9, #0x0 - b _020BB6C0 -_020BB6BC: - mov r6, #0x0 -_020BB6C0: - cmp r10, #0x0 - beq _020BB6F0 - ldr r1, _020BB7E8 ; =UNK_021064C0 - ldrh r2, [r4, #0x20] - ldr r3, [r1, #0x0] - mov r0, r10 - and r1, r2, #0x8000 - mov r2, #0x0 - blx r3 - movs r10, r0 - moveq r8, #0x0 - b _020BB6F4 -_020BB6F0: - mov r10, #0x0 -_020BB6F4: - cmp r11, #0x0 - beq _020BB70C - cmp r9, #0x0 - beq _020BB70C - cmp r8, #0x0 - bne _020BB748 -_020BB70C: - ldr r1, _020BB7EC ; =UNK_021064C4 - mov r0, r10 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020BB748: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl FUN_020B7DFC - mov r0, r4 - mov r1, r10 - bl FUN_020B7CDC - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7D28 - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7C78 -_020BB77C: - ldr r1, [r5, #0x0] - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - bne _020BB7A4 - mov r0, r5 - bl FUN_020BC13C - cmp r4, #0x0 - beq _020BB7A4 - mov r1, r4 - bl FUN_020B7790 -_020BB7A4: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7B0: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7BC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BB7C8: .word 0x30415642 -_020BB7CC: .word 0x30414D42 -_020BB7D0: .word 0x30414342 -_020BB7D4: .word 0x30415442 -_020BB7D8: .word 0x30505442 -_020BB7DC: .word 0x30444D42 -_020BB7E0: .word 0x30585442 -_020BB7E4: .word UNK_021064B8 -_020BB7E8: .word UNK_021064C0 -_020BB7EC: .word UNK_021064C4 -_020BB7F0: .word UNK_021064BC - - arm_func_start FUN_020BB7F4 -FUN_020BB7F4: ; 0x020BB7F4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl G3X_Init - bl FUN_020B84D8 - ldr r1, _020BB820 ; =0x04000600 - ldr r0, [r1, #0x0] - bic r0, r0, #0xc0000000 - orr r0, r0, #0x80000000 - str r0, [r1, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB820: .word 0x04000600 - - arm_func_start FUN_020BB824 -FUN_020BB824: ; 0x020BB824 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r5, r1 - bl FUN_020BB394 - ldr r0, _020BB8B4 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020BB8B8 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020BB8BC ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - cmp r6, #0x0 - beq _020BB87C - add r4, sp, #0x0 -_020BB860: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020BB860 - add r0, sp, #0x0 - mov r1, r6 - bl MTX_Copy44To43_ -_020BB87C: - cmp r5, #0x0 - beq _020BB894 -_020BB884: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020BB884 -_020BB894: - ldr r1, _020BB8C0 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020BB8B4 ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x2 - str r1, [r0, #0x0] - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB8B4: .word 0x04000440 -_020BB8B8: .word 0x04000444 -_020BB8BC: .word 0x04000454 -_020BB8C0: .word 0x04000448 - - arm_func_start thunk_FUN_020ae84c -thunk_FUN_020ae84c: ; 0x020BB8C4 - ldr ip, _020BB8CC ; =FUN_020AE84C - bx r12 - .balign 4 -_020BB8CC: .word FUN_020AE84C - - arm_func_start FUN_020BB8D0 -FUN_020BB8D0: ; 0x020BB8D0 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - bl FUN_020B81B0 - mov r1, r0 - mov r0, r4 - bl FUN_020AE868 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BB8F4 -FUN_020BB8F4: ; 0x020BB8F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB910: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBC74 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB910 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB934 -FUN_020BB934: ; 0x020BB934 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB950: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCB8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB950 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB974 -FUN_020BB974: ; 0x020BB974 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB990: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCFC - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB990 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9B4 -FUN_020BB9B4: ; 0x020BB9B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB9D0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD40 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB9D0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9F4 -FUN_020BB9F4: ; 0x020BB9F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD84 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA34 -FUN_020BBA34: ; 0x020BBA34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBDC8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA74 -FUN_020BBA74: ; 0x020BBA74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE0C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAB4 -FUN_020BBAB4: ; 0x020BBAB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBAD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE50 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBAD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAF4 -FUN_020BBAF4: ; 0x020BBAF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE94 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB34 -FUN_020BBB34: ; 0x020BBB34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBED8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB74 -FUN_020BBB74: ; 0x020BBB74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF1C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBB4 -FUN_020BBBB4: ; 0x020BBBB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBBD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF60 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBBD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBF4 -FUN_020BBBF4: ; 0x020BBBF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFA4 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC34 -FUN_020BBC34: ; 0x020BBC34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFE8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC74 -FUN_020BBC74: ; 0x020BBC74 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x800 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x800 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCB8 -FUN_020BBCB8: ; 0x020BBCB8 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x1000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x1000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCFC -FUN_020BBCFC: ; 0x020BBCFC - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x2000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x2000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD40 -FUN_020BBD40: ; 0x020BBD40 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x4000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x4000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD84 -FUN_020BBD84: ; 0x020BBD84 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x8000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x8000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBDC8 -FUN_020BBDC8: ; 0x020BBDC8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x1f0000 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE0C -FUN_020BBE0C: ; 0x020BBE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x3f000000 - orr r0, r0, r2, lsl #0x18 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE50 -FUN_020BBE50: ; 0x020BBE50 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xc0 - orr r0, r0, r2, lsl #0x6 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE94 -FUN_020BBE94: ; 0x020BBE94 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x30 - orr r0, r0, r2, lsl #0x4 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBED8 -FUN_020BBED8: ; 0x020BBED8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xf - orr r0, r0, r2 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBF1C -FUN_020BBF1C: ; 0x020BBF1C - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBF5C ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x8] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020BBF5C: .word 0x8000FFFF - - arm_func_start FUN_020BBF60 -FUN_020BBF60: ; 0x020BBF60 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x8] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BBFA4 -FUN_020BBFA4: ; 0x020BBFA4 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBFE4 ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x4] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020BBFE4: .word 0x8000FFFF - - arm_func_start FUN_020BBFE8 -FUN_020BBFE8: ; 0x020BBFE8 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x4] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BC02C -FUN_020BC02C: ; 0x020BC02C - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC050: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrne r5, [r6, #0x10] - orrne r5, r5, r2 - strne r5, [r6, #0x10] - ldreq r5, [r6, #0x10] - andeq r5, r5, r3 - streq r5, [r6, #0x10] - cmp lr, r4 - blo _020BC050 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC094 -FUN_020BC094: ; 0x020BC094 - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC0B8: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrneh r5, [r6, #0x1e] - orrne r5, r5, r2 - strneh r5, [r6, #0x1e] - ldreqh r5, [r6, #0x1e] - andeq r5, r5, r3 - streqh r5, [r6, #0x1e] - cmp lr, r4 - blo _020BC0B8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC0FC -FUN_020BC0FC: ; 0x020BC0FC - ldrh r2, [r0, #0xc] - ldrh r1, [r0, #0xe] - add r3, r0, r2 - cmp r1, #0x1 - bne _020BC12C - ldr r2, [r0, #0x0] - ldr r1, _020BC138 ; =0x30585442 - cmp r2, r1 - ldreq r1, [r3, #0x0] - addeq r0, r0, r1 - movne r0, #0x0 - bx lr -_020BC12C: - ldr r1, [r3, #0x4] - add r0, r0, r1 - bx lr - .balign 4 -_020BC138: .word 0x30585442 - - arm_func_start FUN_020BC13C -FUN_020BC13C: - ldrh r1, [r0, #0xc] - ldr r1, [r0, r1] - add r0, r0, r1 - bx lr - - arm_func_start FUN_020BC14C -FUN_020BC14C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC1E4 - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC294 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC190: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC1CC - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC1CC - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC1CC - ldr r5, [r7, #0xc] - cmp r5, r2 - addeq sp, sp, #0x4 - moveq r0, r4 - ldmeqia sp!, {r4-r7,pc} -_020BC1CC: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC190 - b _020BC294 -_020BC1E4: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC294 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC238 -_020BC208: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC208 -_020BC238: - ldrh r4, [r0, #0x6] - ldr r3, [r1, #0x0] - add r12, r0, r4 - ldrh r4, [r12, #0x2] - ldrb r0, [r2, #0x3] - add r4, r12, r4 - ldr r2, [r4, r0, lsl #0x4] - add r4, r4, r0, lsl #0x4 - cmp r2, r3 - bne _020BC294 - ldr r3, [r4, #0x4] - ldr r2, [r1, #0x4] - cmp r3, r2 - bne _020BC294 - ldr r3, [r4, #0x8] - ldr r2, [r1, #0x8] - cmp r3, r2 - bne _020BC294 - ldr r2, [r4, #0xc] - ldr r1, [r1, #0xc] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} -_020BC294: - mvn r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC2A0 -FUN_020BC2A0: ; 0x020BC2A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC34C - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC404 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC2E4: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC334 - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC334 - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC334 - ldr r5, [r7, #0xc] - cmp r5, r2 - bne _020BC334 - ldrh r2, [r0, #0x6] - add sp, sp, #0x4 - ldrh r1, [r0, r2] - add r0, r0, r2 - add r0, r0, #0x4 - mla r0, r1, r4, r0 - ldmia sp!, {r4-r7,pc} -_020BC334: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC2E4 - b _020BC404 -_020BC34C: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC404 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC3A0 -_020BC370: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC370 -_020BC3A0: - ldrh r4, [r0, #0x6] - ldrb r2, [r2, #0x3] - ldr r3, [r1, #0x0] - add r0, r0, r4 - ldrh r4, [r0, #0x2] - add r12, r0, r4 - ldr r4, [r12, r2, lsl #0x4] - add r12, r12, r2, lsl #0x4 - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x4] - ldr r3, [r1, #0x4] - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x8] - ldr r3, [r1, #0x8] - cmp r4, r3 - bne _020BC404 - ldr r3, [r12, #0xc] - ldr r1, [r1, #0xc] - cmp r3, r1 - ldreqh r1, [r0], #0x4 - addeq sp, sp, #0x4 - mlaeq r0, r1, r2, r0 - ldmeqia sp!, {r4-r7,pc} -_020BC404: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC410 -FUN_020BC410: ; 0x020BC410 - ldrh r3, [r0, #0x12] - add r0, r0, #0xc - ldrh r2, [r0, r3] - add r0, r0, r3 - add r0, r0, #0x4 - mla r0, r2, r1, r0 - bx lr - - arm_func_start FUN_020BC42C -FUN_020BC42C: ; 0x020BC42C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl FUN_020BC410 - ldrsh r1, [r0, #0x4] - ldrh r3, [r0, #0x6] - mul r2, r1, r4 - add r3, r5, r3 - mov r2, r2, lsr #0xc - b _020BC45C -_020BC458: - sub r2, r2, #0x1 -_020BC45C: - cmp r2, #0x0 - beq _020BC474 - mov r1, r2, lsl #0x2 - ldrh r1, [r3, r1] - cmp r1, r4 - bhs _020BC458 -_020BC474: - ldrh r1, [r0, #0x0] - b _020BC480 -_020BC47C: - add r2, r2, #0x1 -_020BC480: - add r0, r2, #0x1 - cmp r0, r1 - bhs _020BC49C - add r0, r3, r2, lsl #0x2 - ldrh r0, [r0, #0x4] - cmp r0, r4 - bls _020BC47C -_020BC49C: - add r0, r3, r2, lsl #0x2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BC4A8 -FUN_020BC4A8: ; 0x020BC4A8 - ldrh r2, [r0, #0xa] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4B8 -FUN_020BC4B8: ; 0x020BC4B8 - ldrh r2, [r0, #0x8] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4C8 -FUN_020BC4C8: ; 0x020BC4C8 - ldrh r2, [r0, #0xc] - ldr r2, [r0, r2] - add r12, r0, r2 - ldrh r2, [r12, #0xe] - add r3, r12, #0x8 - ldrh r0, [r3, r2] - add r2, r3, r2 - add r2, r2, #0x4 - mul r1, r0, r1 - adds r0, r2, r1 - ldrne r0, [r0, #0x0] - addne r0, r12, r0 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020BC500 -FUN_020BC500: - stmdb sp!, {r4,lr} - ands r4, r3, #0x8000 - beq _020BC5E0 - mov r2, #0x0 - str r2, [r0, #0x20] - ldr r4, [r0, #0x20] - ldr r2, _020BC684 ; =0x00007FFF - str r4, [r0, #0x1c] - ldr r4, [r0, #0x1c] - and r3, r3, r2 - str r4, [r0, #0x18] - ldr r4, [r0, #0x18] - mov r2, #0x3 - str r4, [r0, #0x14] - ldr r4, [r0, #0x14] - mul r2, r3, r2 - str r4, [r0, #0x10] - ldr r4, [r0, #0x10] - mov r3, r2, lsl #0x1 - str r4, [r0, #0xc] - ldr r4, [r0, #0xc] - add r2, r1, r2, lsl #0x1 - str r4, [r0, #0x8] - ldr r4, [r0, #0x8] - str r4, [r0, #0x4] - ldr r4, [r0, #0x4] - str r4, [r0, #0x0] - ldrsh r4, [r1, r3] - ldrsh r12, [r2, #0x2] - ldrsh r3, [r2, #0x4] - and r1, r4, #0xf - ands r4, r4, #0x10 - movne lr, #0x1000 - rsbne lr, lr, #0x0 - moveq lr, #0x1000 - str lr, [r0, r1, lsl #0x2] - ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA15 - ldrb r4, [r4, r1, lsl #0x2] - str r12, [r0, r4, lsl #0x2] - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh lr, [r2, #0x0] - ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA16 - rsbne r3, r3, #0x0 - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh r2, [r2, #0x0] - ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA17 - rsbne r12, r12, #0x0 - ldrb r1, [r2, r1, lsl #0x2] - str r12, [r0, r1, lsl #0x2] - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020BC5E0: - ldr r1, _020BC684 ; =0x00007FFF - mov r12, #0x5 - and r1, r3, r1 - mul r3, r1, r12 - add r1, r2, r3, lsl #0x1 - ldrsh lr, [r1, #0x8] - mov r12, r3, lsl #0x1 - mov r3, lr, asr #0x3 - str r3, [r0, #0x10] - ldrsh r12, [r2, r12] - and r2, lr, #0x7 - mov r2, r2, lsl #0x10 - mov r3, r12, asr #0x3 - str r3, [r0, #0x0] - ldrsh r3, [r1, #0x2] - and r12, r12, #0x7 - orr lr, r12, r2, asr #0xd - mov r2, r3, asr #0x3 - str r2, [r0, #0x4] - ldrsh r12, [r1, #0x4] - mov r2, lr, lsl #0x10 - and lr, r3, #0x7 - mov r3, r12, asr #0x3 - str r3, [r0, #0x8] - ldrsh r3, [r1, #0x6] - orr r1, lr, r2, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r12, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r3, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r3, asr #0x3 - mov r1, r1, lsl #0x13 - str r2, [r0, #0xc] - mov r1, r1, asr #0x13 - str r1, [r0, #0x14] - mov r0, #0x1 - ldmia sp!, {r4,pc} - .balign 4 -_020BC684: .word 0x00007FFF -_020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA15 -_020BC690: .word UNK_020FFA16 -_020BC694: .word UNK_020FFA17 - - arm_func_start FUN_020BC698 -FUN_020BC698: ; 0x020BC698 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x48 - ldrh r4, [r3, #0x4] - ldr r5, [r3, #0xc] - ldr r8, [r3, #0x10] - ldr r7, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - mov r6, r0 - cmp r12, r4 - add r5, r3, r5 - add r4, r3, r8 - add r8, r3, r7 - ldr r7, [r2, #0x0] - bne _020BC780 - ands r0, r7, #0xc0000000 - beq _020BC6F0 - ands r0, r7, #0x40000000 - andne r0, r12, #0x1 - addne r12, r0, r12, lsr #0x1 - andeq r0, r12, #0x3 - addeq r12, r0, r12, lsr #0x2 -_020BC6F0: - ldr r0, [r3, #0x8] - ands r0, r0, #0x2 - movne r7, #0x0 - bne _020BC7F4 - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x48 - ldmeqia sp!, {r4-r10,pc} - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x48 - str r0, [r6, #0x20] - ldmia sp!, {r4-r10,pc} -_020BC780: - ands r0, r7, #0xc0000000 - beq _020BC7F0 - ldr r0, _020BC9C4 ; =0x1FFF0000 - ands r2, r7, #0x40000000 - and r0, r7, r0 - mov r0, r0, lsr #0x10 - beq _020BC7C4 - cmp r12, r0 - movcs r12, r0, lsr #0x1 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9C8 ; =0x00001FFF - mov r12, r12, lsr #0x1 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x2 - b _020BC800 -_020BC7C4: - cmp r12, r0 - andcs r0, r12, #0x3 - addcs r12, r0, r12, lsr #0x2 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9CC ; =0x00003FFF - mov r12, r12, lsr #0x2 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x4 - b _020BC800 -_020BC7F0: - add r7, r12, #0x1 -_020BC7F4: - ldr r0, _020BC9D0 ; =0x00000FFF - mov r9, #0x1 - and r10, r1, r0 -_020BC800: - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - mov r1, r7, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [sp, #0x24] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [sp, #0x28] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [sp, #0x2c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x8] - ldr r3, [sp, #0xc] - ldr r1, [sp, #0x30] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0xc] - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x34] - orr r7, r7, r0 - sub r0, r1, r2 - mul r1, r2, r9 - mul r0, r10, r0 - add r0, r1, r0, asr #0xc - str r0, [r6, #0x10] - ldr r2, [sp, #0x14] - ldr r0, [sp, #0x38] - mul r1, r2, r9 - sub r0, r0, r2 - mul r0, r10, r0 - add r2, r1, r0, asr #0xc - mov r0, r6 - mov r1, r6 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BC968 - ldr r3, [sp, #0x18] - ldr r1, [sp, #0x3c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [sp, #0x40] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x1c] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x44] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r2, r2, r1, asr #0xc - add r0, r6, #0x18 - mov r1, r0 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} -_020BC968: - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020BC9C4: .word 0x1FFF0000 -_020BC9C8: .word 0x00001FFF -_020BC9CC: .word 0x00003FFF -_020BC9D0: .word 0x00000FFF - - arm_func_start FUN_020BC9D4 -FUN_020BC9D4: ; 0x020BC9D4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4c - ldr r5, [r3, #0xc] - ldr r4, [r3, #0x10] - ldr r12, [r2, #0x0] - ldr r2, [r2, #0x4] - mov r6, r0 - mov r0, r1, asr #0xc - add r5, r3, r5 - add r4, r3, r4 - add r8, r3, r2 - ands r1, r12, #0xc0000000 - beq _020BCD40 - ldr r1, _020BCDC0 ; =0x1FFF0000 - ands r2, r12, #0x40000000 - and r1, r12, r1 - mov r2, r1, lsr #0x10 - beq _020BCA44 - ands r1, r0, #0x1 - beq _020BCA3C - cmp r0, r2 - movhi r0, r2, lsr #0x1 - addhi r0, r0, #0x1 - bhi _020BCD40 - mov r7, r0, lsr #0x1 - b _020BCBE8 -_020BCA3C: - mov r0, r0, lsr #0x1 - b _020BCD40 -_020BCA44: - ands r1, r0, #0x3 - beq _020BCBE0 - cmp r0, r2 - addhi r0, r1, r2, lsr #0x2 - bhi _020BCD40 - ands r1, r0, #0x1 - beq _020BCBD8 - ands r1, r0, #0x2 - movne r9, r0, lsr #0x2 - addne r0, r9, #0x1 - moveq r0, r0, lsr #0x2 - addeq r9, r0, #0x1 - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r7, #0x0 - bl FUN_020BC500 - mov r1, r9, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r7, r0 - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [r6, #0x0] - mov r2, #0x3 - mla r3, r1, r2, r3 - str r3, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [r6, #0x4] - orr r7, r7, r0 - mla r0, r1, r2, r3 - str r0, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r6, #0x8] - mov r0, r6 - mla r3, r1, r2, r3 - str r3, [r6, #0x8] - ldr r4, [sp, #0xc] - ldr r3, [r6, #0xc] - mov r1, r6 - mla r4, r3, r2, r4 - str r4, [r6, #0xc] - ldr r4, [sp, #0x10] - ldr r3, [r6, #0x10] - mla r4, r3, r2, r4 - str r4, [r6, #0x10] - ldr r4, [sp, #0x14] - ldr r3, [r6, #0x14] - mla r2, r3, r2, r4 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCB7C - ldr r1, [sp, #0x18] - ldr r0, [r6, #0x18] - mov r2, #0x3 - mla r1, r0, r2, r1 - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [r6, #0x1c] - add r0, r6, #0x18 - mla r3, r1, r2, r3 - str r3, [r6, #0x1c] - ldr r4, [sp, #0x20] - ldr r3, [r6, #0x20] - mov r1, r0 - mla r2, r3, r2, r4 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCB7C: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCBD8: - mov r7, r0, lsr #0x2 - b _020BCBE8 -_020BCBE0: - mov r0, r0, lsr #0x2 - b _020BCD40 -_020BCBE8: - mov r0, r7, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - add r1, r8, r7, lsl #0x1 - ldrh r3, [r1, #0x2] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r2, [r6, #0x0] - ldr r1, [sp, #0x24] - orr r7, r7, r0 - add r0, r2, r1 - str r0, [r6, #0x0] - ldr r2, [r6, #0x4] - ldr r1, [sp, #0x28] - mov r0, r6 - add r1, r2, r1 - str r1, [r6, #0x4] - ldr r3, [r6, #0x8] - ldr r2, [sp, #0x2c] - mov r1, r6 - add r2, r3, r2 - str r2, [r6, #0x8] - ldr r3, [r6, #0xc] - ldr r2, [sp, #0x30] - add r2, r3, r2 - str r2, [r6, #0xc] - ldr r3, [r6, #0x10] - ldr r2, [sp, #0x34] - add r2, r3, r2 - str r2, [r6, #0x10] - ldr r3, [r6, #0x14] - ldr r2, [sp, #0x38] - add r2, r3, r2 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCCE4 - ldr r2, [r6, #0x18] - ldr r1, [sp, #0x3c] - add r0, r6, #0x18 - add r1, r2, r1 - str r1, [r6, #0x18] - ldr r3, [r6, #0x1c] - ldr r2, [sp, #0x40] - mov r1, r0 - add r2, r3, r2 - str r2, [r6, #0x1c] - ldr r3, [r6, #0x20] - ldr r2, [sp, #0x44] - add r2, r3, r2 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCCE4: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCD40: - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r9,pc} - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BCDC0: .word 0x1FFF0000 - - arm_func_start FUN_020BCDC4 -FUN_020BCDC4: ; 0x020BCDC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr r6, [r2, #0x4] - mov r5, r1, asr #0xc - sub r4, r4, #0x1 - cmp r5, r4 - add r6, r3, r6 - ldr r2, [r2, #0x0] - bne _020BCE58 - ands r4, r2, #0xc0000000 - beq _020BCE08 - ands r4, r2, #0x40000000 - andne r4, r5, #0x1 - addne r5, r4, r5, lsr #0x1 - andeq r4, r5, #0x3 - addeq r5, r4, r5, lsr #0x2 -_020BCE08: - ldr r3, [r3, #0x8] - ands r3, r3, #0x2 - movne r4, #0x0 - bne _020BCED4 - ands r1, r2, #0x20000000 - ldreq r2, [r6, r5, lsl #0x3] - addeq r1, r6, r5, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r7,pc} - mov r1, r5, lsl #0x2 - ldrsh r2, [r6, r1] - add r1, r6, r5, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r7,pc} -_020BCE58: - ands r3, r2, #0xc0000000 - beq _020BCED0 - ldr r3, _020BCF60 ; =0x1FFF0000 - ands r4, r2, #0x40000000 - and r3, r2, r3 - mov r3, r3, lsr #0x10 - beq _020BCEA0 - cmp r5, r3 - movcs r5, r3, lsr #0x1 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF64 ; =0x00001FFF - mov r5, r5, lsr #0x1 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x2 - mov r3, #0x1 - b _020BCEE4 -_020BCEA0: - cmp r5, r3 - andcs r3, r5, #0x3 - addcs r5, r3, r5, lsr #0x2 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF68 ; =0x00003FFF - mov r5, r5, lsr #0x2 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x4 - mov r3, #0x2 - b _020BCEE4 -_020BCED0: - add r4, r5, #0x1 -_020BCED4: - ldr r3, _020BCF6C ; =0x00000FFF - mov r12, #0x1 - and lr, r1, r3 - mov r3, #0x0 -_020BCEE4: - ands r1, r2, #0x20000000 - beq _020BCF10 - mov r2, r5, lsl #0x2 - add r1, r6, r5, lsl #0x2 - mov r5, r4, lsl #0x2 - add r4, r6, r4, lsl #0x2 - ldrsh r2, [r6, r2] - ldrsh r1, [r1, #0x2] - ldrsh r5, [r6, r5] - ldrsh r4, [r4, #0x2] - b _020BCF28 -_020BCF10: - add r1, r6, r5, lsl #0x3 - add r7, r6, r4, lsl #0x3 - ldr r2, [r6, r5, lsl #0x3] - ldr r1, [r1, #0x4] - ldr r5, [r6, r4, lsl #0x3] - ldr r4, [r7, #0x4] -_020BCF28: - sub r5, r5, r2 - sub r4, r4, r1 - mul r6, r2, r12 - mul r2, lr, r5 - add r2, r6, r2, asr #0xc - mov r5, r2, asr r3 - mul r2, r1, r12 - mul r1, lr, r4 - add r1, r2, r1, asr #0xc - mov r1, r1, asr r3 - str r5, [r0, #0x0] - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BCF60: .word 0x1FFF0000 -_020BCF64: .word 0x00001FFF -_020BCF68: .word 0x00003FFF -_020BCF6C: .word 0x00000FFF - - arm_func_start FUN_020BCF70 -FUN_020BCF70: ; 0x020BCF70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, [r2, #0x4] - ldr r12, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r4 - ands r2, r12, #0xc0000000 - beq _020BD0D0 - ldr r2, _020BD184 ; =0x1FFF0000 - ands r4, r12, #0x40000000 - and r2, r12, r2 - mov r4, r2, lsr #0x10 - beq _020BCFCC - ands r2, r1, #0x1 - beq _020BCFC4 - cmp r1, r4 - movhi r1, r4, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD0D0 - mov r2, r1, lsr #0x1 - b _020BD110 -_020BCFC4: - mov r1, r1, lsr #0x1 - b _020BD0D0 -_020BCFCC: - ands r2, r1, #0x3 - beq _020BD0CC - cmp r1, r4 - addhi r1, r2, r4, lsr #0x2 - bhi _020BD0D0 - ands r2, r1, #0x1 - beq _020BD0C4 - ands r2, r1, #0x2 - movne r1, r1, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r1, lsr #0x2 - addeq r1, r2, #0x1 - ands r4, r12, #0x20000000 - beq _020BD04C - mov r5, r2, lsl #0x2 - mov r4, r1, lsl #0x2 - ldrsh r12, [r3, r5] - ldrsh r5, [r3, r4] - add r2, r3, r2, lsl #0x2 - add r4, r12, r12, lsl #0x1 - add r4, r5, r4 - mov r4, r4, asr #0x2 - str r4, [r0, #0x0] - add r1, r3, r1, lsl #0x2 - ldrsh r3, [r2, #0x2] - ldrsh r2, [r1, #0x2] - add sp, sp, #0x4 - add r1, r3, r3, lsl #0x1 - add r1, r2, r1 - mov r1, r1, asr #0x2 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD04C: - ldr r5, [r3, r2, lsl #0x3] - ldr r4, [r3, r1, lsl #0x3] - mov r12, r5, asr #0x1f - mov r12, r12, lsl #0x1 - mov lr, r5, lsl #0x1 - orr r12, r12, r5, lsr #0x1f - adds lr, lr, r5 - adc r12, r12, r5, asr #0x1f - adds lr, lr, r4 - adc r12, r12, r4, asr #0x1f - mov lr, lr, lsr #0x2 - orr lr, lr, r12, lsl #0x1e - str lr, [r0, #0x0] - add r2, r3, r2, lsl #0x3 - ldr r12, [r2, #0x4] - add r1, r3, r1, lsl #0x3 - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - ldr r1, [r1, #0x4] - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BD0C4: - mov r2, r1, lsr #0x2 - b _020BD110 -_020BD0CC: - mov r1, r1, lsr #0x2 -_020BD0D0: - ands r2, r12, #0x20000000 - ldreq r2, [r3, r1, lsl #0x3] - addeq r1, r3, r1, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r5,pc} - mov r2, r1, lsl #0x2 - ldrsh r2, [r3, r2] - add r1, r3, r1, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD110: - ands r1, r12, #0x20000000 - beq _020BD150 - mov r1, r2, lsl #0x2 - add r12, r3, r2, lsl #0x2 - ldrsh r2, [r3, r1] - ldrsh r1, [r12, #0x4] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldrsh r2, [r12, #0x2] - ldrsh r1, [r12, #0x6] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD150: - add r12, r3, r2, lsl #0x3 - ldr r2, [r3, r2, lsl #0x3] - ldr r1, [r12, #0x8] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldr r2, [r12, #0x4] - ldr r1, [r12, #0xc] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD184: .word 0x1FFF0000 - - arm_func_start FUN_020BD188 -FUN_020BD188: ; 0x020BD188 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr lr, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - cmp r12, r4 - add r4, r3, lr - ldr lr, [r2, #0x0] - bne _020BD230 - ands r2, lr, #0xc0000000 - beq _020BD1CC - ands r2, lr, #0x40000000 - andne r2, r12, #0x1 - addne r12, r2, r12, lsr #0x1 - andeq r2, r12, #0x3 - addeq r12, r2, r12, lsr #0x2 -_020BD1CC: - ldr r2, [r3, #0x8] - ands r2, r2, #0x2 - beq _020BD210 - ldr r2, _020BD2E8 ; =0x00000FFF - ands r3, lr, #0x20000000 - and r3, r1, r2 - movne r1, r12, lsl #0x1 - ldrnesh r2, [r4, r1] - ldrnesh r1, [r4, #0x0] - add sp, sp, #0x4 - ldreq r2, [r4, r12, lsl #0x2] - ldreq r1, [r4, #0x0] - sub r1, r1, r2 - mul r1, r3, r1 - add r1, r2, r1, asr #0xc - str r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD210: - ands r1, lr, #0x20000000 - movne r1, r12, lsl #0x1 - ldrnesh r1, [r4, r1] - add sp, sp, #0x4 - strne r1, [r0, #0x0] - ldreq r1, [r4, r12, lsl #0x2] - streq r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD230: - ands r2, lr, #0xc0000000 - beq _020BD298 - ldr r2, _020BD2EC ; =0x1FFF0000 - ands r3, lr, #0x40000000 - and r2, lr, r2 - mov r2, r2, lsr #0x10 - beq _020BD270 - cmp r12, r2 - movcs r12, r2, lsr #0x1 - bhs _020BD298 - ldr r2, _020BD2F0 ; =0x00001FFF - mov r12, r12, lsr #0x1 - and r5, r1, r2 - mov r2, #0x2 - mov r1, #0x1 - b _020BD2A8 -_020BD270: - cmp r12, r2 - andcs r2, r12, #0x3 - addcs r12, r2, r12, lsr #0x2 - bhs _020BD298 - ldr r2, _020BD2F4 ; =0x00003FFF - mov r12, r12, lsr #0x2 - and r5, r1, r2 - mov r2, #0x4 - mov r1, #0x2 - b _020BD2A8 -_020BD298: - ldr r3, _020BD2E8 ; =0x00000FFF - mov r2, #0x1 - and r5, r1, r3 - mov r1, #0x0 -_020BD2A8: - ands r3, lr, #0x20000000 - addne r3, r4, r12, lsl #0x1 - movne lr, r12, lsl #0x1 - ldrnesh r12, [r4, lr] - ldrnesh r3, [r3, #0x2] - addeq r3, r4, r12, lsl #0x2 - ldreq r12, [r4, r12, lsl #0x2] - ldreq r3, [r3, #0x4] - mul r4, r12, r2 - sub r3, r3, r12 - mul r2, r5, r3 - add r2, r4, r2, asr #0xc - mov r1, r2, asr r1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD2E8: .word 0x00000FFF -_020BD2EC: .word 0x1FFF0000 -_020BD2F0: .word 0x00001FFF -_020BD2F4: .word 0x00003FFF - - arm_func_start FUN_020BD2F8 -FUN_020BD2F8: ; 0x020BD2F8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r12, [r2, #0x4] - ldr r2, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r12 - ands r12, r2, #0xc0000000 - beq _020BD44C - ldr ip, _020BD46C ; =0x1FFF0000 - ands lr, r2, #0x40000000 - and r12, r2, r12 - mov lr, r12, lsr #0x10 - beq _020BD354 - ands r12, r1, #0x1 - beq _020BD34C - cmp r1, lr - movhi r1, lr, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD44C - mov r12, r1, lsr #0x1 - b _020BD400 -_020BD34C: - mov r1, r1, lsr #0x1 - b _020BD44C -_020BD354: - ands r12, r1, #0x3 - beq _020BD3F8 - cmp r1, lr - addhi r1, r12, lr, lsr #0x2 - bhi _020BD44C - ands r12, r1, #0x1 - beq _020BD3F0 - ands r12, r1, #0x2 - movne lr, r1, lsr #0x2 - addne r12, lr, #0x1 - moveq r12, r1, lsr #0x2 - addeq lr, r12, #0x1 - ands r1, r2, #0x20000000 - beq _020BD3B4 - mov r2, r12, lsl #0x1 - mov r1, lr, lsl #0x1 - ldrsh r12, [r3, r2] - ldrsh r2, [r3, r1] - mov r1, #0x3 - add sp, sp, #0x4 - smlabb r1, r12, r1, r2 - mov r1, r1, asr #0x2 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD3B4: - ldr r12, [r3, r12, lsl #0x2] - ldr r1, [r3, lr, lsl #0x2] - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD3F0: - mov r12, r1, lsr #0x2 - b _020BD400 -_020BD3F8: - mov r1, r1, lsr #0x2 - b _020BD44C -_020BD400: - ands r1, r2, #0x20000000 - beq _020BD42C - mov r2, r12, lsl #0x1 - add r1, r3, r12, lsl #0x1 - ldrsh r2, [r3, r2] - ldrsh r1, [r1, #0x2] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD42C: - add r1, r3, r12, lsl #0x2 - ldr r2, [r3, r12, lsl #0x2] - ldr r1, [r1, #0x4] - mov r2, r2, asr #0x1 - add r1, r2, r1, asr #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD44C: - ands r2, r2, #0x20000000 - movne r1, r1, lsl #0x1 - ldrnesh r1, [r3, r1] - strne r1, [r0, #0x0] - ldreq r1, [r3, r1, lsl #0x2] - streq r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BD46C: .word 0x1FFF0000 - - arm_func_start FUN_020BD470 -FUN_020BD470: ; 0x020BD470 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r9, r0 - add r0, r9, r1, lsl #0x1 - ldrh r0, [r0, #0x14] - mov r7, r3 - mov r8, r2 - ldr r5, [r9, r0] - add r1, r9, r0 - ands r0, r5, #0x1 - movne r0, #0x7 - strne r0, [r7, #0x0] - bne _020BD814 - ldr r0, _020BD848 ; =0x00000FFF - add r4, r1, #0x4 - ands r0, r8, r0 - beq _020BD4C4 - ldr r0, [r9, #0x8] - ands r0, r0, #0x1 - movne r6, #0x1 - bne _020BD4C8 -_020BD4C4: - mov r6, #0x0 -_020BD4C8: - mov r0, #0x0 - str r0, [r7, #0x0] - ands r0, r5, #0x6 - bne _020BD5C0 - ands r0, r5, #0x8 - bne _020BD51C - cmp r6, #0x0 - beq _020BD500 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD188 - b _020BD514 -_020BD500: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD2F8 -_020BD514: - add r4, r4, #0x8 - b _020BD524 -_020BD51C: - ldr r0, [r4], #0x4 - str r0, [r7, #0x4c] -_020BD524: - ands r0, r5, #0x10 - bne _020BD568 - cmp r6, #0x0 - beq _020BD54C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD188 - b _020BD560 -_020BD54C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD2F8 -_020BD560: - add r4, r4, #0x8 - b _020BD570 -_020BD568: - ldr r0, [r4], #0x4 - str r0, [r7, #0x50] -_020BD570: - ands r0, r5, #0x20 - bne _020BD5B4 - cmp r6, #0x0 - beq _020BD598 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD188 - b _020BD5AC -_020BD598: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD2F8 -_020BD5AC: - add r4, r4, #0x8 - b _020BD5DC -_020BD5B4: - ldr r0, [r4], #0x4 - str r0, [r7, #0x54] - b _020BD5DC -_020BD5C0: - ands r0, r5, #0x2 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x4 - strne r0, [r7, #0x0] - bne _020BD5DC - mov r0, r7 - bl FUN_020BDA08 -_020BD5DC: - ands r0, r5, #0xc0 - bne _020BD6A8 - ands r0, r5, #0x100 - bne _020BD628 - cmp r6, #0x0 - beq _020BD60C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC698 - b _020BD620 -_020BD60C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC9D4 -_020BD620: - add r4, r4, #0x8 - b _020BD6C4 -_020BD628: - ldr r1, [r9, #0xc] - ldr r2, [r9, #0x10] - ldr r3, [r4, #0x0] - add r0, r7, #0x28 - add r1, r9, r1 - add r2, r9, r2 - bl FUN_020BC500 - cmp r0, #0x0 - beq _020BD6A0 - ldr r12, [r7, #0x3c] - ldr r0, [r7, #0x2c] - ldr r3, [r7, #0x28] - ldr r11, [r7, #0x38] - ldr r1, [r7, #0x30] - ldr r2, [r7, #0x34] - mul r10, r0, r12 - mul lr, r1, r11 - sub r10, r10, lr - mov r10, r10, asr #0xc - mul lr, r1, r2 - mul r1, r3, r12 - sub r1, lr, r1 - mul r11, r3, r11 - mul r2, r0, r2 - sub r0, r11, r2 - str r10, [r7, #0x40] - mov r1, r1, asr #0xc - str r1, [r7, #0x44] - mov r0, r0, asr #0xc - str r0, [r7, #0x48] -_020BD6A0: - add r4, r4, #0x4 - b _020BD6C4 -_020BD6A8: - ands r0, r5, #0x40 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x2 - strne r0, [r7, #0x0] - bne _020BD6C4 - mov r0, r7 - bl FUN_020BD850 -_020BD6C4: - ands r0, r5, #0x600 - bne _020BD7F0 - ands r0, r5, #0x800 - bne _020BD71C - cmp r6, #0x0 - beq _020BD6F4 - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCDC4 - b _020BD708 -_020BD6F4: - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCF70 -_020BD708: - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - str r1, [sp, #0x18] - str r0, [sp, #0x24] - b _020BD72C -_020BD71C: - ldr r0, [r4, #0x0] - str r0, [sp, #0x18] - ldr r0, [r4, #0x4] - str r0, [sp, #0x24] -_020BD72C: - ands r0, r5, #0x1000 - bne _020BD77C - cmp r6, #0x0 - beq _020BD754 - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCDC4 - b _020BD768 -_020BD754: - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCF70 -_020BD768: - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x1c] - str r0, [sp, #0x28] - b _020BD78C -_020BD77C: - ldr r0, [r4, #0x8] - str r0, [sp, #0x1c] - ldr r0, [r4, #0xc] - str r0, [sp, #0x28] -_020BD78C: - ands r0, r5, #0x2000 - bne _020BD7DC - cmp r6, #0x0 - beq _020BD7B4 - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCDC4 - b _020BD7C8 -_020BD7B4: - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCF70 -_020BD7C8: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - str r1, [sp, #0x20] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7DC: - ldr r0, [r4, #0x10] - str r0, [sp, #0x20] - ldr r0, [r4, #0x14] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7F0: - ands r0, r5, #0x200 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x1 - strne r0, [r7, #0x0] - bne _020BD814 - mov r0, r7 - bl FUN_020BD9A4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020BD814: - ldr r0, [r7, #0x0] - add r1, sp, #0x18 - ands r0, r0, #0x1 - ldr r0, _020BD84C ; =UNK_021CEF7C - movne r3, #0x4 - ldr r4, [r0, #0x0] - moveq r3, #0x0 - ldr r2, [r4, #0x0] - ldr r4, [r4, #0xe8] - mov r0, r7 - blx r4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BD848: .word 0x00000FFF -_020BD84C: .word UNK_021CEF7C - - arm_func_start FUN_020BD850 -FUN_020BD850: ; 0x020BD850 - stmdb sp!, {r4-r8,lr} - ldr r1, _020BD990 ; =UNK_021CEF7C - mov r8, r0 - ldr r0, [r1, #0x0] - ldr r3, [r0, #0xd4] - ldr r0, [r0, #0x0] - ldrh r2, [r3, #0x6] - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - ldrh r2, [r3, r0] - add r4, r3, r0 - add r1, r4, #0x4 - ands r0, r2, #0x1 - addeq r1, r1, #0xc - ands r0, r2, #0x2 - bne _020BD980 - ands r0, r2, #0x8 - beq _020BD934 - and r2, r2, #0xf0 - add r0, r8, #0x28 - mov r5, r2, asr #0x4 - ldrsh r7, [r1, #0x0] - ldrsh r6, [r1, #0x2] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r8, r5, lsl #0x2 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - ldr r0, _020BD994 ; =UNK_020FFA14 - str r2, [r1, #0x28] - ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA15 - add r1, r8, r1, lsl #0x2 - str r7, [r1, #0x28] - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA16 - rsbne r6, r6, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA17 - rsbne r7, r7, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r7, [r0, #0x28] - ldmia sp!, {r4-r8,pc} -_020BD934: - ldrsh r0, [r4, #0x2] - str r0, [r8, #0x28] - ldrsh r0, [r1, #0x0] - str r0, [r8, #0x2c] - ldrsh r0, [r1, #0x2] - str r0, [r8, #0x30] - ldrsh r0, [r1, #0x4] - str r0, [r8, #0x34] - ldrsh r0, [r1, #0x6] - str r0, [r8, #0x38] - ldrsh r0, [r1, #0x8] - str r0, [r8, #0x3c] - ldrsh r0, [r1, #0xa] - str r0, [r8, #0x40] - ldrsh r0, [r1, #0xc] - str r0, [r8, #0x44] - ldrsh r0, [r1, #0xe] - str r0, [r8, #0x48] - ldmia sp!, {r4-r8,pc} -_020BD980: - ldr r0, [r8, #0x0] - orr r0, r0, #0x2 - str r0, [r8, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BD990: .word UNK_021CEF7C -_020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA15 -_020BD99C: .word UNK_020FFA16 -_020BD9A0: .word UNK_020FFA17 - - arm_func_start FUN_020BD9A4 -FUN_020BD9A4: ; 0x020BD9A4 - stmdb sp!, {r4,lr} - ldr r1, _020BDA04 ; =UNK_021CEF7C - ldr r12, [r1, #0x0] - ldr r4, [r12, #0xd4] - ldr r2, [r12, #0x0] - ldrh lr, [r4, #0x6] - ldrb r1, [r2, #0x1] - ldrh r3, [r4, lr] - add lr, r4, lr - mla r1, r3, r1, lr - ldr r1, [r1, #0x4] - ldrh r3, [r4, r1] - add r1, r4, r1 - add r1, r1, #0x4 - ands lr, r3, #0x1 - addeq r1, r1, #0xc - ands lr, r3, #0x2 - bne _020BD9F8 - ands lr, r3, #0x8 - addne r1, r1, #0x4 - addeq r1, r1, #0x10 -_020BD9F8: - ldr r12, [r12, #0xe8] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020BDA04: .word UNK_021CEF7C - - arm_func_start FUN_020BDA08 -FUN_020BDA08: ; 0x020BDA08 - ldr r1, _020BDA6C ; =UNK_021CEF7C - ldr r1, [r1, #0x0] - ldr r12, [r1, #0xd4] - ldr r1, [r1, #0x0] - ldrh r3, [r12, #0x6] - ldrb r1, [r1, #0x1] - ldrh r2, [r12, r3] - add r3, r12, r3 - mla r1, r2, r1, r3 - ldr r2, [r1, #0x4] - ldrh r1, [r12, r2] - add r2, r12, r2 - ands r1, r1, #0x1 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x4 - strne r1, [r0, #0x0] - bxne lr - ldr r1, [r2, #0x4] - add r2, r2, #0x4 - str r1, [r0, #0x4c] - ldr r1, [r2, #0x4] - str r1, [r0, #0x50] - ldr r1, [r2, #0x8] - str r1, [r0, #0x54] - bx lr - .balign 4 -_020BDA6C: .word UNK_021CEF7C - - arm_func_start FUN_020BDA70 -FUN_020BDA70: ; 0x020BDA70 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r1, #0x8] - ldr r12, [r1, #0x0] - ldrh r1, [r0, #0x4] - mov r1, r1, lsl #0xc - cmp r12, r1 - subge r12, r1, #0x1 - bge _020BDAA0 - cmp r12, #0x0 - movlt r12, #0x0 -_020BDAA0: - mov r1, r2 - mov r2, r12 - bl FUN_020BD470 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BDAB4 -FUN_020BDAB4: ; 0x020BDAB4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - ldr r0, _020BDB3C ; =UNK_0210659C - str r4, [r5, #0x8] - ldr r0, [r0, #0x0] - add r1, r5, #0x1a - str r0, [r5, #0xc] - ldrb r2, [r2, #0x17] - mov r0, #0x0 - strb r2, [r5, #0x19] - ldrb r2, [r5, #0x19] - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrh r0, [r4, #0x6] - add r2, r4, #0x14 - mov r3, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r5,pc} -_020BDB08: - mov r0, r3, lsl #0x1 - ldrh r1, [r2, r0] - add r0, r5, r3, lsl #0x1 - add r3, r3, #0x1 - ldr r1, [r4, r1] - mov r1, r1, lsr #0x18 - orr r1, r1, #0x100 - strh r1, [r0, #0x1a] - ldrh r0, [r4, #0x6] - cmp r3, r0 - blo _020BDB08 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BDB3C: .word UNK_0210659C - - arm_func_start FUN_020BDB40 -FUN_020BDB40: ; 0x020BDB40 - stmdb sp!, {r4-r8,lr} - ldr r7, [r1, #0x8] - mov r2, r2, lsl #0x10 - ldrh r4, [r7, #0xe] - add r5, r7, #0x8 - ldr r6, [r1, #0x0] - ldrh r3, [r5, r4] - mov r1, r2, lsr #0x10 - add r2, r5, r4 - mul r4, r3, r1 - add r3, r2, #0x4 - mov r6, r6, asr #0xc - mov r8, r0 - ldr r1, [r3, r4] - mov r0, r7 - mov r2, r6 - add r5, r3, r4 - bl FUN_020BDDAC - mov r4, r0 - ldr r1, [r5, #0x4] - mov r0, r7 - mov r2, r6 - bl FUN_020BDDAC - ldr r1, [r8, #0x4] - mov r2, r6 - and r1, r1, #0x8000 - orr r1, r1, r4 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0x4] - mov r0, r7 - ldr r1, [r5, #0xc] - bl FUN_020BDDAC - mov r4, r0 - mov r0, r7 - ldr r1, [r5, #0x8] - mov r2, r6 - bl FUN_020BDDAC - mov r2, r6 - ldr r1, [r8, #0x8] - and r1, r1, #0x8000 - orr r0, r1, r0 - orr r0, r0, r4, lsl #0x10 - str r0, [r8, #0x8] - mov r0, r7 - ldr r1, [r5, #0x10] - bl FUN_020BDCB8 - ldr r1, [r8, #0xc] - bic r1, r1, #0x1f0000 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0xc] - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020BDC0C -FUN_020BDC0C: ; 0x020BDC0C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BDCB4 ; =UNK_021065A8 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDC6C: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDC6C - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BDCB4: .word UNK_021065A8 - - arm_func_start FUN_020BDCB8 -FUN_020BDCB8: ; 0x020BDCB8 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - movne r0, r0, lsr #0x10 - bxne lr - ldr r3, _020BDDA4 ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - ldreqb r0, [r0, r2] - bxeq lr - ldr r3, _020BDDA8 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDD30 - ands r1, r2, #0x1 - beq _020BDD28 - cmp r2, r3 - addhi r0, r0, r3, lsr #0x1 - ldrhib r0, [r0, #0x1] - bxhi lr - add r1, r0, r2, lsr #0x1 - ldrb r2, [r0, r2, lsr #0x1] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD28: - ldrb r0, [r0, r2, lsr #0x1] - bx lr -_020BDD30: - ands r1, r2, #0x3 - beq _020BDD9C - cmp r2, r3 - addhi r0, r0, r3, lsr #0x2 - ldrhib r0, [r1, r0] - bxhi lr - ands r1, r2, #0x1 - beq _020BDD80 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - ldrb r2, [r0, r2] - ldrb r1, [r0, r1] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, lsl #0xe - mov r0, r0, lsr #0x10 - bx lr -_020BDD80: - add r1, r0, r2, lsr #0x2 - ldrb r2, [r0, r2, lsr #0x2] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD9C: - ldrb r0, [r0, r2, lsr #0x2] - bx lr - .balign 4 -_020BDDA4: .word 0x0000FFFF -_020BDDA8: .word 0x1FFF0000 - - arm_func_start FUN_020BDDAC -FUN_020BDDAC: ; 0x020BDDAC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - addne sp, sp, #0x4 - movne r0, r0, lsr #0x10 - ldmneia sp!, {pc} - ldr r3, _020BDF2C ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - moveq r1, r2, lsl #0x1 - addeq sp, sp, #0x4 - ldreqh r0, [r0, r1] - ldmeqia sp!, {pc} - ldr r3, _020BDF30 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDE34 - ands r1, r2, #0x1 - beq _020BDE24 - cmp r2, r3 - bichi r1, r3, #0x1 - addhi r0, r0, r1 - addhi sp, sp, #0x4 - ldrhih r0, [r0, #0x2] - ldmhiia sp!, {pc} - mov r1, r2, lsr #0x1 - b _020BDEE0 -_020BDE24: - bic r1, r2, #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDE34: - ands r1, r2, #0x3 - beq _020BDECC - cmp r2, r3 - movhi r2, r3, lsr #0x2 - movhi r1, r1, lsl #0x1 - addhi r0, r0, r2, lsl #0x1 - addhi sp, sp, #0x4 - ldrhih r0, [r1, r0] - ldmhiia sp!, {pc} - ands r1, r2, #0x1 - beq _020BDEC4 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - mov r2, r2, lsl #0x1 - mov r1, r1, lsl #0x1 - ldrh r12, [r0, r2] - ldrh lr, [r0, r1] - ldr r0, _020BDF34 ; =0x00007C1F - and r3, r12, #0x3e0 - and r2, lr, #0x3e0 - mov r1, #0x3 - mla r2, r3, r1, r2 - and r12, r12, r0 - and r3, lr, r0 - mla r1, r12, r1, r3 - mov r2, r2, lsr #0x2 - and r1, r0, r1, lsr #0x2 - and r0, r2, #0x3e0 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - add sp, sp, #0x4 - mov r0, r0, lsr #0x10 - ldmia sp!, {pc} -_020BDEC4: - mov r1, r2, lsr #0x2 - b _020BDEE0 -_020BDECC: - mov r1, r2, lsr #0x2 - mov r1, r1, lsl #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDEE0: - mov r2, r1, lsl #0x1 - add r1, r0, r1, lsl #0x1 - ldrh r3, [r0, r2] - ldrh r12, [r1, #0x2] - ldr r0, _020BDF34 ; =0x00007C1F - and r2, r3, #0x3e0 - and r1, r12, #0x3e0 - add r1, r2, r1 - mov r1, r1, lsr #0x1 - and r3, r3, r0 - and r2, r12, r0 - add r2, r3, r2 - and r2, r0, r2, lsr #0x1 - and r0, r1, #0x3e0 - orr r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BDF2C: .word 0x0000FFFF -_020BDF30: .word 0x1FFF0000 -_020BDF34: .word 0x00007C1F - - arm_func_start FUN_020BDF38 -FUN_020BDF38: ; 0x020BDF38 - stmdb sp!, {r4,lr} - ldr r12, [r1, #0x0] - mov r4, r0 - mov r2, r2, lsl #0x10 - ldr r0, [r1, #0x8] - mov r1, r2, lsr #0x10 - mov r3, r4 - mov r2, r12, asr #0xc - bl FUN_020BE030 - ldr r0, [r4, #0x10] - bic r0, r0, #0xc0000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x10] - orr r0, r0, #0x40000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BDF84 -FUN_020BDF84: ; 0x020BDF84 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE02C ; =UNK_021065A0 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDFE4: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDFE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE02C: .word UNK_021065A0 - - arm_func_start FUN_020BE030 -FUN_020BE030: ; 0x020BE030 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrh r4, [r8, #0xe] - add r5, r8, #0x8 - mov r6, r3 - ldrh r3, [r5, r4] - add r4, r5, r4 - add r4, r4, #0x4 - mla r5, r3, r1, r4 - mov r7, r2 - ldr r1, [r5, #0x18] - ldr r2, [r5, #0x1c] - mov r3, r7 - ldr r4, [r6, #0x0] - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x20] - mov r0, r8 - ldr r2, [r5, #0x24] - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x0 - bne _020BE09C - cmp r0, #0x0 - orreq r4, r4, #0x4 - beq _020BE0A8 -_020BE09C: - str r9, [r6, #0x24] - str r0, [r6, #0x28] - bic r4, r4, #0x4 -_020BE0A8: - ldr r1, [r5, #0x10] - ldr r2, [r5, #0x14] - mov r0, r8 - mov r3, r7 - bl FUN_020BE12C - cmp r0, #0x10000000 - strneh r0, [r6, #0x20] - movne r0, r0, lsr #0x10 - strneh r0, [r6, #0x22] - orreq r4, r4, #0x2 - ldr r1, [r5, #0x0] - ldr r2, [r5, #0x4] - mov r0, r8 - mov r3, r7 - bicne r4, r4, #0x2 - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - mov r0, r8 - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x1000 - bne _020BE114 - cmp r0, #0x1000 - orreq r4, r4, #0x1 - beq _020BE120 -_020BE114: - str r9, [r6, #0x18] - str r0, [r6, #0x1c] - bic r4, r4, #0x1 -_020BE120: - str r4, [r6, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020BE12C -FUN_020BE12C: ; 0x020BE12C - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE1F8 - ldr r2, _020BE234 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r2, r1, r2 - beq _020BE17C - ands r1, r3, #0x1 - beq _020BE174 - cmp r3, r2 - movhi r1, r2, lsr #0x1 - addhi r3, r1, #0x1 - bhi _020BE1F8 - mov r2, r3, lsr #0x1 - b _020BE200 -_020BE174: - mov r3, r3, lsr #0x1 - b _020BE1F8 -_020BE17C: - ands r1, r3, #0x3 - beq _020BE1F4 - cmp r3, r2 - addhi r3, r1, r2, lsr #0x2 - bhi _020BE1F8 - ands r1, r3, #0x1 - beq _020BE1EC - ands r1, r3, #0x2 - movne r1, r3, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r3, lsr #0x2 - addeq r1, r2, #0x1 - mov r12, r2, lsl #0x2 - add r3, r0, r2, lsl #0x2 - mov r2, r1, lsl #0x2 - add r1, r0, r1, lsl #0x2 - ldrsh r12, [r0, r12] - ldrsh r2, [r0, r2] - mov r0, #0x3 - ldrsh r3, [r3, #0x2] - ldrsh r1, [r1, #0x2] - mla r2, r12, r0, r2 - mla r1, r3, r0, r1 - ldr r0, _020BE234 ; =0x0000FFFF - mov r1, r1, asr #0x2 - and r0, r0, r2, asr #0x2 - orr r0, r0, r1, lsl #0x10 - bx lr -_020BE1EC: - mov r2, r3, lsr #0x2 - b _020BE200 -_020BE1F4: - mov r3, r3, lsr #0x2 -_020BE1F8: - ldr r0, [r0, r3, lsl #0x2] - bx lr -_020BE200: - add r1, r0, r2, lsl #0x2 - mov r2, r2, lsl #0x2 - ldrsh r12, [r0, r2] - ldrsh r3, [r1, #0x4] - ldrsh r2, [r1, #0x2] - ldrsh r1, [r1, #0x6] - ldr r0, _020BE234 ; =0x0000FFFF - add r3, r12, r3 - add r1, r2, r1 - and r2, r0, r3, asr #0x1 - mov r0, r1, asr #0x1 - orr r0, r2, r0, lsl #0x10 - bx lr - .balign 4 -_020BE234: .word 0x0000FFFF - - arm_func_start FUN_020BE238 -FUN_020BE238: - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE2F0 - ldr r2, _020BE330 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r12, r1, r2 - beq _020BE288 - ands r2, r3, #0x1 - beq _020BE280 - cmp r3, r12 - movhi r2, r12, lsr #0x1 - addhi r3, r2, #0x1 - bhi _020BE2F0 - mov r3, r3, lsr #0x1 - b _020BE304 -_020BE280: - mov r3, r3, lsr #0x1 - b _020BE2F0 -_020BE288: - ands r2, r3, #0x3 - beq _020BE2EC - cmp r3, r12 - addhi r3, r2, r12, lsr #0x2 - bhi _020BE2F0 - ands r2, r3, #0x1 - beq _020BE2E4 - ands r2, r3, #0x2 - movne r3, r3, lsr #0x2 - addne r2, r3, #0x1 - moveq r2, r3, lsr #0x2 - addeq r3, r2, #0x1 - ands r1, r1, #0x10000000 - movne r2, r2, lsl #0x1 - movne r1, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r1, [r0, r1] - ldreq r2, [r0, r2, lsl #0x2] - ldreq r1, [r0, r3, lsl #0x2] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, asr #0x2 - bx lr -_020BE2E4: - mov r3, r3, lsr #0x2 - b _020BE304 -_020BE2EC: - mov r3, r3, lsr #0x2 -_020BE2F0: - ands r1, r1, #0x10000000 - movne r1, r3, lsl #0x1 - ldrnesh r0, [r0, r1] - ldreq r0, [r0, r3, lsl #0x2] - bx lr -_020BE304: - ands r1, r1, #0x10000000 - movne r2, r3, lsl #0x1 - addne r1, r0, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r0, [r1, #0x2] - addeq r1, r0, r3, lsl #0x2 - ldreq r2, [r0, r3, lsl #0x2] - ldreq r0, [r1, #0x4] - add r0, r2, r0 - mov r0, r0, asr #0x1 - bx lr - .balign 4 -_020BE330: .word 0x0000FFFF - - arm_func_start FUN_020BE334 -FUN_020BE334: ; 0x020BE334 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldr r3, [r6, #0x0] - ldr r5, [r6, #0x8] - mov r1, r2, lsl #0x10 - mov r2, r3, lsl #0x4 - mov r7, r0 - mov r0, r5 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl FUN_020BC42C - mov r4, r0 - ldrb r1, [r4, #0x2] - mov r0, r5 - bl FUN_020BC4B8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE408 - ldrb r1, [r4, #0x3] - cmp r1, #0xff - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r5 - bl FUN_020BC4A8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE3B4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE3B4 -FUN_020BE3B4: ; 0x020BE3B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x34] - mov r4, r2 - add r0, r5, r0 - bl FUN_020BC2A0 - ldr r1, [r5, #0x2c] - ldrh r2, [r0, #0x2] - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - ands r1, r2, #0x1 - ldrh r0, [r0, #0x0] - moveq r1, r3, lsl #0xf - moveq r3, r1, lsr #0x10 - moveq r0, r0, lsl #0xf - moveq r0, r0, lsr #0x10 - add r0, r0, r3 - str r0, [r4, #0x14] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BE408 -FUN_020BE408: ; 0x020BE408 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x3c - mov r4, r2 - bl FUN_020BC2A0 - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - and r1, r1, #0x1c000000 - cmp r1, #0x14000000 - ldrne r2, [r5, #0x8] - ldrne r1, _020BE4E0 ; =0x0000FFFF - andne r5, r2, r1 - ldreq r2, [r5, #0x18] - ldreq r1, _020BE4E0 ; =0x0000FFFF - andeq r5, r2, r1 - ldr r1, _020BE4E4 ; =0xC00F0000 - ldr r2, _020BE4E8 ; =0x000007FF - and r1, r3, r1 - str r1, [r4, #0x10] - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - add r1, r1, r5 - orr r1, r3, r1 - str r1, [r4, #0x10] - ldr r3, [r0, #0x4] - ldr r1, _020BE4EC ; =0x003FF800 - and r3, r3, r2 - strh r3, [r4, #0x2c] - ldr r3, [r0, #0x4] - and r1, r3, r1 - mov r1, r1, lsr #0xb - strh r1, [r4, #0x2e] - ldr r3, [r0, #0x4] - ldrh r1, [r4, #0x2c] - and r0, r3, r2 - and r5, r2, r3, lsr #0xb - cmp r0, r1 - moveq r0, #0x1000 - beq _020BE4B4 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4B4: - str r0, [r4, #0x30] - ldrh r1, [r4, #0x2e] - cmp r5, r1 - moveq r0, #0x1000 - beq _020BE4D4 - mov r0, r5, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4D4: - str r0, [r4, #0x34] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BE4E0: .word 0x0000FFFF -_020BE4E4: .word 0xC00F0000 -_020BE4E8: .word 0x000007FF -_020BE4EC: .word 0x003FF800 - - arm_func_start FUN_020BE4F0 -FUN_020BE4F0: ; 0x020BE4F0 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE59C ; =UNK_021065A4 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - str r8, [r9, #0x8] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0xd] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0xc - add r4, r4, #0x4 -_020BE554: - ldrh r1, [r8, #0x12] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0xd] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BE554 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE59C: .word UNK_021065A4 - - arm_func_start FUN_020BE5A0 -FUN_020BE5A0: ; 0x020BE5A0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x8] - ldr r3, [r1, #0x0] - ldrh r1, [lr, #0x6] - mov r12, r3, asr #0xc - mov r3, #0x1 - mla r2, r12, r1, r2 - mov r1, r2, lsr #0x5 - add r1, lr, r1, lsl #0x2 - ldr r1, [r1, #0xc] - and r2, r2, #0x1f - and r1, r1, r3, lsl r2 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BE5E0 -FUN_020BE5E0: ; 0x020BE5E0 - ldr r3, _020BE628 ; =UNK_02106598 - mov r12, #0x0 - ldr r3, [r3, #0x0] - str r3, [r0, #0xc] - ldrb r2, [r2, #0x17] - strb r2, [r0, #0x19] - str r1, [r0, #0x8] - ldrb r1, [r0, #0x19] - cmp r1, #0x0 - bxls lr -_020BE608: - orr r2, r12, #0x100 - add r1, r0, r12, lsl #0x1 - strh r2, [r1, #0x1a] - ldrb r1, [r0, #0x19] - add r12, r12, #0x1 - cmp r12, r1 - blo _020BE608 - bx lr - .balign 4 -_020BE628: .word UNK_02106598 - - arm_func_start FUN_020BE62C -FUN_020BE62C: ; 0x020BE62C - ands r2, r3, #0x4 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x1 - strne r1, [r0, #0x0] - bne _020BE658 - - arm_func_start FUN_020BE640 -FUN_020BE640: ; 0x020BE640 - ldr r2, [r1, #0x0] - str r2, [r0, #0x4] - ldr r2, [r1, #0x4] - str r2, [r0, #0x8] - ldr r1, [r1, #0x8] - str r1, [r0, #0xc] -_020BE658: - ldr r1, [r0, #0x0] - orr r1, r1, #0x18 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BE668 -FUN_020BE668: ; 0x020BE668 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x0] - ands r0, r1, #0x4 - bne _020BE6AC - ands r0, r1, #0x2 - bne _020BE698 - add r1, r4, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BE6C4 -_020BE698: - add r1, r4, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - b _020BE6C4 -_020BE6AC: - ands r0, r1, #0x2 - bne _020BE6C4 - add r1, r4, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020BE6C4: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldmneia sp!, {r4,pc} - add r1, r4, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BE6E4 -FUN_020BE6E4: ; 0x020BE6E4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BE820 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BE824 ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BE828 ; =UNK_021067B0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BE7B4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BE7B4: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BE804 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BE804: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BE820: .word 0x00101610 -_020BE824: .word 0x00101810 -_020BE828: .word UNK_021067B0 - - arm_func_start FUN_020BE82C -FUN_020BE82C: ; 0x020BE82C - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BE850 -FUN_020BE850: ; 0x020BE850 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - str r12, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r3, [r1, #0x2e] - mov r1, r2, lsl #0x1 - rsb r1, r1, #0x0 - add r1, r1, #0x2000 - mul r1, r3, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BE894 -FUN_020BE894: ; 0x020BE894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2c] - add r0, r1, r0 - rsb r0, r0, #0x0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x30] - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - sub r0, r1, r0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE954 -FUN_020BE954: ; 0x020BE954 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r0, r7, r6 - ldrh r3, [r9, #0x2c] - ldr r2, [r9, #0x18] - sub r0, r2, r0 - mul r0, r3, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x30] - ldrh r2, [r9, #0x2e] - ldr r0, [r9, #0x1c] - sub r0, r1, r0 - add r0, r0, #0x2000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BEA3C -FUN_020BEA3C: ; 0x020BEA3C - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldrh r2, [r1, #0x2c] - ldr r3, [r1, #0x24] - mul r2, r3, r2 - rsb r2, r2, #0x0 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BEA84 -FUN_020BEA84: ; 0x020BEA84 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r4, [r1, #0x18] - ldr r3, [r1, #0x24] - ldrh lr, [r1, #0x2c] - smull r12, r3, r4, r3 - mov r4, r12, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - rsb r3, r4, #0x0 - mul r3, lr, r3 - str r3, [r0, #0x30] - ldr r4, [r1, #0x1c] - ldr r12, [r1, #0x28] - mov r3, r4, lsl #0x1 - smull lr, r12, r4, r12 - rsb r4, r3, #0x0 - mov r3, lr, lsr #0x8 - ldrh lr, [r1, #0x2e] - add r1, r4, #0x2000 - orr r3, r3, r12, lsl #0x18 - mul r4, lr, r1 - mul r1, lr, r3 - add r1, r1, r4, lsl #0x3 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BEB00 -FUN_020BEB00: ; 0x020BEB00 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2c] - ldr r0, [r5, #0x24] - add r1, r2, r1 - rsb r1, r1, #0x0 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - sub r0, r0, r1, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2e] - ldr r0, [r5, #0x28] - sub r1, r2, r1 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - add r0, r0, r1, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BEBD8 -FUN_020BEBD8: ; 0x020BEBD8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r2, r7, r6 - ldr r5, [r9, #0x18] - ldrh r0, [r9, #0x2c] - sub r3, r5, r2 - ldr r2, [r9, #0x24] - mul r4, r0, r3 - smull r3, r2, r5, r2 - mov r4, r4, lsl #0x3 - mov r3, r3, lsr #0x8 - orr r3, r3, r2, lsl #0x18 - mul r2, r0, r3 - sub r0, r4, r2 - str r0, [r10, #0x30] - ldr r4, [r9, #0x1c] - ldrh r3, [r9, #0x2e] - sub r0, r1, r4 - add r0, r0, #0x2000 - mul r2, r3, r0 - ldr r0, [r9, #0x28] - smull r1, r0, r4, r0 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - mul r0, r3, r1 - add r0, r0, r2, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BECEC -FUN_020BECEC: ; 0x020BECEC - stmdb sp!, {r4-r8,lr} - mov r12, r0 - ands r0, r3, #0x4 - ldrb r3, [r2, #0x3] - beq _020BED40 - ldr r1, [r12, #0x0] - ands r0, r3, #0x2 - orr r0, r1, #0x1 - str r0, [r12, #0x0] - beq _020BEDB8 - ldr r0, _020BEE2C ; =UNK_021CEF7C - ldrb r7, [r2, #0x1] - ldr r0, [r0, #0x0] - mov r1, #0x1 - add r6, r0, #0xc4 - mov r5, r7, lsr #0x5 - ldr r4, [r6, r5, lsl #0x2] - and r0, r7, #0x1f - orr r0, r4, r1, lsl r0 - str r0, [r6, r5, lsl #0x2] - b _020BEDB8 -_020BED40: - ldr r4, [r1, #0x0] - ands r0, r3, #0x2 - str r4, [r12, #0x4] - ldr r0, [r1, #0x4] - str r0, [r12, #0x8] - ldr r0, [r1, #0x8] - str r0, [r12, #0xc] - beq _020BEDB8 - ldr lr, _020BEE2C ; =UNK_021CEF7C - ldrb r0, [r2, #0x1] - ldr r4, [lr, #0x0] - mov lr, #0x18 - add r8, r4, #0xc4 - mov r7, r0, lsr #0x5 - and r4, r0, #0x1f - mov r5, #0x1 - mvn r4, r5, lsl r4 - ldr r6, [r8, r7, lsl #0x2] - mul r5, r0, lr - and r0, r6, r4 - str r0, [r8, r7, lsl #0x2] - ldr r4, [r1, #0xc] - ldr r0, _020BEE30 ; =UNK_021CFD8C - ldr lr, _020BEE34 ; =UNK_021CFD90 - str r4, [r0, r5] - ldr r4, [r1, #0x10] - ldr r0, _020BEE38 ; =UNK_021CFD94 - str r4, [lr, r5] - ldr r1, [r1, #0x14] - str r1, [r0, r5] -_020BEDB8: - ands r0, r3, #0x1 - beq _020BEE1C - ldrb r0, [r2, #0x2] - ldr r2, [r12, #0x0] - ldr r1, _020BEE2C ; =UNK_021CEF7C - orr r2, r2, #0x20 - str r2, [r12, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r2, r1, lsl #0x2 - and r2, r0, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - ldrne r0, [r12, #0x0] - orrne r0, r0, #0x8 - strne r0, [r12, #0x0] - bne _020BEE1C - ldr r2, _020BEE30 ; =UNK_021CFD8C - mov r1, #0x18 - mla r1, r0, r1, r2 - add r3, r12, #0x10 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} -_020BEE1C: - ldr r0, [r12, #0x0] - orr r0, r0, #0x10 - str r0, [r12, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BEE2C: .word UNK_021CEF7C -_020BEE30: .word UNK_021CFD8C -_020BEE34: .word UNK_021CFD90 -_020BEE38: .word UNK_021CFD94 - - arm_func_start FUN_020BEE3C -FUN_020BEE3C: ; 0x020BEE3C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - mov r4, #0x0 - ands r0, r1, #0x4 - moveq r4, #0x1 - ands r0, r1, #0x20 - beq _020BEE94 - ands r0, r1, #0x8 - bne _020BEE94 - cmp r4, #0x0 - beq _020BEE84 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - mov r4, #0x0 -_020BEE84: - add r1, r5, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEE94: - ldr r0, [r5, #0x0] - ands r0, r0, #0x2 - bne _020BEED0 - cmp r4, #0x0 - beq _020BEEBC - add r1, r5, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BEEE8 -_020BEEBC: - add r1, r5, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BEEE8 -_020BEED0: - cmp r4, #0x0 - beq _020BEEE8 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEEE8: - ldr r0, [r5, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r1, r5, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BEF10 -FUN_020BEF10: ; 0x020BEF10 - stmdb sp!, {lr} - sub sp, sp, #0x3c - ldr r1, [r0, #0x0] - mov r3, #0x0 - ands r1, r1, #0x8 - ldrne r1, _020BF0CC ; =0x00101710 - mov r2, #0x3 - strne r1, [sp, #0x0] - ldreq r1, _020BF0D0 ; =0x00101910 - str r3, [sp, #0x34] - streq r1, [sp, #0x0] - mov r1, #0x2 - str r1, [sp, #0x38] - str r3, [sp, #0x28] - str r3, [sp, #0x24] - str r3, [sp, #0x20] - str r3, [sp, #0x1c] - str r3, [sp, #0x14] - str r3, [sp, #0x10] - str r3, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [r0, #0x0] - ands r1, r2, #0x4 - beq _020BEFA0 - str r3, [sp, #0x2c] - str r3, [sp, #0x30] - ldr r1, [r0, #0x0] - ands r1, r1, #0x1 - movne r1, #0x1000 - strne r1, [sp, #0x8] - strne r1, [sp, #0x18] - ldreq r1, [r0, #0x18] - streq r1, [sp, #0x8] - ldreq r1, [r0, #0x1c] - streq r1, [sp, #0x18] - b _020BF040 -_020BEFA0: - ands r1, r2, #0x1 - beq _020BEFE8 - ldr r2, [r0, #0x24] - ldrh r1, [r0, #0x2c] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r1, r2, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x28] - ldrh r1, [r0, #0x2e] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r3, r2, r1 - mov r1, #0x1000 - str r3, [sp, #0x30] - str r1, [sp, #0x8] - str r1, [sp, #0x18] - b _020BF040 -_020BEFE8: - ldr r2, [r0, #0x18] - ldr r1, [r0, #0x24] - ldrh r12, [r0, #0x2c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x1c] - ldr r1, [r0, #0x28] - ldrh r12, [r0, #0x2e] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x30] - ldr r1, [r0, #0x18] - str r1, [sp, #0x8] - ldr r1, [r0, #0x1c] - str r1, [sp, #0x18] -_020BF040: - ldr r12, [r0, #0x30] - cmp r12, #0x1000 - beq _020BF078 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x2c] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x8] - ldr r2, [r0, #0x30] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x2c] -_020BF078: - ldr r12, [r0, #0x34] - cmp r12, #0x1000 - beq _020BF0B0 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x30] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x18] - ldr r0, [r0, #0x34] - smull r2, r1, r0, r1 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #0x14 - str r0, [sp, #0x30] -_020BF0B0: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0xe - bl FUN_020BB1C0 - add sp, sp, #0x3c - ldmia sp!, {pc} - .balign 4 -_020BF0CC: .word 0x00101710 -_020BF0D0: .word 0x00101910 - - arm_func_start FUN_020BF0D4 -FUN_020BF0D4: ; 0x020BF0D4 - stmdb sp!, {r4-r8,lr} - mov r5, r0 - ands r0, r3, #0x4 - ldrb r4, [r2, #0x1] - ldrb r0, [r2, #0x2] - beq _020BF174 - ldr r2, [r5, #0x0] - ldr r1, _020BF2E0 ; =UNK_021CEF7C - orr r2, r2, #0x1 - str r2, [r5, #0x0] - ldr r3, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r3, r1, lsl #0x2 - and r2, r0, #0x1f - mov r6, #0x1 - mov r2, r6, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - beq _020BF148 - add r3, r3, #0xc4 - mov r2, r4, lsr #0x5 - ldr r1, [r3, r2, lsl #0x2] - and r0, r4, #0x1f - orr r0, r1, r6, lsl r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF148: - ldr r1, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mla r6, r0, r2, r1 - mla r1, r4, r2, r1 - mov r0, r6 - bl MIi_CpuCopy32 - mov r0, r6 - add r1, r5, #0x10 - mov r2, #0x18 - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} -_020BF174: - ldr r3, [r1, #0x0] - ldr r2, _020BF2E0 ; =UNK_021CEF7C - str r3, [r5, #0x4] - ldr r3, [r1, #0x4] - mov r7, r0, lsr #0x5 - str r3, [r5, #0x8] - ldr r3, [r1, #0x8] - and r8, r0, #0x1f - str r3, [r5, #0xc] - ldr r6, [r2, #0x0] - mov r3, #0x1 - add r2, r6, r7, lsl #0x2 - mov r7, r3, lsl r8 - ldr r2, [r2, #0xc4] - ands r2, r7, r2 - beq _020BF200 - ldr r3, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mov r0, r1 - mla r1, r4, r2, r3 - bl MIi_CpuCopy32 - ldr r0, _020BF2E0 ; =UNK_021CEF7C - mov r2, r4, lsr #0x5 - ldr r1, [r0, #0x0] - and r0, r4, #0x1f - add r3, r1, #0xc4 - mov r1, #0x1 - mvn r0, r1, lsl r0 - ldr r1, [r3, r2, lsl #0x2] - and r0, r1, r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF200: - mov r2, #0x18 - mul r12, r0, r2 - and r7, r4, #0x1f - ldr r0, _020BF2E4 ; =UNK_021CFD80 - add r6, r6, #0xc4 - mov lr, r4, lsr #0x5 - mvn r7, r3, lsl r7 - ldr r8, [r6, lr, lsl #0x2] - mul r3, r4, r2 - and r4, r8, r7 - str r4, [r6, lr, lsl #0x2] - ldr r7, [r1, #0x0] - ldr r4, [r0, r12] - ldr r6, _020BF2E8 ; =UNK_021CFD84 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r0, r3] - ldr r8, [r1, #0x4] - ldr r4, [r6, r12] - ldr r7, _020BF2EC ; =UNK_021CFD88 - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r6, r3] - ldr r8, [r1, #0x8] - ldr r4, [r7, r12] - ldr r6, _020BF2F0 ; =UNK_021CFD8C - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r7, r3] - ldr r7, [r1, #0xc] - ldr r4, [r6, r12] - ldr lr, _020BF2F4 ; =UNK_021CFD90 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r6, r3] - ldr r7, [r1, #0x10] - ldr r4, [lr, r12] - ldr r6, _020BF2F8 ; =UNK_021CFD94 - smull r8, r4, r7, r4 - add r0, r0, r12 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [lr, r3] - ldr lr, [r1, #0x14] - ldr r4, [r6, r12] - add r1, r5, #0x10 - smull r5, r4, lr, r4 - mov r5, r5, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, r3] - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BF2E0: .word UNK_021CEF7C -_020BF2E4: .word UNK_021CFD80 -_020BF2E8: .word UNK_021CFD84 -_020BF2EC: .word UNK_021CFD88 -_020BF2F0: .word UNK_021CFD8C -_020BF2F4: .word UNK_021CFD90 -_020BF2F8: .word UNK_021CFD94 - - arm_func_start FUN_020BF2FC -FUN_020BF2FC: ; 0x020BF2FC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - mov r6, r0 - ldr r0, [r6, #0x0] - mov r5, #0x0 - ands r4, r0, #0x18 - bne _020BF328 - add r1, r6, #0x1c - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF328: - ldr r0, [r6, #0x0] - ands r0, r0, #0x4 - bne _020BF398 - cmp r4, #0x0 - movne r5, #0x1 - bne _020BF398 - ldr r2, [r6, #0x4c] - ldr r0, [r6, #0x10] - add r1, sp, #0x0 - smull r3, r0, r2, r0 - mov r2, r3, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x0] - ldr r3, [r6, #0x50] - ldr r2, [r6, #0x14] - mov r0, #0x1c - smull r12, r2, r3, r2 - mov r3, r12, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x4] - ldr r12, [r6, #0x54] - ldr r3, [r6, #0x18] - mov r2, #0x3 - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - str r12, [sp, #0x8] - bl FUN_020BB1C0 -_020BF398: - ldr r0, [r6, #0x0] - ands r0, r0, #0x2 - bne _020BF3D4 - cmp r5, #0x0 - beq _020BF3C0 - add r1, r6, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BF3EC -_020BF3C0: - add r1, r6, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BF3EC -_020BF3D4: - cmp r5, #0x0 - beq _020BF3EC - add r1, r6, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF3EC: - cmp r4, #0x0 - bne _020BF404 - add r1, r6, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF404: - ldr r0, [r6, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x10 - ldmneia sp!, {r4-r6,pc} - add r1, r6, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF42C -FUN_020BF42C: ; 0x020BF42C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BF568 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BF56C ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BF570 ; =UNK_021067D0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BF4FC - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BF4FC: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BF54C - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BF54C: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BF568: .word 0x00101610 -_020BF56C: .word 0x00101810 -_020BF570: .word UNK_021067D0 - - arm_func_start FUN_020BF574 -FUN_020BF574: ; 0x020BF574 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BF598 -FUN_020BF598: ; 0x020BF598 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - ldr r3, [r1, #0x18] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x1000 - mul r2, r3, r2 - mov r2, r2, lsl #0x3 - str r2, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r1, [r1, #0x2e] - rsb r2, r2, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF5E8 -FUN_020BF5E8: ; 0x020BF5E8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - ldrsh r4, [r5, #0x22] - rsb r0, r2, #0x0 - rsb r1, r1, #0x0 - mov r0, r0, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r1, r1, lsl #0xb - smull r7, lr, r4, r0 - smull r12, r4, r3, r1 - subs r7, r7, r12 - sbc r3, lr, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF6C8 -FUN_020BF6C8: ; 0x020BF6C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r3, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - rsb r0, r3, #0x0 - rsb r1, r1, #0x0 - mov r2, r1, lsl #0xb - mov r11, r0, lsl #0xb - smull r1, r0, r7, r11 - smull r8, r7, r5, r2 - smlal r8, r7, r4, r11 - mov r4, r8, lsr #0x8 - orr r4, r4, r7, lsl #0x18 - smull r5, r2, r6, r2 - subs r1, r1, r5 - sbc r0, r0, r2 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - add r0, r1, r3, lsl #0xf - str r0, [r10, #0x30] - ldrh r0, [r9, #0x2e] - add r0, r4, r0, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BF7C8 -FUN_020BF7C8: ; 0x020BF7C8 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldr r3, [r1, #0x24] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x0 - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF810 -FUN_020BF810: ; 0x020BF810 - stmdb sp!, {r4-r6,lr} - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - ldrh r5, [r1, #0x2c] - ldr r12, [r1, #0x24] - ldrh r2, [r1, #0x2e] - mul lr, r12, r5 - rsb r12, r5, #0x0 - mov r12, r12, lsl #0xb - ldr r4, [r1, #0x18] - sub r12, r12, lr - smull lr, r12, r4, r12 - ldr r6, [r1, #0x28] - mov r4, lr, lsr #0x8 - orr r4, r4, r12, lsl #0x18 - add r4, r4, r5, lsl #0xf - str r4, [r0, #0x30] - mul r4, r6, r2 - rsb r5, r2, #0x0 - ldr r2, [r1, #0x1c] - add r4, r4, r5, lsl #0xb - smull lr, r12, r2, r4 - mov r2, lr, lsr #0x8 - ldrh r1, [r1, #0x2e] - orr r2, r2, r12, lsl #0x18 - add r1, r2, r1, lsl #0xf - str r1, [r0, #0x34] - str r3, [r0, #0x10] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF894 -FUN_020BF894: ; 0x020BF894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r7, [r5, #0x2e] - ldr r1, [r5, #0x28] - ldr r0, [r5, #0x24] - rsb r4, r2, #0x0 - mul r3, r1, r7 - rsb r1, r7, #0x0 - add r1, r3, r1, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r7, r4, lsl #0xb - mul r4, r0, r2 - sub r0, r7, r4 - ldrsh lr, [r5, #0x22] - smull r12, r4, r3, r1 - smull r7, r3, lr, r0 - subs r7, r7, r12 - sbc r3, r3, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF988 -FUN_020BF988: ; 0x020BF988 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r1, [r9, #0x2c] - ldrh r8, [r9, #0x2e] - ldr r2, [r9, #0x28] - rsb r0, r1, #0x0 - mul r3, r2, r8 - rsb r2, r8, #0x0 - add r8, r3, r2, lsl #0xb - mov r0, r0, lsl #0xb - smull r3, r2, r5, r8 - smull r8, r5, r6, r8 - ldr r11, [r9, #0x24] - mul r12, r11, r1 - sub r0, r0, r12 - smlal r3, r2, r4, r0 - smull r4, r0, r7, r0 - subs r4, r4, r8 - sbc r0, r0, r5 - mov r4, r4, lsr #0x8 - orr r4, r4, r0, lsl #0x18 - add r0, r4, r1, lsl #0xf - str r0, [r10, #0x30] - ldrh r1, [r9, #0x2e] - mov r0, r3, lsr #0x8 - orr r0, r0, r2, lsl #0x18 - add r0, r0, r1, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFA9C -FUN_020BFA9C: ; 0x020BFA9C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r3, #0x3 - ands r0, r0, #0x8 - ldrne r0, _020BFC1C ; =0x00101610 - mov r2, #0x2 - strne r0, [sp, #0x0] - ldreq r0, _020BFC20 ; =0x00101810 - mov r1, #0x1000 - streq r0, [sp, #0x0] - mov r0, #0x0 - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x44] - str r0, [sp, #0x40] - str r0, [sp, #0x34] - str r0, [sp, #0x30] - str r0, [sp, #0x2c] - str r0, [sp, #0x28] - str r0, [sp, #0x24] - str r0, [sp, #0x20] - str r0, [sp, #0x14] - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - strne r1, [r4, #0x1c] - ldrne r0, [r4, #0x1c] - strne r0, [r4, #0x18] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - movne r0, #0x1000 - strneh r0, [r4, #0x22] - movne r0, #0x0 - strneh r0, [r4, #0x20] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x28] - ldrne r0, [r4, #0x28] - strne r0, [r4, #0x24] - ldr r1, [r4, #0x0] - ldr r0, _020BFC24 ; =UNK_021067F0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BFBB0 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BFBB0: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BFC00 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BFC00: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BFC1C: .word 0x00101610 -_020BFC20: .word 0x00101810 -_020BFC24: .word UNK_021067F0 - - arm_func_start FUN_020BFC28 -FUN_020BFC28: ; 0x020BFC28 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BFC4C -FUN_020BFC4C: ; 0x020BFC4C - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - str r3, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x1c] - rsb r2, r2, #0x0 - sub r1, r1, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r3, [r0, #0x10] - bx lr - - arm_func_start FUN_020BFC8C -FUN_020BFC8C: ; 0x020BFC8C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r1, [r5, #0x2c] - ldrsh r0, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrh r1, [r5, #0x2e] - ldrsh r0, [r5, #0x22] - rsb r1, r1, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFD38 -FUN_020BFD38: ; 0x020BFD38 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r3, [r9, #0x22] - ldr r0, [r9, #0x18] - ldrsh r7, [r9, #0x20] - ldr r5, [r9, #0x1c] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [r10, #0x0] - smull r2, r1, r5, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r7 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - str r4, [r10, #0x14] - bl FX_GetDivResult - smull r2, r1, r5, r7 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - mov r1, r11 - bl FX_DivAsync - sub r0, r4, #0x1000 - ldrh r1, [r9, #0x2c] - mul r2, r1, r6 - mov r1, r2, lsl #0x4 - str r1, [r10, #0x30] - ldrh r1, [r9, #0x2e] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFE0C -FUN_020BFE0C: ; 0x020BFE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov lr, #0x0 - str lr, [r0, #0x4] - ldr r2, [r1, #0x24] - ldrh r3, [r1, #0x2c] - rsb r2, r2, #0x0 - ldr r12, [r1, #0x28] - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r1, [r1, #0x2e] - rsb r2, r12, #0x0 - rsb r1, r1, #0x0 - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str lr, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BFE68 -FUN_020BFE68: ; 0x020BFE68 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r12, [r1, #0x24] - ldr r3, [r1, #0x18] - ldr r4, [r1, #0x28] - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - ldrh lr, [r1, #0x2c] - rsb r3, r12, #0x0 - ldr r12, [r1, #0x1c] - rsb r4, r4, #0x0 - mul r3, lr, r3 - smull lr, r12, r4, r12 - mov r3, r3, lsl #0x4 - str r3, [r0, #0x30] - mov r4, lr, lsr #0xc - ldrh r3, [r1, #0x2e] - ldr r1, [r1, #0x1c] - orr r4, r4, r12, lsl #0x14 - add r1, r1, r4 - rsb r3, r3, #0x0 - sub r1, r1, #0x1000 - mul r1, r3, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BFEEC -FUN_020BFEEC: ; 0x020BFEEC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh lr, [r5, #0x20] - ldr r4, [r5, #0x28] - ldrsh r0, [r5, #0x22] - ldr r12, [r5, #0x24] - smull r3, r2, r4, lr - smlal r3, r2, r12, r0 - smull r1, r0, r4, r0 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - sub r4, lr, r3 - smull r3, r2, r12, lr - subs r1, r3, r1 - sbc r0, r2, r0 - ldrh r2, [r5, #0x2c] - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - mul r0, r2, r4 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - add r0, r0, r1 - rsb r1, r2, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFFD4 -FUN_020BFFD4: ; 0x020BFFD4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldrh r2, [r6, #0x2c] - ldrh r1, [r6, #0x2e] - mov r7, r0 - mov r10, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r10 - bl FX_DivAsync - ldrsh r3, [r6, #0x22] - ldr r0, [r6, #0x18] - ldrsh r9, [r6, #0x20] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - ldr r8, [r6, #0x1c] - orr r2, r2, r1, lsl #0x14 - str r2, [r7, #0x0] - smull r2, r1, r8, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r9 - mov r5, r2, lsr #0xc - orr r5, r5, r1, lsl #0x14 - str r4, [r7, #0x14] - bl FX_GetDivResult - smull r2, r1, r8, r9 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x4] - mov r0, r10 - mov r1, r11 - bl FX_DivAsync - ldr lr, [r6, #0x1c] - ldrsh r2, [r6, #0x20] - ldr r8, [r6, #0x24] - ldr r0, [r6, #0x28] - smull r10, r9, r8, r2 - ldrh r1, [r6, #0x2c] - smull r3, r2, r0, r2 - ldrsh r12, [r6, #0x22] - str r1, [sp, #0x0] - mov r11, lr, asr #0x1f - smlal r3, r2, r8, r12 - smull r8, r12, r0, r12 - subs r8, r10, r8 - sbc r0, r9, r12 - mov r9, r8, lsr #0xc - mov r12, r3, lsr #0xc - orr r9, r9, r0, lsl #0x14 - mov r3, r2, asr #0xc - orr r12, r12, r2, lsl #0x14 - umull r10, r2, r9, lr - mla r2, r9, r11, r2 - mov r8, r0, asr #0xc - mla r2, r8, lr, r2 - ldr r1, [r6, #0x18] - mov r8, r10, lsr #0xc - orr r8, r8, r2, lsl #0x14 - add r2, r4, r8 - mov r0, r1, asr #0x1f - umull r8, r4, r12, r1 - mla r4, r12, r0, r4 - mla r4, r3, r1, r4 - mov r0, r8, lsr #0xc - orr r0, r0, r4, lsl #0x14 - sub r1, r5, r0 - ldr r0, [sp, #0x0] - sub r2, r2, #0x1000 - mul r1, r0, r1 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x30] - ldrh r0, [r6, #0x2e] - rsb r0, r0, #0x0 - mul r1, r0, r2 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x34] - bl FX_GetDivResult - rsb r1, r5, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C0130 -FUN_020C0130: ; 0x020C0130 - ldr ip, _020C0138 ; =FUN_020C187C - bx r12 - .balign 4 -_020C0138: .word FUN_020C187C - - arm_func_start FUN_020C013C -FUN_020C013C: ; 0x020C013C - stmdb sp!, {r4,lr} - bl FUN_020C18F8 - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0174 -FUN_020C0174: ; 0x020C0174 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - beq _020C0194 - mov r0, #0x40 - bl SND_SetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} -_020C0194: - bl SND_ResetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C01A0 -FUN_020C01A0: ; 0x020C01A0 - stmdb sp!, {r4,lr} - mov r4, #0x0 -_020C01A8: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0x0 - bne _020C01A8 - bl FUN_020C0BA0 - bl FUN_020C1D9C - bl FUN_020C3C88 - mov r0, #0x0 - bl SND_FlushCommand - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C01D0 -FUN_020C01D0: ; 0x020C01D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C0254 ; =UNK_021D1C94 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - mov r1, #0x1 - str r1, [r0, #0x0] - bl SND_Init - ldr ip, _020C0258 ; =FUN_020C013C - ldr r0, _020C025C ; =UNK_021D1C98 - mov r3, #0x0 - ldr r1, _020C0260 ; =UNK_021D1CA4 - ldr r2, _020C0264 ; =FUN_020C0130 - str r12, [r0, #0x0] - str r3, [r0, #0x4] - str r2, [r1, #0x0] - str r3, [r1, #0x4] - bl PM_PrependPreSleepCallback - ldr r0, _020C0260 ; =UNK_021D1CA4 - bl PM_AppendPostSleepCallback - bl FUN_020C0270 - bl FUN_020C1E38 - bl FUN_020C0D20 - ldr r1, _020C0268 ; =UNK_021D1C8C - mvn r3, #0x0 - ldr r0, _020C026C ; =UNK_021D1C90 - mov r2, #0x1 - strb r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C0254: .word UNK_021D1C94 -_020C0258: .word FUN_020C013C -_020C025C: .word UNK_021D1C98 -_020C0260: .word UNK_021D1CA4 -_020C0264: .word FUN_020C0130 -_020C0268: .word UNK_021D1C8C -_020C026C: .word UNK_021D1C90 - - arm_func_start FUN_020C0270 -FUN_020C0270: ; 0x020C0270 - ldr r2, _020C0290 ; =UNK_021D1CB8 - mov r3, #0x0 - ldr r1, _020C0294 ; =UNK_021D1CB0 - ldr r0, _020C0298 ; =UNK_021D1CB4 - str r3, [r2, #0x0] - str r3, [r1, #0x0] - str r3, [r0, #0x0] - bx lr - .balign 4 -_020C0290: .word UNK_021D1CB8 -_020C0294: .word UNK_021D1CB0 -_020C0298: .word UNK_021D1CB4 - - arm_func_start FUN_020C029C -FUN_020C029C: ; 0x020C029C - ldr r1, _020C02B8 ; =UNK_021D1CB4 - mov r2, #0x1 - mvn r0, r2, lsl r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C02B8: .word UNK_021D1CB4 - - arm_func_start FUN_020C02BC -FUN_020C02BC: ; 0x020C02BC - ldr r0, _020C02FC ; =UNK_021D1CB4 - mov r3, #0x1 - ldr r2, [r0, #0x0] - mov r0, #0x0 -_020C02CC: - ands r1, r2, r3 - ldreq r1, _020C02FC ; =UNK_021D1CB4 - ldreq r2, [r1, #0x0] - orreq r2, r2, r3 - streq r2, [r1, #0x0] - bxeq lr - add r0, r0, #0x1 - cmp r0, #0x8 - mov r3, r3, lsl #0x1 - blt _020C02CC - mvn r0, #0x0 - bx lr - .balign 4 -_020C02FC: .word UNK_021D1CB4 - - arm_func_start FUN_020C0300 -FUN_020C0300: ; 0x020C0300 - ldr r1, _020C0318 ; =UNK_021D1CB0 - mvn r0, r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C0318: .word UNK_021D1CB0 - - arm_func_start FUN_020C031C -FUN_020C031C: - ldr r1, _020C033C ; =UNK_021D1CB0 - ldr r2, [r1, #0x0] - ands r3, r0, r2 - movne r0, #0x0 - orreq r0, r2, r0 - streq r0, [r1, #0x0] - moveq r0, #0x1 - bx lr - .balign 4 -_020C033C: .word UNK_021D1CB0 - - arm_func_start FUN_020C0340 -FUN_020C0340: - stmdb sp!, {r4,lr} - movs r4, r0 - ldmeqia sp!, {r4,pc} - mov r1, #0x0 - bl SND_UnlockChannel - ldr r0, _020C036C ; =UNK_021D1CB8 - mvn r1, r4 - ldr r2, [r0, #0x0] - and r1, r2, r1 - str r1, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C036C: .word UNK_021D1CB8 - - arm_func_start FUN_020C0370 -FUN_020C0370: - stmdb sp!, {r4,lr} - movs r4, r0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - ldr r1, _020C03B4 ; =UNK_021D1CB8 - ldr r1, [r1, #0x0] - ands r1, r4, r1 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - mov r1, #0x0 - bl SND_LockChannel - ldr r1, _020C03B4 ; =UNK_021D1CB8 - mov r0, #0x1 - ldr r2, [r1, #0x0] - orr r2, r2, r4 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C03B4: .word UNK_021D1CB8 - - arm_func_start FUN_020C03B8 -FUN_020C03B8: ; 0x020C03B8 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0xc] - cmp r0, #0x0 - bne _020C03F8 - ldr r0, [r4, #0x10] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - mov r0, #0x1 - str r0, [r4, #0xc] -_020C03F8: - bl SND_GetChannelStatus - ldr r1, [r4, #0x0] - mov r2, #0x1 - mov r1, r2, lsl r1 - ands r0, r1, r0 - movne r0, r2 - moveq r0, #0x0 - streq r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C041C -FUN_020C041C: ; 0x020C041C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - bl SND_SetChannelPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C044C -FUN_020C044C: ; 0x020C044C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - mov r4, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r2, [r5, #0x4] - ldr r0, _020C04D4 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - mov r2, r4 - mov r3, r4, asr #0x1f - bl _ll_udiv - mov r2, #0x0 - mov r3, r0 - mov r0, #0x10 - cmp r1, r2 - cmpeq r3, r0 - movcc r3, r0 - blo _020C04B8 - ldr r0, _020C04D8 ; =0x0000FFFF - cmp r1, r2 - cmpeq r3, r0 - movhi r3, r0 -_020C04B8: - ldr r0, [r5, #0x0] - mov r1, #0x1 - mov r0, r1, lsl r0 - mov r1, r3 - bl SND_SetChannelTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C04D4: .word 0xD87F8000 -_020C04D8: .word 0x0000FFFF - - arm_func_start FUN_020C04DC -FUN_020C04DC: ; 0x020C04DC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, #0x0 - bl SND_SetChannelVolume - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0510 -FUN_020C0510: ; 0x020C0510 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r2, #0x1 - mov r1, #0x0 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StopTimer - mov r0, #0x0 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C054C -FUN_020C054C: ; 0x020C054C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - movs r8, r1 - mov r9, r0 - mov r7, r2 - mov r6, r3 - beq _020C0584 - cmp r8, #0x1 - ldreq r0, [sp, #0x3c] - ldreq r1, [sp, #0x38] - moveq r0, r0, asr #0x1 - moveq r5, r1, asr #0x1 - subeq r4, r0, r1, asr #0x1 - b _020C0598 -_020C0584: - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x38] - mov r0, r0, asr #0x2 - mov r5, r1, asr #0x2 - sub r4, r0, r1, asr #0x2 -_020C0598: - ldr r2, [sp, #0x40] - ldr r0, _020C0668 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - ldr r2, [sp, #0x48] - mov r3, r2, asr #0x1f - bl _ll_udiv - mov r3, #0x0 - mov r2, #0x10 - cmp r1, r3 - cmpeq r0, r2 - movcc r0, r2 - blo _020C05E0 - ldr r2, _020C066C ; =0x0000FFFF - cmp r1, r3 - cmpeq r0, r2 - movhi r0, r2 -_020C05E0: - str r5, [sp, #0x0] - ldr r1, [sp, #0x44] - str r4, [sp, #0x4] - str r1, [sp, #0x8] - mov r1, #0x0 - str r1, [sp, #0xc] - cmp r6, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x4c] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r9, #0x0] - moveq r3, #0x2 - mov r1, r8 - mov r2, r7 - bl SND_SetupChannelPcm - mov r1, #0x0 - ldr r0, [r9, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r9, #0x8] - mov r0, #0x0 - str r0, [r9, #0xc] - bl SND_GetCurrentCommandTag - str r0, [r9, #0x10] - ldr r1, [sp, #0x40] - mov r0, #0x1 - str r1, [r9, #0x4] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C0668: .word 0xD87F8000 -_020C066C: .word 0x0000FFFF - - arm_func_start FUN_020C0670 -FUN_020C0670: ; 0x020C0670 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr ip, _020C0684 ; =FUN_020C0340 - mov r0, r1, lsl r0 - bx r12 - .balign 4 -_020C0684: .word FUN_020C0340 - - arm_func_start FUN_020C0688 -FUN_020C0688: ; 0x020C0688 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x1 - mov r0, r0, lsl r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x14 - mul r0, r4, r0 - ldr r2, _020C06C8 ; =UNK_021D1CBC - mov r1, #0x0 - str r4, [r2, r0] - add r0, r2, r0 - str r1, [r0, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020C06C8: .word UNK_021D1CBC - - arm_func_start FUN_020C06CC -FUN_020C06CC: ; 0x020C06CC - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r4, [r6, #0x4] - mov r5, r1 - cmp r4, #0x0 - beq _020C06F8 - mov r0, r4 - mov r1, r6 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r6, #0x4] -_020C06F8: - ldr r0, _020C0728 ; =UNK_021D1E08 - mov r1, r6 - bl FUN_020ADAB0 - strb r5, [r6, #0x3d] - cmp r4, #0x0 - beq _020C071C - mov r0, r4 - mov r1, r6 - bl FUN_020C0910 -_020C071C: - mov r0, r6 - bl FUN_020C08B4 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0728: .word UNK_021D1E08 - - arm_func_start FUN_020C072C -FUN_020C072C: ; 0x020C072C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C2A7C - ldr r1, [r4, #0xc] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x8] - ldmneia sp!, {r4,pc} - ldr r1, [r4, #0x10] - ldr r2, _020C0778 ; =UNK_021D2254 - mov r0, #0x24 - mla r0, r1, r0, r2 - mov r1, r4 - add r0, r0, #0xc - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - .balign 4 -_020C0778: .word UNK_021D2254 - - arm_func_start FUN_020C077C -FUN_020C077C: ; 0x020C077C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x0] - strne r0, [r4, #0x0] - ldr r5, [r4, #0x4] - mov r1, r4 - mov r0, r5 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020C07D8 - add r0, r5, #0xc - bl FUN_020ADBE8 - ldr r0, [r4, #0x8] - mov r1, #0x0 - str r1, [r0, #0xc] - str r1, [r4, #0x8] -_020C07D8: - ldr r0, _020C0800 ; =UNK_021D1E08 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, _020C0804 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADBE8 - mov r0, #0x0 - strb r0, [r4, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0800: .word UNK_021D1E08 -_020C0804: .word UNK_021D1DFC - - arm_func_start FUN_020C0808 -FUN_020C0808: ; 0x020C0808 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - bne _020C0850 - ldr r0, _020C0878 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - mov r4, r0 - ldrb r1, [r4, #0x3d] - cmp r5, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r5,pc} - bl FUN_020C087C -_020C0850: - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADAB0 - mov r0, r4 - strb r5, [r4, #0x3d] - bl FUN_020C08B4 - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0874: .word UNK_021D1DFC -_020C0878: .word UNK_021D1E08 - - arm_func_start FUN_020C087C -FUN_020C087C: ; 0x020C087C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrb r0, [r4, #0x2c] - cmp r0, #0x2 - bne _020C089C - ldrb r0, [r4, #0x3c] - ldr r1, _020C08B0 ; =0xFFFFFD2D - bl SND_SetPlayerVolume -_020C089C: - ldrb r0, [r4, #0x3c] - bl SND_StopSeq - mov r0, r4 - bl FUN_020C077C - ldmia sp!, {r4,pc} - .balign 4 -_020C08B0: .word 0xFFFFFD2D - - arm_func_start FUN_020C08B4 -FUN_020C08B4: ; 0x020C08B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C090C ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C08F8 - ldr r4, _020C090C ; =UNK_021D1E08 -_020C08D8: - ldrb r2, [r5, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C08F8 - mov r0, r4 - bl FUN_020ADA98 - movs r1, r0 - bne _020C08D8 -_020C08F8: - ldr r0, _020C090C ; =UNK_021D1E08 - mov r2, r5 - bl FUN_020ADB18 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C090C: .word UNK_021D1E08 - - arm_func_start FUN_020C0910 -FUN_020C0910: ; 0x020C0910 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, #0x0 - mov r5, r0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C0950 -_020C0930: - ldrb r2, [r4, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C0950 - mov r0, r5 - bl FUN_020ADA98 - movs r1, r0 - bne _020C0930 -_020C0950: - mov r0, r5 - mov r2, r4 - bl FUN_020ADB18 - str r5, [r4, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0968 -FUN_020C0968: ; 0x020C0968 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x0 - strb r0, [r4, #0x2e] - strb r0, [r4, #0x2d] - strb r0, [r4, #0x2f] - strh r0, [r4, #0x34] - strh r0, [r4, #0x3e] - mov r1, #0x7f - strb r1, [r4, #0x40] - add r0, r4, #0x1c - strb r1, [r4, #0x41] - bl FUN_020C3E6C - add r0, r4, #0x1c - mov r1, #0x7f00 - mov r2, #0x1 - bl FUN_020C3E40 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C09B0 -FUN_020C09B0: ; 0x020C09B0 - stmdb sp!, {r4-r6,lr} - ldr r3, _020C0A00 ; =UNK_021D2254 - mov r2, #0x24 - mla r5, r0, r2, r3 - mov r6, r1 - add r0, r5, #0xc - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r4 - add r0, r5, #0xc - bl FUN_020ADAB0 - str r6, [r4, #0xc] - str r4, [r6, #0x8] - ldr r0, [r4, #0x8] - bl FUN_020C29C0 - ldr r0, [r4, #0x8] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0A00: .word UNK_021D2254 - - arm_func_start FUN_020C0A04 -FUN_020C0A04: ; 0x020C0A04 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r5, r0 - mov r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x2e] - cmp r4, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x3c] - bl SND_PauseSeq - strb r4, [r5, #0x2e] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0A40 -FUN_020C0A40: ; 0x020C0A40 - stmdb sp!, {r4,lr} - movs r4, r0 - mov r2, r1 - ldmeqia sp!, {r4,pc} - ldrb r1, [r4, #0x2c] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C0A6C - bl FUN_020C087C - ldmia sp!, {r4,pc} -_020C0A6C: - add r0, r4, #0x1c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, r4 - mov r1, #0x0 - bl FUN_020C06CC - mov r0, #0x2 - strb r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0A90 -FUN_020C0A90: ; 0x020C0A90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r0, [r5, #0x3c] - ldr r4, [r5, #0x4] - bl SND_PrepareSeq - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - beq _020C0AC0 - ldrb r0, [r5, #0x3c] - ldr r1, _020C0AE4 ; =0x0000FFFF - bl SND_SetTrackAllocatableChannel -_020C0AC0: - mov r0, r5 - bl FUN_020C0968 - bl SND_GetCurrentCommandTag - str r0, [r5, #0x30] - mov r0, #0x1 - strb r0, [r5, #0x2f] - strb r0, [r5, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0AE4: .word 0x0000FFFF - - arm_func_start thunk_FUN_020c077c -thunk_FUN_020c077c: ; 0x020C0AE8 - ldr ip, _020C0AF0 ; =FUN_020C077C - bx r12 - .balign 4 -_020C0AF0: .word FUN_020C077C - - arm_func_start FUN_020C0AF4 -FUN_020C0AF4: ; 0x020C0AF4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020C0B9C ; =UNK_021D2254 - mov r3, #0x24 - mov r4, r0 - ldr r5, [r4, #0x0] - mla r6, r1, r3, r12 - mov r7, r2 - cmp r5, #0x0 - beq _020C0B20 - bl FUN_020C0F68 -_020C0B20: - ldrh r1, [r6, #0x8] - ldr r0, [r6, #0x18] - cmp r1, r0 - blo _020C0B64 - mov r0, r6 - mov r1, #0x0 - bl FUN_020ADA98 - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldrb r1, [r0, #0x3d] - cmp r7, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r7,pc} - bl FUN_020C087C -_020C0B64: - mov r0, r7 - bl FUN_020C0808 - movs r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r0, r6 - mov r1, r5 - bl FUN_020C0910 - str r4, [r5, #0x0] - mov r0, r5 - str r5, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C0B9C: .word UNK_021D2254 - - arm_func_start FUN_020C0BA0 -FUN_020C0BA0: ; 0x020C0BA0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - bl SND_GetPlayerStatus - str r0, [sp, #0x0] - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r10, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - mov r0, #0x8000 - rsb r0, r0, #0x0 - ldr r4, _020C0D18 ; =UNK_02103BAC - str r0, [sp, #0x4] - mov r5, #0x1 - mov r11, #0x0 -_020C0BE0: - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, r10 - bl FUN_020ADA98 - ldrb r1, [r10, #0x2d] - mov r9, r0 - cmp r1, #0x0 - bne _020C0C0C - ldr r0, [r10, #0x30] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - strneb r5, [r10, #0x2d] -_020C0C0C: - ldrb r0, [r10, #0x2d] - cmp r0, #0x0 - beq _020C0C38 - ldrb r0, [r10, #0x3c] - mov r1, r5, lsl r0 - ldr r0, [sp, #0x0] - ands r0, r0, r1 - bne _020C0C38 - mov r0, r10 - bl FUN_020C077C - b _020C0D00 -_020C0C38: - add r0, r10, #0x1c - bl FUN_020C3DF4 - ldr r0, [r10, #0x4] - ldrb r2, [r10, #0x41] - ldrb r1, [r10, #0x40] - ldrb r0, [r0, #0x20] - mov r3, r2, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - add r0, r10, #0x1c - ldrsh r8, [r4, r3] - ldrsh r7, [r4, r2] - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r2, r0, lsl #0x1 - add r1, r7, r8 - mov r0, #0x8000 - ldrsh r2, [r4, r2] - add r1, r6, r1 - rsb r0, r0, #0x0 - add r6, r2, r1 - cmp r6, r0 - ldrlt r6, [sp, #0x4] - blt _020C0CA8 - ldr r0, _020C0D1C ; =0x00007FFF - cmp r6, r0 - movgt r6, r0 -_020C0CA8: - ldrsh r0, [r10, #0x3e] - cmp r6, r0 - beq _020C0CC4 - ldrb r0, [r10, #0x3c] - mov r1, r6 - bl SND_SetPlayerVolume - strh r6, [r10, #0x3e] -_020C0CC4: - ldrb r0, [r10, #0x2c] - cmp r0, #0x2 - bne _020C0CE8 - add r0, r10, #0x1c - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C0CE8 - mov r0, r10 - bl FUN_020C087C -_020C0CE8: - ldrb r0, [r10, #0x2f] - cmp r0, #0x0 - beq _020C0D00 - ldrb r0, [r10, #0x3c] - bl SND_StartPreparedSeq - strb r11, [r10, #0x2f] -_020C0D00: - mov r10, r9 - cmp r9, #0x0 - bne _020C0BE0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C0D14: .word UNK_021D1E08 -_020C0D18: .word UNK_02103BAC -_020C0D1C: .word 0x00007FFF - - arm_func_start FUN_020C0D20 -FUN_020C0D20: ; 0x020C0D20 - stmdb sp!, {r4-r10,lr} - ldr r0, _020C0DC4 ; =UNK_021D1E08 - mov r1, #0x14 - bl FUN_020ADC74 - ldr r0, _020C0DC8 ; =UNK_021D1DFC - mov r1, #0x14 - bl FUN_020ADC74 - ldr r6, _020C0DCC ; =UNK_021D1E14 - mov r7, #0x0 - ldr r4, _020C0DC8 ; =UNK_021D1DFC - mov r5, r7 -_020C0D4C: - strb r5, [r6, #0x2c] - mov r0, r4 - mov r1, r6 - strb r7, [r6, #0x3c] - bl FUN_020ADBE8 - add r7, r7, #0x1 - cmp r7, #0x10 - add r6, r6, #0x44 - blt _020C0D4C - ldr sl, _020C0DD0 ; =UNK_021D2254 - mov r9, #0x0 - mov r7, r9 - mov r4, r9 - mov r8, #0xc - mov r6, #0x7f - mov r5, #0x1 -_020C0D8C: - mov r0, r10 - mov r1, r8 - bl FUN_020ADC74 - mov r1, r7 - add r0, r10, #0xc - bl FUN_020ADC74 - strb r6, [r10, #0x20] - str r5, [r10, #0x18] - add r9, r9, #0x1 - str r4, [r10, #0x1c] - cmp r9, #0x20 - add r10, r10, #0x24 - blt _020C0D8C - ldmia sp!, {r4-r10,pc} - .balign 4 -_020C0DC4: .word UNK_021D1E08 -_020C0DC8: .word UNK_021D1DFC -_020C0DCC: .word UNK_021D1E14 -_020C0DD0: .word UNK_021D2254 - - arm_func_start FUN_020C0DD4 -FUN_020C0DD4: ; 0x020C0DD4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x2d] - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x3c] - bl SND_GetPlayerTickCounter - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0E14 -FUN_020C0E14: ; 0x020C0E14 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - mvneq r0, #0x0 - bxeq lr - ldrh r0, [r1, #0x34] - cmp r0, #0x1 - mvnne r0, #0x0 - ldreqh r0, [r1, #0x38] - bx lr - - arm_func_start FUN_020C0E38 -FUN_020C0E38: ; 0x020C0E38 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - bxeq lr - mov r3, #0x2 - strh r3, [r12, #0x34] - ldr r3, [r0, #0x0] - strh r1, [r3, #0x38] - ldr r0, [r0, #0x0] - strh r2, [r0, #0x3a] - bx lr - - arm_func_start FUN_020C0E60 -FUN_020C0E60: ; 0x020C0E60 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - movne r2, #0x1 - strneh r2, [r3, #0x34] - ldrne r0, [r0, #0x0] - strneh r1, [r0, #0x38] - bx lr - - arm_func_start FUN_020C0E7C -FUN_020C0E7C: ; 0x020C0E7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EA4 -FUN_020C0EA4: ; 0x020C0EA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPitch - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0ECC -FUN_020C0ECC: ; 0x020C0ECC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetPlayerChannelPriority - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EF4 -FUN_020C0EF4: ; 0x020C0EF4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r3, #0x2c] - cmp r0, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r0, r3, #0x1c - mov r1, r1, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0F30 -FUN_020C0F30: ; 0x020C0F30 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x40] - bx lr - - arm_func_start FUN_020C0F40 -FUN_020C0F40: ; 0x020C0F40 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x41] - bx lr - - arm_func_start FUN_020C0F50 -FUN_020C0F50: ; 0x020C0F50 - mov r1, #0x24 - mul r1, r0, r1 - ldr r0, _020C0F64 ; =UNK_021D225C - ldrh r0, [r0, r1] - bx lr - .balign 4 -_020C0F64: .word UNK_021D225C - - arm_func_start FUN_020C0F68 -FUN_020C0F68: ; 0x020C0F68 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F80 -FUN_020C0F80: ; 0x020C0F80 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F8C -FUN_020C0F8C: ; 0x020C0F8C - ldr ip, _020C0F98 ; =FUN_020C0A04 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C0F98: .word FUN_020C0A04 - - arm_func_start FUN_020C0F9C -FUN_020C0F9C: ; 0x020C0F9C - stmdb sp!, {r4-r6,lr} - ldr r4, _020C0FD8 ; =UNK_021D1E14 - mov r6, r0 - mov r5, #0x0 -_020C0FAC: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C0FC4 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C0FC4: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FAC - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0FD8: .word UNK_021D1E14 - - arm_func_start FUN_020C0FDC -FUN_020C0FDC: ; 0x020C0FDC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C103C ; =UNK_021D1E14 - mov r7, r0 - mov r6, r1 - mov r5, #0x0 -_020C0FF4: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C1024 - ldrh r0, [r4, #0x34] - cmp r0, #0x1 - bne _020C1024 - ldrh r0, [r4, #0x38] - cmp r0, r7 - bne _020C1024 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C1024: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C103C: .word UNK_021D1E14 - - arm_func_start FUN_020C1040 -FUN_020C1040: ; 0x020C1040 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r3, _020C109C ; =UNK_021D2254 - mov r2, #0x24 - mla r4, r0, r2, r3 - ldr r5, _020C10A0 ; =UNK_021D1E14 - mov r7, r1 - mov r6, #0x0 -_020C1060: - ldrb r0, [r5, #0x2c] - cmp r0, #0x0 - beq _020C1084 - ldr r0, [r5, #0x4] - cmp r0, r4 - bne _020C1084 - mov r0, r5 - mov r1, r7 - bl FUN_020C0A40 -_020C1084: - add r6, r6, #0x1 - cmp r6, #0x10 - add r5, r5, #0x44 - blt _020C1060 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C109C: .word UNK_021D2254 -_020C10A0: .word UNK_021D1E14 - - arm_func_start FUN_020C10A4 -FUN_020C10A4: ; 0x020C10A4 - ldr ip, _020C10B0 ; =FUN_020C0A40 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C10B0: .word FUN_020C0A40 - - arm_func_start FUN_020C10B4 -FUN_020C10B4: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r2 - mov r6, r0 - mov r0, r1 - mov r3, #0x0 - ldr r2, _020C1140 ; =FUN_020C072C - add r1, r5, #0x14 - str r3, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r2, #0x0 - str r2, [r4, #0xc] - str r6, [r4, #0x10] - mov r1, r5 - add r0, r4, #0x14 - str r2, [r4, #0x8] - bl FUN_020C2A94 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020C1144 ; =UNK_021D2254 - mov r1, #0x24 - mla r2, r6, r1, r2 - str r0, [r4, #0x8] - mov r1, r4 - add r0, r2, #0xc - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C1140: .word FUN_020C072C -_020C1144: .word UNK_021D2254 - - arm_func_start FUN_020C1148 -FUN_020C1148: ; 0x020C1148 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C115C ; =UNK_021D2270 - str r1, [r0, r2] - bx lr - .balign 4 -_020C115C: .word UNK_021D2270 - - arm_func_start FUN_020C1160 -FUN_020C1160: ; 0x020C1160 - mov r2, #0x24 - mul r2, r0, r2 - mov r0, r1, lsl #0x10 - ldr r1, _020C117C ; =UNK_021D226C - mov r0, r0, lsr #0x10 - str r0, [r1, r2] - bx lr - .balign 4 -_020C117C: .word UNK_021D226C - - arm_func_start FUN_020C1180 -FUN_020C1180: ; 0x020C1180 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C1194 ; =UNK_021D2274 - strb r1, [r0, r2] - bx lr - .balign 4 -_020C1194: .word UNK_021D2274 - - arm_func_start FUN_020C1198 -FUN_020C1198: ; 0x020C1198 - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmeqia sp!, {r4-r6,pc} - ldr r0, [r4, #0x38] - cmp r0, #0x0 - beq _020C11E8 - mov r5, #0x1 -_020C11C0: - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r4 - mov r1, r5 - bl FUN_020C1254 - mov r0, r6 - bl OS_RestoreInterrupts - ldr r0, [r4, #0x38] - cmp r0, #0x0 - bne _020C11C0 -_020C11E8: - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C1208 -FUN_020C1208: ; 0x020C1208 - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1e - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - ldr r2, [r0, #0x40] - mov r3, #0x1 - mov r1, #0x0 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x44] - mov r3, r1 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C1254 -FUN_020C1254: ; 0x020C1254 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - ldr r0, [r5, #0x28] - ldr r1, [r5, #0x2c] - bl _u32_div_f - ldr r1, [r5, #0x48] - ldr r2, [r5, #0x38] - mov r3, r0 - mul lr, r3, r2 - cmp r1, #0x0 - mov r12, #0x0 - ble _020C12B8 - ldr r2, _020C1300 ; =UNK_021D2724 - ldr r0, _020C1304 ; =UNK_021D26E4 -_020C1294: - add r1, r5, r12 - ldrb r1, [r1, #0x4c] - ldr r1, [r2, r1, lsl #0x3] - add r1, r1, lr - str r1, [r0, r12, lsl #0x2] - ldr r1, [r5, #0x48] - add r12, r12, #0x1 - cmp r12, r1 - blt _020C1294 -_020C12B8: - ldr r0, [r5, #0x20] - ldr r2, _020C1304 ; =UNK_021D26E4 - str r0, [sp, #0x0] - ldr r12, [r5, #0x34] - mov r0, r4 - str r12, [sp, #0x4] - ldr r4, [r5, #0x30] - blx r4 - ldr r0, [r5, #0x38] - add r0, r0, #0x1 - str r0, [r5, #0x38] - ldr r1, [r5, #0x38] - ldr r0, [r5, #0x2c] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r5, #0x38] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1300: .word UNK_021D2724 -_020C1304: .word UNK_021D26E4 - - arm_func_start FUN_020C1308 -FUN_020C1308: ; 0x020C1308 - ldr ip, _020C1314 ; =FUN_020C1254 - mov r1, #0x1 - bx r12 - .balign 4 -_020C1314: .word FUN_020C1254 - - arm_func_start FUN_020C1318 -FUN_020C1318: ; 0x020C1318 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - bl FUN_020C029C - ldr r0, _020C1344 ; =UNK_021D26D8 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C1344: .word UNK_021D26D8 - - arm_func_start FUN_020C1348 -FUN_020C1348: ; 0x020C1348 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C13B4 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StopTimer - add r0, r4, #0x8 - bl PM_DeletePreSleepCallback - add r0, r4, #0x14 - bl PM_DeletePostSleepCallback - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc -_020C13B4: - mov r0, r4 - bl FUN_020C1318 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C13C4 -FUN_020C13C4: ; 0x020C13C4 - stmdb sp!, {r4-r8,lr} - mov r7, r0 - str r1, [r7, #0x3c] - ldr r0, [r7, #0x48] - mov r5, #0x0 - cmp r0, #0x0 - ldmleia sp!, {r4-r8,pc} - ldr r4, _020C142C ; =UNK_021D2724 - mov r8, #0x1 -_020C13E8: - add r0, r7, r5 - ldrb r6, [r0, #0x4c] - ldr r1, [r7, #0x3c] - add r0, r4, r6, lsl #0x3 - ldr r0, [r0, #0x4] - add r0, r1, r0 - bl SND_CalcChannelVolume - mov r2, r0 - mov r0, r8, lsl r6 - and r1, r2, #0xff - mov r2, r2, asr #0x8 - bl SND_SetChannelVolume - ldr r0, [r7, #0x48] - add r5, r5, #0x1 - cmp r5, r0 - blt _020C13E8 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020C142C: .word UNK_021D2724 - - arm_func_start FUN_020C1430 -FUN_020C1430: ; 0x020C1430 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - bl FUN_020C1348 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C1458 -FUN_020C1458: ; 0x020C1458 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmneia sp!, {r4,pc} - add r0, r4, #0x8 - bl PM_PrependPreSleepCallback - add r0, r4, #0x14 - bl PM_AppendPostSleepCallback - ldr r0, [r4, #0x24] - orr r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C14AC -FUN_020C14AC: ; 0x020C14AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - mov r10, r0 - ldr r4, [r10, #0x24] - mov r9, r1 - mov r1, r4, lsl #0x1f - movs r1, r1, asr #0x1f - ldr r1, [sp, #0x4c] - str r2, [sp, #0x18] - mov r4, r3 - str r1, [sp, #0x4c] - beq _020C14E0 - bl FUN_020C1430 -_020C14E0: - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x48] - mov r0, r0, lsl #0x5 - mul r1, r2, r0 - mov r0, r4 - bl _u32_div_f - ldr r1, [sp, #0x4c] - ldr r2, [sp, #0x48] - mul r1, r0, r1 - mov r0, r1, lsl #0x5 - str r0, [r10, #0x28] - ldr r0, [r10, #0x28] - cmp r9, #0x1 - moveq r0, r0, lsr #0x1 - mul r0, r2, r0 - ldr r1, [sp, #0x4c] - bl _u32_div_f - str r0, [sp, #0x1c] - bl FUN_020C02BC - str r0, [r10, #0x40] - ldr r0, [r10, #0x40] - cmp r0, #0x0 - addlt sp, sp, #0x24 - movlt r0, #0x0 - ldmltia sp!, {r4-r11,pc} - ldr r0, [r10, #0x48] - mov r8, #0x0 - cmp r0, #0x0 - ble _020C15D4 - ldr r0, [sp, #0x48] - mov r7, r0, lsl #0x5 - ldr r6, _020C1668 ; =UNK_021D2724 - mov r5, r8 - mov r4, #0x7f - mov r11, #0x40 - mov r0, #0x1 - str r0, [sp, #0x20] -_020C1574: - ldr r2, [r10, #0x28] - ldr r1, [sp, #0x18] - add r0, r10, r8 - mla r1, r2, r8, r1 - ldrb r0, [r0, #0x4c] - ldr r3, [sp, #0x20] - str r1, [r6, r0, lsl #0x3] - add r1, r6, r0, lsl #0x3 - str r5, [r1, #0x4] - str r5, [sp, #0x0] - ldr r2, [r10, #0x28] - mov r1, r9 - mov r2, r2, lsr #0x2 - str r2, [sp, #0x4] - str r4, [sp, #0x8] - str r5, [sp, #0xc] - str r7, [sp, #0x10] - str r11, [sp, #0x14] - ldr r2, [r6, r0, lsl #0x3] - bl SND_SetupChannelPcm - ldr r0, [r10, #0x48] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C1574 -_020C15D4: - str r10, [sp, #0x0] - ldr r1, [sp, #0x1c] - ldr r0, [r10, #0x40] - ldr r3, _020C166C ; =FUN_020C1308 - mov r2, r1 - bl SND_SetupAlarm - ldr r0, _020C1670 ; =UNK_021D26D8 - mov r1, r10 - bl FUN_020ADBE8 - ldr r0, [sp, #0x4c] - str r9, [r10, #0x20] - str r0, [r10, #0x2c] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x54] - str r1, [r10, #0x30] - str r0, [r10, #0x34] - mov r0, #0x0 - str r0, [r10, #0x38] - str r0, [r10, #0x3c] - ldr r0, [r10, #0x24] - bic r0, r0, #0x1 - orr r0, r0, #0x1 - str r0, [r10, #0x24] - bl OS_DisableInterrupts - mov r4, r0 - mov r2, #0x1 - mov r0, r10 - mov r1, #0x0 - str r2, [r10, #0x2c] - bl FUN_020C1254 - ldr r1, [sp, #0x4c] - mov r0, r4 - str r1, [r10, #0x2c] - bl OS_RestoreInterrupts - mov r0, #0x1 - add sp, sp, #0x24 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1668: .word UNK_021D2724 -_020C166C: .word FUN_020C1308 -_020C1670: .word UNK_021D26D8 - - arm_func_start FUN_020C1674 -FUN_020C1674: ; 0x020C1674 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x44] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C0340 - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C169C -FUN_020C169C: ; 0x020C169C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, #0x0 - mov r6, r0 - mov r12, r4 - cmp r5, #0x0 - ble _020C16DC - mov r1, #0x1 -_020C16BC: - ldrb r3, [r2, r12] - add r0, r6, r12 - strb r3, [r0, #0x4c] - ldrb r0, [r2, r12] - add r12, r12, #0x1 - cmp r12, r5 - orr r4, r4, r1, lsl r0 - blt _020C16BC -_020C16DC: - mov r0, r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - strne r5, [r6, #0x48] - strne r4, [r6, #0x44] - movne r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C16FC -FUN_020C16FC: ; 0x020C16FC - stmdb sp!, {r4,lr} - ldr r1, _020C176C ; =UNK_021D26D4 - mov r4, r0 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - bne _020C172C - ldr r0, _020C1770 ; =UNK_021D26D8 - mov r1, #0x0 - bl FUN_020ADC74 - ldr r0, _020C176C ; =UNK_021D26D4 - mov r1, #0x1 - str r1, [r0, #0x0] -_020C172C: - ldr r1, _020C1774 ; =FUN_020C1208 - ldr r0, _020C1778 ; =FUN_020C1198 - str r1, [r4, #0x8] - str r4, [r4, #0xc] - str r0, [r4, #0x14] - str r4, [r4, #0x18] - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C176C: .word UNK_021D26D4 -_020C1770: .word UNK_021D26D8 -_020C1774: .word FUN_020C1208 -_020C1778: .word FUN_020C1198 - - arm_func_start FUN_020C177C -FUN_020C177C: ; 0x020C177C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r4, [r7, #0x18] - ldr r0, [r7, #0x1c] - ldr r1, _020C186C ; =UNK_021D27A4 - mul r0, r4, r0 - ldr r3, [r7, #0xc] - ldr r2, [r7, #0x10] - ldr r1, [r1, #0x0] - add r6, r3, r0 - cmp r1, #0x0 - add r5, r2, r0 - beq _020C180C - ldr r2, _020C1870 ; =UNK_021D27A8 - mov r1, #0x14 - ldr r2, [r2, #0x0] - ldr r3, _020C1874 ; =UNK_021D2820 - mul r1, r2, r1 - str r7, [r3, r1] - add r1, r3, r1 - str r4, [r1, #0x4] - str r0, [r1, #0x8] - str r6, [r1, #0xc] - ldr r0, _020C1878 ; =UNK_021D27AC - mov r2, #0x0 - str r5, [r1, #0x10] - bl OS_SendMessage - ldr r0, _020C1870 ; =UNK_021D27A8 - ldr r1, [r0, #0x0] - add r1, r1, #0x1 - str r1, [r0, #0x0] - cmp r1, #0x8 - movge r1, #0x0 - strge r1, [r0, #0x0] - b _020C1844 -_020C180C: - mov r0, r6 - mov r1, r4 - bl DC_InvalidateRange - mov r0, r5 - mov r1, r4 - bl DC_InvalidateRange - ldr r1, [r7, #0x38] - mov r0, r6 - str r1, [sp, #0x0] - ldr r3, [r7, #0x8] - ldr r6, [r7, #0x34] - mov r1, r5 - mov r2, r4 - blx r6 -_020C1844: - ldr r0, [r7, #0x1c] - add r0, r0, #0x1 - str r0, [r7, #0x1c] - ldr r1, [r7, #0x1c] - ldr r0, [r7, #0x30] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r7, #0x1c] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C186C: .word UNK_021D27A4 -_020C1870: .word UNK_021D27A8 -_020C1874: .word UNK_021D2820 -_020C1878: .word UNK_021D27AC - - arm_func_start FUN_020C187C -FUN_020C187C: ; 0x020C187C - stmdb sp!, {r4,lr} - ldr r4, _020C18F4 ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x0 - str r0, [r4, #0x1c] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x14] - bl MIi_CpuClear32 - ldr r1, [r4, #0x10] - ldr r2, [r4, #0x14] - mov r0, #0x0 - bl MIi_CpuClear32 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - movlt r2, #0x0 - bl SND_StartTimer - ldmia sp!, {r4,pc} - .balign 4 -_020C18F4: .word UNK_021D27CC - - arm_func_start FUN_020C18F8 -FUN_020C18F8: - stmdb sp!, {r4,lr} - ldr r3, _020C194C ; =UNK_021D27CC - ldr r0, [r3, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [r3, #0x2c] - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r3, #0x24] - ldr r1, [r3, #0x28] - movlt r2, #0x0 - mov r3, #0x0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - .balign 4 -_020C194C: .word UNK_021D27CC - - arm_func_start FUN_020C1950 -FUN_020C1950: ; 0x020C1950 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C1A3C ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r7, #0x1 - movlt r7, #0x0 - cmp r7, #0x0 - movne r0, #0x1 - movne r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - moveq r2, #0x0 - bl SND_StopTimer - cmp r7, #0x0 - beq _020C19DC - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc - ldr r6, _020C1A40 ; =UNK_021D27AC - mov r5, #0x0 -_020C19C4: - mov r0, r6 - mov r1, r5 - mov r2, r5 - bl OS_ReceiveMessage - cmp r0, #0x0 - bne _020C19C4 -_020C19DC: - ldr r0, [r4, #0x28] - cmp r0, #0x0 - beq _020C19EC - bl FUN_020C0300 -_020C19EC: - ldr r0, [r4, #0x20] - cmp r0, #0x0 - beq _020C19FC - bl FUN_020C0340 -_020C19FC: - cmp r7, #0x0 - beq _020C1A0C - ldr r0, [r4, #0x2c] - bl FUN_020C029C -_020C1A0C: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _020C1A2C - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_SetOutputSelector -_020C1A2C: - mov r0, #0x0 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1A3C: .word UNK_021D27CC -_020C1A40: .word UNK_021D27AC - - arm_func_start FUN_020C1A44 -FUN_020C1A44: ; 0x020C1A44 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r10, r3 - str r0, [sp, #0x18] - str r2, [sp, #0x20] - mov r2, #0x0 - str r1, [sp, #0x1c] - mov r0, r1 - mov r1, r10 - ldr r9, [sp, #0x6c] - ldr r8, [sp, #0x74] - str r2, [sp, #0x2c] - mvn r6, #0x0 - ldr r4, _020C1D90 ; =UNK_021D27CC - bl DC_FlushRange - ldr r0, [sp, #0x20] - mov r1, r10 - bl DC_FlushRange - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x70] - cmp r0, #0x1 - moveq r7, #0x1 - ldr r0, _020C1D94 ; =0x00FFB0FF - movne r7, #0x0 - bl _s32_div_f - ldr r1, [sp, #0x84] - mov r11, r0 - cmp r1, #0x0 - beq _020C1B00 - add r1, r11, #0x10 - bic r11, r1, #0x1f - mov r2, r11, asr #0x5 - mov r0, r10 - cmp r7, #0x0 - ldr r1, [sp, #0x80] - moveq r0, r10, lsr #0x1 - str r2, [sp, #0x34] - bl _u32_div_f - ldr r1, [sp, #0x34] - mov r5, #0x20 - mul r0, r1, r0 - str r0, [sp, #0x30] - cmp r7, #0x0 - ldr r0, [sp, #0x34] - moveq r5, r5, lsr #0x1 - mul r0, r5, r0 - mov r5, r0 -_020C1B00: - cmp r7, #0x0 - movne r0, #0x0 - strne r0, [sp, #0x28] - moveq r0, #0x1 - streq r0, [sp, #0x28] - cmp r7, #0x0 - movne r0, #0x1 - strne r0, [sp, #0x24] - moveq r0, #0x0 - streq r0, [sp, #0x24] - ldr r0, [sp, #0x18] - cmp r0, #0x2 - movne r0, #0xa - strne r0, [sp, #0x2c] - ldr r0, [sp, #0x84] - cmp r0, #0x0 - beq _020C1B58 - bl FUN_020C02BC - movs r6, r0 - addmi sp, sp, #0x3c - movmi r0, #0x0 - ldmmiia sp!, {r4-r11,pc} -_020C1B58: - mov r0, #0x3 - bl FUN_020C031C - cmp r0, #0x0 - bne _020C1B84 - cmp r6, #0x0 - blt _020C1B78 - mov r0, r6 - bl FUN_020C029C -_020C1B78: - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1B84: - mov r0, #0xa - bl FUN_020C0370 - cmp r0, #0x0 - bne _020C1BB8 - cmp r6, #0x0 - blt _020C1BA4 - mov r0, r6 - bl FUN_020C029C -_020C1BA4: - mov r0, #0x3 - bl FUN_020C0300 - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1BB8: - mov r0, #0x0 - mov r7, r10, lsr #0x2 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x78] - str r11, [sp, #0x10] - str r1, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x1c] - moveq r3, #0x2 - mov r0, #0x1 - bl SND_SetupChannelPcm - ldr r1, [sp, #0x64] - str r9, [sp, #0x0] - str r1, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x1c] - mov r0, #0x0 - mov r3, r7 - bl SND_SetupCapture - mov r0, #0x0 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r2, [sp, #0x7c] - str r11, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x20] - moveq r3, #0x2 - mov r0, #0x3 - bl SND_SetupChannelPcm - ldr r2, [sp, #0x64] - str r9, [sp, #0x0] - str r2, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x20] - mov r3, r7 - mov r0, #0x1 - bl SND_SetupCapture - cmp r6, #0x0 - blt _020C1CA8 - ldr r2, [sp, #0x30] - ldr r3, _020C1D98 ; =FUN_020C177C - mov r1, r2 - mov r0, r6 - add r1, r1, r5 - str r4, [sp, #0x0] - bl SND_SetupAlarm -_020C1CA8: - ldr r0, [sp, #0x18] - cmp r0, #0x1 - bne _020C1CC8 - mov r0, #0x1 - mov r2, r0 - mov r3, r0 - mov r1, #0x2 - bl SND_SetOutputSelector -_020C1CC8: - cmp r6, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r6 - ldr r0, [sp, #0x2c] - movlt r2, #0x0 - mov r1, #0x3 - mov r3, #0x0 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r4, #0x0] - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x80] - str r0, [r4, #0x4] - mov r0, #0xa - str r0, [r4, #0x20] - ldr r0, [sp, #0x2c] - str r0, [r4, #0x24] - mov r0, #0x3 - str r0, [r4, #0x28] - ldr r0, [sp, #0x60] - str r6, [r4, #0x2c] - str r0, [r4, #0x8] - ldr r0, [sp, #0x1c] - str r0, [r4, #0xc] - ldr r0, [sp, #0x20] - str r0, [r4, #0x10] - mov r0, r10 - str r10, [r4, #0x14] - bl _u32_div_f - str r0, [r4, #0x18] - mov r1, #0x0 - str r1, [r4, #0x1c] - ldr r0, [sp, #0x80] - ldr r1, [sp, #0x84] - str r0, [r4, #0x30] - ldr r0, [sp, #0x88] - str r1, [r4, #0x34] - str r0, [r4, #0x38] - add r0, r4, #0x3c - str r8, [r4, #0x50] - bl FUN_020C3E6C - add r0, r4, #0x3c - mov r1, r8, lsl #0x8 - mov r2, #0x1 - bl FUN_020C3E40 - mov r0, #0x0 - str r0, [r4, #0x4c] - mov r0, #0x1 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1D90: .word UNK_021D27CC -_020C1D94: .word 0x00FFB0FF -_020C1D98: .word FUN_020C177C - - arm_func_start FUN_020C1D9C -FUN_020C1D9C: ; 0x020C1D9C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020C1E34 ; =UNK_021D27CC - ldr r0, [r5, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r4, r5, #0x3c - mov r0, r4 - bl FUN_020C3DF4 - ldr r0, [r5, #0x4c] - cmp r0, #0x0 - beq _020C1DFC - mov r0, r4 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C1DFC - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020C1DFC: - mov r0, r4 - bl FUN_020C3E0C - ldr r1, [r5, #0x50] - mov r4, r0, asr #0x8 - cmp r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x24] - mov r1, r4 - mov r2, #0x0 - bl SND_SetChannelVolume - str r4, [r5, #0x50] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1E34: .word UNK_021D27CC - - arm_func_start FUN_020C1E38 -FUN_020C1E38: ; 0x020C1E38 - ldr r1, _020C1E50 ; =UNK_021D27A4 - mov r2, #0x0 - ldr r0, _020C1E54 ; =UNK_021D27CC - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bx lr - .balign 4 -_020C1E50: .word UNK_021D27A4 -_020C1E54: .word UNK_021D27CC - - arm_func_start FUN_020C1E58 -FUN_020C1E58: ; 0x020C1E58 - ldr r0, _020C1E64 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C1E64: .word UNK_021D27CC - - arm_func_start FUN_020C1E68 -FUN_020C1E68: ; 0x020C1E68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C1EA0 ; =UNK_021D27CC - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x4] - cmp r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1EA0: .word UNK_021D27CC - - arm_func_start FUN_020C1EA4 -FUN_020C1EA4: ; 0x020C1EA4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1E68 - ldr r0, _020C1F50 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r2, #0x0 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - str r6, [sp, #0x10] - mov r1, #0x7f - str r1, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, [sp, #0x40] - str r1, [sp, #0x1c] - ldr r1, [sp, #0x44] - str r2, [sp, #0x20] - ldr r12, [sp, #0x48] - str r1, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r12, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1F50: .word UNK_021D27CC - - arm_func_start FUN_020C1F54 -FUN_020C1F54: ; 0x020C1F54 - stmdb sp!, {r4,lr} - ldr r4, _020C1FA0 ; =UNK_021D27CC - mov r2, r0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x4] - cmp r0, #0x0 - ldmneia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C1F88 - bl FUN_020C1950 - ldmia sp!, {r4,pc} -_020C1F88: - add r0, r4, #0x3c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, #0x1 - str r0, [r4, #0x4c] - ldmia sp!, {r4,pc} - .balign 4 -_020C1FA0: .word UNK_021D27CC - - arm_func_start FUN_020C1FA4 -FUN_020C1FA4: ; 0x020C1FA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, _020C1FEC ; =UNK_021D27CC - mov r12, r0 - ldr r0, [r3, #0x0] - mov r2, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r3, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - add r0, r3, #0x3c - mov r1, r12, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1FEC: .word UNK_021D27CC - - arm_func_start FUN_020C1FF0 -FUN_020C1FF0: ; 0x020C1FF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r0, #0x0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1F54 - ldr r0, _020C2098 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - ldr r1, [sp, #0x40] - str r6, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x18] - mov r1, #0x7f - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r0, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2098: .word UNK_021D27CC - - arm_func_start FUN_020C209C -FUN_020C209C: ; 0x020C209C - mov r0, #0x0 - str r0, [r2, #0x88] - bx lr - - arm_func_start FUN_020C20A8 -FUN_020C20A8: ; 0x020C20A8 - mov r0, #0x0 - str r0, [r2, #0x84] - bx lr - - arm_func_start FUN_020C20B4 -FUN_020C20B4: ; 0x020C20B4 - mov r0, #0x0 - str r0, [r2, #0x8c] - bx lr - - arm_func_start FUN_020C20C0 -FUN_020C20C0: ; 0x020C20C0 - ldr r2, _020C20D8 ; =UNK_021D28C0 - ldr r2, [r2, #0x0] - ldr r2, [r2, #0x84] - add r0, r2, r0, lsl #0x4 - str r1, [r0, #0x14] - bx lr - .balign 4 -_020C20D8: .word UNK_021D28C0 - - arm_func_start FUN_020C20DC -FUN_020C20DC: - ldr r1, _020C2100 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x14] - bx lr - .balign 4 -_020C2100: .word UNK_021D28C0 - - arm_func_start FUN_020C2104 -FUN_020C2104: - stmdb sp!, {r4-r6,lr} - ldr r4, _020C2178 ; =UNK_021D28C0 - mov r5, r2 - ldr r4, [r4, #0x0] - mov r6, r1 - ldr r2, [r4, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - mvncs r0, #0x0 - ldmcsia sp!, {r4-r6,pc} - add r1, r2, #0xc - add r1, r1, r0, lsl #0x4 - ldr r0, [r1, #0x4] - ldr r1, [r1, #0x0] - sub r0, r0, r3 - cmp r5, r0 - movhi r5, r0 - add r0, r4, #0x34 - add r1, r1, r3 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - mov r2, r5 - add r0, r4, #0x34 - bl FS_ReadFile - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2178: .word UNK_021D28C0 - - arm_func_start FUN_020C217C -FUN_020C217C: ; 0x020C217C - ldr r1, _020C21A0 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x10] - bx lr - .balign 4 -_020C21A0: .word UNK_021D28C0 - - arm_func_start FUN_020C21A4 -FUN_020C21A4: ; 0x020C21A4 - ldr r1, _020C2204 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x1c] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2204: .word UNK_021D28C0 - - arm_func_start FUN_020C2208 -FUN_020C2208: ; 0x020C2208 - ldr r1, _020C2268 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x18] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2268: .word UNK_021D28C0 - - arm_func_start FUN_020C226C -FUN_020C226C: - ldr r1, _020C22CC ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x14] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C22CC: .word UNK_021D28C0 - - arm_func_start FUN_020C22D0 -FUN_020C22D0: ; 0x020C22D0 - ldr r1, _020C2330 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x10] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2330: .word UNK_021D28C0 - - arm_func_start FUN_020C2334 -FUN_020C2334: - ldr r1, _020C2394 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0xc] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2394: .word UNK_021D28C0 - - arm_func_start FUN_020C2398 -FUN_020C2398: - ldr r1, _020C23F8 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x8] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C23F8: .word UNK_021D28C0 - - arm_func_start FUN_020C23FC -FUN_020C23FC: ; 0x020C23FC - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C2398 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r0, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C241C -FUN_020C241C: ; 0x020C241C - ldr r0, _020C2428 ; =UNK_021D28C0 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C2428: .word UNK_021D28C0 - - arm_func_start FUN_020C242C -FUN_020C242C: ; 0x020C242C - ldr r1, _020C2440 ; =UNK_021D28C0 - ldr r2, [r1, #0x0] - str r0, [r1, #0x0] - mov r0, r2 - bx lr - .balign 4 -_020C2440: .word UNK_021D28C0 - - arm_func_start FUN_020C2444 -FUN_020C2444: ; 0x020C2444 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - mov r1, r5 - mov r2, #0x30 - bl MIi_CpuCopy32 - ldr r0, [r5, #0x18] - mov r12, #0x0 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x8c] - ldr r0, [r5, #0x20] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x84] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x88] - ldr r2, [r5, #0x84] - ldr r0, [r2, #0x8] - cmp r0, #0x0 - bls _020C24F0 - mov r3, r12 - mov r1, r12 -_020C24BC: - add r2, r2, #0xc - ldr r0, [r2, r3] - add r2, r2, r3 - cmp r0, #0x0 - moveq r0, r1 - addne r0, r4, r0 - str r0, [r2, #0x8] - ldr r2, [r5, #0x84] - add r12, r12, #0x1 - ldr r0, [r2, #0x8] - add r3, r3, #0x10 - cmp r12, r0 - blo _020C24BC -_020C24F0: - mov r1, #0x0 - ldr r0, _020C2508 ; =UNK_021D28C0 - str r1, [r5, #0x30] - str r5, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C2508: .word UNK_021D28C0 - - arm_func_start FUN_020C250C -FUN_020C250C: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - mov r5, r1 - mov r1, #0x0 - mov r4, r2 - mov r2, r1 - add r0, r6, #0x34 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - add r0, r6, #0x34 - mov r2, #0x30 - bl FS_ReadFile - cmp r0, #0x30 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r5, #0x0 - beq _020C26E0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x1c] - ldr r2, _020C26EC ; =FUN_020C20B4 - mov r0, r5 - mov r3, r6 - bl FUN_020C2958 - str r0, [r6, #0x8c] - ldr r0, [r6, #0x8c] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x18] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8c] - ldr r2, [r6, #0x1c] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x1c] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x24] - ldr r2, _020C26F0 ; =FUN_020C20A8 - mov r0, r5 - mov r3, r6 - bl FUN_020C2958 - str r0, [r6, #0x84] - ldr r0, [r6, #0x84] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x20] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x84] - ldr r2, [r6, #0x24] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x24] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r4, #0x0 - beq _020C26E0 - ldr r1, [r6, #0x14] - cmp r1, #0x0 - beq _020C26E0 - mov r4, #0x0 - ldr r2, _020C26F4 ; =FUN_020C209C - mov r0, r5 - mov r3, r6 - str r4, [sp, #0x0] - bl FUN_020C2958 - str r0, [r6, #0x88] - ldr r0, [r6, #0x88] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x10] - add r0, r6, #0x34 - mov r2, r4 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x88] - ldr r2, [r6, #0x14] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x14] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, r4 - ldmneia sp!, {r4-r6,pc} -_020C26E0: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C26EC: .word FUN_020C20B4 -_020C26F0: .word FUN_020C20A8 -_020C26F4: .word FUN_020C209C - - arm_func_start FUN_020C26F8 -FUN_020C26F8: ; 0x020C26F8 - ; r0: &sSoundDataBuffer - ; r1: char* filename - ; r2: (&sSoundDataBuffer)->unk_0090 - ; r3: 0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r12, #0x0 - str r12, [r6, #0x8c] - str r12, [r6, #0x84] - add r0, r6, #0x7c - mov r5, r2 - mov r4, r3 - str r12, [r6, #0x88] - bl FS_ConvertPathToFileID - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r6, #0x34 - bl FS_InitFile - add r1, r6, #0x7c - add r0, r6, #0x34 - ldmia r1, {r1-r2} - bl FS_OpenFileFast - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r3, #0x1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r3, [r6, #0x30] - bl FUN_020C250C - cmp r0, #0x0 - ldrne r0, _020C2770 ; =UNK_021D28C0 - strne r6, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2770: .word UNK_021D28C0 - - arm_func_start FUN_020C2774 -FUN_020C2774: ; 0x020C2774 - stmdb sp!, {r4,lr} - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2794 -FUN_020C2794: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x0] - mov r1, #0x14 - mov r2, #0x4 - bl FUN_020AE638 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - bl FUN_020C2818 - mov r1, r4 - add r0, r5, #0x4 - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C27DC -FUN_020C27DC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x4 - mov r1, #0xc - bl FUN_020ADC74 - mov r0, r5 - str r4, [r5, #0x0] - bl FUN_020C2794 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2818 -FUN_020C2818: ; 0x020C2818 - ldr ip, _020C2824 ; =FUN_020ADC74 - mov r1, #0x0 - bx r12 - .balign 4 -_020C2824: .word FUN_020ADC74 - - arm_func_start FUN_020C2828 -FUN_020C2828: ; 0x020C2828 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r7, #0x0 - movs r9, r1 - mov r10, r0 - mov r6, r7 - bne _020C2850 - bl FUN_020C29C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020C2850: - ldrh r0, [r10, #0xc] - cmp r9, r0 - bge _020C28D8 - mov r11, r7 - add r5, r10, #0x4 - mov r4, #0x1 -_020C2868: - mov r0, r5 - mov r1, r11 - bl FUN_020ADA84 - mov r1, r7 - mov r8, r0 - bl FUN_020ADA84 - movs r7, r0 - beq _020C28C0 -_020C2888: - ldr r12, [r7, #0xc] - cmp r12, #0x0 - beq _020C28AC - ldr r1, [r7, #0x8] - ldr r2, [r7, #0x10] - ldr r3, [r7, #0x14] - add r0, r7, #0x20 - blx r12 - mov r6, r4 -_020C28AC: - mov r0, r8 - mov r1, r7 - bl FUN_020ADA84 - movs r7, r0 - bne _020C2888 -_020C28C0: - mov r0, r5 - mov r1, r8 - bl FUN_020ADAB0 - ldrh r0, [r10, #0xc] - cmp r9, r0 - blt _020C2868 -_020C28D8: - ldr r0, [r10, #0x0] - mov r1, r9 - bl FUN_020AE554 - cmp r6, #0x0 - beq _020C28F0 - bl FUN_020C2774 -_020C28F0: - ldrh r1, [r10, #0xc] - ldr r0, [r10, #0x0] - bl FUN_020AE5B0 - mov r0, r10 - bl FUN_020C2794 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C290C -FUN_020C290C: ; 0x020C290C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrh r1, [r4, #0xc] - ldr r0, [r4, #0x0] - bl FUN_020AE5B0 - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020C2794 - cmp r0, #0x0 - ldrneh r0, [r4, #0xc] - subne r0, r0, #0x1 - ldmneia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_020AE554 - mvn r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2958 -FUN_020C2958: ; 0x020C2958 - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r8, r0 - add r0, r7, #0x1f - bic r1, r0, #0x1f - mov r6, r2 - ldr r0, [r8, #0x0] - add r1, r1, #0x20 - mov r2, #0x20 - mov r5, r3 - bl FUN_020AE638 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - add r0, r8, #0x4 - mov r1, #0x0 - bl FUN_020ADA84 - str r7, [r4, #0x8] - str r6, [r4, #0xc] - ldr r2, [sp, #0x18] - str r5, [r4, #0x10] - mov r1, r4 - str r2, [r4, #0x14] - bl FUN_020ADBE8 - add r0, r4, #0x20 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C29C0 -FUN_020C29C0: - stmdb sp!, {r4-r10,lr} - mov r8, r0 - mov r5, #0x0 - mov r1, r5 - add r0, r8, #0x4 - bl FUN_020ADA84 - movs r7, r0 - beq _020C2A58 - add r9, r8, #0x4 - mov r10, #0x1 - mov r4, r5 -_020C29EC: - mov r0, r7 - mov r1, r4 - bl FUN_020ADA84 - movs r6, r0 - beq _020C2A38 -_020C2A00: - ldr r12, [r6, #0xc] - cmp r12, #0x0 - beq _020C2A24 - ldr r1, [r6, #0x8] - ldr r2, [r6, #0x10] - ldr r3, [r6, #0x14] - add r0, r6, #0x20 - blx r12 - mov r5, r10 -_020C2A24: - mov r0, r7 - mov r1, r6 - bl FUN_020ADA84 - movs r6, r0 - bne _020C2A00 -_020C2A38: - mov r0, r9 - mov r1, r7 - bl FUN_020ADAB0 - mov r0, r9 - mov r1, r4 - bl FUN_020ADA84 - movs r7, r0 - bne _020C29EC -_020C2A58: - ldr r0, [r8, #0x0] - mov r1, #0x3 - bl FUN_020AE600 - cmp r5, #0x0 - beq _020C2A70 - bl FUN_020C2774 -_020C2A70: - mov r0, r8 - bl FUN_020C2794 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2A7C -FUN_020C2A7C: ; 0x020C2A7C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020C29C0 - ldr r0, [r4, #0x0] - bl thunk_FUN_020adc8c_2 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2A94 -FUN_020C2A94: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - add r2, r0, #0x3 - add r0, r0, r1 - bic r5, r2, #0x3 - cmp r5, r0 - addhi sp, sp, #0x4 - movhi r0, #0x0 - ldmhiia sp!, {r4-r5,pc} - sub r1, r0, r5 - cmp r1, #0x10 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - add r0, r5, #0x10 - sub r1, r1, #0x10 - mov r2, #0x0 - bl FUN_020AE684 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - mov r1, r4 - bl FUN_020C27DC - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, r5 - ldmneia sp!, {r4-r5,pc} - mov r0, r4 - bl thunk_FUN_020adc8c_2 - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2B1C -FUN_020C2B1C: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x20 - mov r8, r0 - add r0, sp, #0x8 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x40] - bl SND_GetFirstInstDataPos - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x0] - str r0, [sp, #0x4] - cmp r7, #0x0 - add r2, sp, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - add r1, sp, #0x10 - mov r0, r7 - bl SND_GetNextInstData - cmp r0, #0x0 - beq _020C2BD4 - add r10, sp, #0x10 - add r9, sp, #0x0 -_020C2B80: - ldrb r0, [sp, #0x10] - cmp r0, #0x1 - bne _020C2BBC - ldrh r0, [sp, #0x14] - cmp r6, r0 - bne _020C2BBC - ldrh r1, [sp, #0x12] - mov r0, r8 - mov r2, r5 - mov r3, r4 - bl FUN_020C2BE0 - cmp r0, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} -_020C2BBC: - mov r0, r7 - mov r1, r10 - mov r2, r9 - bl SND_GetNextInstData - cmp r0, #0x0 - bne _020C2B80 -_020C2BD4: - mov r0, #0x1 - add sp, sp, #0x20 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2BE0 -FUN_020C2BE0: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SND_GetWaveDataAddress - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r9,pc} - mov r0, r7 - bl SND_GetWaveDataCount - ldr r1, [r7, #0x38] - sub r0, r0, #0x1 - add r1, r1, r6 - add r1, r7, r1, lsl #0x2 - cmp r6, r0 - ldrcc r0, [r1, #0x40] - ldr r8, [r1, #0x3c] - ldrcs r0, [r7, #0x8] - cmp r4, #0x0 - sub r9, r0, r8 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - ldr r2, _020C2CBC ; =FUN_020C2CC0 - mov r0, r4 - mov r3, r7 - add r1, r9, #0x20 - str r6, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r5 - mov r1, r4 - mov r2, r9 - mov r3, r8 - bl FUN_020C2104 - cmp r9, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r4 - mov r1, r9 - bl DC_StoreRange - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl SND_SetWaveDataAddress - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2CBC: .word FUN_020C2CC0 - - arm_func_start FUN_020C2CC0 -FUN_020C2CC0: ; 0x020C2CC0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r2 - mov r7, r0 - mov r4, r3 - mov r6, r1 - mov r0, r5 - mov r1, r4 - bl SND_GetWaveDataAddress - cmp r7, r0 - bne _020C2CFC - mov r0, r5 - mov r1, r4 - mov r2, #0x0 - bl SND_SetWaveDataAddress -_020C2CFC: - mov r0, r7 - add r1, r7, r6 - bl SND_InvalidateWaveData - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2D10 -FUN_020C2D10: ; 0x020C2D10 - stmdb sp!, {r4,lr} - mov r1, r2 - mov r4, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r4 - bl SND_DestroyWaveArc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2D30 -FUN_020C2D30: ; 0x020C2D30 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateWaveData - mov r0, r5 - bl SND_DestroyWaveArc - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2D68 -FUN_020C2D68: ; 0x020C2D68 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateBankData - mov r0, r5 - bl SND_DestroyBank - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DA0 -FUN_020C2DA0: ; 0x020C2DA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateSeqData - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DD0 -FUN_020C2DD0: ; 0x020C2DD0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - movs r5, r1 - mov r7, r0 - mov r6, r2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r5 - bl FUN_020C242C - mov r5, r0 - mov r0, r6 - bl FUN_020C20DC - cmp r7, r0 - bne _020C2E1C - mov r0, r6 - mov r1, #0x0 - bl FUN_020C20C0 -_020C2E1C: - mov r0, r5 - bl FUN_020C242C - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2E34 -FUN_020C2E34: ; 0x020C2E34 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, r1 - mov r7, r2 - bl FUN_020C20DC - movs r6, r0 - bne _020C2F40 - ldr r1, _020C2F4C ; =UNK_021D28C4 - mov r0, r9 - mov r2, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - cmp r0, #0x3c - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r0, _020C2F4C ; =UNK_021D28C4 - cmp r8, #0x0 - ldr r0, [r0, #0x38] - addeq sp, sp, #0x4 - mov r4, r0, lsl #0x2 - mov r0, r4, lsl #0x1 - add r5, r0, #0x3c - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - cmp r7, #0x0 - moveq r3, #0x0 - beq _020C2EB0 - bl FUN_020C241C - mov r3, r0 -_020C2EB0: - ldr r2, _020C2F50 ; =FUN_020C2D10 - mov r0, r8 - add r1, r5, #0x20 - str r9, [sp, #0x0] - bl FUN_020C2958 - movs r6, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r9 - mov r1, r6 - add r2, r4, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - add r1, r4, #0x3c - cmp r0, r1 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r1, [r6, #0x38] - add r0, r6, #0x3c - mov r2, r4 - add r1, r0, r1, lsl #0x2 - bl MI_CpuCopy8 - mov r2, r4 - add r0, r6, #0x3c - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - bl DC_StoreRange - cmp r7, #0x0 - beq _020C2F40 - mov r0, r9 - mov r1, r6 - bl FUN_020C20C0 -_020C2F40: - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2F4C: .word UNK_021D28C4 -_020C2F50: .word FUN_020C2D10 - - arm_func_start FUN_020C2F54 -FUN_020C2F54: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C2FBC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C2F88 - bl FUN_020C241C - mov r2, r0 -_020C2F88: - ldr r1, _020C2FC8 ; =FUN_020C2D30 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C2FBC - cmp r4, #0x0 - beq _020C2FBC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C2FBC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2FC8: .word FUN_020C2D30 - - arm_func_start FUN_020C2FCC -FUN_020C2FCC: ; 0x020C2FCC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3034 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3000 - bl FUN_020C241C - mov r2, r0 -_020C3000: - ldr r1, _020C3040 ; =FUN_020C2D68 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3034 - cmp r4, #0x0 - beq _020C3034 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3034: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3040: .word FUN_020C2D68 - - arm_func_start FUN_020C3044 -FUN_020C3044: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C30AC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3078 - bl FUN_020C241C - mov r2, r0 -_020C3078: - ldr r1, _020C30B8 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C30AC - cmp r4, #0x0 - beq _020C30AC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C30AC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C30B8: .word FUN_020C2DA0 - - arm_func_start FUN_020C30BC -FUN_020C30BC: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3124 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C30F0 - bl FUN_020C241C - mov r2, r0 -_020C30F0: - ldr r1, _020C3130 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3124 - cmp r4, #0x0 - beq _020C3124 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3124: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3130: .word FUN_020C2DA0 - - arm_func_start FUN_020C3134 -FUN_020C3134: ; 0x020C3134 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, r3 - bl FUN_020C217C - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldr r0, [sp, #0x20] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r2, r7 - mov r3, r6 - add r1, r5, #0x20 - str r4, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r4 - mov r2, r5 - mov r3, #0x0 - bl FUN_020C2104 - cmp r5, r0 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r8,pc} - mov r0, r4 - mov r1, r5 - bl DC_StoreRange - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C31D4 -FUN_020C31D4: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C226C - cmp r0, #0x0 - moveq r0, #0x5 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x4 - beq _020C324C - ldrb r1, [r0, #0x3] - ands r1, r1, #0x1 - beq _020C3224 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2E34 - b _020C323C -_020C3224: - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2F54 -_020C323C: - cmp r0, #0x0 - bne _020C325C - mov r0, #0x9 - ldmia sp!, {r4-r6,pc} -_020C324C: - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x8 - bl FUN_020C20DC -_020C325C: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3270 -FUN_020C3270: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r1 - mov r9, r2 - mov r11, r3 - bl FUN_020C22D0 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x4 - ldmeqia sp!, {r4-r11,pc} - ands r0, r10, #0x2 - beq _020C32C4 - ldr r0, [r8, #0x0] - mov r1, r9 - mov r2, r11 - bl FUN_020C2FCC - movs r7, r0 - bne _020C32D0 - add sp, sp, #0xc - mov r0, #0x8 - ldmia sp!, {r4-r11,pc} -_020C32C4: - ldr r0, [r8, #0x0] - bl FUN_020C20DC - mov r7, r0 -_020C32D0: - and r5, r10, #0x4 - mov r6, #0x0 -_020C32D8: - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - ldr r1, _020C33B4 ; =0x0000FFFF - cmp r0, r1 - beq _020C3390 - bl FUN_020C226C - movs r4, r0 - addeq sp, sp, #0xc - moveq r0, #0x5 - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x4 - str r0, [sp, #0x0] - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - mov r1, r10 - mov r2, r9 - mov r3, r11 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} - ldrb r0, [r4, #0x3] - ands r0, r0, #0x1 - beq _020C3370 - cmp r5, #0x0 - beq _020C3370 - str r9, [sp, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - mov r3, r1, lsl #0x8 - mov r1, r7 - mov r2, r6 - mov r3, r3, lsr #0x8 - bl FUN_020C2B1C - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x9 - ldmeqia sp!, {r4-r11,pc} -_020C3370: - cmp r7, #0x0 - beq _020C3390 - ldr r2, [sp, #0x4] - cmp r2, #0x0 - beq _020C3390 - mov r0, r7 - mov r1, r6 - bl SND_AssignWaveArc -_020C3390: - add r6, r6, #0x1 - cmp r6, #0x4 - blt _020C32D8 - ldr r0, [sp, #0x30] - cmp r0, #0x0 - strne r7, [r0, #0x0] - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C33B4: .word 0x0000FFFF - - arm_func_start FUN_020C33B8 -FUN_020C33B8: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2334 - cmp r0, #0x0 - moveq r0, #0x3 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x8 - beq _020C3400 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r2, r4 - bl FUN_020C3044 - cmp r0, #0x0 - bne _020C3408 - mov r0, #0x7 - ldmia sp!, {r4-r6,pc} -_020C3400: - ldr r0, [r0, #0x0] - bl FUN_020C20DC -_020C3408: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C341C -FUN_020C341C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020C2398 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x2 - ldmeqia sp!, {r4-r7,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x4] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl FUN_020C3270 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,pc} - ands r0, r7, #0x1 - beq _020C3498 - ldr r0, [r4, #0x0] - mov r1, r6 - mov r2, r5 - bl FUN_020C30BC - cmp r0, #0x0 - bne _020C34A0 - add sp, sp, #0x4 - mov r0, #0x6 - ldmia sp!, {r4-r7,pc} -_020C3498: - ldr r0, [r4, #0x0] - bl FUN_020C20DC -_020C34A0: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C34B8 -FUN_020C34B8: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r9, r1 - bl FUN_020C21A4 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ldr r0, [r8, #0x0] - mov r7, #0x0 - cmp r0, #0x0 - bls _020C35D4 - add r6, r8, #0x4 - str r7, [sp, #0x4] - mov r11, r7 - mov r10, r7 - mov r5, r7 - mov r4, #0x1 -_020C3500: - ldrb r0, [r6, #0x0] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020C35C0 -_020C3510: - b _020C3520 -_020C3514: - b _020C3570 -_020C3518: - b _020C3598 -_020C351C: - b _020C3548 -_020C3520: - str r5, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C341C - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3548: - str r10, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C33B8 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3570: - str r11, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3598: - ldr r0, [sp, #0x4] - mov r2, r9 - str r0, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r3, r4 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} -_020C35C0: - ldr r0, [r8, #0x0] - add r7, r7, #0x1 - cmp r7, r0 - add r6, r6, #0x8 - blo _020C3500 -_020C35D4: - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C35E0 -FUN_020C35E0: ; 0x020C35E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C360C -FUN_020C360C: ; 0x020C360C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C31D4 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3640 -FUN_020C3640: ; 0x020C3640 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3674 -FUN_020C3674: ; 0x020C3674 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36A8 -FUN_020C36A8: ; 0x020C36A8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C34B8 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36C8 -FUN_020C36C8: ; 0x020C36C8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r2 - mov r2, r3 - ldr r6, [sp, #0x20] - mov r4, r0 - mov r8, r1 - bl FUN_020C0AF4 - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r5 - bl FUN_020C09B0 - add r12, sp, #0x4 - mov r2, r0 - mov r0, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C373C - mov r0, r5 - bl thunk_FUN_020c077c - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C373C: - ldr r12, [sp, #0x24] - ldr r2, [r6, #0x0] - ldr r1, [r12, #0x18] - ldr r3, [sp, #0x4] - mov r0, r5 - add r1, r12, r1 - bl FUN_020C0A90 - ldrb r1, [r6, #0x6] - mov r0, r4 - bl FUN_020C0F30 - ldrb r1, [r6, #0x7] - mov r0, r4 - bl FUN_020C0ECC - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r0, r4 - bl FUN_020C0E38 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C378C -FUN_020C378C: ; 0x020C378C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r8, r2 - mov r2, r3 - ldr r5, [sp, #0x28] - mov r6, r0 - mov r7, r1 - bl FUN_020C0AF4 - movs r4, r0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r7 - mov r1, r4 - bl FUN_020C09B0 - mov r7, r0 - add r12, sp, #0x8 - mov r0, r8 - mov r2, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C3804 - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C3804: - ldr r0, [sp, #0x2c] - add r12, sp, #0x4 - mov r2, r7 - mov r1, #0x1 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - beq _020C383C - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C383C: - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r2, #0x18] - mov r0, r4 - add r1, r2, r1 - mov r2, #0x0 - bl FUN_020C0A90 - ldrb r1, [r5, #0x6] - mov r0, r6 - bl FUN_020C0F30 - ldrb r1, [r5, #0x7] - mov r0, r6 - bl FUN_020C0ECC - ldr r1, [sp, #0x2c] - mov r0, r6 - bl FUN_020C0E60 - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3888 -FUN_020C3888: ; 0x020C3888 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl FUN_020C2334 - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldr r0, [r0, #0x0] - bl FUN_020C20DC - movs r4, r0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r1, r5 - bl FUN_020C3D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r7 - bl FUN_020C36C8 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3910 -FUN_020C3910: ; 0x020C3910 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r7, r0 - ldr r0, [sp, #0x20] - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - cmp r4, #0x0 - ldrltb r4, [r0, #0x8] - cmp r5, #0x0 - ldrlth r5, [r0, #0x4] - cmp r6, #0x0 - ldrltb r6, [r0, #0x9] - ldr r12, [sp, #0x20] - mov r2, r5 - str r0, [sp, #0x0] - mov r0, r7 - mov r1, r6 - mov r3, r4 - str r12, [sp, #0x4] - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3980 -FUN_020C3980: ; 0x020C3980 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r5 - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C39CC -FUN_020C39CC: ; 0x020C39CC - stmdb sp!, {r4-r8,lr} - mov r6, r0 - bl FUN_020C241C - mov r5, #0x0 - mov r7, r5 -_020C39E0: - mov r0, r5 - bl FUN_020C2208 - movs r4, r0 - beq _020C3A58 - ldrb r1, [r4, #0x0] - mov r0, r5 - bl FUN_020C1160 - ldrh r1, [r4, #0x2] - mov r0, r5 - bl FUN_020C1148 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _020C3A58 - cmp r6, #0x0 - beq _020C3A58 - ldrb r0, [r4, #0x0] - mov r8, r7 - cmp r0, #0x0 - ble _020C3A58 -_020C3A2C: - ldr r2, [r4, #0x4] - mov r0, r5 - mov r1, r6 - bl FUN_020C10B4 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldrb r0, [r4, #0x0] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C3A2C -_020C3A58: - add r5, r5, #0x1 - cmp r5, #0x20 - blt _020C39E0 - mov r0, #0x1 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3A6C -FUN_020C3A6C: ; 0x020C3A6C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _020C3A9C ; =UNK_021D2904 - mov r1, r5 - bl FUN_020ADBE8 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C3A9C: .word UNK_021D2904 - - arm_func_start FUN_020C3AA0 -FUN_020C3AA0: ; 0x020C3AA0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r8 - mov r1, #0x0 - bl FUN_020ADA98 - movs r5, r0 - beq _020C3B04 -_020C3AC8: - mov r0, r8 - mov r1, r5 - bl FUN_020ADA98 - ldr r1, [r5, #0x8] - mov r4, r0 - cmp r1, r7 - bne _020C3AF8 - mov r0, r8 - mov r1, r5 - bl FUN_020ADAB0 - mov r0, r5 - bl FUN_020C3A6C -_020C3AF8: - mov r5, r4 - cmp r4, #0x0 - bne _020C3AC8 -_020C3B04: - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3B10 -FUN_020C3B10: ; 0x020C3B10 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - sub r1, r1, #0x1 - str r1, [r0, #0x120] - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1674 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3B4C -FUN_020C3B4C: ; 0x020C3B4C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x110] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - bl FUN_020C3B10 - ldr r1, [r4, #0x164] - mov r0, r4 - blx r1 - ldr r0, _020C3BA8 ; =UNK_021D2DF0 - mov r1, r4 - bl FUN_020C3AA0 - ldr r0, _020C3BAC ; =UNK_021D2900 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020C3B9C - mov r1, r4 - add r0, r0, #0x4e0 - bl FUN_020C3AA0 -_020C3B9C: - mov r0, r4 - bl FUN_020C3C4C - ldmia sp!, {r4,pc} - .balign 4 -_020C3BA8: .word UNK_021D2DF0 -_020C3BAC: .word UNK_021D2900 - - arm_func_start FUN_020C3BB0 -FUN_020C3BB0: ; 0x020C3BB0 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_LockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _020C3BDC - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_LockMutex -_020C3BDC: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3BF4 - mov r0, r4 - bl FUN_020C1430 -_020C3BF4: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3C10 - ldr r1, [r4, #0x16c] - mov r0, r4 - blx r1 -_020C3C10: - mov r0, r4 - bl FUN_020C3B4C - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_UnlockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_UnlockMutex - ldmia sp!, {r4,pc} - .balign 4 -_020C3C40: .word UNK_021D2DD8 -_020C3C44: .word UNK_021D2900 -_020C3C48: .word 0x000004C8 - - arm_func_start FUN_020C3C4C -FUN_020C3C4C: ; 0x020C3C4C - ldr r2, [r0, #0x14c] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x14c] - ldr r1, [r0, #0x110] - bic r1, r1, #0x1 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x4 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x2 - str r1, [r0, #0x110] - bx lr - - arm_func_start FUN_020C3C88 -FUN_020C3C88: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020C3D94 ; =UNK_021D2DFC - mov r7, #0x0 - ldr r4, _020C3D98 ; =UNK_02103BAC -_020C3C9C: - ldr r1, [r5, #0x110] - mov r0, r1, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3D7C - ldr r0, [r5, #0x114] - cmp r0, #0x0 - bne _020C3CC4 - mov r0, r5 - bl FUN_020C3BB0 - b _020C3D7C -_020C3CC4: - mov r0, r1, lsl #0x1d - movs r0, r0, asr #0x1f - beq _020C3CFC - ldr r0, [r5, #0x118] - cmp r0, #0x0 - beq _020C3CFC - mov r0, r5 - bl FUN_020C1458 - ldr r0, [r5, #0x110] - orr r0, r0, #0x2 - str r0, [r5, #0x110] - ldr r0, [r5, #0x110] - bic r0, r0, #0x4 - str r0, [r5, #0x110] -_020C3CFC: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DF4 - ldr r1, [r5, #0x154] - add r0, r5, #0xe8 - mov r1, r1, lsl #0x1 - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r0, r0, lsl #0x1 - ldrsh r1, [r4, r0] - ldr r0, [r5, #0x158] - add r6, r1, r6 - cmp r6, r0 - beq _020C3D54 - mov r0, r5 - mov r1, r6 - bl FUN_020C13C4 - str r6, [r5, #0x158] -_020C3D54: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1c - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C3D7C - mov r0, r5 - bl FUN_020C3BB0 -_020C3D7C: - add r7, r7, #0x1 - cmp r7, #0x4 - add r5, r5, #0x170 - blt _020C3C9C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3D94: .word UNK_021D2DFC -_020C3D98: .word UNK_02103BAC - - arm_func_start FUN_020C3D9C -FUN_020C3D9C: - cmp r1, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r2, [r0, #0x1c] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - mov r2, #0xc - mul r2, r1, r2 - add r3, r0, #0x20 - ldr r1, [r3, r2] - mvn r0, #0x0 - cmp r1, r0 - add r0, r3, r2 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020C3DDC -FUN_020C3DDC: - ldr r1, [r0, #0x8] - ldr r0, [r0, #0xc] - cmp r1, r0 - movge r0, #0x1 - movlt r0, #0x0 - bx lr - - arm_func_start FUN_020C3DF4 -FUN_020C3DF4: ; 0x020C3DF4 - ldr r2, [r0, #0x8] - ldr r1, [r0, #0xc] - cmp r2, r1 - addlt r1, r2, #0x1 - strlt r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020C3E0C -FUN_020C3E0C: - stmdb sp!, {r4,lr} - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x8] - cmp r2, r1 - ldrge r0, [r0, #0x4] - ldmgeia sp!, {r4,pc} - ldr r4, [r0, #0x0] - ldr r0, [r0, #0x4] - sub r0, r0, r4 - mul r0, r2, r0 - bl _s32_div_f - add r0, r4, r0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C3E40 -FUN_020C3E40: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_020C3E0C - str r0, [r6, #0x0] - str r5, [r6, #0x4] - str r4, [r6, #0xc] - mov r0, #0x0 - str r0, [r6, #0x8] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3E6C -FUN_020C3E6C: ; 0x020C3E6C - mov r2, #0x0 - str r2, [r0, #0x4] - ldr r1, [r0, #0x4] - str r1, [r0, #0x0] - str r2, [r0, #0xc] - ldr r1, [r0, #0xc] - str r1, [r0, #0x8] - bx lr -- cgit v1.2.3 From 5a3e2988978165de66af6ffc05a909d2bb117c5a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 12:59:52 -0400 Subject: Split out UBIQUITOUS:CPS --- arm9/arm9.lcf | 4 + arm9/asm/CPS_network.s | 6410 ++++++++++++++++++++++++++++++++++++++++++ arm9/asm/SSL_ssl.s | 138 +- arm9/asm/libVCT.s | 4 +- arm9/asm/unk_020910EC.s | 6397 +---------------------------------------- arm9/global.inc | 253 +- arm9/modules/04/asm/arm_04.s | 40 +- 7 files changed, 6627 insertions(+), 6619 deletions(-) create mode 100644 arm9/asm/CPS_network.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index d01beea9..6ef2b114 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -431,6 +431,7 @@ SECTIONS { unk_0208AC14.o (.text) custom_allocator.o (.text) unk_020910EC.o (.text) + CPS_network.o (.text) SSL_ssl.o (.text) SSL_md5.o (.text) SSL_sha1.o (.text) @@ -711,6 +712,7 @@ SECTIONS { unk_02089F24.o (.rodata) unk_0208A998.o (.rodata) unk_020910EC.o (.rodata) + CPS_network.o (.rodata) SSL_ssl.o (.rodata) SSL_md5.o (.rodata) SSL_sha1.o (.rodata) @@ -770,6 +772,7 @@ SECTIONS { unk_020893E0.o (.data) unk_0208AC14.o (.data) unk_020910EC.o (.data) + CPS_network.o (.data) SSL_ssl.o (.data) SSL_md5.o (.data) SSL_sha1.o (.data) @@ -855,6 +858,7 @@ SECTIONS { unk_0208AC14.o (.bss) custom_allocator.o (.bss) unk_020910EC.o (.bss) + CPS_network.o (.bss) SSL_ssl.o (.bss) SSL_md5.o (.bss) SSL_sha1.o (.bss) diff --git a/arm9/asm/CPS_network.s b/arm9/asm/CPS_network.s new file mode 100644 index 00000000..898a32a3 --- /dev/null +++ b/arm9/asm/CPS_network.s @@ -0,0 +1,6410 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global helper_threads_priority +helper_threads_priority: ; 0x02106218 + .byte 0x10, 0x00, 0x00, 0x00 + + .global mac_broadcast +mac_broadcast: ; 0x0210621C + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 + + .global UNK_02106224 +UNK_02106224: ; 0x02106224 + .asciz "NintendoDS" + + .balign 4, 0 + .global UNK_02106230 +UNK_02106230: ; 0x02106230 + .byte 0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global wfailed +wfailed: ; 0x021C8EA8 + .space 0x4 + + .global ip_conflict +ip_conflict: ; 0x021C8EAC + .space 0x4 + + .global mymss +mymss: ; 0x021C8EB0 + .space 0x4 + + .global UNK_021C8EB4 +UNK_021C8EB4: ; 0x021C8EB4 + .space 0x4 + + .global ipid +ipid: ; 0x021C8EB8 + .space 0x4 + + .global eport +eport: ; 0x021C8EBC + .space 0x4 + + .global CPSNoIpReason +CPSNoIpReason: ; 0x021C8EC0 + .space 0x4 + + .global mode +mode: ; 0x021C8EC4 + .space 0x4 + + .global CPSiAlloc +CPSiAlloc: ; 0x021C8EC8 + .space 0x4 + + .global dhcp_callback +dhcp_callback: ; 0x021C8ECC + .space 0x4 + + .global CPSNetMask +CPSNetMask: ; 0x021C8ED0 + .space 0x4 + + .global CPSDhcpServerIp +CPSDhcpServerIp: ; 0x021C8ED4 + .space 0x4 + + .global yield_wait +yield_wait: ; 0x021C8ED8 + .space 0x4 + + .global wlan_putpnt +wlan_putpnt: ; 0x021C8EDC + .space 0x4 + + .global CPSGatewayIp +CPSGatewayIp: ; 0x021C8EE0 + .space 0x4 + + .global wlan_getpnt +wlan_getpnt: ; 0x021C8EE4 + .space 0x4 + + .global offered_myip +offered_myip: ; 0x021C8EE8 + .space 0x4 + + .global UNK_021C8EEC +UNK_021C8EEC: ; 0x021C8EEC + .space 0x4 + + .global scavenger_callback +scavenger_callback: ; 0x021C8EF0 + .space 0x4 + + .global CPSiFree +CPSiFree: ; 0x021C8EF4 + .space 0x4 + + .global scavenger_force_exit +scavenger_force_exit: ; 0x021C8EF8 + .space 0x4 + + .global link_is_on +link_is_on: ; 0x021C8EFC + .space 0x4 + + .global lease_time +lease_time: ; 0x021C8F00 + .space 0x4 + + .global CPSMyIp +CPSMyIp: ; 0x021C8F04 + .space 0x4 + + .global receiver_thread +receiver_thread: ; 0x021C8F08 + .space 0x4 + + .global wlan_buf +wlan_buf: ; 0x021C8F0C + .space 0x4 + + .global wlan_buflen +wlan_buflen: ; 0x021C8F10 + .space 0x4 + + .global CPSMyMac +CPSMyMac: ; 0x021C8F14 + .space 0x8 + + .global CPSDnsIp +CPSDnsIp: ; 0x021C8F1C + .space 0x8 + + .global CPSiRand32ctx +CPSiRand32ctx: ; 0x021C8F24 + .space 0x18 + + .global tmpbuf +tmpbuf: ; 0x021C8F3C + .space 0x3C + + .global arpcache +arpcache: ; 0x021C8F78 + .space 0x60 + + .global scavenger_soc +scavenger_soc: ; 0x021C8FD8 + .space 0x64 + + .global tmpsoc +tmpsoc: ; 0x021C903C + .space 0x64 + + .global scavenger_thread +scavenger_thread: ; 0x021C90A0 + .space 0xc0 + + .global tcpip_thread +tcpip_thread: ; 0x021C9160 + .space 0xc0 + + .global scavenger_sndbuf +scavenger_sndbuf: ; 0x021C9220 + .space 0x180 + + .global scavenger_rcvbuf +scavenger_rcvbuf: ; 0x021C93A0 + .space 0x180 + + .global fragtable +fragtable: ; 0x021C9520 + .space 0x1c0 + + .global scavenger_stack +scavenger_stack: ; 0x021C96E0 + .space 0x800 + + .global tcpip_stack +tcpip_stack: ; 0x021C9EE0 + .space 0x800 + + .text + + arm_func_start CPS_Resolve +CPS_Resolve: ; 0x0209AB80 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + ldr r6, _0209ACC0 ; =CPSiRand32ctx + mov r9, #0x0 + ldr r11, [r6, #0x8] + ldr r2, [r6, #0x0] + ldr r1, [r6, #0x4] + umull r5, r4, r11, r2 + mla r4, r11, r1, r4 + ldr r10, [r6, #0xc] + ldr r3, [r6, #0x10] + mla r4, r10, r2, r4 + adds r5, r3, r5 + ldr r1, [r6, #0x14] + umull r8, r7, r11, r5 + adc r4, r1, r4 + mla r7, r11, r4, r7 + mla r7, r10, r5, r7 + mov r2, r9, lsl #0x10 + adds r8, r3, r8 + str r5, [r6, #0x0] + adc r5, r1, r7 + mov r3, r9, lsl #0x10 + orr r2, r2, r4, lsr #0x10 + str r4, [r6, #0x4] + orr r3, r3, r5, lsr #0x10 + add r1, sp, #0x4 + mov r10, r0 + strh r2, [sp, #0x8] + str r8, [r6, #0x0] + str r5, [r6, #0x4] + strh r3, [sp, #0xa] + bl rawip + cmp r0, #0x0 + ldrne r0, [sp, #0x4] + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,lr} + bxne lr + mov r0, #0x1 + ldr r6, _0209ACC4 ; =CPSDnsIp + strb r0, [sp, #0x0] + strb r0, [sp, #0x1] + add r5, sp, #0x8 + mov r4, r9 + mov r11, r9 +_0209AC34: + mov r8, r11 + add r7, sp, #0x0 +_0209AC3C: + ldrb r0, [r7, #0x0] + cmp r0, #0x0 + beq _0209AC80 + mov r0, r8, lsl #0x1 + ldrh r2, [r5, r0] + ldr r1, [r6, r8, lsl #0x2] + mov r0, r10 + bl resolve_sub + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _0209AC74 + mvn r1, #0x0 + cmp r0, r1 + bne _0209AC9C +_0209AC74: + mvn r1, #0x0 + cmp r0, r1 + streqb r4, [r7, #0x0] +_0209AC80: + add r8, r8, #0x1 + cmp r8, #0x2 + add r7, r7, #0x1 + blt _0209AC3C + add r9, r9, #0x1 + cmp r9, #0x3 + blt _0209AC34 +_0209AC9C: + ldr r1, [sp, #0x4] + mvn r0, #0x0 + cmp r1, r0 + moveq r0, #0x0 + streq r0, [sp, #0x4] + ldr r0, [sp, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209ACC0: .word CPSiRand32ctx +_0209ACC4: .word CPSDnsIp + + arm_func_start resolve_sub +resolve_sub: ; 0x0209ACC8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + movs r5, r1 + mov r6, r0 + mov r4, r2 + addeq sp, sp, #0x8 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl CPS_SocUse + bl CPS_SocDatagramMode + mov r2, r5 + mov r0, #0x0 + mov r1, #0x35 + bl CPS_SocPingMode + mov r0, r6 + mov r2, r4 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r1, #0x1 + bl resolve_common + mov r4, r0 + bl CPS_SocRelease + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start rawip +rawip: + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r6, #0x0 + mov r8, r0 + mov r7, r1 + mov r5, r6 + add r4, sp, #0x0 +_0209AD50: + mov r0, r8 + mov r1, r4 + mov r6, r6, lsl #0x8 + bl strtol10 + ldr r2, [sp, #0x0] + cmp r8, r2 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r8, r2 + cmp r0, #0xff + bhi _0209ADB0 + cmp r5, #0x3 + beq _0209AD9C + ldrb r1, [r2, #0x0] + add r8, r2, #0x1 + cmp r1, #0x2e + bne _0209ADB0 +_0209AD9C: + cmp r5, #0x3 + bne _0209ADC0 + ldrb r1, [r8, #0x0] + cmp r1, #0x0 + beq _0209ADC0 +_0209ADB0: + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_0209ADC0: + add r5, r5, #0x1 + cmp r5, #0x4 + orr r6, r6, r0 + blt _0209AD50 + str r6, [r7, #0x0] + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start strtol10 +strtol10: ; 0x0209ADE4 + str r0, [r1, #0x0] + mov r12, #0x0 + mov r2, #0xa +_0209ADF0: + ldrb r3, [r0, #0x0] + sub r3, r3, #0x30 + and r3, r3, #0xff + cmp r3, #0x9 + mlals r12, r2, r12, r3 + addls r0, r0, #0x1 + strls r0, [r1, #0x0] + bls _0209ADF0 + mov r0, r12 + bx lr + + arm_func_start resolve_common +resolve_common: ; 0x0209AE18 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + mov r9, r2 + mov r2, r9, asr #0x8 + mov r10, r1 + orr r1, r2, r9, lsl #0x8 + strh r1, [sp, #0x10] + cmp r10, #0x20 + mov r5, #0x0 + movne r1, #0x1 + strneh r1, [sp, #0x12] + ldreq r1, _0209B0C8 ; =0x00001001 + strh r5, [sp, #0x16] + streqh r1, [sp, #0x12] + mov r1, #0x100 + strh r1, [sp, #0x14] + add r1, sp, #0x1c + strh r5, [sp, #0x18] + strh r5, [sp, #0x1a] + str r5, [sp, #0xc] + ldrb r6, [r0], #0x1 + str r3, [sp, #0x0] + ldr r8, [sp, #0x70] + add r2, r1, #0x1 + cmp r6, #0x0 + beq _0209AED8 + add r4, sp, #0x10 +_0209AE84: + cmp r6, #0x2e + beq _0209AEB8 + sub r3, r2, r4 + cmp r3, #0x3c + addge sp, sp, #0x4c + mvnge r0, #0x0 + ldmgeia sp!, {r4-r11,lr} + bxge lr + strb r6, [r2], #0x1 + ldr r3, [sp, #0xc] + add r3, r3, #0x1 + str r3, [sp, #0xc] + b _0209AECC +_0209AEB8: + ldr r3, [sp, #0xc] + strb r3, [r1, #0x0] + mov r1, r2 + str r5, [sp, #0xc] + add r2, r2, #0x1 +_0209AECC: + ldrb r6, [r0], #0x1 + cmp r6, #0x0 + bne _0209AE84 +_0209AED8: + ldr r0, [sp, #0xc] + mov r3, #0x0 + strb r0, [r1, #0x0] + strb r3, [r2, #0x0] + mov r0, r10, lsr #0x8 + strb r0, [r2, #0x1] + strb r10, [r2, #0x2] + strb r3, [r2, #0x3] + mov r3, #0x1 + add r0, sp, #0x10 + add r1, r2, #0x5 + sub r1, r1, r0 + strb r3, [r2, #0x4] + bl CPS_SocWrite + mov r6, #0x0 + bl OS_GetTick + mov r5, r0, lsr #0x10 + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x1 + orr r5, r5, r1, lsl #0x10 + str r0, [sp, #0x4] + mvn r11, #0x0 + b _0209B084 +_0209AF38: + bl CPS_SocGetLength + cmp r0, #0x0 + bne _0209AF4C + bl OS_YieldThread__ + b _0209B084 +_0209AF4C: + add r0, sp, #0xc + bl CPS_SocRead + ldr r1, [sp, #0xc] + cmp r1, #0xc + bls _0209B07C + ldrh r3, [r0, #0x0] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r9, r2, lsr #0x10 + bne _0209B07C + ldrb r2, [r0, #0x3] + and r2, r2, #0xf + cmp r2, #0x3 + moveq r6, r11 + beq _0209B07C + cmp r2, #0x0 + bne _0209B07C + ldrb r2, [r0, #0x4] + add r4, r0, r1 + ldrb r1, [r0, #0x5] + add r0, r0, #0xc + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + sub r7, r1, #0x1 + beq _0209AFCC +_0209AFB8: + bl dns_skipname + cmp r7, #0x0 + add r0, r0, #0x4 + sub r7, r7, #0x1 + bne _0209AFB8 +_0209AFCC: + cmp r0, r4 + bhs _0209B07C +_0209AFD4: + bl dns_skipname + ldrb r7, [r0, #0x8] + ldrb r1, [r0, #0x9] + ldrb r3, [r0, #0x0] + ldrb r2, [r0, #0x1] + orr r1, r1, r7, lsl #0x8 + mov r1, r1, lsl #0x10 + orr r3, r2, r3, lsl #0x8 + mov r2, r1, lsr #0x10 + mov r1, r3, lsl #0x10 + cmp r10, r1, lsr #0x10 + bne _0209B06C + cmp r10, #0xc + beq _0209B04C + add r1, r0, #0x6 + add r3, r1, r2 + add r4, r0, #0x8 + ldrb r1, [r1, r2] + ldrb r0, [r3, #0x1] + add r3, r4, r2 + ldrb r2, [r4, r2] + orr r0, r0, r1, lsl #0x8 + ldrb r1, [r3, #0x1] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + orr r0, r1, r2, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r6, r1, r0, lsr #0x10 + b _0209B07C +_0209B04C: + cmp r2, r8 + ldrhi r6, [sp, #0x8] + bhi _0209B07C + ldr r1, [sp, #0x0] + add r0, r0, #0xa + bl MI_CpuCopy8 + ldr r6, [sp, #0x4] + b _0209B07C +_0209B06C: + add r1, r2, #0xa + add r0, r0, r1 + cmp r0, r4 + blo _0209AFD4 +_0209B07C: + ldr r0, [sp, #0xc] + bl CPS_SocConsume +_0209B084: + ldr r0, _0209B0CC ; =link_is_on + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209B0B8 + cmp r6, #0x0 + bne _0209B0B8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + blt _0209AF38 +_0209B0B8: + mov r0, r6 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209B0C8: .word 0x00001001 +_0209B0CC: .word link_is_on + + arm_func_start dns_skipname +dns_skipname: + ldrb r2, [r0], #0x1 + cmp r2, #0x0 + bxeq lr +_0209B0DC: + and r1, r2, #0xc0 + cmp r1, #0xc0 + addeq r0, r0, #0x1 + bxeq lr + add r0, r0, r2 + ldrb r2, [r0], #0x1 + cmp r2, #0x0 + bne _0209B0DC + bx lr + + arm_func_start dhcp_release_server +dhcp_release_server: ; 0x0209B100 + stmdb sp!, {r4,lr} + bl CPS_SocUse + bl CPS_SocDatagramMode + ldr r1, _0209B168 ; =CPSDhcpServerIp + mov r0, #0x44 + ldr r2, [r1, #0x0] + mov r1, #0x43 + bl CPS_SocPingMode + ldr r4, _0209B16C ; =scavenger_sndbuf + 0x2A + mov r1, #0x7 + mov r0, r4 + mov r2, #0x0 + bl dhcp_setcommon + mov r1, #0xff + add r2, r0, #0x1 + strb r1, [r0, #0x0] + mov r0, #0x0 + mov r1, #0x12c + sub r3, r2, r4 + bl pad_mem + sub r1, r0, r4 + mov r0, r4 + bl CPS_SocWrite + bl CPS_SocRelease + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209B168: .word CPSDhcpServerIp +_0209B16C: .word scavenger_sndbuf + 0x2A + + arm_func_start dhcp_request_server +dhcp_request_server: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + bl CPS_SocUse + bl CPS_SocDatagramMode + cmp r4, #0x1 + bne _0209B1A8 + ldr r1, _0209B28C ; =CPSDhcpServerIp + mov r0, #0x44 + ldr r2, [r1, #0x0] + mov r1, #0x43 + bl CPS_SocPingMode + b _0209B1B8 +_0209B1A8: + mov r0, #0x44 + mov r1, #0x43 + mvn r2, #0x0 + bl CPS_SocPingMode +_0209B1B8: + mov r6, #0x0 +_0209B1BC: + mov r0, r4 + bl dhcp_send_request + mov r1, r6 + bl dhcp_analyze_response + movs r7, r0 + bne _0209B1E0 + add r6, r6, #0x1 + cmp r6, #0x4 + blt _0209B1BC +_0209B1E0: + bl CPS_SocRelease + cmp r7, #0x2 + bne _0209B224 + ldr r0, _0209B290 ; =lease_time + mov r1, #0x3 + ldr r3, [r0, #0x0] + ldr r2, _0209B294 ; =UNK_021C8EEC + mov r3, r3, lsr #0x1 + str r3, [r5, #0x0] + ldr r3, [r0, #0x0] + add sp, sp, #0x4 + mul r1, r3, r1 + mov r1, r1, lsr #0x3 + str r1, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_0209B224: + ldr r1, _0209B294 ; =UNK_021C8EEC + cmp r4, #0x1 + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x1 + str r0, [r1, #0x0] + str r0, [r5, #0x0] + beq _0209B24C + cmp r4, #0x2 + beq _0209B270 + b _0209B27C +_0209B24C: + cmp r0, #0x3c + bhs _0209B27C + mov r2, #0x1 + ldr r0, _0209B290 ; =lease_time + str r2, [r5, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsr #0x3 + str r0, [r1, #0x0] + b _0209B27C +_0209B270: + cmp r0, #0x3c + movcc r0, #0x1 + strcc r0, [r5, #0x0] +_0209B27C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209B28C: .word CPSDhcpServerIp +_0209B290: .word lease_time +_0209B294: .word UNK_021C8EEC + + arm_func_start dhcp_discover_server +dhcp_discover_server: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl CPS_SocUse + bl CPS_SocDatagramMode + mov r0, #0x44 + mov r1, #0x43 + mvn r2, #0x0 + bl CPS_SocPingMode + mov r4, #0x0 +_0209B2BC: + bl dhcp_send_discover + mov r1, r4 + bl dhcp_analyze_response + mov r5, r0 + cmp r5, #0x1 + beq _0209B2E0 + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0209B2BC +_0209B2E0: + bl CPS_SocRelease + cmp r5, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start dhcp_analyze_response +dhcp_analyze_response: ; 0x0209B2FC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + add r2, r1, #0x1 + mov r1, #0xf + mul r1, r2, r1 + str r1, [sp, #0x8] + str r0, [sp, #0x0] + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x4] + orr r0, r0, r1, lsl #0x10 + mov r4, #0x0 + str r0, [sp, #0x4] + mov r0, #0x3 + mov r9, r4 + ldr r5, _0209B698 ; =CPSDnsIp + mov r7, #0x2 + mov r8, #0x1 + ldr fp, _0209B69C ; =CPSGatewayIp + ldr r6, _0209B6A0 ; =CPSNetMask + str r0, [sp, #0xc] + b _0209B64C +_0209B354: + bl CPS_SocGetLength + cmp r0, #0x0 + bne _0209B368 + bl OS_YieldThread__ + b _0209B64C +_0209B368: + add r0, sp, #0x10 + bl CPS_SocRead + mov r10, r0 + ldr r0, [sp, #0x10] + cmp r0, #0xf0 + bls _0209B644 + ldrb r0, [r10, #0x0] + cmp r0, #0x2 + bne _0209B644 + ldrh r1, [r10, #0x6] + ldrh r2, [r10, #0x4] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + orr r1, r0, r1, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r0, r1 + bne _0209B644 + ldr r1, _0209B6A4 ; =CPSMyMac + add r0, r10, #0x1c + bl maccmp + cmp r0, #0x0 + bne _0209B644 + ldrb r3, [r10, #0x10] + ldrb r0, [r10, #0x11] + ldrb r2, [r10, #0x12] + ldrb r1, [r10, #0x13] + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + orr r1, r1, r2, lsl #0x8 + mov r0, r0, lsr #0x10 + mov r2, r0, lsl #0x10 + mov r0, r1, lsl #0x10 + orr r0, r2, r0, lsr #0x10 + ldrb r2, [r10, #0xec] + ldr r1, [sp, #0x10] + ldr r4, [sp, #0xc] + add r1, r10, r1 + cmp r2, #0x63 + bne _0209B644 + ldrb r2, [r10, #0xed] + cmp r2, #0x82 + bne _0209B644 + ldrb r2, [r10, #0xee] + cmp r2, #0x53 + bne _0209B644 + add r2, r10, #0xf0 + ldrb r3, [r10, #0xef] + cmp r3, #0x63 + bne _0209B644 + b _0209B630 +_0209B448: + cmp r3, #0x0 + beq _0209B630 + cmp r3, #0x33 + bgt _0209B48C + cmp r3, #0x33 + bge _0209B588 + cmp r3, #0x6 + bgt _0209B624 + cmp r3, #0x1 + blt _0209B624 + cmp r3, #0x1 + beq _0209B4AC + cmp r3, #0x3 + beq _0209B4E0 + cmp r3, #0x6 + beq _0209B514 + b _0209B624 +_0209B48C: + cmp r3, #0x35 + bgt _0209B4A0 + cmp r3, #0x35 + beq _0209B5C0 + b _0209B624 +_0209B4A0: + cmp r3, #0x36 + beq _0209B5F0 + b _0209B624 +_0209B4AC: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r6, #0x0] + b _0209B624 +_0209B4E0: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r11, #0x0] + b _0209B624 +_0209B514: + ldrb r3, [r2, #0x0] + cmp r3, #0x8 + strcc r9, [r5, #0x4] + blo _0209B554 + ldrb lr, [r2, #0x5] + ldrb r12, [r2, #0x6] + ldrb r10, [r2, #0x7] + ldrb r3, [r2, #0x8] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r5, #0x4] +_0209B554: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r5, #0x0] + b _0209B624 +_0209B588: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r10, r10, r3, lsr #0x10 + ldr r3, _0209B6A8 ; =lease_time + str r10, [r3, #0x0] + b _0209B624 +_0209B5C0: + ldrb r3, [r2, #0x1] + cmp r3, #0x2 + beq _0209B5E0 + cmp r3, #0x5 + ldreq r3, _0209B6AC ; =CPSMyIp + moveq r4, r7 + streq r0, [r3, #0x0] + b _0209B624 +_0209B5E0: + ldr r3, _0209B6B0 ; =offered_myip + mov r4, r8 + str r0, [r3, #0x0] + b _0209B624 +_0209B5F0: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r10, r10, r3, lsr #0x10 + ldr r3, _0209B6B4 ; =CPSDhcpServerIp + str r10, [r3, #0x0] +_0209B624: + ldrb r3, [r2, #0x0] + add r3, r3, #0x1 + add r2, r2, r3 +_0209B630: + cmp r2, r1 + bhs _0209B644 + ldrb r3, [r2], #0x1 + cmp r3, #0xff + bne _0209B448 +_0209B644: + ldr r0, [sp, #0x10] + bl CPS_SocConsume +_0209B64C: + ldr r0, _0209B6B8 ; =link_is_on + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209B688 + cmp r4, #0x0 + bne _0209B688 + bl OS_GetTick + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x4] + orr r2, r2, r1, lsl #0x10 + sub r1, r2, r0 + ldr r0, [sp, #0x8] + cmp r1, r0 + blt _0209B354 +_0209B688: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209B698: .word CPSDnsIp +_0209B69C: .word CPSGatewayIp +_0209B6A0: .word CPSNetMask +_0209B6A4: .word CPSMyMac +_0209B6A8: .word lease_time +_0209B6AC: .word CPSMyIp +_0209B6B0: .word offered_myip +_0209B6B4: .word CPSDhcpServerIp +_0209B6B8: .word link_is_on + + arm_func_start dhcp_send_request +dhcp_send_request: ; 0x0209B6BC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, _0209B7CC ; =scavenger_sndbuf + 0x2A + mov r5, r0 + add r2, sp, #0x0 + mov r0, r4 + mov r1, #0x3 + bl dhcp_setcommon + mov r12, r0 + cmp r5, #0x0 + bne _0209B790 + mov r0, #0x32 + strb r0, [r12, #0x0] + mov r0, #0x4 + ldr r3, _0209B7D0 ; =offered_myip + strb r0, [r12, #0x1] + ldr r1, [r3, #0x0] + mov lr, #0x36 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, asr #0x8 + strb r1, [r12, #0x2] + ldr r1, [r3, #0x0] + ldr r2, _0209B7D4 ; =CPSDhcpServerIp + mov r1, r1, lsr #0x10 + strb r1, [r12, #0x3] + ldr r1, [r3, #0x0] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, asr #0x8 + strb r1, [r12, #0x4] + ldr r1, [r3, #0x0] + strb r1, [r12, #0x5] + strb lr, [r12, #0x6] + strb r0, [r12, #0x7] + ldr r0, [r2, #0x0] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x8] + ldr r0, [r2, #0x0] + mov r0, r0, lsr #0x10 + strb r0, [r12, #0x9] + ldr r0, [r2, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0xa] + ldr r0, [r2, #0x0] + strb r0, [r12, #0xb] + add r12, r12, #0xc +_0209B790: + add r2, r12, #0x1 + mov lr, #0xff + sub r3, r2, r4 + mov r0, #0x0 + mov r1, #0x12c + strb lr, [r12, #0x0] + bl pad_mem + mov r1, r0 + mov r0, r4 + sub r1, r1, r4 + bl CPS_SocWrite + ldr r0, [sp, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209B7CC: .word scavenger_sndbuf + 0x2A +_0209B7D0: .word offered_myip +_0209B7D4: .word CPSDhcpServerIp + + arm_func_start dhcp_send_discover +dhcp_send_discover: ; 0x0209B7D8 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r4, _0209B898 ; =scavenger_sndbuf + 0x2A + add r2, sp, #0x0 + mov r0, r4 + mov r1, #0x1 + bl dhcp_setcommon + ldr r1, _0209B89C ; =offered_myip + mov r12, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _0209B85C + mov r0, #0x32 + strb r0, [r12, #0x0] + mov r0, #0x4 + strb r0, [r12, #0x1] + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x2] + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x10 + strb r0, [r12, #0x3] + ldr r0, [r1, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x4] + ldr r0, [r1, #0x0] + strb r0, [r12, #0x5] + add r12, r12, #0x6 +_0209B85C: + add r2, r12, #0x1 + mov lr, #0xff + sub r3, r2, r4 + mov r0, #0x0 + mov r1, #0x12c + strb lr, [r12, #0x0] + bl pad_mem + mov r1, r0 + mov r0, r4 + sub r1, r1, r4 + bl CPS_SocWrite + ldr r0, [sp, #0x0] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209B898: .word scavenger_sndbuf + 0x2A +_0209B89C: .word offered_myip + + arm_func_start pad_mem +pad_mem: ; 0x0209B8A0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r12, r0 + mov r5, r2 + cmp r3, r1 + bhs _0209B8D0 + sub r4, r1, r3 + mov r0, r5 + mov r1, r12 + mov r2, r4 + bl MI_CpuFill8 + add r5, r5, r4 +_0209B8D0: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start dhcp_setcommon +dhcp_setcommon: ; 0x0209B8E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r1, #0x0 + mov r2, #0xec + mov r6, r0 + bl MI_CpuFill8 + ldr r0, _0209BA5C ; =0x00000101 + mov r1, #0x6 + strh r0, [r6, #0x0] + ldr r0, _0209BA60 ; =CPSiRand32ctx + strb r1, [r6, #0x2] + ldr r3, [r0, #0x8] + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x4] + umull lr, r12, r3, r2 + mla r12, r3, r1, r12 + ldr r1, [r0, #0xc] + ldr r7, [r0, #0x10] + mla r12, r1, r2, r12 + adds r3, r7, lr + ldr r1, [r0, #0x14] + str r3, [r0, #0x0] + adc r1, r1, r12 + str r1, [r0, #0x4] + mov r0, r1, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + cmp r4, #0x0 + mov r2, r3, asr #0x8 + mov r0, r1, lsl #0x10 + strne r1, [r4, #0x0] + mov r1, r0, lsr #0x10 + orr r2, r2, r3, lsl #0x8 + mov r0, r1, asr #0x8 + strh r2, [r6, #0x4] + orr r0, r0, r1, lsl #0x8 + strh r0, [r6, #0x6] + ldr r2, _0209BA64 ; =CPSMyIp + ldr r0, _0209BA68 ; =CPSMyMac + ldr r1, [r2, #0x0] + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + strh r1, [r6, #0xc] + ldr r2, [r2, #0x0] + add r1, r6, #0x1c + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 + mov r2, r3, asr #0x8 + orr r3, r2, r3, lsl #0x8 + mov r2, #0x6 + strh r3, [r6, #0xe] + bl MI_CpuCopy8 + ldr r0, _0209BA6C ; =0x00008263 + ldr r1, _0209BA70 ; =0x00006353 + strh r0, [r6, #0xec] + strh r1, [r6, #0xee] + ldr r0, _0209BA74 ; =0x00000135 + mov r1, #0x7 + strh r0, [r6, #0xf0] + strb r5, [r6, #0xf2] + mov r0, #0x3d + strb r0, [r6, #0xf3] + strb r1, [r6, #0xf4] + mov r3, #0x1 + ldr r0, _0209BA68 ; =CPSMyMac + add r1, r6, #0xf6 + mov r2, #0x6 + strb r3, [r6, #0xf5] + bl MI_CpuCopy8 + mov r1, #0xc + strb r1, [r6, #0xfc] + mov r2, #0xa + ldr r0, _0209BA78 ; =UNK_02106224 + add r1, r6, #0xfe + strb r2, [r6, #0xfd] + bl MI_CpuCopy8 + mov r1, #0x37 + strb r1, [r6, #0x108] + mov r2, #0x3 + ldr r0, _0209BA7C ; =0x0000010D + strb r2, [r6, #0x109] + mov r1, #0x1 + strb r1, [r6, #0x10a] + strb r2, [r6, #0x10b] + mov r1, #0x6 + strb r1, [r6, #0x10c] + add r0, r6, r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209BA5C: .word 0x00000101 +_0209BA60: .word CPSiRand32ctx +_0209BA64: .word CPSMyIp +_0209BA68: .word CPSMyMac +_0209BA6C: .word 0x00008263 +_0209BA70: .word 0x00006353 +_0209BA74: .word 0x00000135 +_0209BA78: .word UNK_02106224 +_0209BA7C: .word 0x0000010D + + arm_func_start scavenger +scavenger: ; 0x0209BA80 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldr r3, _0209BE40 ; =scavenger_force_exit + mov r1, #0x0 + ldr r0, _0209BE44 ; =scavenger_soc + mov r2, #0x64 + str r1, [r3, #0x0] + bl MI_CpuFill8 + ldr r0, _0209BE44 ; =scavenger_soc + mov r3, #0x180 + ldr r2, _0209BE48 ; =scavenger_rcvbuf + ldr r1, _0209BE4C ; =scavenger_sndbuf + str r3, [r0, #0x3c] + str r2, [r0, #0x40] + str r3, [r0, #0x48] + str r1, [r0, #0x4c] + bl CPS_SocRegister + mov r11, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x4c] + mov r1, r0 + ldr r0, _0209BE50 ; =CPSNoIpReason + ldr r5, [sp, #0x0] + str r1, [r0, #0x0] + mov r0, #0x2 + str r0, [sp, #0x10] + mov r0, r5 + str r0, [sp, #0x34] + str r0, [sp, #0x3c] + mov r0, #0x3 + str r0, [sp, #0x1c] + mov r0, r5 + str r0, [sp, #0x30] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0xc] + mov r0, #0x69 + str r0, [sp, #0x44] + mov r0, #0x3e8 + mov r6, r11 + mov r4, r11 + mov r10, r11 + str r11, [sp, #0x14] + str r11, [sp, #0x18] + str r11, [sp, #0x38] + str r11, [sp, #0x2c] + str r11, [sp, #0x40] + str r11, [sp, #0x48] + str r0, [sp, #0x8] +_0209BB50: + ldr r0, [sp, #0x8] + bl OS_Sleep + ldr r0, _0209BE40 ; =scavenger_force_exit + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0209BE14 + bl OS_GetTick + mov r9, r0, lsr #0x10 + ldr r0, _0209BE54 ; =link_is_on + orr r9, r9, r1, lsl #0x10 + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209BC8C + ldr r0, [sp, #0x4c] + subs r0, r0, #0x1 + str r0, [sp, #0x4c] + bne _0209BCA4 + ldr r0, _0209BE58 ; =mode + ldr r0, [r0, #0x0] + ands r0, r0, #0x1 + beq _0209BBBC + cmp r11, #0x0 + bne _0209BCA4 + bl set_fixed_ip + ldr r11, [sp, #0xc] + b _0209BCA4 +_0209BBBC: + cmp r11, #0x3 + addls pc, pc, r11, lsl #0x2 + b _0209BCA4 +_0209BBC8: ; jump table + b _0209BBD8 ; case 0 + b _0209BC28 ; case 1 + b _0209BC4C ; case 2 + b _0209BCA4 ; case 3 +_0209BBD8: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ldrne r1, [sp, #0x10] + ldrne r0, _0209BE50 ; =CPSNoIpReason + strne r1, [r0, #0x0] + ldrne r0, [sp, #0x14] + strne r0, [sp, #0x4] + bl dhcp_discover_server + cmp r0, #0x0 + beq _0209BC14 + ldr r1, [sp, #0x18] + add r0, sp, #0x4c + bl dhcp_request_server + cmp r0, #0x0 + bne _0209BC20 +_0209BC14: + bl set_fixed_ip + ldr r11, [sp, #0x1c] + b _0209BCA4 +_0209BC20: + ldr r11, [sp, #0x20] + b _0209BCA4 +_0209BC28: + ldr r1, [sp, #0x24] + add r0, sp, #0x4c + bl dhcp_request_server + cmp r0, #0x0 + bne _0209BCA4 + ldr r0, [sp, #0x4c] + cmp r0, #0x3c + ldrcc r11, [sp, #0x10] + b _0209BCA4 +_0209BC4C: + ldr r1, [sp, #0x10] + add r0, sp, #0x4c + bl dhcp_request_server + cmp r0, #0x0 + ldrne r11, [sp, #0x28] + bne _0209BCA4 + ldr r0, [sp, #0x4c] + cmp r0, #0x3c + bhs _0209BCA4 + ldr r0, [sp, #0x1c] + bl reset_network_vars + ldr r0, [sp, #0x30] + ldr r11, [sp, #0x2c] + str r0, [sp, #0x4c] + str r0, [sp, #0x0] + b _0209BCA4 +_0209BC8C: + ldr r0, [sp, #0x34] + bl reset_network_vars + ldr r0, [sp, #0x3c] + ldr r11, [sp, #0x38] + str r0, [sp, #0x4c] + str r0, [sp, #0x0] +_0209BCA4: + ldr r1, [sp, #0x40] + ldr r0, _0209BE5C ; =arpcache +_0209BCAC: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0209BCD4 + ldrh r2, [r0, #0xa] + sub r2, r9, r2 + mov r2, r2, lsl #0x10 + mov r3, r2, asr #0x10 + ldr r2, _0209BE60 ; =0x000003BD + cmp r3, r2 + strgt r6, [r0, #0x0] +_0209BCD4: + add r0, r0, #0xc + add r1, r1, #0x1 + cmp r1, #0x8 + blt _0209BCAC + ldr r0, _0209BE64 ; =CPSGatewayIp + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209BD10 + ldr r1, [sp, #0x0] + subs r1, r1, #0x1 + str r1, [sp, #0x0] + bne _0209BD10 + bl send_arprequest + ldr r0, [sp, #0x44] + str r0, [sp, #0x0] +_0209BD10: + ldr r0, _0209BE68 ; =OSi_ThreadInfo + ldr r7, [r0, #0x8] + cmp r7, #0x0 + beq _0209BDAC +_0209BD20: + ldr r0, [r7, #0xa4] + cmp r0, #0x0 + beq _0209BDA0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0209BDA0 + ldrb r2, [r0, #0x8] + cmp r2, #0x3 + bne _0209BD6C + ldr r1, [r0, #0x10] + sub r1, r9, r1 + cmp r1, #0x27 + ble _0209BD6C + strb r5, [r0, #0x8] + ldrh r1, [r0, #0x1a] + strh r1, [r0, #0x18] + ldr r1, [r0, #0x20] + str r1, [r0, #0x1c] + b _0209BDA0 +_0209BD6C: + cmp r2, #0x2 + bne _0209BDA0 + ldr r1, [r0, #0x10] + sub r1, r9, r1 + cmp r1, #0x27 + ble _0209BDA0 + ldr r1, [r0, #0x4] + cmp r1, #0x1 + bne _0209BDA0 + strb r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r0, [r0, #0x0] + bl OS_WakeupThreadDirect +_0209BDA0: + ldr r7, [r7, #0x68] + cmp r7, #0x0 + bne _0209BD20 +_0209BDAC: + ldr r7, [sp, #0x48] + ldr r8, _0209BE6C ; =fragtable +_0209BDB4: + ldrh r0, [r8, #0x4] + cmp r0, #0x0 + beq _0209BDE4 + ldr r0, [r8, #0x2c] + sub r0, r9, r0 + cmp r0, #0xef + ble _0209BDE4 + ldr r1, _0209BE70 ; =CPSiFree + ldr r0, [r8, #0x34] + ldr r1, [r1, #0x0] + blx r1 + strh r10, [r8, #0x4] +_0209BDE4: + add r8, r8, #0x38 + add r7, r7, #0x1 + cmp r7, #0x8 + blt _0209BDB4 + mov r0, r9 + bl CPSi_SslPeriodical + ldr r0, _0209BE74 ; =scavenger_callback + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209BB50 + blx r0 + b _0209BB50 +_0209BE14: + ldr r0, _0209BE58 ; =mode + ldr r0, [r0, #0x0] + ands r0, r0, #0x1 + bne _0209BE30 + cmp r11, #0x3 + beq _0209BE30 + bl dhcp_release_server +_0209BE30: + bl CPS_SocUnRegister + add sp, sp, #0x54 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209BE40: .word scavenger_force_exit +_0209BE44: .word scavenger_soc +_0209BE48: .word scavenger_rcvbuf +_0209BE4C: .word scavenger_sndbuf +_0209BE50: .word CPSNoIpReason +_0209BE54: .word link_is_on +_0209BE58: .word mode +_0209BE5C: .word arpcache +_0209BE60: .word 0x000003BD +_0209BE64: .word CPSGatewayIp +_0209BE68: .word OSi_ThreadInfo +_0209BE6C: .word fragtable +_0209BE70: .word CPSiFree +_0209BE74: .word scavenger_callback + + arm_func_start set_fixed_ip +set_fixed_ip: ; 0x0209BE78 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _0209BF3C ; =dhcp_callback + ldr r0, [r0, #0x0] + blx r0 + ldr r0, _0209BF40 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl send_arprequest + mov r0, #0x64 + bl OS_Sleep + ldr r0, _0209BF40 ; =CPSMyIp + ldr r0, [r0, #0x0] + bl send_arprequest + bl OS_GetTick + mov r4, r0, lsr #0x10 + orr r4, r4, r1, lsl #0x10 + ldr r6, _0209BF44 ; =ip_conflict + mov r7, #0x64 + ldr r5, _0209BF48 ; =link_is_on + b _0209BF00 +_0209BED8: + ldrb r0, [r6, #0x0] + cmp r0, #0x0 + beq _0209BEF8 + mov r0, #0x4 + bl reset_network_vars + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209BEF8: + mov r0, r7 + bl OS_Sleep +_0209BF00: + ldr r0, [r5, #0x0] + blx r0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r4 + cmp r0, #0x17 + blt _0209BED8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209BF3C: .word dhcp_callback +_0209BF40: .word CPSMyIp +_0209BF44: .word ip_conflict +_0209BF48: .word link_is_on + + arm_func_start CPS_SocGetChar +CPS_SocGetChar: ; 0x0209BF4C + stmdb sp!, {r4,lr} + ldr r0, _0209BF98 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r4, #0x60] + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r2, #0x0 + ldr r0, [r4, #0x5c] + mov r3, r2 + bl CPSi_SocWrite2 + mov r0, #0x0 + str r0, [r4, #0x60] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209BF98: .word OSi_ThreadInfo + + arm_func_start CPS_SocGetLength +CPS_SocGetLength: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209C02C ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + beq _0209C01C + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209BFD4 + bl CPSi_SslGetLength + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209BFD4: + ldr r1, [r0, #0x44] + cmp r1, #0x0 + bne _0209BFFC + ldrb r0, [r0, #0x8] + cmp r0, #0x4 + beq _0209BFFC + add r0, r0, #0xf6 + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209C00C +_0209BFFC: + add sp, sp, #0x4 + mov r0, r1 + ldmia sp!, {lr} + bx lr +_0209C00C: + add sp, sp, #0x4 + mvn r0, #0x0 + ldmia sp!, {lr} + bx lr +_0209C01C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C02C: .word OSi_ThreadInfo + + arm_func_start CPS_SocWrite +CPS_SocWrite: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r3, _0209C0E4 ; =OSi_ThreadInfo + mov r2, r0 + ldr r4, [r3, #0x4] + mov r3, r1 + ldr r5, [r4, #0xa4] + cmp r5, #0x0 + beq _0209C0D4 + ldr r4, [r5, #0x60] + cmp r4, #0x0 + beq _0209C0BC + ldr r0, [r5, #0x5c] + mov r1, r4 + bl CPSi_SocWrite2 + ldr r1, [r5, #0x60] + mov r4, r0 + cmp r4, r1 + movcs r0, #0x0 + strcs r0, [r5, #0x60] + addcs sp, sp, #0x4 + subcs r0, r4, r1 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + ldr r0, [r5, #0x5c] + sub r2, r1, r4 + add r1, r0, r4 + bl memmove + ldr r1, [r5, #0x60] + add sp, sp, #0x4 + sub r1, r1, r4 + mov r0, #0x0 + str r1, [r5, #0x60] + ldmia sp!, {r4-r5,lr} + bx lr +_0209C0BC: + mov r2, #0x0 + mov r3, r2 + bl CPSi_SocWrite2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_0209C0D4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209C0E4: .word OSi_ThreadInfo + + arm_func_start CPSi_SocWrite2 +CPSi_SocWrite2: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _0209C1CC ; =OSi_ThreadInfo + mov r7, r1 + ldr r12, [r12, #0x4] + mov r6, r2 + ldr r4, [r12, #0xa4] + mov r5, r3 + cmp r4, #0x0 + beq _0209C1BC + ldrb r12, [r4, #0x8] + cmp r12, #0xa + bne _0209C14C + cmp r7, #0x0 + beq _0209C12C + mov r2, r4 + bl send_udp +_0209C12C: + cmp r5, #0x0 + beq _0209C144 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl send_udp +_0209C144: + add r0, r7, r5 + b _0209C1A4 +_0209C14C: + cmp r12, #0xb + bne _0209C184 + cmp r7, #0x0 + beq _0209C164 + mov r2, r4 + bl send_ping +_0209C164: + cmp r5, #0x0 + beq _0209C17C + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl send_ping +_0209C17C: + add r0, r7, r5 + b _0209C1A4 +_0209C184: + ldrb r12, [r4, #0x9] + cmp r12, #0x0 + beq _0209C19C + str r4, [sp, #0x0] + bl CPSi_SslWrite2 + b _0209C1A4 +_0209C19C: + str r4, [sp, #0x0] + bl CPSi_TcpWrite2Raw +_0209C1A4: + ldr r1, _0209C1D0 ; =wfailed + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr +_0209C1BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209C1CC: .word OSi_ThreadInfo +_0209C1D0: .word wfailed + + arm_func_start CPSi_TcpWrite2Raw +CPSi_TcpWrite2Raw: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + mov r4, #0x0 + mov r10, r0 + ldr r8, [sp, #0x40] + mov r0, r4 + str r4, [sp, #0xc] + mov r9, r1 + mov r11, r2 + str r3, [sp, #0x8] + mov r6, r4 + str r0, [r8, #0x34] + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x10] + orr r0, r0, r1, lsl #0x10 + str r0, [sp, #0x10] + mov r0, r6 + str r0, [sp, #0x18] + mov r0, #0x1 + ldr r4, _0209C3EC ; =link_is_on + str r0, [sp, #0x14] + b _0209C39C +_0209C230: + ldr r7, [r8, #0x28] + ldr r3, [sp, #0x8] + str r8, [sp, #0x0] + mov r0, r10 + mov r1, r9 + mov r2, r11 + str r6, [sp, #0x4] + bl tcp_write_do2 + bl OS_GetTick + mov r5, r0, lsr #0x10 + orr r5, r5, r1, lsl #0x10 +_0209C25C: + bl OS_YieldThread__ + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C2B8 + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C2B8 + ldr r1, [r8, #0x28] + ldr r0, [r8, #0x30] + cmp r1, r0 + beq _0209C2B8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + bge _0209C2B8 + cmp r6, #0x0 + beq _0209C25C + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + beq _0209C25C +_0209C2B8: + ldr r0, [r8, #0x30] + subs r7, r0, r7 + ldr r0, [sp, #0xc] + add r0, r0, r7 + str r0, [sp, #0xc] + beq _0209C2E4 + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x10] + orr r0, r0, r1, lsl #0x10 + str r0, [sp, #0x10] +_0209C2E4: + ldr r0, [r8, #0x30] + str r0, [r8, #0x28] + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C36C + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + bne _0209C36C + cmp r7, #0x0 + bne _0209C36C + cmp r6, #0x0 + bne _0209C370 + bl OS_GetTick + mov r5, r0, lsr #0x10 + orr r5, r5, r1, lsl #0x10 + b _0209C334 +_0209C324: + bl OS_YieldThread__ + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + bne _0209C35C +_0209C334: + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C35C + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + blt _0209C324 +_0209C35C: + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + ldreq r6, [sp, #0x14] + b _0209C370 +_0209C36C: + ldr r6, [sp, #0x18] +_0209C370: + cmp r7, r9 + addcc r10, r10, r7 + subcc r9, r9, r7 + blo _0209C39C + sub r1, r7, r9 + add r10, r11, r1 + ldr r0, [sp, #0x8] + ldr r11, [sp, #0x18] + sub r9, r0, r1 + mov r0, r11 + str r0, [sp, #0x8] +_0209C39C: + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C3DC + cmp r9, #0x0 + beq _0209C3DC + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C3DC + bl OS_GetTick + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x10] + orr r2, r2, r1, lsl #0x10 + sub r0, r2, r0 + cmp r0, #0x9f + blt _0209C230 +_0209C3DC: + ldr r0, [sp, #0xc] + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209C3EC: .word link_is_on + + arm_func_start tcp_write_do2 +tcp_write_do2: ; 0x0209C3F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r4, r3 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl tcp_write_do + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [sp, #0x10] + mov r0, r5 + mov r1, r4 + mov r3, #0x0 + bl tcp_write_do + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start tcp_write_do +tcp_write_do: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r8, r2 + ldr r11, [r8, #0x34] + mov r10, r0 + movs r0, r3 + mov r0, r11, lsl #0x1 + movne r6, #0x1 + add r5, r0, #0x4 + mov r0, #0x18 + str r3, [sp, #0x4] + mov r9, r1 + ldreqh r6, [r8, #0x2c] + mov r4, #0x0 + str r0, [sp, #0x8] + b _0209C504 +_0209C48C: + ldr r0, _0209C528 ; =mymss + ldrh r7, [r8, #0x2e] + ldrh r0, [r0, #0x0] + ldr r1, [r8, #0x34] + cmp r7, r6 + movcs r7, r6 + cmp r0, r7 + movcc r7, r0 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + biceq r7, r7, #0x1 + cmp r9, r7 + sub r0, r1, r11 + movcc r7, r9 + adds r0, r5, r0 + moveq r7, r4 + mov r11, r1 + sub r5, r0, #0x1 + cmp r7, #0x0 + beq _0209C518 + ldr r3, [sp, #0x8] + mov r0, r10 + mov r1, r7 + mov r2, r8 + str r4, [sp, #0x0] + sub r6, r6, r7 + bl send_tcp + bl OS_YieldThread + add r10, r10, r7 + sub r9, r9, r7 +_0209C504: + cmp r9, #0x0 + beq _0209C518 + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + beq _0209C48C +_0209C518: + mov r0, r7 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209C528: .word mymss + + arm_func_start CPS_SocConsume +CPS_SocConsume: ; 0x0209C52C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209C57C ; =OSi_ThreadInfo + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrb r2, [r1, #0x9] + cmp r2, #0x0 + beq _0209C56C + bl CPSi_SslConsume + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C56C: + bl CPSi_SocConsumeRaw + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C57C: .word OSi_ThreadInfo + + arm_func_start CPSi_SocConsumeRaw +CPSi_SocConsumeRaw: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r7, r0 + bl OS_DisableInterrupts + ldr r2, [r4, #0x44] + ldr r1, [r4, #0x3c] + mov r6, r0 + cmp r2, r1 + mov r5, #0x0 + bne _0209C5B4 + cmp r7, #0x0 + movne r5, #0x1 +_0209C5B4: + cmp r7, r2 + movcs r0, #0x0 + strcs r0, [r4, #0x44] + bhs _0209C5D8 + ldr r0, [r4, #0x40] + sub r2, r2, r7 + add r1, r0, r7 + str r2, [r4, #0x44] + bl memmove +_0209C5D8: + mov r0, r6 + bl OS_RestoreInterrupts + ldrb r0, [r4, #0x8] + cmp r0, #0xa + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r0, #0xb + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, [r4, #0x44] + cmp r0, #0x0 + beq _0209C620 + cmp r5, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr +_0209C620: + mov r0, r4 + mov r1, #0x1b + bl tck_send_ack + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start CPS_SocRead +CPS_SocRead: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209C6BC ; =OSi_ThreadInfo + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + beq _0209C6A4 + ldrb r2, [r1, #0x8] + add r2, r2, #0xf6 + and r2, r2, #0xff + cmp r2, #0x1 + bhi _0209C678 + bl udp_read_raw + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C678: + ldrb r2, [r1, #0x9] + cmp r2, #0x0 + beq _0209C694 + bl CPSi_SslRead + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C694: + bl CPSi_TcpReadRaw + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C6A4: + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C6BC: .word OSi_ThreadInfo + + arm_func_start CPSi_TcpReadRaw +CPSi_TcpReadRaw: ; 0x0209C6C0 + stmdb sp!, {r4-r8,lr} + mov r4, r1 + ldr r1, [r4, #0x44] + mov r5, r0 + cmp r1, #0x0 + bne _0209C728 + ldrb r0, [r4, #0x8] + cmp r0, #0x4 + bne _0209C728 + bl OS_DisableInterrupts + mov r8, r0 + mov r7, #0x2 + mov r6, #0x0 + b _0209C704 +_0209C6F8: + mov r0, r6 + str r7, [r4, #0x4] + bl OS_SleepThread +_0209C704: + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209C71C + ldrb r0, [r4, #0x8] + cmp r0, #0x4 + beq _0209C6F8 +_0209C71C: + mov r0, r8 + bl OS_RestoreInterrupts + b _0209C72C +_0209C728: + bl OS_YieldThread +_0209C72C: + ldr r0, [r4, #0x44] + str r0, [r5, #0x0] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + ldrne r0, [r4, #0x40] + moveq r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start udp_read_raw +udp_read_raw: ; 0x0209C74C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r1 + mov r9, r0 + bl OS_DisableInterrupts + ldr r7, [r8, #0x44] + mov r6, r0 + cmp r7, #0x0 + bne _0209C790 + mov r5, #0x3 + mov r4, #0x0 +_0209C778: + mov r0, r4 + str r5, [r8, #0x4] + bl OS_SleepThread + ldr r7, [r8, #0x44] + cmp r7, #0x0 + beq _0209C778 +_0209C790: + mov r0, r6 + bl OS_RestoreInterrupts + str r7, [r9, #0x0] + ldr r0, [r8, #0x40] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start CPS_TcpClose +CPS_TcpClose: ; 0x0209C7AC + stmdb sp!, {r4-r6,lr} + ldr r0, _0209C838 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + beq _0209C7DC + mov r0, r4 + bl CPSi_SslClose +_0209C7DC: + bl OS_GetTick + mov r6, r0, lsr #0x10 + orr r6, r6, r1, lsl #0x10 + ldr r5, _0209C83C ; =link_is_on + b _0209C7F4 +_0209C7F0: + bl OS_YieldThread__ +_0209C7F4: + ldr r0, [r5, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C828 + ldrb r0, [r4, #0x8] + cmp r0, #0x0 + beq _0209C828 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r6 + cmp r0, #0x27 + blt _0209C7F0 +_0209C828: + mov r0, #0x0 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209C838: .word OSi_ThreadInfo +_0209C83C: .word link_is_on + + arm_func_start CPS_TcpShutdown +CPS_TcpShutdown: + stmdb sp!, {r4,lr} + ldr r0, _0209C880 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + beq _0209C870 + mov r0, r4 + bl CPSi_SslShutdown +_0209C870: + mov r0, r4 + bl CPSi_TcpShutdownRaw + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209C880: .word OSi_ThreadInfo + + arm_func_start CPSi_TcpShutdownRaw +CPSi_TcpShutdownRaw: ; 0x0209C884 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_YieldThread + ldrb r1, [r4, #0x8] + add r0, r1, #0xfd + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209C8C0 + mov r0, r4 + mov r1, #0x19 + bl tck_send_finack + mov r0, #0x7 + strb r0, [r4, #0x8] + ldmia sp!, {r4,lr} + bx lr +_0209C8C0: + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + mov r1, #0x1a + bl tck_send_ack + ldmia sp!, {r4,lr} + bx lr + + arm_func_start CPS_SocWho +CPS_SocWho: ; 0x0209C8E0 + ldr r2, _0209C930 ; =OSi_ThreadInfo + ldr r2, [r2, #0x4] + ldr r3, [r2, #0xa4] + cmp r3, #0x0 + beq _0209C928 + ldrb r2, [r3, #0x8] + cmp r2, #0x4 + beq _0209C908 + cmp r2, #0xa + bne _0209C928 +_0209C908: + cmp r0, #0x0 + ldrneh r2, [r3, #0x18] + strneh r2, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, [r3, #0x14] + strne r0, [r1, #0x0] + ldr r0, [r3, #0x1c] + bx lr +_0209C928: + mov r0, #0x0 + bx lr + .balign 4 +_0209C930: .word OSi_ThreadInfo + + arm_func_start CPS_TcpConnect +CPS_TcpConnect: ; 0x0209C934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209C98C ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + beq _0209C97C + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209C96C + bl CPSi_SslConnect + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C96C: + bl CPSi_TcpConnectRaw + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C97C: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C98C: .word OSi_ThreadInfo + + arm_func_start CPSi_TcpConnectRaw +CPSi_TcpConnectRaw: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + bl get_seqno + mov r8, r0 + mov r9, #0x0 + mov r11, r9 + mov r4, #0x1 + mov r6, #0x2 + mov r5, #0x18 +_0209C9B8: + str r8, [r10, #0x28] + strb r6, [r10, #0x8] + bl OS_GetTick + mov r2, r0, lsr #0x10 + orr r2, r2, r1, lsl #0x10 + str r2, [r10, #0x10] + mov r0, r10 + mov r1, r6 + mov r2, r5 + bl tcp_send_handshake + bl OS_DisableInterrupts + mov r7, r0 + ldr r0, _0209CA50 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209CA04 + mov r0, r11 + str r4, [r10, #0x4] + bl OS_SleepThread +_0209CA04: + mov r0, r7 + bl OS_RestoreInterrupts + ldrb r0, [r10, #0x8] + cmp r0, #0x4 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, _0209CA50 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209CA40 + add r9, r9, #0x1 + cmp r9, #0x3 + blo _0209C9B8 +_0209CA40: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209CA50: .word CPSMyIp + + arm_func_start CPS_TcpListen +CPS_TcpListen: ; 0x0209CA54 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209CAA4 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209CA94 + bl CPSi_SslListen + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209CA94: + bl CPSi_TcpListenRaw + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209CAA4: .word OSi_ThreadInfo + + arm_func_start CPS_SetUdpCallback +CPS_SetUdpCallback: + ldr r1, _0209CAC0 ; =OSi_ThreadInfo + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + strne r0, [r1, #0x38] + bx lr + .balign 4 +_0209CAC0: .word OSi_ThreadInfo + + arm_func_start CPSi_TcpListenRaw +CPSi_TcpListenRaw: ; 0x0209CAC4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl get_seqno + str r0, [r5, #0x28] + mov r0, #0x1 + strb r0, [r5, #0x8] + bl OS_DisableInterrupts + mov r4, r0 + mov r1, #0x1 + mov r0, #0x0 + str r1, [r5, #0x4] + bl OS_SleepThread + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start CPS_SocDup +CPS_SocDup: ; 0x0209CB0C + ldr r1, _0209CB20 ; =OSi_ThreadInfo + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + str r1, [r0, #0xa4] + bx lr + .balign 4 +_0209CB20: .word OSi_ThreadInfo + + arm_func_start CPS_SocRelease +CPS_SocRelease: ; 0x0209CB24 + ldr r0, _0209CB40 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + bx lr + .balign 4 +_0209CB40: .word OSi_ThreadInfo + + arm_func_start CPS_SocUse +CPS_SocUse: ; 0x0209CB44 + ldr r0, _0209CB74 ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + bxeq lr + str r0, [r1, #0x0] + mov r0, #0x0 + strb r0, [r1, #0x8] + str r0, [r1, #0x44] + str r0, [r1, #0x60] + str r0, [r1, #0x38] + bx lr + .balign 4 +_0209CB74: .word OSi_ThreadInfo + + arm_func_start CPS_SocPingMode +CPS_SocPingMode: ; 0x0209CB78 + stmdb sp!, {r4,lr} + ldr r3, _0209CBDC ; =OSi_ThreadInfo + ldr r3, [r3, #0x4] + ldr r4, [r3, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r3, _0209CBE0 ; =0x7F000001 + cmp r2, r3 + ldreq r2, _0209CBE4 ; =CPSMyIp + ldreq r2, [r2, #0x0] + cmp r0, #0x0 + strh r1, [r4, #0x1a] + ldrh r1, [r4, #0x1a] + strh r1, [r4, #0x18] + str r2, [r4, #0x20] + ldr r1, [r4, #0x20] + str r1, [r4, #0x1c] + strneh r0, [r4, #0xa] + ldmneia sp!, {r4,lr} + bxne lr + bl CPS_SocGetEport + strh r0, [r4, #0xa] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209CBDC: .word OSi_ThreadInfo +_0209CBE0: .word 0x7F000001 +_0209CBE4: .word CPSMyIp + + arm_func_start CPS_SocDatagramMode +CPS_SocDatagramMode: ; 0x0209CBE8 + ldr r0, _0209CC0C ; =OSi_ThreadInfo + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + movne r0, #0xa + strneb r0, [r1, #0x8] + movne r0, #0x0 + strne r0, [r1, #0x44] + bx lr + .balign 4 +_0209CC0C: .word OSi_ThreadInfo + + arm_func_start CPS_SocUnRegister +CPS_SocUnRegister: ; 0x0209CC10 + ldr r0, _0209CC24 ; =OSi_ThreadInfo + mov r1, #0x0 + ldr r0, [r0, #0x4] + str r1, [r0, #0xa4] + bx lr + .balign 4 +_0209CC24: .word OSi_ThreadInfo + + arm_func_start CPS_SocRegister +CPS_SocRegister: ; 0x0209CC28 + ldr r1, _0209CC38 ; =OSi_ThreadInfo + ldr r1, [r1, #0x4] + str r0, [r1, #0xa4] + bx lr + .balign 4 +_0209CC38: .word OSi_ThreadInfo + + arm_func_start get_seqno +get_seqno: ; 0x0209CC3C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209CC88 ; =CPSiRand32ctx + ldr r3, [r1, #0x8] + ldr r2, [r1, #0x0] + ldr r0, [r1, #0x4] + umull lr, r12, r3, r2 + mla r12, r3, r0, r12 + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla r12, r0, r2, r12 + adds r2, r3, lr + ldr r0, [r1, #0x14] + str r2, [r1, #0x0] + adc r0, r0, r12 + str r0, [r1, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209CC88: .word CPSiRand32ctx + + arm_func_start CPS_SocGetEport +CPS_SocGetEport: ; 0x0209CC8C + stmdb sp!, {r4-r8,lr} + ldr r0, _0209CD30 ; =OSi_ThreadInfo + ldr r6, [r0, #0x8] + ldr r2, _0209CD34 ; =eport + mov r4, #0x400 + mov r3, #0x1 + mov r5, #0x0 + ldr r1, _0209CD38 ; =0x00001388 +_0209CCAC: + ldrh r12, [r2, #0x0] + mov r0, r5 + add r12, r12, #0x1 + strh r12, [r2, #0x0] + ldrh r12, [r2, #0x0] + cmp r12, #0x400 + blo _0209CCD0 + cmp r12, r1 + blo _0209CCD4 +_0209CCD0: + strh r4, [r2, #0x0] +_0209CCD4: + mov r8, r6 + cmp r6, #0x0 + beq _0209CD18 + ldrh r7, [r2, #0x0] +_0209CCE4: + ldr lr, [r8, #0xa4] + cmp lr, #0x0 + beq _0209CD0C + ldr r12, [lr, #0x0] + cmp r12, #0x0 + beq _0209CD0C + ldrh r12, [lr, #0xa] + cmp r12, r7 + moveq r0, r3 + beq _0209CD18 +_0209CD0C: + ldr r8, [r8, #0x68] + cmp r8, #0x0 + bne _0209CCE4 +_0209CD18: + cmp r0, #0x0 + bne _0209CCAC + ldr r0, _0209CD34 ; =eport + ldrh r0, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209CD30: .word OSi_ThreadInfo +_0209CD34: .word eport +_0209CD38: .word 0x00001388 + + arm_func_start tcpip +tcpip: ; 0x0209CD3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _0209CDAC ; =0x00000806 + add r4, sp, #0x0 +_0209CD4C: + mov r0, r4 + bl receive_packet + ldr r3, [sp, #0x0] + cmp r3, #0x22 + bls _0209CDA4 + ldrh r2, [r0, #0xc] + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #0x800 + beq _0209CD88 + cmp r1, r5 + beq _0209CD98 + b _0209CDA4 +_0209CD88: + add r0, r0, #0xe + sub r1, r3, #0xe + bl dispatch_ip + b _0209CDA4 +_0209CD98: + add r0, r0, #0xe + sub r1, r3, #0xe + bl dispatch_arp +_0209CDA4: + bl throw_packet + b _0209CD4C + .balign 4 +_0209CDAC: .word 0x00000806 + + arm_func_start dispatch_ip +dispatch_ip: ; 0x0209CDB0 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldrh r12, [r4, #0xc] + ldrh r6, [r4, #0x10] + ldrh r2, [r4, #0xe] + ldrh r0, [r4, #0x12] + mov r5, r6, asr #0x8 + mov r3, r12, asr #0x8 + orr r5, r5, r6, lsl #0x8 + orr r12, r3, r12, lsl #0x8 + mov r3, r5, lsl #0x10 + mov r5, r0, asr #0x8 + mov r12, r12, lsl #0x10 + mov lr, r2, asr #0x8 + mov r6, r3, lsr #0x10 + orr r0, r5, r0, lsl #0x8 + mov r3, r12, lsr #0x10 + orr r2, lr, r2, lsl #0x8 + mov r5, r6, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r0, r5, r0, lsr #0x10 + orr r2, r3, r2, lsr #0x10 + mov r5, r1 + cmp r0, r2 + beq _0209CEF0 + bl ip_isme + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrh r1, [r4, #0x2] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r5, r0, lsr #0x10 + addcc sp, sp, #0x8 + ldmccia sp!, {r4-r6,lr} + bxcc lr + ldrb r1, [r4, #0x0] + mov r0, r4 + and r1, r1, #0xf + mov r1, r1, lsl #0x2 + bl calc_checksum + ldr r1, _0209CFA0 ; =0x0000FFFF + cmp r0, r1 + addne sp, sp, #0x8 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrh r2, [r4, #0x10] + ldrh r12, [r4, #0x12] + ldr r1, _0209CFA4 ; =CPSMyIp + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + ldr r1, [r1, #0x0] + orr r0, r2, r0, lsr #0x10 + cmp r1, r0 + bne _0209CEF0 + ldrh r2, [r4, #0xc] + ldrh r12, [r4, #0xe] + sub r0, r4, #0x8 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + mov r2, #0x1 + bl reg_arprequest +_0209CEF0: + add r1, sp, #0x0 + mov r0, r4 + bl check_frag + movs r4, r0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrh r2, [r4, #0x2] + ldrb r3, [r4, #0x0] + ldrb r12, [r4, #0x9] + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + and r3, r3, #0xf + mov r2, r1, lsr #0x10 + cmp r12, #0x11 + add r1, r4, r3, lsl #0x2 + sub r2, r2, r3, lsl #0x2 + bne _0209CF44 + bl dispatch_udp + b _0209CF70 +_0209CF44: + ldr r3, _0209CFA4 ; =CPSMyIp + ldr r3, [r3, #0x0] + cmp r3, #0x0 + beq _0209CF70 + cmp r12, #0x1 + bne _0209CF64 + bl dispatch_icmp + b _0209CF70 +_0209CF64: + cmp r12, #0x6 + bne _0209CF70 + bl dispatch_tcp +_0209CF70: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, _0209CFA8 ; =CPSiFree + sub r0, r4, #0xe + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209CFA0: .word 0x0000FFFF +_0209CFA4: .word CPSMyIp +_0209CFA8: .word CPSiFree + + arm_func_start check_frag +check_frag: ; 0x0209CFAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r6, #0x0 + mov r10, r0 + str r6, [r1, #0x0] + ldrh r3, [r10, #0x6] + str r1, [sp, #0x0] + ldr r2, _0209D2A4 ; =0x00003FFF + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + str r1, [sp, #0x4] + ands r1, r1, r2 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r1, [r10, #0xc] + ldrh r3, [r10, #0xe] + ldrb r4, [r10, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + and r3, r4, #0xf + ldrh r9, [r10, #0x4] + mov r2, r2, lsl #0x10 + mov r1, r0, lsl #0x10 + ldr r5, _0209D2A8 ; =fragtable + mov r0, r6 + mov r7, r3, lsl #0x2 + orr r4, r2, r1, lsr #0x10 +_0209D034: + ldrh r2, [r5, #0x4] + cmp r2, #0x0 + beq _0209D058 + ldr r1, [r5, #0x0] + cmp r1, r4 + bne _0209D058 + ldrh r1, [r5, #0x6] + cmp r1, r9 + beq _0209D078 +_0209D058: + cmp r2, #0x0 + bne _0209D068 + cmp r6, #0x0 + moveq r6, r5 +_0209D068: + add r0, r0, #0x1 + cmp r0, #0x8 + add r5, r5, #0x38 + blo _0209D034 +_0209D078: + ldrh r2, [r10, #0x2] + cmp r0, #0x8 + ldr r1, _0209D2AC ; =0x00001FFF + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x4] + and r8, r0, r1 + sub r0, r2, r7 + str r0, [sp, #0x8] + mov r0, r8, lsl #0x3 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r11, r0, r8, lsl #0x3 + bne _0209D150 + cmp r6, #0x0 + beq _0209D0C8 + cmp r11, #0x1000 + bls _0209D0D8 +_0209D0C8: + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_0209D0D8: + ldr r1, _0209D2B0 ; =CPSiAlloc + ldr r0, _0209D2B4 ; =0x0000100E + ldr r1, [r1, #0x0] + add r0, r7, r0 + mov r5, r6 + blx r1 + str r0, [r6, #0x34] + ldr r0, [r6, #0x34] + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + str r4, [r6, #0x0] + strh r9, [r6, #0x6] + mov r0, #0x0 + strh r0, [r6, #0x8] + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r6, #0x2c] + ldr r1, [r6, #0x34] + mov r0, r10 + add r1, r1, #0xe + add r1, r1, r7 + str r1, [r6, #0x30] + ldr r1, [r6, #0x34] + mov r2, r7 + add r1, r1, #0xe + bl MI_CpuCopy8 +_0209D150: + ldrh r0, [r5, #0x4] + cmp r0, #0x8 + beq _0209D164 + cmp r11, #0x1000 + bls _0209D18C +_0209D164: + mov r0, #0x0 + strh r0, [r5, #0x4] + ldr r1, _0209D2B8 ; =CPSiFree + ldr r0, [r5, #0x34] + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_0209D18C: + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x8] + add r0, r0, #0x7 + add r1, r8, r0, lsr #0x3 + ldr r0, [sp, #0x4] + ands r0, r0, #0x2000 + streqh r11, [r5, #0xa] + streqh r1, [r5, #0x8] + ldrh r3, [r5, #0x4] + add r0, r10, r7 + add r3, r5, r3, lsl #0x1 + strh r8, [r3, #0xc] + ldrh r3, [r5, #0x4] + add r3, r5, r3, lsl #0x1 + strh r1, [r3, #0x1c] + ldrh r1, [r5, #0x4] + add r1, r1, #0x1 + strh r1, [r5, #0x4] + ldr r3, [r5, #0x30] + ldr r1, [sp, #0xc] + add r1, r3, r1 + bl MI_CpuCopy8 + ldrh r6, [r5, #0x8] + cmp r6, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r7, [r5, #0x4] + mov r3, #0x0 + mov r4, r3 + cmp r7, #0x0 + bls _0209D244 + mov r0, r3 +_0209D214: + add r2, r5, r4, lsl #0x1 + ldrh r1, [r2, #0xc] + cmp r1, r3 + bhi _0209D238 + ldrh r1, [r2, #0x1c] + cmp r3, r1 + movcc r3, r1 + movcc r4, r0 + blo _0209D23C +_0209D238: + add r4, r4, #0x1 +_0209D23C: + cmp r4, r7 + blo _0209D214 +_0209D244: + cmp r3, r6 + addcc sp, sp, #0x14 + movcc r0, #0x0 + ldmccia sp!, {r4-r11,lr} + bxcc lr + ldr r0, [r5, #0x34] + ldrh r3, [r5, #0xa] + ldrb r1, [r0, #0xe] + add r0, r0, #0xe + mov r2, #0x0 + and r1, r1, #0xf + add r1, r3, r1, lsl #0x2 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + strh r1, [r0, #0x2] + strh r2, [r5, #0x4] + ldr r1, [sp, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209D2A4: .word 0x00003FFF +_0209D2A8: .word fragtable +_0209D2AC: .word 0x00001FFF +_0209D2B0: .word CPSiAlloc +_0209D2B4: .word 0x0000100E +_0209D2B8: .word CPSiFree + + arm_func_start dispatch_udp +dispatch_udp: ; 0x0209D2BC + stmdb sp!, {r4-r8,lr} + mov r6, r1 + ldrh r1, [r6, #0x6] + mov r7, r0 + mov r5, r2 + cmp r1, #0x0 + beq _0209D2F8 + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0x11 + bl check_tcpudpsum + cmp r0, #0x0 + ldmneia sp!, {r4-r8,lr} + bxne lr +_0209D2F8: + bl OS_DisableInterrupts + ldr r1, _0209D4D4 ; =OSi_ThreadInfo + mov r8, r0 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0209D4C4 + mvn r12, #0x0 +_0209D314: + ldr r4, [r2, #0xa4] + cmp r4, #0x0 + beq _0209D4B8 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0209D4B8 + ldrb r0, [r4, #0x8] + cmp r0, #0xa + bne _0209D4B8 + ldrh r3, [r6, #0x2] + ldrh r1, [r4, #0xa] + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r1, r0, lsr #0x10 + bne _0209D4B8 + ldrh r3, [r4, #0x18] + cmp r3, #0x0 + beq _0209D378 + ldrh r1, [r6, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r3, r0, lsr #0x10 + bne _0209D4B8 +_0209D378: + ldr r1, [r4, #0x1c] + cmp r1, #0x0 + beq _0209D3C0 + cmp r1, r12 + beq _0209D3C0 + ldrh lr, [r7, #0xc] + ldrh r0, [r7, #0xe] + mov r3, lr, asr #0x8 + orr r3, r3, lr, lsl #0x8 + mov r3, r3, lsl #0x10 + mov lr, r0, asr #0x8 + mov r3, r3, lsr #0x10 + orr r0, lr, r0, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r3, r0, lsr #0x10 + cmp r1, r0 + bne _0209D4B8 +_0209D3C0: + ldrh r1, [r7, #0x10] + ldrh r3, [r7, #0x12] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + str r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + bne _0209D43C + ldrh r1, [r7, #0xc] + ldrh r3, [r7, #0xe] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + str r0, [r4, #0x1c] + ldrh r1, [r6, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r4, #0x18] +_0209D43C: + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209D4C4 + ldr r1, [r4, #0x3c] + sub r0, r5, #0x8 + cmp r0, r1 + strhi r1, [r4, #0x44] + strls r0, [r4, #0x44] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + add r0, r6, #0x8 + bl MI_CpuCopy8 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bne _0209D48C + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + b _0209D4C4 +_0209D48C: + ldr r3, [r4, #0x38] + cmp r3, #0x0 + beq _0209D4C4 + ldr r0, [r4, #0x40] + ldr r1, [r4, #0x44] + mov r2, r4 + blx r3 + cmp r0, #0x0 + movne r0, #0x0 + strne r0, [r4, #0x44] + b _0209D4C4 +_0209D4B8: + ldr r2, [r2, #0x68] + cmp r2, #0x0 + bne _0209D314 +_0209D4C4: + mov r0, r8 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209D4D4: .word OSi_ThreadInfo + + arm_func_start dispatch_tcp +dispatch_tcp: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, r5 + mov r1, r4 + mov r2, r6 + mov r3, #0x6 + bl check_tcpudpsum + cmp r0, #0x0 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrb r0, [r5, #0xc] + ldrb r2, [r5, #0xd] + and r1, r0, #0xf0 + mov r0, r1, asr #0x1 + add r0, r1, r0, lsr #0x1e + and r1, r2, #0x17 + cmp r1, #0x10 + sub r4, r4, r0, asr #0x2 + bgt _0209D558 + cmp r1, #0x10 + bge _0209D5C4 + cmp r1, #0x2 + bgt _0209D5F4 + cmp r1, #0x1 + blt _0209D5F4 + cmp r1, #0x1 + beq _0209D5DC + cmp r1, #0x2 + beq _0209D57C + b _0209D5F4 +_0209D558: + cmp r1, #0x12 + bgt _0209D5F4 + cmp r1, #0x11 + blt _0209D5F4 + cmp r1, #0x11 + beq _0209D5C4 + cmp r1, #0x12 + beq _0209D5A0 + b _0209D5F4 +_0209D57C: + ands r0, r2, #0x28 + ldmneia sp!, {r4-r6,lr} + bxne lr + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl dt_syn + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5A0: + ands r0, r2, #0x28 + ldmneia sp!, {r4-r6,lr} + bxne lr + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl dt_synack + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5C4: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl dt_ack + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5DC: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl dt_fin + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5F4: + ands r0, r2, #0x4 + beq _0209D610 + mov r0, r6 + mov r1, r5 + bl dt_rst + ldmia sp!, {r4-r6,lr} + bx lr +_0209D610: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0x0 + bl tcp_send_rst + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start dt_rst +dt_rst: ; 0x0209D62C + stmdb sp!, {r4,lr} + bl find_socket + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl OS_YieldThread + mov r1, #0x0 + strb r1, [r4, #0x8] + ldr r0, [r4, #0x4] + sub r0, r0, #0x1 + cmp r0, #0x1 + ldmhiia sp!, {r4,lr} + bxhi lr + str r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + ldmia sp!, {r4,lr} + bx lr + + arm_func_start dt_fin +dt_fin: ; 0x0209D674 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl find_socket + movs r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrb r1, [r4, #0x8] + cmp r1, #0x4 + beq _0209D72C + cmp r1, #0x7 + beq _0209D6BC + cmp r1, #0x8 + beq _0209D6E4 + b _0209D754 +_0209D6BC: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl tck_send_ack + mov r0, #0x9 + add sp, sp, #0x4 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r7,lr} + bx lr +_0209D6E4: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl tck_send_ack + mov r1, #0x0 + strb r1, [r4, #0x8] + ldr r0, [r4, #0x4] + cmp r0, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + str r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209D72C: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl tck_send_finack + mov r0, #0x6 + add sp, sp, #0x4 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r7,lr} + bx lr +_0209D754: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x0 + bl tcp_send_rst + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start dt_ack +dt_ack: ; 0x0209D774 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl find_socket + movs r5, r0 + bne _0209D7B4 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x0 + bl tcp_send_rst + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_0209D7B4: + ldrh r3, [r7, #0x8] + ldrh r1, [r7, #0xa] + ldrb r4, [r7, #0xd] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r1, asr #0x8 + mov r2, r2, lsr #0x10 + orr r1, r3, r1, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + str r1, [r5, #0x30] + ldrh r9, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldrb r3, [r5, #0x8] + mov r2, r9, asr #0x8 + orr r2, r2, r9, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r9, r1, asr #0x8 + mov r2, r2, lsr #0x10 + orr r1, r9, r1, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + cmp r3, #0x4 + orr r2, r2, r1, lsr #0x10 + bne _0209D840 + ldr r1, [r5, #0x24] + cmp r1, r2 + beq _0209D840 + mov r1, #0x0 + bl tck_send_ack + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_0209D840: + ldrh r1, [r7, #0xe] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r5, #0x2c] + ldrb r0, [r5, #0x8] + cmp r0, #0x9 + addls pc, pc, r0, lsl #0x2 + b _0209DA70 +_0209D860: ; jump table + b _0209D888 ; case 0 + b _0209DA70 ; case 1 + b _0209D888 ; case 2 + b _0209D8A0 ; case 3 + b _0209D8CC ; case 4 + b _0209DA70 ; case 5 + b _0209DA4C ; case 6 + b _0209D9D8 ; case 7 + b _0209D9D8 ; case 8 + b _0209DA4C ; case 9 +_0209D888: + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x0 + bl tcp_send_rst + b _0209DA8C +_0209D8A0: + mov r0, #0x4 + strb r0, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x1 + bne _0209D8C4 + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect +_0209D8C4: + cmp r6, #0x0 + beq _0209DA8C +_0209D8CC: + ldr r0, [r5, #0x34] + add r0, r0, #0x1 + str r0, [r5, #0x34] + ldr r1, [r5, #0x3c] + ldr r0, [r5, #0x44] + sub r0, r1, r0 + cmp r6, r0 + movhi r9, #0x0 + movhi r6, r0 + movls r9, #0x1 + cmp r6, #0x0 + beq _0209D968 + bl OS_DisableInterrupts + ldrb r1, [r7, #0xc] + ldr r12, [r5, #0x40] + ldr r3, [r5, #0x44] + and r2, r1, #0xf0 + mov r1, r2, asr #0x1 + add r1, r2, r1, lsr #0x1e + mov r8, r0 + mov r2, r6 + add r0, r7, r1, asr #0x2 + add r1, r12, r3 + bl MI_CpuCopy8 + ldr r1, [r5, #0x44] + mov r0, r8 + add r1, r1, r6 + str r1, [r5, #0x44] + ldr r1, [r5, #0x24] + add r1, r1, r6 + str r1, [r5, #0x24] + bl OS_RestoreInterrupts + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209D968 + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect +_0209D968: + cmp r9, #0x0 + beq _0209D9C0 + ands r0, r4, #0x1 + beq _0209D9C0 + mov r0, #0x6 + strb r0, [r5, #0x8] + ldr r1, [r5, #0x24] + mov r0, r5 + add r2, r1, #0x1 + mov r1, #0x0 + str r2, [r5, #0x24] + bl tck_send_finack + cmp r6, #0x0 + bne _0209DA8C + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209D9C0: + cmp r6, #0x0 + beq _0209DA8C + mov r0, r5 + mov r1, #0x0 + bl tck_send_ack + b _0209DA8C +_0209D9D8: + ands r0, r4, #0x1 + beq _0209DA20 + ldr r1, [r5, #0x24] + add r0, r6, #0x1 + add r2, r1, r0 + mov r0, r5 + mov r1, #0x0 + str r2, [r5, #0x24] + bl tck_send_ack + mov r1, #0x0 + strb r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + str r1, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209DA20: + cmp r6, #0x0 + beq _0209DA40 + ldr r1, [r5, #0x24] + mov r0, r5 + add r2, r1, r6 + mov r1, #0x0 + str r2, [r5, #0x24] + bl tck_send_ack +_0209DA40: + mov r0, #0x8 + strb r0, [r5, #0x8] + b _0209DA8C +_0209DA4C: + mov r1, #0x0 + strb r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + str r1, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209DA70: + ands r0, r4, #0x1 + ldrne r0, [r5, #0x24] + mov r1, #0x0 + addne r0, r0, #0x1 + strne r0, [r5, #0x24] + mov r0, r5 + bl tck_send_ack +_0209DA8C: + bl OS_YieldThread + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start dt_synack +dt_synack: ; 0x0209DA9C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r5, r1 + mov r6, r2 + bl find_socket + movs r4, r0 + beq _0209DAC8 + ldrb r0, [r4, #0x8] + cmp r0, #0x2 + beq _0209DAE8 +_0209DAC8: + mov r0, r7 + mov r1, r5 + mov r2, r6 + mov r3, #0x0 + bl tcp_send_rst + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209DAE8: + bl OS_YieldThread + ldrh r2, [r5, #0x4] + ldrh r12, [r5, #0x6] + mov r0, r5 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + add r1, r1, #0x1 + str r1, [r4, #0x24] + ldrh r3, [r5, #0x8] + ldrh lr, [r5, #0xa] + mov r1, r4 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, lr, asr #0x8 + mov r12, r2, lsr #0x10 + orr r2, r3, lr, lsl #0x8 + mov r3, r12, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + str r2, [r4, #0x30] + ldrh r3, [r5, #0xe] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + strh r2, [r4, #0x2c] + bl parse_mss + mov r0, r4 + mov r1, #0x0 + bl tck_send_ack + mov r0, #0x4 + strb r0, [r4, #0x8] + ldr r0, [r4, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start dt_syn +dt_syn: ; 0x0209DBB0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldrh r12, [r4, #0x10] + ldrh r7, [r4, #0xc] + ldrh r3, [r4, #0x12] + mov r5, r12, asr #0x8 + mov r6, r7, asr #0x8 + orr r5, r5, r12, lsl #0x8 + orr r6, r6, r7, lsl #0x8 + mov r12, r6, lsl #0x10 + ldrh r0, [r4, #0xe] + mov lr, r5, lsl #0x10 + mov r5, r3, asr #0x8 + mov r6, r0, asr #0x8 + mov r7, r12, lsr #0x10 + orr r0, r6, r0, lsl #0x8 + orr r3, r5, r3, lsl #0x8 + mov r12, lr, lsr #0x10 + mov r6, r7, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r5, r12, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r7, r1 + orr r1, r5, r3, lsr #0x10 + orr r0, r6, r0, lsr #0x10 + mov r5, r2 + bl valid_IP + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r4 + mov r1, r7 + mov r2, r5 + bl find_specific_socket + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + mov r0, r4 + mov r1, r7 + bl check_listener + movs r2, r0 + beq _0209DC7C + mov r0, r4 + mov r1, r7 + bl dt_syn_LISTEN + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209DC7C: + bl OS_YieldThread + mov r0, r4 + mov r1, r7 + bl check_listener + movs r2, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r4 + mov r1, r7 + bl dt_syn_LISTEN + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start find_specific_socket +find_specific_socket: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl find_socket + movs r2, r0 + beq _0209DD38 + ldrb r0, [r2, #0x8] + cmp r0, #0x1 + bne _0209DCEC + mov r0, r6 + mov r1, r5 + bl dt_syn_LISTEN + b _0209DD2C +_0209DCEC: + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209DD18 + ldr r1, [r2, #0x28] + mov r0, r6 + sub r3, r1, #0x1 + mov r1, r5 + str r3, [r2, #0x28] + bl dt_syn_LISTEN + b _0209DD2C +_0209DD18: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0x0 + bl tcp_send_rst +_0209DD2C: + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_0209DD38: + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start dt_syn_LISTEN +dt_syn_LISTEN: ; 0x0209DD44 + stmdb sp!, {r4-r6,lr} + mov r4, r2 + mov r2, #0x3 + mov r6, r0 + mov r5, r1 + strb r2, [r4, #0x8] + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r4, #0x10] + ldrh r2, [r6, #0x10] + ldrh r3, [r6, #0x12] + mov r0, r5 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r1, r1, lsr #0x10 + mov r3, r1, lsl #0x10 + mov r1, r2, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + str r1, [r4, #0x14] + ldrh r3, [r5, #0x0] + mov r1, r4 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + strh r2, [r4, #0x18] + ldrh r3, [r6, #0xc] + ldrh r6, [r6, #0xe] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r6, asr #0x8 + orr r3, r3, r6, lsl #0x8 + mov r2, r2, lsr #0x10 + mov r6, r2, lsl #0x10 + mov r2, r3, lsl #0x10 + orr r2, r6, r2, lsr #0x10 + str r2, [r4, #0x1c] + ldrh r3, [r5, #0x4] + ldrh r6, [r5, #0x6] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r6, asr #0x8 + mov r5, r2, lsr #0x10 + orr r2, r3, r6, lsl #0x8 + mov r3, r5, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl parse_mss + mov r0, r4 + mov r1, #0x12 + mov r2, #0x0 + bl tcp_send_handshake + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start tcp_send_rst +tcp_send_rst: ; 0x0209DE34 + stmdb sp!, {r4-r8,lr} + ldr r4, _0209DF6C ; =tmpsoc + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r0, r4 + mov r1, #0x0 + mov r2, #0x64 + mov r5, r3 + bl MI_CpuFill8 + ldrh r2, [r7, #0x2] + mov r1, r4 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0xa] + ldrh r2, [r7, #0x0] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0x18] + ldrh r2, [r8, #0xc] + ldrh r8, [r8, #0xe] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r8, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r2, r8, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r2, r0, lsr #0x10 + str r0, [r1, #0x1c] + ldrb r0, [r7, #0xd] + ands r0, r0, #0x10 + beq _0209DF04 + ldrh r2, [r7, #0x8] + ldrh r6, [r7, #0xa] + mov r0, r4 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r6, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r6, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r3, r2, r1, lsr #0x10 + mov r2, r5 + mov r1, #0x4 + str r3, [r4, #0x28] + bl tcp_send_handshake + ldmia sp!, {r4-r8,lr} + bx lr +_0209DF04: + mov r0, #0x0 + str r0, [r4, #0x28] + ldrh r1, [r7, #0x4] + ldrh r3, [r7, #0x6] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + add r0, r6, r0 + str r0, [r4, #0x24] + ldrb r0, [r7, #0xd] + mov r2, r5 + mov r1, #0x14 + ands r0, r0, #0x3 + ldrne r0, [r4, #0x24] + addne r0, r0, #0x1 + strne r0, [r4, #0x24] + mov r0, r4 + bl tcp_send_handshake + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209DF6C: .word tmpsoc + + arm_func_start tck_send_finack +tck_send_finack: + ldr ip, _0209DF80 ; =tcp_send_handshake + mov r2, r1 + mov r1, #0x11 + bx r12 + .balign 4 +_0209DF80: .word tcp_send_handshake + + arm_func_start tck_send_ack +tck_send_ack: ; 0x0209DF84 + ldr ip, _0209DF94 ; =tcp_send_handshake + mov r2, r1 + mov r1, #0x10 + bx r12 + .balign 4 +_0209DF94: .word tcp_send_handshake + + arm_func_start tcp_send_handshake +tcp_send_handshake: ; 0x0209DF98 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + ldr r0, [r6, #0x1c] + mov r5, r1 + mov r4, r2 + bl no_need_inq + cmp r0, #0x0 + bne _0209DFD0 + ldr r0, _0209E00C ; =OSi_ThreadInfo + ldr r1, _0209E010 ; =tcpip_thread + ldr r0, [r0, #0x4] + cmp r0, r1 + beq _0209DFF4 +_0209DFD0: + mov r0, #0x0 + mov r1, r0 + mov r2, r6 + mov r3, r5 + str r4, [sp, #0x0] + bl send_tcp + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr +_0209DFF4: + ldr r0, [r6, #0x1c] + bl get_targetip + bl send_arprequest + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209E00C: .word OSi_ThreadInfo +_0209E010: .word tcpip_thread + + arm_func_start no_need_inq +no_need_inq: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl get_targetip + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {lr} + bxeq lr + bl inq_arpcache + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start parse_mss +parse_mss: ; 0x0209E044 + mov r2, #0x218 + strh r2, [r1, #0x2e] + ldrb r2, [r0, #0xc] + add r3, r0, #0x14 + and r2, r2, #0xf0 + mov r0, r2, asr #0x1 + add r0, r2, r0, lsr #0x1e + mov r0, r0, asr #0x2 + subs r0, r0, #0x14 + sub r12, r0, #0x1 + bxeq lr +_0209E070: + ldrb r0, [r3], #0x1 + cmp r0, #0x0 + bxeq lr + cmp r0, #0x1 + beq _0209E0B8 + cmp r0, #0x2 + bne _0209E0A8 + ldrb r2, [r3, #0x1] + ldrb r0, [r3, #0x2] + add r3, r3, #0x3 + sub r12, r12, #0x3 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0x2e] + b _0209E0B8 +_0209E0A8: + ldrb r0, [r3, #0x0] + sub r0, r0, #0x1 + sub r12, r12, r0 + add r3, r3, r0 +_0209E0B8: + cmp r12, #0x0 + sub r12, r12, #0x1 + bne _0209E070 + bx lr + + arm_func_start find_socket +find_socket: ; 0x0209E0C8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r2, _0209E140 ; =OSi_ThreadInfo + mov r7, r0 + ldr r4, [r2, #0x8] + mov r6, r1 + cmp r4, #0x0 + beq _0209E130 +_0209E0E8: + ldr r5, [r4, #0xa4] + cmp r5, #0x0 + beq _0209E124 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _0209E124 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl check_socket + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r7,lr} + bxne lr +_0209E124: + ldr r4, [r4, #0x68] + cmp r4, #0x0 + bne _0209E0E8 +_0209E130: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E140: .word OSi_ThreadInfo + + arm_func_start check_socket +check_socket: + stmdb sp!, {r4-r6,lr} + ldrb r4, [r2, #0x8] + mov r12, #0x0 + mov r3, r12 + mov r6, r12 + mov r5, r12 + cmp r4, #0xa + beq _0209E16C + cmp r4, #0xb + movne r5, #0x1 +_0209E16C: + cmp r5, #0x0 + beq _0209E190 + ldrh lr, [r1, #0x2] + ldrh r5, [r2, #0xa] + mov r4, lr, asr #0x8 + orr r4, r4, lr, lsl #0x8 + mov lr, r4, lsl #0x10 + cmp r5, lr, lsr #0x10 + moveq r6, #0x1 +_0209E190: + cmp r6, #0x0 + beq _0209E1B4 + ldrh r4, [r1, #0x0] + ldrh lr, [r2, #0x18] + mov r1, r4, asr #0x8 + orr r1, r1, r4, lsl #0x8 + mov r1, r1, lsl #0x10 + cmp lr, r1, lsr #0x10 + moveq r3, #0x1 +_0209E1B4: + cmp r3, #0x0 + beq _0209E1F4 + ldrh r1, [r0, #0xc] + ldrh lr, [r0, #0xe] + ldr r3, [r2, #0x1c] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, lr, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, lr, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + cmp r3, r0 + moveq r12, #0x1 +_0209E1F4: + mov r0, r12 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start check_listener +check_listener: ; 0x0209E200 + stmdb sp!, {r4-r6,lr} + ldr r2, _0209E2DC ; =OSi_ThreadInfo + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _0209E2D0 +_0209E214: + ldr r12, [r3, #0xa4] + cmp r12, #0x0 + beq _0209E2C4 + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _0209E2C4 + ldrb r2, [r12, #0x8] + cmp r2, #0x1 + bne _0209E2C4 + ldrh r5, [r1, #0x2] + ldrh r4, [r12, #0xa] + mov r2, r5, asr #0x8 + orr r2, r2, r5, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r4, r2, lsr #0x10 + bne _0209E2C4 + ldrh r5, [r12, #0x18] + cmp r5, #0x0 + beq _0209E278 + ldrh r4, [r1, #0x0] + mov r2, r4, asr #0x8 + orr r2, r2, r4, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r5, r2, lsr #0x10 + bne _0209E2C4 +_0209E278: + ldr r2, [r12, #0x1c] + cmp r2, #0x0 + beq _0209E2B8 + ldrh r5, [r0, #0xc] + ldrh r6, [r0, #0xe] + mov r4, r5, asr #0x8 + orr r4, r4, r5, lsl #0x8 + mov lr, r4, lsl #0x10 + mov r4, r6, asr #0x8 + mov lr, lr, lsr #0x10 + orr r4, r4, r6, lsl #0x8 + mov r5, lr, lsl #0x10 + mov lr, r4, lsl #0x10 + orr r4, r5, lr, lsr #0x10 + cmp r2, r4 + bne _0209E2C4 +_0209E2B8: + mov r0, r12 + ldmia sp!, {r4-r6,lr} + bx lr +_0209E2C4: + ldr r3, [r3, #0x68] + cmp r3, #0x0 + bne _0209E214 +_0209E2D0: + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209E2DC: .word OSi_ThreadInfo + + arm_func_start dispatch_icmp +dispatch_icmp: ; 0x0209E2E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r0, r5 + mov r1, r4 + bl calc_checksum + ldr r1, _0209E3D8 ; =0x0000FFFF + cmp r0, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r12, [r6, #0x10] + ldrh r7, [r6, #0xc] + ldrh r0, [r6, #0xe] + ldrh r1, [r6, #0x12] + mov r3, r7, asr #0x8 + mov lr, r0, asr #0x8 + orr r0, lr, r0, lsl #0x8 + mov r2, r12, asr #0x8 + orr r7, r3, r7, lsl #0x8 + orr r3, r2, r12, lsl #0x8 + mov r2, r7, lsl #0x10 + mov r12, r1, asr #0x8 + orr r1, r12, r1, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r7, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + mov r3, r7, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r0, r3, r0, lsr #0x10 + orr r1, r2, r1, lsr #0x10 + bl valid_IP + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrb r0, [r5, #0x0] + cmp r0, #0x0 + beq _0209E3A0 + cmp r0, #0x8 + beq _0209E3BC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E3A0: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl process_icmp_reply + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E3BC: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl reply_icmp + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E3D8: .word 0x0000FFFF + + arm_func_start valid_IP +valid_IP: + cmp r0, #0x0 + beq _0209E404 + mvn r2, #0x0 + cmp r0, r2 + beq _0209E404 + cmp r1, #0x0 + beq _0209E404 + cmp r1, r2 + movne r0, #0x1 + bxne lr +_0209E404: + mov r0, #0x0 + bx lr + + arm_func_start process_icmp_reply +process_icmp_reply: ; 0x0209E40C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r1, _0209E520 ; =OSi_ThreadInfo + mov r8, r0 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0209E510 +_0209E434: + ldr r4, [r2, #0xa4] + cmp r4, #0x0 + beq _0209E504 + ldr r3, [r4, #0x0] + cmp r3, #0x0 + beq _0209E504 + ldrb r0, [r4, #0x8] + cmp r0, #0xb + bne _0209E504 + ldrh r1, [r6, #0x4] + mov r0, r3, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r1 + bne _0209E504 + ldrh r1, [r4, #0xa] + ldrh r0, [r6, #0x6] + cmp r1, r0 + bne _0209E504 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209E504 + ldrh r12, [r7, #0xc] + ldrh r1, [r7, #0xe] + ldr r0, [r4, #0x1c] + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r12, r1, asr #0x8 + mov r3, r3, lsr #0x10 + orr r1, r12, r1, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + cmp r0, r1 + bne _0209E504 + ldr r1, [r4, #0x3c] + sub r0, r5, #0x8 + cmp r0, r1 + strhi r1, [r4, #0x44] + strls r0, [r4, #0x44] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + add r0, r6, #0x8 + bl MI_CpuCopy8 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bne _0209E510 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + b _0209E510 +_0209E504: + ldr r2, [r2, #0x68] + cmp r2, #0x0 + bne _0209E434 +_0209E510: + mov r0, r8 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209E520: .word OSi_ThreadInfo + + arm_func_start reply_icmp +reply_icmp: ; 0x0209E524 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r6, r0 + ldrh r3, [r6, #0xc] + ldrh r4, [r6, #0xe] + mov r5, r1 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r4, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r1, r4, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + mov r4, r2 + bl get_targetip + movs r7, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl inq_arpcache + cmp r0, #0x0 + bne _0209E598 + mov r0, r7 + bl send_arprequest + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr +_0209E598: + mov r2, #0x0 + strb r2, [r5, #0x0] + mov r0, r5 + mov r1, r4 + strh r2, [r5, #0x2] + bl calc_checksum + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r5, #0x2] + ldrh r1, [r6, #0xc] + ldrh r6, [r6, #0xe] + mov r2, #0x0 + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r6, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r1, r6, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r6, r1, r0, lsr #0x10 + mov r0, r5 + mov r1, r4 + mov r3, r2 + str r6, [sp, #0x0] + mov r4, #0x1 + str r4, [sp, #0x4] + bl send_ip + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start dispatch_arp +dispatch_arp: ; 0x0209E614 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + cmp r1, #0x1c + mov r6, r0 + addcc sp, sp, #0x4 + ldmccia sp!, {r4-r7,lr} + bxcc lr + ldr r1, _0209E7BC ; =CPSMyMac + add r0, r6, #0x8 + bl maccmp + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _0209E7C0 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrh r0, [r6, #0x0] + cmp r0, #0x100 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r0, [r6, #0x2] + cmp r0, #0x8 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r1, [r6, #0x4] + ldr r0, _0209E7C4 ; =0x00000406 + cmp r1, r0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r1, [r6, #0x6] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + cmp r4, #0x1 + beq _0209E6D0 + cmp r4, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr +_0209E6D0: + ldrh r1, [r6, #0xe] + ldrh r5, [r6, #0x10] + ldr r2, _0209E7C0 ; =CPSMyIp + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r1, r5, asr #0x8 + orr r0, r1, r5, lsl #0x8 + mov r1, r0, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + ldr r0, [r2, #0x0] + ldrh r3, [r6, #0x18] + ldrh lr, [r6, #0x1a] + cmp r1, r0 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + moveq r5, #0x1 + mov r3, lr, asr #0x8 + mov r12, r2, lsr #0x10 + orr r2, r3, lr, lsl #0x8 + mov r3, r12, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + movne r5, #0x0 + cmp r0, r2 + moveq r7, #0x1 + movne r7, #0x0 + cmp r5, #0x0 + bne _0209E75C + mov r2, r7 + add r0, r6, #0x8 + bl reg_arprequest +_0209E75C: + cmp r4, #0x1 + bne _0209E780 + cmp r7, #0x0 + beq _0209E780 + mov r0, r6 + bl reply_arp + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E780: + cmp r4, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r7, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r5, #0x0 + ldrne r0, _0209E7C8 ; =ip_conflict + movne r1, #0x1 + strneb r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E7BC: .word CPSMyMac +_0209E7C0: .word CPSMyIp +_0209E7C4: .word 0x00000406 +_0209E7C8: .word ip_conflict + + arm_func_start reply_arp +reply_arp: ; 0x0209E7CC + stmdb sp!, {r4,lr} + mov r4, r0 + mov r3, #0x200 + add r0, r4, #0x8 + add r1, r4, #0x12 + mov r2, #0xa + strh r3, [r4, #0x6] + bl MI_CpuCopy8 + ldr r0, _0209E870 ; =CPSMyMac + add r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r3, _0209E874 ; =CPSMyIp + add r0, r4, #0x12 + ldr r2, [r3, #0x0] + sub r1, r4, #0xe + mov r2, r2, lsr #0x10 + mov r2, r2, lsl #0x10 + mov r12, r2, lsr #0x10 + mov r2, r12, asr #0x8 + orr r2, r2, r12, lsl #0x8 + strh r2, [r4, #0xe] + ldr r3, [r3, #0x0] + mov r2, #0x6 + mov r3, r3, lsl #0x10 + mov r12, r3, lsr #0x10 + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldr r0, _0209E870 ; =CPSMyMac + sub r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + sub r0, r4, #0xe + mov r1, #0x2a + mov r2, #0x0 + mov r3, r2 + bl send_packet + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209E870: .word CPSMyMac +_0209E874: .word CPSMyIp + + arm_func_start send_tcp +send_tcp: ; 0x0209E878 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r7, r2 + ldrb r2, [r7, #0x8] + mov r9, r0 + mov r8, r1 + cmp r2, #0x0 + mov r6, r3 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, _0209EAEC ; =OSi_ThreadInfo + ldr r3, _0209EAF0 ; =CPSMyIp + ldr r1, _0209EAF4 ; =tcpip_thread + ldr r0, [r0, #0x4] + ldr r12, [r3, #0x0] + cmp r0, r1 + ldreq r4, _0209EAF8 ; =tmpbuf + 0x22 + ldrne r0, [r7, #0x4c] + addne r4, r0, #0x22 + ands r0, r6, #0x2 + movne r5, #0x18 + moveq r5, #0x14 + add r1, r5, r8 + mov r2, r1, lsl #0x10 + mov r1, r12, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + mov r1, r12, asr #0x8 + orr r1, r1, r12, lsl #0x8 + strh r1, [r4, #-0xc] + ldr r1, [r3, #0x0] + mov r12, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0xa] + ldr r1, [r7, #0x1c] + mov r3, r12, asr #0x8 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0x8] + ldr r1, [r7, #0x1c] + mov r2, r5, lsr #0x2 + mov r1, r1, lsl #0x10 + mov lr, r1, lsr #0x10 + mov r1, lr, asr #0x8 + orr r1, r1, lr, lsl #0x8 + strh r1, [r4, #-0x6] + mov r1, #0x600 + strh r1, [r4, #-0x4] + orr r1, r3, r12, lsl #0x8 + strh r1, [r4, #-0x2] + ldrh r12, [r7, #0xa] + cmp r0, #0x0 + mov r2, r2, lsl #0x4 + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + strh r3, [r4, #0x0] + ldrh r3, [r7, #0x18] + mov r1, #0x0 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x2] + ldr r0, [r7, #0x28] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x4] + ldr r0, [r7, #0x28] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x6] + ldr r0, [r7, #0x24] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x8] + ldr r0, [r7, #0x24] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0xa] + strb r2, [r4, #0xc] + strb r6, [r4, #0xd] + ldr r2, [r7, #0x3c] + ldr r0, [r7, #0x44] + sub r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + strh r1, [r4, #0x12] + beq _0209EA64 + ldr r1, _0209EAFC ; =mymss + ldrh r0, [r1, #0x0] + add r0, r0, #0x2040000 + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r4, #0x14] + ldrh r0, [r1, #0x0] + add r0, r0, #0x2040000 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r4, #0x16] +_0209EA64: + sub r0, r4, #0xc + add r1, r5, #0xc + mov r2, #0x0 + bl calc_checksum_do + mov r2, r0 + mov r0, r9 + mov r1, r8 + bl calc_checksum_do + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl invert_checksum + mov r3, r0, asr #0x8 + orr r0, r3, r0, lsl #0x8 + strh r0, [r4, #0x10] + mov r0, r4 + ldr r4, [r7, #0x1c] + mov r3, #0x6 + str r4, [sp, #0x0] + str r3, [sp, #0x4] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl send_ip + ands r0, r6, #0x3 + ldr r0, [r7, #0x28] + add r1, r7, #0x28 + add r0, r0, r8 + str r0, [r7, #0x28] + ldrne r0, [r1, #0x0] + addne r0, r0, #0x1 + strne r0, [r1, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209EAEC: .word OSi_ThreadInfo +_0209EAF0: .word CPSMyIp +_0209EAF4: .word tcpip_thread +_0209EAF8: .word tmpbuf + 0x22 +_0209EAFC: .word mymss + + arm_func_start send_udp +send_udp: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r7, _0209EC3C ; =CPSMyIp + mov r5, r2 + ldr r2, [r7, #0x0] + mov r6, r1 + mov r1, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + ldr r3, [r5, #0x4c] + mov r1, r2, asr #0x8 + add r4, r3, #0x22 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0xc] + ldr r1, [r7, #0x0] + add r2, r6, #0x8 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r1, r1, r7, lsl #0x8 + strh r1, [r4, #-0xa] + ldr r1, [r5, #0x1c] + mov r2, r2, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r1, r1, r7, lsl #0x8 + strh r1, [r4, #-0x8] + ldr r1, [r5, #0x1c] + mov r2, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r7, r1, r7, lsl #0x8 + mov r1, r2, asr #0x8 + strh r7, [r4, #-0x6] + mov r7, #0x1100 + strh r7, [r4, #-0x4] + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #0x4] + ldrh r1, [r4, #0x4] + mov r7, r0 + sub r0, r4, #0xc + strh r1, [r4, #-0x2] + ldrh lr, [r5, #0x18] + mov r2, #0x0 + mov r1, #0x14 + mov r12, lr, asr #0x8 + orr r12, r12, lr, lsl #0x8 + strh r12, [r4, #0x2] + ldrh lr, [r5, #0xa] + mov r12, lr, asr #0x8 + orr r12, r12, lr, lsl #0x8 + strh r12, [r3, #0x22] + strh r2, [r4, #0x6] + bl calc_checksum_do + mov r2, r0 + mov r0, r7 + mov r1, r6 + bl calc_checksum_do + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl invert_checksum + mov r2, r7 + mov r3, r6 + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r4, #0x6] + ldr r1, [r5, #0x1c] + mov r0, r4 + str r1, [sp, #0x0] + mov r1, #0x11 + str r1, [sp, #0x4] + mov r1, #0x8 + bl send_ip + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209EC3C: .word CPSMyIp + + arm_func_start send_ping +send_ping: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r5, r2 + ldr r3, [r5, #0x4c] + mov r6, r1 + mov r1, #0x8 + ldr r2, _0209ECF4 ; =OSi_ThreadInfo + strh r1, [r3, #0x22] + ldr r2, [r2, #0x4] + add r4, r3, #0x22 + strh r2, [r4, #0x4] + mov r2, #0x0 + ldr r3, _0209ECF8 ; =UNK_021C8EB4 + strh r2, [r4, #0x2] + ldrh lr, [r3, #0x0] + mov r7, r0 + mov r0, r4 + strh lr, [r5, #0xa] + ldrh r12, [r3, #0x0] + add r12, r12, #0x1 + strh r12, [r3, #0x0] + strh lr, [r4, #0x6] + bl calc_checksum_do + mov r2, r0 + mov r0, r7 + mov r1, r6 + bl calc_checksum_do + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl invert_checksum + mov r2, r7 + mov r3, r6 + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r4, #0x2] + ldr r1, [r5, #0x1c] + mov r0, r4 + str r1, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r1, #0x8 + bl send_ip + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209ECF4: .word OSi_ThreadInfo +_0209ECF8: .word UNK_021C8EB4 + + arm_func_start send_ip +send_ip: ; 0x0209ECFC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + mov r0, #0x45 + strb r0, [r10, #-0x14] + mov r5, #0x0 + ldr r0, _0209EF0C ; =ipid + strb r5, [r10, #-0x13] + ldrh r7, [r0, #0x0] + ldr r6, [sp, #0x30] + ldrb r4, [sp, #0x34] + add r7, r7, #0x1 + strh r7, [r0, #0x0] + ldrh r9, [r0, #0x0] + mov r0, r6, lsr #0x10 + mov r7, #0x80 + mov r8, r9, asr #0x8 + orr r8, r8, r9, lsl #0x8 + strh r8, [r10, #-0x10] + strb r7, [r10, #-0xc] + ldr r7, _0209EF10 ; =CPSMyIp + strb r4, [r10, #-0xb] + ldr r8, [r7, #0x0] + mov r4, r0, lsl #0x10 + mov r0, r8, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r0, r8, asr #0x8 + orr r0, r0, r8, lsl #0x8 + strh r0, [r10, #-0x8] + ldr r0, [r7, #0x0] + mov r8, r4, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + mov r4, r7, asr #0x8 + mov r0, r6, lsl #0x10 + orr r9, r4, r7, lsl #0x8 + mov r7, r8, asr #0x8 + mov r4, r0, lsr #0x10 + mov r0, r4, asr #0x8 + strh r9, [r10, #-0x6] + orr r7, r7, r8, lsl #0x8 + ldr fp, _0209EF14 ; =0x000005C8 + mov r9, r1 + strh r7, [r10, #-0x4] + orr r0, r0, r4, lsl #0x8 + mov r8, r2 + mov r7, r3 + strh r0, [r10, #-0x2] + cmp r9, r11 + bls _0209EE74 + mov r4, r10 + cmp r9, r11 + bls _0209EE14 + str r5, [sp, #0x8] +_0209EDD8: + ldr r1, [sp, #0x8] + mov r0, r10 + mov r2, r4 + mov r3, r11 + str r6, [sp, #0x0] + orr r12, r5, #0x2000 + str r12, [sp, #0x4] + bl send_ip_frag + add r0, r5, #0xb9 + sub r9, r9, r11 + mov r0, r0, lsl #0x10 + cmp r9, r11 + add r4, r4, r11 + mov r5, r0, lsr #0x10 + bhi _0209EDD8 +_0209EE14: + cmp r9, #0x0 + beq _0209EE74 + cmp r7, #0x0 + beq _0209EE48 + mov r0, r10 + mov r2, r4 + mov r3, r9 + str r6, [sp, #0x0] + orr r4, r5, #0x2000 + mov r1, #0x0 + str r4, [sp, #0x4] + bl send_ip_frag + b _0209EE64 +_0209EE48: + str r6, [sp, #0x0] + mov r0, r10 + mov r2, r4 + mov r3, r9 + mov r1, #0x0 + str r5, [sp, #0x4] + bl send_ip_frag +_0209EE64: + add r0, r5, r9, lsr #0x3 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + mov r9, #0x0 +_0209EE74: + ldr r0, _0209EF14 ; =0x000005C8 + add r1, r9, r7 + cmp r1, r0 + bls _0209EED4 + mov r11, #0x0 +_0209EE88: + ldr r0, _0209EF14 ; =0x000005C8 + mov r1, r9 + sub r4, r0, r9 + mov r0, r10 + mov r2, r8 + mov r3, r4 + str r6, [sp, #0x0] + orr r9, r5, #0x2000 + str r9, [sp, #0x4] + bl send_ip_frag + add r0, r5, #0xb9 + mov r1, r0, lsl #0x10 + ldr r0, _0209EF14 ; =0x000005C8 + sub r7, r7, r4 + mov r9, r11 + cmp r7, r0 + add r8, r8, r4 + mov r5, r1, lsr #0x10 + bhi _0209EE88 +_0209EED4: + adds r0, r9, r7 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,lr} + bxeq lr + str r6, [sp, #0x0] + mov r0, r10 + mov r1, r9 + mov r2, r8 + mov r3, r7 + str r5, [sp, #0x4] + bl send_ip_frag + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209EF0C: .word ipid +_0209EF10: .word CPSMyIp +_0209EF14: .word 0x000005C8 + + arm_func_start send_ip_frag +send_ip_frag: ; 0x0209EF18 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r1 + mov r5, r3 + add r1, r7, #0x14 + add r1, r1, r5 + ldr r3, [sp, #0x24] + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + mov r1, r3, lsl #0x10 + mov r3, r4, asr #0x8 + mov r1, r1, lsr #0x10 + mov r8, r0 + orr r3, r3, r4, lsl #0x8 + mov r0, r1, asr #0x8 + strh r3, [r8, #-0x12] + orr r0, r0, r1, lsl #0x8 + strh r0, [r8, #-0xe] + mov r3, #0x0 + sub r0, r8, #0x14 + mov r1, #0x14 + mov r6, r2 + strh r3, [r8, #-0xa] + ldr r4, [sp, #0x20] + bl calc_checksum + mov r2, r0, asr #0x8 + ldr r1, _0209F040 ; =0x7F000001 + orr r0, r2, r0, lsl #0x8 + strh r0, [r8, #-0xa] + cmp r4, r1 + beq _0209EFC4 + ldr r0, _0209F044 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r4, r0 + beq _0209EFC4 + mov r2, r6 + mov r3, r5 + str r4, [sp, #0x0] + mov r12, #0x800 + sub r0, r8, #0x14 + add r1, r7, #0x14 + str r12, [sp, #0x4] + bl send_ether +_0209EFC4: + ldr r0, _0209F040 ; =0x7F000001 + cmp r4, r0 + beq _0209EFF8 + ldr r0, _0209F044 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r4, r0 + beq _0209EFF8 + mov r0, r4 + bl is_multicast + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr +_0209EFF8: + ldr r0, _0209F048 ; =UNK_02106230 + sub r1, r8, #0x1c + mov r2, #0x8 + bl MI_CpuCopy8 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _0209F04C ; =CPSMyMac + str r6, [sp, #0x0] + mov r1, r0 + str r5, [sp, #0x4] + sub r2, r8, #0x1c + add r3, r7, #0x1c + bl put_in_buffer + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F040: .word 0x7F000001 +_0209F044: .word CPSMyIp +_0209F048: .word UNK_02106230 +_0209F04C: .word CPSMyMac + + arm_func_start send_ether +send_ether: ; 0x0209F050 + stmdb sp!, {r4-r8,lr} + ldrh r5, [sp, #0x1c] + ldr r4, [sp, #0x18] + mov r8, r0 + mov r0, r5, asr #0x8 + orr r12, r0, r5, lsl #0x8 + mov r0, r4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + strh r12, [r8, #-0x2] + bl is_multicast + cmp r0, #0x0 + bne _0209F0CC + mov r0, r4 + bl get_targetip + movs r4, r0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + bl inq_arpcache + cmp r0, #0x0 + bne _0209F0B0 + mov r0, r4 + bl arprequest +_0209F0B0: + cmp r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r8, #0xe + mov r2, #0x6 + bl MI_CpuCopy8 + b _0209F0FC +_0209F0CC: + mov r0, #0x1 + strb r0, [r8, #-0xe] + mov r1, #0x0 + mov r0, r4, lsr #0x10 + strb r1, [r8, #-0xd] + mov r1, #0x5e + strb r1, [r8, #-0xc] + and r0, r0, #0x7f + strb r0, [r8, #-0xb] + mov r0, r4, lsr #0x8 + strb r0, [r8, #-0xa] + strb r4, [r8, #-0x9] +_0209F0FC: + ldr r0, _0209F128 ; =CPSMyMac + sub r1, r8, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + mov r2, r6 + mov r3, r5 + sub r0, r8, #0xe + add r1, r7, #0xe + bl send_packet + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F128: .word CPSMyMac + + arm_func_start reg_arprequest +reg_arprequest: ; 0x0209F12C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _0209F29C ; =0x7F000001 + mov r6, r1 + cmp r6, r3 + mov r7, r0 + mov r4, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _0209F2A0 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r6, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r6 + bl ip_islocal + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r6 + bl is_multicast + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + mov r0, r0, lsl #0x10 + ldr r1, _0209F2A4 ; =arpcache + mov r5, r0, lsr #0x10 + mov r2, #0x0 +_0209F1B8: + ldr r0, [r1, #0x0] + cmp r6, r0 + bne _0209F1F8 + mov r0, #0xc + mul r4, r2, r0 + ldr r0, _0209F2A4 ; =arpcache + ldr r3, _0209F2A8 ; =arpcache+10 + add r1, r0, r4 + mov r0, r7 + add r1, r1, #0x4 + mov r2, #0x6 + strh r5, [r3, r4] + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209F1F8: + add r2, r2, #0x1 + cmp r2, #0x8 + add r1, r1, #0xc + blo _0209F1B8 + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r12, #0x0 + ldr r4, _0209F2A4 ; =arpcache + mov r0, r12 + mov r3, r12 +_0209F228: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + moveq r0, r3 + beq _0209F264 + ldrh r1, [r4, #0xa] + add r4, r4, #0xc + sub r1, r5, r1 + mov r1, r1, lsl #0x10 + mov r2, r1, asr #0x10 + cmp r2, r12 + movgt r0, r3 + add r3, r3, #0x1 + movgt r12, r1, lsr #0x10 + cmp r3, #0x8 + blo _0209F228 +_0209F264: + mov r1, #0xc + mul r4, r0, r1 + ldr r3, _0209F2A4 ; =arpcache + mov r0, r7 + add r1, r3, r4 + add r1, r1, #0x4 + mov r2, #0x6 + str r6, [r3, r4] + bl MI_CpuCopy8 + ldr r0, _0209F2A8 ; =arpcache+10 + strh r5, [r0, r4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209F29C: .word 0x7F000001 +_0209F2A0: .word CPSMyIp +_0209F2A4: .word arpcache +_0209F2A8: .word arpcache+10 + + arm_func_start arprequest +arprequest: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, #0x0 + ldr r4, _0209F334 ; =CPSMyIp + mov r6, r8 + mov r5, #0x64 +_0209F2C8: + mov r0, r9 + bl send_arprequest + mov r7, r6 +_0209F2D4: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, r5 + bl OS_Sleep + mov r0, r9 + bl inq_arpcache + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r9,lr} + bxne lr + add r7, r7, #0x1 + cmp r7, #0x14 + blo _0209F2D4 + add r8, r8, #0x1 + cmp r8, #0x8 + blo _0209F2C8 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209F334: .word CPSMyIp + + arm_func_start send_arprequest +send_arprequest: ; 0x0209F338 + stmdb sp!, {r4,lr} + sub sp, sp, #0x30 + mov r4, r0 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x2a + bl MI_CpuFill8 + add r0, sp, #0x0 + mov r1, #0xff + mov r2, #0x6 + bl MI_CpuFill8 + ldr r0, _0209F428 ; =CPSMyMac + add r1, sp, #0x6 + mov r2, #0x6 + bl MI_CpuCopy8 + mov r0, #0x1 + ldr r1, _0209F42C ; =0x00000608 + strb r0, [sp, #0xf] + strh r1, [sp, #0xc] + strb r0, [sp, #0x15] + mov r0, #0x8 + ldr r1, _0209F430 ; =0x00000406 + strb r0, [sp, #0x10] + strh r1, [sp, #0x12] + ldr r0, _0209F428 ; =CPSMyMac + add r1, sp, #0x16 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r0, _0209F434 ; =CPSMyIp + mov r1, r4, lsr #0x10 + ldr r3, [r0, #0x0] + mov r0, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r4, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r3, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r0, r3, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r4, asr #0x8 + orr r0, r0, r4, lsl #0x8 + strh r0, [sp, #0x1c] + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [sp, #0x1e] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [sp, #0x26] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r2, #0x0 + strh r0, [sp, #0x28] + add r0, sp, #0x0 + mov r1, #0x2a + mov r3, r2 + bl send_packet + add sp, sp, #0x30 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209F428: .word CPSMyMac +_0209F42C: .word 0x00000608 +_0209F430: .word 0x00000406 +_0209F434: .word CPSMyIp + + arm_func_start inq_arpcache +inq_arpcache: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl OS_DisableInterrupts + ldr r1, _0209F504 ; =0x7F000001 + mov r4, r0 + cmp r7, r1 + mov r5, #0x0 + beq _0209F46C + ldr r0, _0209F508 ; =CPSMyIp + ldr r0, [r0, #0x0] + cmp r7, r0 + bne _0209F474 +_0209F46C: + ldr r5, _0209F50C ; =CPSMyMac + b _0209F4EC +_0209F474: + mov r0, r7 + bl is_broadcast + cmp r0, #0x0 + bne _0209F494 + mov r0, r7 + bl is_multicast + cmp r0, #0x0 + beq _0209F49C +_0209F494: + ldr r5, _0209F510 ; =mac_broadcast + b _0209F4EC +_0209F49C: + ldr r1, _0209F514 ; =arpcache + mov r6, r5 +_0209F4A4: + ldr r0, [r1, #0x0] + cmp r7, r0 + bne _0209F4DC + bl OS_GetTick + mov r2, #0xc + mul r3, r6, r2 + ldr r2, _0209F514 ; =arpcache + mov r5, r0, lsr #0x10 + add r0, r2, r3 + ldr r2, _0209F518 ; =arpcache+10 + orr r5, r5, r1, lsl #0x10 + strh r5, [r2, r3] + add r5, r0, #0x4 + b _0209F4EC +_0209F4DC: + add r6, r6, #0x1 + cmp r6, #0x8 + add r1, r1, #0xc + blo _0209F4A4 +_0209F4EC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209F504: .word 0x7F000001 +_0209F508: .word CPSMyIp +_0209F50C: .word CPSMyMac +_0209F510: .word mac_broadcast +_0209F514: .word arpcache +_0209F518: .word arpcache+10 + + arm_func_start throw_packet +throw_packet: ; 0x0209F51C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r2, _0209F570 ; =wlan_getpnt + ldr r1, _0209F574 ; =wlan_buf + ldr lr, [r2, #0x0] + ldr r12, [r1, #0x0] + ldr r3, [r2, #0x0] + ldr r1, _0209F578 ; =wlan_buflen + ldrh r3, [r12, r3] + add r3, lr, r3 + str r3, [r2, #0x0] + ldr r3, [r2, #0x0] + ldr r1, [r1, #0x0] + cmp r3, r1 + movcs r1, #0x0 + strcs r1, [r2, #0x0] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209F570: .word wlan_getpnt +_0209F574: .word wlan_buf +_0209F578: .word wlan_buflen + + arm_func_start receive_packet +receive_packet: ; 0x0209F57C + stmdb sp!, {r4-r10,lr} + mov r6, r0 + bl OS_DisableInterrupts + ldr sl, _0209F644 ; =wlan_getpnt + ldr sb, _0209F648 ; =wlan_putpnt + ldr r2, [r10, #0x0] + ldr r1, [r9, #0x0] + mov r5, r0 + cmp r2, r1 + bne _0209F5D4 + ldr r8, _0209F64C ; =OSi_ThreadInfo + ldr r7, _0209F650 ; =receiver_thread + mov r4, #0x0 +_0209F5B0: + ldr r1, [r8, #0x4] + mov r0, r4 + str r1, [r7, #0x0] + bl OS_SleepThread + str r4, [r7, #0x0] + ldr r1, [r10, #0x0] + ldr r0, [r9, #0x0] + cmp r1, r0 + beq _0209F5B0 +_0209F5D4: + mov r0, r5 + bl OS_RestoreInterrupts + ldr r0, _0209F654 ; =wlan_buf + ldr r5, [r0, #0x0] + ldr r0, _0209F644 ; =wlan_getpnt + ldr r1, _0209F658 ; =wlan_buflen + mov r3, #0x0 +_0209F5F0: + ldr r4, [r1, #0x0] + ldr r2, [r0, #0x0] + sub r2, r4, r2 + cmp r2, #0x2 + strcc r3, [r0, #0x0] + ldr r2, [r0, #0x0] + ldrh r2, [r5, r2] + cmp r2, #0x0 + streq r3, [r0, #0x0] + cmp r2, #0x0 + beq _0209F5F0 + sub r0, r2, #0x2 + ldr r1, _0209F654 ; =wlan_buf + str r0, [r6, #0x0] + ldr r0, _0209F644 ; =wlan_getpnt + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r1, r0 + add r0, r0, #0x2 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_0209F644: .word wlan_getpnt +_0209F648: .word wlan_putpnt +_0209F64C: .word OSi_ThreadInfo +_0209F650: .word receiver_thread +_0209F654: .word wlan_buf +_0209F658: .word wlan_buflen + + arm_func_start CPSi_RecvCallbackFunc +CPSi_RecvCallbackFunc: ; 0x0209F65C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r12, [sp, #0x4] + bl put_in_buffer + ldr r0, _0209F6BC ; =receiver_thread + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {lr} + bxeq lr + ldr r0, [r0, #0x0] + bl OS_IsThreadTerminated + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {lr} + bxne lr + ldr r0, _0209F6BC ; =receiver_thread + ldr r0, [r0, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .balign 4 +_0209F6BC: .word receiver_thread + + arm_func_start put_in_buffer +put_in_buffer: ; 0x0209F6C0 + stmdb sp!, {r4-r8,lr} + ldr r4, _0209F918 ; =wlan_buf + mov r7, r0 + ldr r0, [r4, #0x0] + mov r6, r2 + mov r5, r3 + cmp r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r2, _0209F91C ; =wlan_buflen + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r2, [sp, #0x1c] + add r2, r5, r2 + cmp r2, #0x8 + ldmccia sp!, {r4-r8,lr} + bxcc lr + ldr r3, _0209F920 ; =0x000005E4 + cmp r2, r3 + ldmhiia sp!, {r4-r8,lr} + bxhi lr + ldr r3, _0209F924 ; =UNK_02106230 + ldrb r8, [r6, #0x0] + ldrb r4, [r3, #0x0] + cmp r8, r4 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r8, [r6, #0x1] + ldrb r4, [r3, #0x1] + cmp r8, r4 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r4, [r6, #0x2] + ldrb r3, [r3, #0x2] + cmp r4, r3 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r3, [r6, #0x6] + cmp r3, #0x8 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r3, [r6, #0x7] + cmp r3, #0x0 + beq _0209F784 + cmp r3, #0x6 + ldmneia sp!, {r4-r8,lr} + bxne lr +_0209F784: + ldr r4, _0209F928 ; =wlan_putpnt + add r2, r2, #0x9 + bic r2, r2, #0x1 + ldr lr, [r4, #0x0] + mov r3, r2, lsl #0x10 + ldr ip, _0209F92C ; =wlan_getpnt + ldr r8, [r4, #0x0] + ldr r4, [r12, #0x0] + mov r2, r3, lsr #0x10 + cmp r8, r4 + add r4, lr, r3, lsr #0x10 + bhs _0209F7C4 + ldr r3, [r12, #0x0] + cmp r3, r4 + ldmlsia sp!, {r4-r8,lr} + bxls lr +_0209F7C4: + ldr r3, _0209F91C ; =wlan_buflen + ldr r8, [r3, #0x0] + cmp r4, r8 + bne _0209F7F0 + ldr r3, _0209F92C ; =wlan_getpnt + mov r4, #0x0 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + bne _0209F814 + ldmia sp!, {r4-r8,lr} + bx lr +_0209F7F0: + ldr r3, [r3, #0x0] + cmp r4, r3 + bls _0209F814 + ldr r3, _0209F92C ; =wlan_getpnt + mov r4, r2 + ldr r3, [r3, #0x0] + cmp r3, r2 + ldmlsia sp!, {r4-r8,lr} + bxls lr +_0209F814: + ldr ip, _0209F928 ; =wlan_putpnt + ldr r3, _0209F91C ; =wlan_buflen + ldr lr, [r12, #0x0] + ldr r8, [r3, #0x0] + add lr, lr, r2 + cmp lr, r8 + bls _0209F858 + ldr r8, [r3, #0x0] + ldr r3, [r12, #0x0] + sub r3, r8, r3 + cmp r3, #0x2 + ldrcs r3, [r12, #0x0] + movcs r8, #0x0 + strcsh r8, [r0, r3] + ldr r0, _0209F928 ; =wlan_putpnt + mov r3, #0x0 + str r3, [r0, #0x0] +_0209F858: + ldr ip, _0209F918 ; =wlan_buf + ldr r3, _0209F928 ; =wlan_putpnt + ldr r8, [r12, #0x0] + ldr lr, [r3, #0x0] + mov r0, r1 + strh r2, [r8, lr] + ldr r12, [r12, #0x0] + ldr r1, [r3, #0x0] + mov r2, #0x6 + add r1, r12, r1 + add r1, r1, #0x2 + bl MI_CpuCopy8 + ldr r1, _0209F918 ; =wlan_buf + ldr r0, _0209F928 ; =wlan_putpnt + ldr r2, [r1, #0x0] + ldr r1, [r0, #0x0] + mov r0, r7 + add r1, r2, r1 + add r1, r1, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r1, _0209F918 ; =wlan_buf + ldr r0, _0209F928 ; =wlan_putpnt + ldr r2, [r1, #0x0] + ldr r1, [r0, #0x0] + add r0, r6, #0x6 + add r1, r2, r1 + add r1, r1, #0xe + sub r2, r5, #0x6 + bl MI_CpuCopy8 + ldr r0, [sp, #0x18] + cmp r0, #0x0 + beq _0209F908 + ldr r2, [sp, #0x1c] + cmp r2, #0x0 + beq _0209F908 + ldr r3, _0209F918 ; =wlan_buf + ldr r1, _0209F928 ; =wlan_putpnt + ldr r3, [r3, #0x0] + ldr r1, [r1, #0x0] + add r1, r3, r1 + add r1, r1, #0x8 + add r1, r1, r5 + bl MI_CpuCopy8 +_0209F908: + ldr r0, _0209F928 ; =wlan_putpnt + str r4, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F918: .word wlan_buf +_0209F91C: .word wlan_buflen +_0209F920: .word 0x000005E4 +_0209F924: .word UNK_02106230 +_0209F928: .word wlan_putpnt +_0209F92C: .word wlan_getpnt + + arm_func_start send_packet +send_packet: ; 0x0209F930 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + add r1, r6, r5 + mov r4, r3 + cmp r1, r2 + beq _0209F958 + mov r0, r2 + mov r2, r4 + bl MI_CpuCopy8 +_0209F958: + ldr r0, _0209F998 ; =UNK_02106230 + add r1, r6, #0x6 + mov r2, #0x6 + bl MI_CpuCopy8 + add r2, r5, r4 + mov r0, r6 + add r1, r6, #0x6 + sub r2, r2, #0x6 + bl WCM_SendDCFData + cmp r0, #0x0 + movlt r1, #0x1 + ldr r0, _0209F99C ; =wfailed + movge r1, #0x0 + strb r1, [r0, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209F998: .word UNK_02106230 +_0209F99C: .word wfailed + + arm_func_start maccmp +maccmp: + mov r12, #0x0 +_0209F9A4: + ldrh r3, [r0], #0x2 + ldrh r2, [r1], #0x2 + cmp r3, r2 + movne r0, #0x1 + bxne lr + add r12, r12, #0x1 + cmp r12, #0x3 + blt _0209F9A4 + mov r0, #0x0 + bx lr + + arm_func_start ip_isme +ip_isme: + stmdb sp!, {r4-r6,lr} + ldr r1, _0209FA4C ; =CPSMyIp + mov r5, #0x1 + ldr r1, [r1, #0x0] + mov r6, r0 + mov r4, r5 + mov r2, r5 + mov r0, r5 + cmp r1, #0x0 + beq _0209F9FC + cmp r6, r1 + movne r0, #0x0 +_0209F9FC: + cmp r0, #0x0 + bne _0209FA10 + ldr r0, _0209FA50 ; =0x7F000001 + cmp r6, r0 + movne r2, #0x0 +_0209FA10: + cmp r2, #0x0 + bne _0209FA28 + mov r0, r6 + bl is_broadcast + cmp r0, #0x0 + moveq r4, #0x0 +_0209FA28: + cmp r4, #0x0 + bne _0209FA40 + mov r0, r6 + bl is_multicast + cmp r0, #0x0 + moveq r5, #0x0 +_0209FA40: + mov r0, r5 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209FA4C: .word CPSMyIp +_0209FA50: .word 0x7F000001 + + arm_func_start is_multicast +is_multicast: + and r0, r0, #0xf0000000 + cmp r0, #0xe0000000 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start is_broadcast +is_broadcast: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, #0x0 + bl ip_islocal + cmp r0, #0x0 + beq _0209FA9C + ldr r0, _0209FAAC ; =CPSNetMask + ldr r0, [r0, #0x0] + mvn r1, r0 + and r0, r1, r5 + cmp r1, r0 + moveq r4, #0x1 +_0209FA9C: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FAAC: .word CPSNetMask + + arm_func_start get_targetip +get_targetip: + stmdb sp!, {r4,lr} + mov r4, r0 + bl ip_islocal + cmp r0, #0x0 + ldreq r0, _0209FAD4 ; =CPSGatewayIp + ldreq r4, [r0, #0x0] + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209FAD4: .word CPSGatewayIp + + arm_func_start ip_islocal +ip_islocal: + mvn r1, #0x0 + cmp r0, r1 + mov r12, #0x1 + beq _0209FB14 + ldr r1, _0209FB1C ; =0x7F000001 127.0.0.1 + cmp r0, r1 + beq _0209FB14 + ldr r2, _0209FB20 ; =CPSNetMask + ldr r1, _0209FB24 ; =CPSMyIp + ldr r3, [r2, #0x0] + ldr r1, [r1, #0x0] + and r2, r0, r3 + and r0, r1, r3 + cmp r2, r0 + movne r12, #0x0 +_0209FB14: + mov r0, r12 + bx lr + .balign 4 +_0209FB1C: .word 0x7F000001 +_0209FB20: .word CPSNetMask +_0209FB24: .word CPSMyIp + + arm_func_start check_tcpudpsum +check_tcpudpsum: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r2 + mov r2, r3 + mov r5, r1 + bl calc_checksum_do + mov r2, r0 + add r0, r4, #0xc + mov r1, #0x8 + bl calc_checksum_do + add r1, r0, r5 + ands r0, r1, #0x10000 + ldrne r0, _0209FB80 ; =0x0000FFFF + addne r1, r1, #0x1 + andne r1, r1, r0 + ldr r0, _0209FB80 ; =0x0000FFFF + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FB80: .word 0x0000FFFF + + arm_func_start calc_checksum +calc_checksum: ; 0x0209FB84 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + bl calc_checksum_do + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl invert_checksum + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start invert_checksum +invert_checksum: ; 0x0209FBAC + ldr r1, _0209FBC4 ; =0x0000FFFF + eor r0, r0, r1 + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + moveq r0, r1 + bx lr + .balign 4 +_0209FBC4: .word 0x0000FFFF + + arm_func_start calc_checksum_do +calc_checksum_do: ; 0x0209FBC8 + ands r3, r0, #0x1 + beq _0209FC00 + cmp r1, #0x1 + bls _0209FC54 +_0209FBD8: + ldrb r12, [r0, #0x0] + ldrb r3, [r0, #0x1] + sub r1, r1, #0x2 + cmp r1, #0x1 + orr r3, r3, r12, lsl #0x8 + mov r3, r3, lsl #0x10 + add r2, r2, r3, lsr #0x10 + add r0, r0, #0x2 + bhi _0209FBD8 + b _0209FC54 +_0209FC00: + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r1, #0x1 + mov r2, r2, lsr #0x10 + bls _0209FC38 +_0209FC20: + ldrh r3, [r0, #0x0] + sub r1, r1, #0x2 + cmp r1, #0x1 + add r2, r2, r3 + add r0, r0, #0x2 + bhi _0209FC20 +_0209FC38: + ldr r3, _0209FC7C ; =0x00FF00FF + ldr ip, _0209FC80 ; =0xFF00FF00 + and r3, r3, r2, lsr #0x8 + and r2, r12, r2, lsl #0x8 + orr r3, r3, r2 + mov r2, r3, lsr #0x10 + orr r2, r2, r3, lsl #0x10 +_0209FC54: + cmp r1, #0x0 + ldrneb r0, [r0, #0x0] + addne r2, r2, r0, lsl #0x8 + ldr r0, _0209FC84 ; =0x0000FFFF + and r0, r2, r0 + add r0, r0, r2, lsr #0x10 + add r0, r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .balign 4 +_0209FC7C: .word 0x00FF00FF +_0209FC80: .word 0xFF00FF00 +_0209FC84: .word 0x0000FFFF + + arm_func_start CPS_SetThreadPriority +CPS_SetThreadPriority: ; 0x0209FC88 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r2, _0209FCB8 ; =helper_threads_priority + ldr r0, _0209FCBC ; =tcpip_thread + mov r1, r4 + str r4, [r2, #0x0] + bl OS_SetThreadPriority + ldr r0, _0209FCC0 ; =scavenger_thread + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209FCB8: .word helper_threads_priority +_0209FCBC: .word tcpip_thread +_0209FCC0: .word scavenger_thread + + arm_func_start CPS_Cleanup +CPS_Cleanup: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl CPS_CalmDown + ldr r0, _0209FD10 ; =scavenger_thread + bl OS_JoinThread + ldr r0, _0209FD14 ; =tcpip_thread + bl OS_DestroyThread + ldr r1, _0209FD18 ; =receiver_thread + mov r0, #0x0 + str r0, [r1, #0x0] + bl reset_network_vars + ldr r1, _0209FD1C ; =wlan_buf + mov r2, #0x0 + ldr r0, _0209FD20 ; =wlan_buflen + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209FD10: .word scavenger_thread +_0209FD14: .word tcpip_thread +_0209FD18: .word receiver_thread +_0209FD1C: .word wlan_buf +_0209FD20: .word wlan_buflen + + arm_func_start CPS_SetScavengerCallback +CPS_SetScavengerCallback: ; 0x0209FD24 + ldr r1, _0209FD30 ; =scavenger_callback + str r0, [r1, #0x0] + bx lr + .balign 4 +_0209FD30: .word scavenger_callback + + arm_func_start CPS_CalmDown +CPS_CalmDown: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + ldr r0, _0209FD8C ; =scavenger_thread + bl OS_IsThreadTerminated + movs r4, r0 + bne _0209FD74 + ldr r1, _0209FD90 ; =scavenger_force_exit + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _0209FD74 + ldr r0, _0209FD8C ; =scavenger_thread + mov r2, #0x1 + str r2, [r1, #0x0] + bl OS_WakeupThreadDirect +_0209FD74: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FD8C: .word scavenger_thread +_0209FD90: .word scavenger_force_exit + + .extern _SDK_UbiquitousCPS + + arm_func_start CPS_Startup +CPS_Startup: ; 0x0209FD94 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldr r0, _0209FFD4 ; =_SDK_UbiquitousCPS + bl OSi_ReferSymbol + ldr r12, [r4, #0x14] + ldr r6, [r4, #0x18] + mov r1, #0x0 + cmp r6, r1 + cmpeq r12, r1 + beq _0209FDEC + ldr r0, _0209FFD8 ; =CPSiRand32ctx + ldr r5, _0209FFDC ; =0x6C078965 + ldr r3, _0209FFE0 ; =0x5D588B65 + ldr r2, _0209FFE4 ; =0x00269EC3 + str r12, [r0, #0x0] + str r6, [r0, #0x4] + str r5, [r0, #0x8] + str r3, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + b _0209FE1C +_0209FDEC: + bl OS_GetTick + ldr r2, _0209FFD8 ; =CPSiRand32ctx + ldr ip, _0209FFDC ; =0x6C078965 + ldr r6, _0209FFE0 ; =0x5D588B65 + ldr r5, _0209FFE4 ; =0x00269EC3 + mov r3, #0x0 + str r0, [r2, #0x0] + str r1, [r2, #0x4] + str r12, [r2, #0x8] + str r6, [r2, #0xc] + str r5, [r2, #0x10] + str r3, [r2, #0x14] +_0209FE1C: + ldr r2, [r4, #0x4] + cmp r2, #0x0 + beq _0209FE4C + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _0209FE4C + ldr r1, _0209FFE8 ; =CPSiAlloc + ldr r0, _0209FFEC ; =CPSiFree + str r2, [r1, #0x0] + ldr r1, [r4, #0x8] + str r1, [r0, #0x0] + b _0209FE60 +_0209FE4C: + ldr r2, _0209FFF0 ; =empty_func + ldr r1, _0209FFE8 ; =CPSiAlloc + ldr r0, _0209FFEC ; =CPSiFree + str r2, [r1, #0x0] + str r2, [r0, #0x0] +_0209FE60: + ldr r1, [r4, #0x0] + ldr r0, _0209FFF4 ; =mode + ldr ip, _0209FFD8 ; =CPSiRand32ctx + str r1, [r0, #0x0] + ldr r1, [r4, #0x24] + ldr r3, [r12, #0x8] + cmp r1, #0x0 + ldrne r0, _0209FFF8 ; =mymss + strneh r1, [r0, #0x0] + ldreq r1, _0209FFFC ; =0x000005B4 + ldreq r0, _0209FFF8 ; =mymss + streqh r1, [r0, #0x0] + ldr r2, [r4, #0x28] + ldr r1, _020A0000 ; =offered_myip + ldr r0, _020A0004 ; =yield_wait + str r2, [r1, #0x0] + ldr r1, [r4, #0x2c] + ldr r2, [r12, #0x0] + str r1, [r0, #0x0] + ldr r1, [r4, #0xc] + umull lr, r5, r3, r2 + cmp r1, #0x0 + ldrne r0, _020A0008 ; =dhcp_callback + strne r1, [r0, #0x0] + ldreq r1, _0209FFF0 ; =empty_func + ldreq r0, _020A0008 ; =dhcp_callback + streq r1, [r0, #0x0] + ldr r1, [r4, #0x10] + cmp r1, #0x0 + ldrne r0, _020A000C ; =link_is_on + strne r1, [r0, #0x0] + ldreq r1, _020A0010 ; =default_link_is_on + ldreq r0, _020A000C ; =link_is_on + streq r1, [r0, #0x0] + ldr r1, [r12, #0x4] + ldr r0, _020A0014 ; =0x00000F88 + mla r5, r3, r1, r5 + ldr r1, [r12, #0xc] + ldr r3, [r12, #0x10] + mla r5, r1, r2, r5 + adds r2, r3, lr + ldr r1, [r12, #0x14] + mov r3, #0x0 + adc r1, r1, r5 + umull lr, r5, r1, r0 + mla r5, r1, r3, r5 + mla r5, r3, r0, r5 + ldr r6, [r4, #0x1c] + ldr r0, _020A0018 ; =wlan_buf + ldr lr, _020A001C ; =wlan_buflen + str r6, [r0, #0x0] + ldr r4, [r4, #0x20] + ldr r0, _020A0020 ; =wlan_getpnt + str r4, [lr, #0x0] + str r3, [r0, #0x0] + ldr lr, _020A0024 ; =wlan_putpnt + ldr r4, _020A0028 ; =eport + add r5, r5, #0x400 + ldr r0, _020A002C ; =CPSMyMac + str r3, [lr, #0x0] + str r2, [r12, #0x0] + str r1, [r12, #0x4] + strh r5, [r4, #0x0] + bl OS_GetMacAddress + ldr r0, _020A0030 ; =ip_conflict + mov r2, #0x0 + strb r2, [r0, #0x0] + mov r1, #0x800 + str r1, [sp, #0x0] + ldr r0, _020A0034 ; =helper_threads_priority + ldr r1, _020A0038 ; =tcpip + ldr r4, [r0, #0x0] + ldr r0, _020A003C ; =tcpip_thread + ldr r3, _020A0040 ; =tcpip_stack+0x800 + str r4, [sp, #0x4] + bl OS_CreateThread + mov r1, #0x800 + ldr r0, _020A0034 ; =helper_threads_priority + str r1, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020A0044 ; =scavenger_thread + str r1, [sp, #0x4] + ldr r1, _020A0048 ; =scavenger + ldr r3, _020A004C ; =scavenger_stack+0x800 + mov r2, #0x0 + bl OS_CreateThread + ldr r0, _020A003C ; =tcpip_thread + bl OS_WakeupThreadDirect + ldr r0, _020A0044 ; =scavenger_thread + bl OS_WakeupThreadDirect + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209FFD4: .word _SDK_UbiquitousCPS +_0209FFD8: .word CPSiRand32ctx +_0209FFDC: .word 0x6C078965 +_0209FFE0: .word 0x5D588B65 +_0209FFE4: .word 0x00269EC3 +_0209FFE8: .word CPSiAlloc +_0209FFEC: .word CPSiFree +_0209FFF0: .word empty_func +_0209FFF4: .word mode +_0209FFF8: .word mymss +_0209FFFC: .word 0x000005B4 +_020A0000: .word offered_myip +_020A0004: .word yield_wait +_020A0008: .word dhcp_callback +_020A000C: .word link_is_on +_020A0010: .word default_link_is_on +_020A0014: .word 0x00000F88 +_020A0018: .word wlan_buf +_020A001C: .word wlan_buflen +_020A0020: .word wlan_getpnt +_020A0024: .word wlan_putpnt +_020A0028: .word eport +_020A002C: .word CPSMyMac +_020A0030: .word ip_conflict +_020A0034: .word helper_threads_priority +_020A0038: .word tcpip +_020A003C: .word tcpip_thread +_020A0040: .word tcpip_stack+0x800 +_020A0044: .word scavenger_thread +_020A0048: .word scavenger +_020A004C: .word scavenger_stack+0x800 + + arm_func_start default_link_is_on +default_link_is_on: ; 0x020A0050 + mov r0, #0x1 + bx lr + + arm_func_start empty_func +empty_func: ; 0x020A0058 + bx lr + + arm_func_start OS_YieldThread__ +OS_YieldThread__: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020A0094 ; =yield_wait + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020A0084 + bl OS_YieldThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A0084: + bl OS_Sleep + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A0094: .word yield_wait + + arm_func_start reset_network_vars +reset_network_vars: ; 0x020A0098 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r1, _020A01B8 ; =CPSMyIp + ldr r5, _020A01BC ; =CPSNoIpReason + ldr r1, [r1, #0x0] + ldr r3, _020A01C0 ; =CPSDnsIp + cmp r1, #0x0 + mov r1, #0x0 + movne r6, #0x1 + ldr ip, _020A01C4 ; =CPSNetMask + ldr r2, _020A01C8 ; =CPSDhcpServerIp + moveq r6, #0x0 + ldr lr, _020A01B8 ; =CPSMyIp + ldr r4, _020A01CC ; =CPSGatewayIp + cmp r6, #0x0 + str r1, [r12, #0x0] + str r1, [r3, #0x0] + str r1, [r3, #0x4] + str r1, [r2, #0x0] + addeq sp, sp, #0x4 + str r0, [r5, #0x0] + str r1, [lr, #0x0] + str r1, [r4, #0x0] + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _020A01D0 ; =arpcache + mov r2, #0x60 + bl MI_CpuFill8 + ldr r0, _020A01D4 ; =OSi_ThreadInfo + ldr r5, [r0, #0x8] + cmp r5, #0x0 + beq _020A016C + mov r4, #0x0 +_020A011C: + ldr r1, [r5, #0xa4] + cmp r1, #0x0 + beq _020A0160 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _020A0160 + ldrb r0, [r1, #0x8] + cmp r0, #0xa + beq _020A0148 + cmp r0, #0xb + strneb r4, [r1, #0x8] +_020A0148: + ldr r0, [r1, #0x4] + cmp r0, #0x0 + beq _020A0160 + str r4, [r1, #0x4] + ldr r0, [r1, #0x0] + bl OS_WakeupThreadDirect +_020A0160: + ldr r5, [r5, #0x68] + cmp r5, #0x0 + bne _020A011C +_020A016C: + ldr r6, _020A01D8 ; =fragtable + mov r7, #0x0 + ldr r4, _020A01DC ; =CPSiFree + mov r5, r7 +_020A017C: + ldrh r0, [r6, #0x4] + cmp r0, #0x0 + beq _020A0198 + ldr r0, [r6, #0x34] + ldr r1, [r4, #0x0] + blx r1 + strh r5, [r6, #0x4] +_020A0198: + add r7, r7, #0x1 + cmp r7, #0x8 + add r6, r6, #0x38 + blt _020A017C + bl CPSi_SslCleanup + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A01B8: .word CPSMyIp +_020A01BC: .word CPSNoIpReason +_020A01C0: .word CPSDnsIp +_020A01C4: .word CPSNetMask +_020A01C8: .word CPSDhcpServerIp +_020A01CC: .word CPSGatewayIp +_020A01D0: .word arpcache +_020A01D4: .word OSi_ThreadInfo +_020A01D8: .word fragtable +_020A01DC: .word CPSiFree diff --git a/arm9/asm/SSL_ssl.s b/arm9/asm/SSL_ssl.s index af10aec2..4605b1e8 100644 --- a/arm9/asm/SSL_ssl.s +++ b/arm9/asm/SSL_ssl.s @@ -66,142 +66,6 @@ UNK_021062A8: ; 0x021062A8 .section .bss - .global CPSiAlloc -CPSiAlloc: ; 0x021C8EC8 - .space 0x4 - - .global UNK_021C8ECC -UNK_021C8ECC: ; 0x021C8ECC - .space 0x4 - - .global UNK_021C8ED0 -UNK_021C8ED0: ; 0x021C8ED0 - .space 0x4 - - .global UNK_021C8ED4 -UNK_021C8ED4: ; 0x021C8ED4 - .space 0x4 - - .global UNK_021C8ED8 -UNK_021C8ED8: ; 0x021C8ED8 - .space 0x4 - - .global UNK_021C8EDC -UNK_021C8EDC: ; 0x021C8EDC - .space 0x4 - - .global UNK_021C8EE0 -UNK_021C8EE0: ; 0x021C8EE0 - .space 0x4 - - .global UNK_021C8EE4 -UNK_021C8EE4: ; 0x021C8EE4 - .space 0x4 - - .global UNK_021C8EE8 -UNK_021C8EE8: ; 0x021C8EE8 - .space 0x4 - - .global UNK_021C8EEC -UNK_021C8EEC: ; 0x021C8EEC - .space 0x4 - - .global UNK_021C8EF0 -UNK_021C8EF0: ; 0x021C8EF0 - .space 0x4 - - .global CPSiFree -CPSiFree: ; 0x021C8EF4 - .space 0x4 - - .global UNK_021C8EF8 -UNK_021C8EF8: ; 0x021C8EF8 - .space 0x4 - - .global UNK_021C8EFC -UNK_021C8EFC: ; 0x021C8EFC - .space 0x4 - - .global UNK_021C8F00 -UNK_021C8F00: ; 0x021C8F00 - .space 0x4 - - .global UNK_021C8F04 -UNK_021C8F04: ; 0x021C8F04 - .space 0x4 - - .global UNK_021C8F08 -UNK_021C8F08: ; 0x021C8F08 - .space 0x4 - - .global UNK_021C8F0C -UNK_021C8F0C: ; 0x021C8F0C - .space 0x4 - - .global UNK_021C8F10 -UNK_021C8F10: ; 0x021C8F10 - .space 0x4 - - .global UNK_021C8F14 -UNK_021C8F14: ; 0x021C8F14 - .space 0x8 - - .global UNK_021C8F1C -UNK_021C8F1C: ; 0x021C8F1C - .space 0x8 - - .global CPSiRand32ctx -CPSiRand32ctx: ; 0x021C8F24 - .space 0x3a - - .global UNK_021C8F5E -UNK_021C8F5E: ; 0x021C8F5E - .space 0x1a - - .global UNK_021C8F78 -UNK_021C8F78: ; 0x021C8F78 - .space 0xa - - .global UNK_021C8F82 -UNK_021C8F82: ; 0x021C8F82 - .space 0x56 - - .global UNK_021C8FD8 -UNK_021C8FD8: ; 0x021C8FD8 - .space 0x64 - - .global UNK_021C903C -UNK_021C903C: ; 0x021C903C - .space 0x64 - - .global UNK_021C90A0 -UNK_021C90A0: ; 0x021C90A0 - .space 0xc0 - - .global UNK_021C9160 -UNK_021C9160: ; 0x021C9160 - .space 0xc0 - - .global UNK_021C9220 -UNK_021C9220: ; 0x021C9220 - .space 0x2a - - .global UNK_021C924A -UNK_021C924A: ; 0x021C924A - .space 0x156 - - .global UNK_021C93A0 -UNK_021C93A0: ; 0x021C93A0 - .space 0x180 - - .global UNK_021C9520 -UNK_021C9520: ; 0x021C9520 - .space 0x9c0 - - .global UNK_021C9EE0 -UNK_021C9EE0: ; 0x021C9EE0 - .space 0x800 - .global pool_initialized pool_initialized: ; 0x021CA6E0 .space 0x4 @@ -815,7 +679,7 @@ CPSi_SslListen: ; 0x020A09CC mov r6, #0x1 _020A09EC: mov r0, r9 - bl FUN_0209CAC4 + bl CPSi_TcpListenRaw strb r7, [r8, #0x455] str r7, [r8, #0x1d4] mov r0, r5 diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s index 58e54290..f0a9d36e 100644 --- a/arm9/asm/libVCT.s +++ b/arm9/asm/libVCT.s @@ -5505,8 +5505,8 @@ _020A8628: _020A863C: .word UNK_021CA870 _020A8640: .word UNK_021CA874 - arm_func_start FUN_020A8644 -FUN_020A8644: + arm_func_start WCM_SendDCFData +WCM_SendDCFData: stmdb sp!, {r4-r8,lr} mov r8, r0 mov r7, r1 diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index 4fe1b53c..f95f89a5 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -110,23 +110,6 @@ UNK_021061F4: ; 0x021061F4 UNK_0210620C: ; 0x0210620C .byte 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x00 - .global UNK_02106218 -UNK_02106218: ; 0x02106218 - .byte 0x10, 0x00, 0x00, 0x00 - - .global UNK_0210621C -UNK_0210621C: ; 0x0210621C - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - - .global UNK_02106224 -UNK_02106224: ; 0x02106224 - .asciz "NintendoDS" - - .balign 4, 0 - .global UNK_02106230 -UNK_02106230: ; 0x02106230 - .byte 0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 - .section .bss .global UNK_021C8C78 @@ -241,38 +224,6 @@ UNK_021C8D6C: ; 0x021C8D6C UNK_021C8DA4: ; 0x021C8DA4 .space 0x104 - .global UNK_021C8EA8 -UNK_021C8EA8: ; 0x021C8EA8 - .space 0x4 - - .global UNK_021C8EAC -UNK_021C8EAC: ; 0x021C8EAC - .space 0x4 - - .global UNK_021C8EB0 -UNK_021C8EB0: ; 0x021C8EB0 - .space 0x4 - - .global UNK_021C8EB4 -UNK_021C8EB4: ; 0x021C8EB4 - .space 0x4 - - .global UNK_021C8EB8 -UNK_021C8EB8: ; 0x021C8EB8 - .space 0x4 - - .global UNK_021C8EBC -UNK_021C8EBC: ; 0x021C8EBC - .space 0x4 - - .global UNK_021C8EC0 -UNK_021C8EC0: ; 0x021C8EC0 - .space 0x4 - - .global UNK_021C8EC4 -UNK_021C8EC4: ; 0x021C8EC4 - .space 0x4 - .text ; Nintendo DWC @@ -7597,14 +7548,14 @@ FUN_020975F0: ; 0x020975F0 ldr lr, [r1, #0x0] ldr r3, [r0, #0x0] ldr r12, [lr, #0x4] - ldr r2, _0209765C ; =UNK_021C8F04 - ldr r1, _02097660 ; =UNK_021C8ED0 + ldr r2, _0209765C ; =CPSMyIp + ldr r1, _02097660 ; =CPSNetMask str r12, [r2, #0x0] ldr r12, [lr, #0x8] - ldr r2, _02097664 ; =UNK_021C8EE0 + ldr r2, _02097664 ; =CPSGatewayIp str r12, [r1, #0x0] ldr r12, [lr, #0xc] - ldr r1, _02097668 ; =UNK_021C8F1C + ldr r1, _02097668 ; =CPSDnsIp str r12, [r2, #0x0] ldr r12, [lr, #0x10] orr r2, r3, #0x2 @@ -7618,10 +7569,10 @@ FUN_020975F0: ; 0x020975F0 .balign 4 _02097654: .word UNK_021C8CC0 _02097658: .word UNK_021C8CCC -_0209765C: .word UNK_021C8F04 -_02097660: .word UNK_021C8ED0 -_02097664: .word UNK_021C8EE0 -_02097668: .word UNK_021C8F1C +_0209765C: .word CPSMyIp +_02097660: .word CPSNetMask +_02097664: .word CPSGatewayIp +_02097668: .word CPSDnsIp arm_func_start FUN_0209766C FUN_0209766C: ; 0x0209766C @@ -7674,7 +7625,7 @@ _02097700: str r2, [r5, #0x24] ldr r1, _020977D0 ; =UNK_021061DC mov r3, r0, asr #0x1 - ldr r0, _020977D4 ; =UNK_021C8F04 + ldr r0, _020977D4 ; =CPSMyIp mov r2, #0x0 strh r12, [r1, #0x2] strh r3, [r1, #0x4] @@ -7703,13 +7654,13 @@ _0209778C: ldr r0, [r4, #0x2c] cmp r0, #0x0 moveq r0, #0xb - bl FUN_0209FC88 - ldr r0, _020977E8 ; =FUN_0209F65C + bl CPS_SetThreadPriority + ldr r0, _020977E8 ; =CPSi_RecvCallbackFunc bl FUN_020A87BC ldr r0, _020977EC ; =FUN_020996C0 - bl FUN_0209FD24 + bl CPS_SetScavengerCallback mov r0, r5 - bl FUN_0209FD94 + bl CPS_Startup add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} bx lr @@ -7719,12 +7670,12 @@ _020977C4: .word UNK_021C8CD4 _020977C8: .word UNK_021C8CC4 _020977CC: .word FUN_020975B4 _020977D0: .word UNK_021061DC -_020977D4: .word UNK_021C8F04 +_020977D4: .word CPSMyIp _020977D8: .word UNK_021C8CCC _020977DC: .word FUN_020975D8 _020977E0: .word UNK_021C8CC8 _020977E4: .word FUN_020975F0 -_020977E8: .word FUN_0209F65C +_020977E8: .word CPSi_RecvCallbackFunc _020977EC: .word FUN_020996C0 arm_func_start FUN_020977F0 @@ -8276,7 +8227,7 @@ FUN_02097EF8: ; 0x02097EF8 stmdb sp!, {r4,lr} ldr r4, [r0, #0x4] mov r0, r4 - bl FUN_0209CC28 + bl CPS_SocRegister ldrsb r0, [r4, #0x73] ldr r1, [r4, #0x68] cmp r0, #0x4 @@ -8294,17 +8245,17 @@ _02097F2C: b _02097F30 _02097F30: add r0, r1, #0x20 - bl FUN_0209CB0C - bl FUN_0209CB44 + bl CPS_SocDup + bl CPS_SocUse b _02097F58 _02097F40: - bl FUN_0209CB44 - bl FUN_0209CBE8 + bl CPS_SocUse + bl CPS_SocDatagramMode ldr r0, _02097F6C ; =FUN_02098550 - bl FUN_0209CAA8 + bl CPS_SetUdpCallback b _02097F58 _02097F54: - bl FUN_0209CBE8 + bl CPS_SocDatagramMode _02097F58: mov r0, #0x1 strh r0, [r4, #0x70] @@ -8347,13 +8298,13 @@ FUN_02097FB4: ; 0x02097FB4 mov r1, #0x0 ldrh r0, [r6, #0x10] mov r2, r1 - bl FUN_0209CB78 - bl FUN_0209CA54 + bl CPS_SocPingMode + bl CPS_TcpListen mov r2, #0x0 add r0, sp, #0x0 add r1, sp, #0x4 str r2, [r5, #0xf8] - bl FUN_0209C8E0 + bl CPS_SocWho ldrh r2, [sp, #0x0] ldr r1, [r6, #0x14] strh r2, [r1, #0x0] @@ -8564,7 +8515,7 @@ FUN_020982C4: ; 0x020982C4 ldrh r0, [r7, #0x10] ldrh r1, [r7, #0x12] ldr r2, [r7, #0x14] - bl FUN_0209CB78 + bl CPS_SocPingMode mov r0, r5 str r0, [r6, #0xf8] ldrsb r0, [r7, #0xc] @@ -8573,7 +8524,7 @@ FUN_020982C4: ; 0x020982C4 cmp r0, #0x4 bne _02098318 _02098310: - bl FUN_0209C934 + bl CPS_TcpConnect mov r5, r0 _02098318: add r0, r6, #0xe0 @@ -8923,7 +8874,7 @@ FUN_020987C0: ; 0x020987C0 mov r1, #0x0 mov r0, r4 str r1, [r6, #0xf8] - bl FUN_0209C52C + bl CPS_SocConsume _020987EC: mov r0, r5 bl OS_RestoreInterrupts @@ -8985,7 +8936,7 @@ FUN_02098868: ; 0x02098868 mov r4, #0xa _020988A8: mov r0, r11 - bl FUN_0209C638 + bl CPS_SocRead cmp r0, #0x0 beq _02098904 ldr r1, [sp, #0x10] @@ -9025,7 +8976,7 @@ _02098904: mov r2, r10 bl MI_CpuCopy8 mov r0, r10 - bl FUN_0209C52C + bl CPS_SocConsume add sp, sp, #0x14 mov r0, r10 ldmia sp!, {r4-r11,lr} @@ -9526,7 +9477,7 @@ _02099008: beq _02099020 ldrh r0, [r8, #0x24] ldrh r1, [r8, #0x26] - bl FUN_0209CB78 + bl CPS_SocPingMode _02099020: ldrsb r1, [r7, #0x73] mov r0, #0x1 @@ -9562,7 +9513,7 @@ _02099078: cmp r1, #0x0 ble _020990E0 mov r0, r5 - bl FUN_0209C030 + bl CPS_SocWrite cmp r0, #0x0 bgt _020990D4 ldrsb r0, [r7, #0x73] @@ -9668,7 +9619,7 @@ _020991D8: ldrh r0, [r9, #0x74] cmp r0, #0x0 bne _02099224 - bl FUN_0209CC8C + bl CPS_SocGetEport strh r0, [r9, #0x74] ldrh r0, [r9, #0x74] strh r0, [r9, #0xa] @@ -9943,7 +9894,7 @@ FUN_0209959C: ; 0x0209959C _020995C0: cmp r1, #0x0 beq _020995CC - bl FUN_0209C840 + bl CPS_TcpShutdown _020995CC: mov r0, #0x0 add sp, sp, #0x4 @@ -10184,11 +10135,11 @@ _020998E8: ldr r0, [r4, #0x68] add r0, r0, #0x20 bl OS_JoinThread - bl FUN_0209C840 - bl FUN_0209C7AC - bl FUN_0209CB24 + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease _02099908: - bl FUN_0209CC10 + bl CPS_SocUnRegister ldrsh r0, [r4, #0x70] mov r1, #0x0 bic r0, r0, #0x6 @@ -10324,7 +10275,7 @@ _02099AE0: bl FUN_020996C0 b _02099B04 _02099AE8: - bl FUN_0209FD34 + bl CPS_CalmDown cmp r0, #0x0 mvneq r4, #0x19 beq _02099B04 @@ -10401,7 +10352,7 @@ FUN_02099BC8: ; 0x02099BC8 ldr r1, _02099C68 ; =UNK_021C8CC8 ldr r0, [r1, #0x0] cmp r0, #0x0 - ldreq r0, _02099C6C ; =UNK_021C8F04 + ldreq r0, _02099C6C ; =CPSMyIp ldreq r0, [r0, #0x0] streq r0, [r1, #0x0] bl FUN_02099A94 @@ -10419,9 +10370,9 @@ _02099C10: bl FUN_02097B14 movs r4, r0 bmi _02099C58 - bl FUN_0209FCC4 + bl CPS_Cleanup mov r0, #0x0 - bl FUN_0209FD24 + bl CPS_SetScavengerCallback ldr r0, _02099C70 ; =UNK_021C8CC0 ldr r1, [r0, #0x0] ldr r0, [r1, #0x28] @@ -10442,7 +10393,7 @@ _02099C58: bx lr .balign 4 _02099C68: .word UNK_021C8CC8 -_02099C6C: .word UNK_021C8F04 +_02099C6C: .word CPSMyIp _02099C70: .word UNK_021C8CC0 _02099C74: .word UNK_021C8CD4 @@ -10450,7 +10401,7 @@ _02099C74: .word UNK_021C8CD4 FUN_02099C78: stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _02099CE0 ; =UNK_021C8F04 + ldr r0, _02099CE0 ; =CPSMyIp ldr r2, [r0, #0x0] cmp r2, #0x0 bne _02099CBC @@ -10471,13 +10422,13 @@ _02099CBC: cmp r1, #0x0 streq r2, [r0, #0x0] _02099CCC: - ldr r0, _02099CE0 ; =UNK_021C8F04 + ldr r0, _02099CE0 ; =CPSMyIp ldr r0, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_02099CE0: .word UNK_021C8F04 +_02099CE0: .word CPSMyIp _02099CE4: .word UNK_021C8CCC _02099CE8: .word UNK_021C8CC8 @@ -10489,7 +10440,7 @@ FUN_02099CEC: ; 0x02099CEC mov r4, r1 bl FUN_02099C78 cmp r0, #0x0 - ldrne r1, _02099D24 ; =UNK_021C8F1C + ldrne r1, _02099D24 ; =CPSDnsIp mvneq r0, #0x26 movne r0, #0x0 strne r5, [r1, #0x0] @@ -10498,7 +10449,7 @@ FUN_02099CEC: ; 0x02099CEC ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_02099D24: .word UNK_021C8F1C +_02099D24: .word CPSDnsIp arm_func_start FUN_02099D28 FUN_02099D28: @@ -10506,7 +10457,7 @@ FUN_02099D28: sub sp, sp, #0x4 mov r4, r0 bl OS_DisableInterrupts - ldr r1, _02099D84 ; =UNK_021C8F1C + ldr r1, _02099D84 ; =CPSDnsIp mov r5, r0 ldr r7, [r1, #0x0] mov r2, #0x0 @@ -10514,8 +10465,8 @@ FUN_02099D28: mov r0, r4 str r2, [r1, #0x0] str r2, [r1, #0x4] - bl FUN_0209AB80 - ldr r1, _02099D84 ; =UNK_021C8F1C + bl CPS_Resolve + ldr r1, _02099D84 ; =CPSDnsIp mov r4, r0 mov r0, r5 str r7, [r1, #0x0] @@ -10526,7 +10477,7 @@ FUN_02099D28: ldmia sp!, {r4-r7,lr} bx lr .balign 4 -_02099D84: .word UNK_021C8F1C +_02099D84: .word CPSDnsIp arm_func_start FUN_02099D88 FUN_02099D88: ; 0x02099D88 @@ -10559,11 +10510,11 @@ FUN_02099D88: ; 0x02099D88 str r3, [sp, #0x3c] str r2, [sp, #0x4c] str r1, [sp, #0x48] - bl FUN_0209CC28 + bl CPS_SocRegister mov r0, r4 - bl FUN_0209AB80 + bl CPS_Resolve mov r4, r0 - bl FUN_0209CC10 + bl CPS_SocUnRegister ldr r1, _02099E34 ; =UNK_021C8CC0 mov r0, r5 ldr r1, [r1, #0x0] @@ -10925,9 +10876,6 @@ FUN_0209A224: ; 0x0209A224 arm_func_start FUN_0209A27C FUN_0209A27C: ; 0x0209A27C stmdb sp!, {r0-r3} - - arm_func_start FUN_0209A280 -FUN_0209A280: ; 0x0209A280 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, _0209A2B0 ; =UNK_021C8D5C @@ -11594,6238 +11542,3 @@ _0209AB3C: add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} bx lr - - arm_func_start FUN_0209AB80 -FUN_0209AB80: ; 0x0209AB80 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - ldr r6, _0209ACC0 ; =CPSiRand32ctx - mov r9, #0x0 - ldr r11, [r6, #0x8] - ldr r2, [r6, #0x0] - ldr r1, [r6, #0x4] - umull r5, r4, r11, r2 - mla r4, r11, r1, r4 - ldr r10, [r6, #0xc] - ldr r3, [r6, #0x10] - mla r4, r10, r2, r4 - adds r5, r3, r5 - ldr r1, [r6, #0x14] - umull r8, r7, r11, r5 - adc r4, r1, r4 - mla r7, r11, r4, r7 - mla r7, r10, r5, r7 - mov r2, r9, lsl #0x10 - adds r8, r3, r8 - str r5, [r6, #0x0] - adc r5, r1, r7 - mov r3, r9, lsl #0x10 - orr r2, r2, r4, lsr #0x10 - str r4, [r6, #0x4] - orr r3, r3, r5, lsr #0x10 - add r1, sp, #0x4 - mov r10, r0 - strh r2, [sp, #0x8] - str r8, [r6, #0x0] - str r5, [r6, #0x4] - strh r3, [sp, #0xa] - bl FUN_0209AD34 - cmp r0, #0x0 - ldrne r0, [sp, #0x4] - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,lr} - bxne lr - mov r0, #0x1 - ldr r6, _0209ACC4 ; =UNK_021C8F1C - strb r0, [sp, #0x0] - strb r0, [sp, #0x1] - add r5, sp, #0x8 - mov r4, r9 - mov r11, r9 -_0209AC34: - mov r8, r11 - add r7, sp, #0x0 -_0209AC3C: - ldrb r0, [r7, #0x0] - cmp r0, #0x0 - beq _0209AC80 - mov r0, r8, lsl #0x1 - ldrh r2, [r5, r0] - ldr r1, [r6, r8, lsl #0x2] - mov r0, r10 - bl FUN_0209ACC8 - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _0209AC74 - mvn r1, #0x0 - cmp r0, r1 - bne _0209AC9C -_0209AC74: - mvn r1, #0x0 - cmp r0, r1 - streqb r4, [r7, #0x0] -_0209AC80: - add r8, r8, #0x1 - cmp r8, #0x2 - add r7, r7, #0x1 - blt _0209AC3C - add r9, r9, #0x1 - cmp r9, #0x3 - blt _0209AC34 -_0209AC9C: - ldr r1, [sp, #0x4] - mvn r0, #0x0 - cmp r1, r0 - moveq r0, #0x0 - streq r0, [sp, #0x4] - ldr r0, [sp, #0x4] - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209ACC0: .word CPSiRand32ctx -_0209ACC4: .word UNK_021C8F1C - - arm_func_start FUN_0209ACC8 -FUN_0209ACC8: ; 0x0209ACC8 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - movs r5, r1 - mov r6, r0 - mov r4, r2 - addeq sp, sp, #0x8 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - bl FUN_0209CB44 - bl FUN_0209CBE8 - mov r2, r5 - mov r0, #0x0 - mov r1, #0x35 - bl FUN_0209CB78 - mov r0, r6 - mov r2, r4 - mov r3, #0x0 - str r3, [sp, #0x0] - mov r1, #0x1 - bl FUN_0209AE18 - mov r4, r0 - bl FUN_0209CB24 - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209AD34 -FUN_0209AD34: - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r6, #0x0 - mov r8, r0 - mov r7, r1 - mov r5, r6 - add r4, sp, #0x0 -_0209AD50: - mov r0, r8 - mov r1, r4 - mov r6, r6, lsl #0x8 - bl FUN_0209ADE4 - ldr r2, [sp, #0x0] - cmp r8, r2 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - mov r8, r2 - cmp r0, #0xff - bhi _0209ADB0 - cmp r5, #0x3 - beq _0209AD9C - ldrb r1, [r2, #0x0] - add r8, r2, #0x1 - cmp r1, #0x2e - bne _0209ADB0 -_0209AD9C: - cmp r5, #0x3 - bne _0209ADC0 - ldrb r1, [r8, #0x0] - cmp r1, #0x0 - beq _0209ADC0 -_0209ADB0: - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4-r8,lr} - bx lr -_0209ADC0: - add r5, r5, #0x1 - cmp r5, #0x4 - orr r6, r6, r0 - blt _0209AD50 - str r6, [r7, #0x0] - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_0209ADE4 -FUN_0209ADE4: ; 0x0209ADE4 - str r0, [r1, #0x0] - mov r12, #0x0 - mov r2, #0xa -_0209ADF0: - ldrb r3, [r0, #0x0] - sub r3, r3, #0x30 - and r3, r3, #0xff - cmp r3, #0x9 - mlals r12, r2, r12, r3 - addls r0, r0, #0x1 - strls r0, [r1, #0x0] - bls _0209ADF0 - mov r0, r12 - bx lr - - arm_func_start FUN_0209AE18 -FUN_0209AE18: ; 0x0209AE18 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4c - mov r9, r2 - mov r2, r9, asr #0x8 - mov r10, r1 - orr r1, r2, r9, lsl #0x8 - strh r1, [sp, #0x10] - cmp r10, #0x20 - mov r5, #0x0 - movne r1, #0x1 - strneh r1, [sp, #0x12] - ldreq r1, _0209B0C8 ; =0x00001001 - strh r5, [sp, #0x16] - streqh r1, [sp, #0x12] - mov r1, #0x100 - strh r1, [sp, #0x14] - add r1, sp, #0x1c - strh r5, [sp, #0x18] - strh r5, [sp, #0x1a] - str r5, [sp, #0xc] - ldrb r6, [r0], #0x1 - str r3, [sp, #0x0] - ldr r8, [sp, #0x70] - add r2, r1, #0x1 - cmp r6, #0x0 - beq _0209AED8 - add r4, sp, #0x10 -_0209AE84: - cmp r6, #0x2e - beq _0209AEB8 - sub r3, r2, r4 - cmp r3, #0x3c - addge sp, sp, #0x4c - mvnge r0, #0x0 - ldmgeia sp!, {r4-r11,lr} - bxge lr - strb r6, [r2], #0x1 - ldr r3, [sp, #0xc] - add r3, r3, #0x1 - str r3, [sp, #0xc] - b _0209AECC -_0209AEB8: - ldr r3, [sp, #0xc] - strb r3, [r1, #0x0] - mov r1, r2 - str r5, [sp, #0xc] - add r2, r2, #0x1 -_0209AECC: - ldrb r6, [r0], #0x1 - cmp r6, #0x0 - bne _0209AE84 -_0209AED8: - ldr r0, [sp, #0xc] - mov r3, #0x0 - strb r0, [r1, #0x0] - strb r3, [r2, #0x0] - mov r0, r10, lsr #0x8 - strb r0, [r2, #0x1] - strb r10, [r2, #0x2] - strb r3, [r2, #0x3] - mov r3, #0x1 - add r0, sp, #0x10 - add r1, r2, #0x5 - sub r1, r1, r0 - strb r3, [r2, #0x4] - bl FUN_0209C030 - mov r6, #0x0 - bl OS_GetTick - mov r5, r0, lsr #0x10 - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x1 - orr r5, r5, r1, lsl #0x10 - str r0, [sp, #0x4] - mvn r11, #0x0 - b _0209B084 -_0209AF38: - bl FUN_0209BF9C - cmp r0, #0x0 - bne _0209AF4C - bl FUN_020A005C - b _0209B084 -_0209AF4C: - add r0, sp, #0xc - bl FUN_0209C638 - ldr r1, [sp, #0xc] - cmp r1, #0xc - bls _0209B07C - ldrh r3, [r0, #0x0] - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - cmp r9, r2, lsr #0x10 - bne _0209B07C - ldrb r2, [r0, #0x3] - and r2, r2, #0xf - cmp r2, #0x3 - moveq r6, r11 - beq _0209B07C - cmp r2, #0x0 - bne _0209B07C - ldrb r2, [r0, #0x4] - add r4, r0, r1 - ldrb r1, [r0, #0x5] - add r0, r0, #0xc - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - sub r7, r1, #0x1 - beq _0209AFCC -_0209AFB8: - bl FUN_0209B0D0 - cmp r7, #0x0 - add r0, r0, #0x4 - sub r7, r7, #0x1 - bne _0209AFB8 -_0209AFCC: - cmp r0, r4 - bhs _0209B07C -_0209AFD4: - bl FUN_0209B0D0 - ldrb r7, [r0, #0x8] - ldrb r1, [r0, #0x9] - ldrb r3, [r0, #0x0] - ldrb r2, [r0, #0x1] - orr r1, r1, r7, lsl #0x8 - mov r1, r1, lsl #0x10 - orr r3, r2, r3, lsl #0x8 - mov r2, r1, lsr #0x10 - mov r1, r3, lsl #0x10 - cmp r10, r1, lsr #0x10 - bne _0209B06C - cmp r10, #0xc - beq _0209B04C - add r1, r0, #0x6 - add r3, r1, r2 - add r4, r0, #0x8 - ldrb r1, [r1, r2] - ldrb r0, [r3, #0x1] - add r3, r4, r2 - ldrb r2, [r4, r2] - orr r0, r0, r1, lsl #0x8 - ldrb r1, [r3, #0x1] - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - orr r0, r1, r2, lsl #0x8 - mov r1, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r6, r1, r0, lsr #0x10 - b _0209B07C -_0209B04C: - cmp r2, r8 - ldrhi r6, [sp, #0x8] - bhi _0209B07C - ldr r1, [sp, #0x0] - add r0, r0, #0xa - bl MI_CpuCopy8 - ldr r6, [sp, #0x4] - b _0209B07C -_0209B06C: - add r1, r2, #0xa - add r0, r0, r1 - cmp r0, r4 - blo _0209AFD4 -_0209B07C: - ldr r0, [sp, #0xc] - bl FUN_0209C52C -_0209B084: - ldr r0, _0209B0CC ; =UNK_021C8EFC - ldr r0, [r0, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209B0B8 - cmp r6, #0x0 - bne _0209B0B8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - sub r0, r0, r5 - cmp r0, #0xf - blt _0209AF38 -_0209B0B8: - mov r0, r6 - add sp, sp, #0x4c - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209B0C8: .word 0x00001001 -_0209B0CC: .word UNK_021C8EFC - - arm_func_start FUN_0209B0D0 -FUN_0209B0D0: - ldrb r2, [r0], #0x1 - cmp r2, #0x0 - bxeq lr -_0209B0DC: - and r1, r2, #0xc0 - cmp r1, #0xc0 - addeq r0, r0, #0x1 - bxeq lr - add r0, r0, r2 - ldrb r2, [r0], #0x1 - cmp r2, #0x0 - bne _0209B0DC - bx lr - - arm_func_start FUN_0209B100 -FUN_0209B100: ; 0x0209B100 - stmdb sp!, {r4,lr} - bl FUN_0209CB44 - bl FUN_0209CBE8 - ldr r1, _0209B168 ; =UNK_021C8ED4 - mov r0, #0x44 - ldr r2, [r1, #0x0] - mov r1, #0x43 - bl FUN_0209CB78 - ldr r4, _0209B16C ; =UNK_021C924A - mov r1, #0x7 - mov r0, r4 - mov r2, #0x0 - bl FUN_0209B8E0 - mov r1, #0xff - add r2, r0, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x0 - mov r1, #0x12c - sub r3, r2, r4 - bl FUN_0209B8A0 - sub r1, r0, r4 - mov r0, r4 - bl FUN_0209C030 - bl FUN_0209CB24 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209B168: .word UNK_021C8ED4 -_0209B16C: .word UNK_021C924A - - arm_func_start FUN_0209B170 -FUN_0209B170: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - bl FUN_0209CB44 - bl FUN_0209CBE8 - cmp r4, #0x1 - bne _0209B1A8 - ldr r1, _0209B28C ; =UNK_021C8ED4 - mov r0, #0x44 - ldr r2, [r1, #0x0] - mov r1, #0x43 - bl FUN_0209CB78 - b _0209B1B8 -_0209B1A8: - mov r0, #0x44 - mov r1, #0x43 - mvn r2, #0x0 - bl FUN_0209CB78 -_0209B1B8: - mov r6, #0x0 -_0209B1BC: - mov r0, r4 - bl FUN_0209B6BC - mov r1, r6 - bl FUN_0209B2FC - movs r7, r0 - bne _0209B1E0 - add r6, r6, #0x1 - cmp r6, #0x4 - blt _0209B1BC -_0209B1E0: - bl FUN_0209CB24 - cmp r7, #0x2 - bne _0209B224 - ldr r0, _0209B290 ; =UNK_021C8F00 - mov r1, #0x3 - ldr r3, [r0, #0x0] - ldr r2, _0209B294 ; =UNK_021C8EEC - mov r3, r3, lsr #0x1 - str r3, [r5, #0x0] - ldr r3, [r0, #0x0] - add sp, sp, #0x4 - mul r1, r3, r1 - mov r1, r1, lsr #0x3 - str r1, [r2, #0x0] - mov r0, #0x1 - ldmia sp!, {r4-r7,lr} - bx lr -_0209B224: - ldr r1, _0209B294 ; =UNK_021C8EEC - cmp r4, #0x1 - ldr r0, [r1, #0x0] - mov r0, r0, lsr #0x1 - str r0, [r1, #0x0] - str r0, [r5, #0x0] - beq _0209B24C - cmp r4, #0x2 - beq _0209B270 - b _0209B27C -_0209B24C: - cmp r0, #0x3c - bhs _0209B27C - mov r2, #0x1 - ldr r0, _0209B290 ; =UNK_021C8F00 - str r2, [r5, #0x0] - ldr r0, [r0, #0x0] - mov r0, r0, lsr #0x3 - str r0, [r1, #0x0] - b _0209B27C -_0209B270: - cmp r0, #0x3c - movcc r0, #0x1 - strcc r0, [r5, #0x0] -_0209B27C: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209B28C: .word UNK_021C8ED4 -_0209B290: .word UNK_021C8F00 -_0209B294: .word UNK_021C8EEC - - arm_func_start FUN_0209B298 -FUN_0209B298: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl FUN_0209CB44 - bl FUN_0209CBE8 - mov r0, #0x44 - mov r1, #0x43 - mvn r2, #0x0 - bl FUN_0209CB78 - mov r4, #0x0 -_0209B2BC: - bl FUN_0209B7D8 - mov r1, r4 - bl FUN_0209B2FC - mov r5, r0 - cmp r5, #0x1 - beq _0209B2E0 - add r4, r4, #0x1 - cmp r4, #0x4 - blt _0209B2BC -_0209B2E0: - bl FUN_0209CB24 - cmp r5, #0x1 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209B2FC -FUN_0209B2FC: ; 0x0209B2FC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - add r2, r1, #0x1 - mov r1, #0xf - mul r1, r2, r1 - str r1, [sp, #0x8] - str r0, [sp, #0x0] - bl OS_GetTick - mov r0, r0, lsr #0x10 - str r0, [sp, #0x4] - orr r0, r0, r1, lsl #0x10 - mov r4, #0x0 - str r0, [sp, #0x4] - mov r0, #0x3 - mov r9, r4 - ldr r5, _0209B698 ; =UNK_021C8F1C - mov r7, #0x2 - mov r8, #0x1 - ldr fp, _0209B69C ; =UNK_021C8EE0 - ldr r6, _0209B6A0 ; =UNK_021C8ED0 - str r0, [sp, #0xc] - b _0209B64C -_0209B354: - bl FUN_0209BF9C - cmp r0, #0x0 - bne _0209B368 - bl FUN_020A005C - b _0209B64C -_0209B368: - add r0, sp, #0x10 - bl FUN_0209C638 - mov r10, r0 - ldr r0, [sp, #0x10] - cmp r0, #0xf0 - bls _0209B644 - ldrb r0, [r10, #0x0] - cmp r0, #0x2 - bne _0209B644 - ldrh r1, [r10, #0x6] - ldrh r2, [r10, #0x4] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r1, r0, lsl #0x10 - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - orr r1, r0, r1, lsr #0x10 - ldr r0, [sp, #0x0] - cmp r0, r1 - bne _0209B644 - ldr r1, _0209B6A4 ; =UNK_021C8F14 - add r0, r10, #0x1c - bl FUN_0209F9A0 - cmp r0, #0x0 - bne _0209B644 - ldrb r3, [r10, #0x10] - ldrb r0, [r10, #0x11] - ldrb r2, [r10, #0x12] - ldrb r1, [r10, #0x13] - orr r0, r0, r3, lsl #0x8 - mov r0, r0, lsl #0x10 - orr r1, r1, r2, lsl #0x8 - mov r0, r0, lsr #0x10 - mov r2, r0, lsl #0x10 - mov r0, r1, lsl #0x10 - orr r0, r2, r0, lsr #0x10 - ldrb r2, [r10, #0xec] - ldr r1, [sp, #0x10] - ldr r4, [sp, #0xc] - add r1, r10, r1 - cmp r2, #0x63 - bne _0209B644 - ldrb r2, [r10, #0xed] - cmp r2, #0x82 - bne _0209B644 - ldrb r2, [r10, #0xee] - cmp r2, #0x53 - bne _0209B644 - add r2, r10, #0xf0 - ldrb r3, [r10, #0xef] - cmp r3, #0x63 - bne _0209B644 - b _0209B630 -_0209B448: - cmp r3, #0x0 - beq _0209B630 - cmp r3, #0x33 - bgt _0209B48C - cmp r3, #0x33 - bge _0209B588 - cmp r3, #0x6 - bgt _0209B624 - cmp r3, #0x1 - blt _0209B624 - cmp r3, #0x1 - beq _0209B4AC - cmp r3, #0x3 - beq _0209B4E0 - cmp r3, #0x6 - beq _0209B514 - b _0209B624 -_0209B48C: - cmp r3, #0x35 - bgt _0209B4A0 - cmp r3, #0x35 - beq _0209B5C0 - b _0209B624 -_0209B4A0: - cmp r3, #0x36 - beq _0209B5F0 - b _0209B624 -_0209B4AC: - ldrb lr, [r2, #0x1] - ldrb r12, [r2, #0x2] - ldrb r10, [r2, #0x3] - ldrb r3, [r2, #0x4] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r3, r10, r3, lsr #0x10 - str r3, [r6, #0x0] - b _0209B624 -_0209B4E0: - ldrb lr, [r2, #0x1] - ldrb r12, [r2, #0x2] - ldrb r10, [r2, #0x3] - ldrb r3, [r2, #0x4] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r3, r10, r3, lsr #0x10 - str r3, [r11, #0x0] - b _0209B624 -_0209B514: - ldrb r3, [r2, #0x0] - cmp r3, #0x8 - strcc r9, [r5, #0x4] - blo _0209B554 - ldrb lr, [r2, #0x5] - ldrb r12, [r2, #0x6] - ldrb r10, [r2, #0x7] - ldrb r3, [r2, #0x8] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r3, r10, r3, lsr #0x10 - str r3, [r5, #0x4] -_0209B554: - ldrb lr, [r2, #0x1] - ldrb r12, [r2, #0x2] - ldrb r10, [r2, #0x3] - ldrb r3, [r2, #0x4] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r3, r10, r3, lsr #0x10 - str r3, [r5, #0x0] - b _0209B624 -_0209B588: - ldrb lr, [r2, #0x1] - ldrb r12, [r2, #0x2] - ldrb r10, [r2, #0x3] - ldrb r3, [r2, #0x4] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r10, r10, r3, lsr #0x10 - ldr r3, _0209B6A8 ; =UNK_021C8F00 - str r10, [r3, #0x0] - b _0209B624 -_0209B5C0: - ldrb r3, [r2, #0x1] - cmp r3, #0x2 - beq _0209B5E0 - cmp r3, #0x5 - ldreq r3, _0209B6AC ; =UNK_021C8F04 - moveq r4, r7 - streq r0, [r3, #0x0] - b _0209B624 -_0209B5E0: - ldr r3, _0209B6B0 ; =UNK_021C8EE8 - mov r4, r8 - str r0, [r3, #0x0] - b _0209B624 -_0209B5F0: - ldrb lr, [r2, #0x1] - ldrb r12, [r2, #0x2] - ldrb r10, [r2, #0x3] - ldrb r3, [r2, #0x4] - orr r12, r12, lr, lsl #0x8 - mov r12, r12, lsl #0x10 - orr r3, r3, r10, lsl #0x8 - mov r10, r12, lsr #0x10 - mov r10, r10, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r10, r10, r3, lsr #0x10 - ldr r3, _0209B6B4 ; =UNK_021C8ED4 - str r10, [r3, #0x0] -_0209B624: - ldrb r3, [r2, #0x0] - add r3, r3, #0x1 - add r2, r2, r3 -_0209B630: - cmp r2, r1 - bhs _0209B644 - ldrb r3, [r2], #0x1 - cmp r3, #0xff - bne _0209B448 -_0209B644: - ldr r0, [sp, #0x10] - bl FUN_0209C52C -_0209B64C: - ldr r0, _0209B6B8 ; =UNK_021C8EFC - ldr r0, [r0, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209B688 - cmp r4, #0x0 - bne _0209B688 - bl OS_GetTick - mov r2, r0, lsr #0x10 - ldr r0, [sp, #0x4] - orr r2, r2, r1, lsl #0x10 - sub r1, r2, r0 - ldr r0, [sp, #0x8] - cmp r1, r0 - blt _0209B354 -_0209B688: - mov r0, r4 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209B698: .word UNK_021C8F1C -_0209B69C: .word UNK_021C8EE0 -_0209B6A0: .word UNK_021C8ED0 -_0209B6A4: .word UNK_021C8F14 -_0209B6A8: .word UNK_021C8F00 -_0209B6AC: .word UNK_021C8F04 -_0209B6B0: .word UNK_021C8EE8 -_0209B6B4: .word UNK_021C8ED4 -_0209B6B8: .word UNK_021C8EFC - - arm_func_start FUN_0209B6BC -FUN_0209B6BC: ; 0x0209B6BC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, _0209B7CC ; =UNK_021C924A - mov r5, r0 - add r2, sp, #0x0 - mov r0, r4 - mov r1, #0x3 - bl FUN_0209B8E0 - mov r12, r0 - cmp r5, #0x0 - bne _0209B790 - mov r0, #0x32 - strb r0, [r12, #0x0] - mov r0, #0x4 - ldr r3, _0209B7D0 ; =UNK_021C8EE8 - strb r0, [r12, #0x1] - ldr r1, [r3, #0x0] - mov lr, #0x36 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, asr #0x8 - strb r1, [r12, #0x2] - ldr r1, [r3, #0x0] - ldr r2, _0209B7D4 ; =UNK_021C8ED4 - mov r1, r1, lsr #0x10 - strb r1, [r12, #0x3] - ldr r1, [r3, #0x0] - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, asr #0x8 - strb r1, [r12, #0x4] - ldr r1, [r3, #0x0] - strb r1, [r12, #0x5] - strb lr, [r12, #0x6] - strb r0, [r12, #0x7] - ldr r0, [r2, #0x0] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #0x8 - strb r0, [r12, #0x8] - ldr r0, [r2, #0x0] - mov r0, r0, lsr #0x10 - strb r0, [r12, #0x9] - ldr r0, [r2, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #0x8 - strb r0, [r12, #0xa] - ldr r0, [r2, #0x0] - strb r0, [r12, #0xb] - add r12, r12, #0xc -_0209B790: - add r2, r12, #0x1 - mov lr, #0xff - sub r3, r2, r4 - mov r0, #0x0 - mov r1, #0x12c - strb lr, [r12, #0x0] - bl FUN_0209B8A0 - mov r1, r0 - mov r0, r4 - sub r1, r1, r4 - bl FUN_0209C030 - ldr r0, [sp, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209B7CC: .word UNK_021C924A -_0209B7D0: .word UNK_021C8EE8 -_0209B7D4: .word UNK_021C8ED4 - - arm_func_start FUN_0209B7D8 -FUN_0209B7D8: ; 0x0209B7D8 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - ldr r4, _0209B898 ; =UNK_021C924A - add r2, sp, #0x0 - mov r0, r4 - mov r1, #0x1 - bl FUN_0209B8E0 - ldr r1, _0209B89C ; =UNK_021C8EE8 - mov r12, r0 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - beq _0209B85C - mov r0, #0x32 - strb r0, [r12, #0x0] - mov r0, #0x4 - strb r0, [r12, #0x1] - ldr r0, [r1, #0x0] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #0x8 - strb r0, [r12, #0x2] - ldr r0, [r1, #0x0] - mov r0, r0, lsr #0x10 - strb r0, [r12, #0x3] - ldr r0, [r1, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #0x8 - strb r0, [r12, #0x4] - ldr r0, [r1, #0x0] - strb r0, [r12, #0x5] - add r12, r12, #0x6 -_0209B85C: - add r2, r12, #0x1 - mov lr, #0xff - sub r3, r2, r4 - mov r0, #0x0 - mov r1, #0x12c - strb lr, [r12, #0x0] - bl FUN_0209B8A0 - mov r1, r0 - mov r0, r4 - sub r1, r1, r4 - bl FUN_0209C030 - ldr r0, [sp, #0x0] - add sp, sp, #0x8 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209B898: .word UNK_021C924A -_0209B89C: .word UNK_021C8EE8 - - arm_func_start FUN_0209B8A0 -FUN_0209B8A0: ; 0x0209B8A0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r12, r0 - mov r5, r2 - cmp r3, r1 - bhs _0209B8D0 - sub r4, r1, r3 - mov r0, r5 - mov r1, r12 - mov r2, r4 - bl MI_CpuFill8 - add r5, r5, r4 -_0209B8D0: - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209B8E0 -FUN_0209B8E0: ; 0x0209B8E0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r1, #0x0 - mov r2, #0xec - mov r6, r0 - bl MI_CpuFill8 - ldr r0, _0209BA5C ; =0x00000101 - mov r1, #0x6 - strh r0, [r6, #0x0] - ldr r0, _0209BA60 ; =CPSiRand32ctx - strb r1, [r6, #0x2] - ldr r3, [r0, #0x8] - ldr r2, [r0, #0x0] - ldr r1, [r0, #0x4] - umull lr, r12, r3, r2 - mla r12, r3, r1, r12 - ldr r1, [r0, #0xc] - ldr r7, [r0, #0x10] - mla r12, r1, r2, r12 - adds r3, r7, lr - ldr r1, [r0, #0x14] - str r3, [r0, #0x0] - adc r1, r1, r12 - str r1, [r0, #0x4] - mov r0, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - cmp r4, #0x0 - mov r2, r3, asr #0x8 - mov r0, r1, lsl #0x10 - strne r1, [r4, #0x0] - mov r1, r0, lsr #0x10 - orr r2, r2, r3, lsl #0x8 - mov r0, r1, asr #0x8 - strh r2, [r6, #0x4] - orr r0, r0, r1, lsl #0x8 - strh r0, [r6, #0x6] - ldr r2, _0209BA64 ; =UNK_021C8F04 - ldr r0, _0209BA68 ; =UNK_021C8F14 - ldr r1, [r2, #0x0] - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r3, asr #0x8 - orr r1, r1, r3, lsl #0x8 - strh r1, [r6, #0xc] - ldr r2, [r2, #0x0] - add r1, r6, #0x1c - mov r2, r2, lsl #0x10 - mov r3, r2, lsr #0x10 - mov r2, r3, asr #0x8 - orr r3, r2, r3, lsl #0x8 - mov r2, #0x6 - strh r3, [r6, #0xe] - bl MI_CpuCopy8 - ldr r0, _0209BA6C ; =0x00008263 - ldr r1, _0209BA70 ; =0x00006353 - strh r0, [r6, #0xec] - strh r1, [r6, #0xee] - ldr r0, _0209BA74 ; =0x00000135 - mov r1, #0x7 - strh r0, [r6, #0xf0] - strb r5, [r6, #0xf2] - mov r0, #0x3d - strb r0, [r6, #0xf3] - strb r1, [r6, #0xf4] - mov r3, #0x1 - ldr r0, _0209BA68 ; =UNK_021C8F14 - add r1, r6, #0xf6 - mov r2, #0x6 - strb r3, [r6, #0xf5] - bl MI_CpuCopy8 - mov r1, #0xc - strb r1, [r6, #0xfc] - mov r2, #0xa - ldr r0, _0209BA78 ; =UNK_02106224 - add r1, r6, #0xfe - strb r2, [r6, #0xfd] - bl MI_CpuCopy8 - mov r1, #0x37 - strb r1, [r6, #0x108] - mov r2, #0x3 - ldr r0, _0209BA7C ; =0x0000010D - strb r2, [r6, #0x109] - mov r1, #0x1 - strb r1, [r6, #0x10a] - strb r2, [r6, #0x10b] - mov r1, #0x6 - strb r1, [r6, #0x10c] - add r0, r6, r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209BA5C: .word 0x00000101 -_0209BA60: .word CPSiRand32ctx -_0209BA64: .word UNK_021C8F04 -_0209BA68: .word UNK_021C8F14 -_0209BA6C: .word 0x00008263 -_0209BA70: .word 0x00006353 -_0209BA74: .word 0x00000135 -_0209BA78: .word UNK_02106224 -_0209BA7C: .word 0x0000010D - - arm_func_start FUN_0209BA80 -FUN_0209BA80: ; 0x0209BA80 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - ldr r3, _0209BE40 ; =UNK_021C8EF8 - mov r1, #0x0 - ldr r0, _0209BE44 ; =UNK_021C8FD8 - mov r2, #0x64 - str r1, [r3, #0x0] - bl MI_CpuFill8 - ldr r0, _0209BE44 ; =UNK_021C8FD8 - mov r3, #0x180 - ldr r2, _0209BE48 ; =UNK_021C93A0 - ldr r1, _0209BE4C ; =UNK_021C9220 - str r3, [r0, #0x3c] - str r2, [r0, #0x40] - str r3, [r0, #0x48] - str r1, [r0, #0x4c] - bl FUN_0209CC28 - mov r11, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - str r0, [sp, #0x4c] - mov r1, r0 - ldr r0, _0209BE50 ; =UNK_021C8EC0 - ldr r5, [sp, #0x0] - str r1, [r0, #0x0] - mov r0, #0x2 - str r0, [sp, #0x10] - mov r0, r5 - str r0, [sp, #0x34] - str r0, [sp, #0x3c] - mov r0, #0x3 - str r0, [sp, #0x1c] - mov r0, r5 - str r0, [sp, #0x30] - str r0, [sp, #0x28] - str r0, [sp, #0x24] - str r0, [sp, #0x20] - str r0, [sp, #0xc] - mov r0, #0x69 - str r0, [sp, #0x44] - mov r0, #0x3e8 - mov r6, r11 - mov r4, r11 - mov r10, r11 - str r11, [sp, #0x14] - str r11, [sp, #0x18] - str r11, [sp, #0x38] - str r11, [sp, #0x2c] - str r11, [sp, #0x40] - str r11, [sp, #0x48] - str r0, [sp, #0x8] -_0209BB50: - ldr r0, [sp, #0x8] - bl OS_Sleep - ldr r0, _0209BE40 ; =UNK_021C8EF8 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _0209BE14 - bl OS_GetTick - mov r9, r0, lsr #0x10 - ldr r0, _0209BE54 ; =UNK_021C8EFC - orr r9, r9, r1, lsl #0x10 - ldr r0, [r0, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209BC8C - ldr r0, [sp, #0x4c] - subs r0, r0, #0x1 - str r0, [sp, #0x4c] - bne _0209BCA4 - ldr r0, _0209BE58 ; =UNK_021C8EC4 - ldr r0, [r0, #0x0] - ands r0, r0, #0x1 - beq _0209BBBC - cmp r11, #0x0 - bne _0209BCA4 - bl FUN_0209BE78 - ldr r11, [sp, #0xc] - b _0209BCA4 -_0209BBBC: - cmp r11, #0x3 - addls pc, pc, r11, lsl #0x2 - b _0209BCA4 -_0209BBC8: - b _0209BBD8 -_0209BBCC: - b _0209BC28 -_0209BBD0: - b _0209BC4C -_0209BBD4: - b _0209BCA4 -_0209BBD8: - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ldrne r1, [sp, #0x10] - ldrne r0, _0209BE50 ; =UNK_021C8EC0 - strne r1, [r0, #0x0] - ldrne r0, [sp, #0x14] - strne r0, [sp, #0x4] - bl FUN_0209B298 - cmp r0, #0x0 - beq _0209BC14 - ldr r1, [sp, #0x18] - add r0, sp, #0x4c - bl FUN_0209B170 - cmp r0, #0x0 - bne _0209BC20 -_0209BC14: - bl FUN_0209BE78 - ldr r11, [sp, #0x1c] - b _0209BCA4 -_0209BC20: - ldr r11, [sp, #0x20] - b _0209BCA4 -_0209BC28: - ldr r1, [sp, #0x24] - add r0, sp, #0x4c - bl FUN_0209B170 - cmp r0, #0x0 - bne _0209BCA4 - ldr r0, [sp, #0x4c] - cmp r0, #0x3c - ldrcc r11, [sp, #0x10] - b _0209BCA4 -_0209BC4C: - ldr r1, [sp, #0x10] - add r0, sp, #0x4c - bl FUN_0209B170 - cmp r0, #0x0 - ldrne r11, [sp, #0x28] - bne _0209BCA4 - ldr r0, [sp, #0x4c] - cmp r0, #0x3c - bhs _0209BCA4 - ldr r0, [sp, #0x1c] - bl FUN_020A0098 - ldr r0, [sp, #0x30] - ldr r11, [sp, #0x2c] - str r0, [sp, #0x4c] - str r0, [sp, #0x0] - b _0209BCA4 -_0209BC8C: - ldr r0, [sp, #0x34] - bl FUN_020A0098 - ldr r0, [sp, #0x3c] - ldr r11, [sp, #0x38] - str r0, [sp, #0x4c] - str r0, [sp, #0x0] -_0209BCA4: - ldr r1, [sp, #0x40] - ldr r0, _0209BE5C ; =UNK_021C8F78 -_0209BCAC: - ldr r2, [r0, #0x0] - cmp r2, #0x0 - beq _0209BCD4 - ldrh r2, [r0, #0xa] - sub r2, r9, r2 - mov r2, r2, lsl #0x10 - mov r3, r2, asr #0x10 - ldr r2, _0209BE60 ; =0x000003BD - cmp r3, r2 - strgt r6, [r0, #0x0] -_0209BCD4: - add r0, r0, #0xc - add r1, r1, #0x1 - cmp r1, #0x8 - blt _0209BCAC - ldr r0, _0209BE64 ; =UNK_021C8EE0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0209BD10 - ldr r1, [sp, #0x0] - subs r1, r1, #0x1 - str r1, [sp, #0x0] - bne _0209BD10 - bl FUN_0209F338 - ldr r0, [sp, #0x44] - str r0, [sp, #0x0] -_0209BD10: - ldr r0, _0209BE68 ; =OSi_ThreadInfo - ldr r7, [r0, #0x8] - cmp r7, #0x0 - beq _0209BDAC -_0209BD20: - ldr r0, [r7, #0xa4] - cmp r0, #0x0 - beq _0209BDA0 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _0209BDA0 - ldrb r2, [r0, #0x8] - cmp r2, #0x3 - bne _0209BD6C - ldr r1, [r0, #0x10] - sub r1, r9, r1 - cmp r1, #0x27 - ble _0209BD6C - strb r5, [r0, #0x8] - ldrh r1, [r0, #0x1a] - strh r1, [r0, #0x18] - ldr r1, [r0, #0x20] - str r1, [r0, #0x1c] - b _0209BDA0 -_0209BD6C: - cmp r2, #0x2 - bne _0209BDA0 - ldr r1, [r0, #0x10] - sub r1, r9, r1 - cmp r1, #0x27 - ble _0209BDA0 - ldr r1, [r0, #0x4] - cmp r1, #0x1 - bne _0209BDA0 - strb r4, [r0, #0x8] - str r4, [r0, #0x4] - ldr r0, [r0, #0x0] - bl OS_WakeupThreadDirect -_0209BDA0: - ldr r7, [r7, #0x68] - cmp r7, #0x0 - bne _0209BD20 -_0209BDAC: - ldr r7, [sp, #0x48] - ldr r8, _0209BE6C ; =UNK_021C9520 -_0209BDB4: - ldrh r0, [r8, #0x4] - cmp r0, #0x0 - beq _0209BDE4 - ldr r0, [r8, #0x2c] - sub r0, r9, r0 - cmp r0, #0xef - ble _0209BDE4 - ldr r1, _0209BE70 ; =CPSiFree - ldr r0, [r8, #0x34] - ldr r1, [r1, #0x0] - blx r1 - strh r10, [r8, #0x4] -_0209BDE4: - add r8, r8, #0x38 - add r7, r7, #0x1 - cmp r7, #0x8 - blt _0209BDB4 - mov r0, r9 - bl CPSi_SslPeriodical - ldr r0, _0209BE74 ; =UNK_021C8EF0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0209BB50 - blx r0 - b _0209BB50 -_0209BE14: - ldr r0, _0209BE58 ; =UNK_021C8EC4 - ldr r0, [r0, #0x0] - ands r0, r0, #0x1 - bne _0209BE30 - cmp r11, #0x3 - beq _0209BE30 - bl FUN_0209B100 -_0209BE30: - bl FUN_0209CC10 - add sp, sp, #0x54 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209BE40: .word UNK_021C8EF8 -_0209BE44: .word UNK_021C8FD8 -_0209BE48: .word UNK_021C93A0 -_0209BE4C: .word UNK_021C9220 -_0209BE50: .word UNK_021C8EC0 -_0209BE54: .word UNK_021C8EFC -_0209BE58: .word UNK_021C8EC4 -_0209BE5C: .word UNK_021C8F78 -_0209BE60: .word 0x000003BD -_0209BE64: .word UNK_021C8EE0 -_0209BE68: .word OSi_ThreadInfo -_0209BE6C: .word UNK_021C9520 -_0209BE70: .word CPSiFree -_0209BE74: .word UNK_021C8EF0 - - arm_func_start FUN_0209BE78 -FUN_0209BE78: ; 0x0209BE78 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r0, _0209BF3C ; =UNK_021C8ECC - ldr r0, [r0, #0x0] - blx r0 - ldr r0, _0209BF40 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - bl FUN_0209F338 - mov r0, #0x64 - bl OS_Sleep - ldr r0, _0209BF40 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - bl FUN_0209F338 - bl OS_GetTick - mov r4, r0, lsr #0x10 - orr r4, r4, r1, lsl #0x10 - ldr r6, _0209BF44 ; =UNK_021C8EAC - mov r7, #0x64 - ldr r5, _0209BF48 ; =UNK_021C8EFC - b _0209BF00 -_0209BED8: - ldrb r0, [r6, #0x0] - cmp r0, #0x0 - beq _0209BEF8 - mov r0, #0x4 - bl FUN_020A0098 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209BEF8: - mov r0, r7 - bl OS_Sleep -_0209BF00: - ldr r0, [r5, #0x0] - blx r0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - sub r0, r0, r4 - cmp r0, #0x17 - blt _0209BED8 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209BF3C: .word UNK_021C8ECC -_0209BF40: .word UNK_021C8F04 -_0209BF44: .word UNK_021C8EAC -_0209BF48: .word UNK_021C8EFC - - arm_func_start FUN_0209BF4C -FUN_0209BF4C: ; 0x0209BF4C - stmdb sp!, {r4,lr} - ldr r0, _0209BF98 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r4, [r0, #0xa4] - cmp r4, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, [r4, #0x60] - cmp r1, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - mov r2, #0x0 - ldr r0, [r4, #0x5c] - mov r3, r2 - bl FUN_0209C0E8 - mov r0, #0x0 - str r0, [r4, #0x60] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209BF98: .word OSi_ThreadInfo - - arm_func_start FUN_0209BF9C -FUN_0209BF9C: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _0209C02C ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xa4] - cmp r0, #0x0 - beq _0209C01C - ldrb r1, [r0, #0x9] - cmp r1, #0x0 - beq _0209BFD4 - bl CPSi_SslGetLength - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209BFD4: - ldr r1, [r0, #0x44] - cmp r1, #0x0 - bne _0209BFFC - ldrb r0, [r0, #0x8] - cmp r0, #0x4 - beq _0209BFFC - add r0, r0, #0xf6 - and r0, r0, #0xff - cmp r0, #0x1 - bhi _0209C00C -_0209BFFC: - add sp, sp, #0x4 - mov r0, r1 - ldmia sp!, {lr} - bx lr -_0209C00C: - add sp, sp, #0x4 - mvn r0, #0x0 - ldmia sp!, {lr} - bx lr -_0209C01C: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209C02C: .word OSi_ThreadInfo - - arm_func_start FUN_0209C030 -FUN_0209C030: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r3, _0209C0E4 ; =OSi_ThreadInfo - mov r2, r0 - ldr r4, [r3, #0x4] - mov r3, r1 - ldr r5, [r4, #0xa4] - cmp r5, #0x0 - beq _0209C0D4 - ldr r4, [r5, #0x60] - cmp r4, #0x0 - beq _0209C0BC - ldr r0, [r5, #0x5c] - mov r1, r4 - bl FUN_0209C0E8 - ldr r1, [r5, #0x60] - mov r4, r0 - cmp r4, r1 - movcs r0, #0x0 - strcs r0, [r5, #0x60] - addcs sp, sp, #0x4 - subcs r0, r4, r1 - ldmcsia sp!, {r4-r5,lr} - bxcs lr - ldr r0, [r5, #0x5c] - sub r2, r1, r4 - add r1, r0, r4 - bl memmove - ldr r1, [r5, #0x60] - add sp, sp, #0x4 - sub r1, r1, r4 - mov r0, #0x0 - str r1, [r5, #0x60] - ldmia sp!, {r4-r5,lr} - bx lr -_0209C0BC: - mov r2, #0x0 - mov r3, r2 - bl FUN_0209C0E8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr -_0209C0D4: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209C0E4: .word OSi_ThreadInfo - - arm_func_start FUN_0209C0E8 -FUN_0209C0E8: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _0209C1CC ; =OSi_ThreadInfo - mov r7, r1 - ldr r12, [r12, #0x4] - mov r6, r2 - ldr r4, [r12, #0xa4] - mov r5, r3 - cmp r4, #0x0 - beq _0209C1BC - ldrb r12, [r4, #0x8] - cmp r12, #0xa - bne _0209C14C - cmp r7, #0x0 - beq _0209C12C - mov r2, r4 - bl FUN_0209EB00 -_0209C12C: - cmp r5, #0x0 - beq _0209C144 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209EB00 -_0209C144: - add r0, r7, r5 - b _0209C1A4 -_0209C14C: - cmp r12, #0xb - bne _0209C184 - cmp r7, #0x0 - beq _0209C164 - mov r2, r4 - bl FUN_0209EC40 -_0209C164: - cmp r5, #0x0 - beq _0209C17C - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209EC40 -_0209C17C: - add r0, r7, r5 - b _0209C1A4 -_0209C184: - ldrb r12, [r4, #0x9] - cmp r12, #0x0 - beq _0209C19C - str r4, [sp, #0x0] - bl CPSi_SslWrite2 - b _0209C1A4 -_0209C19C: - str r4, [sp, #0x0] - bl CPSi_TcpWrite2Raw -_0209C1A4: - ldr r1, _0209C1D0 ; =UNK_021C8EA8 - ldrb r1, [r1, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr -_0209C1BC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209C1CC: .word OSi_ThreadInfo -_0209C1D0: .word UNK_021C8EA8 - - arm_func_start CPSi_TcpWrite2Raw -CPSi_TcpWrite2Raw: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x1c - mov r4, #0x0 - mov r10, r0 - ldr r8, [sp, #0x40] - mov r0, r4 - str r4, [sp, #0xc] - mov r9, r1 - mov r11, r2 - str r3, [sp, #0x8] - mov r6, r4 - str r0, [r8, #0x34] - bl OS_GetTick - mov r0, r0, lsr #0x10 - str r0, [sp, #0x10] - orr r0, r0, r1, lsl #0x10 - str r0, [sp, #0x10] - mov r0, r6 - str r0, [sp, #0x18] - mov r0, #0x1 - ldr r4, _0209C3EC ; =UNK_021C8EFC - str r0, [sp, #0x14] - b _0209C39C -_0209C230: - ldr r7, [r8, #0x28] - ldr r3, [sp, #0x8] - str r8, [sp, #0x0] - mov r0, r10 - mov r1, r9 - mov r2, r11 - str r6, [sp, #0x4] - bl FUN_0209C3F0 - bl OS_GetTick - mov r5, r0, lsr #0x10 - orr r5, r5, r1, lsl #0x10 -_0209C25C: - bl FUN_020A005C - ldr r0, [r4, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209C2B8 - ldrb r0, [r8, #0x8] - cmp r0, #0x4 - bne _0209C2B8 - ldr r1, [r8, #0x28] - ldr r0, [r8, #0x30] - cmp r1, r0 - beq _0209C2B8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - sub r0, r0, r5 - cmp r0, #0xf - bge _0209C2B8 - cmp r6, #0x0 - beq _0209C25C - ldrh r0, [r8, #0x2c] - cmp r0, #0x0 - beq _0209C25C -_0209C2B8: - ldr r0, [r8, #0x30] - subs r7, r0, r7 - ldr r0, [sp, #0xc] - add r0, r0, r7 - str r0, [sp, #0xc] - beq _0209C2E4 - bl OS_GetTick - mov r0, r0, lsr #0x10 - str r0, [sp, #0x10] - orr r0, r0, r1, lsl #0x10 - str r0, [sp, #0x10] -_0209C2E4: - ldr r0, [r8, #0x30] - str r0, [r8, #0x28] - ldrb r0, [r8, #0x8] - cmp r0, #0x4 - bne _0209C36C - ldrh r0, [r8, #0x2c] - cmp r0, #0x0 - bne _0209C36C - cmp r7, #0x0 - bne _0209C36C - cmp r6, #0x0 - bne _0209C370 - bl OS_GetTick - mov r5, r0, lsr #0x10 - orr r5, r5, r1, lsl #0x10 - b _0209C334 -_0209C324: - bl FUN_020A005C - ldrh r0, [r8, #0x2c] - cmp r0, #0x0 - bne _0209C35C -_0209C334: - ldr r0, [r4, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209C35C - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - sub r0, r0, r5 - cmp r0, #0xf - blt _0209C324 -_0209C35C: - ldrh r0, [r8, #0x2c] - cmp r0, #0x0 - ldreq r6, [sp, #0x14] - b _0209C370 -_0209C36C: - ldr r6, [sp, #0x18] -_0209C370: - cmp r7, r9 - addcc r10, r10, r7 - subcc r9, r9, r7 - blo _0209C39C - sub r1, r7, r9 - add r10, r11, r1 - ldr r0, [sp, #0x8] - ldr r11, [sp, #0x18] - sub r9, r0, r1 - mov r0, r11 - str r0, [sp, #0x8] -_0209C39C: - ldr r0, [r4, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209C3DC - cmp r9, #0x0 - beq _0209C3DC - ldrb r0, [r8, #0x8] - cmp r0, #0x4 - bne _0209C3DC - bl OS_GetTick - mov r2, r0, lsr #0x10 - ldr r0, [sp, #0x10] - orr r2, r2, r1, lsl #0x10 - sub r0, r2, r0 - cmp r0, #0x9f - blt _0209C230 -_0209C3DC: - ldr r0, [sp, #0xc] - add sp, sp, #0x1c - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209C3EC: .word UNK_021C8EFC - - arm_func_start FUN_0209C3F0 -FUN_0209C3F0: ; 0x0209C3F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r2 - mov r4, r3 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - bl FUN_0209C44C - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - cmp r4, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldr r2, [sp, #0x10] - mov r0, r5 - mov r1, r4 - mov r3, #0x0 - bl FUN_0209C44C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209C44C -FUN_0209C44C: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r8, r2 - ldr r11, [r8, #0x34] - mov r10, r0 - movs r0, r3 - mov r0, r11, lsl #0x1 - movne r6, #0x1 - add r5, r0, #0x4 - mov r0, #0x18 - str r3, [sp, #0x4] - mov r9, r1 - ldreqh r6, [r8, #0x2c] - mov r4, #0x0 - str r0, [sp, #0x8] - b _0209C504 -_0209C48C: - ldr r0, _0209C528 ; =UNK_021C8EB0 - ldrh r7, [r8, #0x2e] - ldrh r0, [r0, #0x0] - ldr r1, [r8, #0x34] - cmp r7, r6 - movcs r7, r6 - cmp r0, r7 - movcc r7, r0 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - biceq r7, r7, #0x1 - cmp r9, r7 - sub r0, r1, r11 - movcc r7, r9 - adds r0, r5, r0 - moveq r7, r4 - mov r11, r1 - sub r5, r0, #0x1 - cmp r7, #0x0 - beq _0209C518 - ldr r3, [sp, #0x8] - mov r0, r10 - mov r1, r7 - mov r2, r8 - str r4, [sp, #0x0] - sub r6, r6, r7 - bl FUN_0209E878 - bl OS_YieldThread - add r10, r10, r7 - sub r9, r9, r7 -_0209C504: - cmp r9, #0x0 - beq _0209C518 - ldrb r0, [r8, #0x8] - cmp r0, #0x4 - beq _0209C48C -_0209C518: - mov r0, r7 - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209C528: .word UNK_021C8EB0 - - arm_func_start FUN_0209C52C -FUN_0209C52C: ; 0x0209C52C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _0209C57C ; =OSi_ThreadInfo - ldr r1, [r1, #0x4] - ldr r1, [r1, #0xa4] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldrb r2, [r1, #0x9] - cmp r2, #0x0 - beq _0209C56C - bl CPSi_SslConsume - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C56C: - bl CPSi_SocConsumeRaw - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209C57C: .word OSi_ThreadInfo - - arm_func_start CPSi_SocConsumeRaw -CPSi_SocConsumeRaw: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r7, r0 - bl OS_DisableInterrupts - ldr r2, [r4, #0x44] - ldr r1, [r4, #0x3c] - mov r6, r0 - cmp r2, r1 - mov r5, #0x0 - bne _0209C5B4 - cmp r7, #0x0 - movne r5, #0x1 -_0209C5B4: - cmp r7, r2 - movcs r0, #0x0 - strcs r0, [r4, #0x44] - bhs _0209C5D8 - ldr r0, [r4, #0x40] - sub r2, r2, r7 - add r1, r0, r7 - str r2, [r4, #0x44] - bl memmove -_0209C5D8: - mov r0, r6 - bl OS_RestoreInterrupts - ldrb r0, [r4, #0x8] - cmp r0, #0xa - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - cmp r0, #0xb - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, [r4, #0x44] - cmp r0, #0x0 - beq _0209C620 - cmp r5, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr -_0209C620: - mov r0, r4 - mov r1, #0x1b - bl FUN_0209DF84 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209C638 -FUN_0209C638: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _0209C6BC ; =OSi_ThreadInfo - ldr r1, [r1, #0x4] - ldr r1, [r1, #0xa4] - cmp r1, #0x0 - beq _0209C6A4 - ldrb r2, [r1, #0x8] - add r2, r2, #0xf6 - and r2, r2, #0xff - cmp r2, #0x1 - bhi _0209C678 - bl FUN_0209C74C - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C678: - ldrb r2, [r1, #0x9] - cmp r2, #0x0 - beq _0209C694 - bl CPSi_SslRead - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C694: - bl CPSi_TcpReadRaw - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C6A4: - mov r1, #0x0 - str r1, [r0, #0x0] - mov r0, r1 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209C6BC: .word OSi_ThreadInfo - - arm_func_start CPSi_TcpReadRaw -CPSi_TcpReadRaw: ; 0x0209C6C0 - stmdb sp!, {r4-r8,lr} - mov r4, r1 - ldr r1, [r4, #0x44] - mov r5, r0 - cmp r1, #0x0 - bne _0209C728 - ldrb r0, [r4, #0x8] - cmp r0, #0x4 - bne _0209C728 - bl OS_DisableInterrupts - mov r8, r0 - mov r7, #0x2 - mov r6, #0x0 - b _0209C704 -_0209C6F8: - mov r0, r6 - str r7, [r4, #0x4] - bl OS_SleepThread -_0209C704: - ldr r0, [r4, #0x44] - cmp r0, #0x0 - bne _0209C71C - ldrb r0, [r4, #0x8] - cmp r0, #0x4 - beq _0209C6F8 -_0209C71C: - mov r0, r8 - bl OS_RestoreInterrupts - b _0209C72C -_0209C728: - bl OS_YieldThread -_0209C72C: - ldr r0, [r4, #0x44] - str r0, [r5, #0x0] - ldr r0, [r5, #0x0] - cmp r0, #0x0 - ldrne r0, [r4, #0x40] - moveq r0, #0x0 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_0209C74C -FUN_0209C74C: ; 0x0209C74C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r1 - mov r9, r0 - bl OS_DisableInterrupts - ldr r7, [r8, #0x44] - mov r6, r0 - cmp r7, #0x0 - bne _0209C790 - mov r5, #0x3 - mov r4, #0x0 -_0209C778: - mov r0, r4 - str r5, [r8, #0x4] - bl OS_SleepThread - ldr r7, [r8, #0x44] - cmp r7, #0x0 - beq _0209C778 -_0209C790: - mov r0, r6 - bl OS_RestoreInterrupts - str r7, [r9, #0x0] - ldr r0, [r8, #0x40] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_0209C7AC -FUN_0209C7AC: ; 0x0209C7AC - stmdb sp!, {r4-r6,lr} - ldr r0, _0209C838 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r4, [r0, #0xa4] - cmp r4, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrb r0, [r4, #0x9] - cmp r0, #0x0 - beq _0209C7DC - mov r0, r4 - bl CPSi_SslClose -_0209C7DC: - bl OS_GetTick - mov r6, r0, lsr #0x10 - orr r6, r6, r1, lsl #0x10 - ldr r5, _0209C83C ; =UNK_021C8EFC - b _0209C7F4 -_0209C7F0: - bl FUN_020A005C -_0209C7F4: - ldr r0, [r5, #0x0] - blx r0 - cmp r0, #0x0 - beq _0209C828 - ldrb r0, [r4, #0x8] - cmp r0, #0x0 - beq _0209C828 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - sub r0, r0, r6 - cmp r0, #0x27 - blt _0209C7F0 -_0209C828: - mov r0, #0x0 - strb r0, [r4, #0x8] - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209C838: .word OSi_ThreadInfo -_0209C83C: .word UNK_021C8EFC - - arm_func_start FUN_0209C840 -FUN_0209C840: - stmdb sp!, {r4,lr} - ldr r0, _0209C880 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r4, [r0, #0xa4] - cmp r4, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldrb r0, [r4, #0x9] - cmp r0, #0x0 - beq _0209C870 - mov r0, r4 - bl CPSi_SslShutdown -_0209C870: - mov r0, r4 - bl CPSi_TcpShutdownRaw - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209C880: .word OSi_ThreadInfo - - arm_func_start CPSi_TcpShutdownRaw -CPSi_TcpShutdownRaw: ; 0x0209C884 - stmdb sp!, {r4,lr} - mov r4, r0 - bl OS_YieldThread - ldrb r1, [r4, #0x8] - add r0, r1, #0xfd - and r0, r0, #0xff - cmp r0, #0x1 - bhi _0209C8C0 - mov r0, r4 - mov r1, #0x19 - bl FUN_0209DF70 - mov r0, #0x7 - strb r0, [r4, #0x8] - ldmia sp!, {r4,lr} - bx lr -_0209C8C0: - cmp r1, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - mov r0, r4 - mov r1, #0x1a - bl FUN_0209DF84 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209C8E0 -FUN_0209C8E0: ; 0x0209C8E0 - ldr r2, _0209C930 ; =OSi_ThreadInfo - ldr r2, [r2, #0x4] - ldr r3, [r2, #0xa4] - cmp r3, #0x0 - beq _0209C928 - ldrb r2, [r3, #0x8] - cmp r2, #0x4 - beq _0209C908 - cmp r2, #0xa - bne _0209C928 -_0209C908: - cmp r0, #0x0 - ldrneh r2, [r3, #0x18] - strneh r2, [r0, #0x0] - cmp r1, #0x0 - ldrne r0, [r3, #0x14] - strne r0, [r1, #0x0] - ldr r0, [r3, #0x1c] - bx lr -_0209C928: - mov r0, #0x0 - bx lr - .balign 4 -_0209C930: .word OSi_ThreadInfo - - arm_func_start FUN_0209C934 -FUN_0209C934: ; 0x0209C934 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _0209C98C ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xa4] - cmp r0, #0x0 - beq _0209C97C - ldrb r1, [r0, #0x9] - cmp r1, #0x0 - beq _0209C96C - bl CPSi_SslConnect - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C96C: - bl CPSi_TcpConnectRaw - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209C97C: - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209C98C: .word OSi_ThreadInfo - - arm_func_start CPSi_TcpConnectRaw -CPSi_TcpConnectRaw: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - bl FUN_0209CC3C - mov r8, r0 - mov r9, #0x0 - mov r11, r9 - mov r4, #0x1 - mov r6, #0x2 - mov r5, #0x18 -_0209C9B8: - str r8, [r10, #0x28] - strb r6, [r10, #0x8] - bl OS_GetTick - mov r2, r0, lsr #0x10 - orr r2, r2, r1, lsl #0x10 - str r2, [r10, #0x10] - mov r0, r10 - mov r1, r6 - mov r2, r5 - bl FUN_0209DF98 - bl OS_DisableInterrupts - mov r7, r0 - ldr r0, _0209CA50 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0209CA04 - mov r0, r11 - str r4, [r10, #0x4] - bl OS_SleepThread -_0209CA04: - mov r0, r7 - bl OS_RestoreInterrupts - ldrb r0, [r10, #0x8] - cmp r0, #0x4 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldr r0, _0209CA50 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _0209CA40 - add r9, r9, #0x1 - cmp r9, #0x3 - blo _0209C9B8 -_0209CA40: - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209CA50: .word UNK_021C8F04 - - arm_func_start FUN_0209CA54 -FUN_0209CA54: ; 0x0209CA54 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _0209CAA4 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xa4] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldrb r1, [r0, #0x9] - cmp r1, #0x0 - beq _0209CA94 - bl CPSi_SslListen - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209CA94: - bl FUN_0209CAC4 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209CAA4: .word OSi_ThreadInfo - - arm_func_start FUN_0209CAA8 -FUN_0209CAA8: - ldr r1, _0209CAC0 ; =OSi_ThreadInfo - ldr r1, [r1, #0x4] - ldr r1, [r1, #0xa4] - cmp r1, #0x0 - strne r0, [r1, #0x38] - bx lr - .balign 4 -_0209CAC0: .word OSi_ThreadInfo - - arm_func_start FUN_0209CAC4 -FUN_0209CAC4: ; 0x0209CAC4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl FUN_0209CC3C - str r0, [r5, #0x28] - mov r0, #0x1 - strb r0, [r5, #0x8] - bl OS_DisableInterrupts - mov r4, r0 - mov r1, #0x1 - mov r0, #0x0 - str r1, [r5, #0x4] - bl OS_SleepThread - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209CB0C -FUN_0209CB0C: ; 0x0209CB0C - ldr r1, _0209CB20 ; =OSi_ThreadInfo - ldr r1, [r1, #0x4] - ldr r1, [r1, #0xa4] - str r1, [r0, #0xa4] - bx lr - .balign 4 -_0209CB20: .word OSi_ThreadInfo - - arm_func_start FUN_0209CB24 -FUN_0209CB24: ; 0x0209CB24 - ldr r0, _0209CB40 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r1, [r0, #0xa4] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x0] - bx lr - .balign 4 -_0209CB40: .word OSi_ThreadInfo - - arm_func_start FUN_0209CB44 -FUN_0209CB44: ; 0x0209CB44 - ldr r0, _0209CB74 ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r1, [r0, #0xa4] - cmp r1, #0x0 - bxeq lr - str r0, [r1, #0x0] - mov r0, #0x0 - strb r0, [r1, #0x8] - str r0, [r1, #0x44] - str r0, [r1, #0x60] - str r0, [r1, #0x38] - bx lr - .balign 4 -_0209CB74: .word OSi_ThreadInfo - - arm_func_start FUN_0209CB78 -FUN_0209CB78: ; 0x0209CB78 - stmdb sp!, {r4,lr} - ldr r3, _0209CBDC ; =OSi_ThreadInfo - ldr r3, [r3, #0x4] - ldr r4, [r3, #0xa4] - cmp r4, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r3, _0209CBE0 ; =0x7F000001 - cmp r2, r3 - ldreq r2, _0209CBE4 ; =UNK_021C8F04 - ldreq r2, [r2, #0x0] - cmp r0, #0x0 - strh r1, [r4, #0x1a] - ldrh r1, [r4, #0x1a] - strh r1, [r4, #0x18] - str r2, [r4, #0x20] - ldr r1, [r4, #0x20] - str r1, [r4, #0x1c] - strneh r0, [r4, #0xa] - ldmneia sp!, {r4,lr} - bxne lr - bl FUN_0209CC8C - strh r0, [r4, #0xa] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209CBDC: .word OSi_ThreadInfo -_0209CBE0: .word 0x7F000001 -_0209CBE4: .word UNK_021C8F04 - - arm_func_start FUN_0209CBE8 -FUN_0209CBE8: ; 0x0209CBE8 - ldr r0, _0209CC0C ; =OSi_ThreadInfo - ldr r0, [r0, #0x4] - ldr r1, [r0, #0xa4] - cmp r1, #0x0 - movne r0, #0xa - strneb r0, [r1, #0x8] - movne r0, #0x0 - strne r0, [r1, #0x44] - bx lr - .balign 4 -_0209CC0C: .word OSi_ThreadInfo - - arm_func_start FUN_0209CC10 -FUN_0209CC10: ; 0x0209CC10 - ldr r0, _0209CC24 ; =OSi_ThreadInfo - mov r1, #0x0 - ldr r0, [r0, #0x4] - str r1, [r0, #0xa4] - bx lr - .balign 4 -_0209CC24: .word OSi_ThreadInfo - - arm_func_start FUN_0209CC28 -FUN_0209CC28: ; 0x0209CC28 - ldr r1, _0209CC38 ; =OSi_ThreadInfo - ldr r1, [r1, #0x4] - str r0, [r1, #0xa4] - bx lr - .balign 4 -_0209CC38: .word OSi_ThreadInfo - - arm_func_start FUN_0209CC3C -FUN_0209CC3C: ; 0x0209CC3C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _0209CC88 ; =CPSiRand32ctx - ldr r3, [r1, #0x8] - ldr r2, [r1, #0x0] - ldr r0, [r1, #0x4] - umull lr, r12, r3, r2 - mla r12, r3, r0, r12 - ldr r0, [r1, #0xc] - ldr r3, [r1, #0x10] - mla r12, r0, r2, r12 - adds r2, r3, lr - ldr r0, [r1, #0x14] - str r2, [r1, #0x0] - adc r0, r0, r12 - str r0, [r1, #0x4] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209CC88: .word CPSiRand32ctx - - arm_func_start FUN_0209CC8C -FUN_0209CC8C: ; 0x0209CC8C - stmdb sp!, {r4-r8,lr} - ldr r0, _0209CD30 ; =OSi_ThreadInfo - ldr r6, [r0, #0x8] - ldr r2, _0209CD34 ; =UNK_021C8EBC - mov r4, #0x400 - mov r3, #0x1 - mov r5, #0x0 - ldr r1, _0209CD38 ; =0x00001388 -_0209CCAC: - ldrh r12, [r2, #0x0] - mov r0, r5 - add r12, r12, #0x1 - strh r12, [r2, #0x0] - ldrh r12, [r2, #0x0] - cmp r12, #0x400 - blo _0209CCD0 - cmp r12, r1 - blo _0209CCD4 -_0209CCD0: - strh r4, [r2, #0x0] -_0209CCD4: - mov r8, r6 - cmp r6, #0x0 - beq _0209CD18 - ldrh r7, [r2, #0x0] -_0209CCE4: - ldr lr, [r8, #0xa4] - cmp lr, #0x0 - beq _0209CD0C - ldr r12, [lr, #0x0] - cmp r12, #0x0 - beq _0209CD0C - ldrh r12, [lr, #0xa] - cmp r12, r7 - moveq r0, r3 - beq _0209CD18 -_0209CD0C: - ldr r8, [r8, #0x68] - cmp r8, #0x0 - bne _0209CCE4 -_0209CD18: - cmp r0, #0x0 - bne _0209CCAC - ldr r0, _0209CD34 ; =UNK_021C8EBC - ldrh r0, [r0, #0x0] - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209CD30: .word OSi_ThreadInfo -_0209CD34: .word UNK_021C8EBC -_0209CD38: .word 0x00001388 - - arm_func_start FUN_0209CD3C -FUN_0209CD3C: ; 0x0209CD3C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _0209CDAC ; =0x00000806 - add r4, sp, #0x0 -_0209CD4C: - mov r0, r4 - bl FUN_0209F57C - ldr r3, [sp, #0x0] - cmp r3, #0x22 - bls _0209CDA4 - ldrh r2, [r0, #0xc] - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #0x800 - beq _0209CD88 - cmp r1, r5 - beq _0209CD98 - b _0209CDA4 -_0209CD88: - add r0, r0, #0xe - sub r1, r3, #0xe - bl FUN_0209CDB0 - b _0209CDA4 -_0209CD98: - add r0, r0, #0xe - sub r1, r3, #0xe - bl FUN_0209E614 -_0209CDA4: - bl FUN_0209F51C - b _0209CD4C - .balign 4 -_0209CDAC: .word 0x00000806 - - arm_func_start FUN_0209CDB0 -FUN_0209CDB0: ; 0x0209CDB0 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldrh r12, [r4, #0xc] - ldrh r6, [r4, #0x10] - ldrh r2, [r4, #0xe] - ldrh r0, [r4, #0x12] - mov r5, r6, asr #0x8 - mov r3, r12, asr #0x8 - orr r5, r5, r6, lsl #0x8 - orr r12, r3, r12, lsl #0x8 - mov r3, r5, lsl #0x10 - mov r5, r0, asr #0x8 - mov r12, r12, lsl #0x10 - mov lr, r2, asr #0x8 - mov r6, r3, lsr #0x10 - orr r0, r5, r0, lsl #0x8 - mov r3, r12, lsr #0x10 - orr r2, lr, r2, lsl #0x8 - mov r5, r6, lsl #0x10 - mov r0, r0, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r2, r2, lsl #0x10 - orr r0, r5, r0, lsr #0x10 - orr r2, r3, r2, lsr #0x10 - mov r5, r1 - cmp r0, r2 - beq _0209CEF0 - bl FUN_0209F9CC - cmp r0, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrh r1, [r4, #0x2] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - cmp r5, r0, lsr #0x10 - addcc sp, sp, #0x8 - ldmccia sp!, {r4-r6,lr} - bxcc lr - ldrb r1, [r4, #0x0] - mov r0, r4 - and r1, r1, #0xf - mov r1, r1, lsl #0x2 - bl FUN_0209FB84 - ldr r1, _0209CFA0 ; =0x0000FFFF - cmp r0, r1 - addne sp, sp, #0x8 - ldmneia sp!, {r4-r6,lr} - bxne lr - ldrh r2, [r4, #0x10] - ldrh r12, [r4, #0x12] - ldr r1, _0209CFA4 ; =UNK_021C8F04 - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r2, r12, asr #0x8 - mov r3, r0, lsr #0x10 - orr r0, r2, r12, lsl #0x8 - mov r2, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - ldr r1, [r1, #0x0] - orr r0, r2, r0, lsr #0x10 - cmp r1, r0 - bne _0209CEF0 - ldrh r2, [r4, #0xc] - ldrh r12, [r4, #0xe] - sub r0, r4, #0x8 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r2, r12, asr #0x8 - mov r3, r1, lsr #0x10 - orr r1, r2, r12, lsl #0x8 - mov r2, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r1, r2, r1, lsr #0x10 - mov r2, #0x1 - bl FUN_0209F12C -_0209CEF0: - add r1, sp, #0x0 - mov r0, r4 - bl FUN_0209CFAC - movs r4, r0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrh r2, [r4, #0x2] - ldrb r3, [r4, #0x0] - ldrb r12, [r4, #0x9] - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - and r3, r3, #0xf - mov r2, r1, lsr #0x10 - cmp r12, #0x11 - add r1, r4, r3, lsl #0x2 - sub r2, r2, r3, lsl #0x2 - bne _0209CF44 - bl FUN_0209D2BC - b _0209CF70 -_0209CF44: - ldr r3, _0209CFA4 ; =UNK_021C8F04 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - beq _0209CF70 - cmp r12, #0x1 - bne _0209CF64 - bl FUN_0209E2E0 - b _0209CF70 -_0209CF64: - cmp r12, #0x6 - bne _0209CF70 - bl FUN_0209D4D8 -_0209CF70: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r1, _0209CFA8 ; =CPSiFree - sub r0, r4, #0xe - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209CFA0: .word 0x0000FFFF -_0209CFA4: .word UNK_021C8F04 -_0209CFA8: .word CPSiFree - - arm_func_start FUN_0209CFAC -FUN_0209CFAC: ; 0x0209CFAC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r6, #0x0 - mov r10, r0 - str r6, [r1, #0x0] - ldrh r3, [r10, #0x6] - str r1, [sp, #0x0] - ldr r2, _0209D2A4 ; =0x00003FFF - mov r1, r3, asr #0x8 - orr r1, r1, r3, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - str r1, [sp, #0x4] - ands r1, r1, r2 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldrh r1, [r10, #0xc] - ldrh r3, [r10, #0xe] - ldrb r4, [r10, #0x0] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r3, asr #0x8 - mov r2, r0, lsr #0x10 - orr r0, r1, r3, lsl #0x8 - and r3, r4, #0xf - ldrh r9, [r10, #0x4] - mov r2, r2, lsl #0x10 - mov r1, r0, lsl #0x10 - ldr r5, _0209D2A8 ; =UNK_021C9520 - mov r0, r6 - mov r7, r3, lsl #0x2 - orr r4, r2, r1, lsr #0x10 -_0209D034: - ldrh r2, [r5, #0x4] - cmp r2, #0x0 - beq _0209D058 - ldr r1, [r5, #0x0] - cmp r1, r4 - bne _0209D058 - ldrh r1, [r5, #0x6] - cmp r1, r9 - beq _0209D078 -_0209D058: - cmp r2, #0x0 - bne _0209D068 - cmp r6, #0x0 - moveq r6, r5 -_0209D068: - add r0, r0, #0x1 - cmp r0, #0x8 - add r5, r5, #0x38 - blo _0209D034 -_0209D078: - ldrh r2, [r10, #0x2] - cmp r0, #0x8 - ldr r1, _0209D2AC ; =0x00001FFF - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - ldr r0, [sp, #0x4] - and r8, r0, r1 - sub r0, r2, r7 - str r0, [sp, #0x8] - mov r0, r8, lsl #0x3 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r11, r0, r8, lsl #0x3 - bne _0209D150 - cmp r6, #0x0 - beq _0209D0C8 - cmp r11, #0x1000 - bls _0209D0D8 -_0209D0C8: - add sp, sp, #0x14 - mov r0, #0x0 - ldmia sp!, {r4-r11,lr} - bx lr -_0209D0D8: - ldr r1, _0209D2B0 ; =CPSiAlloc - ldr r0, _0209D2B4 ; =0x0000100E - ldr r1, [r1, #0x0] - add r0, r7, r0 - mov r5, r6 - blx r1 - str r0, [r6, #0x34] - ldr r0, [r6, #0x34] - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - str r4, [r6, #0x0] - strh r9, [r6, #0x6] - mov r0, #0x0 - strh r0, [r6, #0x8] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - str r0, [r6, #0x2c] - ldr r1, [r6, #0x34] - mov r0, r10 - add r1, r1, #0xe - add r1, r1, r7 - str r1, [r6, #0x30] - ldr r1, [r6, #0x34] - mov r2, r7 - add r1, r1, #0xe - bl MI_CpuCopy8 -_0209D150: - ldrh r0, [r5, #0x4] - cmp r0, #0x8 - beq _0209D164 - cmp r11, #0x1000 - bls _0209D18C -_0209D164: - mov r0, #0x0 - strh r0, [r5, #0x4] - ldr r1, _0209D2B8 ; =CPSiFree - ldr r0, [r5, #0x34] - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x14 - mov r0, #0x0 - ldmia sp!, {r4-r11,lr} - bx lr -_0209D18C: - ldr r0, [sp, #0x8] - ldr r2, [sp, #0x8] - add r0, r0, #0x7 - add r1, r8, r0, lsr #0x3 - ldr r0, [sp, #0x4] - ands r0, r0, #0x2000 - streqh r11, [r5, #0xa] - streqh r1, [r5, #0x8] - ldrh r3, [r5, #0x4] - add r0, r10, r7 - add r3, r5, r3, lsl #0x1 - strh r8, [r3, #0xc] - ldrh r3, [r5, #0x4] - add r3, r5, r3, lsl #0x1 - strh r1, [r3, #0x1c] - ldrh r1, [r5, #0x4] - add r1, r1, #0x1 - strh r1, [r5, #0x4] - ldr r3, [r5, #0x30] - ldr r1, [sp, #0xc] - add r1, r3, r1 - bl MI_CpuCopy8 - ldrh r6, [r5, #0x8] - cmp r6, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldrh r7, [r5, #0x4] - mov r3, #0x0 - mov r4, r3 - cmp r7, #0x0 - bls _0209D244 - mov r0, r3 -_0209D214: - add r2, r5, r4, lsl #0x1 - ldrh r1, [r2, #0xc] - cmp r1, r3 - bhi _0209D238 - ldrh r1, [r2, #0x1c] - cmp r3, r1 - movcc r3, r1 - movcc r4, r0 - blo _0209D23C -_0209D238: - add r4, r4, #0x1 -_0209D23C: - cmp r4, r7 - blo _0209D214 -_0209D244: - cmp r3, r6 - addcc sp, sp, #0x14 - movcc r0, #0x0 - ldmccia sp!, {r4-r11,lr} - bxcc lr - ldr r0, [r5, #0x34] - ldrh r3, [r5, #0xa] - ldrb r1, [r0, #0xe] - add r0, r0, #0xe - mov r2, #0x0 - and r1, r1, #0xf - add r1, r3, r1, lsl #0x2 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r3, asr #0x8 - orr r1, r1, r3, lsl #0x8 - strh r1, [r0, #0x2] - strh r2, [r5, #0x4] - ldr r1, [sp, #0x0] - mov r2, #0x1 - str r2, [r1, #0x0] - add sp, sp, #0x14 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209D2A4: .word 0x00003FFF -_0209D2A8: .word UNK_021C9520 -_0209D2AC: .word 0x00001FFF -_0209D2B0: .word CPSiAlloc -_0209D2B4: .word 0x0000100E -_0209D2B8: .word CPSiFree - - arm_func_start FUN_0209D2BC -FUN_0209D2BC: ; 0x0209D2BC - stmdb sp!, {r4-r8,lr} - mov r6, r1 - ldrh r1, [r6, #0x6] - mov r7, r0 - mov r5, r2 - cmp r1, #0x0 - beq _0209D2F8 - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, #0x11 - bl FUN_0209FB28 - cmp r0, #0x0 - ldmneia sp!, {r4-r8,lr} - bxne lr -_0209D2F8: - bl OS_DisableInterrupts - ldr r1, _0209D4D4 ; =OSi_ThreadInfo - mov r8, r0 - ldr r2, [r1, #0x8] - cmp r2, #0x0 - beq _0209D4C4 - mvn r12, #0x0 -_0209D314: - ldr r4, [r2, #0xa4] - cmp r4, #0x0 - beq _0209D4B8 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _0209D4B8 - ldrb r0, [r4, #0x8] - cmp r0, #0xa - bne _0209D4B8 - ldrh r3, [r6, #0x2] - ldrh r1, [r4, #0xa] - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - mov r0, r0, lsl #0x10 - cmp r1, r0, lsr #0x10 - bne _0209D4B8 - ldrh r3, [r4, #0x18] - cmp r3, #0x0 - beq _0209D378 - ldrh r1, [r6, #0x0] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - cmp r3, r0, lsr #0x10 - bne _0209D4B8 -_0209D378: - ldr r1, [r4, #0x1c] - cmp r1, #0x0 - beq _0209D3C0 - cmp r1, r12 - beq _0209D3C0 - ldrh lr, [r7, #0xc] - ldrh r0, [r7, #0xe] - mov r3, lr, asr #0x8 - orr r3, r3, lr, lsl #0x8 - mov r3, r3, lsl #0x10 - mov lr, r0, asr #0x8 - mov r3, r3, lsr #0x10 - orr r0, lr, r0, lsl #0x8 - mov r3, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r3, r0, lsr #0x10 - cmp r1, r0 - bne _0209D4B8 -_0209D3C0: - ldrh r1, [r7, #0x10] - ldrh r3, [r7, #0x12] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r3, asr #0x8 - mov r2, r0, lsr #0x10 - orr r0, r1, r3, lsl #0x8 - mov r1, r2, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #0x10 - str r0, [r4, #0x14] - ldr r0, [r4, #0x1c] - cmp r0, #0x0 - bne _0209D43C - ldrh r1, [r7, #0xc] - ldrh r3, [r7, #0xe] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r3, asr #0x8 - mov r2, r0, lsr #0x10 - orr r0, r1, r3, lsl #0x8 - mov r1, r2, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #0x10 - str r0, [r4, #0x1c] - ldrh r1, [r6, #0x0] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - strh r0, [r4, #0x18] -_0209D43C: - ldr r0, [r4, #0x44] - cmp r0, #0x0 - bne _0209D4C4 - ldr r1, [r4, #0x3c] - sub r0, r5, #0x8 - cmp r0, r1 - strhi r1, [r4, #0x44] - strls r0, [r4, #0x44] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x44] - add r0, r6, #0x8 - bl MI_CpuCopy8 - ldr r0, [r4, #0x4] - cmp r0, #0x3 - bne _0209D48C - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r0, [r4, #0x0] - bl OS_WakeupThreadDirect - b _0209D4C4 -_0209D48C: - ldr r3, [r4, #0x38] - cmp r3, #0x0 - beq _0209D4C4 - ldr r0, [r4, #0x40] - ldr r1, [r4, #0x44] - mov r2, r4 - blx r3 - cmp r0, #0x0 - movne r0, #0x0 - strne r0, [r4, #0x44] - b _0209D4C4 -_0209D4B8: - ldr r2, [r2, #0x68] - cmp r2, #0x0 - bne _0209D314 -_0209D4C4: - mov r0, r8 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209D4D4: .word OSi_ThreadInfo - - arm_func_start FUN_0209D4D8 -FUN_0209D4D8: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, r5 - mov r1, r4 - mov r2, r6 - mov r3, #0x6 - bl FUN_0209FB28 - cmp r0, #0x0 - ldmneia sp!, {r4-r6,lr} - bxne lr - ldrb r0, [r5, #0xc] - ldrb r2, [r5, #0xd] - and r1, r0, #0xf0 - mov r0, r1, asr #0x1 - add r0, r1, r0, lsr #0x1e - and r1, r2, #0x17 - cmp r1, #0x10 - sub r4, r4, r0, asr #0x2 - bgt _0209D558 - cmp r1, #0x10 - bge _0209D5C4 - cmp r1, #0x2 - bgt _0209D5F4 - cmp r1, #0x1 - blt _0209D5F4 - cmp r1, #0x1 - beq _0209D5DC - cmp r1, #0x2 - beq _0209D57C - b _0209D5F4 -_0209D558: - cmp r1, #0x12 - bgt _0209D5F4 - cmp r1, #0x11 - blt _0209D5F4 - cmp r1, #0x11 - beq _0209D5C4 - cmp r1, #0x12 - beq _0209D5A0 - b _0209D5F4 -_0209D57C: - ands r0, r2, #0x28 - ldmneia sp!, {r4-r6,lr} - bxne lr - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209DBB0 - ldmia sp!, {r4-r6,lr} - bx lr -_0209D5A0: - ands r0, r2, #0x28 - ldmneia sp!, {r4-r6,lr} - bxne lr - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209DA9C - ldmia sp!, {r4-r6,lr} - bx lr -_0209D5C4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209D774 - ldmia sp!, {r4-r6,lr} - bx lr -_0209D5DC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209D674 - ldmia sp!, {r4-r6,lr} - bx lr -_0209D5F4: - ands r0, r2, #0x4 - beq _0209D610 - mov r0, r6 - mov r1, r5 - bl FUN_0209D62C - ldmia sp!, {r4-r6,lr} - bx lr -_0209D610: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0x0 - bl FUN_0209DE34 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209D62C -FUN_0209D62C: ; 0x0209D62C - stmdb sp!, {r4,lr} - bl FUN_0209E0C8 - movs r4, r0 - ldmeqia sp!, {r4,lr} - bxeq lr - bl OS_YieldThread - mov r1, #0x0 - strb r1, [r4, #0x8] - ldr r0, [r4, #0x4] - sub r0, r0, #0x1 - cmp r0, #0x1 - ldmhiia sp!, {r4,lr} - bxhi lr - str r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl OS_WakeupThreadDirect - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209D674 -FUN_0209D674: ; 0x0209D674 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_0209E0C8 - movs r4, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldrb r1, [r4, #0x8] - cmp r1, #0x4 - beq _0209D72C - cmp r1, #0x7 - beq _0209D6BC - cmp r1, #0x8 - beq _0209D6E4 - b _0209D754 -_0209D6BC: - ldr r2, [r4, #0x24] - mov r1, #0x0 - add r2, r2, #0x1 - str r2, [r4, #0x24] - bl FUN_0209DF84 - mov r0, #0x9 - add sp, sp, #0x4 - strb r0, [r4, #0x8] - ldmia sp!, {r4-r7,lr} - bx lr -_0209D6E4: - ldr r2, [r4, #0x24] - mov r1, #0x0 - add r2, r2, #0x1 - str r2, [r4, #0x24] - bl FUN_0209DF84 - mov r1, #0x0 - strb r1, [r4, #0x8] - ldr r0, [r4, #0x4] - cmp r0, #0x2 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - str r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl OS_WakeupThreadDirect - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209D72C: - ldr r2, [r4, #0x24] - mov r1, #0x0 - add r2, r2, #0x1 - str r2, [r4, #0x24] - bl FUN_0209DF70 - mov r0, #0x6 - add sp, sp, #0x4 - strb r0, [r4, #0x8] - ldmia sp!, {r4-r7,lr} - bx lr -_0209D754: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0x0 - bl FUN_0209DE34 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209D774 -FUN_0209D774: ; 0x0209D774 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl FUN_0209E0C8 - movs r5, r0 - bne _0209D7B4 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x0 - bl FUN_0209DE34 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr -_0209D7B4: - ldrh r3, [r7, #0x8] - ldrh r1, [r7, #0xa] - ldrb r4, [r7, #0xd] - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r3, r1, asr #0x8 - mov r2, r2, lsr #0x10 - orr r1, r3, r1, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r1, r2, r1, lsr #0x10 - str r1, [r5, #0x30] - ldrh r9, [r7, #0x4] - ldrh r1, [r7, #0x6] - ldrb r3, [r5, #0x8] - mov r2, r9, asr #0x8 - orr r2, r2, r9, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r9, r1, asr #0x8 - mov r2, r2, lsr #0x10 - orr r1, r9, r1, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - cmp r3, #0x4 - orr r2, r2, r1, lsr #0x10 - bne _0209D840 - ldr r1, [r5, #0x24] - cmp r1, r2 - beq _0209D840 - mov r1, #0x0 - bl FUN_0209DF84 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr -_0209D840: - ldrh r1, [r7, #0xe] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - strh r0, [r5, #0x2c] - ldrb r0, [r5, #0x8] - cmp r0, #0x9 - addls pc, pc, r0, lsl #0x2 - b _0209DA70 -_0209D860: - b _0209D888 -_0209D864: - b _0209DA70 -_0209D868: - b _0209D888 -_0209D86C: - b _0209D8A0 -_0209D870: - b _0209D8CC -_0209D874: - b _0209DA70 -_0209D878: - b _0209DA4C -_0209D87C: - b _0209D9D8 -_0209D880: - b _0209D9D8 -_0209D884: - b _0209DA4C -_0209D888: - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x0 - bl FUN_0209DE34 - b _0209DA8C -_0209D8A0: - mov r0, #0x4 - strb r0, [r5, #0x8] - ldr r0, [r5, #0x4] - cmp r0, #0x1 - bne _0209D8C4 - mov r0, #0x0 - str r0, [r5, #0x4] - ldr r0, [r5, #0x0] - bl OS_WakeupThreadDirect -_0209D8C4: - cmp r6, #0x0 - beq _0209DA8C -_0209D8CC: - ldr r0, [r5, #0x34] - add r0, r0, #0x1 - str r0, [r5, #0x34] - ldr r1, [r5, #0x3c] - ldr r0, [r5, #0x44] - sub r0, r1, r0 - cmp r6, r0 - movhi r9, #0x0 - movhi r6, r0 - movls r9, #0x1 - cmp r6, #0x0 - beq _0209D968 - bl OS_DisableInterrupts - ldrb r1, [r7, #0xc] - ldr r12, [r5, #0x40] - ldr r3, [r5, #0x44] - and r2, r1, #0xf0 - mov r1, r2, asr #0x1 - add r1, r2, r1, lsr #0x1e - mov r8, r0 - mov r2, r6 - add r0, r7, r1, asr #0x2 - add r1, r12, r3 - bl MI_CpuCopy8 - ldr r1, [r5, #0x44] - mov r0, r8 - add r1, r1, r6 - str r1, [r5, #0x44] - ldr r1, [r5, #0x24] - add r1, r1, r6 - str r1, [r5, #0x24] - bl OS_RestoreInterrupts - ldr r0, [r5, #0x4] - cmp r0, #0x2 - bne _0209D968 - mov r0, #0x0 - str r0, [r5, #0x4] - ldr r0, [r5, #0x0] - bl OS_WakeupThreadDirect -_0209D968: - cmp r9, #0x0 - beq _0209D9C0 - ands r0, r4, #0x1 - beq _0209D9C0 - mov r0, #0x6 - strb r0, [r5, #0x8] - ldr r1, [r5, #0x24] - mov r0, r5 - add r2, r1, #0x1 - mov r1, #0x0 - str r2, [r5, #0x24] - bl FUN_0209DF70 - cmp r6, #0x0 - bne _0209DA8C - ldr r0, [r5, #0x4] - cmp r0, #0x2 - bne _0209DA8C - mov r0, #0x0 - str r0, [r5, #0x4] - ldr r0, [r5, #0x0] - bl OS_WakeupThreadDirect - b _0209DA8C -_0209D9C0: - cmp r6, #0x0 - beq _0209DA8C - mov r0, r5 - mov r1, #0x0 - bl FUN_0209DF84 - b _0209DA8C -_0209D9D8: - ands r0, r4, #0x1 - beq _0209DA20 - ldr r1, [r5, #0x24] - add r0, r6, #0x1 - add r2, r1, r0 - mov r0, r5 - mov r1, #0x0 - str r2, [r5, #0x24] - bl FUN_0209DF84 - mov r1, #0x0 - strb r1, [r5, #0x8] - ldr r0, [r5, #0x4] - cmp r0, #0x2 - bne _0209DA8C - str r1, [r5, #0x4] - ldr r0, [r5, #0x0] - bl OS_WakeupThreadDirect - b _0209DA8C -_0209DA20: - cmp r6, #0x0 - beq _0209DA40 - ldr r1, [r5, #0x24] - mov r0, r5 - add r2, r1, r6 - mov r1, #0x0 - str r2, [r5, #0x24] - bl FUN_0209DF84 -_0209DA40: - mov r0, #0x8 - strb r0, [r5, #0x8] - b _0209DA8C -_0209DA4C: - mov r1, #0x0 - strb r1, [r5, #0x8] - ldr r0, [r5, #0x4] - cmp r0, #0x2 - bne _0209DA8C - str r1, [r5, #0x4] - ldr r0, [r5, #0x0] - bl OS_WakeupThreadDirect - b _0209DA8C -_0209DA70: - ands r0, r4, #0x1 - ldrne r0, [r5, #0x24] - mov r1, #0x0 - addne r0, r0, #0x1 - strne r0, [r5, #0x24] - mov r0, r5 - bl FUN_0209DF84 -_0209DA8C: - bl OS_YieldThread - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_0209DA9C -FUN_0209DA9C: ; 0x0209DA9C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r5, r1 - mov r6, r2 - bl FUN_0209E0C8 - movs r4, r0 - beq _0209DAC8 - ldrb r0, [r4, #0x8] - cmp r0, #0x2 - beq _0209DAE8 -_0209DAC8: - mov r0, r7 - mov r1, r5 - mov r2, r6 - mov r3, #0x0 - bl FUN_0209DE34 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209DAE8: - bl OS_YieldThread - ldrh r2, [r5, #0x4] - ldrh r12, [r5, #0x6] - mov r0, r5 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r2, r12, asr #0x8 - mov r3, r1, lsr #0x10 - orr r1, r2, r12, lsl #0x8 - mov r2, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r1, r2, r1, lsr #0x10 - add r1, r1, #0x1 - str r1, [r4, #0x24] - ldrh r3, [r5, #0x8] - ldrh lr, [r5, #0xa] - mov r1, r4 - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r3, lr, asr #0x8 - mov r12, r2, lsr #0x10 - orr r2, r3, lr, lsl #0x8 - mov r3, r12, lsl #0x10 - mov r2, r2, lsl #0x10 - orr r2, r3, r2, lsr #0x10 - str r2, [r4, #0x30] - ldrh r3, [r5, #0xe] - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - strh r2, [r4, #0x2c] - bl FUN_0209E044 - mov r0, r4 - mov r1, #0x0 - bl FUN_0209DF84 - mov r0, #0x4 - strb r0, [r4, #0x8] - ldr r0, [r4, #0x4] - cmp r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r0, [r4, #0x0] - bl OS_WakeupThreadDirect - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209DBB0 -FUN_0209DBB0: ; 0x0209DBB0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldrh r12, [r4, #0x10] - ldrh r7, [r4, #0xc] - ldrh r3, [r4, #0x12] - mov r5, r12, asr #0x8 - mov r6, r7, asr #0x8 - orr r5, r5, r12, lsl #0x8 - orr r6, r6, r7, lsl #0x8 - mov r12, r6, lsl #0x10 - ldrh r0, [r4, #0xe] - mov lr, r5, lsl #0x10 - mov r5, r3, asr #0x8 - mov r6, r0, asr #0x8 - mov r7, r12, lsr #0x10 - orr r0, r6, r0, lsl #0x8 - orr r3, r5, r3, lsl #0x8 - mov r12, lr, lsr #0x10 - mov r6, r7, lsl #0x10 - mov r0, r0, lsl #0x10 - mov r5, r12, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r7, r1 - orr r1, r5, r3, lsr #0x10 - orr r0, r6, r0, lsr #0x10 - mov r5, r2 - bl FUN_0209E3DC - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r4 - mov r1, r7 - mov r2, r5 - bl FUN_0209DCB4 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - mov r0, r4 - mov r1, r7 - bl FUN_0209E200 - movs r2, r0 - beq _0209DC7C - mov r0, r4 - mov r1, r7 - bl FUN_0209DD44 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209DC7C: - bl OS_YieldThread - mov r0, r4 - mov r1, r7 - bl FUN_0209E200 - movs r2, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r4 - mov r1, r7 - bl FUN_0209DD44 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209DCB4 -FUN_0209DCB4: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_0209E0C8 - movs r2, r0 - beq _0209DD38 - ldrb r0, [r2, #0x8] - cmp r0, #0x1 - bne _0209DCEC - mov r0, r6 - mov r1, r5 - bl FUN_0209DD44 - b _0209DD2C -_0209DCEC: - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #0x1 - bhi _0209DD18 - ldr r1, [r2, #0x28] - mov r0, r6 - sub r3, r1, #0x1 - mov r1, r5 - str r3, [r2, #0x28] - bl FUN_0209DD44 - b _0209DD2C -_0209DD18: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0x0 - bl FUN_0209DE34 -_0209DD2C: - mov r0, #0x1 - ldmia sp!, {r4-r6,lr} - bx lr -_0209DD38: - mov r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209DD44 -FUN_0209DD44: ; 0x0209DD44 - stmdb sp!, {r4-r6,lr} - mov r4, r2 - mov r2, #0x3 - mov r6, r0 - mov r5, r1 - strb r2, [r4, #0x8] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - str r0, [r4, #0x10] - ldrh r2, [r6, #0x10] - ldrh r3, [r6, #0x12] - mov r0, r5 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r1, r1, lsr #0x10 - mov r3, r1, lsl #0x10 - mov r1, r2, lsl #0x10 - orr r1, r3, r1, lsr #0x10 - str r1, [r4, #0x14] - ldrh r3, [r5, #0x0] - mov r1, r4 - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - strh r2, [r4, #0x18] - ldrh r3, [r6, #0xc] - ldrh r6, [r6, #0xe] - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r3, r6, asr #0x8 - orr r3, r3, r6, lsl #0x8 - mov r2, r2, lsr #0x10 - mov r6, r2, lsl #0x10 - mov r2, r3, lsl #0x10 - orr r2, r6, r2, lsr #0x10 - str r2, [r4, #0x1c] - ldrh r3, [r5, #0x4] - ldrh r6, [r5, #0x6] - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - mov r3, r6, asr #0x8 - mov r5, r2, lsr #0x10 - orr r2, r3, r6, lsl #0x8 - mov r3, r5, lsl #0x10 - mov r2, r2, lsl #0x10 - orr r2, r3, r2, lsr #0x10 - add r2, r2, #0x1 - str r2, [r4, #0x24] - bl FUN_0209E044 - mov r0, r4 - mov r1, #0x12 - mov r2, #0x0 - bl FUN_0209DF98 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209DE34 -FUN_0209DE34: ; 0x0209DE34 - stmdb sp!, {r4-r8,lr} - ldr r4, _0209DF6C ; =UNK_021C903C - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r0, r4 - mov r1, #0x0 - mov r2, #0x64 - mov r5, r3 - bl MI_CpuFill8 - ldrh r2, [r7, #0x2] - mov r1, r4 - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - strh r0, [r1, #0xa] - ldrh r2, [r7, #0x0] - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - strh r0, [r1, #0x18] - ldrh r2, [r8, #0xc] - ldrh r8, [r8, #0xe] - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r2, r8, asr #0x8 - mov r3, r0, lsr #0x10 - orr r0, r2, r8, lsl #0x8 - mov r2, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r2, r0, lsr #0x10 - str r0, [r1, #0x1c] - ldrb r0, [r7, #0xd] - ands r0, r0, #0x10 - beq _0209DF04 - ldrh r2, [r7, #0x8] - ldrh r6, [r7, #0xa] - mov r0, r4 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - mov r1, r1, lsl #0x10 - mov r2, r6, asr #0x8 - mov r3, r1, lsr #0x10 - orr r1, r2, r6, lsl #0x8 - mov r2, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r3, r2, r1, lsr #0x10 - mov r2, r5 - mov r1, #0x4 - str r3, [r4, #0x28] - bl FUN_0209DF98 - ldmia sp!, {r4-r8,lr} - bx lr -_0209DF04: - mov r0, #0x0 - str r0, [r4, #0x28] - ldrh r1, [r7, #0x4] - ldrh r3, [r7, #0x6] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r3, asr #0x8 - mov r2, r0, lsr #0x10 - orr r0, r1, r3, lsl #0x8 - mov r1, r2, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #0x10 - add r0, r6, r0 - str r0, [r4, #0x24] - ldrb r0, [r7, #0xd] - mov r2, r5 - mov r1, #0x14 - ands r0, r0, #0x3 - ldrne r0, [r4, #0x24] - addne r0, r0, #0x1 - strne r0, [r4, #0x24] - mov r0, r4 - bl FUN_0209DF98 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209DF6C: .word UNK_021C903C - - arm_func_start FUN_0209DF70 -FUN_0209DF70: - ldr ip, _0209DF80 ; =FUN_0209DF98 - mov r2, r1 - mov r1, #0x11 - bx r12 - .balign 4 -_0209DF80: .word FUN_0209DF98 - - arm_func_start FUN_0209DF84 -FUN_0209DF84: ; 0x0209DF84 - ldr ip, _0209DF94 ; =FUN_0209DF98 - mov r2, r1 - mov r1, #0x10 - bx r12 - .balign 4 -_0209DF94: .word FUN_0209DF98 - - arm_func_start FUN_0209DF98 -FUN_0209DF98: ; 0x0209DF98 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - ldr r0, [r6, #0x1c] - mov r5, r1 - mov r4, r2 - bl FUN_0209E014 - cmp r0, #0x0 - bne _0209DFD0 - ldr r0, _0209E00C ; =OSi_ThreadInfo - ldr r1, _0209E010 ; =UNK_021C9160 - ldr r0, [r0, #0x4] - cmp r0, r1 - beq _0209DFF4 -_0209DFD0: - mov r0, #0x0 - mov r1, r0 - mov r2, r6 - mov r3, r5 - str r4, [sp, #0x0] - bl FUN_0209E878 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr -_0209DFF4: - ldr r0, [r6, #0x1c] - bl FUN_0209FAB0 - bl FUN_0209F338 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209E00C: .word OSi_ThreadInfo -_0209E010: .word UNK_021C9160 - - arm_func_start FUN_0209E014 -FUN_0209E014: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_0209FAB0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {lr} - bxeq lr - bl FUN_0209F438 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209E044 -FUN_0209E044: ; 0x0209E044 - mov r2, #0x218 - strh r2, [r1, #0x2e] - ldrb r2, [r0, #0xc] - add r3, r0, #0x14 - and r2, r2, #0xf0 - mov r0, r2, asr #0x1 - add r0, r2, r0, lsr #0x1e - mov r0, r0, asr #0x2 - subs r0, r0, #0x14 - sub r12, r0, #0x1 - bxeq lr -_0209E070: - ldrb r0, [r3], #0x1 - cmp r0, #0x0 - bxeq lr - cmp r0, #0x1 - beq _0209E0B8 - cmp r0, #0x2 - bne _0209E0A8 - ldrb r2, [r3, #0x1] - ldrb r0, [r3, #0x2] - add r3, r3, #0x3 - sub r12, r12, #0x3 - orr r0, r0, r2, lsl #0x8 - strh r0, [r1, #0x2e] - b _0209E0B8 -_0209E0A8: - ldrb r0, [r3, #0x0] - sub r0, r0, #0x1 - sub r12, r12, r0 - add r3, r3, r0 -_0209E0B8: - cmp r12, #0x0 - sub r12, r12, #0x1 - bne _0209E070 - bx lr - - arm_func_start FUN_0209E0C8 -FUN_0209E0C8: ; 0x0209E0C8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r2, _0209E140 ; =OSi_ThreadInfo - mov r7, r0 - ldr r4, [r2, #0x8] - mov r6, r1 - cmp r4, #0x0 - beq _0209E130 -_0209E0E8: - ldr r5, [r4, #0xa4] - cmp r5, #0x0 - beq _0209E124 - ldr r0, [r5, #0x0] - cmp r0, #0x0 - beq _0209E124 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl FUN_0209E144 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, r5 - ldmneia sp!, {r4-r7,lr} - bxne lr -_0209E124: - ldr r4, [r4, #0x68] - cmp r4, #0x0 - bne _0209E0E8 -_0209E130: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209E140: .word OSi_ThreadInfo - - arm_func_start FUN_0209E144 -FUN_0209E144: - stmdb sp!, {r4-r6,lr} - ldrb r4, [r2, #0x8] - mov r12, #0x0 - mov r3, r12 - mov r6, r12 - mov r5, r12 - cmp r4, #0xa - beq _0209E16C - cmp r4, #0xb - movne r5, #0x1 -_0209E16C: - cmp r5, #0x0 - beq _0209E190 - ldrh lr, [r1, #0x2] - ldrh r5, [r2, #0xa] - mov r4, lr, asr #0x8 - orr r4, r4, lr, lsl #0x8 - mov lr, r4, lsl #0x10 - cmp r5, lr, lsr #0x10 - moveq r6, #0x1 -_0209E190: - cmp r6, #0x0 - beq _0209E1B4 - ldrh r4, [r1, #0x0] - ldrh lr, [r2, #0x18] - mov r1, r4, asr #0x8 - orr r1, r1, r4, lsl #0x8 - mov r1, r1, lsl #0x10 - cmp lr, r1, lsr #0x10 - moveq r3, #0x1 -_0209E1B4: - cmp r3, #0x0 - beq _0209E1F4 - ldrh r1, [r0, #0xc] - ldrh lr, [r0, #0xe] - ldr r3, [r2, #0x1c] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, lr, asr #0x8 - mov r2, r0, lsr #0x10 - orr r0, r1, lr, lsl #0x8 - mov r1, r2, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #0x10 - cmp r3, r0 - moveq r12, #0x1 -_0209E1F4: - mov r0, r12 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209E200 -FUN_0209E200: ; 0x0209E200 - stmdb sp!, {r4-r6,lr} - ldr r2, _0209E2DC ; =OSi_ThreadInfo - ldr r3, [r2, #0x8] - cmp r3, #0x0 - beq _0209E2D0 -_0209E214: - ldr r12, [r3, #0xa4] - cmp r12, #0x0 - beq _0209E2C4 - ldr r2, [r12, #0x0] - cmp r2, #0x0 - beq _0209E2C4 - ldrb r2, [r12, #0x8] - cmp r2, #0x1 - bne _0209E2C4 - ldrh r5, [r1, #0x2] - ldrh r4, [r12, #0xa] - mov r2, r5, asr #0x8 - orr r2, r2, r5, lsl #0x8 - mov r2, r2, lsl #0x10 - cmp r4, r2, lsr #0x10 - bne _0209E2C4 - ldrh r5, [r12, #0x18] - cmp r5, #0x0 - beq _0209E278 - ldrh r4, [r1, #0x0] - mov r2, r4, asr #0x8 - orr r2, r2, r4, lsl #0x8 - mov r2, r2, lsl #0x10 - cmp r5, r2, lsr #0x10 - bne _0209E2C4 -_0209E278: - ldr r2, [r12, #0x1c] - cmp r2, #0x0 - beq _0209E2B8 - ldrh r5, [r0, #0xc] - ldrh r6, [r0, #0xe] - mov r4, r5, asr #0x8 - orr r4, r4, r5, lsl #0x8 - mov lr, r4, lsl #0x10 - mov r4, r6, asr #0x8 - mov lr, lr, lsr #0x10 - orr r4, r4, r6, lsl #0x8 - mov r5, lr, lsl #0x10 - mov lr, r4, lsl #0x10 - orr r4, r5, lr, lsr #0x10 - cmp r2, r4 - bne _0209E2C4 -_0209E2B8: - mov r0, r12 - ldmia sp!, {r4-r6,lr} - bx lr -_0209E2C4: - ldr r3, [r3, #0x68] - cmp r3, #0x0 - bne _0209E214 -_0209E2D0: - mov r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209E2DC: .word OSi_ThreadInfo - - arm_func_start FUN_0209E2E0 -FUN_0209E2E0: ; 0x0209E2E0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r6, r0 - mov r0, r5 - mov r1, r4 - bl FUN_0209FB84 - ldr r1, _0209E3D8 ; =0x0000FFFF - cmp r0, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrh r12, [r6, #0x10] - ldrh r7, [r6, #0xc] - ldrh r0, [r6, #0xe] - ldrh r1, [r6, #0x12] - mov r3, r7, asr #0x8 - mov lr, r0, asr #0x8 - orr r0, lr, r0, lsl #0x8 - mov r2, r12, asr #0x8 - orr r7, r3, r7, lsl #0x8 - orr r3, r2, r12, lsl #0x8 - mov r2, r7, lsl #0x10 - mov r12, r1, asr #0x8 - orr r1, r12, r1, lsl #0x8 - mov r3, r3, lsl #0x10 - mov r7, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - mov r3, r7, lsl #0x10 - mov r0, r0, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r0, r3, r0, lsr #0x10 - orr r1, r2, r1, lsr #0x10 - bl FUN_0209E3DC - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldrb r0, [r5, #0x0] - cmp r0, #0x0 - beq _0209E3A0 - cmp r0, #0x8 - beq _0209E3BC - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209E3A0: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209E40C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209E3BC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_0209E524 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209E3D8: .word 0x0000FFFF - - arm_func_start FUN_0209E3DC -FUN_0209E3DC: - cmp r0, #0x0 - beq _0209E404 - mvn r2, #0x0 - cmp r0, r2 - beq _0209E404 - cmp r1, #0x0 - beq _0209E404 - cmp r1, r2 - movne r0, #0x1 - bxne lr -_0209E404: - mov r0, #0x0 - bx lr - - arm_func_start FUN_0209E40C -FUN_0209E40C: ; 0x0209E40C - stmdb sp!, {r4-r8,lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl OS_DisableInterrupts - ldr r1, _0209E520 ; =OSi_ThreadInfo - mov r8, r0 - ldr r2, [r1, #0x8] - cmp r2, #0x0 - beq _0209E510 -_0209E434: - ldr r4, [r2, #0xa4] - cmp r4, #0x0 - beq _0209E504 - ldr r3, [r4, #0x0] - cmp r3, #0x0 - beq _0209E504 - ldrb r0, [r4, #0x8] - cmp r0, #0xb - bne _0209E504 - ldrh r1, [r6, #0x4] - mov r0, r3, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r1 - bne _0209E504 - ldrh r1, [r4, #0xa] - ldrh r0, [r6, #0x6] - cmp r1, r0 - bne _0209E504 - ldr r0, [r4, #0x44] - cmp r0, #0x0 - bne _0209E504 - ldrh r12, [r7, #0xc] - ldrh r1, [r7, #0xe] - ldr r0, [r4, #0x1c] - mov r3, r12, asr #0x8 - orr r3, r3, r12, lsl #0x8 - mov r3, r3, lsl #0x10 - mov r12, r1, asr #0x8 - mov r3, r3, lsr #0x10 - orr r1, r12, r1, lsl #0x8 - mov r3, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r1, r3, r1, lsr #0x10 - cmp r0, r1 - bne _0209E504 - ldr r1, [r4, #0x3c] - sub r0, r5, #0x8 - cmp r0, r1 - strhi r1, [r4, #0x44] - strls r0, [r4, #0x44] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x44] - add r0, r6, #0x8 - bl MI_CpuCopy8 - ldr r0, [r4, #0x4] - cmp r0, #0x3 - bne _0209E510 - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r0, [r4, #0x0] - bl OS_WakeupThreadDirect - b _0209E510 -_0209E504: - ldr r2, [r2, #0x68] - cmp r2, #0x0 - bne _0209E434 -_0209E510: - mov r0, r8 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209E520: .word OSi_ThreadInfo - - arm_func_start FUN_0209E524 -FUN_0209E524: ; 0x0209E524 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r6, r0 - ldrh r3, [r6, #0xc] - ldrh r4, [r6, #0xe] - mov r5, r1 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r4, asr #0x8 - mov r3, r0, lsr #0x10 - orr r0, r1, r4, lsl #0x8 - mov r1, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #0x10 - mov r4, r2 - bl FUN_0209FAB0 - movs r7, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r7,lr} - bxeq lr - bl FUN_0209F438 - cmp r0, #0x0 - bne _0209E598 - mov r0, r7 - bl FUN_0209F338 - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr -_0209E598: - mov r2, #0x0 - strb r2, [r5, #0x0] - mov r0, r5 - mov r1, r4 - strh r2, [r5, #0x2] - bl FUN_0209FB84 - mov r1, r0, asr #0x8 - orr r0, r1, r0, lsl #0x8 - strh r0, [r5, #0x2] - ldrh r1, [r6, #0xc] - ldrh r6, [r6, #0xe] - mov r2, #0x0 - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r1, r6, asr #0x8 - mov r3, r0, lsr #0x10 - orr r0, r1, r6, lsl #0x8 - mov r1, r3, lsl #0x10 - mov r0, r0, lsl #0x10 - orr r6, r1, r0, lsr #0x10 - mov r0, r5 - mov r1, r4 - mov r3, r2 - str r6, [sp, #0x0] - mov r4, #0x1 - str r4, [sp, #0x4] - bl FUN_0209ECFC - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209E614 -FUN_0209E614: ; 0x0209E614 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - cmp r1, #0x1c - mov r6, r0 - addcc sp, sp, #0x4 - ldmccia sp!, {r4-r7,lr} - bxcc lr - ldr r1, _0209E7BC ; =UNK_021C8F14 - add r0, r6, #0x8 - bl FUN_0209F9A0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, _0209E7C0 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldrh r0, [r6, #0x0] - cmp r0, #0x100 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrh r0, [r6, #0x2] - cmp r0, #0x8 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrh r1, [r6, #0x4] - ldr r0, _0209E7C4 ; =0x00000406 - cmp r1, r0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrh r1, [r6, #0x6] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - cmp r4, #0x1 - beq _0209E6D0 - cmp r4, #0x2 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr -_0209E6D0: - ldrh r1, [r6, #0xe] - ldrh r5, [r6, #0x10] - ldr r2, _0209E7C0 ; =UNK_021C8F04 - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r1, r5, asr #0x8 - orr r0, r1, r5, lsl #0x8 - mov r1, r0, lsl #0x10 - mov r3, r3, lsl #0x10 - orr r1, r3, r1, lsr #0x10 - ldr r0, [r2, #0x0] - ldrh r3, [r6, #0x18] - ldrh lr, [r6, #0x1a] - cmp r1, r0 - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - moveq r5, #0x1 - mov r3, lr, asr #0x8 - mov r12, r2, lsr #0x10 - orr r2, r3, lr, lsl #0x8 - mov r3, r12, lsl #0x10 - mov r2, r2, lsl #0x10 - orr r2, r3, r2, lsr #0x10 - movne r5, #0x0 - cmp r0, r2 - moveq r7, #0x1 - movne r7, #0x0 - cmp r5, #0x0 - bne _0209E75C - mov r2, r7 - add r0, r6, #0x8 - bl FUN_0209F12C -_0209E75C: - cmp r4, #0x1 - bne _0209E780 - cmp r7, #0x0 - beq _0209E780 - mov r0, r6 - bl FUN_0209E7CC - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209E780: - cmp r4, #0x2 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - cmp r7, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - cmp r5, #0x0 - ldrne r0, _0209E7C8 ; =UNK_021C8EAC - movne r1, #0x1 - strneb r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209E7BC: .word UNK_021C8F14 -_0209E7C0: .word UNK_021C8F04 -_0209E7C4: .word 0x00000406 -_0209E7C8: .word UNK_021C8EAC - - arm_func_start FUN_0209E7CC -FUN_0209E7CC: ; 0x0209E7CC - stmdb sp!, {r4,lr} - mov r4, r0 - mov r3, #0x200 - add r0, r4, #0x8 - add r1, r4, #0x12 - mov r2, #0xa - strh r3, [r4, #0x6] - bl MI_CpuCopy8 - ldr r0, _0209E870 ; =UNK_021C8F14 - add r1, r4, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - ldr r3, _0209E874 ; =UNK_021C8F04 - add r0, r4, #0x12 - ldr r2, [r3, #0x0] - sub r1, r4, #0xe - mov r2, r2, lsr #0x10 - mov r2, r2, lsl #0x10 - mov r12, r2, lsr #0x10 - mov r2, r12, asr #0x8 - orr r2, r2, r12, lsl #0x8 - strh r2, [r4, #0xe] - ldr r3, [r3, #0x0] - mov r2, #0x6 - mov r3, r3, lsl #0x10 - mov r12, r3, lsr #0x10 - mov r3, r12, asr #0x8 - orr r3, r3, r12, lsl #0x8 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldr r0, _0209E870 ; =UNK_021C8F14 - sub r1, r4, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - sub r0, r4, #0xe - mov r1, #0x2a - mov r2, #0x0 - mov r3, r2 - bl FUN_0209F930 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209E870: .word UNK_021C8F14 -_0209E874: .word UNK_021C8F04 - - arm_func_start FUN_0209E878 -FUN_0209E878: ; 0x0209E878 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r7, r2 - ldrb r2, [r7, #0x8] - mov r9, r0 - mov r8, r1 - cmp r2, #0x0 - mov r6, r3 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r9,lr} - bxeq lr - ldr r0, _0209EAEC ; =OSi_ThreadInfo - ldr r3, _0209EAF0 ; =UNK_021C8F04 - ldr r1, _0209EAF4 ; =UNK_021C9160 - ldr r0, [r0, #0x4] - ldr r12, [r3, #0x0] - cmp r0, r1 - ldreq r4, _0209EAF8 ; =UNK_021C8F5E - ldrne r0, [r7, #0x4c] - addne r4, r0, #0x22 - ands r0, r6, #0x2 - movne r5, #0x18 - moveq r5, #0x14 - add r1, r5, r8 - mov r2, r1, lsl #0x10 - mov r1, r12, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r12, r1, lsr #0x10 - mov r1, r12, asr #0x8 - orr r1, r1, r12, lsl #0x8 - strh r1, [r4, #-0xc] - ldr r1, [r3, #0x0] - mov r12, r2, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - strh r1, [r4, #-0xa] - ldr r1, [r7, #0x1c] - mov r3, r12, asr #0x8 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - mov r1, r2, asr #0x8 - orr r1, r1, r2, lsl #0x8 - strh r1, [r4, #-0x8] - ldr r1, [r7, #0x1c] - mov r2, r5, lsr #0x2 - mov r1, r1, lsl #0x10 - mov lr, r1, lsr #0x10 - mov r1, lr, asr #0x8 - orr r1, r1, lr, lsl #0x8 - strh r1, [r4, #-0x6] - mov r1, #0x600 - strh r1, [r4, #-0x4] - orr r1, r3, r12, lsl #0x8 - strh r1, [r4, #-0x2] - ldrh r12, [r7, #0xa] - cmp r0, #0x0 - mov r2, r2, lsl #0x4 - mov r3, r12, asr #0x8 - orr r3, r3, r12, lsl #0x8 - strh r3, [r4, #0x0] - ldrh r3, [r7, #0x18] - mov r1, #0x0 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [r4, #0x2] - ldr r0, [r7, #0x28] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [r4, #0x4] - ldr r0, [r7, #0x28] - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [r4, #0x6] - ldr r0, [r7, #0x24] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [r4, #0x8] - ldr r0, [r7, #0x24] - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [r4, #0xa] - strb r2, [r4, #0xc] - strb r6, [r4, #0xd] - ldr r2, [r7, #0x3c] - ldr r0, [r7, #0x44] - sub r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - strh r0, [r4, #0xe] - strh r1, [r4, #0x10] - strh r1, [r4, #0x12] - beq _0209EA64 - ldr r1, _0209EAFC ; =UNK_021C8EB0 - ldrh r0, [r1, #0x0] - add r0, r0, #0x2040000 - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - strh r0, [r4, #0x14] - ldrh r0, [r1, #0x0] - add r0, r0, #0x2040000 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - strh r0, [r4, #0x16] -_0209EA64: - sub r0, r4, #0xc - add r1, r5, #0xc - mov r2, #0x0 - bl FUN_0209FBC8 - mov r2, r0 - mov r0, r9 - mov r1, r8 - bl FUN_0209FBC8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl FUN_0209FBAC - mov r3, r0, asr #0x8 - orr r0, r3, r0, lsl #0x8 - strh r0, [r4, #0x10] - mov r0, r4 - ldr r4, [r7, #0x1c] - mov r3, #0x6 - str r4, [sp, #0x0] - str r3, [sp, #0x4] - mov r1, r5 - mov r2, r9 - mov r3, r8 - bl FUN_0209ECFC - ands r0, r6, #0x3 - ldr r0, [r7, #0x28] - add r1, r7, #0x28 - add r0, r0, r8 - str r0, [r7, #0x28] - ldrne r0, [r1, #0x0] - addne r0, r0, #0x1 - strne r0, [r1, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_0209EAEC: .word OSi_ThreadInfo -_0209EAF0: .word UNK_021C8F04 -_0209EAF4: .word UNK_021C9160 -_0209EAF8: .word UNK_021C8F5E -_0209EAFC: .word UNK_021C8EB0 - - arm_func_start FUN_0209EB00 -FUN_0209EB00: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r7, _0209EC3C ; =UNK_021C8F04 - mov r5, r2 - ldr r2, [r7, #0x0] - mov r6, r1 - mov r1, r2, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - ldr r3, [r5, #0x4c] - mov r1, r2, asr #0x8 - add r4, r3, #0x22 - orr r1, r1, r2, lsl #0x8 - strh r1, [r4, #-0xc] - ldr r1, [r7, #0x0] - add r2, r6, #0x8 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, asr #0x8 - orr r1, r1, r7, lsl #0x8 - strh r1, [r4, #-0xa] - ldr r1, [r5, #0x1c] - mov r2, r2, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, asr #0x8 - orr r1, r1, r7, lsl #0x8 - strh r1, [r4, #-0x8] - ldr r1, [r5, #0x1c] - mov r2, r2, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, asr #0x8 - orr r7, r1, r7, lsl #0x8 - mov r1, r2, asr #0x8 - strh r7, [r4, #-0x6] - mov r7, #0x1100 - strh r7, [r4, #-0x4] - orr r1, r1, r2, lsl #0x8 - strh r1, [r4, #0x4] - ldrh r1, [r4, #0x4] - mov r7, r0 - sub r0, r4, #0xc - strh r1, [r4, #-0x2] - ldrh lr, [r5, #0x18] - mov r2, #0x0 - mov r1, #0x14 - mov r12, lr, asr #0x8 - orr r12, r12, lr, lsl #0x8 - strh r12, [r4, #0x2] - ldrh lr, [r5, #0xa] - mov r12, lr, asr #0x8 - orr r12, r12, lr, lsl #0x8 - strh r12, [r3, #0x22] - strh r2, [r4, #0x6] - bl FUN_0209FBC8 - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl FUN_0209FBC8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl FUN_0209FBAC - mov r2, r7 - mov r3, r6 - mov r1, r0, asr #0x8 - orr r0, r1, r0, lsl #0x8 - strh r0, [r4, #0x6] - ldr r1, [r5, #0x1c] - mov r0, r4 - str r1, [sp, #0x0] - mov r1, #0x11 - str r1, [sp, #0x4] - mov r1, #0x8 - bl FUN_0209ECFC - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209EC3C: .word UNK_021C8F04 - - arm_func_start FUN_0209EC40 -FUN_0209EC40: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r5, r2 - ldr r3, [r5, #0x4c] - mov r6, r1 - mov r1, #0x8 - ldr r2, _0209ECF4 ; =OSi_ThreadInfo - strh r1, [r3, #0x22] - ldr r2, [r2, #0x4] - add r4, r3, #0x22 - strh r2, [r4, #0x4] - mov r2, #0x0 - ldr r3, _0209ECF8 ; =UNK_021C8EB4 - strh r2, [r4, #0x2] - ldrh lr, [r3, #0x0] - mov r7, r0 - mov r0, r4 - strh lr, [r5, #0xa] - ldrh r12, [r3, #0x0] - add r12, r12, #0x1 - strh r12, [r3, #0x0] - strh lr, [r4, #0x6] - bl FUN_0209FBC8 - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl FUN_0209FBC8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl FUN_0209FBAC - mov r2, r7 - mov r3, r6 - mov r1, r0, asr #0x8 - orr r0, r1, r0, lsl #0x8 - strh r0, [r4, #0x2] - ldr r1, [r5, #0x1c] - mov r0, r4 - str r1, [sp, #0x0] - mov r1, #0x1 - str r1, [sp, #0x4] - mov r1, #0x8 - bl FUN_0209ECFC - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209ECF4: .word OSi_ThreadInfo -_0209ECF8: .word UNK_021C8EB4 - - arm_func_start FUN_0209ECFC -FUN_0209ECFC: ; 0x0209ECFC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r0 - mov r0, #0x45 - strb r0, [r10, #-0x14] - mov r5, #0x0 - ldr r0, _0209EF0C ; =UNK_021C8EB8 - strb r5, [r10, #-0x13] - ldrh r7, [r0, #0x0] - ldr r6, [sp, #0x30] - ldrb r4, [sp, #0x34] - add r7, r7, #0x1 - strh r7, [r0, #0x0] - ldrh r9, [r0, #0x0] - mov r0, r6, lsr #0x10 - mov r7, #0x80 - mov r8, r9, asr #0x8 - orr r8, r8, r9, lsl #0x8 - strh r8, [r10, #-0x10] - strb r7, [r10, #-0xc] - ldr r7, _0209EF10 ; =UNK_021C8F04 - strb r4, [r10, #-0xb] - ldr r8, [r7, #0x0] - mov r4, r0, lsl #0x10 - mov r0, r8, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r0, r8, asr #0x8 - orr r0, r0, r8, lsl #0x8 - strh r0, [r10, #-0x8] - ldr r0, [r7, #0x0] - mov r8, r4, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - mov r4, r7, asr #0x8 - mov r0, r6, lsl #0x10 - orr r9, r4, r7, lsl #0x8 - mov r7, r8, asr #0x8 - mov r4, r0, lsr #0x10 - mov r0, r4, asr #0x8 - strh r9, [r10, #-0x6] - orr r7, r7, r8, lsl #0x8 - ldr fp, _0209EF14 ; =0x000005C8 - mov r9, r1 - strh r7, [r10, #-0x4] - orr r0, r0, r4, lsl #0x8 - mov r8, r2 - mov r7, r3 - strh r0, [r10, #-0x2] - cmp r9, r11 - bls _0209EE74 - mov r4, r10 - cmp r9, r11 - bls _0209EE14 - str r5, [sp, #0x8] -_0209EDD8: - ldr r1, [sp, #0x8] - mov r0, r10 - mov r2, r4 - mov r3, r11 - str r6, [sp, #0x0] - orr r12, r5, #0x2000 - str r12, [sp, #0x4] - bl FUN_0209EF18 - add r0, r5, #0xb9 - sub r9, r9, r11 - mov r0, r0, lsl #0x10 - cmp r9, r11 - add r4, r4, r11 - mov r5, r0, lsr #0x10 - bhi _0209EDD8 -_0209EE14: - cmp r9, #0x0 - beq _0209EE74 - cmp r7, #0x0 - beq _0209EE48 - mov r0, r10 - mov r2, r4 - mov r3, r9 - str r6, [sp, #0x0] - orr r4, r5, #0x2000 - mov r1, #0x0 - str r4, [sp, #0x4] - bl FUN_0209EF18 - b _0209EE64 -_0209EE48: - str r6, [sp, #0x0] - mov r0, r10 - mov r2, r4 - mov r3, r9 - mov r1, #0x0 - str r5, [sp, #0x4] - bl FUN_0209EF18 -_0209EE64: - add r0, r5, r9, lsr #0x3 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - mov r9, #0x0 -_0209EE74: - ldr r0, _0209EF14 ; =0x000005C8 - add r1, r9, r7 - cmp r1, r0 - bls _0209EED4 - mov r11, #0x0 -_0209EE88: - ldr r0, _0209EF14 ; =0x000005C8 - mov r1, r9 - sub r4, r0, r9 - mov r0, r10 - mov r2, r8 - mov r3, r4 - str r6, [sp, #0x0] - orr r9, r5, #0x2000 - str r9, [sp, #0x4] - bl FUN_0209EF18 - add r0, r5, #0xb9 - mov r1, r0, lsl #0x10 - ldr r0, _0209EF14 ; =0x000005C8 - sub r7, r7, r4 - mov r9, r11 - cmp r7, r0 - add r8, r8, r4 - mov r5, r1, lsr #0x10 - bhi _0209EE88 -_0209EED4: - adds r0, r9, r7 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,lr} - bxeq lr - str r6, [sp, #0x0] - mov r0, r10 - mov r1, r9 - mov r2, r8 - mov r3, r7 - str r5, [sp, #0x4] - bl FUN_0209EF18 - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209EF0C: .word UNK_021C8EB8 -_0209EF10: .word UNK_021C8F04 -_0209EF14: .word 0x000005C8 - - arm_func_start FUN_0209EF18 -FUN_0209EF18: ; 0x0209EF18 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r1 - mov r5, r3 - add r1, r7, #0x14 - add r1, r1, r5 - ldr r3, [sp, #0x24] - mov r1, r1, lsl #0x10 - mov r4, r1, lsr #0x10 - mov r1, r3, lsl #0x10 - mov r3, r4, asr #0x8 - mov r1, r1, lsr #0x10 - mov r8, r0 - orr r3, r3, r4, lsl #0x8 - mov r0, r1, asr #0x8 - strh r3, [r8, #-0x12] - orr r0, r0, r1, lsl #0x8 - strh r0, [r8, #-0xe] - mov r3, #0x0 - sub r0, r8, #0x14 - mov r1, #0x14 - mov r6, r2 - strh r3, [r8, #-0xa] - ldr r4, [sp, #0x20] - bl FUN_0209FB84 - mov r2, r0, asr #0x8 - ldr r1, _0209F040 ; =0x7F000001 - orr r0, r2, r0, lsl #0x8 - strh r0, [r8, #-0xa] - cmp r4, r1 - beq _0209EFC4 - ldr r0, _0209F044 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r4, r0 - beq _0209EFC4 - mov r2, r6 - mov r3, r5 - str r4, [sp, #0x0] - mov r12, #0x800 - sub r0, r8, #0x14 - add r1, r7, #0x14 - str r12, [sp, #0x4] - bl FUN_0209F050 -_0209EFC4: - ldr r0, _0209F040 ; =0x7F000001 - cmp r4, r0 - beq _0209EFF8 - ldr r0, _0209F044 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r4, r0 - beq _0209EFF8 - mov r0, r4 - bl FUN_0209FA54 - cmp r0, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r8,lr} - bxeq lr -_0209EFF8: - ldr r0, _0209F048 ; =UNK_02106230 - sub r1, r8, #0x1c - mov r2, #0x8 - bl MI_CpuCopy8 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _0209F04C ; =UNK_021C8F14 - str r6, [sp, #0x0] - mov r1, r0 - str r5, [sp, #0x4] - sub r2, r8, #0x1c - add r3, r7, #0x1c - bl FUN_0209F6C0 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209F040: .word 0x7F000001 -_0209F044: .word UNK_021C8F04 -_0209F048: .word UNK_02106230 -_0209F04C: .word UNK_021C8F14 - - arm_func_start FUN_0209F050 -FUN_0209F050: ; 0x0209F050 - stmdb sp!, {r4-r8,lr} - ldrh r5, [sp, #0x1c] - ldr r4, [sp, #0x18] - mov r8, r0 - mov r0, r5, asr #0x8 - orr r12, r0, r5, lsl #0x8 - mov r0, r4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - strh r12, [r8, #-0x2] - bl FUN_0209FA54 - cmp r0, #0x0 - bne _0209F0CC - mov r0, r4 - bl FUN_0209FAB0 - movs r4, r0 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - bl FUN_0209F438 - cmp r0, #0x0 - bne _0209F0B0 - mov r0, r4 - bl FUN_0209F2AC -_0209F0B0: - cmp r0, #0x0 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - sub r1, r8, #0xe - mov r2, #0x6 - bl MI_CpuCopy8 - b _0209F0FC -_0209F0CC: - mov r0, #0x1 - strb r0, [r8, #-0xe] - mov r1, #0x0 - mov r0, r4, lsr #0x10 - strb r1, [r8, #-0xd] - mov r1, #0x5e - strb r1, [r8, #-0xc] - and r0, r0, #0x7f - strb r0, [r8, #-0xb] - mov r0, r4, lsr #0x8 - strb r0, [r8, #-0xa] - strb r4, [r8, #-0x9] -_0209F0FC: - ldr r0, _0209F128 ; =UNK_021C8F14 - sub r1, r8, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - mov r2, r6 - mov r3, r5 - sub r0, r8, #0xe - add r1, r7, #0xe - bl FUN_0209F930 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209F128: .word UNK_021C8F14 - - arm_func_start FUN_0209F12C -FUN_0209F12C: ; 0x0209F12C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r3, _0209F29C ; =0x7F000001 - mov r6, r1 - cmp r6, r3 - mov r7, r0 - mov r4, r2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, _0209F2A0 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r6, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r6 - bl FUN_0209FAD8 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r6 - bl FUN_0209FA54 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #0x10 - mov r0, r0, lsl #0x10 - ldr r1, _0209F2A4 ; =UNK_021C8F78 - mov r5, r0, lsr #0x10 - mov r2, #0x0 -_0209F1B8: - ldr r0, [r1, #0x0] - cmp r6, r0 - bne _0209F1F8 - mov r0, #0xc - mul r4, r2, r0 - ldr r0, _0209F2A4 ; =UNK_021C8F78 - ldr r3, _0209F2A8 ; =UNK_021C8F82 - add r1, r0, r4 - mov r0, r7 - add r1, r1, #0x4 - mov r2, #0x6 - strh r5, [r3, r4] - bl MI_CpuCopy8 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_0209F1F8: - add r2, r2, #0x1 - cmp r2, #0x8 - add r1, r1, #0xc - blo _0209F1B8 - cmp r4, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r12, #0x0 - ldr r4, _0209F2A4 ; =UNK_021C8F78 - mov r0, r12 - mov r3, r12 -_0209F228: - ldr r1, [r4, #0x0] - cmp r1, #0x0 - moveq r0, r3 - beq _0209F264 - ldrh r1, [r4, #0xa] - add r4, r4, #0xc - sub r1, r5, r1 - mov r1, r1, lsl #0x10 - mov r2, r1, asr #0x10 - cmp r2, r12 - movgt r0, r3 - add r3, r3, #0x1 - movgt r12, r1, lsr #0x10 - cmp r3, #0x8 - blo _0209F228 -_0209F264: - mov r1, #0xc - mul r4, r0, r1 - ldr r3, _0209F2A4 ; =UNK_021C8F78 - mov r0, r7 - add r1, r3, r4 - add r1, r1, #0x4 - mov r2, #0x6 - str r6, [r3, r4] - bl MI_CpuCopy8 - ldr r0, _0209F2A8 ; =UNK_021C8F82 - strh r5, [r0, r4] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209F29C: .word 0x7F000001 -_0209F2A0: .word UNK_021C8F04 -_0209F2A4: .word UNK_021C8F78 -_0209F2A8: .word UNK_021C8F82 - - arm_func_start FUN_0209F2AC -FUN_0209F2AC: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, #0x0 - ldr r4, _0209F334 ; =UNK_021C8F04 - mov r6, r8 - mov r5, #0x64 -_0209F2C8: - mov r0, r9 - bl FUN_0209F338 - mov r7, r6 -_0209F2D4: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,lr} - bxeq lr - mov r0, r5 - bl OS_Sleep - mov r0, r9 - bl FUN_0209F438 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r9,lr} - bxne lr - add r7, r7, #0x1 - cmp r7, #0x14 - blo _0209F2D4 - add r8, r8, #0x1 - cmp r8, #0x8 - blo _0209F2C8 - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_0209F334: .word UNK_021C8F04 - - arm_func_start FUN_0209F338 -FUN_0209F338: ; 0x0209F338 - stmdb sp!, {r4,lr} - sub sp, sp, #0x30 - mov r4, r0 - add r0, sp, #0x0 - mov r1, #0x0 - mov r2, #0x2a - bl MI_CpuFill8 - add r0, sp, #0x0 - mov r1, #0xff - mov r2, #0x6 - bl MI_CpuFill8 - ldr r0, _0209F428 ; =UNK_021C8F14 - add r1, sp, #0x6 - mov r2, #0x6 - bl MI_CpuCopy8 - mov r0, #0x1 - ldr r1, _0209F42C ; =0x00000608 - strb r0, [sp, #0xf] - strh r1, [sp, #0xc] - strb r0, [sp, #0x15] - mov r0, #0x8 - ldr r1, _0209F430 ; =0x00000406 - strb r0, [sp, #0x10] - strh r1, [sp, #0x12] - ldr r0, _0209F428 ; =UNK_021C8F14 - add r1, sp, #0x16 - mov r2, #0x6 - bl MI_CpuCopy8 - ldr r0, _0209F434 ; =UNK_021C8F04 - mov r1, r4, lsr #0x10 - ldr r3, [r0, #0x0] - mov r0, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r4, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r3, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r0, r3, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r4, asr #0x8 - orr r0, r0, r4, lsl #0x8 - strh r0, [sp, #0x1c] - mov r0, r3, asr #0x8 - orr r0, r0, r3, lsl #0x8 - strh r0, [sp, #0x1e] - mov r0, r2, asr #0x8 - orr r0, r0, r2, lsl #0x8 - strh r0, [sp, #0x26] - mov r0, r1, asr #0x8 - orr r0, r0, r1, lsl #0x8 - mov r2, #0x0 - strh r0, [sp, #0x28] - add r0, sp, #0x0 - mov r1, #0x2a - mov r3, r2 - bl FUN_0209F930 - add sp, sp, #0x30 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209F428: .word UNK_021C8F14 -_0209F42C: .word 0x00000608 -_0209F430: .word 0x00000406 -_0209F434: .word UNK_021C8F04 - - arm_func_start FUN_0209F438 -FUN_0209F438: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl OS_DisableInterrupts - ldr r1, _0209F504 ; =0x7F000001 - mov r4, r0 - cmp r7, r1 - mov r5, #0x0 - beq _0209F46C - ldr r0, _0209F508 ; =UNK_021C8F04 - ldr r0, [r0, #0x0] - cmp r7, r0 - bne _0209F474 -_0209F46C: - ldr r5, _0209F50C ; =UNK_021C8F14 - b _0209F4EC -_0209F474: - mov r0, r7 - bl FUN_0209FA68 - cmp r0, #0x0 - bne _0209F494 - mov r0, r7 - bl FUN_0209FA54 - cmp r0, #0x0 - beq _0209F49C -_0209F494: - ldr r5, _0209F510 ; =UNK_0210621C - b _0209F4EC -_0209F49C: - ldr r1, _0209F514 ; =UNK_021C8F78 - mov r6, r5 -_0209F4A4: - ldr r0, [r1, #0x0] - cmp r7, r0 - bne _0209F4DC - bl OS_GetTick - mov r2, #0xc - mul r3, r6, r2 - ldr r2, _0209F514 ; =UNK_021C8F78 - mov r5, r0, lsr #0x10 - add r0, r2, r3 - ldr r2, _0209F518 ; =UNK_021C8F82 - orr r5, r5, r1, lsl #0x10 - strh r5, [r2, r3] - add r5, r0, #0x4 - b _0209F4EC -_0209F4DC: - add r6, r6, #0x1 - cmp r6, #0x8 - add r1, r1, #0xc - blo _0209F4A4 -_0209F4EC: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_0209F504: .word 0x7F000001 -_0209F508: .word UNK_021C8F04 -_0209F50C: .word UNK_021C8F14 -_0209F510: .word UNK_0210621C -_0209F514: .word UNK_021C8F78 -_0209F518: .word UNK_021C8F82 - - arm_func_start FUN_0209F51C -FUN_0209F51C: ; 0x0209F51C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - ldr r2, _0209F570 ; =UNK_021C8EE4 - ldr r1, _0209F574 ; =UNK_021C8F0C - ldr lr, [r2, #0x0] - ldr r12, [r1, #0x0] - ldr r3, [r2, #0x0] - ldr r1, _0209F578 ; =UNK_021C8F10 - ldrh r3, [r12, r3] - add r3, lr, r3 - str r3, [r2, #0x0] - ldr r3, [r2, #0x0] - ldr r1, [r1, #0x0] - cmp r3, r1 - movcs r1, #0x0 - strcs r1, [r2, #0x0] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209F570: .word UNK_021C8EE4 -_0209F574: .word UNK_021C8F0C -_0209F578: .word UNK_021C8F10 - - arm_func_start FUN_0209F57C -FUN_0209F57C: ; 0x0209F57C - stmdb sp!, {r4-r10,lr} - mov r6, r0 - bl OS_DisableInterrupts - ldr sl, _0209F644 ; =UNK_021C8EE4 - ldr sb, _0209F648 ; =UNK_021C8EDC - ldr r2, [r10, #0x0] - ldr r1, [r9, #0x0] - mov r5, r0 - cmp r2, r1 - bne _0209F5D4 - ldr r8, _0209F64C ; =OSi_ThreadInfo - ldr r7, _0209F650 ; =UNK_021C8F08 - mov r4, #0x0 -_0209F5B0: - ldr r1, [r8, #0x4] - mov r0, r4 - str r1, [r7, #0x0] - bl OS_SleepThread - str r4, [r7, #0x0] - ldr r1, [r10, #0x0] - ldr r0, [r9, #0x0] - cmp r1, r0 - beq _0209F5B0 -_0209F5D4: - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, _0209F654 ; =UNK_021C8F0C - ldr r5, [r0, #0x0] - ldr r0, _0209F644 ; =UNK_021C8EE4 - ldr r1, _0209F658 ; =UNK_021C8F10 - mov r3, #0x0 -_0209F5F0: - ldr r4, [r1, #0x0] - ldr r2, [r0, #0x0] - sub r2, r4, r2 - cmp r2, #0x2 - strcc r3, [r0, #0x0] - ldr r2, [r0, #0x0] - ldrh r2, [r5, r2] - cmp r2, #0x0 - streq r3, [r0, #0x0] - cmp r2, #0x0 - beq _0209F5F0 - sub r0, r2, #0x2 - ldr r1, _0209F654 ; =UNK_021C8F0C - str r0, [r6, #0x0] - ldr r0, _0209F644 ; =UNK_021C8EE4 - ldr r1, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, r1, r0 - add r0, r0, #0x2 - ldmia sp!, {r4-r10,lr} - bx lr - .balign 4 -_0209F644: .word UNK_021C8EE4 -_0209F648: .word UNK_021C8EDC -_0209F64C: .word OSi_ThreadInfo -_0209F650: .word UNK_021C8F08 -_0209F654: .word UNK_021C8F0C -_0209F658: .word UNK_021C8F10 - - arm_func_start FUN_0209F65C -FUN_0209F65C: ; 0x0209F65C - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r12, #0x0 - str r12, [sp, #0x0] - str r12, [sp, #0x4] - bl FUN_0209F6C0 - ldr r0, _0209F6BC ; =UNK_021C8F08 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0xc - ldmeqia sp!, {lr} - bxeq lr - ldr r0, [r0, #0x0] - bl OS_IsThreadTerminated - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {lr} - bxne lr - ldr r0, _0209F6BC ; =UNK_021C8F08 - ldr r0, [r0, #0x0] - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmia sp!, {lr} - bx lr - .balign 4 -_0209F6BC: .word UNK_021C8F08 - - arm_func_start FUN_0209F6C0 -FUN_0209F6C0: ; 0x0209F6C0 - stmdb sp!, {r4-r8,lr} - ldr r4, _0209F918 ; =UNK_021C8F0C - mov r7, r0 - ldr r0, [r4, #0x0] - mov r6, r2 - mov r5, r3 - cmp r0, #0x0 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - ldr r2, _0209F91C ; =UNK_021C8F10 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - ldr r2, [sp, #0x1c] - add r2, r5, r2 - cmp r2, #0x8 - ldmccia sp!, {r4-r8,lr} - bxcc lr - ldr r3, _0209F920 ; =0x000005E4 - cmp r2, r3 - ldmhiia sp!, {r4-r8,lr} - bxhi lr - ldr r3, _0209F924 ; =UNK_02106230 - ldrb r8, [r6, #0x0] - ldrb r4, [r3, #0x0] - cmp r8, r4 - ldmneia sp!, {r4-r8,lr} - bxne lr - ldrb r8, [r6, #0x1] - ldrb r4, [r3, #0x1] - cmp r8, r4 - ldmneia sp!, {r4-r8,lr} - bxne lr - ldrb r4, [r6, #0x2] - ldrb r3, [r3, #0x2] - cmp r4, r3 - ldmneia sp!, {r4-r8,lr} - bxne lr - ldrb r3, [r6, #0x6] - cmp r3, #0x8 - ldmneia sp!, {r4-r8,lr} - bxne lr - ldrb r3, [r6, #0x7] - cmp r3, #0x0 - beq _0209F784 - cmp r3, #0x6 - ldmneia sp!, {r4-r8,lr} - bxne lr -_0209F784: - ldr r4, _0209F928 ; =UNK_021C8EDC - add r2, r2, #0x9 - bic r2, r2, #0x1 - ldr lr, [r4, #0x0] - mov r3, r2, lsl #0x10 - ldr ip, _0209F92C ; =UNK_021C8EE4 - ldr r8, [r4, #0x0] - ldr r4, [r12, #0x0] - mov r2, r3, lsr #0x10 - cmp r8, r4 - add r4, lr, r3, lsr #0x10 - bhs _0209F7C4 - ldr r3, [r12, #0x0] - cmp r3, r4 - ldmlsia sp!, {r4-r8,lr} - bxls lr -_0209F7C4: - ldr r3, _0209F91C ; =UNK_021C8F10 - ldr r8, [r3, #0x0] - cmp r4, r8 - bne _0209F7F0 - ldr r3, _0209F92C ; =UNK_021C8EE4 - mov r4, #0x0 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - bne _0209F814 - ldmia sp!, {r4-r8,lr} - bx lr -_0209F7F0: - ldr r3, [r3, #0x0] - cmp r4, r3 - bls _0209F814 - ldr r3, _0209F92C ; =UNK_021C8EE4 - mov r4, r2 - ldr r3, [r3, #0x0] - cmp r3, r2 - ldmlsia sp!, {r4-r8,lr} - bxls lr -_0209F814: - ldr ip, _0209F928 ; =UNK_021C8EDC - ldr r3, _0209F91C ; =UNK_021C8F10 - ldr lr, [r12, #0x0] - ldr r8, [r3, #0x0] - add lr, lr, r2 - cmp lr, r8 - bls _0209F858 - ldr r8, [r3, #0x0] - ldr r3, [r12, #0x0] - sub r3, r8, r3 - cmp r3, #0x2 - ldrcs r3, [r12, #0x0] - movcs r8, #0x0 - strcsh r8, [r0, r3] - ldr r0, _0209F928 ; =UNK_021C8EDC - mov r3, #0x0 - str r3, [r0, #0x0] -_0209F858: - ldr ip, _0209F918 ; =UNK_021C8F0C - ldr r3, _0209F928 ; =UNK_021C8EDC - ldr r8, [r12, #0x0] - ldr lr, [r3, #0x0] - mov r0, r1 - strh r2, [r8, lr] - ldr r12, [r12, #0x0] - ldr r1, [r3, #0x0] - mov r2, #0x6 - add r1, r12, r1 - add r1, r1, #0x2 - bl MI_CpuCopy8 - ldr r1, _0209F918 ; =UNK_021C8F0C - ldr r0, _0209F928 ; =UNK_021C8EDC - ldr r2, [r1, #0x0] - ldr r1, [r0, #0x0] - mov r0, r7 - add r1, r2, r1 - add r1, r1, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - ldr r1, _0209F918 ; =UNK_021C8F0C - ldr r0, _0209F928 ; =UNK_021C8EDC - ldr r2, [r1, #0x0] - ldr r1, [r0, #0x0] - add r0, r6, #0x6 - add r1, r2, r1 - add r1, r1, #0xe - sub r2, r5, #0x6 - bl MI_CpuCopy8 - ldr r0, [sp, #0x18] - cmp r0, #0x0 - beq _0209F908 - ldr r2, [sp, #0x1c] - cmp r2, #0x0 - beq _0209F908 - ldr r3, _0209F918 ; =UNK_021C8F0C - ldr r1, _0209F928 ; =UNK_021C8EDC - ldr r3, [r3, #0x0] - ldr r1, [r1, #0x0] - add r1, r3, r1 - add r1, r1, #0x8 - add r1, r1, r5 - bl MI_CpuCopy8 -_0209F908: - ldr r0, _0209F928 ; =UNK_021C8EDC - str r4, [r0, #0x0] - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209F918: .word UNK_021C8F0C -_0209F91C: .word UNK_021C8F10 -_0209F920: .word 0x000005E4 -_0209F924: .word UNK_02106230 -_0209F928: .word UNK_021C8EDC -_0209F92C: .word UNK_021C8EE4 - - arm_func_start FUN_0209F930 -FUN_0209F930: ; 0x0209F930 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - add r1, r6, r5 - mov r4, r3 - cmp r1, r2 - beq _0209F958 - mov r0, r2 - mov r2, r4 - bl MI_CpuCopy8 -_0209F958: - ldr r0, _0209F998 ; =UNK_02106230 - add r1, r6, #0x6 - mov r2, #0x6 - bl MI_CpuCopy8 - add r2, r5, r4 - mov r0, r6 - add r1, r6, #0x6 - sub r2, r2, #0x6 - bl FUN_020A8644 - cmp r0, #0x0 - movlt r1, #0x1 - ldr r0, _0209F99C ; =UNK_021C8EA8 - movge r1, #0x0 - strb r1, [r0, #0x0] - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209F998: .word UNK_02106230 -_0209F99C: .word UNK_021C8EA8 - - arm_func_start FUN_0209F9A0 -FUN_0209F9A0: - mov r12, #0x0 -_0209F9A4: - ldrh r3, [r0], #0x2 - ldrh r2, [r1], #0x2 - cmp r3, r2 - movne r0, #0x1 - bxne lr - add r12, r12, #0x1 - cmp r12, #0x3 - blt _0209F9A4 - mov r0, #0x0 - bx lr - - arm_func_start FUN_0209F9CC -FUN_0209F9CC: - stmdb sp!, {r4-r6,lr} - ldr r1, _0209FA4C ; =UNK_021C8F04 - mov r5, #0x1 - ldr r1, [r1, #0x0] - mov r6, r0 - mov r4, r5 - mov r2, r5 - mov r0, r5 - cmp r1, #0x0 - beq _0209F9FC - cmp r6, r1 - movne r0, #0x0 -_0209F9FC: - cmp r0, #0x0 - bne _0209FA10 - ldr r0, _0209FA50 ; =0x7F000001 - cmp r6, r0 - movne r2, #0x0 -_0209FA10: - cmp r2, #0x0 - bne _0209FA28 - mov r0, r6 - bl FUN_0209FA68 - cmp r0, #0x0 - moveq r4, #0x0 -_0209FA28: - cmp r4, #0x0 - bne _0209FA40 - mov r0, r6 - bl FUN_0209FA54 - cmp r0, #0x0 - moveq r5, #0x0 -_0209FA40: - mov r0, r5 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209FA4C: .word UNK_021C8F04 -_0209FA50: .word 0x7F000001 - - arm_func_start FUN_0209FA54 -FUN_0209FA54: - and r0, r0, #0xf0000000 - cmp r0, #0xe0000000 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_0209FA68 -FUN_0209FA68: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, #0x0 - bl FUN_0209FAD8 - cmp r0, #0x0 - beq _0209FA9C - ldr r0, _0209FAAC ; =UNK_021C8ED0 - ldr r0, [r0, #0x0] - mvn r1, r0 - and r0, r1, r5 - cmp r1, r0 - moveq r4, #0x1 -_0209FA9C: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209FAAC: .word UNK_021C8ED0 - - arm_func_start FUN_0209FAB0 -FUN_0209FAB0: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_0209FAD8 - cmp r0, #0x0 - ldreq r0, _0209FAD4 ; =UNK_021C8EE0 - ldreq r4, [r0, #0x0] - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209FAD4: .word UNK_021C8EE0 - - arm_func_start FUN_0209FAD8 -FUN_0209FAD8: - mvn r1, #0x0 - cmp r0, r1 - mov r12, #0x1 - beq _0209FB14 - ldr r1, _0209FB1C ; =0x7F000001 - cmp r0, r1 - beq _0209FB14 - ldr r2, _0209FB20 ; =UNK_021C8ED0 - ldr r1, _0209FB24 ; =UNK_021C8F04 - ldr r3, [r2, #0x0] - ldr r1, [r1, #0x0] - and r2, r0, r3 - and r0, r1, r3 - cmp r2, r0 - movne r12, #0x0 -_0209FB14: - mov r0, r12 - bx lr - .balign 4 -_0209FB1C: .word 0x7F000001 -_0209FB20: .word UNK_021C8ED0 -_0209FB24: .word UNK_021C8F04 - - arm_func_start FUN_0209FB28 -FUN_0209FB28: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r2 - mov r2, r3 - mov r5, r1 - bl FUN_0209FBC8 - mov r2, r0 - add r0, r4, #0xc - mov r1, #0x8 - bl FUN_0209FBC8 - add r1, r0, r5 - ands r0, r1, #0x10000 - ldrne r0, _0209FB80 ; =0x0000FFFF - addne r1, r1, #0x1 - andne r1, r1, r0 - ldr r0, _0209FB80 ; =0x0000FFFF - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209FB80: .word 0x0000FFFF - - arm_func_start FUN_0209FB84 -FUN_0209FB84: ; 0x0209FB84 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, #0x0 - bl FUN_0209FBC8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl FUN_0209FBAC - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209FBAC -FUN_0209FBAC: ; 0x0209FBAC - ldr r1, _0209FBC4 ; =0x0000FFFF - eor r0, r0, r1 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - moveq r0, r1 - bx lr - .balign 4 -_0209FBC4: .word 0x0000FFFF - - arm_func_start FUN_0209FBC8 -FUN_0209FBC8: ; 0x0209FBC8 - ands r3, r0, #0x1 - beq _0209FC00 - cmp r1, #0x1 - bls _0209FC54 -_0209FBD8: - ldrb r12, [r0, #0x0] - ldrb r3, [r0, #0x1] - sub r1, r1, #0x2 - cmp r1, #0x1 - orr r3, r3, r12, lsl #0x8 - mov r3, r3, lsl #0x10 - add r2, r2, r3, lsr #0x10 - add r0, r0, #0x2 - bhi _0209FBD8 - b _0209FC54 -_0209FC00: - mov r2, r2, lsl #0x10 - mov r3, r2, lsr #0x10 - mov r2, r3, asr #0x8 - orr r2, r2, r3, lsl #0x8 - mov r2, r2, lsl #0x10 - cmp r1, #0x1 - mov r2, r2, lsr #0x10 - bls _0209FC38 -_0209FC20: - ldrh r3, [r0, #0x0] - sub r1, r1, #0x2 - cmp r1, #0x1 - add r2, r2, r3 - add r0, r0, #0x2 - bhi _0209FC20 -_0209FC38: - ldr r3, _0209FC7C ; =0x00FF00FF - ldr ip, _0209FC80 ; =0xFF00FF00 - and r3, r3, r2, lsr #0x8 - and r2, r12, r2, lsl #0x8 - orr r3, r3, r2 - mov r2, r3, lsr #0x10 - orr r2, r2, r3, lsl #0x10 -_0209FC54: - cmp r1, #0x0 - ldrneb r0, [r0, #0x0] - addne r2, r2, r0, lsl #0x8 - ldr r0, _0209FC84 ; =0x0000FFFF - and r0, r2, r0 - add r0, r0, r2, lsr #0x10 - add r0, r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - .balign 4 -_0209FC7C: .word 0x00FF00FF -_0209FC80: .word 0xFF00FF00 -_0209FC84: .word 0x0000FFFF - - arm_func_start FUN_0209FC88 -FUN_0209FC88: ; 0x0209FC88 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r2, _0209FCB8 ; =UNK_02106218 - ldr r0, _0209FCBC ; =UNK_021C9160 - mov r1, r4 - str r4, [r2, #0x0] - bl OS_SetThreadPriority - ldr r0, _0209FCC0 ; =UNK_021C90A0 - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209FCB8: .word UNK_02106218 -_0209FCBC: .word UNK_021C9160 -_0209FCC0: .word UNK_021C90A0 - - arm_func_start FUN_0209FCC4 -FUN_0209FCC4: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_0209FD34 - ldr r0, _0209FD10 ; =UNK_021C90A0 - bl OS_JoinThread - ldr r0, _0209FD14 ; =UNK_021C9160 - bl OS_DestroyThread - ldr r1, _0209FD18 ; =UNK_021C8F08 - mov r0, #0x0 - str r0, [r1, #0x0] - bl FUN_020A0098 - ldr r1, _0209FD1C ; =UNK_021C8F0C - mov r2, #0x0 - ldr r0, _0209FD20 ; =UNK_021C8F10 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209FD10: .word UNK_021C90A0 -_0209FD14: .word UNK_021C9160 -_0209FD18: .word UNK_021C8F08 -_0209FD1C: .word UNK_021C8F0C -_0209FD20: .word UNK_021C8F10 - - arm_func_start FUN_0209FD24 -FUN_0209FD24: ; 0x0209FD24 - ldr r1, _0209FD30 ; =UNK_021C8EF0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_0209FD30: .word UNK_021C8EF0 - - arm_func_start FUN_0209FD34 -FUN_0209FD34: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - mov r5, r0 - ldr r0, _0209FD8C ; =UNK_021C90A0 - bl OS_IsThreadTerminated - movs r4, r0 - bne _0209FD74 - ldr r1, _0209FD90 ; =UNK_021C8EF8 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - bne _0209FD74 - ldr r0, _0209FD8C ; =UNK_021C90A0 - mov r2, #0x1 - str r2, [r1, #0x0] - bl OS_WakeupThreadDirect -_0209FD74: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209FD8C: .word UNK_021C90A0 -_0209FD90: .word UNK_021C8EF8 - - .extern _SDK_UbiquitousCPS - - arm_func_start FUN_0209FD94 -FUN_0209FD94: ; 0x0209FD94 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldr r0, _0209FFD4 ; =_SDK_UbiquitousCPS - bl OSi_ReferSymbol - ldr r12, [r4, #0x14] - ldr r6, [r4, #0x18] - mov r1, #0x0 - cmp r6, r1 - cmpeq r12, r1 - beq _0209FDEC - ldr r0, _0209FFD8 ; =CPSiRand32ctx - ldr r5, _0209FFDC ; =0x6C078965 - ldr r3, _0209FFE0 ; =0x5D588B65 - ldr r2, _0209FFE4 ; =0x00269EC3 - str r12, [r0, #0x0] - str r6, [r0, #0x4] - str r5, [r0, #0x8] - str r3, [r0, #0xc] - str r2, [r0, #0x10] - str r1, [r0, #0x14] - b _0209FE1C -_0209FDEC: - bl OS_GetTick - ldr r2, _0209FFD8 ; =CPSiRand32ctx - ldr ip, _0209FFDC ; =0x6C078965 - ldr r6, _0209FFE0 ; =0x5D588B65 - ldr r5, _0209FFE4 ; =0x00269EC3 - mov r3, #0x0 - str r0, [r2, #0x0] - str r1, [r2, #0x4] - str r12, [r2, #0x8] - str r6, [r2, #0xc] - str r5, [r2, #0x10] - str r3, [r2, #0x14] -_0209FE1C: - ldr r2, [r4, #0x4] - cmp r2, #0x0 - beq _0209FE4C - ldr r0, [r4, #0x8] - cmp r0, #0x0 - beq _0209FE4C - ldr r1, _0209FFE8 ; =CPSiAlloc - ldr r0, _0209FFEC ; =CPSiFree - str r2, [r1, #0x0] - ldr r1, [r4, #0x8] - str r1, [r0, #0x0] - b _0209FE60 -_0209FE4C: - ldr r2, _0209FFF0 ; =FUN_020A0058 - ldr r1, _0209FFE8 ; =CPSiAlloc - ldr r0, _0209FFEC ; =CPSiFree - str r2, [r1, #0x0] - str r2, [r0, #0x0] -_0209FE60: - ldr r1, [r4, #0x0] - ldr r0, _0209FFF4 ; =UNK_021C8EC4 - ldr ip, _0209FFD8 ; =CPSiRand32ctx - str r1, [r0, #0x0] - ldr r1, [r4, #0x24] - ldr r3, [r12, #0x8] - cmp r1, #0x0 - ldrne r0, _0209FFF8 ; =UNK_021C8EB0 - strneh r1, [r0, #0x0] - ldreq r1, _0209FFFC ; =0x000005B4 - ldreq r0, _0209FFF8 ; =UNK_021C8EB0 - streqh r1, [r0, #0x0] - ldr r2, [r4, #0x28] - ldr r1, _020A0000 ; =UNK_021C8EE8 - ldr r0, _020A0004 ; =UNK_021C8ED8 - str r2, [r1, #0x0] - ldr r1, [r4, #0x2c] - ldr r2, [r12, #0x0] - str r1, [r0, #0x0] - ldr r1, [r4, #0xc] - umull lr, r5, r3, r2 - cmp r1, #0x0 - ldrne r0, _020A0008 ; =UNK_021C8ECC - strne r1, [r0, #0x0] - ldreq r1, _0209FFF0 ; =FUN_020A0058 - ldreq r0, _020A0008 ; =UNK_021C8ECC - streq r1, [r0, #0x0] - ldr r1, [r4, #0x10] - cmp r1, #0x0 - ldrne r0, _020A000C ; =UNK_021C8EFC - strne r1, [r0, #0x0] - ldreq r1, _020A0010 ; =FUN_020A0050 - ldreq r0, _020A000C ; =UNK_021C8EFC - streq r1, [r0, #0x0] - ldr r1, [r12, #0x4] - ldr r0, _020A0014 ; =0x00000F88 - mla r5, r3, r1, r5 - ldr r1, [r12, #0xc] - ldr r3, [r12, #0x10] - mla r5, r1, r2, r5 - adds r2, r3, lr - ldr r1, [r12, #0x14] - mov r3, #0x0 - adc r1, r1, r5 - umull lr, r5, r1, r0 - mla r5, r1, r3, r5 - mla r5, r3, r0, r5 - ldr r6, [r4, #0x1c] - ldr r0, _020A0018 ; =UNK_021C8F0C - ldr lr, _020A001C ; =UNK_021C8F10 - str r6, [r0, #0x0] - ldr r4, [r4, #0x20] - ldr r0, _020A0020 ; =UNK_021C8EE4 - str r4, [lr, #0x0] - str r3, [r0, #0x0] - ldr lr, _020A0024 ; =UNK_021C8EDC - ldr r4, _020A0028 ; =UNK_021C8EBC - add r5, r5, #0x400 - ldr r0, _020A002C ; =UNK_021C8F14 - str r3, [lr, #0x0] - str r2, [r12, #0x0] - str r1, [r12, #0x4] - strh r5, [r4, #0x0] - bl OS_GetMacAddress - ldr r0, _020A0030 ; =UNK_021C8EAC - mov r2, #0x0 - strb r2, [r0, #0x0] - mov r1, #0x800 - str r1, [sp, #0x0] - ldr r0, _020A0034 ; =UNK_02106218 - ldr r1, _020A0038 ; =FUN_0209CD3C - ldr r4, [r0, #0x0] - ldr r0, _020A003C ; =UNK_021C9160 - ldr r3, _020A0040 ; =pool_initialized - str r4, [sp, #0x4] - bl OS_CreateThread - mov r1, #0x800 - ldr r0, _020A0034 ; =UNK_02106218 - str r1, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, _020A0044 ; =UNK_021C90A0 - str r1, [sp, #0x4] - ldr r1, _020A0048 ; =FUN_0209BA80 - ldr r3, _020A004C ; =UNK_021C9EE0 - mov r2, #0x0 - bl OS_CreateThread - ldr r0, _020A003C ; =UNK_021C9160 - bl OS_WakeupThreadDirect - ldr r0, _020A0044 ; =UNK_021C90A0 - bl OS_WakeupThreadDirect - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209FFD4: .word _SDK_UbiquitousCPS -_0209FFD8: .word CPSiRand32ctx -_0209FFDC: .word 0x6C078965 -_0209FFE0: .word 0x5D588B65 -_0209FFE4: .word 0x00269EC3 -_0209FFE8: .word CPSiAlloc -_0209FFEC: .word CPSiFree -_0209FFF0: .word FUN_020A0058 -_0209FFF4: .word UNK_021C8EC4 -_0209FFF8: .word UNK_021C8EB0 -_0209FFFC: .word 0x000005B4 -_020A0000: .word UNK_021C8EE8 -_020A0004: .word UNK_021C8ED8 -_020A0008: .word UNK_021C8ECC -_020A000C: .word UNK_021C8EFC -_020A0010: .word FUN_020A0050 -_020A0014: .word 0x00000F88 -_020A0018: .word UNK_021C8F0C -_020A001C: .word UNK_021C8F10 -_020A0020: .word UNK_021C8EE4 -_020A0024: .word UNK_021C8EDC -_020A0028: .word UNK_021C8EBC -_020A002C: .word UNK_021C8F14 -_020A0030: .word UNK_021C8EAC -_020A0034: .word UNK_02106218 -_020A0038: .word FUN_0209CD3C -_020A003C: .word UNK_021C9160 -_020A0040: .word pool_initialized -_020A0044: .word UNK_021C90A0 -_020A0048: .word FUN_0209BA80 -_020A004C: .word UNK_021C9EE0 - - ; Ubiquitous SSL (?) - - arm_func_start FUN_020A0050 -FUN_020A0050: ; 0x020A0050 - mov r0, #0x1 - bx lr - - arm_func_start FUN_020A0058 -FUN_020A0058: ; 0x020A0058 - bx lr - - arm_func_start FUN_020A005C -FUN_020A005C: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020A0094 ; =UNK_021C8ED8 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020A0084 - bl OS_YieldThread - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_020A0084: - bl OS_Sleep - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A0094: .word UNK_021C8ED8 - - arm_func_start FUN_020A0098 -FUN_020A0098: ; 0x020A0098 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r1, _020A01B8 ; =UNK_021C8F04 - ldr r5, _020A01BC ; =UNK_021C8EC0 - ldr r1, [r1, #0x0] - ldr r3, _020A01C0 ; =UNK_021C8F1C - cmp r1, #0x0 - mov r1, #0x0 - movne r6, #0x1 - ldr ip, _020A01C4 ; =UNK_021C8ED0 - ldr r2, _020A01C8 ; =UNK_021C8ED4 - moveq r6, #0x0 - ldr lr, _020A01B8 ; =UNK_021C8F04 - ldr r4, _020A01CC ; =UNK_021C8EE0 - cmp r6, #0x0 - str r1, [r12, #0x0] - str r1, [r3, #0x0] - str r1, [r3, #0x4] - str r1, [r2, #0x0] - addeq sp, sp, #0x4 - str r0, [r5, #0x0] - str r1, [lr, #0x0] - str r1, [r4, #0x0] - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, _020A01D0 ; =UNK_021C8F78 - mov r2, #0x60 - bl MI_CpuFill8 - ldr r0, _020A01D4 ; =OSi_ThreadInfo - ldr r5, [r0, #0x8] - cmp r5, #0x0 - beq _020A016C - mov r4, #0x0 -_020A011C: - ldr r1, [r5, #0xa4] - cmp r1, #0x0 - beq _020A0160 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - beq _020A0160 - ldrb r0, [r1, #0x8] - cmp r0, #0xa - beq _020A0148 - cmp r0, #0xb - strneb r4, [r1, #0x8] -_020A0148: - ldr r0, [r1, #0x4] - cmp r0, #0x0 - beq _020A0160 - str r4, [r1, #0x4] - ldr r0, [r1, #0x0] - bl OS_WakeupThreadDirect -_020A0160: - ldr r5, [r5, #0x68] - cmp r5, #0x0 - bne _020A011C -_020A016C: - ldr r6, _020A01D8 ; =UNK_021C9520 - mov r7, #0x0 - ldr r4, _020A01DC ; =CPSiFree - mov r5, r7 -_020A017C: - ldrh r0, [r6, #0x4] - cmp r0, #0x0 - beq _020A0198 - ldr r0, [r6, #0x34] - ldr r1, [r4, #0x0] - blx r1 - strh r5, [r6, #0x4] -_020A0198: - add r7, r7, #0x1 - cmp r7, #0x8 - add r6, r6, #0x38 - blt _020A017C - bl CPSi_SslCleanup - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020A01B8: .word UNK_021C8F04 -_020A01BC: .word UNK_021C8EC0 -_020A01C0: .word UNK_021C8F1C -_020A01C4: .word UNK_021C8ED0 -_020A01C8: .word UNK_021C8ED4 -_020A01CC: .word UNK_021C8EE0 -_020A01D0: .word UNK_021C8F78 -_020A01D4: .word OSi_ThreadInfo -_020A01D8: .word UNK_021C9520 -_020A01DC: .word CPSiFree diff --git a/arm9/global.inc b/arm9/global.inc index 1bf30bfc..a7bab851 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -21,6 +21,78 @@ .extern CARDi_SetTask .extern CARDi_TaskThread .extern CARDi_WaitAsync +.extern CPSDnsIp +.extern CPSGatewayIp +.extern CPSMyIp +.extern CPSNetMask +.extern CPS_CalmDown +.extern CPS_Cleanup +.extern CPS_Resolve +.extern CPS_SetRootCa +.extern CPS_SetScavengerCallback +.extern CPS_SetSsl +.extern CPS_SetSslHandshakePriority +.extern CPS_SetThreadPriority +.extern CPS_SetUdpCallback +.extern CPS_SocConsume +.extern CPS_SocDatagramMode +.extern CPS_SocDup +.extern CPS_SocGetChar +.extern CPS_SocGetEport +.extern CPS_SocGetLength +.extern CPS_SocPingMode +.extern CPS_SocRead +.extern CPS_SocRegister +.extern CPS_SocRelease +.extern CPS_SocUnRegister +.extern CPS_SocUse +.extern CPS_SocWho +.extern CPS_SocWrite +.extern CPS_SslAddRandomSeed +.extern CPS_Startup +.extern CPS_TcpClose +.extern CPS_TcpConnect +.extern CPS_TcpListen +.extern CPS_TcpShutdown +.extern CPSiAlloc +.extern CPSiFree +.extern CPSiRand32ctx +.extern CPSi_RecvCallbackFunc +.extern CPSi_SocConsumeRaw +.extern CPSi_SslCleanup +.extern CPSi_SslClose +.extern CPSi_SslConnect +.extern CPSi_SslConsume +.extern CPSi_SslGetLength +.extern CPSi_SslListen +.extern CPSi_SslPeriodical +.extern CPSi_SslRead +.extern CPSi_SslShutdown +.extern CPSi_SslWrite2 +.extern CPSi_TcpConnectRaw +.extern CPSi_TcpListenRaw +.extern CPSi_TcpReadRaw +.extern CPSi_TcpShutdownRaw +.extern CPSi_TcpWrite2Raw +.extern CPSi_big_add +.extern CPSi_big_div +.extern CPSi_big_from_char +.extern CPSi_big_montpower +.extern CPSi_big_mult +.extern CPSi_big_negate +.extern CPSi_big_power +.extern CPSi_big_sign +.extern CPSi_big_sub +.extern CPSi_char_from_big +.extern CPSi_md5_calc +.extern CPSi_md5_init +.extern CPSi_md5_result +.extern CPSi_rc4_crypt +.extern CPSi_rc4_init +.extern CPSi_sha1_calc +.extern CPSi_sha1_init +.extern CPSi_sha1_result +.extern CPSi_sha1_result_prng .extern CP_RestoreContext .extern CP_SaveContext .extern CTRDG_CpuCopy16 @@ -110,7 +182,6 @@ .extern FSi_SendCommand .extern FSi_TranslateCommand .extern FUNRTC_Init -.extern SVC_CpuSet .extern FUN_02000DF4 .extern FUN_02000E7C .extern FUN_02000EE8 @@ -196,7 +267,6 @@ .extern FUN_02003B98 .extern FUN_02003C10 .extern FUN_02003CE8 -.extern GetSoundDataPointer .extern FUN_02003D38 .extern FUN_02003F3C .extern FUN_02003F64 @@ -4305,6 +4375,11 @@ .extern FUN_0205C380 .extern FUN_0205C390 .extern FUN_0205C3AC +.extern FUN_0205C3B0 +.extern FUN_0205C3D0 +.extern FUN_0205C490 +.extern FUN_0205C4A8 +.extern FUN_0205C4D8 .extern FUN_0205C598 .extern FUN_0205C888 .extern FUN_0205C8B4 @@ -5377,14 +5452,23 @@ .extern FUN_0208A334 .extern FUN_0208A338 .extern FUN_0208A9B8 +.extern FUN_0208AC14 +.extern FUN_0208AC58 .extern FUN_0208ACEC .extern FUN_0208AD80 +.extern FUN_0208AE48 .extern FUN_0208AF80 .extern FUN_0208AF94 .extern FUN_0208AFA8 .extern FUN_0208B05C .extern FUN_0208B128 .extern FUN_0208B4A0 +.extern FUN_020905D0 +.extern FUN_02090664 +.extern FUN_02090780 +.extern FUN_02090858 +.extern FUN_020908DC +.extern FUN_020909A4 .extern FUN_02090CC8 .extern FUN_02090DB8 .extern FUN_020910EC @@ -5454,23 +5538,6 @@ .extern FUN_0209A9A4 .extern FUN_0209A9D0 .extern FUN_0209AAD0 -.extern FUN_0209BF4C -.extern FUN_0209BF9C -.extern FUN_0209C030 -.extern FUN_0209C52C -.extern FUN_0209C638 -.extern FUN_0209C7AC -.extern FUN_0209C840 -.extern FUN_0209C934 -.extern FUN_0209CB24 -.extern FUN_0209CB44 -.extern FUN_0209CB78 -.extern FUN_0209CC10 -.extern FUN_0209CC28 -.extern CPS_SetSsl -.extern CPS_SslAddRandomSeed -.extern CPS_SetRootCa -.extern CPS_SetSslHandshakePriority .extern FUN_020A71F8 .extern FUN_020A722C .extern FUN_020A7488 @@ -5485,6 +5552,7 @@ .extern FUN_020A83D0 .extern FUN_020A846C .extern FUN_020A84D8 +.extern FUN_020A87BC .extern FUN_020A87E0 .extern FUN_020A8850 .extern FUN_020A8BA4 @@ -5557,6 +5625,7 @@ .extern FUN_020B0250 .extern FUN_020B02C8 .extern FUN_020B0448 +.extern FUN_020B04FC .extern FUN_020B0830 .extern FUN_020B0870 .extern FUN_020B0888 @@ -5901,6 +5970,7 @@ .extern GX_SetGraphicsMode .extern GX_VBlankIntr .extern GXx_SetMasterBrightness_ +.extern GetSoundDataPointer .extern HandleLoadOverlay .extern IC_InvalidateAll .extern IC_InvalidateRange @@ -6177,6 +6247,11 @@ .extern MOD05_021DAF78 .extern MOD05_021DAF98 .extern MOD05_021DB030 +.extern MOD05_021DB040 +.extern MOD05_021DB144 +.extern MOD05_021DB1D0 +.extern MOD05_021DB250 +.extern MOD05_021DB380 .extern MOD05_021DB44C .extern MOD05_021DB4B0 .extern MOD05_021DB52C @@ -6561,6 +6636,7 @@ .extern MOD06_0224C6F4 .extern MOD06_0224C700 .extern MOD06_0224C8C8 +.extern MOD06_0224C8E8 .extern MOD06_0224CA58 .extern MOD06_0224CA88 .extern MOD06_0224CB30 @@ -7188,9 +7264,9 @@ .extern OS_TryLockCard .extern OS_TryLockCartridge .extern OS_TryLockMutex +.extern OS_UnLockCartridge .extern OS_UnlockByWord .extern OS_UnlockCard -.extern OS_UnLockCartridge .extern OS_UnlockCartridge .extern OS_UnlockMutex .extern OS_WaitIrq @@ -7453,6 +7529,7 @@ .extern SNDi_SetAlarmHandler .extern SNDi_UnlockMutex .extern STD_CopyLString +.extern SVC_CpuSet .extern SVC_GetCRC16 .extern SVC_Sqrt .extern SVC_WaitByLoop @@ -7484,6 +7561,11 @@ .extern TP_SetCalibrateParam .extern TP_WaitBusy .extern TP_WaitRawResult +.extern UNK05_021F64C8 +.extern UNK05_021F9080 +.extern UNK05_021F9194 +.extern UNK05_021F9494 +.extern UNK63_021DBAB8 .extern UNK_020FB6F8 .extern UNK_020FB704 .extern UNK_020FB710 @@ -7491,6 +7573,37 @@ .extern UNK_020FB740 .extern UNK_020FB764 .extern UNK_020FD144 +.extern UNK_021C8ECC +.extern UNK_021C8ED0 +.extern UNK_021C8ED4 +.extern UNK_021C8ED8 +.extern UNK_021C8EDC +.extern UNK_021C8EE0 +.extern UNK_021C8EE4 +.extern UNK_021C8EE8 +.extern UNK_021C8EEC +.extern UNK_021C8EF0 +.extern UNK_021C8EF8 +.extern UNK_021C8EFC +.extern UNK_021C8F00 +.extern UNK_021C8F04 +.extern UNK_021C8F08 +.extern UNK_021C8F0C +.extern UNK_021C8F10 +.extern UNK_021C8F14 +.extern UNK_021C8F1C +.extern UNK_021C8F5E +.extern UNK_021C8F78 +.extern UNK_021C8F82 +.extern UNK_021C8FD8 +.extern UNK_021C903C +.extern UNK_021C90A0 +.extern UNK_021C9160 +.extern UNK_021C9220 +.extern UNK_021C924A +.extern UNK_021C93A0 +.extern UNK_021C9520 +.extern UNK_021C9EE0 .extern Unk_0210683C .extern Unk_02106840 .extern Unk_02106900 @@ -7508,6 +7621,7 @@ .extern VEC_MultAdd .extern VEC_Normalize .extern VEC_Subtract +.extern WCM_SendDCFData .extern WM_Disable .extern WM_Disconnect .extern WM_Enable @@ -7677,6 +7791,7 @@ .extern memmove .extern memset .extern nan +.extern pool_initialized .extern pow .extern printf .extern qsort @@ -7730,101 +7845,3 @@ .extern wcstombs .extern wctomb .extern wmemcpy -.extern FUN_0208AC14 -.extern FUN_0208AC58 -.extern FUN_0208AE48 -.extern FUN_020905D0 -.extern FUN_02090664 -.extern FUN_02090780 -.extern FUN_02090858 -.extern FUN_020908DC -.extern FUN_020909A4 -.extern FUN_020B04FC -.extern UNK63_021DBAB8 -.extern UNK05_021F64C8 -.extern MOD06_0224C8E8 -.extern MOD05_021DB144 -.extern MOD05_021DB1D0 -.extern MOD05_021DB250 -.extern MOD05_021DB380 -.extern MOD05_021DB040 -.extern UNK05_021F9080 -.extern UNK05_021F9194 -.extern UNK05_021F9494 -.extern FUN_0205C3B0 -.extern FUN_0205C3D0 -.extern FUN_0205C490 -.extern FUN_0205C4A8 -.extern FUN_0205C4D8 -.extern CPSiAlloc -.extern CPSiFree -.extern CPSiRand32ctx -.extern CPSi_SslCleanup -.extern CPSi_SslClose -.extern CPSi_SslConnect -.extern CPSi_SslConsume -.extern CPSi_SslGetLength -.extern CPSi_SslListen -.extern CPSi_SslPeriodical -.extern CPSi_SslRead -.extern CPSi_SslShutdown -.extern CPSi_SslWrite2 -.extern FUN_020A8644 -.extern FUN_020A87BC -.extern UNK_021C8ECC -.extern UNK_021C8ED0 -.extern UNK_021C8ED4 -.extern UNK_021C8ED8 -.extern UNK_021C8EDC -.extern UNK_021C8EE0 -.extern UNK_021C8EE4 -.extern UNK_021C8EE8 -.extern UNK_021C8EEC -.extern UNK_021C8EF0 -.extern UNK_021C8EF8 -.extern UNK_021C8EFC -.extern UNK_021C8F00 -.extern UNK_021C8F04 -.extern UNK_021C8F08 -.extern UNK_021C8F0C -.extern UNK_021C8F10 -.extern UNK_021C8F14 -.extern UNK_021C8F1C -.extern UNK_021C8F5E -.extern UNK_021C8F78 -.extern UNK_021C8F82 -.extern UNK_021C8FD8 -.extern UNK_021C903C -.extern UNK_021C90A0 -.extern UNK_021C9160 -.extern UNK_021C9220 -.extern UNK_021C924A -.extern UNK_021C93A0 -.extern UNK_021C9520 -.extern UNK_021C9EE0 -.extern pool_initialized -.extern CPSi_SocConsumeRaw -.extern CPSi_TcpConnectRaw -.extern CPSi_TcpReadRaw -.extern CPSi_TcpShutdownRaw -.extern CPSi_TcpWrite2Raw -.extern CPSi_big_add -.extern CPSi_big_div -.extern CPSi_big_from_char -.extern CPSi_big_montpower -.extern CPSi_big_mult -.extern CPSi_big_negate -.extern CPSi_big_power -.extern CPSi_big_sign -.extern CPSi_big_sub -.extern CPSi_char_from_big -.extern CPSi_md5_calc -.extern CPSi_md5_init -.extern CPSi_md5_result -.extern CPSi_rc4_crypt -.extern CPSi_rc4_init -.extern CPSi_sha1_calc -.extern CPSi_sha1_init -.extern CPSi_sha1_result -.extern CPSi_sha1_result_prng -.extern FUN_0209CAC4 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index e58f24ed..24fa13fc 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -2415,7 +2415,7 @@ MOD04_021DAF18: ; 0x021DAF18 streq r1, [r0, #0x20] addeq sp, sp, #0xc ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl FUN_0209CB44 + bl CPS_SocUse add r0, sl, #0x1000 ldr r0, [r0, #0x12c] cmp r0, #1 @@ -2440,15 +2440,15 @@ _021DAFC8: ldrh r1, [r0, #0x30] mov r2, r4 mov r0, #0 - bl FUN_0209CB78 - bl FUN_0209C934 + bl CPS_SocPingMode + bl CPS_TcpConnect cmp r0, #0 beq _021DB004 add r0, sl, #0x1000 mov r1, #3 str r1, [r0, #0x20] - bl FUN_0209CB24 - bl FUN_0209CC10 + bl CPS_SocRelease + bl CPS_SocUnRegister add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _021DB004: @@ -2458,14 +2458,14 @@ _021DB004: bl strlen mov r1, r0 mov r0, r4 - bl FUN_0209C030 + bl CPS_SocWrite cmp r0, #0 str r0, [sp, #8] addle r0, sl, #0x1000 movle r1, #5 strle r1, [r0, #0x20] ble _021DB20C - bl FUN_0209BF4C + bl CPS_SocGetChar mov r0, sl bl MOD04_021DB3B8 cmp r0, #0 @@ -2493,7 +2493,7 @@ _021DB088: moveq r1, #5 streq r1, [r0, #0x20] beq _021DB20C - bl FUN_0209BF9C + bl CPS_SocGetLength str r0, [sp, #8] cmp r0, #0 blt _021DB1E8 @@ -2503,7 +2503,7 @@ _021DB088: mov r6, r0 add r0, sp, #8 mov r8, r1 - bl FUN_0209C638 + bl CPS_SocRead cmp r0, #0 beq _021DB1E8 ldr r2, [r7, #8] @@ -2541,11 +2541,11 @@ _021DB150: ldr r0, [sp, #8] cmp r0, sb bls _021DB164 - bl FUN_0209C52C + bl CPS_SocConsume b _021DB1E8 _021DB164: mov r0, sb - bl FUN_0209C52C + bl CPS_SocConsume _021DB16C: add r0, sl, #0x1000 ldr r1, [r0, #0xa2c] @@ -2580,20 +2580,20 @@ _021DB188: str r1, [r0, #0x20] b _021DB20C _021DB1E8: - bl FUN_0209C840 - bl FUN_0209C7AC - bl FUN_0209CB24 - bl FUN_0209CC10 + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister add r0, sl, #0x1000 mov r1, #8 str r1, [r0, #0x20] add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _021DB20C: - bl FUN_0209C840 - bl FUN_0209C7AC - bl FUN_0209CB24 - bl FUN_0209CC10 + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 @@ -2704,7 +2704,7 @@ MOD04_021DB35C: ; 0x021DB35C ldr r2, [r1, #0x9cc] add r0, r4, r0 str r2, [r1, #0x180] - bl FUN_0209CC28 + bl CPS_SocRegister ldmia sp!, {r4, pc} .align 2, 0 _021DB3AC: .word 0x00001134 -- cgit v1.2.3 From 5887aceb35b0bff7bc3b6db4c965c2e5a9963367 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 15:44:17 -0400 Subject: Split libsoc --- arm9/arm9.lcf | 22 + arm9/asm/SOC_soc.s | 758 ++++++ arm9/asm/SOC_socl_bind.s | 198 ++ arm9/asm/SOC_socl_cleanup.s | 283 +++ arm9/asm/SOC_socl_close.s | 288 +++ arm9/asm/SOC_socl_command.s | 300 +++ arm9/asm/SOC_socl_const.s | 2 + arm9/asm/SOC_socl_create.s | 491 ++++ arm9/asm/SOC_socl_list.s | 128 + arm9/asm/SOC_socl_misc.s | 10 + arm9/asm/SOC_socl_poll.s | 93 + arm9/asm/SOC_socl_read.s | 1203 ++++++++++ arm9/asm/SOC_socl_shutdown.s | 90 + arm9/asm/SOC_socl_ssl.s | 110 + arm9/asm/SOC_socl_startup.s | 236 ++ arm9/asm/libVCT.s | 8 +- arm9/asm/unk_020910EC.s | 4126 --------------------------------- arm9/global.inc | 100 +- arm9/modules/04/asm/arm_04.s | 102 +- arm9/modules/13/asm/module_13_thumb.s | 38 +- arm9/modules/79/asm/module_79_arm.s | 2 +- 21 files changed, 4359 insertions(+), 4229 deletions(-) create mode 100644 arm9/asm/SOC_soc.s create mode 100644 arm9/asm/SOC_socl_bind.s create mode 100644 arm9/asm/SOC_socl_cleanup.s create mode 100644 arm9/asm/SOC_socl_close.s create mode 100644 arm9/asm/SOC_socl_command.s create mode 100644 arm9/asm/SOC_socl_const.s create mode 100644 arm9/asm/SOC_socl_create.s create mode 100644 arm9/asm/SOC_socl_list.s create mode 100644 arm9/asm/SOC_socl_misc.s create mode 100644 arm9/asm/SOC_socl_poll.s create mode 100644 arm9/asm/SOC_socl_read.s create mode 100644 arm9/asm/SOC_socl_shutdown.s create mode 100644 arm9/asm/SOC_socl_ssl.s create mode 100644 arm9/asm/SOC_socl_startup.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 6ef2b114..59de4650 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -431,6 +431,20 @@ SECTIONS { unk_0208AC14.o (.text) custom_allocator.o (.text) unk_020910EC.o (.text) + SOC_socl_startup.o (.text) + SOC_socl_command.o (.text) + SOC_socl_create.o (.text) + SOC_socl_bind.o (.text) + SOC_socl_read.o (.text) + SOC_socl_shutdown.o (.text) + SOC_socl_close.o (.text) + SOC_socl_cleanup.o (.text) + SOC_socl_poll.o (.text) + SOC_socl_const.o (.text) + SOC_socl_misc.o (.text) + SOC_socl_list.o (.text) + SOC_soc.o (.text) + SOC_socl_ssl.o (.text) CPS_network.o (.text) SSL_ssl.o (.text) SSL_md5.o (.text) @@ -712,6 +726,7 @@ SECTIONS { unk_02089F24.o (.rodata) unk_0208A998.o (.rodata) unk_020910EC.o (.rodata) + SOC_soc.o (.rodata) CPS_network.o (.rodata) SSL_ssl.o (.rodata) SSL_md5.o (.rodata) @@ -772,6 +787,8 @@ SECTIONS { unk_020893E0.o (.data) unk_0208AC14.o (.data) unk_020910EC.o (.data) + SOC_socl_bind.o (.data) + SOC_soc.o (.data) CPS_network.o (.data) SSL_ssl.o (.data) SSL_md5.o (.data) @@ -858,6 +875,11 @@ SECTIONS { unk_0208AC14.o (.bss) custom_allocator.o (.bss) unk_020910EC.o (.bss) + SOC_socl_startup.o (.bss) + SOC_socl_command.o (.bss) + SOC_socl_read.o (.bss) + SOC_socl_list.o (.bss) + SOC_soc.o (.bss) CPS_network.o (.bss) SSL_ssl.o (.bss) SSL_md5.o (.bss) diff --git a/arm9/asm/SOC_soc.s b/arm9/asm/SOC_soc.s new file mode 100644 index 00000000..506a16eb --- /dev/null +++ b/arm9/asm/SOC_soc.s @@ -0,0 +1,758 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global SOCLSocketParamUDP +SOCLSocketParamUDP: ; 0x021061C4 + .byte 0x01, 0x01, 0xC0, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 + .byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00 + + .global SOCLSocketParamTCP +SOCLSocketParamTCP: ; 0x021061DC + .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00 + .byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x08, 0x0D, 0x20 + + .global SOCLSocketParamUDPSend +SOCLSocketParamUDPSend: ; 0x021061F4 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x06, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x20 + + .global UNK_0210620C +UNK_0210620C: ; 0x0210620C + .byte 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x00 + + .section .bss + + .global UNK_021C8D38 +UNK_021C8D38: ; 0x021C8D38 + .space 0x4 + + .global FreeFunc_SOC +FreeFunc_SOC: ; 0x021C8D3C + .space 0x4 + + .global AllocFunc_SOC +AllocFunc_SOC: ; 0x021C8D40 + .space 0x4 + + .global UNK_021C8D44 +UNK_021C8D44: ; 0x021C8D44 + .space 0x8 + + .global UNK_021C8D4C +UNK_021C8D4C: ; 0x021C8D4C + .space 0x10 + + .global UNK_021C8D5C +UNK_021C8D5C: ; 0x021C8D5C + .space 0x10 + + .global UNK_021C8D6C +UNK_021C8D6C: ; 0x021C8D6C + .space 0x38 + + .global UNK_021C8DA4 +UNK_021C8DA4: ; 0x021C8DA4 + .space 0x104 + + .text + + arm_func_start SOC_Poll +SOC_Poll: ; 0x0209A0AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x0 + mov r8, r3 + mvn r2, #0x0 + cmp r8, r2 + cmpeq r9, r2 + movne r11, #0x1 + mov r10, r1 + moveq r11, #0x0 + str r0, [sp, #0x4] +_0209A0E8: + ldr r5, [sp, #0x4] + ldr r7, [sp, #0x0] + mov r6, r5 + cmp r10, #0x0 + bls _0209A128 +_0209A0FC: + ldrsh r1, [r7, #0x4] + ldr r0, [r7, #0x0] + orr r4, r1, #0xe0 + bl SOCL_GetStatus + ands r0, r4, r0 + strh r0, [r7, #0x6] + add r6, r6, #0x1 + addne r5, r5, #0x1 + cmp r6, r10 + add r7, r7, #0x8 + blo _0209A0FC +_0209A128: + cmp r5, #0x0 + bgt _0209A160 + cmp r11, #0x0 + beq _0209A148 + mov r1, #0x0 + subs r0, r1, r9 + sbcs r0, r1, r8 + bge _0209A160 +_0209A148: + ldr r0, [sp, #0x8] + bl OS_Sleep + ldr r0, _0209A170 ; =0x0000020B + subs r9, r9, r0 + sbc r8, r8, #0x0 + b _0209A0E8 +_0209A160: + mov r0, r5 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209A170: .word 0x0000020B + + arm_func_start SOC_U32to4U8 +SOC_U32to4U8: ; 0x0209A174 + mov r2, r0, lsr #0x18 + strb r2, [r1, #0x0] + mov r2, r0, lsr #0x10 + strb r2, [r1, #0x1] + mov r2, r0, lsr #0x8 + strb r2, [r1, #0x2] + strb r0, [r1, #0x3] + bx lr + + arm_func_start SOC_InetNtoP +SOC_InetNtoP: ; 0x0209A194 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + cmp r0, #0x2 + mov r4, r2 + addne sp, sp, #0x18 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + cmp r3, #0x10 + addcc sp, sp, #0x18 + movcc r0, #0x0 + ldmccia sp!, {r4,lr} + bxcc lr + mov r0, r1 + add r1, sp, #0xc + mov r2, #0x4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl SOC_U32to4U8 + ldrb r1, [sp, #0x12] + ldr r2, _0209A220 ; =UNK_0210620C + mov r0, r4 + str r1, [sp, #0x0] + ldrb r3, [sp, #0x11] + mov r1, #0x10 + str r3, [sp, #0x4] + ldrb r3, [sp, #0x10] + str r3, [sp, #0x8] + ldrb r3, [sp, #0x13] + bl OS_SNPrintf + mov r0, r4 + add sp, sp, #0x18 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209A220: .word UNK_0210620C + + arm_func_start SOC_InetAtoN +SOC_InetAtoN: ; 0x0209A224 + stmdb sp!, {r4,lr} + mov r4, r1 + bl SOCL_InetAtoH + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, r12, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r4, #0x0] + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOC_InetNtoA +SOC_InetNtoA: ; 0x0209A27C + stmdb sp!, {r0-r3} + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _0209A2B0 ; =UNK_021C8D5C + add r1, sp, #0x8 + mov r0, #0x2 + mov r3, #0x10 + bl SOC_InetNtoP + ldr r0, _0209A2B0 ; =UNK_021C8D5C + add sp, sp, #0x4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .balign 4 +_0209A2B0: .word UNK_021C8D5C + + arm_func_start SOC_Cleanup +SOC_Cleanup: ; 0x0209A2B4 + ldr ip, _0209A2BC ; =SOCL_Cleanup + bx r12 + .balign 4 +_0209A2BC: .word SOCL_Cleanup + + arm_func_start SOC_Startup +SOC_Startup: ; 0x0209A2C0 + stmdb sp!, {r4-r8,lr} + ldr r1, [r0, #0xc] + ldr ip, _0209A430 ; =UNK_021C8D6C + cmp r1, #0x1 + moveq r1, #0x1 + movne r1, #0x0 + str r1, [r12, #0x0] + ldr r6, [r0, #0x10] + ldr r5, _0209A434 ; =AllocFunc_SOCL + mov r2, r6, lsr #0x18 + mov r1, r6, lsr #0x8 + mov r3, r6, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + mov r6, r6, lsl #0x18 + orr r1, r2, r1 + and r3, r3, #0xff0000 + orr r1, r3, r1 + and r2, r6, #0xff000000 + orr r1, r2, r1 + str r1, [r12, #0x4] + ldr r7, [r0, #0x14] + ldr r4, _0209A438 ; =FreeFunc_SOCL + mov r2, r7, lsr #0x18 + mov r1, r7, lsr #0x8 + mov r6, r7, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + mov r7, r7, lsl #0x18 + orr r1, r2, r1 + and r6, r6, #0xff0000 + and r2, r7, #0xff000000 + orr r1, r6, r1 + orr r1, r2, r1 + str r1, [r12, #0x8] + ldr r1, [r0, #0x18] + ldr r3, _0209A43C ; =AllocFunc_SOC + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r1, [r12, #0xc] + ldr r1, [r0, #0x1c] + ldr r2, _0209A440 ; =FreeFunc_SOC + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r1, [r12, #0x10] + ldr r1, [r0, #0x20] + mov lr, #0x40 + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r5, [r12, #0x18] + str r4, [r12, #0x1c] + str r1, [r12, #0x14] + ldr r1, [r0, #0x4] + str r1, [r3, #0x0] + ldr r1, [r0, #0x8] + str lr, [r12, #0x20] + str r1, [r2, #0x0] + ldr r1, [r0, #0x2c] + str r1, [r12, #0x30] + ldr r1, [r0, #0x30] + mov r0, r12 + str r1, [r12, #0x34] + bl SOCL_Startup + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209A430: .word UNK_021C8D6C +_0209A434: .word AllocFunc_SOCL +_0209A438: .word FreeFunc_SOCL +_0209A43C: .word AllocFunc_SOC +_0209A440: .word FreeFunc_SOC + + arm_func_start FreeFunc_SOCL +FreeFunc_SOCL: ; 0x0209A444 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldr r1, _0209A480 ; =FreeFunc_SOC + ldr r2, [r0, #-0x4] + ldr r3, [r1, #0x0] + sub r1, r0, #0x4 + mov r0, #0x0 + blx r3 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209A480: .word FreeFunc_SOC + + arm_func_start AllocFunc_SOCL +AllocFunc_SOCL: ; 0x0209A484 + stmdb sp!, {r4,lr} + ldr r1, _0209A4B0 ; =AllocFunc_SOC + add r4, r0, #0x4 + ldr r2, [r1, #0x0] + mov r1, r4 + mov r0, #0x0 + blx r2 + cmp r0, #0x0 + strne r4, [r0], #0x4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209A4B0: .word AllocFunc_SOC + + arm_func_start SOC_Fcntl +SOC_Fcntl: ; 0x0209A4B4 + cmp r0, #0x0 + mvneq r0, #0x0 + bxeq lr + cmp r1, #0x3 + beq _0209A4D4 + cmp r1, #0x4 + beq _0209A4E8 + b _0209A4FC +_0209A4D4: + ldrsb r0, [r0, #0x72] + cmp r0, #0x1 + moveq r0, #0x0 + movne r0, #0x4 + bx lr +_0209A4E8: + ands r1, r2, #0x4 + movne r1, #0x0 + strneb r1, [r0, #0x72] + moveq r1, #0x1 + streqb r1, [r0, #0x72] +_0209A4FC: + mov r0, #0x0 + bx lr + + arm_func_start SOC_Accept +SOC_Accept: ; 0x0209A504 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r1 + add r1, sp, #0x0 + add r2, sp, #0x4 + bl SOCL_Accept + cmp r0, #0x0 + addlt sp, sp, #0x8 + ldmltia sp!, {r4,lr} + bxlt lr + ldrh r1, [sp, #0x0] + mov r2, r1, asr #0x8 + mov r1, r1, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [r4, #0x2] + ldr r12, [sp, #0x4] + mov r2, r12, lsr #0x18 + mov r1, r12, lsr #0x8 + mov r3, r12, lsl #0x8 + mov r12, r12, lsl #0x18 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r3, r3, #0xff0000 + orr r1, r2, r1 + and r2, r12, #0xff000000 + orr r1, r3, r1 + orr r1, r2, r1 + str r1, [r4, #0x4] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOC_Listen +SOC_Listen: ; 0x0209A588 + ldr ip, _0209A590 ; =SOCL_Listen + bx r12 + .balign 4 +_0209A590: .word SOCL_Listen + + arm_func_start SOC_GetResolver +SOC_GetResolver: ; 0x0209A594 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r12, [r1, #0x0] + ldr r0, [r0, #0x0] + mov r2, r12, lsr #0x18 + mov r4, r0, lsr #0x18 + mov lr, r0, lsr #0x8 + mov r1, r12, lsr #0x8 + mov r5, r0, lsl #0x8 + mov r3, r12, lsl #0x8 + mov r0, r0, lsl #0x18 + mov r12, r12, lsl #0x18 + and r4, r4, #0xff + and lr, lr, #0xff00 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r5, r5, #0xff0000 + orr r4, r4, lr + and r3, r3, #0xff0000 + orr r1, r2, r1 + and lr, r0, #0xff000000 + orr r0, r5, r4 + and r2, r12, #0xff000000 + orr r1, r3, r1 + orr r0, lr, r0 + orr r1, r2, r1 + bl SOCL_SetResolver + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOC_GetHostID +SOC_GetHostID: ; 0x0209A60C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl SOCL_GetHostID + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, r12, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SOC_GetSockName +SOC_GetSockName: ; 0x0209A650 + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r4, r1 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl SOCL_GetHostID + cmp r5, #0x0 + ldrneh r1, [r5, #0x74] + mov r2, r0, lsr #0x18 + mov r6, #0x8 + moveq r1, #0x0 + cmp r0, #0x0 + moveq r1, #0x0 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r5, r3, asr #0x8 + mov lr, r3, lsl #0x8 + strb r6, [r4, #0x0] + mov r6, #0x2 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r0, r1, #0xff00 + and r2, r2, #0xff + orr r0, r2, r0 + and r1, r3, #0xff0000 + and r5, r5, #0xff + and lr, lr, #0xff00 + strb r6, [r4, #0x1] + orr r3, r5, lr + and r2, r12, #0xff000000 + orr r0, r1, r0 + strh r3, [r4, #0x2] + orr r0, r2, r0 + str r0, [r4, #0x4] + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SOC_GetHostByAddr +SOC_GetHostByAddr: ; 0x0209A6EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl SOCL_Resolve + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, _0209A7A4 ; =UNK_021C8DA4 + ldr r2, _0209A7A8 ; =0x00000101 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, _0209A7A4 ; =UNK_021C8DA4 + ldr r2, _0209A7A8 ; =0x00000101 + mov r1, r5 + bl STD_CopyLString + mov r1, r4, lsr #0x18 + mov r0, r4, lsr #0x8 + mov r2, r4, lsl #0x8 + mov r3, r4, lsl #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + and r2, r2, #0xff0000 + orr r0, r1, r0 + and r3, r3, #0xff000000 + orr r1, r2, r0 + ldr r5, _0209A7A4 ; =UNK_021C8DA4 + ldr r0, _0209A7AC ; =UNK_021C8D4C + ldr ip, _0209A7B0 ; =UNK_021C8D44 + mov r4, #0x0 + ldr r2, _0209A7B4 ; =UNK_021C8D38 + orr r1, r3, r1 + mov lr, #0x2 + mov r3, #0x4 + str r5, [r0, #0x0] + str r4, [r0, #0x4] + strh lr, [r0, #0x8] + strh r3, [r0, #0xa] + str r12, [r0, #0xc] + str r2, [r12, #0x0] + str r4, [r12, #0x4] + str r1, [r2, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209A7A4: .word UNK_021C8DA4 ; entName +_0209A7A8: .word 0x00000101 +_0209A7AC: .word UNK_021C8D4C ; hostent +_0209A7B0: .word UNK_021C8D44 ; hostAddrList +_0209A7B4: .word UNK_021C8D38 ; hostip + + arm_func_start SOC_Close +SOC_Close: ; 0x0209A7B8 + ldr ip, _0209A7C0 ; =SOCL_Close + bx r12 + .balign 4 +_0209A7C0: .word SOCL_Close + + arm_func_start SOC_Shutdown +SOC_Shutdown: ; 0x0209A7C4 + ldr ip, _0209A7CC ; =SOCL_Shutdown + bx r12 + .balign 4 +_0209A7CC: .word SOCL_Shutdown + + arm_func_start SOC_SendTo +SOC_SendTo: ; 0x0209A7D0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r5, [sp, #0x20] + cmp r5, #0x0 + moveq r5, #0x0 + moveq r4, r5 + beq _0209A83C + ldrh r4, [r5, #0x2] + ldr r6, [r5, #0x4] + mov r7, r4, asr #0x8 + mov r12, r4, lsl #0x8 + mov r4, r6, lsr #0x18 + mov lr, r6, lsr #0x8 + mov r5, r6, lsl #0x8 + mov r6, r6, lsl #0x18 + and r7, r7, #0xff + and r12, r12, #0xff00 + orr r7, r7, r12 + and r4, r4, #0xff + and lr, lr, #0xff00 + and r5, r5, #0xff0000 + orr r4, r4, lr + mov r12, r7, lsl #0x10 + orr r4, r5, r4 + and r6, r6, #0xff000000 + mov r5, r12, lsr #0x10 + orr r4, r6, r4 +_0209A83C: + str r4, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r5 + bl SOCL_WriteTo + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start SOC_Send +SOC_Send: ; 0x0209A858 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r12 + bl SOCL_WriteTo + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + + arm_func_start SOC_RecvFrom +SOC_RecvFrom: ; 0x0209A880 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r12, sp, #0xc + str r12, [sp, #0x0] + str r3, [sp, #0x4] + add r3, sp, #0x8 + bl SOCLi_ReadFrom + cmp r0, #0x0 + addlt sp, sp, #0x14 + ldmltia sp!, {lr} + bxlt lr + ldr r1, [sp, #0x18] + cmp r1, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {lr} + bxeq lr + ldrh r2, [sp, #0x8] + mov r3, r2, asr #0x8 + mov r2, r2, lsl #0x8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r1, #0x2] + ldr lr, [sp, #0xc] + mov r3, lr, lsr #0x18 + mov r2, lr, lsr #0x8 + mov r12, lr, lsl #0x8 + mov lr, lr, lsl #0x18 + and r3, r3, #0xff + and r2, r2, #0xff00 + and r12, r12, #0xff0000 + orr r2, r3, r2 + and r3, lr, #0xff000000 + orr r2, r12, r2 + orr r2, r3, r2 + str r2, [r1, #0x4] + add sp, sp, #0x14 + ldmia sp!, {lr} + bx lr + + arm_func_start SOC_Read +SOC_Read: ; 0x0209A91C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r12 + bl SOCLi_ReadFrom + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + + arm_func_start SOC_Connect +SOC_Connect: ; 0x0209A944 + stmdb sp!, {r4,lr} + ldrh r2, [r1, #0x2] + ldr lr, [r1, #0x4] + mov r4, r2, asr #0x8 + mov r1, r2, lsl #0x8 + mov r3, lr, lsr #0x18 + mov r2, lr, lsr #0x8 + mov r12, lr, lsl #0x8 + mov lr, lr, lsl #0x18 + and r4, r4, #0xff + and r1, r1, #0xff00 + orr r1, r4, r1 + mov r1, r1, lsl #0x10 + and r3, r3, #0xff + and r2, r2, #0xff00 + and r12, r12, #0xff0000 + orr r2, r3, r2 + and r3, lr, #0xff000000 + orr r2, r12, r2 + mov r1, r1, lsr #0x10 + orr r2, r3, r2 + bl SOCL_Connect + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOC_Bind +SOC_Bind: ; 0x0209A9A4 + ldrh r1, [r1, #0x2] + ldr ip, _0209A9CC ; =SOCL_Bind + mov r2, r1, asr #0x8 + mov r1, r1, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bx r12 + .balign 4 +_0209A9CC: .word SOCL_Bind + + arm_func_start SOC_Socket +SOC_Socket: ; 0x0209A9D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x1 + bne _0209A9F4 + ldr r0, _0209AA08 ; =SOCLSocketParamTCP + bl SOCL_CreateSocket + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209A9F4: + ldr r0, _0209AA0C ; =SOCLSocketParamUDP + bl SOCL_CreateSocket + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209AA08: .word SOCLSocketParamTCP +_0209AA0C: .word SOCLSocketParamUDP diff --git a/arm9/asm/SOC_socl_bind.s b/arm9/asm/SOC_socl_bind.s new file mode 100644 index 00000000..4f9c54e5 --- /dev/null +++ b/arm9/asm/SOC_socl_bind.s @@ -0,0 +1,198 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .balign 4, 0 + .global SOCLiResultCodeInConnecting +SOCLiResultCodeInConnecting: ; 0x021061C0 + .word -26 + + .text + + arm_func_start SOCLi_BindCallBack +SOCLi_BindCallBack: ; 0x020982C4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x4] + mov r5, #0x0 + ldr r6, [r4, #0x64] + add r0, r6, #0xe0 + bl OS_LockMutex + ldrh r0, [r7, #0x10] + ldrh r1, [r7, #0x12] + ldr r2, [r7, #0x14] + bl CPS_SocPingMode + mov r0, r5 + str r0, [r6, #0xf8] + ldrsb r0, [r7, #0xc] + cmp r0, #0x0 + beq _02098310 + cmp r0, #0x4 + bne _02098318 +_02098310: + bl CPS_TcpConnect + mov r5, r0 +_02098318: + add r0, r6, #0xe0 + bl OS_UnlockMutex + cmp r5, #0x0 + ldrnesh r1, [r4, #0x70] + mvnne r0, #0x4b + moveq r0, #0x0 + orrne r1, r1, #0x40 + strneh r1, [r4, #0x70] + ldreqsh r1, [r4, #0x70] + orreq r1, r1, #0x4 + streqh r1, [r4, #0x70] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start SOCLi_ExecBindCommand +SOCLi_ExecBindCommand: ; 0x02098350 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrsb r2, [r4, #0x72] + ldr r0, _020983AC ; =SOCLi_BindCallBack + mov r1, r4 + bl SOCLi_CreateCommandPacket + movs r1, r0 + mvneq r0, #0x20 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrh r2, [r4, #0x74] + mov r0, r4 + strh r2, [r1, #0x10] + ldrh r2, [r4, #0x76] + strh r2, [r1, #0x12] + ldr r2, [r4, #0x78] + str r2, [r1, #0x14] + ldrsh r2, [r4, #0x70] + orr r2, r2, #0x2 + strh r2, [r4, #0x70] + bl SOCLi_ExecCommandPacketInRecvPipe + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020983AC: .word SOCLi_BindCallBack + + arm_func_start SOCL_Connect +SOCL_Connect: ; 0x020983B0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + bne _020983D8 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x8 + beq _020983E4 +_020983D8: + mvn r0, #0x1b + ldmia sp!, {r4-r6,lr} + bx lr +_020983E4: + cmp r6, #0x0 + mov r1, #0x0 + beq _020983FC + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020983FC: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098424 + cmp r0, #0x4 + movne r1, #0x0 +_02098424: + cmp r1, #0x0 + beq _0209849C + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x4 + beq _02098450 + ldrsb r0, [r6, #0x72] + cmp r0, #0x1 + mvneq r0, #0x1d + movne r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr +_02098450: + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + beq _02098478 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x40 + ldrne r0, [r6, #0x6c] + ldreq r0, _020984B0 ; =SOCLiResultCodeInConnecting + ldreq r0, [r0, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr +_02098478: + strh r5, [r6, #0x76] + mov r0, r6 + str r4, [r6, #0x78] + bl SOCLi_ExecBindCommand + ldrsb r1, [r6, #0x72] + cmp r1, #0x1 + mvnne r0, #0x19 + ldmia sp!, {r4-r6,lr} + bx lr +_0209849C: + strh r5, [r6, #0x76] + str r4, [r6, #0x78] + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020984B0: .word SOCLiResultCodeInConnecting + + arm_func_start SOCL_Bind +SOCL_Bind: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + mov r5, r1 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _020984F4 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020984F4: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x6 + ldmneia sp!, {r4-r5,lr} + bxne lr + strh r5, [r4, #0x74] + ldrsb r0, [r4, #0x73] + cmp r0, #0x1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r4 + bl SOCLi_ExecBindCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr diff --git a/arm9/asm/SOC_socl_cleanup.s b/arm9/asm/SOC_socl_cleanup.s new file mode 100644 index 00000000..5eb8b949 --- /dev/null +++ b/arm9/asm/SOC_socl_cleanup.s @@ -0,0 +1,283 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCL_CalmDown +SOCL_CalmDown: ; 0x02099A94 + stmdb sp!, {r4,lr} + ldr r0, _02099B10 ; =SOCLiUDPSendSocket + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02099AE8 + bl SOCL_CloseAll + movs r4, r0 + bne _02099AE0 + ldr r0, _02099B10 ; =SOCLiUDPSendSocket + ldr r0, [r0, #0x0] + bl SOCL_Close + ldr r0, _02099B10 ; =SOCLiUDPSendSocket + ldr r0, [r0, #0x0] + bl SOCL_IsClosed + cmp r0, #0x0 + ldrne r0, _02099B10 ; =SOCLiUDPSendSocket + movne r1, #0x0 + strne r1, [r0, #0x0] + mvn r4, #0x19 +_02099AE0: + bl SOCLi_TrashSocket + b _02099B04 +_02099AE8: + bl CPS_CalmDown + cmp r0, #0x0 + mvneq r4, #0x19 + beq _02099B04 + mov r0, #0x0 + bl WCM_SetRecvDCFCallback + mov r4, #0x0 +_02099B04: + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02099B10: .word SOCLiUDPSendSocket + + arm_func_start SOCL_CloseAll +SOCL_CloseAll: ; 0x02099B14 + stmdb sp!, {r4-r6,lr} + ldr r4, _02099BBC ; =SOCLiUDPSendSocket + ldr r5, _02099BC0 ; =SOCLiSocketList +_02099B20: + bl OS_DisableInterrupts + ldr r6, [r5, #0x0] + cmp r6, #0x0 + beq _02099B54 + ldr r2, [r4, #0x0] +_02099B34: + cmp r6, r2 + beq _02099B48 + ldrsh r1, [r6, #0x70] + ands r1, r1, #0x10 + beq _02099B54 +_02099B48: + ldr r6, [r6, #0x7c] + cmp r6, #0x0 + bne _02099B34 +_02099B54: + bl OS_RestoreInterrupts + cmp r6, #0x0 + beq _02099B6C + mov r0, r6 + bl SOCL_Close + b _02099B20 +_02099B6C: + ldr r0, _02099BC0 ; =SOCLiSocketList + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02099B98 + ldr r0, _02099BBC ; =SOCLiUDPSendSocket + ldr r0, [r0, #0x0] + cmp r1, r0 + bne _02099BB0 + ldr r0, [r1, #0x7c] + cmp r0, #0x0 + bne _02099BB0 +_02099B98: + ldr r0, _02099BC4 ; =SOCLiSocketListTrash + ldr r0, [r0, #0x0] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_02099BB0: + mvn r0, #0x19 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02099BBC: .word SOCLiUDPSendSocket +_02099BC0: .word SOCLiSocketList +_02099BC4: .word SOCLiSocketListTrash + + arm_func_start SOCL_Cleanup +SOCL_Cleanup: ; 0x02099BC8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _02099C68 ; =SOCLiRequestedIP + ldr r0, [r1, #0x0] + cmp r0, #0x0 + ldreq r0, _02099C6C ; =CPSMyIp + ldreq r0, [r0, #0x0] + streq r0, [r1, #0x0] + bl SOCL_CalmDown + mvn r4, #0x19 + cmp r0, r4 + bne _02099C10 + mov r5, #0x64 +_02099BFC: + mov r0, r5 + bl OS_Sleep + bl SOCL_CalmDown + cmp r0, r4 + beq _02099BFC +_02099C10: + bl SOCLi_CleanupCommandPacketQueue + movs r4, r0 + bmi _02099C58 + bl CPS_Cleanup + mov r0, #0x0 + bl CPS_SetScavengerCallback + ldr r0, _02099C70 ; =SOCLiConfigPtr + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x28] + cmp r0, #0x0 + bne _02099C4C + ldr r0, _02099C74 ; =SOCLiCPSConfig + ldr r1, [r1, #0x1c] + ldr r0, [r0, #0x1c] + blx r1 +_02099C4C: + ldr r0, _02099C70 ; =SOCLiConfigPtr + mov r1, #0x0 + str r1, [r0, #0x0] +_02099C58: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099C68: .word SOCLiRequestedIP +_02099C6C: .word CPSMyIp +_02099C70: .word SOCLiConfigPtr +_02099C74: .word SOCLiCPSConfig + + arm_func_start SOCL_GetHostID +SOCL_GetHostID: ; 02099C78 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _02099CE0 ; =CPSMyIp + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _02099CBC + ldr r0, _02099CE4 ; =SOCLiDhcpState + ldr r0, [r0, #0x0] + and r0, r0, #0x3 + cmp r0, #0x1 + bne _02099CCC + bl OS_GetProcMode + cmp r0, #0x12 + beq _02099CCC + mov r0, #0xa + bl OS_Sleep + b _02099CCC +_02099CBC: + ldr r0, _02099CE8 ; =SOCLiRequestedIP + ldr r1, [r0, #0x0] + cmp r1, #0x0 + streq r2, [r0, #0x0] +_02099CCC: + ldr r0, _02099CE0 ; =CPSMyIp + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099CE0: .word CPSMyIp +_02099CE4: .word SOCLiDhcpState +_02099CE8: .word SOCLiRequestedIP + + arm_func_start SOCL_SetResolver +SOCL_SetResolver: ; 0x02099CEC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl SOCL_GetHostID + cmp r0, #0x0 + ldrne r1, _02099D24 ; =CPSDnsIp + mvneq r0, #0x26 + movne r0, #0x0 + strne r5, [r1, #0x0] + strne r4, [r1, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099D24: .word CPSDnsIp + + arm_func_start SOCL_InetAtoH +SOCL_InetAtoH: ; 0x022099D28 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02099D84 ; =CPSDnsIp + mov r5, r0 + ldr r7, [r1, #0x0] + mov r2, #0x0 + ldr r6, [r1, #0x4] + mov r0, r4 + str r2, [r1, #0x0] + str r2, [r1, #0x4] + bl CPS_Resolve + ldr r1, _02099D84 ; =CPSDnsIp + mov r4, r0 + mov r0, r5 + str r7, [r1, #0x0] + str r6, [r1, #0x4] + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02099D84: .word CPSDnsIp + + arm_func_start SOCL_Resolve +SOCL_Resolve: ; 0x02099D88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x64 + movs r4, r0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, _02099E34 ; =SOCLiConfigPtr + mov r0, #0xfd0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + movs r5, r0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r3, _02099E38 ; =0x00000B68 + ldr r1, _02099E3C ; =0x00000466 + add r2, r5, r3 + add r0, sp, #0x0 + str r5, [sp, #0x40] + str r3, [sp, #0x3c] + str r2, [sp, #0x4c] + str r1, [sp, #0x48] + bl CPS_SocRegister + mov r0, r4 + bl CPS_Resolve + mov r4, r0 + bl CPS_SocUnRegister + ldr r1, _02099E34 ; =SOCLiConfigPtr + mov r0, r5 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r4 + add sp, sp, #0x64 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099E34: .word SOCLiConfigPtr +_02099E38: .word 0x00000B68 +_02099E3C: .word 0x00000466 diff --git a/arm9/asm/SOC_socl_close.s b/arm9/asm/SOC_socl_close.s new file mode 100644 index 00000000..b15b611d --- /dev/null +++ b/arm9/asm/SOC_socl_close.s @@ -0,0 +1,288 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_TrashSocket +SOCLi_TrashSocket: ; 0x020996C0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r4, _02099704 ; =SOCLiSocketListTrash + mov r5, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020996F0 +_020996E0: + bl SOCLi_CleanupSocket + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _020996E0 +_020996F0: + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099704: .word SOCLiSocketListTrash + + arm_func_start SOCLi_FreeCommandPipe +SOCLi_FreeCommandPipe: ; 0x02099708 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + movs r8, r0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + add r0, r8, #0x20 + bl OS_JoinThread + bl OS_DisableInterrupts + mov r7, r0 + bl OS_DisableScheduler + add r1, sp, #0x0 + mov r0, r8 + mov r2, #0x0 + bl OS_ReceiveMessage + cmp r0, #0x0 + beq _0209979C + add r4, sp, #0x0 + mvn r6, #0xa + mov r5, #0x0 +_02099758: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02099784 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0209977C + mov r1, r6 + mov r2, r5 + bl OS_SendMessage +_0209977C: + ldr r0, [sp, #0x0] + bl SOCLi_FreeCommandPacket +_02099784: + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl OS_ReceiveMessage + cmp r0, #0x0 + bne _02099758 +_0209979C: + bl OS_EnableScheduler + bl OS_RescheduleThread + mov r0, r7 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start SOCLi_CleanupSocket +SOCLi_CleanupSocket: + stmdb sp!, {r4-r6,lr} + movs r4, r0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x0 + strh r0, [r4, #0x70] + ldrsb r1, [r4, #0x73] + mov r2, #0x1 + cmp r1, #0x0 + beq _020997E8 + cmp r1, #0x4 + movne r2, r0 +_020997E8: + cmp r2, #0x0 + beq _02099804 + ldr r0, [r4, #0x68] + bl SOCLi_FreeCommandPipe + ldr r0, [r4, #0x64] + bl SOCLi_FreeCommandPipe + b _02099884 +_02099804: + cmp r1, #0x1 + bne _02099874 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x104] + cmp r0, #0x0 + beq _0209983C + ldr r5, _020998C0 ; =SOCLiConfigPtr +_02099820: + ldr r1, [r5, #0x0] + ldr r6, [r0, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r6 + cmp r6, #0x0 + bne _02099820 +_0209983C: + ldr r0, [r4, #0x64] + mov r1, #0x0 + add r0, r0, #0x100 + strh r1, [r0, #0x8] + ldr r0, [r4, #0x64] + str r1, [r0, #0x100] + ldr r0, [r4, #0x64] + str r1, [r0, #0x104] + ldr r0, [r4, #0x64] + add r0, r0, #0x10c + bl OS_WakeupThread + ldr r0, [r4, #0x64] + bl SOCLi_FreeCommandPipe + b _02099884 +_02099874: + cmp r1, #0x2 + bne _02099884 + ldr r0, [r4, #0x68] + bl SOCLi_FreeCommandPipe +_02099884: + bl OS_DisableInterrupts + mov r5, r0 + mov r0, r4 + bl SOCLi_SocketUnregister + mov r0, r4 + bl SOCLi_SocketUnregisterTrash + ldr r1, _020998C0 ; =SOCLiConfigPtr + mov r0, r4 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020998C0: .word SOCLiConfigPtr + + arm_func_start SOCLi_CloseCallBack +SOCLi_CloseCallBack: ; 0x020998C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r0, #0x4] + mov r1, #0x1 + ldrsb r0, [r4, #0x73] + cmp r0, #0x0 + beq _020998E8 + cmp r0, #0x4 + movne r1, #0x0 +_020998E8: + cmp r1, #0x0 + beq _02099908 + ldr r0, [r4, #0x68] + add r0, r0, #0x20 + bl OS_JoinThread + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease +_02099908: + bl CPS_SocUnRegister + ldrsh r0, [r4, #0x70] + mov r1, #0x0 + bic r0, r0, #0x6 + strh r0, [r4, #0x70] + ldrsb r0, [r4, #0x73] + cmp r0, #0x2 + ldreq r0, [r4, #0x68] + ldrne r0, [r4, #0x64] + bl SOCLi_SendCommandPacket + bl OS_DisableInterrupts + mov r5, r0 + mov r0, r4 + bl SOCLi_SocketUnregister + mov r0, r4 + bl SOCLi_SocketRegisterTrash + mov r0, r5 + bl OS_RestoreInterrupts + ldrsh r1, [r4, #0x70] + mov r0, #0x0 + orr r1, r1, #0x20 + strh r1, [r4, #0x70] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCL_Close +SOCL_Close: ; 0x0209996C + stmdb sp!, {r4,lr} + mov r4, r0 + cmp r4, #0x0 + mvnle r0, #0x1b + ldmleia sp!, {r4,lr} + bxle lr + bl SOCL_SocketIsInTrash + cmp r0, #0x0 + mvnne r0, #0x19 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _020999C8 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020999C8: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x10 + mvnne r0, #0x19 + ldmneia sp!, {r4,lr} + bxne lr + ldrsh r0, [r4, #0x70] + mov r1, #0x1 + orr r0, r0, #0x18 + strh r0, [r4, #0x70] + ldrsb r0, [r4, #0x73] + cmp r0, #0x0 + beq _02099A10 + cmp r0, #0x4 + movne r1, #0x0 +_02099A10: + cmp r1, #0x0 + beq _02099A24 + ldr r0, [r4, #0x68] + mov r1, #0x0 + bl SOCLi_SendCommandPacket +_02099A24: + ldr r0, _02099A54 ; =SOCLi_CloseCallBack + mov r1, r4 + mov r2, #0x1 + bl SOCLi_CreateCommandPacket + mov r1, r0 + mov r2, #0x0 + mov r0, r4 + str r2, [r1, #0x8] + bl SOCLi_SendCommandPacketToCtrlPipe + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02099A54: .word SOCLi_CloseCallBack + + arm_func_start SOCL_IsClosed +SOCL_IsClosed: + stmdb sp!, {r4,lr} + movs r4, r0 + bmi _02099A88 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + beq _02099A88 + mov r0, r4 + bl SOCL_SocketIsInTrash + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr +_02099A88: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr diff --git a/arm9/asm/SOC_socl_command.s b/arm9/asm/SOC_socl_command.s new file mode 100644 index 00000000..693af250 --- /dev/null +++ b/arm9/asm/SOC_socl_command.s @@ -0,0 +1,300 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global SOCLiCommandPackets +SOCLiCommandPackets: ; 0x021C8D04 + .space 0x4 + + .global SOCLiCommandPacketQueue +SOCLiCommandPacketQueue: ; 0x021C8D08 + .space 0x20 + + .text + + arm_func_start SOCLi_CommandPacketHandler +SOCLi_CommandPacketHandler: ; 0x02097878 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + add r6, sp, #0x0 + mov r4, #0x0 + mov r5, #0x1 +_02097890: + mov r0, r9 + mov r1, r6 + mov r2, r5 + bl OS_ReadMessage + ldr r0, [sp, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r1, [r0, #0x0] + blx r1 + mov r7, r0 + bl OS_DisableInterrupts + mov r8, r0 + bl OS_DisableScheduler + mov r0, r9 + mov r1, r4 + mov r2, r4 + bl OS_ReceiveMessage + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + strne r7, [r0, #0x6c] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _02097908 + mov r1, r7 + mov r2, r4 + bl OS_SendMessage +_02097908: + ldr r0, [sp, #0x0] + bl SOCLi_FreeCommandPacket + bl OS_EnableScheduler + mov r0, r8 + bl OS_RestoreInterrupts + b _02097890 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start SOCLi_ExecCommandPacketInCtrlPipe +SOCLi_ExecCommandPacketInCtrlPipe: ; 0x0209792C + stmdb sp!, {r4,lr} + mov r4, r1 + bl SOCLi_GetCtrlPipe + mov r1, r4 + bl SOCLi_ExecCommandPacket + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOCLi_ExecCommandPacketInSendPipe +SOCLi_ExecCommandPacketInSendPipe: + ldr ip, _02097954 ; =SOCLi_ExecCommandPacket + ldr r0, [r0, #0x68] + bx r12 + .balign 4 +_02097954: .word SOCLi_ExecCommandPacket + + arm_func_start SOCLi_ExecCommandPacketInRecvPipe +SOCLi_ExecCommandPacketInRecvPipe: ; 0x02097958 + ldr ip, _02097964 ; =SOCLi_ExecCommandPacket + ldr r0, [r0, #0x64] + bx r12 + .balign 4 +_02097964: .word SOCLi_ExecCommandPacket + + arm_func_start SOCLi_ExecCommandPacket +SOCLi_ExecCommandPacket: ; 0x02097968 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x2c + mov r4, r1 + ldrsb r2, [r4, #0xd] + mov r5, r0 + cmp r2, #0x1 + bne _020979BC + add r0, sp, #0x8 + add r1, sp, #0x4 + mov r2, #0x1 + bl OS_InitMessageQueue + add r2, sp, #0x8 + mov r0, r5 + mov r1, r4 + str r2, [r4, #0x8] + bl SOCLi_SendCommandPacket + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x1 + bl OS_ReceiveMessage + b _020979CC +_020979BC: + mov r2, #0x0 + str r2, [r4, #0x8] + bl SOCLi_SendCommandPacket + str r0, [sp, #0x0] +_020979CC: + ldr r0, [sp, #0x0] + add sp, sp, #0x2c + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCLi_SendCommandPacketToCtrlPipe +SOCLi_SendCommandPacketToCtrlPipe: + stmdb sp!, {r4,lr} + mov r4, r1 + bl SOCLi_GetCtrlPipe + mov r1, r4 + bl SOCLi_SendCommandPacket + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOCLi_SendCommandPacket +SOCLi_SendCommandPacket: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r1 + beq _02097A14 + ldrsb r1, [r5, #0xd] + ands r1, r1, #0x1 + beq _02097A1C +_02097A14: + mov r2, #0x1 + b _02097A20 +_02097A1C: + mov r2, #0x0 +_02097A20: + mov r1, r5 + bl OS_SendMessage + movs r4, r0 + bne _02097A38 + mov r0, r5 + bl SOCLi_FreeCommandPacket +_02097A38: + cmp r4, #0x0 + movne r0, #0x0 + mvneq r0, #0x29 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCLi_GetCtrlPipe +SOCLi_GetCtrlPipe: ; 0x02097A50 + ldr r1, [r0, #0x64] + cmp r1, #0x0 + ldreq r1, [r0, #0x68] + mov r0, r1 + bx lr + + arm_func_start SOCLi_FreeCommandPacket +SOCLi_FreeCommandPacket: + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r1, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldr r0, _02097A94 ; =SOCLiCommandPacketQueue + mov r2, #0x0 + bl OS_SendMessage + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097A94: .word SOCLiCommandPacketQueue + + arm_func_start SOCLi_CreateCommandPacket +SOCLi_CreateCommandPacket: ; 0x02097A98 + stmdb sp!, {r4-r6,lr} + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl SOCLi_AllocCommandPacket + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + str r6, [r0, #0x0] + str r5, [r0, #0x4] + mov r1, #0x0 + str r1, [r0, #0x8] + ldrsb r1, [r5, #0x73] + strb r1, [r0, #0xc] + strb r4, [r0, #0xd] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SOCLi_AllocCommandPacket +SOCLi_AllocCommandPacket: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + ldr r0, _02097B10 ; =SOCLiCommandPacketQueue + add r1, sp, #0x0 + bl OS_ReceiveMessage + cmp r0, #0x0 + ldrne r0, [sp, #0x0] + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097B10: .word SOCLiCommandPacketQueue + + arm_func_start SOCLi_CleanupCommandPacketQueue +SOCLi_CleanupCommandPacketQueue: ; 0x02097B14 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _02097B6C ; =SOCLiCommandPacketQueue + ldr r1, [r0, #0x1c] + ldr r0, [r0, #0x14] + cmp r1, r0 + addlt sp, sp, #0x4 + mvnlt r0, #0x0 + ldmltia sp!, {lr} + bxlt lr + ldr r0, _02097B70 ; =SOCLiConfigPtr + ldr r1, _02097B74 ; =SOCLiCommandPackets + ldr r2, [r0, #0x0] + ldr r0, [r1, #0x0] + ldr r1, [r2, #0x1c] + blx r1 + ldr r1, _02097B74 ; =SOCLiCommandPackets + mov r0, #0x0 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097B6C: .word SOCLiCommandPacketQueue +_02097B70: .word SOCLiConfigPtr +_02097B74: .word SOCLiCommandPackets + + arm_func_start SOCLi_StartupCommandPacketQueue +SOCLi_StartupCommandPacketQueue: ; 0x02097B78 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + mov r0, #0x2c + mul r1, r4, r0 + ldr r0, _02097C08 ; =SOCLiConfigPtr + mov r2, r4, lsl #0x2 + add r2, r2, #0x3 + ldr r0, [r0, #0x0] + add r1, r1, #0x3 + bic r5, r2, #0x3 + bic r2, r1, #0x3 + ldr r1, [r0, #0x18] + add r0, r2, r5 + blx r1 + movs r6, r0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, _02097C0C ; =SOCLiCommandPacketQueue + mov r1, r6 + mov r2, r4 + bl OS_InitMessageQueue + cmp r4, #0x0 + add r5, r6, r5 + ble _02097BF4 +_02097BDC: + mov r0, r5 + bl SOCLi_FreeCommandPacket + sub r4, r4, #0x1 + cmp r4, #0x0 + add r5, r5, #0x2c + bgt _02097BDC +_02097BF4: + ldr r1, _02097C10 ; =SOCLiCommandPackets + mov r0, #0x0 + str r6, [r1, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02097C08: .word SOCLiConfigPtr +_02097C0C: .word SOCLiCommandPacketQueue +_02097C10: .word SOCLiCommandPackets diff --git a/arm9/asm/SOC_socl_const.s b/arm9/asm/SOC_socl_const.s new file mode 100644 index 00000000..1a4b032e --- /dev/null +++ b/arm9/asm/SOC_socl_const.s @@ -0,0 +1,2 @@ + .include "asm/macros.inc" + .include "global.inc" diff --git a/arm9/asm/SOC_socl_create.s b/arm9/asm/SOC_socl_create.s new file mode 100644 index 00000000..8f8f42b2 --- /dev/null +++ b/arm9/asm/SOC_socl_create.s @@ -0,0 +1,491 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_InitCommandPipe +SOCLi_InitCommandPipe: ; 0x02097C14 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r5, r2 + mov r7, r0 + mov r0, r5 + mov r6, r1 + bl SOCLi_GetSizeCommandPipe + add r4, r7, r0 + ldrb r2, [r5, #0x3] + mov r0, r6 + mov r1, r7 + bl OS_InitMessageQueue + add r0, r6, #0xe0 + bl OS_InitMutex + ldrh r2, [r5, #0x0] + add r0, r6, #0x20 + ldr r1, _02097C88 ; =SOCLi_CommandPacketHandler + str r2, [sp, #0x0] + ldrb r12, [r5, #0x2] + mov r2, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl OS_CreateThread + add r0, r6, #0x20 + bl OS_WakeupThreadDirect + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097C88: .word SOCLi_CommandPacketHandler + + arm_func_start SOCLi_InitSocketBuffer +SOCLi_InitSocketBuffer: ; 0x02097C8C + stmdb sp!, {r4,lr} + mov r4, r0 + cmp r2, #0x0 + moveq r0, #0x0 + str r0, [r1, #0x4] + mov r0, r2 + str r2, [r1, #0x0] + bl SOCLi_RoundUp4 + add r0, r4, r0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOCLi_InitSocket +SOCLi_InitSocket: ; 0x02097CB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrsb r1, [r6, #0x0] + mov r7, r0 + add r4, r7, #0x80 + strb r1, [r7, #0x73] + ldrsb r0, [r6, #0x1] + strb r0, [r7, #0x72] + ldrh r0, [r6, #0x2] + cmp r0, #0x0 + beq _02097D40 + str r4, [r7, #0x64] + ldrh r2, [r6, #0x4] + mov r1, r4 + add r0, r4, #0x114 + strh r2, [r4, #0xfc] + add r2, r6, #0x10 + mov r5, r4 + bl SOCLi_InitCommandPipe + ldrh r2, [r6, #0x2] + add r1, r7, #0x3c + bl SOCLi_InitSocketBuffer + ldrh r2, [r6, #0x8] + add r1, r7, #0x50 + bl SOCLi_InitSocketBuffer + ldrh r3, [r6, #0xe] + add r1, r5, #0x100 + mov r2, #0x0 + strh r3, [r1, #0xa] + str r2, [r5, #0x110] + ldr r1, [r5, #0x110] + mov r4, r0 + str r1, [r5, #0x10c] +_02097D40: + ldrh r0, [r6, #0x6] + cmp r0, #0x0 + ldreq r0, _02097DC0 ; =SOCLiUDPSendSocket + ldreq r0, [r0, #0x0] + ldreq r0, [r0, #0x68] + streq r0, [r7, #0x68] + beq _02097DB0 + str r4, [r7, #0x68] + mov r1, r4 + str r7, [r4, #0x10c] + add r0, r4, #0x110 + add r2, r6, #0x14 + mov r5, r4 + bl SOCLi_InitCommandPipe + ldrh r2, [r6, #0x6] + add r1, r7, #0x48 + bl SOCLi_InitSocketBuffer + ldrh r2, [r6, #0xa] + add r1, r7, #0x58 + bl SOCLi_InitSocketBuffer + ldrh r2, [r6, #0xc] + add r1, r4, #0xf8 + bl SOCLi_InitSocketBuffer + mov r1, #0x0 + str r1, [r5, #0x108] + ldr r1, [r5, #0x108] + mov r4, r0 + str r1, [r5, #0x104] +_02097DB0: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097DC0: .word SOCLiUDPSendSocket + + arm_func_start SOCLi_GetSizeCommandPipe +SOCLi_GetSizeCommandPipe: ; 0x02097DC4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3] + mov r0, r0, lsl #0x2 + bl SOCLi_RoundUp4 + mov r4, r0 + ldrh r0, [r5, #0x0] + bl SOCLi_RoundUp4 + add r0, r4, r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCLi_GetSizeSocket +SOCLi_GetSizeSocket: ; 0x02097DF8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x2] + mov r4, #0x80 + cmp r0, #0x0 + beq _02097E38 + add r4, r4, #0x114 + bl SOCLi_RoundUp4 + add r4, r4, r0 + ldrh r0, [r5, #0x8] + bl SOCLi_RoundUp4 + add r4, r4, r0 + add r0, r5, #0x10 + bl SOCLi_GetSizeCommandPipe + add r4, r4, r0 +_02097E38: + ldrh r0, [r5, #0x6] + cmp r0, #0x0 + beq _02097E74 + add r4, r4, #0x110 + bl SOCLi_RoundUp4 + add r4, r4, r0 + ldrh r0, [r5, #0xa] + bl SOCLi_RoundUp4 + add r4, r4, r0 + ldrh r0, [r5, #0xc] + bl SOCLi_RoundUp4 + add r4, r4, r0 + add r0, r5, #0x14 + bl SOCLi_GetSizeCommandPipe + add r4, r4, r0 +_02097E74: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCLi_StartupSocket +SOCLi_StartupSocket: ; 0x02097E84 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl SOCLi_GetSizeSocket + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02097EF4 ; =SOCLiConfigPtr + mov r5, r0 + ldr r1, [r1, #0x0] + mov r0, r4 + ldr r1, [r1, #0x18] + blx r1 + movs r6, r0 + beq _02097EDC + mov r2, r4 + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r7 + bl SOCLi_InitSocket + mov r0, r6 + bl SOCLi_SocketRegister +_02097EDC: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097EF4: .word SOCLiConfigPtr + + arm_func_start SOCLi_CreateSocketCallBack +SOCLi_CreateSocketCallBack: ; 0x02097EF8 + stmdb sp!, {r4,lr} + ldr r4, [r0, #0x4] + mov r0, r4 + bl CPS_SocRegister + ldrsb r0, [r4, #0x73] + ldr r1, [r4, #0x68] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _02097F58 +_02097F1C: ; jump table + b _02097F30 ; case 0 + b _02097F40 ; case 1 + b _02097F54 ; case 2 + b _02097F58 ; case 3 + b _02097F30 ; case 4 +_02097F30: + add r0, r1, #0x20 + bl CPS_SocDup + bl CPS_SocUse + b _02097F58 +_02097F40: + bl CPS_SocUse + bl CPS_SocDatagramMode + ldr r0, _02097F6C ; =SOCLi_UdpRecvCallback + bl CPS_SetUdpCallback + b _02097F58 +_02097F54: + bl CPS_SocDatagramMode +_02097F58: + mov r0, #0x1 + strh r0, [r4, #0x70] + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097F6C: .word SOCLi_UdpRecvCallback + + arm_func_start SOCL_CreateSocket +SOCL_CreateSocket: ; 0x02097F70 + stmdb sp!, {r4,lr} + bl SOCLi_StartupSocket + movs r4, r0 + mvneq r0, #0x30 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _02097FB0 ; =SOCLi_CreateSocketCallBack + mov r1, r4 + mov r2, #0x1 + bl SOCLi_CreateCommandPacket + mov r1, r0 + mov r0, r4 + bl SOCLi_ExecCommandPacketInCtrlPipe + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097FB0: .word SOCLi_CreateSocketCallBack + + arm_func_start SOCLi_ListenAcceptCallBack +SOCLi_ListenAcceptCallBack: ; 0x02097FB4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + ldr r4, [r6, #0x4] + ldr r5, [r4, #0x64] + add r0, r5, #0xe0 + bl OS_LockMutex + mov r1, #0x0 + ldrh r0, [r6, #0x10] + mov r2, r1 + bl CPS_SocPingMode + bl CPS_TcpListen + mov r2, #0x0 + add r0, sp, #0x0 + add r1, sp, #0x4 + str r2, [r5, #0xf8] + bl CPS_SocWho + ldrh r2, [sp, #0x0] + ldr r1, [r6, #0x14] + strh r2, [r1, #0x0] + ldr r1, [r6, #0x18] + str r0, [r1, #0x0] + ldrsh r1, [r4, #0x70] + add r0, r5, #0xe0 + orr r1, r1, #0x4 + strh r1, [r4, #0x70] + bl OS_UnlockMutex + mov r0, #0x0 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SOCL_ListenAccept +SOCL_ListenAccept: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + mvnne r0, #0x1b + ldmneia sp!, {r4-r6,lr} + bxne lr + cmp r6, #0x0 + mov r1, #0x0 + beq _0209806C + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_0209806C: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + mvnne r0, #0x1b + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020980A8 + cmp r0, #0x4 + movne r1, #0x0 +_020980A8: + cmp r1, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsb r2, [r6, #0x72] + cmp r2, #0x1 + mvnne r0, #0x5 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrh r0, [r6, #0x74] + cmp r0, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, _0209811C ; =SOCLi_ListenAcceptCallBack + mov r1, r6 + bl SOCLi_CreateCommandPacket + mov r1, r0 + ldrh r2, [r6, #0x74] + mov r0, r6 + strh r2, [r1, #0x10] + str r5, [r1, #0x14] + str r4, [r1, #0x18] + ldrsh r2, [r6, #0x70] + orr r2, r2, #0x2 + strh r2, [r6, #0x70] + bl SOCLi_ExecCommandPacketInRecvPipe + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209811C: .word SOCLi_ListenAcceptCallBack + + arm_func_start SOCL_Accept +SOCL_Accept: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r6, #0x0 + mov r1, #0x0 + beq _02098164 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098164: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020981A8 + cmp r0, #0x4 + movne r1, #0x0 +_020981A8: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrsb r0, [r6, #0x72] + cmp r0, #0x1 + addne sp, sp, #0x4 + mvnne r0, #0x5 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r0, _02098228 ; =SOCLSocketParamTCP + bl SOCL_CreateSocket + movs r7, r0 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r7,lr} + bxmi lr + ldrh r1, [r6, #0x74] + bl SOCL_Bind + cmp r0, #0x0 + addlt sp, sp, #0x4 + ldmltia sp!, {r4-r7,lr} + bxlt lr + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl SOCL_ListenAccept + cmp r0, #0x0 + movge r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02098228: .word SOCLSocketParamTCP + + arm_func_start SOCL_Listen +SOCL_Listen: ; 0x0209822C + stmdb sp!, {r4,lr} + mov r4, r0 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + mvnne r0, #0x1b + ldmneia sp!, {r4,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _02098260 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098260: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x2 + mvnne r0, #0x1b + ldmneia sp!, {r4,lr} + bxne lr + ldrsb r0, [r4, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _0209829C + cmp r0, #0x4 + movne r1, #0x0 +_0209829C: + cmp r1, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsb r0, [r4, #0x72] + cmp r0, #0x1 + moveq r0, #0x0 + mvnne r0, #0x5 + ldmia sp!, {r4,lr} + bx lr diff --git a/arm9/asm/SOC_socl_list.s b/arm9/asm/SOC_socl_list.s new file mode 100644 index 00000000..08f780d1 --- /dev/null +++ b/arm9/asm/SOC_socl_list.s @@ -0,0 +1,128 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global SOCLiSocketList +SOCLiSocketList: ; 0x021C8D30 + .space 0x4 + + .global SOCLiSocketListTrash +SOCLiSocketListTrash: ; 0x021C8D34 + .space 0x4 + + .text + + arm_func_start SOCL_SocketIsInTrash +SOCL_SocketIsInTrash: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + ldr r0, _02099FA4 ; =SOCLiSocketListTrash + bl SOCLi_SocketGetNextPtr + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099FA4: .word SOCLiSocketListTrash + + arm_func_start SOCL_SocketIsInvalid +SOCL_SocketIsInvalid: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + cmp r1, #0x0 + ble _02099FCC + ldr r0, _02099FEC ; =SOCLiSocketList + bl SOCLi_SocketGetNextPtr + cmp r0, #0x0 + bne _02099FDC +_02099FCC: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_02099FDC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099FEC: .word SOCLiSocketList + + arm_func_start SOCLi_SocketUnregisterTrash +SOCLi_SocketUnregisterTrash: ; 0x02099FF0 + ldr ip, _0209A000 ; =SOCLi_SocketUnregisterList + mov r1, r0 + ldr r0, _0209A004 ; =SOCLiSocketListTrash + bx r12 + .balign 4 +_0209A000: .word SOCLi_SocketUnregisterList +_0209A004: .word SOCLiSocketListTrash + + arm_func_start SOCLi_SocketGetNextPtr +SOCLi_SocketGetNextPtr: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0209A02C +_0209A014: + cmp r2, r1 + bxeq lr + add r0, r2, #0x7c + ldr r2, [r2, #0x7c] + cmp r2, #0x0 + bne _0209A014 +_0209A02C: + mov r0, #0x0 + bx lr + + arm_func_start SOCLi_SocketUnregisterList +SOCLi_SocketUnregisterList: ; 0x0209A034 + stmdb sp!, {r4,lr} + mov r4, r1 + bl SOCLi_SocketGetNextPtr + cmp r0, #0x0 + ldrne r1, [r4, #0x7c] + strne r1, [r0, #0x0] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SOCLi_SocketUnregister +SOCLi_SocketUnregister: ; 0x0209A054 + ldr ip, _0209A064 ; =SOCLi_SocketUnregisterList + mov r1, r0 + ldr r0, _0209A068 ; =SOCLiSocketList + bx r12 + .balign 4 +_0209A064: .word SOCLi_SocketUnregisterList +_0209A068: .word SOCLiSocketList + + arm_func_start SOCLi_SocketRegisterTrash +SOCLi_SocketRegisterTrash: ; 0x0209A06C + ldr ip, _0209A07C ; =SOCLi_SocketRegisterList + mov r1, r0 + ldr r0, _0209A080 ; =SOCLiSocketListTrash + bx r12 + .balign 4 +_0209A07C: .word SOCLi_SocketRegisterList +_0209A080: .word SOCLiSocketListTrash + + arm_func_start SOCLi_SocketRegisterList +SOCLi_SocketRegisterList: ; 0x0209A084 + ldr r2, [r0, #0x0] + str r2, [r1, #0x7c] + str r1, [r0, #0x0] + bx lr + + arm_func_start SOCLi_SocketRegister +SOCLi_SocketRegister: ; 0x0209A094 + ldr ip, _0209A0A4 ; =SOCLi_SocketRegisterList + mov r1, r0 + ldr r0, _0209A0A8 ; =SOCLiSocketList + bx r12 + .balign 4 +_0209A0A4: .word SOCLi_SocketRegisterList +_0209A0A8: .word SOCLiSocketList diff --git a/arm9/asm/SOC_socl_misc.s b/arm9/asm/SOC_socl_misc.s new file mode 100644 index 00000000..91330d45 --- /dev/null +++ b/arm9/asm/SOC_socl_misc.s @@ -0,0 +1,10 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_RoundUp4 +SOCLi_RoundUp4: + add r0, r0, #0x3 + bic r0, r0, #0x3 + bx lr diff --git a/arm9/asm/SOC_socl_poll.s b/arm9/asm/SOC_socl_poll.s new file mode 100644 index 00000000..811fbdda --- /dev/null +++ b/arm9/asm/SOC_socl_poll.s @@ -0,0 +1,93 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_GetReadBufferOccpiedSize +SOCLi_GetReadBufferOccpiedSize: + ldr r2, [r0, #0x64] + mov r3, #0x0 + cmp r2, #0x0 + beq _02099E88 + ldrsb r1, [r0, #0x73] + cmp r1, #0x1 + bne _02099E6C + ldr r0, [r2, #0x104] + cmp r0, #0x0 + ldrneh r3, [r0, #0x4] + b _02099E88 +_02099E6C: + cmp r1, #0x0 + beq _02099E7C + cmp r1, #0x4 + bne _02099E88 +_02099E7C: + ldr r1, [r0, #0x44] + ldr r0, [r2, #0xf8] + sub r3, r1, r0 +_02099E88: + mov r0, r3 + bx lr + + arm_func_start SOCL_GetStatus +SOCL_GetStatus: + stmdb sp!, {r4-r6,lr} + mov r4, #0x0 + mov r5, r0 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + orrne r4, r4, #0x80 + bne _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x40 + ldrsb r0, [r5, #0x73] + orrne r4, r4, #0x20 + cmp r0, #0x1 + beq _02099ED0 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + beq _02099F00 +_02099ED0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r5 + bl SOCLi_GetReadBufferOccpiedSize + cmp r0, #0x0 + mov r0, r5 + orrgt r4, r4, #0x1 + bl SOCLi_GetWriteBufferFreeSize + cmp r0, #0x0 + mov r0, r6 + orrgt r4, r4, #0x8 + bl OS_RestoreInterrupts +_02099F00: + ldrsb r0, [r5, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02099F18 + cmp r0, #0x4 + movne r1, #0x0 +_02099F18: + cmp r1, #0x0 + beq _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + beq _02099F48 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + beq _02099F48 + ands r0, r4, #0x1 + ldreqsh r0, [r5, #0x70] + biceq r0, r0, #0x6 + streqh r0, [r5, #0x70] +_02099F48: + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x2 + bne _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + orreq r4, r4, #0x40 +_02099F60: + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr diff --git a/arm9/asm/SOC_socl_read.s b/arm9/asm/SOC_socl_read.s new file mode 100644 index 00000000..9bf5aa69 --- /dev/null +++ b/arm9/asm/SOC_socl_read.s @@ -0,0 +1,1203 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global SOCLi_CheckCount +SOCLi_CheckCount: ; 0x021C8D28 + .space 0x8 + + .text + + arm_func_start SOCLi_UdpRecvCallback +SOCLi_UdpRecvCallback: ; 0x02098550 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r2 + ldr r6, [r7, #0x64] + mov r9, r0 + mov r8, r1 + bl OS_DisableInterrupts + add r1, r6, #0x100 + ldrh r2, [r1, #0x8] + ldrh r1, [r1, #0xa] + mov r4, r0 + add r0, r2, r8 + cmp r1, r0 + blo _02098618 + ldr r1, _02098668 ; =SOCLiConfigPtr + add r0, r8, #0xc + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + movs r5, r0 + beq _02098604 + add r1, r6, #0x100 + ldrh r3, [r1, #0x8] + mov r2, #0x0 + mov r0, r9 + add r3, r3, r8 + strh r3, [r1, #0x8] + str r2, [r5, #0x0] + strh r8, [r5, #0x4] + ldrh r3, [r7, #0x18] + mov r2, r8 + add r1, r5, #0xc + strh r3, [r5, #0x6] + ldr r3, [r7, #0x1c] + str r3, [r5, #0x8] + bl MI_CpuCopy8 + ldr r0, [r6, #0x100] + cmp r0, #0x0 + ldrne r0, [r6, #0x100] + strne r5, [r0, #0x0] + str r5, [r6, #0x100] + ldr r0, [r6, #0x104] + cmp r0, #0x0 + streq r5, [r6, #0x104] + b _02098628 +_02098604: + ldr r0, _0209866C ; =SOCLi_CheckCount + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + b _02098628 +_02098618: + ldr r0, _0209866C ; =SOCLi_CheckCount + ldr r1, [r0, #0x4] + add r1, r1, #0x1 + str r1, [r0, #0x4] +_02098628: + ldrh r0, [r7, #0x74] + cmp r0, #0x0 + ldreqh r0, [r7, #0xa] + streqh r0, [r7, #0x74] + ldrh r1, [r7, #0x1a] + add r0, r6, #0x10c + strh r1, [r7, #0x18] + ldr r1, [r7, #0x20] + str r1, [r7, #0x1c] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_02098668: .word SOCLiConfigPtr +_0209866C: .word SOCLi_CheckCount + + arm_func_start SOCLi_ReadUdpBuffer +SOCLi_ReadUdpBuffer: ; 0x02098670 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r9, [r10, #0x64] + str r1, [sp, #0x0] + ldr r0, [r9, #0x104] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl OS_DisableInterrupts + ldr r8, [r9, #0x104] + str r0, [sp, #0xc] + cmp r8, #0x0 + bne _02098710 + ldr r0, [sp, #0x3c] + and r7, r0, #0x1 + add r6, r9, #0x10c + mov r4, #0x1 + mov r5, #0x0 +_020986B8: + cmp r7, #0x0 + mvneq r11, #0x5 + beq _02098710 + mov r0, r6 + bl OS_SleepThread + mov r0, r10 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + bne _020986FC + mov r1, r5 + cmp r10, #0x0 + beq _020986F4 + ldrsh r0, [r10, #0x70] + ands r0, r0, #0x1 + movne r1, r4 +_020986F4: + cmp r1, #0x0 + bne _02098704 +_020986FC: + mvn r11, #0x37 + b _02098710 +_02098704: + ldr r8, [r9, #0x104] + cmp r8, #0x0 + beq _020986B8 +_02098710: + cmp r8, #0x0 + beq _020987A4 + ldrh r1, [r8, #0x4] + ldr r0, [sp, #0x4] + cmp r0, r1 + strgt r1, [sp, #0x4] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r8, #0xc + bl MI_CpuCopy8 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ldrneh r1, [r8, #0x6] + strneh r1, [r0, #0x0] + ldr r1, [sp, #0x38] + cmp r1, #0x0 + ldrne r0, [r8, #0x8] + strne r0, [r1, #0x0] + ldrsb r0, [r9, #0xfe] + ldrh r11, [r8, #0x4] + cmp r0, #0x0 + bne _020987A4 + ldr r0, [r8, #0x0] + ldr r1, _020987BC ; =SOCLiConfigPtr + str r0, [r9, #0x104] + ldr r0, [r8, #0x0] + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r9, #0x100] + ldr r1, [r1, #0x0] + mov r0, r8 + ldr r1, [r1, #0x1c] + blx r1 + add r0, r9, #0x100 + ldrh r1, [r0, #0x8] + sub r1, r1, r11 + strh r1, [r0, #0x8] +_020987A4: + ldr r0, [sp, #0xc] + bl OS_RestoreInterrupts + mov r0, r11 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020987BC: .word SOCLiConfigPtr + + arm_func_start SOCLi_ConsumeCPSBuffer +SOCLi_ConsumeCPSBuffer: ; 0x020987C0 + stmdb sp!, {r4-r6,lr} + ldr r6, [r0, #0x64] + bl OS_DisableInterrupts + ldr r4, [r6, #0xf8] + mov r5, r0 + cmp r4, #0x0 + beq _020987EC + mov r1, #0x0 + mov r0, r4 + str r1, [r6, #0xf8] + bl CPS_SocConsume +_020987EC: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SOCLi_ConsumeCallBack +SOCLi_ConsumeCallBack: ; 0x02098800 + ldr ip, _0209880C ; =SOCLi_ConsumeCPSBuffer + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_0209880C: .word SOCLi_ConsumeCPSBuffer + + arm_func_start SOCLi_ConsumeBuffer +SOCLi_ConsumeBuffer: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x64] + ldrh r0, [r1, #0xfc] + ldr r1, [r1, #0xf8] + cmp r1, r0 + movlt r0, #0x0 + ldmltia sp!, {r4,lr} + bxlt lr + ldr r0, _02098864 ; =SOCLi_ConsumeCallBack + mov r1, r4 + mov r2, #0x0 + bl SOCLi_CreateCommandPacket + movs r1, r0 + mvneq r0, #0x20 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + bl SOCLi_ExecCommandPacketInRecvPipe + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02098864: .word SOCLi_ConsumeCallBack + + arm_func_start SOCLi_ReadCallBack +SOCLi_ReadCallBack: ; 0x02098868 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + ldr r9, [r0, #0x4] + ldr r1, [r0, #0x10] + ldr r8, [r9, #0x64] + str r1, [sp, #0x4] + ldr r1, [r0, #0x18] + ldr r10, [r0, #0x14] + ldr r0, [r0, #0x1c] + ldr r7, [r8, #0xf8] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r11, sp, #0x10 + mov r5, #0x0 + mov r6, #0x1 + mov r4, #0xa +_020988A8: + mov r0, r11 + bl CPS_SocRead + cmp r0, #0x0 + beq _02098904 + ldr r1, [sp, #0x10] + sub r1, r1, r7 + cmp r1, #0x0 + bgt _02098904 + ldrsb r0, [r9, #0x73] + mov r1, r6 + cmp r0, #0x0 + beq _020988E0 + cmp r0, #0x4 + movne r1, r5 +_020988E0: + cmp r1, #0x0 + beq _020988F8 + ldrb r0, [r9, #0x8] + cmp r0, #0x4 + movne r0, #0x0 + bne _02098904 +_020988F8: + mov r0, r4 + bl OS_Sleep + b _020988A8 +_02098904: + ldrsb r1, [r9, #0x73] + cmp r1, #0x4 + bne _02098954 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r1, [sp, #0x10] + cmp r10, r1 + movhi r10, r1 + ldr r1, [sp, #0x4] + mov r2, r10 + bl MI_CpuCopy8 + mov r0, r10 + bl CPS_SocConsume + add sp, sp, #0x14 + mov r0, r10 + ldmia sp!, {r4-r11,lr} + bx lr +_02098954: + cmp r0, #0x0 + moveq r4, #0x0 + beq _02098980 + ldr r4, [sp, #0xc] + ldr r1, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r0, r9 + mov r2, r10 + str r4, [sp, #0x0] + bl SOCLi_CopyCPSBuffer + mov r4, r0 +_02098980: + cmp r4, #0x0 + addle sp, sp, #0x14 + movle r0, r4 + ldmleia sp!, {r4-r11,lr} + bxle lr + ldrh r0, [r8, #0xfc] + ldr r1, [r8, #0xf8] + cmp r1, r0 + blt _020989AC + mov r0, r9 + bl SOCLi_ConsumeCPSBuffer +_020989AC: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start SOCLi_ExecReadCommand +SOCLi_ExecReadCommand: ; 0x020989BC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r0, _02098A10 ; =SOCLi_ReadCallBack + mov r1, r7 + mov r2, #0x1 + mov r4, r3 + bl SOCLi_CreateCommandPacket + mov r1, r0 + str r6, [r1, #0x10] + str r5, [r1, #0x14] + ldr r2, [sp, #0x18] + str r4, [r1, #0x18] + mov r0, r7 + str r2, [r1, #0x1c] + bl SOCLi_ExecCommandPacketInRecvPipe + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02098A10: .word SOCLi_ReadCallBack + + arm_func_start SOCLi_ReadCPSBuffer +SOCLi_ReadCPSBuffer: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x64] + ldr r5, [r0, #0xc4] + ldr r4, [r0, #0xf8] + ldr r0, [r5, #0x44] + subs lr, r0, r4 + bmi _02098A78 + ldrh r12, [r5, #0xa] + ldr r0, [sp, #0x10] + cmp lr, #0x0 + strh r12, [r2, #0x0] + ldrh r2, [r5, #0x18] + strh r2, [r3, #0x0] + ldr r2, [r5, #0x1c] + str r2, [r0, #0x0] + str lr, [r1, #0x0] + bne _02098A90 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + beq _02098A90 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_02098A78: + mvn r0, #0x0 + str r0, [r1, #0x0] + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_02098A90: + ldr r0, [r5, #0x40] + add r0, r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SOCLi_CopyCPSBuffer +SOCLi_CopyCPSBuffer: ; 0x02098AA4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x14 + mov r9, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl OS_DisableInterrupts + add r1, sp, #0xc + mov r5, r0 + str r1, [sp, #0x0] + add r1, sp, #0x8 + mov r0, r9 + add r2, sp, #0x4 + add r3, sp, #0x6 + bl SOCLi_ReadCPSBuffer + cmp r0, #0x0 + beq _02098B48 + ldr r4, [sp, #0x8] + cmp r4, #0x0 + mvneq r4, #0x5 + beq _02098B64 + ldrsb r1, [r9, #0x73] + cmp r7, r4 + movgt r7, r4 + mov r2, #0x1 + cmp r1, #0x0 + beq _02098B18 + cmp r1, #0x4 + movne r2, #0x0 +_02098B18: + cmp r2, #0x0 + mov r1, r8 + mov r2, r7 + movne r4, r7 + bl MI_CpuCopy8 + ldr r1, [r9, #0x64] + ldrsb r0, [r1, #0xfe] + cmp r0, #0x0 + ldreq r0, [r1, #0xf8] + addeq r0, r0, r4 + streq r0, [r1, #0xf8] + b _02098B64 +_02098B48: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ldrsh r0, [r9, #0x70] + moveq r4, #0x0 + mvnne r4, #0x1b + bic r0, r0, #0x6 + strh r0, [r9, #0x70] +_02098B64: + cmp r4, #0x0 + blt _02098B9C + cmp r6, #0x0 + beq _02098B8C + ldr r1, [sp, #0x30] + cmp r1, #0x0 + ldrneh r0, [sp, #0x6] + strneh r0, [r6, #0x0] + ldrne r0, [sp, #0xc] + strne r0, [r1, #0x0] +_02098B8C: + ldrh r0, [r9, #0x74] + cmp r0, #0x0 + ldreqh r0, [sp, #0x4] + streqh r0, [r9, #0x74] +_02098B9C: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start SOCLi_ReadBuffer +SOCLi_ReadBuffer: ; 0x02098BB4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldrsb r12, [r7, #0x73] + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r12, #0x4 + bne _02098BF0 + ldr r4, [sp, #0x18] + str r4, [sp, #0x0] + bl SOCLi_ExecReadCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_02098BF0: + ldr r12, [sp, #0x18] + str r12, [sp, #0x0] + bl SOCLi_CopyCPSBuffer + mvn r1, #0x5 + cmp r0, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r1, [sp, #0x1c] + ands r1, r1, #0x1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r12, [sp, #0x18] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x0] + bl SOCLi_ExecReadCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start SOCLi_ReadAndConsumeBuffer +SOCLi_ReadAndConsumeBuffer: ; 0x02098C4C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x28] + mov r7, r0 + ands r0, r5, #0x2 + ldr r5, [r7, #0x64] + beq _02098C74 + cmp r5, #0x0 + movne r6, #0x1 + bne _02098C78 +_02098C74: + mov r6, #0x0 +_02098C78: + cmp r6, #0x0 + ldrnesb r4, [r5, #0xfe] + movne r0, #0x1 + strneb r0, [r5, #0xfe] + ldrsb r0, [r7, #0x73] + cmp r0, #0x1 + bne _02098CB4 + ldr r0, [sp, #0x20] + ldr r12, [sp, #0x24] + str r0, [sp, #0x0] + mov r0, r7 + str r12, [sp, #0x4] + bl SOCLi_ReadUdpBuffer + mov r8, r0 + b _02098CDC +_02098CB4: + ldr r0, [sp, #0x20] + ldr r12, [sp, #0x24] + str r0, [sp, #0x0] + mov r0, r7 + str r12, [sp, #0x4] + bl SOCLi_ReadBuffer + movs r8, r0 + bmi _02098CDC + mov r0, r7 + bl SOCLi_ConsumeBuffer +_02098CDC: + cmp r6, #0x0 + strneb r4, [r5, #0xfe] + mov r0, r8 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start SOCLi_ReadFrom +SOCLi_ReadFrom: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r9, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0xc + mvnne r0, #0x1b + ldmneia sp!, {r4-r9,lr} + bxne lr + ldr r0, [sp, #0x2c] + ands r0, r0, #0x4 + bne _02098D3C + ldrsb r0, [r9, #0x72] + cmp r0, #0x0 + bne _02098D5C +_02098D3C: + ldrsb r0, [r9, #0x73] + cmp r0, #0x4 + addeq sp, sp, #0xc + mvneq r0, #0x1b + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r4, #0x0 + b _02098D78 +_02098D5C: + bl OS_GetProcMode + cmp r0, #0x12 + addeq sp, sp, #0xc + mvneq r0, #0x1b + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r4, #0x1 +_02098D78: + cmp r9, #0x0 + mov r1, #0x0 + beq _02098D90 + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098D90: + cmp r1, #0x0 + addeq sp, sp, #0xc + mvneq r0, #0x26 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldrsb r0, [r9, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098DBC + cmp r0, #0x4 + movne r1, #0x0 +_02098DBC: + cmp r1, #0x0 + beq _02098DEC + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x4 + beq _02098DDC + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x8 + beq _02098DEC +_02098DDC: + add sp, sp, #0xc + mvn r0, #0x37 + ldmia sp!, {r4-r9,lr} + bx lr +_02098DEC: + ands r0, r4, #0x1 + ldr r5, [r9, #0x64] + bne _02098E18 + add r0, r5, #0xe0 + bl OS_TryLockMutex + cmp r0, #0x0 + bne _02098E20 + add sp, sp, #0xc + mvn r0, #0x5 + ldmia sp!, {r4-r9,lr} + bx lr +_02098E18: + add r0, r5, #0xe0 + bl OS_LockMutex +_02098E20: + ldr r0, [sp, #0x28] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x0] + str r4, [sp, #0x4] + mov r0, r9 + mov r1, r8 + mov r2, r7 + mov r3, r6 + str r12, [sp, #0x8] + bl SOCLi_ReadAndConsumeBuffer + mov r4, r0 + add r0, r5, #0xe0 + bl OS_UnlockMutex + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4-r9,lr} + bx lr + +; libsoc.a:socl_write.a + + arm_func_start SOCLi_MemCpy +SOCLi_MemCpy: ; 0x02098E64 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r2 + ldr r5, [r6, #0x14] + ldr r4, [r6, #0x1c] + cmp r5, r1 + mov r7, r0 + movgt r5, r1 + movgt r4, #0x0 + bgt _02098E98 + sub r0, r1, r5 + cmp r4, r0 + movgt r4, r0 +_02098E98: + cmp r5, #0x0 + ble _02098EC8 + ldr r0, [r6, #0x10] + mov r1, r7 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [r6, #0x10] + add r0, r0, r5 + str r0, [r6, #0x10] + ldr r0, [r6, #0x14] + sub r0, r0, r5 + str r0, [r6, #0x14] +_02098EC8: + cmp r4, #0x0 + ble _02098EF8 + ldr r0, [r6, #0x18] + mov r2, r4 + add r1, r7, r5 + bl MI_CpuCopy8 + ldr r0, [r6, #0x18] + add r0, r0, r4 + str r0, [r6, #0x18] + ldr r0, [r6, #0x1c] + sub r0, r0, r4 + str r0, [r6, #0x1c] +_02098EF8: + add r0, r5, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start SOCLi_GetOptimumSendBufLen +SOCLi_GetOptimumSendBufLen: ; 0x02098F08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _02098FBC ; =OSi_ThreadInfo + mov r4, r0 + ldr r0, [r1, #0x4] + ldr r5, [r0, #0xa4] + bl OS_DisableInterrupts + cmp r5, #0x0 + beq _02098F74 + ldrh r3, [r5, #0x2e] + cmp r3, #0x0 + beq _02098F64 + ldrh r2, [r5, #0x2c] + cmp r2, #0x0 + beq _02098F64 + ldr r1, _02098FC0 ; =SOCLiCPSConfig + cmp r3, r2 + ldr r1, [r1, #0x24] + movgt r3, r2 + cmp r3, r1 + movgt r3, r1 + mov r5, r3, lsl #0x1 + b _02098F80 +_02098F64: + ldr r1, _02098FC0 ; =SOCLiCPSConfig + ldr r1, [r1, #0x24] + mov r5, r1, lsl #0x1 + b _02098F80 +_02098F74: + ldr r1, _02098FC0 ; =SOCLiCPSConfig + ldr r1, [r1, #0x24] + mov r5, r1, lsl #0x1 +_02098F80: + bl OS_RestoreInterrupts + cmp r5, #0x0 + ble _02098FAC + mov r0, r4 + mov r1, r5 + bl _s32_div_f + cmp r0, #0x0 + mulgt r0, r5, r0 + addgt sp, sp, #0x4 + ldmgtia sp!, {r4-r5,lr} + bxgt lr +_02098FAC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02098FBC: .word OSi_ThreadInfo +_02098FC0: .word SOCLiCPSConfig + + arm_func_start SOCLi_WriteCallBack +SOCLi_WriteCallBack: ; 0x02098FC4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldr r7, [r8, #0x4] + mov r4, #0x0 + ldrsb r0, [r7, #0x73] + ldr r6, [r7, #0x68] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098FF4 + cmp r0, #0x4 + movne r1, r4 +_02098FF4: + cmp r1, #0x0 + beq _02099008 + ldrsh r0, [r7, #0x70] + ands r0, r0, #0x4 + beq _020990DC +_02099008: + ldr r2, [r8, #0x28] + cmp r2, #0x0 + beq _02099020 + ldrh r0, [r8, #0x24] + ldrh r1, [r8, #0x26] + bl CPS_SocPingMode +_02099020: + ldrsb r1, [r7, #0x73] + mov r0, #0x1 + cmp r1, #0x0 + beq _02099038 + cmp r1, #0x4 + movne r0, #0x0 +_02099038: + cmp r0, #0x0 + movne r2, #0x36 + moveq r2, #0x2a + ldr r0, [r7, #0x4c] + cmp r1, #0x0 + add r5, r0, r2 + beq _0209905C + cmp r1, #0x4 + bne _02099070 +_0209905C: + ldr r0, [r7, #0x48] + sub r0, r0, r2 + bl SOCLi_GetOptimumSendBufLen + mov r9, r0 + b _02099078 +_02099070: + ldr r0, [r7, #0x48] + sub r9, r0, r2 +_02099078: + mov r0, r5 + mov r1, r9 + mov r2, r8 + bl SOCLi_MemCpy + mov r1, r0 + cmp r1, #0x0 + ble _020990E0 + mov r0, r5 + bl CPS_SocWrite + cmp r0, #0x0 + bgt _020990D4 + ldrsb r0, [r7, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020990BC + cmp r0, #0x4 + movne r1, #0x0 +_020990BC: + cmp r1, #0x0 + ldrnesh r0, [r7, #0x70] + mvn r4, #0x4b + bicne r0, r0, #0xe + strneh r0, [r7, #0x70] + b _020990E0 +_020990D4: + add r4, r4, r0 + b _02099078 +_020990DC: + mvn r4, #0x4b +_020990E0: + ldrh r2, [r8, #0x20] + add r1, r6, #0x100 + add r0, r6, #0x104 + strh r2, [r1, #0x2] + bl OS_WakeupThread + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start SOCLi_ExecWriteCommand +SOCLi_ExecWriteCommand: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r6, [r9, #0x68] + mov r4, r1 + mov r8, r2 + ldr r1, [r6, #0x10c] + ldr r2, [sp, #0x28] + ldr r0, _0209929C ; =SOCLi_WriteCallBack + mov r7, r3 + bl SOCLi_CreateCommandPacket + movs r5, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, [sp, #0x28] + ands r0, r0, #0x1 + beq _02099164 + ldrsb r0, [r9, #0x73] + cmp r0, #0x1 + movne r0, #0x3 + strneb r0, [r5, #0xd] + bne _0209916C +_02099164: + mov r0, #0x0 + strb r0, [r5, #0xd] +_0209916C: + ldr r2, [r6, #0xf8] + add r1, r7, r8 + cmp r1, r2 + ldr r3, [r6, #0xfc] + bge _020991A0 + add r0, r3, r7 + str r0, [r5, #0x10] + str r8, [r5, #0x14] + mov r0, #0x0 + str r0, [r5, #0x18] + mov r7, r1 + str r0, [r5, #0x1c] + b _020991D8 +_020991A0: + add r0, r3, r7 + str r0, [r5, #0x10] + sub r0, r2, r7 + str r0, [r5, #0x14] + str r3, [r5, #0x18] + ldr r0, [r5, #0x14] + sub r0, r8, r0 + str r0, [r5, #0x1c] + ldr r7, [r5, #0x1c] + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + mov r2, r7 + add r0, r4, r0 + bl MI_CpuCopy8 +_020991D8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r4 + bl MI_CpuCopy8 + add r0, r6, #0x100 + ldrh r4, [r0, #0x0] + strh r7, [r5, #0x20] + ldrh r1, [r5, #0x20] + strh r1, [r0, #0x0] + ldrsb r0, [r9, #0x73] + cmp r0, #0x1 + bne _02099268 + ldrh r0, [r9, #0x74] + cmp r0, #0x0 + bne _02099224 + bl CPS_SocGetEport + strh r0, [r9, #0x74] + ldrh r0, [r9, #0x74] + strh r0, [r9, #0xa] +_02099224: + ldrh r0, [r9, #0x74] + strh r0, [r5, #0x24] + ldr r1, [r9, #0x78] + cmp r1, #0x0 + beq _02099244 + ldr r0, [sp, #0x24] + cmp r0, #0x0 + beq _02099258 +_02099244: + ldr r1, [sp, #0x24] + ldrh r0, [sp, #0x20] + str r1, [r5, #0x28] + strh r0, [r5, #0x26] + b _02099270 +_02099258: + str r1, [r5, #0x28] + ldrh r0, [r9, #0x76] + strh r0, [r5, #0x26] + b _02099270 +_02099268: + mov r0, #0x0 + str r0, [r5, #0x28] +_02099270: + ldr r0, [r6, #0x10c] + mov r1, r5 + bl SOCLi_ExecCommandPacketInSendPipe + cmp r0, #0x0 + addne r0, r6, #0x100 + movne r8, #0x0 + strneh r4, [r0, #0x0] + mov r0, r8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209929C: .word SOCLi_WriteCallBack + + arm_func_start SOCLi_GetWriteBufferFreeSize +SOCLi_GetWriteBufferFreeSize: + ldr r2, [r0, #0x68] + add r0, r2, #0x100 + ldrh r1, [r0, #0x0] + ldrh r0, [r0, #0x2] + ldr r2, [r2, #0xf8] + sub r0, r0, r1 + subs r0, r0, #0x1 + addmi r0, r0, r2 + bx lr + + arm_func_start SOCLi_AllocWriteBuffer +SOCLi_AllocWriteBuffer: ; 0x020992C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + mov r9, r1 + mov r8, r2 + cmp r8, r9 + mov r11, r3 + ldr r7, [r10, #0x68] + movgt r8, r9 + bl OS_DisableInterrupts + ldr r1, [sp, #0x28] + str r0, [sp, #0x0] + and r5, r1, #0x1 + add r4, r7, #0x104 +_020992FC: + mov r0, r10 + bl SOCLi_GetWriteBufferFreeSize + mov r6, r0 + cmp r6, r8 + blt _02099328 + add r0, r7, #0x100 + ldrh r0, [r0, #0x0] + cmp r6, r9 + movge r6, r9 + str r0, [r11, #0x0] + b _02099340 +_02099328: + cmp r5, #0x0 + moveq r6, #0x0 + beq _02099340 + mov r0, r4 + bl OS_SleepThread + b _020992FC +_02099340: + ldr r0, [sp, #0x0] + bl OS_RestoreInterrupts + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start SOCLi_WriteBuffer +SOCLi_WriteBuffer: ; 0x02099358 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + mov r10, r0 + ldr r4, [r10, #0x68] + ldrsb r0, [r10, #0x73] + ldr r4, [r4, #0x10c] + mov r9, r1 + cmp r0, #0x1 + ldr r0, [r4, #0x48] + mov r8, r2 + str r3, [sp, #0xc] + ldr r7, [sp, #0x40] + ldr r6, [sp, #0x44] + mov r4, #0x0 + bne _020993B4 + sub r0, r0, #0x2a + cmp r8, r0 + addgt sp, sp, #0x1c + mvngt r0, #0x22 + ldmgtia sp!, {r4-r11,lr} + bxgt lr + str r8, [sp, #0x10] + b _020993C4 +_020993B4: + sub r0, r0, #0x36 + str r0, [sp, #0x10] + cmp r8, r0 + strle r8, [sp, #0x10] +_020993C4: + cmp r8, #0x0 + ble _02099460 + and r11, r6, #0x1 +_020993D0: + ldr r2, [sp, #0x10] + mov r0, r10 + mov r1, r8 + add r3, sp, #0x14 + str r6, [sp, #0x0] + bl SOCLi_AllocWriteBuffer + mov r5, r0 + cmp r5, #0x0 + ble _02099438 + ldr r0, [sp, #0xc] + mov r1, r9 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r6, [sp, #0x8] + ldr r3, [sp, #0x14] + mov r0, r10 + mov r2, r5 + bl SOCLi_ExecWriteCommand + cmp r0, #0x0 + addle sp, sp, #0x1c + mvnle r0, #0x5 + ldmleia sp!, {r4-r11,lr} + bxle lr + add r9, r9, r5 + sub r8, r8, r5 + add r4, r4, r5 +_02099438: + cmp r11, #0x0 + bne _02099458 + cmp r5, #0x0 + bgt _02099460 + add sp, sp, #0x1c + mvn r0, #0x5 + ldmia sp!, {r4-r11,lr} + bx lr +_02099458: + cmp r8, #0x0 + bgt _020993D0 +_02099460: + mov r0, r4 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start SOCL_WriteTo +SOCL_WriteTo: ; 0x02099470 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0x8 + mvnne r0, #0x1b + ldmneia sp!, {r4-r8,lr} + bxne lr + cmp r8, #0x0 + mov r1, #0x0 + beq _020994B8 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020994B8: + cmp r1, #0x0 + addeq sp, sp, #0x8 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldrsb r0, [r8, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020994E4 + cmp r0, #0x4 + movne r1, #0x0 +_020994E4: + cmp r1, #0x0 + beq _02099514 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x4 + beq _02099504 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x8 + beq _02099514 +_02099504: + add sp, sp, #0x8 + mvn r0, #0x37 + ldmia sp!, {r4-r8,lr} + bx lr +_02099514: + ldr r0, [sp, #0x24] + ldr r4, [r8, #0x68] + ands r0, r0, #0x4 + bne _02099530 + ldrsb r0, [r8, #0x72] + cmp r0, #0x0 + bne _02099554 +_02099530: + add r0, r4, #0xe0 + bl OS_TryLockMutex + cmp r0, #0x0 + addeq sp, sp, #0x8 + mvneq r0, #0x5 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r12, #0x0 + b _02099560 +_02099554: + add r0, r4, #0xe0 + bl OS_LockMutex + mov r12, #0x1 +_02099560: + ldr r1, [sp, #0x20] + mov r0, r8 + str r1, [sp, #0x0] + mov r1, r7 + mov r2, r6 + mov r3, r5 + str r12, [sp, #0x4] + bl SOCLi_WriteBuffer + mov r5, r0 + add r0, r4, #0xe0 + bl OS_UnlockMutex + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr diff --git a/arm9/asm/SOC_socl_shutdown.s b/arm9/asm/SOC_socl_shutdown.s new file mode 100644 index 00000000..f1f43e90 --- /dev/null +++ b/arm9/asm/SOC_socl_shutdown.s @@ -0,0 +1,90 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_ShutdownCallBack +SOCLi_ShutdownCallBack: ; 0x0209959C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x4] + mov r1, #0x1 + ldrsb r0, [r0, #0x73] + cmp r0, #0x0 + beq _020995C0 + cmp r0, #0x4 + movne r1, #0x0 +_020995C0: + cmp r1, #0x0 + beq _020995CC + bl CPS_TcpShutdown +_020995CC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SOCL_Shutdown +SOCL_Shutdown: ; 0x020995DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _02099618 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02099618: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x4 + beq _02099644 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x8 + beq _02099654 +_02099644: + add sp, sp, #0x4 + mvn r0, #0x37 + ldmia sp!, {r4-r5,lr} + bx lr +_02099654: + ldrsh r0, [r4, #0x70] + orr r0, r0, #0x8 + strh r0, [r4, #0x70] + ldr r5, [r4, #0x68] + cmp r5, #0x0 + beq _020996AC + ldr r1, [r5, #0x10c] + cmp r1, #0x0 + beq _020996AC + ldrsb r2, [r4, #0x72] + ldr r0, _020996BC ; =SOCLi_ShutdownCallBack + bl SOCLi_CreateCommandPacket + movs r1, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, [r5, #0x10c] + bl SOCLi_ExecCommandPacketInSendPipe + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020996AC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020996BC: .word SOCLi_ShutdownCallBack diff --git a/arm9/asm/SOC_socl_ssl.s b/arm9/asm/SOC_socl_ssl.s new file mode 100644 index 00000000..99848655 --- /dev/null +++ b/arm9/asm/SOC_socl_ssl.s @@ -0,0 +1,110 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start SOCLi_EnableSslCallBack +SOCLi_EnableSslCallBack: ; 0x0209AA10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r6, [r7, #0x4] + ldr r5, [r6, #0x64] + add r0, r5, #0xe0 + ldr r4, [r5, #0xc4] + bl OS_LockMutex + ldr r1, [r7, #0x10] + cmp r1, #0x0 + beq _0209AA54 + mov r0, #0x1 + str r1, [r4, #0xc] + bl CPS_SetSsl + mov r0, #0x4 + strb r0, [r6, #0x73] + b _0209AA68 +_0209AA54: + mov r0, #0x0 + strb r0, [r6, #0x73] + bl CPS_SetSsl + mov r0, #0x0 + str r0, [r4, #0xc] +_0209AA68: + add r0, r5, #0xe0 + bl OS_UnlockMutex + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start SOCLi_ExecEnableSslCommand +SOCLi_ExecEnableSslCommand: ; 0x0209AA80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _0209AACC ; =SOCLi_EnableSslCallBack + mov r1, r5 + mov r2, #0x1 + bl SOCLi_CreateCommandPacket + movs r1, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + mov r0, r5 + str r4, [r1, #0x10] + bl SOCLi_ExecCommandPacketInRecvPipe + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209AACC: .word SOCLi_EnableSslCallBack + + arm_func_start SOCL_EnableSsl +SOCL_EnableSsl: ; 0x0209AAD0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl SOCL_SocketIsInvalid + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + ldrsb r0, [r5, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _0209AB10 + cmp r0, #0x4 + movne r1, #0x0 +_0209AB10: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r5, #0x0 + mov r1, #0x0 + beq _0209AB3C + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_0209AB3C: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r5 + mov r1, r4 + bl SOCLi_ExecEnableSslCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr diff --git a/arm9/asm/SOC_socl_startup.s b/arm9/asm/SOC_socl_startup.s new file mode 100644 index 00000000..61147b6a --- /dev/null +++ b/arm9/asm/SOC_socl_startup.s @@ -0,0 +1,236 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global SOCLiConfigPtr +SOCLiConfigPtr: ; 0x021C8CC0 + .space 0x4 + + .global SOCLiYieldWait +SOCLiYieldWait: ; 0x021C8CC4 + .space 0x4 + + .global SOCLiRequestedIP +SOCLiRequestedIP: ; 0x021C8CC8 + .space 0x4 + + .global SOCLiDhcpState +SOCLiDhcpState: ; 0x021C8CCC + .space 0x4 + + .global SOCLiUDPSendSocket +SOCLiUDPSendSocket: ; 0x021C8CD0 + .space 0x4 + + .global SOCLiCPSConfig +SOCLiCPSConfig: ; 0x021C8CD4 + .space 0x30 + + .text + + arm_func_start SOCL_LinkIsOn +SOCL_LinkIsOn: ; 0x020975B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCM_GetApMacAddress + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SOCLi_DhcpTimeout +SOCLi_DhcpTimeout: ; 0x020975D8 + ldr r0, _020975EC ; =SOCLiDhcpState + ldr r1, [r0, #0x0] + orr r1, r1, #0x2 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020975EC: .word SOCLiDhcpState + + arm_func_start SOCLi_SetMyIP +SOCLi_SetMyIP: ; 0x020975F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02097654 ; =SOCLiConfigPtr + ldr r0, _02097658 ; =SOCLiDhcpState + ldr lr, [r1, #0x0] + ldr r3, [r0, #0x0] + ldr r12, [lr, #0x4] + ldr r2, _0209765C ; =CPSMyIp + ldr r1, _02097660 ; =CPSNetMask + str r12, [r2, #0x0] + ldr r12, [lr, #0x8] + ldr r2, _02097664 ; =CPSGatewayIp + str r12, [r1, #0x0] + ldr r12, [lr, #0xc] + ldr r1, _02097668 ; =CPSDnsIp + str r12, [r2, #0x0] + ldr r12, [lr, #0x10] + orr r2, r3, #0x2 + str r12, [r1, #0x0] + ldr r3, [lr, #0x14] + str r3, [r1, #0x4] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097654: .word SOCLiConfigPtr +_02097658: .word SOCLiDhcpState +_0209765C: .word CPSMyIp +_02097660: .word CPSNetMask +_02097664: .word CPSGatewayIp +_02097668: .word CPSDnsIp + + arm_func_start SOCLi_StartupCPS +SOCLi_StartupCPS: ; 0x0209766C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020977C0 ; =SOCLiConfigPtr + ldr r5, _020977C4 ; =SOCLiCPSConfig + ldr r4, [r0, #0x0] + mov r0, r5 + mov r1, #0x0 + mov r2, #0x30 + bl MI_CpuFill8 + ldr r0, _020977C8 ; =SOCLiYieldWait + ldr r2, [r4, #0x18] + mov r1, r5 + str r2, [r1, #0x4] + ldr r12, [r4, #0x1c] + mov r2, #0x0 + ldr r3, _020977CC ; =SOCL_LinkIsOn + ldr r0, [r0, #0x0] + str r12, [r1, #0x8] + str r3, [r1, #0x10] + str r2, [r1, #0x14] + str r2, [r1, #0x18] + str r0, [r1, #0x2c] + ldr r0, [r4, #0x24] + cmp r0, #0x0 + strne r0, [r5, #0x20] + moveq r0, #0x4000 + streq r0, [r5, #0x20] + ldr r0, [r4, #0x28] + cmp r0, #0x0 + strne r0, [r5, #0x1c] + bne _02097700 + ldr r1, _020977C0 ; =SOCLiConfigPtr + ldr r0, [r5, #0x20] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + str r0, [r5, #0x1c] +_02097700: + ldr r0, [r4, #0x30] + ldr r12, [r4, #0x34] + cmp r0, #0x0 + moveq r0, #0x240 + cmp r12, #0x0 + sub r2, r0, #0x28 + moveq r12, #0x10c0 + add r0, r12, r12, lsr #0x1f + str r2, [r5, #0x24] + ldr r1, _020977D0 ; =SOCLSocketParamTCP + mov r3, r0, asr #0x1 + ldr r0, _020977D4 ; =CPSMyIp + mov r2, #0x0 + strh r12, [r1, #0x2] + strh r3, [r1, #0x4] + str r2, [r0, #0x0] + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02097774 + ldr r0, _020977D8 ; =SOCLiDhcpState + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r1, _020977DC ; =SOCLi_DhcpTimeout + str r2, [r5, #0x0] + ldr r0, _020977E0 ; =SOCLiRequestedIP + str r1, [r5, #0xc] + ldr r0, [r0, #0x0] + str r0, [r5, #0x28] + b _0209778C +_02097774: + ldr r0, _020977D8 ; =SOCLiDhcpState + mov r1, #0x1 + str r2, [r0, #0x0] + ldr r0, _020977E4 ; =SOCLi_SetMyIP + str r1, [r5, #0x0] + str r0, [r5, #0xc] +_0209778C: + ldr r0, [r4, #0x2c] + cmp r0, #0x0 + moveq r0, #0xb + bl CPS_SetThreadPriority + ldr r0, _020977E8 ; =CPSi_RecvCallbackFunc + bl WCM_SetRecvDCFCallback + ldr r0, _020977EC ; =SOCLi_TrashSocket + bl CPS_SetScavengerCallback + mov r0, r5 + bl CPS_Startup + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020977C0: .word SOCLiConfigPtr +_020977C4: .word SOCLiCPSConfig +_020977C8: .word SOCLiYieldWait +_020977CC: .word SOCL_LinkIsOn +_020977D0: .word SOCLSocketParamTCP +_020977D4: .word CPSMyIp +_020977D8: .word SOCLiDhcpState +_020977DC: .word SOCLi_DhcpTimeout +_020977E0: .word SOCLiRequestedIP +_020977E4: .word SOCLi_SetMyIP +_020977E8: .word CPSi_RecvCallbackFunc +_020977EC: .word SOCLi_TrashSocket + + arm_func_start SOCLi_StartupSOCL +SOCLi_StartupSOCL: ; 0x020977F0 + stmdb sp!, {r4,lr} + ldr r0, _02097828 ; =SOCLiConfigPtr + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x20] + bl SOCLi_StartupCommandPacketQueue + movs r4, r0 + bmi _0209781C + ldr r0, _0209782C ; =SOCLSocketParamUDPSend + bl SOCL_CreateSocket + ldr r1, _02097830 ; =SOCLiUDPSendSocket + str r0, [r1, #0x0] +_0209781C: + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097828: .word SOCLiConfigPtr +_0209782C: .word SOCLSocketParamUDPSend +_02097830: .word SOCLiUDPSendSocket + + .extern _SDK_NintendoWiFi + + arm_func_start SOCL_Startup +SOCL_Startup: ; 0x02097834 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _02097870 ; =_SDK_NintendoWiFi + bl OSi_ReferSymbol + ldr r0, _02097874 ; =SOCLiConfigPtr + ldr r1, [r0, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + str r4, [r0, #0x0] + bl SOCLi_StartupCPS + bl SOCLi_StartupSOCL + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097870: .word _SDK_NintendoWiFi +_02097874: .word SOCLiConfigPtr diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s index f0a9d36e..e514c486 100644 --- a/arm9/asm/libVCT.s +++ b/arm9/asm/libVCT.s @@ -5619,8 +5619,8 @@ _020A87B0: .word FUN_020A85F0 _020A87B4: .word UNK_021CA874 _020A87B8: .word UNK_021CA870 - arm_func_start FUN_020A87BC -FUN_020A87BC: ; 0x020A87BC + arm_func_start WCM_SetRecvDCFCallback +WCM_SetRecvDCFCallback: ; 0x020A87BC stmdb sp!, {r4,lr} mov r4, r0 bl OS_DisableInterrupts @@ -5665,8 +5665,8 @@ _020A8830: .balign 4 _020A884C: .word 0x0000214C - arm_func_start FUN_020A8850 -FUN_020A8850: + arm_func_start WCM_GetApMacAddress +WCM_GetApMacAddress: stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, #0x0 diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index f95f89a5..185f3505 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -86,30 +86,6 @@ UNK_0210619C: ; 0x0210619C .byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 .byte 0x00, 0x00, 0x00, 0x00 - .balign 4, 0 - .global UNK_021061C0 -UNK_021061C0: ; 0x021061C0 - .word -26 - - .global UNK_021061C4 -UNK_021061C4: ; 0x021061C4 - .byte 0x01, 0x01, 0xC0, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 - .byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021061DC -UNK_021061DC: ; 0x021061DC - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00 - .byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x08, 0x0D, 0x20 - - .global UNK_021061F4 -UNK_021061F4: ; 0x021061F4 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x06, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x20 - - .global UNK_0210620C -UNK_0210620C: ; 0x0210620C - .byte 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x00 - .section .bss .global UNK_021C8C78 @@ -148,82 +124,6 @@ UNK_021C8C90: ; 0x021C8C90 UNK_021C8CA0: ; 0x021C8CA0 .space 0x20 - .global UNK_021C8CC0 -UNK_021C8CC0: ; 0x021C8CC0 - .space 0x4 - - .global UNK_021C8CC4 -UNK_021C8CC4: ; 0x021C8CC4 - .space 0x4 - - .global UNK_021C8CC8 -UNK_021C8CC8: ; 0x021C8CC8 - .space 0x4 - - .global UNK_021C8CCC -UNK_021C8CCC: ; 0x021C8CCC - .space 0x4 - - .global UNK_021C8CD0 -UNK_021C8CD0: ; 0x021C8CD0 - .space 0x4 - - .global UNK_021C8CD4 -UNK_021C8CD4: ; 0x021C8CD4 - .space 0x30 - - .global UNK_021C8D04 -UNK_021C8D04: ; 0x021C8D04 - .space 0x4 - - .global UNK_021C8D08 -UNK_021C8D08: ; 0x021C8D08 - .space 0x20 - - .global UNK_021C8D28 -UNK_021C8D28: ; 0x021C8D28 - .space 0x8 - - .global UNK_021C8D30 -UNK_021C8D30: ; 0x021C8D30 - .space 0x4 - - .global UNK_021C8D34 -UNK_021C8D34: ; 0x021C8D34 - .space 0x4 - - .global UNK_021C8D38 -UNK_021C8D38: ; 0x021C8D38 - .space 0x4 - - .global UNK_021C8D3C -UNK_021C8D3C: ; 0x021C8D3C - .space 0x4 - - .global UNK_021C8D40 -UNK_021C8D40: ; 0x021C8D40 - .space 0x4 - - .global UNK_021C8D44 -UNK_021C8D44: ; 0x021C8D44 - .space 0x8 - - .global UNK_021C8D4C -UNK_021C8D4C: ; 0x021C8D4C - .space 0x10 - - .global UNK_021C8D5C -UNK_021C8D5C: ; 0x021C8D5C - .space 0x10 - - .global UNK_021C8D6C -UNK_021C8D6C: ; 0x021C8D6C - .space 0x38 - - .global UNK_021C8DA4 -UNK_021C8DA4: ; 0x021C8DA4 - .space 0x104 - .text ; Nintendo DWC @@ -7516,4029 +7416,3 @@ FUN_02097588: ; 0x02097588 str r1, [r0, #0x0] mov r0, #0x1 bx lr - - arm_func_start FUN_020975B4 -FUN_020975B4: ; 0x020975B4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020A8850 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020975D8 -FUN_020975D8: ; 0x020975D8 - ldr r0, _020975EC ; =UNK_021C8CCC - ldr r1, [r0, #0x0] - orr r1, r1, #0x2 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020975EC: .word UNK_021C8CCC - - arm_func_start FUN_020975F0 -FUN_020975F0: ; 0x020975F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _02097654 ; =UNK_021C8CC0 - ldr r0, _02097658 ; =UNK_021C8CCC - ldr lr, [r1, #0x0] - ldr r3, [r0, #0x0] - ldr r12, [lr, #0x4] - ldr r2, _0209765C ; =CPSMyIp - ldr r1, _02097660 ; =CPSNetMask - str r12, [r2, #0x0] - ldr r12, [lr, #0x8] - ldr r2, _02097664 ; =CPSGatewayIp - str r12, [r1, #0x0] - ldr r12, [lr, #0xc] - ldr r1, _02097668 ; =CPSDnsIp - str r12, [r2, #0x0] - ldr r12, [lr, #0x10] - orr r2, r3, #0x2 - str r12, [r1, #0x0] - ldr r3, [lr, #0x14] - str r3, [r1, #0x4] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02097654: .word UNK_021C8CC0 -_02097658: .word UNK_021C8CCC -_0209765C: .word CPSMyIp -_02097660: .word CPSNetMask -_02097664: .word CPSGatewayIp -_02097668: .word CPSDnsIp - - arm_func_start FUN_0209766C -FUN_0209766C: ; 0x0209766C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020977C0 ; =UNK_021C8CC0 - ldr r5, _020977C4 ; =UNK_021C8CD4 - ldr r4, [r0, #0x0] - mov r0, r5 - mov r1, #0x0 - mov r2, #0x30 - bl MI_CpuFill8 - ldr r0, _020977C8 ; =UNK_021C8CC4 - ldr r2, [r4, #0x18] - mov r1, r5 - str r2, [r1, #0x4] - ldr r12, [r4, #0x1c] - mov r2, #0x0 - ldr r3, _020977CC ; =FUN_020975B4 - ldr r0, [r0, #0x0] - str r12, [r1, #0x8] - str r3, [r1, #0x10] - str r2, [r1, #0x14] - str r2, [r1, #0x18] - str r0, [r1, #0x2c] - ldr r0, [r4, #0x24] - cmp r0, #0x0 - strne r0, [r5, #0x20] - moveq r0, #0x4000 - streq r0, [r5, #0x20] - ldr r0, [r4, #0x28] - cmp r0, #0x0 - strne r0, [r5, #0x1c] - bne _02097700 - ldr r1, _020977C0 ; =UNK_021C8CC0 - ldr r0, [r5, #0x20] - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x18] - blx r1 - str r0, [r5, #0x1c] -_02097700: - ldr r0, [r4, #0x30] - ldr r12, [r4, #0x34] - cmp r0, #0x0 - moveq r0, #0x240 - cmp r12, #0x0 - sub r2, r0, #0x28 - moveq r12, #0x10c0 - add r0, r12, r12, lsr #0x1f - str r2, [r5, #0x24] - ldr r1, _020977D0 ; =UNK_021061DC - mov r3, r0, asr #0x1 - ldr r0, _020977D4 ; =CPSMyIp - mov r2, #0x0 - strh r12, [r1, #0x2] - strh r3, [r1, #0x4] - str r2, [r0, #0x0] - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _02097774 - ldr r0, _020977D8 ; =UNK_021C8CCC - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r1, _020977DC ; =FUN_020975D8 - str r2, [r5, #0x0] - ldr r0, _020977E0 ; =UNK_021C8CC8 - str r1, [r5, #0xc] - ldr r0, [r0, #0x0] - str r0, [r5, #0x28] - b _0209778C -_02097774: - ldr r0, _020977D8 ; =UNK_021C8CCC - mov r1, #0x1 - str r2, [r0, #0x0] - ldr r0, _020977E4 ; =FUN_020975F0 - str r1, [r5, #0x0] - str r0, [r5, #0xc] -_0209778C: - ldr r0, [r4, #0x2c] - cmp r0, #0x0 - moveq r0, #0xb - bl CPS_SetThreadPriority - ldr r0, _020977E8 ; =CPSi_RecvCallbackFunc - bl FUN_020A87BC - ldr r0, _020977EC ; =FUN_020996C0 - bl CPS_SetScavengerCallback - mov r0, r5 - bl CPS_Startup - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020977C0: .word UNK_021C8CC0 -_020977C4: .word UNK_021C8CD4 -_020977C8: .word UNK_021C8CC4 -_020977CC: .word FUN_020975B4 -_020977D0: .word UNK_021061DC -_020977D4: .word CPSMyIp -_020977D8: .word UNK_021C8CCC -_020977DC: .word FUN_020975D8 -_020977E0: .word UNK_021C8CC8 -_020977E4: .word FUN_020975F0 -_020977E8: .word CPSi_RecvCallbackFunc -_020977EC: .word FUN_020996C0 - - arm_func_start FUN_020977F0 -FUN_020977F0: ; 0x020977F0 - stmdb sp!, {r4,lr} - ldr r0, _02097828 ; =UNK_021C8CC0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x20] - bl FUN_02097B78 - movs r4, r0 - bmi _0209781C - ldr r0, _0209782C ; =UNK_021061F4 - bl FUN_02097F70 - ldr r1, _02097830 ; =UNK_021C8CD0 - str r0, [r1, #0x0] -_0209781C: - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02097828: .word UNK_021C8CC0 -_0209782C: .word UNK_021061F4 -_02097830: .word UNK_021C8CD0 - - .extern _SDK_NintendoWiFi - - arm_func_start FUN_02097834 -FUN_02097834: ; 0x02097834 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _02097870 ; =_SDK_NintendoWiFi - bl OSi_ReferSymbol - ldr r0, _02097874 ; =UNK_021C8CC0 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,lr} - bxne lr - str r4, [r0, #0x0] - bl FUN_0209766C - bl FUN_020977F0 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02097870: .word _SDK_NintendoWiFi -_02097874: .word UNK_021C8CC0 - - ; Ubiquitous CPS (?) - - arm_func_start FUN_02097878 -FUN_02097878: ; 0x02097878 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - add r6, sp, #0x0 - mov r4, #0x0 - mov r5, #0x1 -_02097890: - mov r0, r9 - mov r1, r6 - mov r2, r5 - bl OS_ReadMessage - ldr r0, [sp, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,lr} - bxeq lr - ldr r1, [r0, #0x0] - blx r1 - mov r7, r0 - bl OS_DisableInterrupts - mov r8, r0 - bl OS_DisableScheduler - mov r0, r9 - mov r1, r4 - mov r2, r4 - bl OS_ReceiveMessage - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x4] - cmp r0, #0x0 - strne r7, [r0, #0x6c] - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _02097908 - mov r1, r7 - mov r2, r4 - bl OS_SendMessage -_02097908: - ldr r0, [sp, #0x0] - bl FUN_02097A64 - bl OS_EnableScheduler - mov r0, r8 - bl OS_RestoreInterrupts - b _02097890 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_0209792C -FUN_0209792C: ; 0x0209792C - stmdb sp!, {r4,lr} - mov r4, r1 - bl FUN_02097A50 - mov r1, r4 - bl FUN_02097968 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_02097948 -FUN_02097948: - ldr ip, _02097954 ; =FUN_02097968 - ldr r0, [r0, #0x68] - bx r12 - .balign 4 -_02097954: .word FUN_02097968 - - arm_func_start FUN_02097958 -FUN_02097958: ; 0x02097958 - ldr ip, _02097964 ; =FUN_02097968 - ldr r0, [r0, #0x64] - bx r12 - .balign 4 -_02097964: .word FUN_02097968 - - arm_func_start FUN_02097968 -FUN_02097968: ; 0x02097968 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x2c - mov r4, r1 - ldrsb r2, [r4, #0xd] - mov r5, r0 - cmp r2, #0x1 - bne _020979BC - add r0, sp, #0x8 - add r1, sp, #0x4 - mov r2, #0x1 - bl OS_InitMessageQueue - add r2, sp, #0x8 - mov r0, r5 - mov r1, r4 - str r2, [r4, #0x8] - bl FUN_020979F8 - add r0, sp, #0x8 - add r1, sp, #0x0 - mov r2, #0x1 - bl OS_ReceiveMessage - b _020979CC -_020979BC: - mov r2, #0x0 - str r2, [r4, #0x8] - bl FUN_020979F8 - str r0, [sp, #0x0] -_020979CC: - ldr r0, [sp, #0x0] - add sp, sp, #0x2c - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020979DC -FUN_020979DC: - stmdb sp!, {r4,lr} - mov r4, r1 - bl FUN_02097A50 - mov r1, r4 - bl FUN_020979F8 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020979F8 -FUN_020979F8: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r5, r1 - beq _02097A14 - ldrsb r1, [r5, #0xd] - ands r1, r1, #0x1 - beq _02097A1C -_02097A14: - mov r2, #0x1 - b _02097A20 -_02097A1C: - mov r2, #0x0 -_02097A20: - mov r1, r5 - bl OS_SendMessage - movs r4, r0 - bne _02097A38 - mov r0, r5 - bl FUN_02097A64 -_02097A38: - cmp r4, #0x0 - movne r0, #0x0 - mvneq r0, #0x29 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_02097A50 -FUN_02097A50: ; 0x02097A50 - ldr r1, [r0, #0x64] - cmp r1, #0x0 - ldreq r1, [r0, #0x68] - mov r0, r1 - bx lr - - arm_func_start FUN_02097A64 -FUN_02097A64: - stmdb sp!, {lr} - sub sp, sp, #0x4 - movs r1, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldr r0, _02097A94 ; =UNK_021C8D08 - mov r2, #0x0 - bl OS_SendMessage - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02097A94: .word UNK_021C8D08 - - arm_func_start FUN_02097A98 -FUN_02097A98: ; 0x02097A98 - stmdb sp!, {r4-r6,lr} - mov r4, r2 - mov r6, r0 - mov r0, r4 - mov r5, r1 - bl FUN_02097AE0 - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - str r6, [r0, #0x0] - str r5, [r0, #0x4] - mov r1, #0x0 - str r1, [r0, #0x8] - ldrsb r1, [r5, #0x73] - strb r1, [r0, #0xc] - strb r4, [r0, #0xd] - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_02097AE0 -FUN_02097AE0: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r0 - ldr r0, _02097B10 ; =UNK_021C8D08 - add r1, sp, #0x0 - bl OS_ReceiveMessage - cmp r0, #0x0 - ldrne r0, [sp, #0x0] - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02097B10: .word UNK_021C8D08 - - arm_func_start FUN_02097B14 -FUN_02097B14: ; 0x02097B14 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _02097B6C ; =UNK_021C8D08 - ldr r1, [r0, #0x1c] - ldr r0, [r0, #0x14] - cmp r1, r0 - addlt sp, sp, #0x4 - mvnlt r0, #0x0 - ldmltia sp!, {lr} - bxlt lr - ldr r0, _02097B70 ; =UNK_021C8CC0 - ldr r1, _02097B74 ; =UNK_021C8D04 - ldr r2, [r0, #0x0] - ldr r0, [r1, #0x0] - ldr r1, [r2, #0x1c] - blx r1 - ldr r1, _02097B74 ; =UNK_021C8D04 - mov r0, #0x0 - str r0, [r1, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02097B6C: .word UNK_021C8D08 -_02097B70: .word UNK_021C8CC0 -_02097B74: .word UNK_021C8D04 - - arm_func_start FUN_02097B78 -FUN_02097B78: ; 0x02097B78 - stmdb sp!, {r4-r6,lr} - mov r4, r0 - mov r0, #0x2c - mul r1, r4, r0 - ldr r0, _02097C08 ; =UNK_021C8CC0 - mov r2, r4, lsl #0x2 - add r2, r2, #0x3 - ldr r0, [r0, #0x0] - add r1, r1, #0x3 - bic r5, r2, #0x3 - bic r2, r1, #0x3 - ldr r1, [r0, #0x18] - add r0, r2, r5 - blx r1 - movs r6, r0 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r0, _02097C0C ; =UNK_021C8D08 - mov r1, r6 - mov r2, r4 - bl OS_InitMessageQueue - cmp r4, #0x0 - add r5, r6, r5 - ble _02097BF4 -_02097BDC: - mov r0, r5 - bl FUN_02097A64 - sub r4, r4, #0x1 - cmp r4, #0x0 - add r5, r5, #0x2c - bgt _02097BDC -_02097BF4: - ldr r1, _02097C10 ; =UNK_021C8D04 - mov r0, #0x0 - str r6, [r1, #0x0] - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_02097C08: .word UNK_021C8CC0 -_02097C0C: .word UNK_021C8D08 -_02097C10: .word UNK_021C8D04 - - arm_func_start FUN_02097C14 -FUN_02097C14: ; 0x02097C14 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r5, r2 - mov r7, r0 - mov r0, r5 - mov r6, r1 - bl FUN_02097DC4 - add r4, r7, r0 - ldrb r2, [r5, #0x3] - mov r0, r6 - mov r1, r7 - bl OS_InitMessageQueue - add r0, r6, #0xe0 - bl OS_InitMutex - ldrh r2, [r5, #0x0] - add r0, r6, #0x20 - ldr r1, _02097C88 ; =FUN_02097878 - str r2, [sp, #0x0] - ldrb r12, [r5, #0x2] - mov r2, r6 - mov r3, r4 - str r12, [sp, #0x4] - bl OS_CreateThread - add r0, r6, #0x20 - bl OS_WakeupThreadDirect - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02097C88: .word FUN_02097878 - - arm_func_start FUN_02097C8C -FUN_02097C8C: ; 0x02097C8C - stmdb sp!, {r4,lr} - mov r4, r0 - cmp r2, #0x0 - moveq r0, #0x0 - str r0, [r1, #0x4] - mov r0, r2 - str r2, [r1, #0x0] - bl FUN_02099F6C - add r0, r4, r0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_02097CB8 -FUN_02097CB8: ; 0x02097CB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldrsb r1, [r6, #0x0] - mov r7, r0 - add r4, r7, #0x80 - strb r1, [r7, #0x73] - ldrsb r0, [r6, #0x1] - strb r0, [r7, #0x72] - ldrh r0, [r6, #0x2] - cmp r0, #0x0 - beq _02097D40 - str r4, [r7, #0x64] - ldrh r2, [r6, #0x4] - mov r1, r4 - add r0, r4, #0x114 - strh r2, [r4, #0xfc] - add r2, r6, #0x10 - mov r5, r4 - bl FUN_02097C14 - ldrh r2, [r6, #0x2] - add r1, r7, #0x3c - bl FUN_02097C8C - ldrh r2, [r6, #0x8] - add r1, r7, #0x50 - bl FUN_02097C8C - ldrh r3, [r6, #0xe] - add r1, r5, #0x100 - mov r2, #0x0 - strh r3, [r1, #0xa] - str r2, [r5, #0x110] - ldr r1, [r5, #0x110] - mov r4, r0 - str r1, [r5, #0x10c] -_02097D40: - ldrh r0, [r6, #0x6] - cmp r0, #0x0 - ldreq r0, _02097DC0 ; =UNK_021C8CD0 - ldreq r0, [r0, #0x0] - ldreq r0, [r0, #0x68] - streq r0, [r7, #0x68] - beq _02097DB0 - str r4, [r7, #0x68] - mov r1, r4 - str r7, [r4, #0x10c] - add r0, r4, #0x110 - add r2, r6, #0x14 - mov r5, r4 - bl FUN_02097C14 - ldrh r2, [r6, #0x6] - add r1, r7, #0x48 - bl FUN_02097C8C - ldrh r2, [r6, #0xa] - add r1, r7, #0x58 - bl FUN_02097C8C - ldrh r2, [r6, #0xc] - add r1, r4, #0xf8 - bl FUN_02097C8C - mov r1, #0x0 - str r1, [r5, #0x108] - ldr r1, [r5, #0x108] - mov r4, r0 - str r1, [r5, #0x104] -_02097DB0: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02097DC0: .word UNK_021C8CD0 - - arm_func_start FUN_02097DC4 -FUN_02097DC4: ; 0x02097DC4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r0, [r5, #0x3] - mov r0, r0, lsl #0x2 - bl FUN_02099F6C - mov r4, r0 - ldrh r0, [r5, #0x0] - bl FUN_02099F6C - add r0, r4, r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_02097DF8 -FUN_02097DF8: ; 0x02097DF8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x2] - mov r4, #0x80 - cmp r0, #0x0 - beq _02097E38 - add r4, r4, #0x114 - bl FUN_02099F6C - add r4, r4, r0 - ldrh r0, [r5, #0x8] - bl FUN_02099F6C - add r4, r4, r0 - add r0, r5, #0x10 - bl FUN_02097DC4 - add r4, r4, r0 -_02097E38: - ldrh r0, [r5, #0x6] - cmp r0, #0x0 - beq _02097E74 - add r4, r4, #0x110 - bl FUN_02099F6C - add r4, r4, r0 - ldrh r0, [r5, #0xa] - bl FUN_02099F6C - add r4, r4, r0 - ldrh r0, [r5, #0xc] - bl FUN_02099F6C - add r4, r4, r0 - add r0, r5, #0x14 - bl FUN_02097DC4 - add r4, r4, r0 -_02097E74: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_02097E84 -FUN_02097E84: ; 0x02097E84 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_02097DF8 - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _02097EF4 ; =UNK_021C8CC0 - mov r5, r0 - ldr r1, [r1, #0x0] - mov r0, r4 - ldr r1, [r1, #0x18] - blx r1 - movs r6, r0 - beq _02097EDC - mov r2, r4 - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r7 - bl FUN_02097CB8 - mov r0, r6 - bl FUN_0209A094 -_02097EDC: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02097EF4: .word UNK_021C8CC0 - - arm_func_start FUN_02097EF8 -FUN_02097EF8: ; 0x02097EF8 - stmdb sp!, {r4,lr} - ldr r4, [r0, #0x4] - mov r0, r4 - bl CPS_SocRegister - ldrsb r0, [r4, #0x73] - ldr r1, [r4, #0x68] - cmp r0, #0x4 - addls pc, pc, r0, lsl #0x2 - b _02097F58 -_02097F1C: - b _02097F30 -_02097F20: - b _02097F40 -_02097F24: - b _02097F54 -_02097F28: - b _02097F58 -_02097F2C: - b _02097F30 -_02097F30: - add r0, r1, #0x20 - bl CPS_SocDup - bl CPS_SocUse - b _02097F58 -_02097F40: - bl CPS_SocUse - bl CPS_SocDatagramMode - ldr r0, _02097F6C ; =FUN_02098550 - bl CPS_SetUdpCallback - b _02097F58 -_02097F54: - bl CPS_SocDatagramMode -_02097F58: - mov r0, #0x1 - strh r0, [r4, #0x70] - mov r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02097F6C: .word FUN_02098550 - - arm_func_start FUN_02097F70 -FUN_02097F70: ; 0x02097F70 - stmdb sp!, {r4,lr} - bl FUN_02097E84 - movs r4, r0 - mvneq r0, #0x30 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r0, _02097FB0 ; =FUN_02097EF8 - mov r1, r4 - mov r2, #0x1 - bl FUN_02097A98 - mov r1, r0 - mov r0, r4 - bl FUN_0209792C - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02097FB0: .word FUN_02097EF8 - - arm_func_start FUN_02097FB4 -FUN_02097FB4: ; 0x02097FB4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - ldr r4, [r6, #0x4] - ldr r5, [r4, #0x64] - add r0, r5, #0xe0 - bl OS_LockMutex - mov r1, #0x0 - ldrh r0, [r6, #0x10] - mov r2, r1 - bl CPS_SocPingMode - bl CPS_TcpListen - mov r2, #0x0 - add r0, sp, #0x0 - add r1, sp, #0x4 - str r2, [r5, #0xf8] - bl CPS_SocWho - ldrh r2, [sp, #0x0] - ldr r1, [r6, #0x14] - strh r2, [r1, #0x0] - ldr r1, [r6, #0x18] - str r0, [r1, #0x0] - ldrsh r1, [r4, #0x70] - add r0, r5, #0xe0 - orr r1, r1, #0x4 - strh r1, [r4, #0x70] - bl OS_UnlockMutex - mov r0, #0x0 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_02098030 -FUN_02098030: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_02099FA8 - cmp r0, #0x0 - mvnne r0, #0x1b - ldmneia sp!, {r4-r6,lr} - bxne lr - cmp r6, #0x0 - mov r1, #0x0 - beq _0209806C - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_0209806C: - cmp r1, #0x0 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x2 - mvnne r0, #0x1b - ldmneia sp!, {r4-r6,lr} - bxne lr - ldrsb r0, [r6, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _020980A8 - cmp r0, #0x4 - movne r1, #0x0 -_020980A8: - cmp r1, #0x0 - mvneq r0, #0x1b - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrsb r2, [r6, #0x72] - cmp r2, #0x1 - mvnne r0, #0x5 - ldmneia sp!, {r4-r6,lr} - bxne lr - ldrh r0, [r6, #0x74] - cmp r0, #0x0 - mvneq r0, #0x1b - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldr r0, _0209811C ; =FUN_02097FB4 - mov r1, r6 - bl FUN_02097A98 - mov r1, r0 - ldrh r2, [r6, #0x74] - mov r0, r6 - strh r2, [r1, #0x10] - str r5, [r1, #0x14] - str r4, [r1, #0x18] - ldrsh r2, [r6, #0x70] - orr r2, r2, #0x2 - strh r2, [r6, #0x70] - bl FUN_02097958 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_0209811C: .word FUN_02097FB4 - - arm_func_start FUN_02098120 -FUN_02098120: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r7,lr} - bxne lr - cmp r6, #0x0 - mov r1, #0x0 - beq _02098164 - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_02098164: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x2 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrsb r0, [r6, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _020981A8 - cmp r0, #0x4 - movne r1, #0x0 -_020981A8: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x1b - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldrsb r0, [r6, #0x72] - cmp r0, #0x1 - addne sp, sp, #0x4 - mvnne r0, #0x5 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldr r0, _02098228 ; =UNK_021061DC - bl FUN_02097F70 - movs r7, r0 - addmi sp, sp, #0x4 - ldmmiia sp!, {r4-r7,lr} - bxmi lr - ldrh r1, [r6, #0x74] - bl FUN_020984B4 - cmp r0, #0x0 - addlt sp, sp, #0x4 - ldmltia sp!, {r4-r7,lr} - bxlt lr - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl FUN_02098030 - cmp r0, #0x0 - movge r0, r7 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02098228: .word UNK_021061DC - - arm_func_start FUN_0209822C -FUN_0209822C: ; 0x0209822C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_02099FA8 - cmp r0, #0x0 - mvnne r0, #0x1b - ldmneia sp!, {r4,lr} - bxne lr - cmp r4, #0x0 - mov r1, #0x0 - beq _02098260 - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_02098260: - cmp r1, #0x0 - mvneq r0, #0x26 - ldmeqia sp!, {r4,lr} - bxeq lr - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x2 - mvnne r0, #0x1b - ldmneia sp!, {r4,lr} - bxne lr - ldrsb r0, [r4, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _0209829C - cmp r0, #0x4 - movne r1, #0x0 -_0209829C: - cmp r1, #0x0 - mvneq r0, #0x1b - ldmeqia sp!, {r4,lr} - bxeq lr - ldrsb r0, [r4, #0x72] - cmp r0, #0x1 - moveq r0, #0x0 - mvnne r0, #0x5 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020982C4 -FUN_020982C4: ; 0x020982C4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r4, [r7, #0x4] - mov r5, #0x0 - ldr r6, [r4, #0x64] - add r0, r6, #0xe0 - bl OS_LockMutex - ldrh r0, [r7, #0x10] - ldrh r1, [r7, #0x12] - ldr r2, [r7, #0x14] - bl CPS_SocPingMode - mov r0, r5 - str r0, [r6, #0xf8] - ldrsb r0, [r7, #0xc] - cmp r0, #0x0 - beq _02098310 - cmp r0, #0x4 - bne _02098318 -_02098310: - bl CPS_TcpConnect - mov r5, r0 -_02098318: - add r0, r6, #0xe0 - bl OS_UnlockMutex - cmp r5, #0x0 - ldrnesh r1, [r4, #0x70] - mvnne r0, #0x4b - moveq r0, #0x0 - orrne r1, r1, #0x40 - strneh r1, [r4, #0x70] - ldreqsh r1, [r4, #0x70] - orreq r1, r1, #0x4 - streqh r1, [r4, #0x70] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_02098350 -FUN_02098350: ; 0x02098350 - stmdb sp!, {r4,lr} - mov r4, r0 - ldrsb r2, [r4, #0x72] - ldr r0, _020983AC ; =FUN_020982C4 - mov r1, r4 - bl FUN_02097A98 - movs r1, r0 - mvneq r0, #0x20 - ldmeqia sp!, {r4,lr} - bxeq lr - ldrh r2, [r4, #0x74] - mov r0, r4 - strh r2, [r1, #0x10] - ldrh r2, [r4, #0x76] - strh r2, [r1, #0x12] - ldr r2, [r4, #0x78] - str r2, [r1, #0x14] - ldrsh r2, [r4, #0x70] - orr r2, r2, #0x2 - strh r2, [r4, #0x70] - bl FUN_02097958 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020983AC: .word FUN_020982C4 - - arm_func_start FUN_020983B0 -FUN_020983B0: ; 0x020983B0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_02099FA8 - cmp r0, #0x0 - bne _020983D8 - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x8 - beq _020983E4 -_020983D8: - mvn r0, #0x1b - ldmia sp!, {r4-r6,lr} - bx lr -_020983E4: - cmp r6, #0x0 - mov r1, #0x0 - beq _020983FC - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_020983FC: - cmp r1, #0x0 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - ldrsb r0, [r6, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _02098424 - cmp r0, #0x4 - movne r1, #0x0 -_02098424: - cmp r1, #0x0 - beq _0209849C - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x4 - beq _02098450 - ldrsb r0, [r6, #0x72] - cmp r0, #0x1 - mvneq r0, #0x1d - movne r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr -_02098450: - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x2 - beq _02098478 - ldrsh r0, [r6, #0x70] - ands r0, r0, #0x40 - ldrne r0, [r6, #0x6c] - ldreq r0, _020984B0 ; =UNK_021061C0 - ldreq r0, [r0, #0x0] - ldmia sp!, {r4-r6,lr} - bx lr -_02098478: - strh r5, [r6, #0x76] - mov r0, r6 - str r4, [r6, #0x78] - bl FUN_02098350 - ldrsb r1, [r6, #0x72] - cmp r1, #0x1 - mvnne r0, #0x19 - ldmia sp!, {r4-r6,lr} - bx lr -_0209849C: - strh r5, [r6, #0x76] - str r4, [r6, #0x78] - mov r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020984B0: .word UNK_021061C0 - - arm_func_start FUN_020984B4 -FUN_020984B4: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - mov r5, r1 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r5,lr} - bxne lr - cmp r4, #0x0 - mov r1, #0x0 - beq _020984F4 - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_020984F4: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x2 - addne sp, sp, #0x4 - mvnne r0, #0x6 - ldmneia sp!, {r4-r5,lr} - bxne lr - strh r5, [r4, #0x74] - ldrsb r0, [r4, #0x73] - cmp r0, #0x1 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r5,lr} - bxne lr - mov r0, r4 - bl FUN_02098350 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_02098550 -FUN_02098550: ; 0x02098550 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r2 - ldr r6, [r7, #0x64] - mov r9, r0 - mov r8, r1 - bl OS_DisableInterrupts - add r1, r6, #0x100 - ldrh r2, [r1, #0x8] - ldrh r1, [r1, #0xa] - mov r4, r0 - add r0, r2, r8 - cmp r1, r0 - blo _02098618 - ldr r1, _02098668 ; =UNK_021C8CC0 - add r0, r8, #0xc - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x18] - blx r1 - movs r5, r0 - beq _02098604 - add r1, r6, #0x100 - ldrh r3, [r1, #0x8] - mov r2, #0x0 - mov r0, r9 - add r3, r3, r8 - strh r3, [r1, #0x8] - str r2, [r5, #0x0] - strh r8, [r5, #0x4] - ldrh r3, [r7, #0x18] - mov r2, r8 - add r1, r5, #0xc - strh r3, [r5, #0x6] - ldr r3, [r7, #0x1c] - str r3, [r5, #0x8] - bl MI_CpuCopy8 - ldr r0, [r6, #0x100] - cmp r0, #0x0 - ldrne r0, [r6, #0x100] - strne r5, [r0, #0x0] - str r5, [r6, #0x100] - ldr r0, [r6, #0x104] - cmp r0, #0x0 - streq r5, [r6, #0x104] - b _02098628 -_02098604: - ldr r0, _0209866C ; =UNK_021C8D28 - ldr r1, [r0, #0x0] - add r1, r1, #0x1 - str r1, [r0, #0x0] - b _02098628 -_02098618: - ldr r0, _0209866C ; =UNK_021C8D28 - ldr r1, [r0, #0x4] - add r1, r1, #0x1 - str r1, [r0, #0x4] -_02098628: - ldrh r0, [r7, #0x74] - cmp r0, #0x0 - ldreqh r0, [r7, #0xa] - streqh r0, [r7, #0x74] - ldrh r1, [r7, #0x1a] - add r0, r6, #0x10c - strh r1, [r7, #0x18] - ldr r1, [r7, #0x20] - str r1, [r7, #0x1c] - bl OS_WakeupThread - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_02098668: .word UNK_021C8CC0 -_0209866C: .word UNK_021C8D28 - - arm_func_start FUN_02098670 -FUN_02098670: ; 0x02098670 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r9, [r10, #0x64] - str r1, [sp, #0x0] - ldr r0, [r9, #0x104] - str r2, [sp, #0x4] - str r3, [sp, #0x8] - bl OS_DisableInterrupts - ldr r8, [r9, #0x104] - str r0, [sp, #0xc] - cmp r8, #0x0 - bne _02098710 - ldr r0, [sp, #0x3c] - and r7, r0, #0x1 - add r6, r9, #0x10c - mov r4, #0x1 - mov r5, #0x0 -_020986B8: - cmp r7, #0x0 - mvneq r11, #0x5 - beq _02098710 - mov r0, r6 - bl OS_SleepThread - mov r0, r10 - bl FUN_02099FA8 - cmp r0, #0x0 - bne _020986FC - mov r1, r5 - cmp r10, #0x0 - beq _020986F4 - ldrsh r0, [r10, #0x70] - ands r0, r0, #0x1 - movne r1, r4 -_020986F4: - cmp r1, #0x0 - bne _02098704 -_020986FC: - mvn r11, #0x37 - b _02098710 -_02098704: - ldr r8, [r9, #0x104] - cmp r8, #0x0 - beq _020986B8 -_02098710: - cmp r8, #0x0 - beq _020987A4 - ldrh r1, [r8, #0x4] - ldr r0, [sp, #0x4] - cmp r0, r1 - strgt r1, [sp, #0x4] - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x4] - add r0, r8, #0xc - bl MI_CpuCopy8 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - ldrneh r1, [r8, #0x6] - strneh r1, [r0, #0x0] - ldr r1, [sp, #0x38] - cmp r1, #0x0 - ldrne r0, [r8, #0x8] - strne r0, [r1, #0x0] - ldrsb r0, [r9, #0xfe] - ldrh r11, [r8, #0x4] - cmp r0, #0x0 - bne _020987A4 - ldr r0, [r8, #0x0] - ldr r1, _020987BC ; =UNK_021C8CC0 - str r0, [r9, #0x104] - ldr r0, [r8, #0x0] - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r9, #0x100] - ldr r1, [r1, #0x0] - mov r0, r8 - ldr r1, [r1, #0x1c] - blx r1 - add r0, r9, #0x100 - ldrh r1, [r0, #0x8] - sub r1, r1, r11 - strh r1, [r0, #0x8] -_020987A4: - ldr r0, [sp, #0xc] - bl OS_RestoreInterrupts - mov r0, r11 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020987BC: .word UNK_021C8CC0 - - arm_func_start FUN_020987C0 -FUN_020987C0: ; 0x020987C0 - stmdb sp!, {r4-r6,lr} - ldr r6, [r0, #0x64] - bl OS_DisableInterrupts - ldr r4, [r6, #0xf8] - mov r5, r0 - cmp r4, #0x0 - beq _020987EC - mov r1, #0x0 - mov r0, r4 - str r1, [r6, #0xf8] - bl CPS_SocConsume -_020987EC: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_02098800 -FUN_02098800: ; 0x02098800 - ldr ip, _0209880C ; =FUN_020987C0 - ldr r0, [r0, #0x4] - bx r12 - .balign 4 -_0209880C: .word FUN_020987C0 - - arm_func_start FUN_02098810 -FUN_02098810: - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x64] - ldrh r0, [r1, #0xfc] - ldr r1, [r1, #0xf8] - cmp r1, r0 - movlt r0, #0x0 - ldmltia sp!, {r4,lr} - bxlt lr - ldr r0, _02098864 ; =FUN_02098800 - mov r1, r4 - mov r2, #0x0 - bl FUN_02097A98 - movs r1, r0 - mvneq r0, #0x20 - ldmeqia sp!, {r4,lr} - bxeq lr - mov r0, r4 - bl FUN_02097958 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02098864: .word FUN_02098800 - - arm_func_start FUN_02098868 -FUN_02098868: ; 0x02098868 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - ldr r9, [r0, #0x4] - ldr r1, [r0, #0x10] - ldr r8, [r9, #0x64] - str r1, [sp, #0x4] - ldr r1, [r0, #0x18] - ldr r10, [r0, #0x14] - ldr r0, [r0, #0x1c] - ldr r7, [r8, #0xf8] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - add r11, sp, #0x10 - mov r5, #0x0 - mov r6, #0x1 - mov r4, #0xa -_020988A8: - mov r0, r11 - bl CPS_SocRead - cmp r0, #0x0 - beq _02098904 - ldr r1, [sp, #0x10] - sub r1, r1, r7 - cmp r1, #0x0 - bgt _02098904 - ldrsb r0, [r9, #0x73] - mov r1, r6 - cmp r0, #0x0 - beq _020988E0 - cmp r0, #0x4 - movne r1, r5 -_020988E0: - cmp r1, #0x0 - beq _020988F8 - ldrb r0, [r9, #0x8] - cmp r0, #0x4 - movne r0, #0x0 - bne _02098904 -_020988F8: - mov r0, r4 - bl OS_Sleep - b _020988A8 -_02098904: - ldrsb r1, [r9, #0x73] - cmp r1, #0x4 - bne _02098954 - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - ldr r1, [sp, #0x10] - cmp r10, r1 - movhi r10, r1 - ldr r1, [sp, #0x4] - mov r2, r10 - bl MI_CpuCopy8 - mov r0, r10 - bl CPS_SocConsume - add sp, sp, #0x14 - mov r0, r10 - ldmia sp!, {r4-r11,lr} - bx lr -_02098954: - cmp r0, #0x0 - moveq r4, #0x0 - beq _02098980 - ldr r4, [sp, #0xc] - ldr r1, [sp, #0x4] - ldr r3, [sp, #0x8] - mov r0, r9 - mov r2, r10 - str r4, [sp, #0x0] - bl FUN_02098AA4 - mov r4, r0 -_02098980: - cmp r4, #0x0 - addle sp, sp, #0x14 - movle r0, r4 - ldmleia sp!, {r4-r11,lr} - bxle lr - ldrh r0, [r8, #0xfc] - ldr r1, [r8, #0xf8] - cmp r1, r0 - blt _020989AC - mov r0, r9 - bl FUN_020987C0 -_020989AC: - mov r0, r4 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_020989BC -FUN_020989BC: ; 0x020989BC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - ldr r0, _02098A10 ; =FUN_02098868 - mov r1, r7 - mov r2, #0x1 - mov r4, r3 - bl FUN_02097A98 - mov r1, r0 - str r6, [r1, #0x10] - str r5, [r1, #0x14] - ldr r2, [sp, #0x18] - str r4, [r1, #0x18] - mov r0, r7 - str r2, [r1, #0x1c] - bl FUN_02097958 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02098A10: .word FUN_02098868 - - arm_func_start FUN_02098A14 -FUN_02098A14: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x64] - ldr r5, [r0, #0xc4] - ldr r4, [r0, #0xf8] - ldr r0, [r5, #0x44] - subs lr, r0, r4 - bmi _02098A78 - ldrh r12, [r5, #0xa] - ldr r0, [sp, #0x10] - cmp lr, #0x0 - strh r12, [r2, #0x0] - ldrh r2, [r5, #0x18] - strh r2, [r3, #0x0] - ldr r2, [r5, #0x1c] - str r2, [r0, #0x0] - str lr, [r1, #0x0] - bne _02098A90 - ldrb r0, [r5, #0x8] - cmp r0, #0x4 - beq _02098A90 - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_02098A78: - mvn r0, #0x0 - str r0, [r1, #0x0] - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_02098A90: - ldr r0, [r5, #0x40] - add r0, r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_02098AA4 -FUN_02098AA4: ; 0x02098AA4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x14 - mov r9, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl OS_DisableInterrupts - add r1, sp, #0xc - mov r5, r0 - str r1, [sp, #0x0] - add r1, sp, #0x8 - mov r0, r9 - add r2, sp, #0x4 - add r3, sp, #0x6 - bl FUN_02098A14 - cmp r0, #0x0 - beq _02098B48 - ldr r4, [sp, #0x8] - cmp r4, #0x0 - mvneq r4, #0x5 - beq _02098B64 - ldrsb r1, [r9, #0x73] - cmp r7, r4 - movgt r7, r4 - mov r2, #0x1 - cmp r1, #0x0 - beq _02098B18 - cmp r1, #0x4 - movne r2, #0x0 -_02098B18: - cmp r2, #0x0 - mov r1, r8 - mov r2, r7 - movne r4, r7 - bl MI_CpuCopy8 - ldr r1, [r9, #0x64] - ldrsb r0, [r1, #0xfe] - cmp r0, #0x0 - ldreq r0, [r1, #0xf8] - addeq r0, r0, r4 - streq r0, [r1, #0xf8] - b _02098B64 -_02098B48: - ldr r0, [sp, #0x8] - cmp r0, #0x0 - ldrsh r0, [r9, #0x70] - moveq r4, #0x0 - mvnne r4, #0x1b - bic r0, r0, #0x6 - strh r0, [r9, #0x70] -_02098B64: - cmp r4, #0x0 - blt _02098B9C - cmp r6, #0x0 - beq _02098B8C - ldr r1, [sp, #0x30] - cmp r1, #0x0 - ldrneh r0, [sp, #0x6] - strneh r0, [r6, #0x0] - ldrne r0, [sp, #0xc] - strne r0, [r1, #0x0] -_02098B8C: - ldrh r0, [r9, #0x74] - cmp r0, #0x0 - ldreqh r0, [sp, #0x4] - streqh r0, [r9, #0x74] -_02098B9C: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #0x14 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_02098BB4 -FUN_02098BB4: ; 0x02098BB4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldrsb r12, [r7, #0x73] - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r12, #0x4 - bne _02098BF0 - ldr r4, [sp, #0x18] - str r4, [sp, #0x0] - bl FUN_020989BC - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_02098BF0: - ldr r12, [sp, #0x18] - str r12, [sp, #0x0] - bl FUN_02098AA4 - mvn r1, #0x5 - cmp r0, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldr r1, [sp, #0x1c] - ands r1, r1, #0x1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r12, [sp, #0x18] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020989BC - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_02098C4C -FUN_02098C4C: ; 0x02098C4C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r5, [sp, #0x28] - mov r7, r0 - ands r0, r5, #0x2 - ldr r5, [r7, #0x64] - beq _02098C74 - cmp r5, #0x0 - movne r6, #0x1 - bne _02098C78 -_02098C74: - mov r6, #0x0 -_02098C78: - cmp r6, #0x0 - ldrnesb r4, [r5, #0xfe] - movne r0, #0x1 - strneb r0, [r5, #0xfe] - ldrsb r0, [r7, #0x73] - cmp r0, #0x1 - bne _02098CB4 - ldr r0, [sp, #0x20] - ldr r12, [sp, #0x24] - str r0, [sp, #0x0] - mov r0, r7 - str r12, [sp, #0x4] - bl FUN_02098670 - mov r8, r0 - b _02098CDC -_02098CB4: - ldr r0, [sp, #0x20] - ldr r12, [sp, #0x24] - str r0, [sp, #0x0] - mov r0, r7 - str r12, [sp, #0x4] - bl FUN_02098BB4 - movs r8, r0 - bmi _02098CDC - mov r0, r7 - bl FUN_02098810 -_02098CDC: - cmp r6, #0x0 - strneb r4, [r5, #0xfe] - mov r0, r8 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_02098CF4 -FUN_02098CF4: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r9, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0xc - mvnne r0, #0x1b - ldmneia sp!, {r4-r9,lr} - bxne lr - ldr r0, [sp, #0x2c] - ands r0, r0, #0x4 - bne _02098D3C - ldrsb r0, [r9, #0x72] - cmp r0, #0x0 - bne _02098D5C -_02098D3C: - ldrsb r0, [r9, #0x73] - cmp r0, #0x4 - addeq sp, sp, #0xc - mvneq r0, #0x1b - ldmeqia sp!, {r4-r9,lr} - bxeq lr - mov r4, #0x0 - b _02098D78 -_02098D5C: - bl OS_GetProcMode - cmp r0, #0x12 - addeq sp, sp, #0xc - mvneq r0, #0x1b - ldmeqia sp!, {r4-r9,lr} - bxeq lr - mov r4, #0x1 -_02098D78: - cmp r9, #0x0 - mov r1, #0x0 - beq _02098D90 - ldrsh r0, [r9, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_02098D90: - cmp r1, #0x0 - addeq sp, sp, #0xc - mvneq r0, #0x26 - ldmeqia sp!, {r4-r9,lr} - bxeq lr - ldrsb r0, [r9, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _02098DBC - cmp r0, #0x4 - movne r1, #0x0 -_02098DBC: - cmp r1, #0x0 - beq _02098DEC - ldrsh r0, [r9, #0x70] - ands r0, r0, #0x4 - beq _02098DDC - ldrsh r0, [r9, #0x70] - ands r0, r0, #0x8 - beq _02098DEC -_02098DDC: - add sp, sp, #0xc - mvn r0, #0x37 - ldmia sp!, {r4-r9,lr} - bx lr -_02098DEC: - ands r0, r4, #0x1 - ldr r5, [r9, #0x64] - bne _02098E18 - add r0, r5, #0xe0 - bl OS_TryLockMutex - cmp r0, #0x0 - bne _02098E20 - add sp, sp, #0xc - mvn r0, #0x5 - ldmia sp!, {r4-r9,lr} - bx lr -_02098E18: - add r0, r5, #0xe0 - bl OS_LockMutex -_02098E20: - ldr r0, [sp, #0x28] - ldr r12, [sp, #0x2c] - str r0, [sp, #0x0] - str r4, [sp, #0x4] - mov r0, r9 - mov r1, r8 - mov r2, r7 - mov r3, r6 - str r12, [sp, #0x8] - bl FUN_02098C4C - mov r4, r0 - add r0, r5, #0xe0 - bl OS_UnlockMutex - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_02098E64 -FUN_02098E64: ; 0x02098E64 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r2 - ldr r5, [r6, #0x14] - ldr r4, [r6, #0x1c] - cmp r5, r1 - mov r7, r0 - movgt r5, r1 - movgt r4, #0x0 - bgt _02098E98 - sub r0, r1, r5 - cmp r4, r0 - movgt r4, r0 -_02098E98: - cmp r5, #0x0 - ble _02098EC8 - ldr r0, [r6, #0x10] - mov r1, r7 - mov r2, r5 - bl MI_CpuCopy8 - ldr r0, [r6, #0x10] - add r0, r0, r5 - str r0, [r6, #0x10] - ldr r0, [r6, #0x14] - sub r0, r0, r5 - str r0, [r6, #0x14] -_02098EC8: - cmp r4, #0x0 - ble _02098EF8 - ldr r0, [r6, #0x18] - mov r2, r4 - add r1, r7, r5 - bl MI_CpuCopy8 - ldr r0, [r6, #0x18] - add r0, r0, r4 - str r0, [r6, #0x18] - ldr r0, [r6, #0x1c] - sub r0, r0, r4 - str r0, [r6, #0x1c] -_02098EF8: - add r0, r5, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_02098F08 -FUN_02098F08: ; 0x02098F08 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _02098FBC ; =OSi_ThreadInfo - mov r4, r0 - ldr r0, [r1, #0x4] - ldr r5, [r0, #0xa4] - bl OS_DisableInterrupts - cmp r5, #0x0 - beq _02098F74 - ldrh r3, [r5, #0x2e] - cmp r3, #0x0 - beq _02098F64 - ldrh r2, [r5, #0x2c] - cmp r2, #0x0 - beq _02098F64 - ldr r1, _02098FC0 ; =UNK_021C8CD4 - cmp r3, r2 - ldr r1, [r1, #0x24] - movgt r3, r2 - cmp r3, r1 - movgt r3, r1 - mov r5, r3, lsl #0x1 - b _02098F80 -_02098F64: - ldr r1, _02098FC0 ; =UNK_021C8CD4 - ldr r1, [r1, #0x24] - mov r5, r1, lsl #0x1 - b _02098F80 -_02098F74: - ldr r1, _02098FC0 ; =UNK_021C8CD4 - ldr r1, [r1, #0x24] - mov r5, r1, lsl #0x1 -_02098F80: - bl OS_RestoreInterrupts - cmp r5, #0x0 - ble _02098FAC - mov r0, r4 - mov r1, r5 - bl _s32_div_f - cmp r0, #0x0 - mulgt r0, r5, r0 - addgt sp, sp, #0x4 - ldmgtia sp!, {r4-r5,lr} - bxgt lr -_02098FAC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_02098FBC: .word OSi_ThreadInfo -_02098FC0: .word UNK_021C8CD4 - - arm_func_start FUN_02098FC4 -FUN_02098FC4: ; 0x02098FC4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldr r7, [r8, #0x4] - mov r4, #0x0 - ldrsb r0, [r7, #0x73] - ldr r6, [r7, #0x68] - mov r1, #0x1 - cmp r0, #0x0 - beq _02098FF4 - cmp r0, #0x4 - movne r1, r4 -_02098FF4: - cmp r1, #0x0 - beq _02099008 - ldrsh r0, [r7, #0x70] - ands r0, r0, #0x4 - beq _020990DC -_02099008: - ldr r2, [r8, #0x28] - cmp r2, #0x0 - beq _02099020 - ldrh r0, [r8, #0x24] - ldrh r1, [r8, #0x26] - bl CPS_SocPingMode -_02099020: - ldrsb r1, [r7, #0x73] - mov r0, #0x1 - cmp r1, #0x0 - beq _02099038 - cmp r1, #0x4 - movne r0, #0x0 -_02099038: - cmp r0, #0x0 - movne r2, #0x36 - moveq r2, #0x2a - ldr r0, [r7, #0x4c] - cmp r1, #0x0 - add r5, r0, r2 - beq _0209905C - cmp r1, #0x4 - bne _02099070 -_0209905C: - ldr r0, [r7, #0x48] - sub r0, r0, r2 - bl FUN_02098F08 - mov r9, r0 - b _02099078 -_02099070: - ldr r0, [r7, #0x48] - sub r9, r0, r2 -_02099078: - mov r0, r5 - mov r1, r9 - mov r2, r8 - bl FUN_02098E64 - mov r1, r0 - cmp r1, #0x0 - ble _020990E0 - mov r0, r5 - bl CPS_SocWrite - cmp r0, #0x0 - bgt _020990D4 - ldrsb r0, [r7, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _020990BC - cmp r0, #0x4 - movne r1, #0x0 -_020990BC: - cmp r1, #0x0 - ldrnesh r0, [r7, #0x70] - mvn r4, #0x4b - bicne r0, r0, #0xe - strneh r0, [r7, #0x70] - b _020990E0 -_020990D4: - add r4, r4, r0 - b _02099078 -_020990DC: - mvn r4, #0x4b -_020990E0: - ldrh r2, [r8, #0x20] - add r1, r6, #0x100 - add r0, r6, #0x104 - strh r2, [r1, #0x2] - bl OS_WakeupThread - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - - arm_func_start FUN_02099104 -FUN_02099104: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r6, [r9, #0x68] - mov r4, r1 - mov r8, r2 - ldr r1, [r6, #0x10c] - ldr r2, [sp, #0x28] - ldr r0, _0209929C ; =FUN_02098FC4 - mov r7, r3 - bl FUN_02097A98 - movs r5, r0 - addeq sp, sp, #0x4 - mvneq r0, #0x20 - ldmeqia sp!, {r4-r9,lr} - bxeq lr - ldr r0, [sp, #0x28] - ands r0, r0, #0x1 - beq _02099164 - ldrsb r0, [r9, #0x73] - cmp r0, #0x1 - movne r0, #0x3 - strneb r0, [r5, #0xd] - bne _0209916C -_02099164: - mov r0, #0x0 - strb r0, [r5, #0xd] -_0209916C: - ldr r2, [r6, #0xf8] - add r1, r7, r8 - cmp r1, r2 - ldr r3, [r6, #0xfc] - bge _020991A0 - add r0, r3, r7 - str r0, [r5, #0x10] - str r8, [r5, #0x14] - mov r0, #0x0 - str r0, [r5, #0x18] - mov r7, r1 - str r0, [r5, #0x1c] - b _020991D8 -_020991A0: - add r0, r3, r7 - str r0, [r5, #0x10] - sub r0, r2, r7 - str r0, [r5, #0x14] - str r3, [r5, #0x18] - ldr r0, [r5, #0x14] - sub r0, r8, r0 - str r0, [r5, #0x1c] - ldr r7, [r5, #0x1c] - ldr r0, [r5, #0x14] - ldr r1, [r5, #0x18] - mov r2, r7 - add r0, r4, r0 - bl MI_CpuCopy8 -_020991D8: - ldr r1, [r5, #0x10] - ldr r2, [r5, #0x14] - mov r0, r4 - bl MI_CpuCopy8 - add r0, r6, #0x100 - ldrh r4, [r0, #0x0] - strh r7, [r5, #0x20] - ldrh r1, [r5, #0x20] - strh r1, [r0, #0x0] - ldrsb r0, [r9, #0x73] - cmp r0, #0x1 - bne _02099268 - ldrh r0, [r9, #0x74] - cmp r0, #0x0 - bne _02099224 - bl CPS_SocGetEport - strh r0, [r9, #0x74] - ldrh r0, [r9, #0x74] - strh r0, [r9, #0xa] -_02099224: - ldrh r0, [r9, #0x74] - strh r0, [r5, #0x24] - ldr r1, [r9, #0x78] - cmp r1, #0x0 - beq _02099244 - ldr r0, [sp, #0x24] - cmp r0, #0x0 - beq _02099258 -_02099244: - ldr r1, [sp, #0x24] - ldrh r0, [sp, #0x20] - str r1, [r5, #0x28] - strh r0, [r5, #0x26] - b _02099270 -_02099258: - str r1, [r5, #0x28] - ldrh r0, [r9, #0x76] - strh r0, [r5, #0x26] - b _02099270 -_02099268: - mov r0, #0x0 - str r0, [r5, #0x28] -_02099270: - ldr r0, [r6, #0x10c] - mov r1, r5 - bl FUN_02097948 - cmp r0, #0x0 - addne r0, r6, #0x100 - movne r8, #0x0 - strneh r4, [r0, #0x0] - mov r0, r8 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_0209929C: .word FUN_02098FC4 - - arm_func_start FUN_020992A0 -FUN_020992A0: - ldr r2, [r0, #0x68] - add r0, r2, #0x100 - ldrh r1, [r0, #0x0] - ldrh r0, [r0, #0x2] - ldr r2, [r2, #0xf8] - sub r0, r0, r1 - subs r0, r0, #0x1 - addmi r0, r0, r2 - bx lr - - arm_func_start FUN_020992C4 -FUN_020992C4: ; 0x020992C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - mov r9, r1 - mov r8, r2 - cmp r8, r9 - mov r11, r3 - ldr r7, [r10, #0x68] - movgt r8, r9 - bl OS_DisableInterrupts - ldr r1, [sp, #0x28] - str r0, [sp, #0x0] - and r5, r1, #0x1 - add r4, r7, #0x104 -_020992FC: - mov r0, r10 - bl FUN_020992A0 - mov r6, r0 - cmp r6, r8 - blt _02099328 - add r0, r7, #0x100 - ldrh r0, [r0, #0x0] - cmp r6, r9 - movge r6, r9 - str r0, [r11, #0x0] - b _02099340 -_02099328: - cmp r5, #0x0 - moveq r6, #0x0 - beq _02099340 - mov r0, r4 - bl OS_SleepThread - b _020992FC -_02099340: - ldr r0, [sp, #0x0] - bl OS_RestoreInterrupts - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_02099358 -FUN_02099358: ; 0x02099358 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x1c - mov r10, r0 - ldr r4, [r10, #0x68] - ldrsb r0, [r10, #0x73] - ldr r4, [r4, #0x10c] - mov r9, r1 - cmp r0, #0x1 - ldr r0, [r4, #0x48] - mov r8, r2 - str r3, [sp, #0xc] - ldr r7, [sp, #0x40] - ldr r6, [sp, #0x44] - mov r4, #0x0 - bne _020993B4 - sub r0, r0, #0x2a - cmp r8, r0 - addgt sp, sp, #0x1c - mvngt r0, #0x22 - ldmgtia sp!, {r4-r11,lr} - bxgt lr - str r8, [sp, #0x10] - b _020993C4 -_020993B4: - sub r0, r0, #0x36 - str r0, [sp, #0x10] - cmp r8, r0 - strle r8, [sp, #0x10] -_020993C4: - cmp r8, #0x0 - ble _02099460 - and r11, r6, #0x1 -_020993D0: - ldr r2, [sp, #0x10] - mov r0, r10 - mov r1, r8 - add r3, sp, #0x14 - str r6, [sp, #0x0] - bl FUN_020992C4 - mov r5, r0 - cmp r5, #0x0 - ble _02099438 - ldr r0, [sp, #0xc] - mov r1, r9 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r6, [sp, #0x8] - ldr r3, [sp, #0x14] - mov r0, r10 - mov r2, r5 - bl FUN_02099104 - cmp r0, #0x0 - addle sp, sp, #0x1c - mvnle r0, #0x5 - ldmleia sp!, {r4-r11,lr} - bxle lr - add r9, r9, r5 - sub r8, r8, r5 - add r4, r4, r5 -_02099438: - cmp r11, #0x0 - bne _02099458 - cmp r5, #0x0 - bgt _02099460 - add sp, sp, #0x1c - mvn r0, #0x5 - ldmia sp!, {r4-r11,lr} - bx lr -_02099458: - cmp r8, #0x0 - bgt _020993D0 -_02099460: - mov r0, r4 - add sp, sp, #0x1c - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start FUN_02099470 -FUN_02099470: ; 0x02099470 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0x8 - mvnne r0, #0x1b - ldmneia sp!, {r4-r8,lr} - bxne lr - cmp r8, #0x0 - mov r1, #0x0 - beq _020994B8 - ldrsh r0, [r8, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_020994B8: - cmp r1, #0x0 - addeq sp, sp, #0x8 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - ldrsb r0, [r8, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _020994E4 - cmp r0, #0x4 - movne r1, #0x0 -_020994E4: - cmp r1, #0x0 - beq _02099514 - ldrsh r0, [r8, #0x70] - ands r0, r0, #0x4 - beq _02099504 - ldrsh r0, [r8, #0x70] - ands r0, r0, #0x8 - beq _02099514 -_02099504: - add sp, sp, #0x8 - mvn r0, #0x37 - ldmia sp!, {r4-r8,lr} - bx lr -_02099514: - ldr r0, [sp, #0x24] - ldr r4, [r8, #0x68] - ands r0, r0, #0x4 - bne _02099530 - ldrsb r0, [r8, #0x72] - cmp r0, #0x0 - bne _02099554 -_02099530: - add r0, r4, #0xe0 - bl OS_TryLockMutex - cmp r0, #0x0 - addeq sp, sp, #0x8 - mvneq r0, #0x5 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - mov r12, #0x0 - b _02099560 -_02099554: - add r0, r4, #0xe0 - bl OS_LockMutex - mov r12, #0x1 -_02099560: - ldr r1, [sp, #0x20] - mov r0, r8 - str r1, [sp, #0x0] - mov r1, r7 - mov r2, r6 - mov r3, r5 - str r12, [sp, #0x4] - bl FUN_02099358 - mov r5, r0 - add r0, r4, #0xe0 - bl OS_UnlockMutex - mov r0, r5 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_0209959C -FUN_0209959C: ; 0x0209959C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x4] - mov r1, #0x1 - ldrsb r0, [r0, #0x73] - cmp r0, #0x0 - beq _020995C0 - cmp r0, #0x4 - movne r1, #0x0 -_020995C0: - cmp r1, #0x0 - beq _020995CC - bl CPS_TcpShutdown -_020995CC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020995DC -FUN_020995DC: ; 0x020995DC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r5,lr} - bxne lr - cmp r4, #0x0 - mov r1, #0x0 - beq _02099618 - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_02099618: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x4 - beq _02099644 - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x8 - beq _02099654 -_02099644: - add sp, sp, #0x4 - mvn r0, #0x37 - ldmia sp!, {r4-r5,lr} - bx lr -_02099654: - ldrsh r0, [r4, #0x70] - orr r0, r0, #0x8 - strh r0, [r4, #0x70] - ldr r5, [r4, #0x68] - cmp r5, #0x0 - beq _020996AC - ldr r1, [r5, #0x10c] - cmp r1, #0x0 - beq _020996AC - ldrsb r2, [r4, #0x72] - ldr r0, _020996BC ; =FUN_0209959C - bl FUN_02097A98 - movs r1, r0 - addeq sp, sp, #0x4 - mvneq r0, #0x20 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldr r0, [r5, #0x10c] - bl FUN_02097948 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr -_020996AC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020996BC: .word FUN_0209959C - - arm_func_start FUN_020996C0 -FUN_020996C0: ; 0x020996C0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - ldr r4, _02099704 ; =UNK_021C8D34 - mov r5, r0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020996F0 -_020996E0: - bl FUN_020997B8 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _020996E0 -_020996F0: - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_02099704: .word UNK_021C8D34 - - arm_func_start FUN_02099708 -FUN_02099708: ; 0x02099708 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - movs r8, r0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r8,lr} - bxeq lr - add r0, r8, #0x20 - bl OS_JoinThread - bl OS_DisableInterrupts - mov r7, r0 - bl OS_DisableScheduler - add r1, sp, #0x0 - mov r0, r8 - mov r2, #0x0 - bl OS_ReceiveMessage - cmp r0, #0x0 - beq _0209979C - add r4, sp, #0x0 - mvn r6, #0xa - mov r5, #0x0 -_02099758: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02099784 - ldr r0, [r0, #0x8] - cmp r0, #0x0 - beq _0209977C - mov r1, r6 - mov r2, r5 - bl OS_SendMessage -_0209977C: - ldr r0, [sp, #0x0] - bl FUN_02097A64 -_02099784: - mov r0, r8 - mov r1, r4 - mov r2, r5 - bl OS_ReceiveMessage - cmp r0, #0x0 - bne _02099758 -_0209979C: - bl OS_EnableScheduler - bl OS_RescheduleThread - mov r0, r7 - bl OS_RestoreInterrupts - add sp, sp, #0x8 - ldmia sp!, {r4-r8,lr} - bx lr - - arm_func_start FUN_020997B8 -FUN_020997B8: - stmdb sp!, {r4-r6,lr} - movs r4, r0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - mov r0, #0x0 - strh r0, [r4, #0x70] - ldrsb r1, [r4, #0x73] - mov r2, #0x1 - cmp r1, #0x0 - beq _020997E8 - cmp r1, #0x4 - movne r2, r0 -_020997E8: - cmp r2, #0x0 - beq _02099804 - ldr r0, [r4, #0x68] - bl FUN_02099708 - ldr r0, [r4, #0x64] - bl FUN_02099708 - b _02099884 -_02099804: - cmp r1, #0x1 - bne _02099874 - ldr r0, [r4, #0x64] - ldr r0, [r0, #0x104] - cmp r0, #0x0 - beq _0209983C - ldr r5, _020998C0 ; =UNK_021C8CC0 -_02099820: - ldr r1, [r5, #0x0] - ldr r6, [r0, #0x0] - ldr r1, [r1, #0x1c] - blx r1 - mov r0, r6 - cmp r6, #0x0 - bne _02099820 -_0209983C: - ldr r0, [r4, #0x64] - mov r1, #0x0 - add r0, r0, #0x100 - strh r1, [r0, #0x8] - ldr r0, [r4, #0x64] - str r1, [r0, #0x100] - ldr r0, [r4, #0x64] - str r1, [r0, #0x104] - ldr r0, [r4, #0x64] - add r0, r0, #0x10c - bl OS_WakeupThread - ldr r0, [r4, #0x64] - bl FUN_02099708 - b _02099884 -_02099874: - cmp r1, #0x2 - bne _02099884 - ldr r0, [r4, #0x68] - bl FUN_02099708 -_02099884: - bl OS_DisableInterrupts - mov r5, r0 - mov r0, r4 - bl FUN_0209A054 - mov r0, r4 - bl FUN_02099FF0 - ldr r1, _020998C0 ; =UNK_021C8CC0 - mov r0, r4 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x1c] - blx r1 - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020998C0: .word UNK_021C8CC0 - - arm_func_start FUN_020998C4 -FUN_020998C4: ; 0x020998C4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, [r0, #0x4] - mov r1, #0x1 - ldrsb r0, [r4, #0x73] - cmp r0, #0x0 - beq _020998E8 - cmp r0, #0x4 - movne r1, #0x0 -_020998E8: - cmp r1, #0x0 - beq _02099908 - ldr r0, [r4, #0x68] - add r0, r0, #0x20 - bl OS_JoinThread - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease -_02099908: - bl CPS_SocUnRegister - ldrsh r0, [r4, #0x70] - mov r1, #0x0 - bic r0, r0, #0x6 - strh r0, [r4, #0x70] - ldrsb r0, [r4, #0x73] - cmp r0, #0x2 - ldreq r0, [r4, #0x68] - ldrne r0, [r4, #0x64] - bl FUN_020979F8 - bl OS_DisableInterrupts - mov r5, r0 - mov r0, r4 - bl FUN_0209A054 - mov r0, r4 - bl FUN_0209A06C - mov r0, r5 - bl OS_RestoreInterrupts - ldrsh r1, [r4, #0x70] - mov r0, #0x0 - orr r1, r1, #0x20 - strh r1, [r4, #0x70] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209996C -FUN_0209996C: ; 0x0209996C - stmdb sp!, {r4,lr} - mov r4, r0 - cmp r4, #0x0 - mvnle r0, #0x1b - ldmleia sp!, {r4,lr} - bxle lr - bl FUN_02099F78 - cmp r0, #0x0 - mvnne r0, #0x19 - ldmneia sp!, {r4,lr} - bxne lr - mov r0, r4 - bl FUN_02099FA8 - cmp r0, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,lr} - bxne lr - cmp r4, #0x0 - mov r1, #0x0 - beq _020999C8 - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_020999C8: - cmp r1, #0x0 - mvneq r0, #0x26 - ldmeqia sp!, {r4,lr} - bxeq lr - ldrsh r0, [r4, #0x70] - ands r0, r0, #0x10 - mvnne r0, #0x19 - ldmneia sp!, {r4,lr} - bxne lr - ldrsh r0, [r4, #0x70] - mov r1, #0x1 - orr r0, r0, #0x18 - strh r0, [r4, #0x70] - ldrsb r0, [r4, #0x73] - cmp r0, #0x0 - beq _02099A10 - cmp r0, #0x4 - movne r1, #0x0 -_02099A10: - cmp r1, #0x0 - beq _02099A24 - ldr r0, [r4, #0x68] - mov r1, #0x0 - bl FUN_020979F8 -_02099A24: - ldr r0, _02099A54 ; =FUN_020998C4 - mov r1, r4 - mov r2, #0x1 - bl FUN_02097A98 - mov r1, r0 - mov r2, #0x0 - mov r0, r4 - str r2, [r1, #0x8] - bl FUN_020979DC - mov r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02099A54: .word FUN_020998C4 - - arm_func_start FUN_02099A58 -FUN_02099A58: - stmdb sp!, {r4,lr} - movs r4, r0 - bmi _02099A88 - bl FUN_02099FA8 - cmp r0, #0x0 - beq _02099A88 - mov r0, r4 - bl FUN_02099F78 - cmp r0, #0x0 - moveq r0, #0x1 - ldmeqia sp!, {r4,lr} - bxeq lr -_02099A88: - mov r0, #0x0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_02099A94 -FUN_02099A94: ; 0x02099A94 - stmdb sp!, {r4,lr} - ldr r0, _02099B10 ; =UNK_021C8CD0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02099AE8 - bl FUN_02099B14 - movs r4, r0 - bne _02099AE0 - ldr r0, _02099B10 ; =UNK_021C8CD0 - ldr r0, [r0, #0x0] - bl FUN_0209996C - ldr r0, _02099B10 ; =UNK_021C8CD0 - ldr r0, [r0, #0x0] - bl FUN_02099A58 - cmp r0, #0x0 - ldrne r0, _02099B10 ; =UNK_021C8CD0 - movne r1, #0x0 - strne r1, [r0, #0x0] - mvn r4, #0x19 -_02099AE0: - bl FUN_020996C0 - b _02099B04 -_02099AE8: - bl CPS_CalmDown - cmp r0, #0x0 - mvneq r4, #0x19 - beq _02099B04 - mov r0, #0x0 - bl FUN_020A87BC - mov r4, #0x0 -_02099B04: - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_02099B10: .word UNK_021C8CD0 - - arm_func_start FUN_02099B14 -FUN_02099B14: ; 0x02099B14 - stmdb sp!, {r4-r6,lr} - ldr r4, _02099BBC ; =UNK_021C8CD0 - ldr r5, _02099BC0 ; =UNK_021C8D30 -_02099B20: - bl OS_DisableInterrupts - ldr r6, [r5, #0x0] - cmp r6, #0x0 - beq _02099B54 - ldr r2, [r4, #0x0] -_02099B34: - cmp r6, r2 - beq _02099B48 - ldrsh r1, [r6, #0x70] - ands r1, r1, #0x10 - beq _02099B54 -_02099B48: - ldr r6, [r6, #0x7c] - cmp r6, #0x0 - bne _02099B34 -_02099B54: - bl OS_RestoreInterrupts - cmp r6, #0x0 - beq _02099B6C - mov r0, r6 - bl FUN_0209996C - b _02099B20 -_02099B6C: - ldr r0, _02099BC0 ; =UNK_021C8D30 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _02099B98 - ldr r0, _02099BBC ; =UNK_021C8CD0 - ldr r0, [r0, #0x0] - cmp r1, r0 - bne _02099BB0 - ldr r0, [r1, #0x7c] - cmp r0, #0x0 - bne _02099BB0 -_02099B98: - ldr r0, _02099BC4 ; =UNK_021C8D34 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,lr} - bxeq lr -_02099BB0: - mvn r0, #0x19 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_02099BBC: .word UNK_021C8CD0 -_02099BC0: .word UNK_021C8D30 -_02099BC4: .word UNK_021C8D34 - - arm_func_start FUN_02099BC8 -FUN_02099BC8: ; 0x02099BC8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _02099C68 ; =UNK_021C8CC8 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - ldreq r0, _02099C6C ; =CPSMyIp - ldreq r0, [r0, #0x0] - streq r0, [r1, #0x0] - bl FUN_02099A94 - mvn r4, #0x19 - cmp r0, r4 - bne _02099C10 - mov r5, #0x64 -_02099BFC: - mov r0, r5 - bl OS_Sleep - bl FUN_02099A94 - cmp r0, r4 - beq _02099BFC -_02099C10: - bl FUN_02097B14 - movs r4, r0 - bmi _02099C58 - bl CPS_Cleanup - mov r0, #0x0 - bl CPS_SetScavengerCallback - ldr r0, _02099C70 ; =UNK_021C8CC0 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x28] - cmp r0, #0x0 - bne _02099C4C - ldr r0, _02099C74 ; =UNK_021C8CD4 - ldr r1, [r1, #0x1c] - ldr r0, [r0, #0x1c] - blx r1 -_02099C4C: - ldr r0, _02099C70 ; =UNK_021C8CC0 - mov r1, #0x0 - str r1, [r0, #0x0] -_02099C58: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_02099C68: .word UNK_021C8CC8 -_02099C6C: .word CPSMyIp -_02099C70: .word UNK_021C8CC0 -_02099C74: .word UNK_021C8CD4 - - arm_func_start FUN_02099C78 -FUN_02099C78: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _02099CE0 ; =CPSMyIp - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _02099CBC - ldr r0, _02099CE4 ; =UNK_021C8CCC - ldr r0, [r0, #0x0] - and r0, r0, #0x3 - cmp r0, #0x1 - bne _02099CCC - bl OS_GetProcMode - cmp r0, #0x12 - beq _02099CCC - mov r0, #0xa - bl OS_Sleep - b _02099CCC -_02099CBC: - ldr r0, _02099CE8 ; =UNK_021C8CC8 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - streq r2, [r0, #0x0] -_02099CCC: - ldr r0, _02099CE0 ; =CPSMyIp - ldr r0, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02099CE0: .word CPSMyIp -_02099CE4: .word UNK_021C8CCC -_02099CE8: .word UNK_021C8CC8 - - arm_func_start FUN_02099CEC -FUN_02099CEC: ; 0x02099CEC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl FUN_02099C78 - cmp r0, #0x0 - ldrne r1, _02099D24 ; =CPSDnsIp - mvneq r0, #0x26 - movne r0, #0x0 - strne r5, [r1, #0x0] - strne r4, [r1, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_02099D24: .word CPSDnsIp - - arm_func_start FUN_02099D28 -FUN_02099D28: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _02099D84 ; =CPSDnsIp - mov r5, r0 - ldr r7, [r1, #0x0] - mov r2, #0x0 - ldr r6, [r1, #0x4] - mov r0, r4 - str r2, [r1, #0x0] - str r2, [r1, #0x4] - bl CPS_Resolve - ldr r1, _02099D84 ; =CPSDnsIp - mov r4, r0 - mov r0, r5 - str r7, [r1, #0x0] - str r6, [r1, #0x4] - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_02099D84: .word CPSDnsIp - - arm_func_start FUN_02099D88 -FUN_02099D88: ; 0x02099D88 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x64 - movs r4, r0 - addeq sp, sp, #0x64 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldr r1, _02099E34 ; =UNK_021C8CC0 - mov r0, #0xfd0 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x18] - blx r1 - movs r5, r0 - addeq sp, sp, #0x64 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - add r0, sp, #0x0 - mov r1, #0x0 - mov r2, #0x64 - bl MI_CpuFill8 - ldr r3, _02099E38 ; =0x00000B68 - ldr r1, _02099E3C ; =0x00000466 - add r2, r5, r3 - add r0, sp, #0x0 - str r5, [sp, #0x40] - str r3, [sp, #0x3c] - str r2, [sp, #0x4c] - str r1, [sp, #0x48] - bl CPS_SocRegister - mov r0, r4 - bl CPS_Resolve - mov r4, r0 - bl CPS_SocUnRegister - ldr r1, _02099E34 ; =UNK_021C8CC0 - mov r0, r5 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x1c] - blx r1 - mov r0, r4 - add sp, sp, #0x64 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_02099E34: .word UNK_021C8CC0 -_02099E38: .word 0x00000B68 -_02099E3C: .word 0x00000466 - - arm_func_start FUN_02099E40 -FUN_02099E40: - ldr r2, [r0, #0x64] - mov r3, #0x0 - cmp r2, #0x0 - beq _02099E88 - ldrsb r1, [r0, #0x73] - cmp r1, #0x1 - bne _02099E6C - ldr r0, [r2, #0x104] - cmp r0, #0x0 - ldrneh r3, [r0, #0x4] - b _02099E88 -_02099E6C: - cmp r1, #0x0 - beq _02099E7C - cmp r1, #0x4 - bne _02099E88 -_02099E7C: - ldr r1, [r0, #0x44] - ldr r0, [r2, #0xf8] - sub r3, r1, r0 -_02099E88: - mov r0, r3 - bx lr - - arm_func_start FUN_02099E90 -FUN_02099E90: - stmdb sp!, {r4-r6,lr} - mov r4, #0x0 - mov r5, r0 - bl FUN_02099FA8 - cmp r0, #0x0 - orrne r4, r4, #0x80 - bne _02099F60 - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x40 - ldrsb r0, [r5, #0x73] - orrne r4, r4, #0x20 - cmp r0, #0x1 - beq _02099ED0 - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x4 - beq _02099F00 -_02099ED0: - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r5 - bl FUN_02099E40 - cmp r0, #0x0 - mov r0, r5 - orrgt r4, r4, #0x1 - bl FUN_020992A0 - cmp r0, #0x0 - mov r0, r6 - orrgt r4, r4, #0x8 - bl OS_RestoreInterrupts -_02099F00: - ldrsb r0, [r5, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _02099F18 - cmp r0, #0x4 - movne r1, #0x0 -_02099F18: - cmp r1, #0x0 - beq _02099F60 - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x4 - beq _02099F48 - ldrb r0, [r5, #0x8] - cmp r0, #0x4 - beq _02099F48 - ands r0, r4, #0x1 - ldreqsh r0, [r5, #0x70] - biceq r0, r0, #0x6 - streqh r0, [r5, #0x70] -_02099F48: - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x2 - bne _02099F60 - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x4 - orreq r4, r4, #0x40 -_02099F60: - mov r0, r4 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_02099F6C -FUN_02099F6C: - add r0, r0, #0x3 - bic r0, r0, #0x3 - bx lr - - arm_func_start FUN_02099F78 -FUN_02099F78: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, r0 - ldr r0, _02099FA4 ; =UNK_021C8D34 - bl FUN_0209A008 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02099FA4: .word UNK_021C8D34 - - arm_func_start FUN_02099FA8 -FUN_02099FA8: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, r0 - cmp r1, #0x0 - ble _02099FCC - ldr r0, _02099FEC ; =UNK_021C8D30 - bl FUN_0209A008 - cmp r0, #0x0 - bne _02099FDC -_02099FCC: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {lr} - bx lr -_02099FDC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_02099FEC: .word UNK_021C8D30 - - arm_func_start FUN_02099FF0 -FUN_02099FF0: ; 0x02099FF0 - ldr ip, _0209A000 ; =FUN_0209A034 - mov r1, r0 - ldr r0, _0209A004 ; =UNK_021C8D34 - bx r12 - .balign 4 -_0209A000: .word FUN_0209A034 -_0209A004: .word UNK_021C8D34 - - arm_func_start FUN_0209A008 -FUN_0209A008: - ldr r2, [r0, #0x0] - cmp r2, #0x0 - beq _0209A02C -_0209A014: - cmp r2, r1 - bxeq lr - add r0, r2, #0x7c - ldr r2, [r2, #0x7c] - cmp r2, #0x0 - bne _0209A014 -_0209A02C: - mov r0, #0x0 - bx lr - - arm_func_start FUN_0209A034 -FUN_0209A034: ; 0x0209A034 - stmdb sp!, {r4,lr} - mov r4, r1 - bl FUN_0209A008 - cmp r0, #0x0 - ldrne r1, [r4, #0x7c] - strne r1, [r0, #0x0] - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209A054 -FUN_0209A054: ; 0x0209A054 - ldr ip, _0209A064 ; =FUN_0209A034 - mov r1, r0 - ldr r0, _0209A068 ; =UNK_021C8D30 - bx r12 - .balign 4 -_0209A064: .word FUN_0209A034 -_0209A068: .word UNK_021C8D30 - - arm_func_start FUN_0209A06C -FUN_0209A06C: ; 0x0209A06C - ldr ip, _0209A07C ; =FUN_0209A084 - mov r1, r0 - ldr r0, _0209A080 ; =UNK_021C8D34 - bx r12 - .balign 4 -_0209A07C: .word FUN_0209A084 -_0209A080: .word UNK_021C8D34 - - arm_func_start FUN_0209A084 -FUN_0209A084: ; 0x0209A084 - ldr r2, [r0, #0x0] - str r2, [r1, #0x7c] - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_0209A094 -FUN_0209A094: ; 0x0209A094 - ldr ip, _0209A0A4 ; =FUN_0209A084 - mov r1, r0 - ldr r0, _0209A0A8 ; =UNK_021C8D30 - bx r12 - .balign 4 -_0209A0A4: .word FUN_0209A084 -_0209A0A8: .word UNK_021C8D30 - - arm_func_start FUN_0209A0AC -FUN_0209A0AC: ; 0x0209A0AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r9, r2 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x8] - mov r0, #0x0 - mov r8, r3 - mvn r2, #0x0 - cmp r8, r2 - cmpeq r9, r2 - movne r11, #0x1 - mov r10, r1 - moveq r11, #0x0 - str r0, [sp, #0x4] -_0209A0E8: - ldr r5, [sp, #0x4] - ldr r7, [sp, #0x0] - mov r6, r5 - cmp r10, #0x0 - bls _0209A128 -_0209A0FC: - ldrsh r1, [r7, #0x4] - ldr r0, [r7, #0x0] - orr r4, r1, #0xe0 - bl FUN_02099E90 - ands r0, r4, r0 - strh r0, [r7, #0x6] - add r6, r6, #0x1 - addne r5, r5, #0x1 - cmp r6, r10 - add r7, r7, #0x8 - blo _0209A0FC -_0209A128: - cmp r5, #0x0 - bgt _0209A160 - cmp r11, #0x0 - beq _0209A148 - mov r1, #0x0 - subs r0, r1, r9 - sbcs r0, r1, r8 - bge _0209A160 -_0209A148: - ldr r0, [sp, #0x8] - bl OS_Sleep - ldr r0, _0209A170 ; =0x0000020B - subs r9, r9, r0 - sbc r8, r8, #0x0 - b _0209A0E8 -_0209A160: - mov r0, r5 - add sp, sp, #0xc - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_0209A170: .word 0x0000020B - - arm_func_start FUN_0209A174 -FUN_0209A174: ; 0x0209A174 - mov r2, r0, lsr #0x18 - strb r2, [r1, #0x0] - mov r2, r0, lsr #0x10 - strb r2, [r1, #0x1] - mov r2, r0, lsr #0x8 - strb r2, [r1, #0x2] - strb r0, [r1, #0x3] - bx lr - - arm_func_start FUN_0209A194 -FUN_0209A194: ; 0x0209A194 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - cmp r0, #0x2 - mov r4, r2 - addne sp, sp, #0x18 - movne r0, #0x0 - ldmneia sp!, {r4,lr} - bxne lr - cmp r3, #0x10 - addcc sp, sp, #0x18 - movcc r0, #0x0 - ldmccia sp!, {r4,lr} - bxcc lr - mov r0, r1 - add r1, sp, #0xc - mov r2, #0x4 - bl MI_CpuCopy8 - ldr r0, [sp, #0xc] - add r1, sp, #0x10 - bl FUN_0209A174 - ldrb r1, [sp, #0x12] - ldr r2, _0209A220 ; =UNK_0210620C - mov r0, r4 - str r1, [sp, #0x0] - ldrb r3, [sp, #0x11] - mov r1, #0x10 - str r3, [sp, #0x4] - ldrb r3, [sp, #0x10] - str r3, [sp, #0x8] - ldrb r3, [sp, #0x13] - bl OS_SNPrintf - mov r0, r4 - add sp, sp, #0x18 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209A220: .word UNK_0210620C - - arm_func_start FUN_0209A224 -FUN_0209A224: ; 0x0209A224 - stmdb sp!, {r4,lr} - mov r4, r1 - bl FUN_02099D28 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - mov r2, r0, lsr #0x18 - mov r1, r0, lsr #0x8 - mov r3, r0, lsl #0x8 - mov r12, r0, lsl #0x18 - and r2, r2, #0xff - and r0, r1, #0xff00 - and r1, r3, #0xff0000 - orr r0, r2, r0 - and r2, r12, #0xff000000 - orr r0, r1, r0 - orr r0, r2, r0 - str r0, [r4, #0x0] - mov r0, #0x1 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209A27C -FUN_0209A27C: ; 0x0209A27C - stmdb sp!, {r0-r3} - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _0209A2B0 ; =UNK_021C8D5C - add r1, sp, #0x8 - mov r0, #0x2 - mov r3, #0x10 - bl FUN_0209A194 - ldr r0, _0209A2B0 ; =UNK_021C8D5C - add sp, sp, #0x4 - ldmia sp!, {lr} - add sp, sp, #0x10 - bx lr - .balign 4 -_0209A2B0: .word UNK_021C8D5C - - arm_func_start THUNK_FUN_02099BC8 -THUNK_FUN_02099BC8: ; 0x0209A2B4 - ldr ip, _0209A2BC ; =FUN_02099BC8 - bx r12 - .balign 4 -_0209A2BC: .word FUN_02099BC8 - - arm_func_start FUN_0209A2C0 -FUN_0209A2C0: ; 0x0209A2C0 - stmdb sp!, {r4-r8,lr} - ldr r1, [r0, #0xc] - ldr ip, _0209A430 ; =UNK_021C8D6C - cmp r1, #0x1 - moveq r1, #0x1 - movne r1, #0x0 - str r1, [r12, #0x0] - ldr r6, [r0, #0x10] - ldr r5, _0209A434 ; =FUN_0209A484 - mov r2, r6, lsr #0x18 - mov r1, r6, lsr #0x8 - mov r3, r6, lsl #0x8 - and r2, r2, #0xff - and r1, r1, #0xff00 - mov r6, r6, lsl #0x18 - orr r1, r2, r1 - and r3, r3, #0xff0000 - orr r1, r3, r1 - and r2, r6, #0xff000000 - orr r1, r2, r1 - str r1, [r12, #0x4] - ldr r7, [r0, #0x14] - ldr r4, _0209A438 ; =FUN_0209A444 - mov r2, r7, lsr #0x18 - mov r1, r7, lsr #0x8 - mov r6, r7, lsl #0x8 - and r2, r2, #0xff - and r1, r1, #0xff00 - mov r7, r7, lsl #0x18 - orr r1, r2, r1 - and r6, r6, #0xff0000 - and r2, r7, #0xff000000 - orr r1, r6, r1 - orr r1, r2, r1 - str r1, [r12, #0x8] - ldr r1, [r0, #0x18] - ldr r3, _0209A43C ; =UNK_021C8D40 - mov r7, r1, lsr #0x18 - mov r6, r1, lsr #0x8 - mov r8, r1, lsl #0x8 - and r7, r7, #0xff - and r6, r6, #0xff00 - mov r1, r1, lsl #0x18 - orr r6, r7, r6 - and r8, r8, #0xff0000 - and r7, r1, #0xff000000 - orr r1, r8, r6 - orr r1, r7, r1 - str r1, [r12, #0xc] - ldr r1, [r0, #0x1c] - ldr r2, _0209A440 ; =UNK_021C8D3C - mov r7, r1, lsr #0x18 - mov r6, r1, lsr #0x8 - mov r8, r1, lsl #0x8 - and r7, r7, #0xff - and r6, r6, #0xff00 - mov r1, r1, lsl #0x18 - orr r6, r7, r6 - and r8, r8, #0xff0000 - and r7, r1, #0xff000000 - orr r1, r8, r6 - orr r1, r7, r1 - str r1, [r12, #0x10] - ldr r1, [r0, #0x20] - mov lr, #0x40 - mov r7, r1, lsr #0x18 - mov r6, r1, lsr #0x8 - mov r8, r1, lsl #0x8 - and r7, r7, #0xff - and r6, r6, #0xff00 - mov r1, r1, lsl #0x18 - orr r6, r7, r6 - and r8, r8, #0xff0000 - and r7, r1, #0xff000000 - orr r1, r8, r6 - orr r1, r7, r1 - str r5, [r12, #0x18] - str r4, [r12, #0x1c] - str r1, [r12, #0x14] - ldr r1, [r0, #0x4] - str r1, [r3, #0x0] - ldr r1, [r0, #0x8] - str lr, [r12, #0x20] - str r1, [r2, #0x0] - ldr r1, [r0, #0x2c] - str r1, [r12, #0x30] - ldr r1, [r0, #0x30] - mov r0, r12 - str r1, [r12, #0x34] - bl FUN_02097834 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_0209A430: .word UNK_021C8D6C -_0209A434: .word FUN_0209A484 -_0209A438: .word FUN_0209A444 -_0209A43C: .word UNK_021C8D40 -_0209A440: .word UNK_021C8D3C - - arm_func_start FUN_0209A444 -FUN_0209A444: ; 0x0209A444 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldr r1, _0209A480 ; =UNK_021C8D3C - ldr r2, [r0, #-0x4] - ldr r3, [r1, #0x0] - sub r1, r0, #0x4 - mov r0, #0x0 - blx r3 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209A480: .word UNK_021C8D3C - - arm_func_start FUN_0209A484 -FUN_0209A484: ; 0x0209A484 - stmdb sp!, {r4,lr} - ldr r1, _0209A4B0 ; =UNK_021C8D40 - add r4, r0, #0x4 - ldr r2, [r1, #0x0] - mov r1, r4 - mov r0, #0x0 - blx r2 - cmp r0, #0x0 - strne r4, [r0], #0x4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_0209A4B0: .word UNK_021C8D40 - - arm_func_start FUN_0209A4B4 -FUN_0209A4B4: ; 0x0209A4B4 - cmp r0, #0x0 - mvneq r0, #0x0 - bxeq lr - cmp r1, #0x3 - beq _0209A4D4 - cmp r1, #0x4 - beq _0209A4E8 - b _0209A4FC -_0209A4D4: - ldrsb r0, [r0, #0x72] - cmp r0, #0x1 - moveq r0, #0x0 - movne r0, #0x4 - bx lr -_0209A4E8: - ands r1, r2, #0x4 - movne r1, #0x0 - strneb r1, [r0, #0x72] - moveq r1, #0x1 - streqb r1, [r0, #0x72] -_0209A4FC: - mov r0, #0x0 - bx lr - - arm_func_start FUN_0209A504 -FUN_0209A504: ; 0x0209A504 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - mov r4, r1 - add r1, sp, #0x0 - add r2, sp, #0x4 - bl FUN_02098120 - cmp r0, #0x0 - addlt sp, sp, #0x8 - ldmltia sp!, {r4,lr} - bxlt lr - ldrh r1, [sp, #0x0] - mov r2, r1, asr #0x8 - mov r1, r1, lsl #0x8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [r4, #0x2] - ldr r12, [sp, #0x4] - mov r2, r12, lsr #0x18 - mov r1, r12, lsr #0x8 - mov r3, r12, lsl #0x8 - mov r12, r12, lsl #0x18 - and r2, r2, #0xff - and r1, r1, #0xff00 - and r3, r3, #0xff0000 - orr r1, r2, r1 - and r2, r12, #0xff000000 - orr r1, r3, r1 - orr r1, r2, r1 - str r1, [r4, #0x4] - add sp, sp, #0x8 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209A588 -FUN_0209A588: ; 0x0209A588 - ldr ip, _0209A590 ; =FUN_0209822C - bx r12 - .balign 4 -_0209A590: .word FUN_0209822C - - arm_func_start FUN_0209A594 -FUN_0209A594: ; 0x0209A594 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r12, [r1, #0x0] - ldr r0, [r0, #0x0] - mov r2, r12, lsr #0x18 - mov r4, r0, lsr #0x18 - mov lr, r0, lsr #0x8 - mov r1, r12, lsr #0x8 - mov r5, r0, lsl #0x8 - mov r3, r12, lsl #0x8 - mov r0, r0, lsl #0x18 - mov r12, r12, lsl #0x18 - and r4, r4, #0xff - and lr, lr, #0xff00 - and r2, r2, #0xff - and r1, r1, #0xff00 - and r5, r5, #0xff0000 - orr r4, r4, lr - and r3, r3, #0xff0000 - orr r1, r2, r1 - and lr, r0, #0xff000000 - orr r0, r5, r4 - and r2, r12, #0xff000000 - orr r1, r3, r1 - orr r0, lr, r0 - orr r1, r2, r1 - bl FUN_02099CEC - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_0209A60C -FUN_0209A60C: ; 0x0209A60C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_02099C78 - mov r2, r0, lsr #0x18 - mov r1, r0, lsr #0x8 - mov r3, r0, lsl #0x8 - mov r12, r0, lsl #0x18 - and r2, r2, #0xff - and r0, r1, #0xff00 - and r1, r3, #0xff0000 - orr r0, r2, r0 - and r2, r12, #0xff000000 - orr r0, r1, r0 - orr r0, r2, r0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209A650 -FUN_0209A650: ; 0x0209A650 - stmdb sp!, {r4-r6,lr} - movs r5, r0 - mov r4, r1 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r6,lr} - bxeq lr - bl FUN_02099C78 - cmp r5, #0x0 - ldrneh r1, [r5, #0x74] - mov r2, r0, lsr #0x18 - mov r6, #0x8 - moveq r1, #0x0 - cmp r0, #0x0 - moveq r1, #0x0 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r5, r3, asr #0x8 - mov lr, r3, lsl #0x8 - strb r6, [r4, #0x0] - mov r6, #0x2 - mov r1, r0, lsr #0x8 - mov r3, r0, lsl #0x8 - mov r12, r0, lsl #0x18 - and r0, r1, #0xff00 - and r2, r2, #0xff - orr r0, r2, r0 - and r1, r3, #0xff0000 - and r5, r5, #0xff - and lr, lr, #0xff00 - strb r6, [r4, #0x1] - orr r3, r5, lr - and r2, r12, #0xff000000 - orr r0, r1, r0 - strh r3, [r4, #0x2] - orr r0, r2, r0 - str r0, [r4, #0x4] - mov r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start FUN_0209A6EC -FUN_0209A6EC: ; 0x0209A6EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl FUN_02099D88 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldr r0, _0209A7A4 ; =UNK_021C8DA4 - ldr r2, _0209A7A8 ; =0x00000101 - mov r1, #0x0 - bl MI_CpuFill8 - ldr r0, _0209A7A4 ; =UNK_021C8DA4 - ldr r2, _0209A7A8 ; =0x00000101 - mov r1, r5 - bl STD_CopyLString - mov r1, r4, lsr #0x18 - mov r0, r4, lsr #0x8 - mov r2, r4, lsl #0x8 - mov r3, r4, lsl #0x18 - and r1, r1, #0xff - and r0, r0, #0xff00 - and r2, r2, #0xff0000 - orr r0, r1, r0 - and r3, r3, #0xff000000 - orr r1, r2, r0 - ldr r5, _0209A7A4 ; =UNK_021C8DA4 - ldr r0, _0209A7AC ; =UNK_021C8D4C - ldr ip, _0209A7B0 ; =UNK_021C8D44 - mov r4, #0x0 - ldr r2, _0209A7B4 ; =UNK_021C8D38 - orr r1, r3, r1 - mov lr, #0x2 - mov r3, #0x4 - str r5, [r0, #0x0] - str r4, [r0, #0x4] - strh lr, [r0, #0x8] - strh r3, [r0, #0xa] - str r12, [r0, #0xc] - str r2, [r12, #0x0] - str r4, [r12, #0x4] - str r1, [r2, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209A7A4: .word UNK_021C8DA4 -_0209A7A8: .word 0x00000101 -_0209A7AC: .word UNK_021C8D4C -_0209A7B0: .word UNK_021C8D44 -_0209A7B4: .word UNK_021C8D38 - - arm_func_start thunk_FUN_0209996c -thunk_FUN_0209996c: ; 0x0209A7B8 - ldr ip, _0209A7C0 ; =FUN_0209996C - bx r12 - .balign 4 -_0209A7C0: .word FUN_0209996C - - arm_func_start thunk_FUN_020995dc -thunk_FUN_020995dc: ; 0x0209A7C4 - ldr ip, _0209A7CC ; =FUN_020995DC - bx r12 - .balign 4 -_0209A7CC: .word FUN_020995DC - - arm_func_start FUN_0209A7D0 -FUN_0209A7D0: ; 0x0209A7D0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r5, [sp, #0x20] - cmp r5, #0x0 - moveq r5, #0x0 - moveq r4, r5 - beq _0209A83C - ldrh r4, [r5, #0x2] - ldr r6, [r5, #0x4] - mov r7, r4, asr #0x8 - mov r12, r4, lsl #0x8 - mov r4, r6, lsr #0x18 - mov lr, r6, lsr #0x8 - mov r5, r6, lsl #0x8 - mov r6, r6, lsl #0x18 - and r7, r7, #0xff - and r12, r12, #0xff00 - orr r7, r7, r12 - and r4, r4, #0xff - and lr, lr, #0xff00 - and r5, r5, #0xff0000 - orr r4, r4, lr - mov r12, r7, lsl #0x10 - orr r4, r5, r4 - and r6, r6, #0xff000000 - mov r5, r12, lsr #0x10 - orr r4, r6, r4 -_0209A83C: - str r4, [sp, #0x0] - str r3, [sp, #0x4] - mov r3, r5 - bl FUN_02099470 - add sp, sp, #0xc - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209A858 -FUN_0209A858: ; 0x0209A858 - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r12, #0x0 - str r12, [sp, #0x0] - str r3, [sp, #0x4] - mov r3, r12 - bl FUN_02099470 - add sp, sp, #0xc - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209A880 -FUN_0209A880: ; 0x0209A880 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r12, sp, #0xc - str r12, [sp, #0x0] - str r3, [sp, #0x4] - add r3, sp, #0x8 - bl FUN_02098CF4 - cmp r0, #0x0 - addlt sp, sp, #0x14 - ldmltia sp!, {lr} - bxlt lr - ldr r1, [sp, #0x18] - cmp r1, #0x0 - addeq sp, sp, #0x14 - ldmeqia sp!, {lr} - bxeq lr - ldrh r2, [sp, #0x8] - mov r3, r2, asr #0x8 - mov r2, r2, lsl #0x8 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - strh r2, [r1, #0x2] - ldr lr, [sp, #0xc] - mov r3, lr, lsr #0x18 - mov r2, lr, lsr #0x8 - mov r12, lr, lsl #0x8 - mov lr, lr, lsl #0x18 - and r3, r3, #0xff - and r2, r2, #0xff00 - and r12, r12, #0xff0000 - orr r2, r3, r2 - and r3, lr, #0xff000000 - orr r2, r12, r2 - orr r2, r3, r2 - str r2, [r1, #0x4] - add sp, sp, #0x14 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209A91C -FUN_0209A91C: ; 0x0209A91C - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r12, #0x0 - str r12, [sp, #0x0] - str r3, [sp, #0x4] - mov r3, r12 - bl FUN_02098CF4 - add sp, sp, #0xc - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_0209A944 -FUN_0209A944: ; 0x0209A944 - stmdb sp!, {r4,lr} - ldrh r2, [r1, #0x2] - ldr lr, [r1, #0x4] - mov r4, r2, asr #0x8 - mov r1, r2, lsl #0x8 - mov r3, lr, lsr #0x18 - mov r2, lr, lsr #0x8 - mov r12, lr, lsl #0x8 - mov lr, lr, lsl #0x18 - and r4, r4, #0xff - and r1, r1, #0xff00 - orr r1, r4, r1 - mov r1, r1, lsl #0x10 - and r3, r3, #0xff - and r2, r2, #0xff00 - and r12, r12, #0xff0000 - orr r2, r3, r2 - and r3, lr, #0xff000000 - orr r2, r12, r2 - mov r1, r1, lsr #0x10 - orr r2, r3, r2 - bl FUN_020983B0 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_0209A9A4 -FUN_0209A9A4: ; 0x0209A9A4 - ldrh r1, [r1, #0x2] - ldr ip, _0209A9CC ; =FUN_020984B4 - mov r2, r1, asr #0x8 - mov r1, r1, lsl #0x8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bx r12 - .balign 4 -_0209A9CC: .word FUN_020984B4 - - arm_func_start FUN_0209A9D0 -FUN_0209A9D0: ; 0x0209A9D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x1 - bne _0209A9F4 - ldr r0, _0209AA08 ; =UNK_021061DC - bl FUN_02097F70 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_0209A9F4: - ldr r0, _0209AA0C ; =UNK_021061C4 - bl FUN_02097F70 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_0209AA08: .word UNK_021061DC -_0209AA0C: .word UNK_021061C4 - - arm_func_start FUN_0209AA10 -FUN_0209AA10: ; 0x0209AA10 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r6, [r7, #0x4] - ldr r5, [r6, #0x64] - add r0, r5, #0xe0 - ldr r4, [r5, #0xc4] - bl OS_LockMutex - ldr r1, [r7, #0x10] - cmp r1, #0x0 - beq _0209AA54 - mov r0, #0x1 - str r1, [r4, #0xc] - bl CPS_SetSsl - mov r0, #0x4 - strb r0, [r6, #0x73] - b _0209AA68 -_0209AA54: - mov r0, #0x0 - strb r0, [r6, #0x73] - bl CPS_SetSsl - mov r0, #0x0 - str r0, [r4, #0xc] -_0209AA68: - add r0, r5, #0xe0 - bl OS_UnlockMutex - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_0209AA80 -FUN_0209AA80: ; 0x0209AA80 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - ldr r0, _0209AACC ; =FUN_0209AA10 - mov r1, r5 - mov r2, #0x1 - bl FUN_02097A98 - movs r1, r0 - addeq sp, sp, #0x4 - mvneq r0, #0x20 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - mov r0, r5 - str r4, [r1, #0x10] - bl FUN_02097958 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_0209AACC: .word FUN_0209AA10 - - arm_func_start FUN_0209AAD0 -FUN_0209AAD0: ; 0x0209AAD0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl FUN_02099FA8 - cmp r0, #0x0 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r5,lr} - bxne lr - ldrsb r0, [r5, #0x73] - mov r1, #0x1 - cmp r0, #0x0 - beq _0209AB10 - cmp r0, #0x4 - movne r1, #0x0 -_0209AB10: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x1b - ldmeqia sp!, {r4-r5,lr} - bxeq lr - cmp r5, #0x0 - mov r1, #0x0 - beq _0209AB3C - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x1 - movne r1, #0x1 -_0209AB3C: - cmp r1, #0x0 - addeq sp, sp, #0x4 - mvneq r0, #0x26 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldrsh r0, [r5, #0x70] - ands r0, r0, #0x2 - addne sp, sp, #0x4 - mvnne r0, #0x1b - ldmneia sp!, {r4-r5,lr} - bxne lr - mov r0, r5 - mov r1, r4 - bl FUN_0209AA80 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr diff --git a/arm9/global.inc b/arm9/global.inc index a7bab851..62d708f6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5515,29 +5515,6 @@ .extern FUN_02097484 .extern FUN_02097490 .extern FUN_02097508 -.extern FUN_02099A94 -.extern FUN_02099C78 -.extern FUN_02099D88 -.extern FUN_0209A0AC -.extern FUN_0209A174 -.extern FUN_0209A224 -.extern FUN_0209A27C -.extern FUN_0209A2C0 -.extern FUN_0209A4B4 -.extern FUN_0209A504 -.extern FUN_0209A588 -.extern FUN_0209A594 -.extern FUN_0209A60C -.extern FUN_0209A650 -.extern FUN_0209A6EC -.extern FUN_0209A7D0 -.extern FUN_0209A858 -.extern FUN_0209A880 -.extern FUN_0209A91C -.extern FUN_0209A944 -.extern FUN_0209A9A4 -.extern FUN_0209A9D0 -.extern FUN_0209AAD0 .extern FUN_020A71F8 .extern FUN_020A722C .extern FUN_020A7488 @@ -5552,9 +5529,7 @@ .extern FUN_020A83D0 .extern FUN_020A846C .extern FUN_020A84D8 -.extern FUN_020A87BC .extern FUN_020A87E0 -.extern FUN_020A8850 .extern FUN_020A8BA4 .extern FUN_020A8BB0 .extern FUN_020A8BBC @@ -7528,6 +7503,76 @@ .extern SNDi_LockMutex .extern SNDi_SetAlarmHandler .extern SNDi_UnlockMutex +.extern SOCLSocketParamTCP +.extern SOCLSocketParamUDPSend +.extern SOCL_Accept +.extern SOCL_Bind +.extern SOCL_CalmDown +.extern SOCL_Cleanup +.extern SOCL_Close +.extern SOCL_Connect +.extern SOCL_CreateSocket +.extern SOCL_EnableSsl +.extern SOCL_GetHostID +.extern SOCL_GetStatus +.extern SOCL_InetAtoH +.extern SOCL_IsClosed +.extern SOCL_Listen +.extern SOCL_Resolve +.extern SOCL_SetResolver +.extern SOCL_Shutdown +.extern SOCL_SocketIsInTrash +.extern SOCL_SocketIsInvalid +.extern SOCL_Startup +.extern SOCL_WriteTo +.extern SOCLiCPSConfig +.extern SOCLiConfigPtr +.extern SOCLiDhcpState +.extern SOCLiRequestedIP +.extern SOCLiSocketList +.extern SOCLiSocketListTrash +.extern SOCLiUDPSendSocket +.extern SOCLi_CleanupCommandPacketQueue +.extern SOCLi_CommandPacketHandler +.extern SOCLi_CreateCommandPacket +.extern SOCLi_ExecCommandPacketInCtrlPipe +.extern SOCLi_ExecCommandPacketInRecvPipe +.extern SOCLi_ExecCommandPacketInSendPipe +.extern SOCLi_FreeCommandPacket +.extern SOCLi_GetWriteBufferFreeSize +.extern SOCLi_ReadFrom +.extern SOCLi_RoundUp4 +.extern SOCLi_SendCommandPacket +.extern SOCLi_SendCommandPacketToCtrlPipe +.extern SOCLi_SocketRegister +.extern SOCLi_SocketRegisterTrash +.extern SOCLi_SocketUnregister +.extern SOCLi_SocketUnregisterTrash +.extern SOCLi_StartupCommandPacketQueue +.extern SOCLi_TrashSocket +.extern SOCLi_UdpRecvCallback +.extern SOC_Accept +.extern SOC_Bind +.extern SOC_Cleanup +.extern SOC_Close +.extern SOC_Connect +.extern SOC_Fcntl +.extern SOC_GetHostByAddr +.extern SOC_GetHostID +.extern SOC_GetResolver +.extern SOC_GetSockName +.extern SOC_InetAtoN +.extern SOC_InetNtoA +.extern SOC_Listen +.extern SOC_Poll +.extern SOC_Read +.extern SOC_RecvFrom +.extern SOC_Send +.extern SOC_SendTo +.extern SOC_Shutdown +.extern SOC_Socket +.extern SOC_Startup +.extern SOC_U32to4U8 .extern STD_CopyLString .extern SVC_CpuSet .extern SVC_GetCRC16 @@ -7548,7 +7593,6 @@ .extern StringLength .extern StringNotEqual .extern StringNotEqualN -.extern THUNK_FUN_02099BC8 .extern TP_CheckError .extern TP_GetCalibratedPoint .extern TP_GetLatestIndexInAuto @@ -7621,7 +7665,9 @@ .extern VEC_MultAdd .extern VEC_Normalize .extern VEC_Subtract +.extern WCM_GetApMacAddress .extern WCM_SendDCFData +.extern WCM_SetRecvDCFCallback .extern WM_Disable .extern WM_Disconnect .extern WM_Enable @@ -7830,8 +7876,6 @@ .extern tempName_NNS_FndCreateExpHeapEx .extern thunk_FUN_02096e4c .extern thunk_FUN_02097190 -.extern thunk_FUN_020995dc -.extern thunk_FUN_0209996c .extern thunk_FUN_020adc8c .extern thunk_FUN_020adc8c_2 .extern thunk_FUN_020ae84c diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 24fa13fc..129acd10 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -1411,7 +1411,7 @@ _021DA104: bl OS_SNPrintf bl OS_DisableInterrupts mov sb, r0 - bl FUN_020A8850 + bl WCM_GetApMacAddress mov r8, r0 mov r1, #6 bl DC_InvalidateRange @@ -5451,7 +5451,7 @@ MOD04_021DD9DC: ; 0x021DD9DC str r0, [r4] bl OS_DisableInterrupts mov r6, r0 - bl FUN_020A8850 + bl WCM_GetApMacAddress mov r5, r0 mov r1, #6 bl DC_InvalidateRange @@ -17170,7 +17170,7 @@ MOD04_021E7B04: ; 0x021E7B04 mov r5, r4 b _021E7C48 _021E7BC0: - bl FUN_0209A60C + bl SOC_GetHostID mov r0, r0, lsl #0x10 ldr r1, _021E7DEC ; =0x0000FFFF ldr r2, _021E7DF0 ; =0x0000A8C0 @@ -17220,7 +17220,7 @@ _021E7C48: str r8, [r0, #0x19c] b _021E7D00 _021E7C74: - bl FUN_0209A60C + bl SOC_GetHostID str r0, [sp, #8] bl MOD04_021E26E4 ldr r0, [r0, #4] @@ -21677,7 +21677,7 @@ MOD04_021EBA28: ; 0x021EBA28 blo _021EBAB0 cmp r0, #0x10 bhi _021EBAB0 - bl FUN_020A8850 + bl WCM_GetApMacAddress mov r4, r0 mov r1, #6 bl DC_InvalidateRange @@ -22854,12 +22854,12 @@ _021ECA44: MOD04_021ECA4C: ; 0x021ECA4C stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_02099A94 + bl SOCL_CalmDown cmp r0, #0 addne sp, sp, #4 movne r0, #0 ldmneia sp!, {pc} - bl THUNK_FUN_02099BC8 + bl SOC_Cleanup cmp r0, #0 beq _021ECA80 mvn r1, #0x26 @@ -24207,7 +24207,7 @@ MOD04_021EDBCC: ; 0x021EDBCC str r0, [sp, #4] add r0, sp, #0 add r1, sp, #4 - bl FUN_0209A594 + bl SOC_GetResolver add sp, sp, #8 ldmia sp!, {r4, pc} @@ -24318,12 +24318,12 @@ _021EDDB8: .word 0x0220BB2C MOD04_021EDDBC: ; 0x021EDDBC stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_02099A94 + bl SOCL_CalmDown cmp r0, #0 addne sp, sp, #4 movne r0, #0xb ldmneia sp!, {pc} - bl THUNK_FUN_02099BC8 + bl SOC_Cleanup cmp r0, #0 beq _021EDDF0 mvn r1, #0x26 @@ -24401,7 +24401,7 @@ MOD04_021EDE90: ; 0x021EDE90 MOD04_021EDEC8: ; 0x021EDEC8 stmdb sp!, {r4, lr} mov r4, r0 - bl FUN_0209A60C + bl SOC_GetHostID cmp r0, #0 beq _021EDF00 mov r0, r4 @@ -24456,7 +24456,7 @@ MOD04_021EDF58: ; 0x021EDF58 mov r2, #4 mov r0, r4 str r2, [r1] - bl FUN_0209A2C0 + bl SOC_Startup cmp r0, #0 moveq r0, #0xc ldmeqia sp!, {r4, r5, r6, pc} @@ -25236,7 +25236,7 @@ MOD04_021EE9E0: ; 0x021EE9E0 cmp r1, r0 bne _021EEA58 mov r0, r5 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 @@ -26554,7 +26554,7 @@ MOD04_021EFB38: ; 0x021EFB38 stmdb sp!, {lr} sub sp, sp, #4 add r1, sp, #0 - bl FUN_0209A224 + bl SOC_InetAtoN cmp r0, #0 mvneq r0, #0 ldrne r0, [sp] @@ -26569,7 +26569,7 @@ MOD04_021EFB5C: ; 0x021EFB5C ldr r2, [r4] mov r5, r1 strb r2, [r5] - bl FUN_0209A650 + bl SOC_GetSockName ldrb r2, [r5] mvn r1, #0 str r2, [r4] @@ -26619,7 +26619,7 @@ _021EFBE8: add ip, sp, #4 strb lr, [sp, #4] str ip, [sp] - bl FUN_0209A7D0 + bl SOC_SendTo mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #0x10 @@ -26629,7 +26629,7 @@ _021EFBE8: MOD04_021EFC24: ; 0x021EFC24 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_0209A858 + bl SOC_Send mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26644,7 +26644,7 @@ MOD04_021EFC40: ; 0x021EFC40 ldr ip, [r4] strb ip, [r5] str r5, [sp] - bl FUN_0209A880 + bl SOC_RecvFrom ldrb r2, [r5] mvn r1, #0 str r2, [r4] @@ -26656,7 +26656,7 @@ MOD04_021EFC40: ; 0x021EFC40 MOD04_021EFC78: ; 0x021EFC78 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_0209A91C + bl SOC_Read mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26670,7 +26670,7 @@ MOD04_021EFC94: ; 0x021EFC94 ldr r2, [r4] mov r5, r1 strb r2, [r5] - bl FUN_0209A504 + bl SOC_Accept ldrb r2, [r5] mvn r1, #0 str r2, [r4] @@ -26682,7 +26682,7 @@ MOD04_021EFC94: ; 0x021EFC94 MOD04_021EFCC8: ; 0x021EFCC8 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_0209A588 + bl SOC_Listen mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26703,7 +26703,7 @@ _021EFCF4: bne _021EFCF4 add r1, sp, #0 strb r2, [sp] - bl FUN_0209A944 + bl SOC_Connect mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #8 @@ -26729,7 +26729,7 @@ _021EFD4C: bne _021EFD4C add r1, sp, #0 strb r2, [sp] - bl FUN_0209A9A4 + bl SOC_Bind mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #8 @@ -26739,7 +26739,7 @@ _021EFD4C: MOD04_021EFD80: ; 0x021EFD80 stmdb sp!, {lr} sub sp, sp, #4 - bl thunk_FUN_020995dc + bl SOC_Shutdown mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26749,7 +26749,7 @@ MOD04_021EFD80: ; 0x021EFD80 MOD04_021EFD9C: ; 0x021EFD9C stmdb sp!, {lr} sub sp, sp, #4 - bl thunk_FUN_0209996c + bl SOC_Close mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26759,7 +26759,7 @@ MOD04_021EFD9C: ; 0x021EFD9C MOD04_021EFDB8: ; 0x021EFDB8 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_0209A9D0 + bl SOC_Socket mvn r1, #0 bl MOD04_021EFDD4 add sp, sp, #4 @@ -26829,9 +26829,9 @@ MOD04_021EFE70: ; 0x021EFE70 strh r3, [r1, #0xa] str r2, [r1, #0xc] str r3, [r0] - bl FUN_02099C78 + bl SOCL_GetHostID ldr r1, _021EFEF8 ; =0x02210F50 - bl FUN_0209A174 + bl SOC_U32to4U8 ldr r2, _021EFEF8 ; =0x02210F50 ldr r0, [r2] cmp r0, #0 @@ -26904,7 +26904,7 @@ MOD04_021EFF5C: ; 0x021EFF5C add r0, sp, #0 mov r1, #1 strh r2, [sp, #6] - bl FUN_0209A0AC + bl SOC_Poll cmp r0, #0 addlt sp, sp, #8 mvnlt r0, #0 @@ -27050,13 +27050,13 @@ MOD04_021F017C: ; 0x021F017C mov r1, #3 mov r2, #0 mov r5, r0 - bl FUN_0209A4B4 + bl SOC_Fcntl cmp r4, #0 bicne r2, r0, #4 orreq r2, r0, #4 mov r0, r5 mov r1, #4 - bl FUN_0209A4B4 + bl SOC_Fcntl cmp r0, #0 moveq r0, #1 movne r0, #0 @@ -32277,7 +32277,7 @@ _021F4AD0: ldmia sp!, {r4, r5, r6, pc} _021F4B0C: ldr r0, _021F4C30 ; =0x0220DD90 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 bne _021F4B48 ldr r2, _021F4C34 ; =0x0220E144 @@ -39046,7 +39046,7 @@ _021FAB54: ldmia sp!, {r4, r5, r6, pc} _021FAB90: ldr r0, _021FACA8 ; =0x0220E860 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 bne _021FABCC ldr r2, _021FACAC ; =0x0220EBC4 @@ -45132,7 +45132,7 @@ _021FFE40: cmp r5, r0 bne _021FFE84 mov r0, r8 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 addeq sp, sp, #0x104 moveq r0, #0 @@ -45176,7 +45176,7 @@ _021FFEE0: beq _021FFF18 add r0, sp, #0 ldmia r0, {r0} - bl FUN_0209A27C + bl SOC_InetNtoA mov r2, r0 ldr r1, _021FFF6C ; =0x0220F008 mov r0, r5 @@ -45186,7 +45186,7 @@ _021FFEE0: _021FFF18: add r0, sp, #0 ldmia r0, {r0} - bl FUN_0209A27C + bl SOC_InetNtoA mov r2, r0 ldr r1, _021FFF70 ; =0x0220F010 mov r0, r5 @@ -45879,7 +45879,7 @@ MOD04_022008A0: ; 0x022008A0 cmp r0, r1 ldmneia sp!, {r4, pc} mov r0, r4 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 moveq r0, #0 ldrne r0, [r0, #0xc] @@ -46381,7 +46381,7 @@ _02200F8C: bl MOD04_022021C0 add r0, r5, r8, lsl #2 ldmia r0, {r0} - bl FUN_0209A27C + bl SOC_InetNtoA mov r1, r0 mov r0, r6 bl MOD04_022021C0 @@ -47603,7 +47603,7 @@ _022020D0: cmp r0, #0 beq _0220211C mov r0, r7 - bl FUN_0209A6EC + bl SOC_GetHostByAddr movs r4, r0 addeq sp, sp, #4 moveq r0, #0 @@ -52308,7 +52308,7 @@ _02206038: cmp r0, r1 bne _022060A4 add r0, sp, #8 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 addeq sp, sp, #0x88 moveq r0, #2 @@ -56591,12 +56591,12 @@ MOD04_022099C0: ; 0x022099C0 moveq r2, #7 add r6, r0, r2 mov r0, r6 - bl FUN_0209A224 + bl SOC_InetAtoN cmp r0, #0 ldrne r0, [sp] bne _02209A54 mov r0, r6 - bl FUN_02099D88 + bl SOCL_Resolve cmp r0, #0 addeq sp, sp, #8 moveq r0, #0 @@ -56837,7 +56837,7 @@ MOD04_02209D40: ; 0x02209D40 ldmltia sp!, {pc} mov r0, r1 mov r1, #2 - bl thunk_FUN_020995dc + bl SOC_Shutdown add sp, sp, #4 ldmfd sp!, {pc} @@ -56849,7 +56849,7 @@ MOD04_02209D68: ; 0x02209D68 mov r1, r2 mov r2, r3 ldr r3, [sp, #8] - bl FUN_0209A858 + bl SOC_Send cmp r0, #0 ldmgeia sp!, {r4, pc} ldr r1, [r4, #4] @@ -56872,7 +56872,7 @@ MOD04_02209DB4: ; 0x02209DB4 mov r1, r2 mov r2, r3 ldr r3, [sp, #8] - bl FUN_0209A91C + bl SOC_Read cmp r0, #0 ldmgeia sp!, {r4, pc} ldr r1, [r4, #4] @@ -56907,7 +56907,7 @@ MOD04_02209E00: ; 0x02209E00 strb lr, [sp, #1] strh r3, [sp, #2] str r2, [sp, #4] - bl FUN_0209A944 + bl SOC_Connect cmp r0, #0 bge _02209E6C ldr r0, [r4, #4] @@ -56928,7 +56928,7 @@ MOD04_02209E7C: ; 0x02209E7C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r1 mov r0, r8 - bl thunk_FUN_0209996c + bl SOC_Close cmp r0, #0 ldmneia sp!, {r4, r5, r6, r7, r8, pc} mov r7, #0 @@ -56942,7 +56942,7 @@ _02209EA8: add r7, r7, #0x1f4 _02209EB4: mov r0, r8 - bl thunk_FUN_0209996c + bl SOC_Close cmp r0, r5 ldmneia sp!, {r4, r5, r6, r7, r8, pc} cmp r7, r4 @@ -56959,7 +56959,7 @@ MOD04_02209ED4: ; 0x02209ED4 mov r0, #2 mov r1, #1 mov r2, #0 - bl FUN_0209A9D0 + bl SOC_Socket movs r4, r0 bmi _02209F4C ldr r0, [r5, #8] @@ -56977,11 +56977,11 @@ MOD04_02209ED4: ; 0x02209ED4 ldr r1, [r5, #0x20] str r2, [r1, #0x810] ldr r1, [r5, #0x20] - bl FUN_0209AAD0 + bl SOCL_EnableSsl cmp r0, #0 bge _02209F4C mov r0, r4 - bl thunk_FUN_0209996c + bl SOC_Close mvn r4, #0 _02209F4C: mov r0, r4 diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s index 5cb48aa3..4eadd8c7 100644 --- a/arm9/modules/13/asm/module_13_thumb.s +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -215,7 +215,7 @@ MOD13_02217440: ; 0x02217440 ldr r4, [sp, #0x10] strb r5, [r4] str r4, [sp] - bl FUN_0209A7D0 + bl SOC_SendTo add sp, #4 pop {r4, r5} pop {r3} @@ -250,7 +250,7 @@ MOD13_02217458: ; 0x02217458 add r0, sp, #0 mov r1, #1 add r3, r4, #0 - bl FUN_0209A0AC + bl SOC_Poll add sp, #8 pop {r4, r5, r6} pop {r3} @@ -267,7 +267,7 @@ MOD13_022174A4: ; 0x022174A4 ldr r4, [sp, #0x10] strb r5, [r4] str r4, [sp] - bl FUN_0209A880 + bl SOC_RecvFrom add sp, #4 pop {r4, r5} pop {r3} @@ -323,7 +323,7 @@ _022174FA: MOD13_02217504: ; 0x02217504 push {lr} sub sp, #4 - bl THUNK_FUN_02099BC8 + bl SOC_Cleanup cmp r0, #0 bge _0221751A mov r0, #0 @@ -363,7 +363,7 @@ MOD13_02217530: ; 0x02217530 ldr r1, _0221758C ; =0x0223F7C8 str r0, [r1, #0x18] add r0, r1, #0 - bl FUN_0209A2C0 + bl SOC_Startup cmp r0, #0 bge _0221756A mov r0, #0 @@ -10807,7 +10807,7 @@ _0221C6FC: mov r0, #2 lsl r1, r0, #0 ldr r2, [sp, #0x10] - bl FUN_0209A9D0 + bl SOC_Socket add r4, r0, #0 cmp r4, #0 bge _0221C716 @@ -10831,7 +10831,7 @@ _0221C716: ldr r1, [sp, #0x18] str r1, [sp, #0x48] add r1, sp, #0x44 - bl FUN_0209A9A4 + bl SOC_Bind str r0, [sp, #4] cmp r0, #0 bge _0221C746 @@ -10851,7 +10851,7 @@ _0221C74C: cmp r0, r1 blo _0221C768 add r0, r4, #0 - bl thunk_FUN_0209996c + bl SOC_Close ldr r0, [sp, #0x1c] str r0, [sp, #4] mov r0, #1 @@ -10870,7 +10870,7 @@ _0221C768: ldr r1, _0221C9F8 ; =0x022427E4 ldr r2, _0221C9FC ; =0x00000800 mov r3, #4 - bl FUN_0209A880 + bl SOC_RecvFrom cmp r0, #0 bgt _0221C78C b _0221CA3C @@ -10916,7 +10916,7 @@ _0221C7D8: cmp r0, r1 blo _0221C7F4 add r0, r4, #0 - bl thunk_FUN_0209996c + bl SOC_Close ldr r0, [sp, #0x20] str r0, [sp, #4] mov r0, #1 @@ -10929,7 +10929,7 @@ _0221C7F4: ldr r1, _0221C9F8 ; =0x022427E4 ldr r2, _0221C9FC ; =0x00000800 mov r3, #4 - bl FUN_0209A880 + bl SOC_RecvFrom cmp r0, #0 ble _0221C86A ldr r0, _0221C9F8 ; =0x022427E4 @@ -11042,7 +11042,7 @@ _0221C8DE: ldr r1, _0221C9F8 ; =0x022427E4 ldr r2, _0221C9FC ; =0x00000800 mov r3, #4 - bl FUN_0209A880 + bl SOC_RecvFrom cmp r0, #0 ble _0221C932 ldr r0, _0221C9F8 ; =0x022427E4 @@ -11090,7 +11090,7 @@ _0221C932: cmp r0, #0xa blt _0221C95A add r0, r4, #0 - bl thunk_FUN_0209996c + bl SOC_Close ldr r0, [sp, #0x14] str r0, [sp, #4] mov r0, #1 @@ -11197,7 +11197,7 @@ _0221CA4C: cmp r4, #0 beq _0221CA56 add r0, r4, #0 - bl thunk_FUN_0209996c + bl SOC_Close _0221CA56: ldr r0, _0221CA70 ; =0x02241AC0 ldr r0, [r0] @@ -12531,9 +12531,9 @@ MOD13_0221D414: ; 0x0221D414 str r0, [sp, #8] ldr r0, _0221D454 ; =0x000001E6 strh r0, [r1, #2] - bl FUN_02099C78 + bl SOCL_GetHostID add r1, sp, #0xc - bl FUN_0209A174 + bl SOC_U32to4U8 str r4, [sp] add r0, r5, #0 add r1, sp, #4 @@ -12555,7 +12555,7 @@ MOD13_0221D458: ; 0x0221D458 add r1, r3, #0 ldr r2, [sp, #8] mov r3, #0 - bl FUN_0209A7D0 + bl SOC_SendTo cmp r0, #0 bge _0221D470 mov r0, #3 @@ -13228,7 +13228,7 @@ _0221D982: beq _0221D992 mov r1, #0 str r1, [r0] - bl THUNK_FUN_02099BC8 + bl SOC_Cleanup _0221D992: pop {r4, r5, r6} pop {r3} @@ -13379,7 +13379,7 @@ _0221DA9A: ldr r0, _0221DAE8 ; =0x02241AD0 str r1, [r0] ldr r0, _0221DAEC ; =0x0223F8D4 - bl FUN_0209A2C0 + bl SOC_Startup cmp r0, #0 bge _0221DABC mov r0, #1 diff --git a/arm9/modules/79/asm/module_79_arm.s b/arm9/modules/79/asm/module_79_arm.s index 9c6a0246..d737c74e 100644 --- a/arm9/modules/79/asm/module_79_arm.s +++ b/arm9/modules/79/asm/module_79_arm.s @@ -4723,7 +4723,7 @@ _022164D4: cmp r1, r0 bne _02216524 mov r0, r5 - bl FUN_0209A6EC + bl SOC_GetHostByAddr cmp r0, #0 moveq r0, #1 streq r0, [r4, #0xfc] -- cgit v1.2.3 From 9879097c8be35c1b85954f3556f3ebd0933c6796 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 15:50:37 -0400 Subject: Pull out libwcm --- arm9/arm9.lcf | 4 + arm9/asm/libVCT.s | 3743 ---------------------------------------------------- arm9/asm/libwcm.s | 3751 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 3755 insertions(+), 3743 deletions(-) create mode 100644 arm9/asm/libwcm.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 59de4650..656f0541 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -451,6 +451,7 @@ SECTIONS { SSL_sha1.o (.text) SSL_rca4.o (.text) SSL_biginteger.o (.text) + libwcm.o (.text) libVCT.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) @@ -733,6 +734,7 @@ SECTIONS { SSL_sha1.o (.rodata) SSL_rca4.o (.rodata) SSL_biginteger.o (.rodata) + libwcm.o (.rodata) libVCT.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) @@ -795,6 +797,7 @@ SECTIONS { SSL_sha1.o (.data) SSL_rca4.o (.data) SSL_biginteger.o (.data) + libwcm.o (.data) libVCT.o (.data) GX.o (.data) OS_irqHandler.o (.data) @@ -886,6 +889,7 @@ SECTIONS { SSL_sha1.o (.bss) SSL_rca4.o (.bss) SSL_biginteger.o (.bss) + libwcm.o (.bss) libVCT.o (.bss) GX.o (.bss) GX_state.o (.bss) diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s index e514c486..dcf17d22 100644 --- a/arm9/asm/libVCT.s +++ b/arm9/asm/libVCT.s @@ -6,15 +6,6 @@ .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 @@ -1576,30 +1567,6 @@ UNK_021067F0: ; 0x021067F0 .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 @@ -2210,3716 +2177,6 @@ UNK_021D2DFC: ; 0x021D2DFC .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 WCM_SendDCFData -WCM_SendDCFData: - 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 WCM_SetRecvDCFCallback -WCM_SetRecvDCFCallback: ; 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 WCM_GetApMacAddress -WCM_GetApMacAddress: - 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 diff --git a/arm9/asm/libwcm.s b/arm9/asm/libwcm.s new file mode 100644 index 00000000..7583bf9e --- /dev/null +++ b/arm9/asm/libwcm.s @@ -0,0 +1,3751 @@ + .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 + + .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 + + .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 WCM_SendDCFData +WCM_SendDCFData: + 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 WCM_SetRecvDCFCallback +WCM_SetRecvDCFCallback: ; 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 WCM_GetApMacAddress +WCM_GetApMacAddress: + 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 -- cgit v1.2.3 From f0dd1eeed8089f27b1960e96e48f28e46d8bb55b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 16:52:35 -0400 Subject: Split libwcm and name routines --- arm9/arm9.lcf | 12 +- arm9/asm/WCM_aplist.s | 408 ++++ arm9/asm/WCM_cpsif.s | 361 ++++ arm9/asm/WCM_system.s | 2748 ++++++++++++++++++++++++ arm9/asm/WCM_util.s | 156 ++ arm9/asm/libwcm.s | 3751 --------------------------------- arm9/global.inc | 38 +- arm9/modules/04/asm/arm_04.s | 46 +- arm9/modules/13/asm/module_13_thumb.s | 92 +- arm9/modules/80/asm/module_80.s | 2 +- arm9/modules/82/asm/module_82.s | 2 +- 11 files changed, 3775 insertions(+), 3841 deletions(-) create mode 100644 arm9/asm/WCM_aplist.s create mode 100644 arm9/asm/WCM_cpsif.s create mode 100644 arm9/asm/WCM_system.s create mode 100644 arm9/asm/WCM_util.s delete mode 100644 arm9/asm/libwcm.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 656f0541..098e71f8 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -451,7 +451,10 @@ SECTIONS { SSL_sha1.o (.text) SSL_rca4.o (.text) SSL_biginteger.o (.text) - libwcm.o (.text) + WCM_system.o (.text) + WCM_aplist.o (.text) + WCM_cpsif.o (.text) + WCM_util.o (.text) libVCT.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) @@ -734,7 +737,7 @@ SECTIONS { SSL_sha1.o (.rodata) SSL_rca4.o (.rodata) SSL_biginteger.o (.rodata) - libwcm.o (.rodata) + WCM_system.o (.rodata) libVCT.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) @@ -797,7 +800,6 @@ SECTIONS { SSL_sha1.o (.data) SSL_rca4.o (.data) SSL_biginteger.o (.data) - libwcm.o (.data) libVCT.o (.data) GX.o (.data) OS_irqHandler.o (.data) @@ -889,7 +891,9 @@ SECTIONS { SSL_sha1.o (.bss) SSL_rca4.o (.bss) SSL_biginteger.o (.bss) - libwcm.o (.bss) + WCM_system.o (.bss) + WCM_cpsif.o (.bss) + WCM_util.o (.bss) libVCT.o (.bss) GX.o (.bss) GX_state.o (.bss) diff --git a/arm9/asm/WCM_aplist.s b/arm9/asm/WCM_aplist.s new file mode 100644 index 00000000..69067574 --- /dev/null +++ b/arm9/asm/WCM_aplist.s @@ -0,0 +1,408 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start WcmAppendApList +WcmAppendApList: ; 0x020A7FB0 + stmdb sp!, {r4,lr} + mov r4, r0 + bl WCMi_GetSystemWork + 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 WcmSearchIndexedApList +WcmSearchIndexedApList: ; 0x020A8084 + stmdb sp!, {r4,lr} + mov r4, r0 + bl WCMi_GetSystemWork + 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 WcmSearchApList +WcmSearchApList: ; 0x020A80EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl WCMi_GetSystemWork + 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 WCM_CompareBssID + 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 WcmGetLastApList +WcmGetLastApList: ; 0x020A8170 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCMi_GetSystemWork + 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 WcmAllocApList +WcmAllocApList: ; 0x020A81B4 + stmdb sp!, {r4,lr} + bl WCMi_GetSystemWork + 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 WCMi_EntryApList +WCMi_EntryApList: ; 0x020A8298 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl WCMi_GetSystemWork + 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 WcmSearchApList + movs r6, r0 + bne _020A8300 + bl WcmAllocApList + mov r6, r0 +_020A8300: + cmp r6, #0x0 + bne _020A8320 + add r0, r7, #0x2000 + ldr r0, [r0, #0x278] + cmp r0, #0x1 + bne _020A8320 + bl WcmGetLastApList + 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 WcmAppendApList + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start WCM_PointApList +WCM_PointApList: ; 0x020A8358 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + 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 WcmSearchIndexedApList + 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 WCM_LockApList +WCM_LockApList: ; 0x020A83D0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl WCMi_GetSystemWork + 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 WCM_CountApList +WCM_CountApList: ; 0x020A846C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + 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 WCM_ClearApList +WCM_ClearApList: ; 0x020A84D8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + bl WCMi_GetSystemWork + 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 diff --git a/arm9/asm/WCM_cpsif.s b/arm9/asm/WCM_cpsif.s new file mode 100644 index 00000000..09b72e80 --- /dev/null +++ b/arm9/asm/WCM_cpsif.s @@ -0,0 +1,361 @@ + .include "asm/macros.inc" + .include "global.inc" + + .bss + + .global wcmCpsifw +wcmCpsifw: ; 0x021CA870 + .space 0x2C + + .text + + arm_func_start WcmCpsifUnlockMutexInIRQ +WcmCpsifUnlockMutexInIRQ: ; 0x020A8534 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + ldr r1, _020A858C ; =OS_IrqHandler + 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 OS_IrqHandler + + arm_func_start WcmCpsifTryLockMutexInIRQ +WcmCpsifTryLockMutexInIRQ: ; 0x020A8590 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + bne _020A85B8 + ldr r1, _020A85D8 ; =OS_IrqHandler + 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 ; =OS_IrqHandler + 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 OS_IrqHandler + + arm_func_start WcmCpsifKACallback +WcmCpsifKACallback: ; 0x020A85DC + ldr ip, _020A85E8 ; =WcmCpsifUnlockMutexInIRQ + ldr r0, _020A85EC ; =wcmCpsifw+0xC + bx r12 + .balign 4 +_020A85E8: .word WcmCpsifUnlockMutexInIRQ +_020A85EC: .word wcmCpsifw+0xC + + arm_func_start WcmCpsifWmCallback +WcmCpsifWmCallback: ; 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 ; =wcmCpsifw + str r2, [r1, #0x24] + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A8628 + bl WCMi_ResetKeepAliveAlarm +_020A8628: + ldr r0, _020A8640 ; =wcmCpsifw+0x4 + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A863C: .word wcmCpsifw +_020A8640: .word wcmCpsifw+0x4 + + arm_func_start WCM_SendDCFData +WCM_SendDCFData: ; 0x020A8644 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + 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 ; =wcmCpsifw+0xC + bl OS_LockMutex + bl WCMi_GetSystemWork + movs r4, r0 + bne _020A86AC + ldr r0, _020A87AC ; =wcmCpsifw+0xC + 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 ; =wcmCpsifw+0xC + 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 ; =WcmCpsifWmCallback + 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: ; jump table + b _020A873C ; case 0 + b _020A873C ; case 1 + b _020A8758 ; case 2 + b _020A873C ; case 3 + b _020A873C ; case 4 + b _020A873C ; case 5 + b _020A873C ; case 6 + b _020A873C ; case 7 + b _020A873C ; case 8 +_020A873C: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8758: + ldr r0, _020A87B4 ; =wcmCpsifw+0x4 + bl OS_SleepThread + ldr r0, _020A87B8 ; =wcmCpsifw + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _020A8790 + cmp r0, #0x1 + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8790: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A87AC: .word wcmCpsifw+0xC +_020A87B0: .word WcmCpsifWmCallback +_020A87B4: .word wcmCpsifw+0x4 +_020A87B8: .word wcmCpsifw + + arm_func_start WCM_SetRecvDCFCallback +WCM_SetRecvDCFCallback: ; 0x020A87BC + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020A87DC ; =wcmCpsifw + str r4, [r1, #0x28] + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A87DC: .word wcmCpsifw + + arm_func_start WCM_GetApEssid +WCM_GetApEssid: ; 0x020A87E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + mov r4, r0 + mov r6, r7 + bl WCMi_GetSystemWork + 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 WCM_GetApMacAddress +WCM_GetApMacAddress: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, #0x0 + bl WCMi_GetSystemWork + 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 WCMi_CpsifSendNullPacket +WCMi_CpsifSendNullPacket: ; 0x020A88A8 + stmdb sp!, {r4,lr} + bl WCMi_GetSystemWork + 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 ; =wcmCpsifw+0xC + bl WcmCpsifTryLockMutexInIRQ + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, _020A892C ; =0x00002144 + ldr r0, _020A8930 ; =WcmCpsifKACallback + 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 ; =wcmCpsifw+0xC + bl WcmCpsifUnlockMutexInIRQ + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8928: .word wcmCpsifw+0xC +_020A892C: .word 0x00002144 +_020A8930: .word WcmCpsifKACallback + + arm_func_start WCMi_CpsifRecvCallback +WCMi_CpsifRecvCallback: ; 0x020A8934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8978 ; =wcmCpsifw + 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 wcmCpsifw + + arm_func_start WCMi_InitCpsif +WCMi_InitCpsif: ; 0x020A897C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A89C8 ; =wcmCpsifw + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A89CC ; =wcmCpsifw+0xC + 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 wcmCpsifw +_020A89CC: .word wcmCpsifw+0xC diff --git a/arm9/asm/WCM_system.s b/arm9/asm/WCM_system.s new file mode 100644 index 00000000..ff427b90 --- /dev/null +++ b/arm9/asm/WCM_system.s @@ -0,0 +1,2748 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global WCM_Bssid_Any +WCM_Bssid_Any: ; 0x020FF590 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 + + .global WCM_Essid_Any +WCM_Essid_Any: ; 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 + + .bss + + .global wcmw +wcmw: ; 0x021CA86C + .space 0x4 + + .text + + arm_func_start WcmCountBits +WcmCountBits: ; 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 WcmCountLeadingZero +WcmCountLeadingZero: ; 0x020A5A70 + clz r0, r0 + bx lr + + arm_func_start WcmWcmbReset +WcmWcmbReset: ; 0x020A5A78 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A5D80 + ldr r2, _020A5DA8 ; =wcmw + 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: ; jump table + b _020A5D4C ; case 0 + b _020A5D4C ; case 1 + b _020A5D4C ; case 2 + b _020A5D4C ; case 3 + b _020A5D4C ; case 4 + b _020A5AFC ; case 5 + b _020A5AFC ; case 6 + b _020A5B24 ; case 7 + b _020A5B4C ; case 8 + b _020A5C74 ; case 9 + b _020A5CA4 ; case 10 + b _020A5D4C ; case 11 + b _020A5C74 ; case 12 + b _020A5CD4 ; case 13 +_020A5AFC: + mov r0, #0x3 + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A5DAC ; =0x000008F5 + mov r2, r1 + mov r0, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5B24: + mov r0, #0x3 + bl WcmSetPhase + mov r0, #0x0 + ldr r3, _020A5DB0 ; =0x000008FB + mov r1, r0 + mov r2, r0 + bl WcmNotify + 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 ; =WcmWmcbConnect + 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 WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw + ldr r3, _020A5DB8 ; =0x0000091C + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C14: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw + ldr r3, _020A5DBC ; =0x00000925 + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C44: + mov r0, #0x3 + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw + ldr r3, _020A5DC0 ; =0x0000092D + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C74: + mov r0, #0x3 + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw + ldr r3, _020A5DC4 ; =0x00000935 + ldr r1, [r0, #0x0] + mov r0, #0x0 + add r1, r1, #0x2140 + mov r2, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CA4: + mov r0, #0x3 + bl WcmSetPhase + ldr r1, _020A5DA8 ; =wcmw + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A5DC8 ; =0x0000093C + mov r2, r0 + add r1, r1, #0x2140 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CD4: + ldr r0, _020A5DCC ; =WcmWmcbCommon + 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 WcmSetPhase + mov r1, #0x0 + ldr r3, _020A5DD0 ; =0x0000094A + mov r2, r1 + mov r0, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D24: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A5DD4 ; =0x00000953 + mov r2, r1 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D4C: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw + ldr r3, _020A5DD8 ; =0x00000959 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + mov r1, #0x0 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D80: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x960 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A5DA8: .word wcmw +_020A5DAC: .word 0x000008F5 +_020A5DB0: .word 0x000008FB +_020A5DB4: .word WcmWmcbConnect +_020A5DB8: .word 0x0000091C +_020A5DBC: .word 0x00000925 +_020A5DC0: .word 0x0000092D +_020A5DC4: .word 0x00000935 +_020A5DC8: .word 0x0000093C +_020A5DCC: .word WcmWmcbCommon +_020A5DD0: .word 0x0000094A +_020A5DD4: .word 0x00000953 +_020A5DD8: .word 0x00000959 + + arm_func_start WcmWmcbEndDCF +WcmWmcbEndDCF: ; 0x020A5DDC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A5EF4 +_020A5DF4: ; jump table + b _020A5E08 ; case 0 + b _020A5EDC ; case 1 + b _020A5EF4 ; case 2 + b _020A5EDC ; case 3 + b _020A5EF4 ; case 4 +_020A5E08: + ldr r0, _020A5F24 ; =wcmw + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5E38 + mov r0, #0xa + bl WcmSetPhase + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E38: + ldr r0, _020A5F28 ; =WcmWmcbDisconnect + 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 WcmSetPhase + ldr r0, _020A5F24 ; =wcmw + ldr r3, _020A5F2C ; =0x000008B4 + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E94: + mov r0, #0xa + bl WcmSetPhase + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EAC: + mov r0, #0xb + bl WcmSetPhase + ldr r1, _020A5F24 ; =wcmw + mov r0, #0x7 + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r1, r1, #0x2140 + mov r3, #0x8c0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EDC: + mov r0, #0xa + bl WcmSetPhase + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EF4: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A5F24 ; =wcmw + ldr r3, _020A5F30 ; =0x000008D3 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A5F24: .word wcmw +_020A5F28: .word WcmWmcbDisconnect +_020A5F2C: .word 0x000008B4 +_020A5F30: .word 0x000008D3 + + arm_func_start WcmWmcbStartDCF +WcmWmcbStartDCF: ; 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 ; =wcmw + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5F94 + mov r0, #0x8 + bl WcmSetPhase + bl WcmWmReset + ldmia sp!, {r4,lr} + bx lr +_020A5F94: + mov r0, #0x9 + bl WcmSetPhase + ldr r1, _020A6048 ; =wcmw + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A604C ; =0x00000872 + mov r2, r0 + add r1, r1, #0x2140 + bl WcmNotify + 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 WCMi_ShelterRssi + ldr r0, [r4, #0x8] + mov r1, #0x620 + bl DC_InvalidateRange + ldr r0, [r4, #0x8] + bl WCMi_CpsifRecvCallback + ldmia sp!, {r4,lr} + bx lr +_020A5FF0: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A6048 ; =wcmw + ldrh r2, [r4, #0x4] + ldr r0, [r0, #0x0] + ldr r3, _020A6050 ; =0x00000881 + add r1, r0, #0x2140 + mov r0, #0x7 + bl WcmNotify + ldmia sp!, {r4,lr} + bx lr +_020A601C: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A6048 ; =wcmw + ldr r3, _020A6054 ; =0x0000088C + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A6048: .word wcmw +_020A604C: .word 0x00000872 +_020A6050: .word 0x00000881 +_020A6054: .word 0x0000088C + + arm_func_start WcmWmcbDisconnect +WcmWmcbDisconnect: ; 0x020A6058 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6108 +_020A6070: ; jump table + b _020A6084 ; case 0 + b _020A60F0 ; case 1 + b _020A6108 ; case 2 + b _020A60F0 ; case 3 + b _020A6108 ; case 4 +_020A6084: + ldr r0, _020A6138 ; =wcmw + ldr r1, [r0, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A60B4 + mov r0, #0xa + bl WcmSetPhase + bl WcmWmReset + 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 WcmSetPhase + ldr r1, _020A6138 ; =wcmw + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A613C ; =0x0000083D + mov r2, r0 + add r1, r1, #0x2140 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A60F0: + mov r0, #0xa + bl WcmSetPhase + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6108: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A6138 ; =wcmw + ldr r3, _020A6140 ; =0x0000084F + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6138: .word wcmw +_020A613C: .word 0x0000083D +_020A6140: .word 0x0000084F + + arm_func_start WcmWmcbConnect +WcmWmcbConnect: ; 0x020A6144 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r0, [r4, #0x2] + cmp r0, #0xc + addls pc, pc, r0, lsl #0x2 + b _020A638C +_020A615C: ; jump table + b _020A6190 ; case 0 + b _020A6364 ; case 1 + b _020A638C ; case 2 + b _020A638C ; case 3 + b _020A638C ; case 4 + b _020A638C ; case 5 + b _020A6378 ; case 6 + b _020A638C ; case 7 + b _020A638C ; case 8 + b _020A638C ; case 9 + b _020A638C ; case 10 + b _020A6378 ; case 11 + b _020A6378 ; case 12 +_020A6190: + ldrh r0, [r4, #0x8] + cmp r0, #0x9 + bgt _020A61D0 + cmp r0, #0x0 + addge pc, pc, r0, lsl #0x2 + b _020A6338 ; case 0 + b _020A6338 ; case 1 + b _020A6338 ; case 2 + b _020A6338 ; case 3 + b _020A6338 ; case 4 + b _020A6338 ; case 5 + b _020A6338 ; case 6 + b _020A63B0 ; case 7 + b _020A6258 ; case 8 + b _020A61E0 ; case 9 + b _020A61E0 ; case 10 +_020A61D0: + cmp r0, #0x1a + ldmeqia sp!, {r4,lr} + bxeq lr + b _020A6338 +_020A61E0: + ldr r1, _020A63B8 ; =wcmw + 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: ; jump table + b _020A6220 ; case 0 + b _020A6230 ; case 1 + b _020A6214 ; case 2 + b _020A63B0 ; case 3 + b _020A624C ; case 4 +_020A6214: + add r0, r2, #0x2200 + mov r1, #0x0 + strh r1, [r0, #0x82] +_020A6220: + mov r0, #0xc + bl WcmSetPhase + 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 WcmWmReset + ldmia sp!, {r4,lr} + bx lr +_020A6258: + ldr r1, _020A63B8 ; =wcmw + ldr r3, [r1, #0x0] + add r0, r3, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A6284 + mov r0, #0x8 + bl WcmSetPhase + bl WcmWmReset + 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 ; =WcmWmcbStartDCF + 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 WcmSetPhase + ldr r0, _020A63B8 ; =wcmw + ldr r3, _020A63C4 ; =0x000007ED + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + ldmia sp!, {r4,lr} + bx lr +_020A6300: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw + ldr r3, _020A63C8 ; =0x000007F6 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify + ldmia sp!, {r4,lr} + bx lr +_020A632C: + bl WcmWmReset + ldmia sp!, {r4,lr} + bx lr +_020A6338: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw + ldrh r2, [r4, #0x8] + ldr r0, [r0, #0x0] + ldr r3, _020A63CC ; =0x00000804 + add r1, r0, #0x2140 + mov r0, #0x7 + bl WcmNotify + ldmia sp!, {r4,lr} + bx lr +_020A6364: + ldr r0, _020A63B8 ; =wcmw + ldrh r1, [r4, #0xe] + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0xf8] +_020A6378: + mov r0, #0x8 + bl WcmSetPhase + bl WcmWmReset + ldmia sp!, {r4,lr} + bx lr +_020A638C: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw + ldr r3, _020A63D0 ; =0x0000081B + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl WcmNotify +_020A63B0: + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A63B8: .word wcmw +_020A63BC: .word 0x000007D7 +_020A63C0: .word WcmWmcbStartDCF +_020A63C4: .word 0x000007ED +_020A63C8: .word 0x000007F6 +_020A63CC: .word 0x00000804 +_020A63D0: .word 0x0000081B + + arm_func_start WcmWmcbEndScan +WcmWmcbEndScan: ; 0x020A63D4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6438 +_020A63EC: ; jump table + b _020A6400 ; case 0 + b _020A6428 ; case 1 + b _020A6438 ; case 2 + b _020A6438 ; case 3 + b _020A6438 ; case 4 +_020A6400: + mov r0, #0x3 + bl WcmSetPhase + mov r0, #0x0 + ldr r3, _020A6460 ; =0x00000783 + mov r1, r0 + mov r2, r0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6428: + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6438: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A6464 ; =0x00000793 + mov r2, r1 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6460: .word 0x00000783 +_020A6464: .word 0x00000793 + + arm_func_start WcmWmcbScanEx +WcmWmcbScanEx: ; 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: ; jump table + b _020A649C ; case 0 + b _020A6704 ; case 1 + b _020A6714 ; case 2 + b _020A6714 ; case 3 + b _020A6714 ; case 4 +_020A649C: + ldr r0, _020A673C ; =wcmw + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x5 + bne _020A64D0 + mov r0, #0x6 + bl WcmSetPhase + mov r0, #0x0 + ldr r3, _020A6740 ; =0x00000704 + mov r1, r0 + mov r2, r0 + bl WcmNotify +_020A64D0: + ldr r1, _020A673C ; =wcmw + 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 WCMi_EntryApList + str r8, [sp, #0x0] + add r0, r5, r4, lsl #0x2 + ldr r2, [r0, #0x10] + mov r0, r7 + mov r1, r6 + mov r3, r5 + bl WcmNotifyEx + ldrh r0, [r5, #0xe] + add r4, r4, #0x1 + cmp r4, r0 + blt _020A6548 +_020A6588: + ldr r0, _020A673C ; =wcmw + 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 WcmCountBits + movs r1, r0 + beq _020A65F4 + ldr r0, _020A673C ; =wcmw + 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 WcmNotifyEx +_020A65F4: + ldrh r0, [r5, #0xa] + bl WcmCountLeadingZero + rsb r0, r0, #0x20 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl WcmGetNextScanChannel + ldr r1, _020A673C ; =wcmw + 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 ; =wcmw + ldr r2, _020A6750 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A6754 ; =WcmWmcbScanEx + 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 ; =WcmWmcbEndScan + bl WM_EndScan + mov r4, r0 + b _020A6694 +_020A6684: + bl WcmWmReset + 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 WcmSetPhase + mov r1, #0x0 + ldr r3, _020A675C ; =0x00000753 + mov r2, r1 + mov r0, #0x1 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A66DC: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A6760 ; =0x0000075C + mov r2, r1 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6704: + bl WcmWmReset + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6714: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A6764 ; =0x0000076D + mov r2, r1 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A673C: .word wcmw +_020A6740: .word 0x00000704 +_020A6744: .word 0x0000071A +_020A6748: .word 0x00003FFE +_020A674C: .word 0x00000728 +_020A6750: .word 0x00002288 +_020A6754: .word WcmWmcbScanEx +_020A6758: .word WcmWmcbEndScan +_020A675C: .word 0x00000753 +_020A6760: .word 0x0000075C +_020A6764: .word 0x0000076D + + arm_func_start WcmWmcbCommon +WcmWmcbCommon: ; 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: ; jump table + b _020A6798 ; case 0 + b _020A69CC ; case 1 + b _020A6A0C ; case 2 + b _020A6A0C ; case 3 + b _020A6A0C ; case 4 +_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: ; jump table + b _020A692C ; case 0 + b _020A692C ; case 1 + b _020A692C ; case 2 + b _020A67F4 ; case 3 + b _020A6804 ; case 4 + b _020A6868 ; case 5 + b _020A6890 ; case 6 +_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 ; =WcmWmcbCommon + 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 WcmSetPhase + mov r0, #0x0 + ldr r3, _020A6A50 ; =0x00000663 + mov r1, r0 + mov r2, r0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6840: + mov r0, #0xb + bl WcmSetPhase + mov r1, #0x0 + ldr r3, _020A6A54 ; =0x0000066C + mov r2, r1 + mov r0, #0x7 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6868: + mov r0, #0x3 + bl WcmSetPhase + mov r0, #0x0 + ldr r3, _020A6A58 ; =0x00000673 + mov r1, r0 + mov r2, r0 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6890: + ldr r0, _020A6A4C ; =WcmWmcbCommon + bl WM_Disable + mov r2, r0 + b _020A692C +_020A68A0: + ldr r0, _020A6A4C ; =WcmWmcbCommon + mov r1, #0x0 + bl WM_SetBeaconIndication + mov r2, r0 + b _020A692C +_020A68B4: + ldr r1, _020A6A5C ; =wcmw + ldr r0, _020A6A4C ; =WcmWmcbCommon + 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 ; =wcmw + 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 ; =WcmWmcbConnect + 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 WcmSetPhase + ldr r0, _020A6A5C ; =wcmw + 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 WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A698C: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw + 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 WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A69CC: + mov r0, #0xc + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw + 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 WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6A0C: + mov r0, #0xb + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw + 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 WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6A4C: .word WcmWmcbCommon +_020A6A50: .word 0x00000663 +_020A6A54: .word 0x0000066C +_020A6A58: .word 0x00000673 +_020A6A5C: .word wcmw +_020A6A60: .word WcmWmcbConnect +_020A6A64: .word 0x000006AF +_020A6A68: .word 0x000006B8 +_020A6A6C: .word 0x000006DE +_020A6A70: .word 0x000006E8 + + arm_func_start WcmWmcbIndication +WcmWmcbIndication: ; 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 ; =wcmw + 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: ; jump table + b _020A6AEC ; case 0 + b _020A6B00 ; case 1 + b _020A6B10 ; case 2 + b _020A6B18 ; case 3 + b _020A6B00 ; case 4 +_020A6AEC: + mov r0, #0xc + bl WcmSetPhase + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B00: + bl WcmWmReset + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B10: + mov r0, #0xc + bl WcmSetPhase +_020A6B18: + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B24: .word wcmw + + arm_func_start WcmWmReset +WcmWmReset: ; 0x020A6B28 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020A6B98 ; =wcmw + 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 ; =WcmWcmbReset + 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 WcmSetPhase + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x610 + bl WcmNotify + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B98: .word wcmw +_020A6B9C: .word WcmWcmbReset + + arm_func_start WcmKeepAliveAlarm +WcmKeepAliveAlarm: ; 0x020A6BA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCMi_CpsifSendNullPacket + bl WCMi_ResetKeepAliveAlarm + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start WCMi_ResetKeepAliveAlarm +WCMi_ResetKeepAliveAlarm: ; 0x020A6BBC + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + bl OS_DisableInterrupts + ldr r2, _020A6C28 ; =wcmw + ldr r1, _020A6C2C ; =0x000022CC + ldr r2, [r2, #0x0] + mov r4, r0 + add r0, r2, r1 + bl OS_CancelAlarm + ldr r0, _020A6C28 ; =wcmw + 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 ; =WcmKeepAliveAlarm + 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 wcmw +_020A6C2C: .word 0x000022CC +_020A6C30: .word 0x022F5341 +_020A6C34: .word WcmKeepAliveAlarm + + arm_func_start WcmSetPhase +WcmSetPhase: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A6CD0 ; =wcmw + 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 ; =wcmw + 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 ; =wcmw + str r2, [sp, #0x0] + ldr r5, [r0, #0x0] + ldr r0, _020A6CD4 ; =0x000022CC + ldr r1, _020A6CD8 ; =0x022F5341 + ldr r3, _020A6CDC ; =WcmKeepAliveAlarm + 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 wcmw +_020A6CD4: .word 0x000022CC +_020A6CD8: .word 0x022F5341 +_020A6CDC: .word WcmKeepAliveAlarm + + arm_func_start WcmNotifyEx +WcmNotifyEx: ; 0x020A6CE0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr ip, _020A6D38 ; =wcmw + 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 wcmw + + arm_func_start WcmNotify +WcmNotify: ; 0x020A6D3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr ip, _020A6D88 ; =wcmw + 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 WcmNotifyEx + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6D88: .word wcmw + + arm_func_start WcmGetNextScanChannel +WcmGetNextScanChannel: ; 0x020A6D8C + stmdb sp!, {r4-r6,lr} + ldr r1, _020A6E24 ; =wcmw + 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 wcmw +_020A6E28: .word 0x4EC4EC4F +_020A6E2C: .word 0x0000000D + + arm_func_start WcmInitOption +WcmInitOption: ; 0x020A6E30 + ldr r0, _020A6E48 ; =wcmw + ldr r1, _020A6E4C ; =0x00AAA082 + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x264] + bx lr + .balign 4 +_020A6E48: .word wcmw +_020A6E4C: .word 0x00AAA082 + + arm_func_start WcmEditScanExParam +WcmEditScanExParam: ; 0x020A6E50 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r0, r2 + mov r4, r1 + bl WCM_UpdateOption + ldr r2, _020A6FF4 ; =wcmw + 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 WcmGetNextScanChannel + ldr r1, _020A6FF4 ; =wcmw + 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 ; =wcmw + 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 ; =wcmw + ldr r1, _020A6FF8 ; =0x00002292 + ldr r2, [r0, #0x0] + ldr r0, _020A6FFC ; =WCM_Bssid_Any + add r1, r2, r1 + mov r2, #0x6 + bl MI_CpuCopy8 + b _020A6F40 +_020A6F24: + ldr r0, _020A6FF4 ; =wcmw + 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 ; =WCM_Essid_Any + cmp r4, r0 + bne _020A6F88 +_020A6F54: + ldr r0, _020A6FF4 ; =wcmw + ldr r1, _020A7004 ; =0x0000229C + ldr r2, [r0, #0x0] + ldr r0, _020A7000 ; =WCM_Essid_Any + add r1, r2, r1 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, _020A6FF4 ; =wcmw + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] + b _020A6FD4 +_020A6F88: + ldr r0, _020A6FF4 ; =wcmw + 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 ; =wcmw + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] +_020A6FD4: + ldr r0, _020A6FF4 ; =wcmw + 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 wcmw +_020A6FF8: .word 0x00002292 +_020A6FFC: .word WCM_Bssid_Any +_020A7000: .word WCM_Essid_Any +_020A7004: .word 0x0000229C + + arm_func_start WcmConfigure +WcmConfigure: ; 0x020A7008 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + bne _020A705C + ldr r1, _020A7134 ; =wcmw + 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 ; =wcmw + 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 ; =wcmw + ldr r1, [r5, #0xc] + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x278] +_020A7118: + ldr r0, _020A7134 ; =wcmw + 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 wcmw + + arm_func_start WCMi_GetSystemWork +WCMi_GetSystemWork: + ldr r0, _020A7144 ; =wcmw + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020A7144: .word wcmw + + arm_func_start WCM_UpdateOption +WCM_UpdateOption: ; 0x020A7148 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A71EC ; =wcmw + 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 wcmw +_020A71F0: .word 0x00003FFE +_020A71F4: .word 0x0000A082 + + arm_func_start WCM_GetPhase +WCM_GetPhase: ; 0x020A71F8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7228 ; =wcmw + 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 wcmw + + arm_func_start WCM_TerminateAsync +WCM_TerminateAsync: ; 0x020A722C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r1, _020A747C ; =wcmw + 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: ; jump table + b _020A7308 ; case 0 + b _020A72C0 ; case 1 + b _020A7308 ; case 2 + b _020A7320 ; case 3 + b _020A7308 ; case 4 + b _020A7308 ; case 5 + b _020A72D4 ; case 6 + b _020A7308 ; case 7 + b _020A7308 ; case 8 + b _020A7320 ; case 9 + b _020A7308 ; case 10 + b _020A7308 ; case 11 + b _020A7320 ; case 12 + b _020A72AC ; case 13 +_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 WcmSetPhase + ldr r1, _020A747C ; =wcmw + 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 WcmSetPhase + ldr r0, _020A747C ; =wcmw + 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 WcmSetPhase + ldr r1, _020A747C ; =wcmw + 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 ; =WcmWmcbCommon + bl WM_Disable + b _020A73F0 +_020A73C8: + ldr r0, _020A7480 ; =WcmWmcbCommon + bl WM_PowerOff + b _020A73F0 +_020A73D4: + ldr r1, _020A747C ; =wcmw + ldr r0, _020A7484 ; =WcmWcmbReset + 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 WcmSetPhase + ldr r0, _020A747C ; =wcmw + 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 WcmSetPhase + 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 wcmw +_020A7480: .word WcmWmcbCommon +_020A7484: .word WcmWcmbReset + + arm_func_start WCM_DisconnectAsync +WCM_DisconnectAsync: ; 0x020A7488 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A75B8 ; =wcmw + 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 WcmSetPhase + ldr r0, _020A75B8 ; =wcmw + mov r1, #0x6 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A75A4 +_020A7530: + ldr r0, _020A75BC ; =WcmWmcbEndDCF + 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 WcmSetPhase + ldr r0, _020A75B8 ; =wcmw + 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 WcmSetPhase + 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 wcmw +_020A75BC: .word WcmWmcbEndDCF + + arm_func_start WCM_ConnectAsync +WCM_ConnectAsync: ; 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 ; =wcmw + 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 ; =wcmw + mov r0, r7 + ldr r1, [r1, #0x0] + mov r2, #0xc0 + add r1, r1, #0x2140 + bl MI_CpuCopy8 + ldr r1, _020A7814 ; =wcmw + mov r0, r5 + ldr r1, [r1, #0x0] + add r1, r1, #0x2100 + ldrh r2, [r1, #0x6e] + orr r2, r2, #0x3 + strh r2, [r1, #0x70] + bl WCM_UpdateOption + 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 ; =WcmWmcbCommon + 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 WcmSetPhase + ldr r0, _020A7814 ; =wcmw + 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 WcmSetPhase + 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 wcmw +_020A7818: .word 0x0000FFFF +_020A781C: .word WcmWmcbCommon + + arm_func_start WCM_EndSearchAsync +WCM_EndSearchAsync: ; 0x020A7820 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A78D4 ; =wcmw + 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 WcmSetPhase + ldr r0, _020A78D4 ; =wcmw + 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 wcmw + + arm_func_start WCM_BeginSearchAsync +WCM_BeginSearchAsync: ; 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 ; =wcmw + 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 WcmEditScanExParam + 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 WcmEditScanExParam + 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 WcmEditScanExParam + ldr r0, _020A7A84 ; =wcmw + 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 ; =wcmw + ldr r2, _020A7A88 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A7A8C ; =WcmWmcbScanEx + 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 WcmSetPhase + ldr r0, _020A7A84 ; =wcmw + 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 WcmSetPhase + 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 wcmw +_020A7A88: .word 0x00002288 +_020A7A8C: .word WcmWmcbScanEx + + arm_func_start WCM_SearchAsync +WCM_SearchAsync: ; 0x020A7A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020A7AA8 + cmp r1, #0x0 + bne _020A7AB8 +_020A7AA8: + bl WCM_EndSearchAsync + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A7AB8: + bl WCM_BeginSearchAsync + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start WCM_CleanupAsync +WCM_CleanupAsync: ; 0x020A7AC8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7BCC ; =wcmw + 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 ; =WcmWmcbCommon + 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 WcmSetPhase + ldr r0, _020A7BCC ; =wcmw + 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 WcmSetPhase + 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 wcmw +_020A7BD0: .word WcmWmcbCommon + + arm_func_start WCM_StartupAsync +WCM_StartupAsync: ; 0x020A7BD4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r1, _020A7E00 ; =wcmw + 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 WcmConfigure + 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 ; =wcmw + 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: ; jump table + b _020A7CFC ; case 0 + b _020A7CE0 ; case 1 + b _020A7CE0 ; case 2 + b _020A7CB0 ; case 3 + b _020A7CCC ; case 4 + b _020A7CE0 ; case 5 + b _020A7CE0 ; case 6 +_020A7CB0: + mov r0, #0xb + bl WcmSetPhase + 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 WcmSetPhase + 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 WcmSetPhase + 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 ; =WcmWmcbIndication + bl WM_SetIndCallback + cmp r0, #0x0 + beq _020A7D70 + mov r0, #0xb + bl WcmSetPhase + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D70: + ldr r0, _020A7E08 ; =WcmWmcbCommon + 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 WcmSetPhase + ldr r0, _020A7E00 ; =wcmw + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7DEC +_020A7DB4: + mov r0, #0xc + bl WcmSetPhase + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7DD0: + mov r0, #0xb + bl WcmSetPhase + 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 wcmw +_020A7E04: .word WcmWmcbIndication +_020A7E08: .word WcmWmcbCommon + + arm_func_start WCM_Finish +WCM_Finish: ; 0x020A7E0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r2, _020A7E7C ; =wcmw + 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 wcmw + + arm_func_start WCM_Init +WCM_Init: ; 0x020A7E80 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r2, _020A7FA8 ; =wcmw + 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 WcmInitOption + bl WCMi_InitCpsif + 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 ; =wcmw + 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 wcmw +_020A7FAC: .word 0x000022CC diff --git a/arm9/asm/WCM_util.s b/arm9/asm/WCM_util.s new file mode 100644 index 00000000..e5ba5702 --- /dev/null +++ b/arm9/asm/WCM_util.s @@ -0,0 +1,156 @@ + .include "asm/macros.inc" + .include "global.inc" + + .bss + + .global wcmRssiIndex +wcmRssiIndex: ; 0x021CA89C + .space 0x4 + + .global wcmRssi +wcmRssi: ; 0x021CA8A0 + .space 0x10 + + .text + + arm_func_start WCMi_ShelterRssi +WCMi_ShelterRssi: ; 0x020A89D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020A8A48 ; =wcmRssiIndex + 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 ; =wcmRssi + 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 wcmRssiIndex +_020A8A4C: .word wcmRssi + + arm_func_start WcmGetLinkLevel +WcmGetLinkLevel: ; 0x020A8A50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCMi_GetRssiAverage + 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 WCMi_GetRssiAverage +WCMi_GetRssiAverage: ; 0x020A8A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8B20 ; =wcmRssiIndex + mov r0, #0x0 + ldrb r1, [r1, #0x0] + cmp r1, #0x10 + bls _020A8ADC + ldr r2, _020A8B24 ; =wcmRssi + 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 ; =wcmRssi +_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 wcmRssiIndex +_020A8B24: .word wcmRssi + + arm_func_start WCM_GetLinkLevel +WCM_GetLinkLevel: ; 0x020A8B28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + mov r4, #0x0 + beq _020A8B60 + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A8B60 + bl WcmGetLinkLevel + 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 WCM_CompareBssID +WCM_CompareBssID: + 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 diff --git a/arm9/asm/libwcm.s b/arm9/asm/libwcm.s deleted file mode 100644 index 7583bf9e..00000000 --- a/arm9/asm/libwcm.s +++ /dev/null @@ -1,3751 +0,0 @@ - .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 - - .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 - - .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 WCM_SendDCFData -WCM_SendDCFData: - 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 WCM_SetRecvDCFCallback -WCM_SetRecvDCFCallback: ; 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 WCM_GetApMacAddress -WCM_GetApMacAddress: - 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 diff --git a/arm9/global.inc b/arm9/global.inc index 62d708f6..12497154 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5515,21 +5515,21 @@ .extern FUN_02097484 .extern FUN_02097490 .extern FUN_02097508 -.extern FUN_020A71F8 -.extern FUN_020A722C -.extern FUN_020A7488 -.extern FUN_020A75C0 -.extern FUN_020A7820 -.extern FUN_020A7A90 -.extern FUN_020A7AC8 -.extern FUN_020A7BD4 -.extern FUN_020A7E0C -.extern FUN_020A7E80 -.extern FUN_020A8358 -.extern FUN_020A83D0 -.extern FUN_020A846C -.extern FUN_020A84D8 -.extern FUN_020A87E0 +.extern WCM_GetPhase +.extern WCM_TerminateAsync +.extern WCM_DisconnectAsync +.extern WCM_ConnectAsync +.extern WCM_EndSearchAsync +.extern WCM_SearchAsync +.extern WCM_CleanupAsync +.extern WCM_StartupAsync +.extern WCM_Finish +.extern WCM_Init +.extern WCM_PointApList +.extern WCM_LockApList +.extern WCM_CountApList +.extern WCM_ClearApList +.extern WCM_GetApEssid .extern FUN_020A8BA4 .extern FUN_020A8BB0 .extern FUN_020A8BBC @@ -7889,3 +7889,11 @@ .extern wcstombs .extern wctomb .extern wmemcpy +.extern WCMi_GetSystemWork +.extern WCM_CompareBssID +.extern WCMi_ResetKeepAliveAlarm +.extern WCMi_CpsifSendNullPacket +.extern WCMi_InitCpsif +.extern WCMi_EntryApList +.extern WCMi_CpsifRecvCallback +.extern WCMi_ShelterRssi diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 129acd10..1f9a41fa 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -1442,7 +1442,7 @@ _021DA180: mov r1, #0xe bl OS_SNPrintf add r0, sp, #0x14 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r5, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -5473,7 +5473,7 @@ _021DDA4C: cmp r0, #3 bge _021DDAB0 add r0, sp, #0 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r5, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -5686,7 +5686,7 @@ _021DDD28: cmp r0, #0 addeq sp, sp, #4 ldmeqia sp!, {pc} - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 addeq sp, sp, #4 ldmeqia sp!, {pc} @@ -21692,7 +21692,7 @@ MOD04_021EBA28: ; 0x021EBA28 cmp r0, #4 bne _021EBAA8 mov r0, #0 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r4, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -21928,7 +21928,7 @@ MOD04_021EBC60: ; 0x021EBC60 ldr r0, _021EBE14 ; =0x02210E4C mov r1, #0x2300 ldr r0, [r0] - bl FUN_020A7E80 + bl WCM_Init cmp r0, #1 beq _021EBDF4 cmp r0, #4 @@ -22664,7 +22664,7 @@ _021EC7AC: .word 0x00000D0C MOD04_021EC7B0: ; 0x021EC7B0 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 - bl FUN_020A71F8 + bl WCM_GetPhase ldrb r2, [r6, #0xd13] add r3, r6, #0x470 mov r1, #0xc0 @@ -22731,7 +22731,7 @@ _021EC898: mov r0, r5 add r1, r6, r1 orr r2, r4, r2 - bl FUN_020A75C0 + bl WCM_ConnectAsync b _021EC8E0 _021EC8BC: cmp r0, #9 @@ -22878,7 +22878,7 @@ _021ECA8C: MOD04_021ECA98: ; 0x021ECA98 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #0xc addls pc, pc, r0, lsl #2 b _021ECB2C @@ -22901,19 +22901,19 @@ _021ECAE4: mov r0, #1 ldmfd sp!, {pc} _021ECAF0: - bl FUN_020A7E0C + bl WCM_Finish b _021ECB2C _021ECAF8: - bl FUN_020A7AC8 + bl WCM_CleanupAsync b _021ECB2C _021ECB00: - bl FUN_020A7820 + bl WCM_EndSearchAsync b _021ECB2C _021ECB08: - bl FUN_020A7488 + bl WCM_DisconnectAsync b _021ECB2C _021ECB10: - bl FUN_020A722C + bl WCM_TerminateAsync b _021ECB2C _021ECB18: mov r0, #0 @@ -23463,7 +23463,7 @@ MOD04_021ED218: ; 0x021ED218 bl MOD04_021EB798 mov r4, r0 mov r5, #9 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #0xc addls pc, pc, r0, lsl #2 b _021ED2F0 @@ -23503,13 +23503,13 @@ _021ED2A4: bl MOD04_021ED8D4 b _021ED2F0 _021ED2C0: - bl FUN_020A7820 + bl WCM_EndSearchAsync b _021ED2F0 _021ED2C8: - bl FUN_020A7488 + bl WCM_DisconnectAsync b _021ED2F0 _021ED2D0: - bl FUN_020A722C + bl WCM_TerminateAsync mov r0, #4 bl MOD04_021EB6F4 mov r5, #0x11 @@ -23532,7 +23532,7 @@ MOD04_021ED2FC: ; 0x021ED2FC movgt r2, #0xc ldr r2, [ip, r2, lsl #2] orr r2, r3, r2 - bl FUN_020A7A90 + bl WCM_SearchAsync add sp, sp, #4 ldmfd sp!, {pc} .align 2, 0 @@ -23623,7 +23623,7 @@ _021ED410: ldmloia sp!, {r4, r5, pc} _021ED448: strb r2, [r5, #0xd13] - bl FUN_020A7820 + bl WCM_EndSearchAsync cmp r0, #1 strneb r4, [r5, #0xd0e] movne r4, #7 @@ -24080,7 +24080,7 @@ MOD04_021EDA70: ; 0x021EDA70 mov r5, r0 bl MOD04_021EB720 mov r4, r0 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r4, #2 bne _021EDAB0 cmp r0, #3 @@ -24137,7 +24137,7 @@ _021EDB38: MOD04_021EDB44: ; 0x021EDB44 stmdb sp!, {r4, lr} sub sp, sp, #0x10 - bl FUN_020A71F8 + bl WCM_GetPhase mov r4, r0 mov r0, #0x10 bl MOD04_021EB798 @@ -24152,7 +24152,7 @@ MOD04_021EDB44: ; 0x021EDB44 bl MOD04_021ED17C ldr r1, _021EDBC8 ; =MOD04_021EC44C add r0, sp, #0 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #1 beq _021EDB9C cmp r0, #4 @@ -24476,7 +24476,7 @@ MOD04_021EDFBC: ; 0x021EDFBC mov r0, #0x10 bl MOD04_021EB798 mov r4, r0 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 bne _021EE064 sub r0, r5, #0xa diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s index 4eadd8c7..51681246 100644 --- a/arm9/modules/13/asm/module_13_thumb.s +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -4941,7 +4941,7 @@ _0221994E: ldr r2, [sp, #4] ldr r2, [r2, #0x28] bl MI_CpuCopy8 - bl FUN_020A84D8 + bl WCM_ClearApList mov r0, #0 ldr r1, [sp, #4] add r1, r1, #4 @@ -5769,7 +5769,7 @@ MOD13_02219F54: ; 0x02219F54 ldr r0, _0221A030 ; =0x02241A60 ldr r0, [r0] ldr r1, _0221A044 ; =0x00002300 - bl FUN_020A7E80 + bl WCM_Init cmp r0, #0 beq _02219FD4 add r0, r4, #0 @@ -5791,7 +5791,7 @@ _02219FDA: ldr r0, _0221A02C ; =0x02241A68 ldr r0, [r0] ldr r1, _0221A048 ; =MOD13_0221A3CC - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221A000 add r0, r4, #0 @@ -5886,7 +5886,7 @@ _0221A0A8: ldr r1, [r1] ldr r2, _0221A0EC ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A0DA mov r1, #8 @@ -5922,7 +5922,7 @@ MOD13_0221A0FC: ; 0x0221A0FC ldr r0, [r0] cmp r0, #3 bne _0221A136 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221A122 add r0, r4, #0 @@ -5973,7 +5973,7 @@ MOD13_0221A164: ; 0x0221A164 ldr r0, [r0] cmp r0, #7 bne _0221A190 - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 bne _0221A190 mov r1, #4 @@ -6007,7 +6007,7 @@ MOD13_0221A1A4: ; 0x0221A1A4 mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A1D6 mov r1, #4 @@ -6121,7 +6121,7 @@ _0221A27C: ldr r1, [r1] ldr r2, _0221A2DC ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A2CC mov r1, #6 @@ -6173,8 +6173,8 @@ MOD13_0221A2FC: ; 0x0221A2FC add r5, r0, #0 add r7, r1, #0 mov r0, #1 - bl FUN_020A83D0 - bl FUN_020A846C + bl WCM_LockApList + bl WCM_CountApList add r6, r0, #0 cmp r6, #0 ble _0221A336 @@ -6186,7 +6186,7 @@ _0221A31A: bge _0221A336 lsl r0, r4, #0x10 lsr r0, r0, #0x10 - bl FUN_020A8358 + bl WCM_PointApList add r1, r5, #0 mov r2, #0xc0 bl MIi_CpuCopy32 @@ -6196,7 +6196,7 @@ _0221A31A: blt _0221A31A _0221A336: mov r0, #0 - bl FUN_020A83D0 + bl WCM_LockApList add r0, r6, #0 add sp, #4 pop {r4, r5, r6, r7} @@ -6233,7 +6233,7 @@ _0221A374: mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6241,7 +6241,7 @@ _0221A374: pop {r3} bx r3 _0221A38A: - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6252,7 +6252,7 @@ _0221A39A: ldr r0, _0221A3C4 ; =0x02241A68 ldr r0, [r0] ldr r1, _0221A3C8 ; =MOD13_0221A3CC - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6335,7 +6335,7 @@ _0221A426: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A440 b _0221A750 @@ -6366,7 +6366,7 @@ _0221A462: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A478 b _0221A750 @@ -6510,7 +6510,7 @@ _0221A55E: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A578 b _0221A750 @@ -6533,7 +6533,7 @@ _0221A588: _0221A594: cmp r2, #2 bne _0221A5BE - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221A5A2 b _0221A750 @@ -6564,7 +6564,7 @@ _0221A5C4: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A5DA b _0221A750 @@ -6630,7 +6630,7 @@ _0221A638: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6649,7 +6649,7 @@ _0221A638: _0221A66A: cmp r2, #2 bne _0221A690 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6674,7 +6674,7 @@ _0221A690: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6718,7 +6718,7 @@ _0221A6E4: ldr r0, [r0] cmp r0, #2 bne _0221A750 - bl FUN_020A7E0C + bl WCM_Finish mov r1, #0 ldr r0, _0221A758 ; =0x02241A78 str r1, [r0] @@ -13768,7 +13768,7 @@ MOD13_0221DD4C: ; 0x0221DD4C ldr r0, _0221DE28 ; =0x02241AEC ldr r0, [r0] ldr r1, _0221DE3C ; =0x00002300 - bl FUN_020A7E80 + bl WCM_Init cmp r0, #0 beq _0221DDCC add r0, r4, #0 @@ -13790,7 +13790,7 @@ _0221DDD2: ldr r0, _0221DE24 ; =0x02241AB8 ldr r0, [r0] ldr r1, _0221DE40 ; =MOD13_0221E178 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221DDF8 add r0, r4, #0 @@ -13885,7 +13885,7 @@ _0221DEA0: ldr r1, [r1] ldr r2, _0221DEE4 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221DED2 mov r1, #8 @@ -13921,7 +13921,7 @@ MOD13_0221DEF4: ; 0x0221DEF4 ldr r0, [r0] cmp r0, #3 bne _0221DF2E - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221DF1A add r0, r4, #0 @@ -13972,7 +13972,7 @@ MOD13_0221DF5C: ; 0x0221DF5C ldr r0, [r0] cmp r0, #7 bne _0221DF88 - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 bne _0221DF88 mov r1, #4 @@ -14081,7 +14081,7 @@ _0221E02A: ldr r1, [r1] ldr r2, _0221E088 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E078 mov r1, #6 @@ -14133,8 +14133,8 @@ MOD13_0221E0A8: ; 0x0221E0A8 add r5, r0, #0 add r7, r1, #0 mov r0, #1 - bl FUN_020A83D0 - bl FUN_020A846C + bl WCM_LockApList + bl WCM_CountApList add r6, r0, #0 cmp r6, #0 ble _0221E0E2 @@ -14146,7 +14146,7 @@ _0221E0C6: bge _0221E0E2 lsl r0, r4, #0x10 lsr r0, r0, #0x10 - bl FUN_020A8358 + bl WCM_PointApList add r1, r5, #0 mov r2, #0xc0 bl MIi_CpuCopy32 @@ -14156,7 +14156,7 @@ _0221E0C6: blt _0221E0C6 _0221E0E2: mov r0, #0 - bl FUN_020A83D0 + bl WCM_LockApList add r0, r6, #0 add sp, #4 pop {r4, r5, r6, r7} @@ -14193,7 +14193,7 @@ _0221E120: mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14201,7 +14201,7 @@ _0221E120: pop {r3} bx r3 _0221E136: - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14212,7 +14212,7 @@ _0221E146: ldr r0, _0221E170 ; =0x02241AB8 ldr r0, [r0] ldr r1, _0221E174 ; =MOD13_0221E178 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14297,7 +14297,7 @@ _0221E1D6: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E1F0 b _0221E556 @@ -14328,7 +14328,7 @@ _0221E212: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221E228 b _0221E556 @@ -14472,7 +14472,7 @@ _0221E30E: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E328 b _0221E556 @@ -14495,7 +14495,7 @@ _0221E338: _0221E344: cmp r2, #2 bne _0221E36E - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221E352 b _0221E556 @@ -14526,7 +14526,7 @@ _0221E374: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221E38A b _0221E556 @@ -14592,7 +14592,7 @@ _0221E3E8: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E402 b _0221E556 @@ -14615,7 +14615,7 @@ _0221E412: _0221E41E: cmp r2, #2 bne _0221E448 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221E42C b _0221E556 @@ -14644,7 +14644,7 @@ _0221E448: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 beq _0221E556 mov r1, #3 @@ -14690,7 +14690,7 @@ _0221E4A0: ldr r0, [r0] cmp r0, #2 bne _0221E556 - bl FUN_020A7E0C + bl WCM_Finish mov r1, #0 ldr r0, _0221E518 ; =0x02241ADC str r1, [r0] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index de0e7672..bf202f2f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1346,7 +1346,7 @@ _0222DFB4: mvn r0, r0 cmp r4, r0 beq _0222DFCC - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 beq _0222DFC8 mov r4, #0xd diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 73c58a93..18e1984d 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -596,7 +596,7 @@ _0222DA18: mvn r0, r0 cmp r4, r0 beq _0222DA30 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 beq _0222DA2C mov r4, #5 -- cgit v1.2.3 From bc6eb26b8440caea28b42324b3158a9f2547c2b4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 18:35:54 -0400 Subject: Split libdwc --- arm9/arm9.lcf | 10 + arm9/asm/DWC_account.s | 847 +++++++++++ arm9/asm/DWC_backup.s | 959 ++++++++++++ arm9/asm/DWC_bm_init.s | 357 +++++ arm9/asm/DWC_init.s | 37 + arm9/asm/DWC_report.s | 2 + arm9/asm/DWC_util_wifiidtool.s | 458 ++++++ arm9/asm/unk_020281E0.s | 2 +- arm9/asm/unk_0202DB14.s | 2 +- arm9/asm/unk_020337E8.s | 16 +- arm9/asm/unk_02033874.s | 24 +- arm9/asm/unk_020910EC.s | 2660 ---------------------------------- arm9/global.inc | 89 +- arm9/modules/04/asm/arm_04.s | 108 +- arm9/modules/04/asm/thumb_04.s | 20 +- arm9/modules/13/asm/module_13_arm2.s | 40 +- arm9/modules/55/asm/module_55.s | 10 +- arm9/modules/56/asm/module_56.s | 4 +- arm9/modules/80/asm/module_80.s | 2 +- arm9/modules/82/asm/module_82.s | 2 +- 20 files changed, 2833 insertions(+), 2816 deletions(-) create mode 100644 arm9/asm/DWC_account.s create mode 100644 arm9/asm/DWC_backup.s create mode 100644 arm9/asm/DWC_bm_init.s create mode 100644 arm9/asm/DWC_init.s create mode 100644 arm9/asm/DWC_report.s create mode 100644 arm9/asm/DWC_util_wifiidtool.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 098e71f8..65774dac 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -431,6 +431,11 @@ SECTIONS { unk_0208AC14.o (.text) custom_allocator.o (.text) unk_020910EC.o (.text) + DWC_backup.o (.text) + DWC_bm_init.o (.text) + DWC_util_wifiidtool.o (.text) + DWC_init.o (.text) + DWC_account.o (.text) SOC_socl_startup.o (.text) SOC_socl_command.o (.text) SOC_socl_create.o (.text) @@ -730,6 +735,8 @@ SECTIONS { unk_02089F24.o (.rodata) unk_0208A998.o (.rodata) unk_020910EC.o (.rodata) + DWC_bm_init.o (.rodata) + DWC_util_wifiidtool.o (.rodata) SOC_soc.o (.rodata) CPS_network.o (.rodata) SSL_ssl.o (.rodata) @@ -792,6 +799,8 @@ SECTIONS { unk_020893E0.o (.data) unk_0208AC14.o (.data) unk_020910EC.o (.data) + DWC_backup.o (.data) + DWC_account.o (.data) SOC_socl_bind.o (.data) SOC_soc.o (.data) CPS_network.o (.data) @@ -880,6 +889,7 @@ SECTIONS { unk_0208AC14.o (.bss) custom_allocator.o (.bss) unk_020910EC.o (.bss) + DWC_backup.o (.bss) SOC_socl_startup.o (.bss) SOC_socl_command.o (.bss) SOC_socl_read.o (.bss) diff --git a/arm9/asm/DWC_account.s b/arm9/asm/DWC_account.s new file mode 100644 index 00000000..45db0c45 --- /dev/null +++ b/arm9/asm/DWC_account.s @@ -0,0 +1,847 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global UNK_0210618C +UNK_0210618C: ; 0x0210618C + .asciz "%s%c%c%c%c%s" + + .balign 4, 0 + .global UNK_0210619C +UNK_0210619C: ; 0x0210619C + ; .asciz "0123456789abcdefghijklmnopqrstuvwxyz" + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 + .byte 0x00, 0x00, 0x00, 0x00 + + .text + + arm_func_start DWC_IsEqualFriendData +DWC_IsEqualFriendData: ; 0x02096B78 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r7, r0 + bl DWCi_Acc_GetFlag_DataType + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetFlag_DataType + cmp r5, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + cmp r5, #0x3 + bne _02096BD8 + mov r0, r7 + bl DWCi_Acc_GetGsProfileId + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetGsProfileId + cmp r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096BD8: + cmp r5, #0x1 + bne _02096C34 + mov r0, r7 + bl DWCi_Acc_GetUserId + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl DWCi_Acc_GetUserId + cmp r6, r1 + cmpeq r5, r0 + bne _02096C28 + mov r0, r7 + bl DWCi_Acc_GetPlayerId + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetPlayerId + cmp r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r7,pc} +_02096C28: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C34: + cmp r5, #0x2 + bne _02096C6C + mov r0, r7 + bl DWCi_Acc_GetFriendKey + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl DWCi_Acc_GetFriendKey + cmp r6, r1 + cmpeq r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C6C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start DWC_LoginIdToUserName +DWC_LoginIdToUserName: ; 0x02096C78 + ldr ip, _02096C8C ; =DWCi_Acc_LoginIdToUserName + mov r3, r0 + mov r0, r1 + ldr r1, [r3, #0x24] + bx r12 + .balign 4 +_02096C8C: .word DWCi_Acc_LoginIdToUserName + + arm_func_start DWC_SetGsProfileId +DWC_SetGsProfileId: ; 0x02096C90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + mov r1, r4 + bl DWCi_Acc_SetGsProfileId + mov r0, r5 + mov r1, #0x3 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_CreateExchangeToken +DWC_CreateExchangeToken: ; 0x02096CCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + bl DWCi_Acc_IsAuthentic + cmp r0, #0x0 + addeq r0, r5, #0x4 + ldmeqia r0, {r0-r2} + addeq sp, sp, #0x4 + stmeqia r4, {r0-r2} + ldmeqia sp!, {r4-r5,pc} + ldr r1, [r5, #0x1c] + mov r0, r4 + bl DWCi_Acc_SetGsProfileId + mov r0, r4 + mov r1, #0x3 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_CreateFriendKeyToken +DWC_CreateFriendKeyToken: ; 0x02096D2C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl DWCi_Acc_SetFriendKey + mov r0, r6 + mov r1, #0x2 + bl DWCi_Acc_SetFlag_DataType + ldmia sp!, {r4-r6,pc} + + arm_func_start DWC_CreateFriendKey +DWC_CreateFriendKey: ; 0x02096D68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r3, #0x1c] + mov r2, #0x0 + mov r1, r2 + cmp r0, #0x0 + beq _02096D94 + ldr r1, [r3, #0x24] + bl DWC_Acc_CreateFriendKey + mov r2, r0 +_02096D94: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWC_GetGsProfileId +DWC_GetGsProfileId: ; 0x02096DA0 + stmdb sp!, {r4-r6,lr} + mov r4, r1 + mov r6, r0 + mov r0, r4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x1 + beq _02096E14 + cmp r0, #0x2 + beq _02096DD0 + cmp r0, #0x3 + beq _02096E08 + b _02096E1C +_02096DD0: + mov r0, r4 + bl DWCi_Acc_GetFriendKey + ldr r2, [r6, #0x24] + mov r4, r0 + mov r5, r1 + bl DWC_Acc_CheckFriendKey + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r6, #0x24] + mov r0, r4 + mov r1, r5 + bl DWC_Acc_FriendKeyToGsProfileId + ldmia sp!, {r4-r6,pc} +_02096E08: + mov r0, r4 + bl DWCi_Acc_GetGsProfileId + ldmia sp!, {r4-r6,pc} +_02096E14: + mvn r0, #0x0 + ldmia sp!, {r4-r6,pc} +_02096E1C: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start DWC_GetFriendKey +DWC_GetFriendKey: ; 0x02096E24 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x2 + movne r0, #0x0 + movne r1, r0 + ldmneia sp!, {r4,pc} + mov r0, r4 + bl DWCi_Acc_GetFriendKey + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_ClearDirty +DWCi_Acc_ClearDirty: ; 0x02096E4C + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + ldr r1, [r4, #0x20] + add r0, sp, #0x0 + bic r2, r1, #0x1 + ldr r1, _02096E8C ; =0xEDB88320 + str r2, [r4, #0x20] + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096E8C: .word 0xEDB88320 + + arm_func_start DWC_ClearDirtyFlag +DWC_ClearDirtyFlag: ; 0x02096E90 + ldr ip, _02096E98 ; =DWCi_Acc_ClearDirty + bx r12 + .balign 4 +_02096E98: .word DWCi_Acc_ClearDirty + + arm_func_start DWCi_Acc_IsDirty +DWCi_Acc_IsDirty: ; 0x02096E9C + ldr r0, [r0, #0x20] + and r0, r0, #0x1 + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start DWC_CheckDirtyFlag +DWC_CheckDirtyFlag: ; 0x02096EB4 + ldr ip, _02096EBC ; =DWCi_Acc_IsDirty + bx r12 + .balign 4 +_02096EBC: .word DWCi_Acc_IsDirty + + arm_func_start DWCi_Acc_SetLoginIdToUserData +DWCi_Acc_SetLoginIdToUserData: ; 0x02096EC0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + add r3, r4, #0x10 + mov r12, r2 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} + ldr r1, _02096F14 ; =0xEDB88320 + add r0, sp, #0x0 + str r12, [r4, #0x1c] + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x20] + orr r0, r0, #0x1 + str r0, [r4, #0x20] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096F14: .word 0xEDB88320 + + arm_func_start DWC_CheckValidConsole +DWC_CheckValidConsole: ; 0x02096F18 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, r4, #0x10 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + add r0, sp, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + add r0, r4, #0x10 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckHasProfile +DWC_CheckHasProfile: ; 0x02096F80 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x10 + bl DWCi_Acc_IsValidLoginId + cmp r0, #0x0 + beq _02096FA8 + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + movgt r0, #0x1 + ldmgtia sp!, {r4,pc} +_02096FA8: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckUserData +DWC_CheckUserData: ; 0x02096FB0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + ldr r1, _02096FF0 ; =0xEDB88320 + mov r4, r0 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + ldr r1, [r4, #0x3c] + cmp r0, r1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096FF0: .word 0xEDB88320 + + arm_func_start DWC_CreateUserData +DWC_CreateUserData: ; 0x02096FF4 + ldr ip, _02096FFC ; =DWCi_Acc_CreateUserData + bx r12 + .balign 4 +_02096FFC: .word DWCi_Acc_CreateUserData + + arm_func_start DWCi_Acc_IsValidFriendData +DWCi_Acc_IsValidFriendData: ; 0x02097000 + ldr ip, _02097008 ; =DWC_IsValidFriendData + bx r12 + .balign 4 +_02097008: .word DWC_IsValidFriendData + + arm_func_start DWC_IsValidFriendData +DWC_IsValidFriendData: ; 0x0209700C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_IsAuthentic +DWCi_Acc_IsAuthentic: + ldr ip, _02097038 ; =DWCi_Acc_IsValidLoginId + add r0, r0, #0x10 + bx r12 + .balign 4 +_02097038: .word DWCi_Acc_IsValidLoginId + + arm_func_start DWCi_Acc_IsValidLoginId +DWCi_Acc_IsValidLoginId: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_CheckConsoleUserId +DWCi_Acc_CheckConsoleUserId: ; 0x0209705C + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _020970A4 + mov r0, r4 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + add sp, sp, #0x18 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020970A4: + mov r0, r4 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_CreateTempLoginId +DWCi_Acc_CreateTempLoginId: ; 0x020970CC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x38 + mov r6, r0 + add r0, sp, #0x14 + bl OS_GetLowEntropyData + mov r3, #0x1 + add r2, sp, #0x14 +_020970E8: + add r0, r2, r3, lsl #0x2 + ldr r1, [r2, r3, lsl #0x2] + ldr r0, [r0, #-0x4] + eor r0, r1, r0 + str r0, [r2, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, #0x8 + blo _020970E8 + add r0, sp, #0x0 + ldr r5, [sp, #0x30] + mov r4, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _02097138 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + mov r0, r6 + bl DWCi_Acc_SetUserId + b _02097148 +_02097138: + ldr r1, [sp, #0x8] + ldr r2, [sp, #0xc] + mov r0, r6 + bl DWCi_Acc_SetUserId +_02097148: + ldr r0, _02097184 ; =0x6C078965 + ldr r1, _02097188 ; =0x5D588B65 + umull r3, r2, r5, r0 + mla r2, r5, r1, r2 + ldr r1, _0209718C ; =0x00269EC3 + mla r2, r4, r0, r2 + adds r0, r3, r1 + mov r0, r6 + adc r1, r2, #0x0 + bl DWCi_Acc_SetPlayerId + mov r0, r6 + mov r1, #0x1 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x38 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02097184: .word 0x6C078965 +_02097188: .word 0x5D588B65 +_0209718C: .word 0x00269EC3 + + arm_func_start DWCi_Acc_CreateUserData +DWCi_Acc_CreateUserData: ; 0x02097190 + stmdb sp!, {r4-r5,lr} + ldr ip, _02097210 ; =0x00000404 + sub sp, sp, r12 + mov r4, r1 + mov r1, #0x0 + mov r2, #0x40 + mov r5, r0 + bl MI_CpuFill8 + mov r0, #0x40 + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x1c] + add r0, r5, #0x4 + str r4, [r5, #0x24] + bl DWCi_Acc_CreateTempLoginId + add r0, r5, #0x10 + mov r1, #0x0 + bl DWCi_Acc_SetFlag_DataType + ldr r1, _02097214 ; =0xEDB88320 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r5 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x20] + orr r0, r0, #0x1 + str r0, [r5, #0x20] + ldr ip, _02097210 ; =0x00000404 + add sp, sp, r12 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097210: .word 0x00000404 +_02097214: .word 0xEDB88320 + + arm_func_start DWCi_Acc_LoginIdToUserName +DWCi_Acc_LoginIdToUserName: ; 0x02097218 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r4, r1 + mov r5, r2 + bl DWCi_Acc_GetUserId + add r3, sp, #0x14 + mov r2, #0x2b + bl DWCi_Acc_U64ToString32 + mov r0, r6 + bl DWCi_Acc_GetPlayerId + mov r1, #0x0 + mov r2, #0x20 + add r3, sp, #0x29 + bl DWCi_Acc_U64ToString32 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + str r1, [sp, #0x0] + mov r1, r4, lsr #0x10 + and r1, r1, #0xff + str r1, [sp, #0x4] + mov r1, r4, lsr #0x8 + and r1, r1, #0xff + str r1, [sp, #0x8] + and r1, r4, #0xff + str r1, [sp, #0xc] + add r2, sp, #0x29 + str r2, [sp, #0x10] + ldr r2, _020972A4 ; =UNK_0210618C + mov r0, r5 + mov r1, #0x15 + add r3, sp, #0x14 + bl OS_SNPrintf + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020972A4: .word UNK_0210618C + + arm_func_start DWCi_Acc_U64ToString32 +DWCi_Acc_U64ToString32: ; 0x020972A8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, _0209731C ; =0x66666667 + add r4, r2, #0x4 + smull r12, r2, lr, r4 + mov r2, r2, asr #0x1 + mov r12, r4, lsr #0x1f + add r2, r12, r2 + cmp r2, #0x0 + ldr r6, _02097320 ; =UNK_0210619C + mov r7, #0x0 + ble _0209730C + add r4, r3, r2 + sub r4, r4, #0x1 + mov r12, #0x1f +_020972E4: + and r5, r0, r12 + ldrsb r5, [r6, r5] + mov r0, r0, lsr #0x5 + mov lr, r1, lsr #0x5 + strb r5, [r4, -r7] + add r7, r7, #0x1 + orr r0, r0, r1, lsl #0x1b + mov r1, lr + cmp r7, r2 + blt _020972E4 +_0209730C: + mov r0, #0x0 + strb r0, [r3, r2] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_0209731C: .word 0x66666667 +_02097320: .word UNK_0210619C + + arm_func_start DWC_Acc_FriendKeyToGsProfileId +DWC_Acc_FriendKeyToGsProfileId: ; 0x02097324 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWC_Acc_CheckFriendKey + cmp r0, #0x0 + mvnne r0, #0x0 + andne r0, r4, r0 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWC_Acc_CheckFriendKey +DWC_Acc_CheckFriendKey: ; 0x02097334 + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r1 + and r3, r4, #0x0 + mov r1, #0x0 + and r12, r0, #0x80000000 + cmp r3, r1 + cmpeq r12, r1 + addne sp, sp, #0x108 + movne r0, r1 + ldmneia sp!, {r4,pc} + str r0, [sp, #0x0] + add r0, sp, #0x8 + mov r1, #0x7 + str r2, [sp, #0x4] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r2, r0, #0x7f + mov r1, r2, asr #0x1f + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r4 + moveq r0, #0x1 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckFriendKey +DWC_CheckFriendKey: ; 0x020973B4 + ldr ip, _020973CC ; =DWC_Acc_CheckFriendKey + mov r3, r0 + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x24] + bx r12 + .balign 4 +_020973CC: .word DWC_Acc_CheckFriendKey + + arm_func_start DWC_Acc_CreateFriendKey +DWC_Acc_CreateFriendKey: ; 0x020973D0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r0 + str r1, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x7 + str r4, [sp, #0x0] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r0, r0, #0x7f + orr r1, r0, #0x0 + orr r0, r4, #0x0 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_SetBuddyFriendData +DWCi_SetBuddyFriendData: ; 0x02097414 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x3 + ldmneia sp!, {r4,pc} + mov r0, r4 + bl DWCi_Acc_GetFlags + orr r1, r0, #0x4 + mov r0, r4 + bl DWCi_Acc_SetFlags + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_SetFlag_DataType +DWCi_Acc_SetFlag_DataType: ; 0x02097440 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl DWCi_Acc_GetFlags + bic r1, r0, #0x3 + mov r0, r5 + orr r1, r1, r4 + bl DWCi_Acc_SetFlags + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWCi_Acc_SetFlags +DWCi_Acc_SetFlags: ; 0x0209746C + ldr ip, _0209747C ; =DWCi_Acc_SetMaskBits + ldr r3, _02097480 ; =0x001FFFFF + mov r2, #0xb + bx r12 + .balign 4 +_0209747C: .word DWCi_Acc_SetMaskBits +_02097480: .word 0x001FFFFF + + arm_func_start DWC_GetFriendDataType +DWC_GetFriendDataType: ; 0x02097484 + ldr ip, _0209748C ; =DWCi_Acc_GetFlag_DataType + bx r12 + .balign 4 +_0209748C: .word DWCi_Acc_GetFlag_DataType + + arm_func_start DWC_IsBuddyFriendData +DWC_IsBuddyFriendData: ; 0x02097490 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x3 + bne _020974C0 + mov r0, r4 + bl DWCi_Acc_GetFlags + and r0, r0, #0x4 + cmp r0, #0x4 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020974C0: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_GetFlag_DataType +DWCi_Acc_GetFlag_DataType: ; 0x020974C8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlags + and r0, r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_GetFlags +DWCi_Acc_GetFlags: ; 0x020974E0 + ldr r1, [r0, #0x0] + ldr r0, _020974F0 ; =0x001FFFFF + and r0, r0, r1, lsr #0xb + bx lr + .balign 4 +_020974F0: .word 0x001FFFFF + + arm_func_start DWCi_Acc_SetGsProfileId +DWCi_Acc_SetGsProfileId: ; 0x020974F4 + str r1, [r0, #0x4] + bx lr + + arm_func_start DWCi_Acc_SetFriendKey +DWCi_Acc_SetFriendKey: ; 0x020974FC + str r1, [r0, #0x4] + str r2, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_SetPlayerId +DWCi_Acc_SetPlayerId: ; 0x02097508 + str r1, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_SetUserId +DWCi_Acc_SetUserId: ; 0x02097510 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r4, r1 + mov r1, r2 + ldr r3, _02097540 ; =0x000007FF + mov r2, r12 + mov r5, r0 + bl DWCi_Acc_SetMaskBits + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097540: .word 0x000007FF + + arm_func_start DWCi_Acc_GetGsProfileId +DWCi_Acc_GetGsProfileId: + ldr r0, [r0, #0x4] + bx lr + + arm_func_start DWCi_Acc_GetFriendKey +DWCi_Acc_GetFriendKey: ; 0x0209754C + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x4] + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + + arm_func_start DWCi_Acc_GetPlayerId +DWCi_Acc_GetPlayerId: + ldr r0, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_GetUserId +DWCi_Acc_GetUserId: ; 0x02097568 + ldr r2, [r0, #0x0] + ldr r1, _02097584 ; =0x000007FF + ldr r0, [r0, #0x4] + and r1, r2, r1 + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + .balign 4 +_02097584: .word 0x000007FF + + arm_func_start DWCi_Acc_SetMaskBits +DWCi_Acc_SetMaskBits: ; 0x02097588 + mvn r12, r3 + ands r12, r1, r12 + movne r0, #0x0 + bxne lr + mvn r3, r3, lsl r2 + ldr r12, [r0, #0x0] + and r3, r12, r3 + orr r1, r3, r1, lsl r2 + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr diff --git a/arm9/asm/DWC_backup.s b/arm9/asm/DWC_backup.s new file mode 100644 index 00000000..6a06652f --- /dev/null +++ b/arm9/asm/DWC_backup.s @@ -0,0 +1,959 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global nv_result +nv_result: ; 0x021C8C78 + .space 0x4 + + .global nv_cb_occurred +nv_cb_occurred: ; 0x021C8C7C + .space 0x4 + + .global Address +Address: ; 0x021C8C80 + .space 0x4 + + .global Wifi +Wifi: ; 0x021C8C84 + .space 0x1c + + .global Work +Work: ; 0x021C8CA0 + .space 0x20 + + .text + + arm_func_start DWCi_BACKUPlGetWifi +DWCi_BACKUPlGetWifi: ; 0x02095324 + ldr r0, _0209532C ; =Wifi + bx lr + .balign 4 +_0209532C: .word Wifi + + arm_func_start DWCi_BACKUPlConvWifiInfo +DWCi_BACKUPlConvWifiInfo: ; 0x02095330 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldr r3, [r4, #0x8] + ldr r2, [r4, #0xc] + ldr r1, _020953E4 ; =Wifi + str r2, [sp, #0x4] + str r3, [sp, #0x0] + mov r2, #0x5 + bl MI_CpuCopy8 + ldr r1, [sp, #0x0] + ldr r2, [r4, #0x4] + ldr r0, [sp, #0x4] + mov r2, r2, lsr #0x8 + mov r12, r1, lsr #0x5 + mov r3, r0, lsr #0x5 + orr r12, r12, r0, lsl #0x1b + and lr, r2, #0x7 + and r0, r1, #0x1f + orr lr, lr, r0, lsl #0x3 + ldr r2, _020953E4 ; =Wifi + ldr r1, _020953E8 ; =Wifi + 0x6 + strb lr, [r2, #0x5] + add r0, sp, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r2, #0x4 + bl MI_CpuCopy8 + ldrh r0, [r4, #0x10] + ldr r1, [sp, #0x4] + ldr r3, _020953E4 ; =Wifi + and r1, r1, #0x3f + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0x6 + strb r0, [r3, #0xa] + ldrh r2, [r4, #0x10] + add r0, r4, #0x12 + ldr r1, _020953EC ; =Wifi + 0xc + mov r4, r2, asr #0x2 + mov r2, #0x2 + strb r4, [r3, #0xb] + bl MI_CpuCopy8 + ldr r0, _020953E4 ; =Wifi + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020953E4: .word Wifi +_020953E8: .word Wifi + 0x6 +_020953EC: .word Wifi + 0xc + + arm_func_start Callback_NVRAM +Callback_NVRAM: ; 0x020953F0 + ldr r3, _02095420 ; =nv_result + and r12, r1, #0xff + ldr r0, _02095424 ; =nv_cb_occurred + mov r1, #0x1 + strh r12, [r3, #0x0] + str r1, [r0, #0x0] + cmp r2, #0x0 + movne r0, #0xff + strneh r0, [r3, #0x0] + ldr r0, _02095420 ; =nv_result + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_02095420: .word nv_result +_02095424: .word nv_cb_occurred + + arm_func_start writeDisable +writeDisable: + stmdb sp!, {r4-r6,lr} + mov r5, #0x4 + mov r4, #0x1 +_02095434: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _02095434 + ldr r1, _02095490 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r4, #0x40000 + mov r6, #0x7 + mov r5, #0x0 +_02095460: + mov r0, r6 + mov r1, r5 + mov r2, r5 + mov r3, r5 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + beq _02095488 + mov r0, r4 + bl SVC_WaitByLoop + b _02095460 +_02095488: + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02095490: .word Callback_NVRAM + + arm_func_start verify +verify: + stmdb sp!, {r4-r6,lr} + mov r5, r2 + mov r4, r3 + mov r6, r0 + mov r0, r1 + mov r1, r5 + mov r2, r4 + bl readNvram + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start writeNvram +writeNvram: ; 0x020954E0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0x4 + mov r4, #0x1 +_020954F8: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _020954F8 + ldr r1, _02095558 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r6 + mov r1, r7 + bl DC_StoreRange + mov r4, #0x40000 + mov r5, #0x2 +_0209552C: + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + ldmeqia sp!, {r4-r8,pc} + mov r0, r4 + bl SVC_WaitByLoop + b _0209552C + ldmia sp!, {r4-r8,pc} + .balign 4 +_02095558: .word Callback_NVRAM + + arm_func_start readNvram +readNvram: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl DC_InvalidateRange + mov r8, #0x4 + mov r7, #0x1 +_02095580: + mov r0, r8 + mov r1, r7 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _02095580 + ldr r1, _020955F0 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r5, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r7, #0x40000 + mov r9, #0x1 +_020955B0: + mov r0, r9 + mov r1, r6 + mov r2, r8 + mov r3, r4 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + beq _020955D8 + mov r0, r7 + bl SVC_WaitByLoop + b _020955B0 +_020955D8: + mov r0, r4 + mov r1, r5 + bl DC_InvalidateRange + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020955F0: .word Callback_NVRAM + + arm_func_start NVRAMm_ExecuteCommand +NVRAMm_ExecuteCommand: ; 0x020955F4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc4 + ldr ip, _02095AAC ; =0x0000FFFF + ldr sl, _02095AB0 ; =Work + and r8, r2, r12 + and r7, r1, r12 + mov r5, r1, lsr #0x10 + mov r4, r3, lsr #0x10 + and r1, r3, r12 + orr r3, r8, #0x30000 + str r3, [sp, #0xc] + ldr r3, _02095AB4 ; =0x01050000 + orr r2, r2, #0x20000 + orr r3, r1, r3 + str r3, [sp, #0x14] + orr r1, r1, #0x1040000 + mov r9, r0 + and r0, r5, #0xff + str r2, [sp, #0x1c] + str r1, [sp, #0x24] + ldr r1, _02095AB8 ; =0x02002200 + mov r8, #0x0 + orr r2, r4, #0x40000 + orr r1, r1, r10, lsr #0x18 + str r1, [sp, #0x28] + and r1, r12, r10, lsr #0x8 + orr r1, r1, #0x10000 + ldr r3, _02095ABC ; =0x02002300 + str r2, [sp, #0x10] + orr r2, r0, r3 + str r2, [sp, #0x8] + orr r2, r4, #0x30000 + str r2, [sp, #0x20] + ldr r2, _02095AC0 ; =0x02002500 + mov r6, r10, lsl #0x8 + str r1, [sp, #0x2c] + and r1, r6, #0xff00 + orr r0, r0, r2 + ldr r3, _02095AC4 ; =0x01020000 + str r0, [sp, #0x18] + orr r0, r1, r3 + str r0, [sp, #0x30] + mov r0, #0x20000 + str r0, [sp, #0x40] + mov r0, #0x5 + str r0, [sp, #0xac] + mov r0, #0x3 + str r0, [sp, #0xb0] + mov r0, #0x6 + str r0, [sp, #0xb8] + mov r0, #0x4000 + orr r7, r7, #0x10000 + str r8, [sp, #0xb4] + mov r4, #0x1 + str r8, [sp, #0xa8] + mov r5, #0x4 + str r8, [sp, #0xa4] + str r8, [sp, #0xa0] + str r8, [sp, #0x90] + str r8, [sp, #0x98] + str r8, [sp, #0x9c] + str r8, [sp, #0x94] + str r8, [sp, #0x8c] + str r8, [sp, #0x6c] + str r8, [sp, #0x74] + str r8, [sp, #0x7c] + str r8, [sp, #0x84] + str r8, [sp, #0x88] + str r8, [sp, #0x80] + str r8, [sp, #0x78] + str r8, [sp, #0x70] + str r8, [sp, #0x68] + str r8, [sp, #0x64] + str r8, [sp, #0x38] + str r8, [sp, #0x44] + str r8, [sp, #0x4c] + str r8, [sp, #0x54] + str r8, [sp, #0x5c] + str r8, [sp, #0x60] + str r8, [sp, #0x58] + str r8, [sp, #0x50] + str r8, [sp, #0x48] + str r8, [sp, #0x3c] + str r8, [sp, #0x34] + mov r6, r8 + str r0, [sp, #0xbc] +_0209574C: + cmp r8, #0x0 + bne _02095988 + ldr r0, _02095AC8 ; =nv_cb_occurred + cmp r9, #0x7 + str r6, [r0, #0x0] + addls pc, pc, r9, lsl #0x2 + b _0209574C +_02095768: ; jump table + b _0209574C ; case 0 + b _02095788 ; case 1 + b _02095834 ; case 2 + b _02095854 ; case 3 + b _020958F0 ; case 4 + b _020958F0 ; case 5 + b _02095948 ; case 6 + b _02095968 ; case 7 +_02095788: + ldr r1, [sp, #0x8] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x34] + blt _0209574C + ldr r2, [sp, #0x38] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x3c] + blt _0209574C + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x48] + blt _0209574C + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x4c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x50] + blt _0209574C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x54] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x58] + blt _0209574C + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x5c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x60] + movge r8, r4 + b _0209574C +_02095834: + ldr r1, _02095ACC ; =0x03002000 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0x64] + b _0209574C +_02095854: + ldr r1, [sp, #0x18] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x68] + blt _020958E0 + ldr r2, [sp, #0x6c] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x70] + blt _020958E0 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x74] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x78] + blt _020958E0 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x7c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x80] + blt _020958E0 + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x84] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x88] + movge r8, r4 +_020958E0: + bl OS_GetTick + str r0, [sp, #0x0] + mov r11, r1 + b _0209574C +_020958F0: + ldr r1, [sp, #0x28] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x8c] + blt _0209574C + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x90] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x94] + blt _0209574C + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x98] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x9c] + movge r8, r4 + b _0209574C +_02095948: + ldr r1, _02095AD0 ; =0x03002D00 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa0] + b _0209574C +_02095968: + ldr r1, _02095AD4 ; =0x03002100 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa4] + b _0209574C +_02095988: + ldr r0, _02095AC8 ; =nv_cb_occurred + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _0209574C + ldr r0, _02095AD8 ; =nv_result + ldr r8, [sp, #0xa8] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02095AA0 + cmp r9, #0x7 + addls pc, pc, r9, lsl #0x2 + b _0209574C +_020959B8: ; jump table + b _0209574C ; case 0 + b _020959D8 ; case 1 + b _020959E4 ; case 2 + b _020959EC ; case 3 + b _020959F4 ; case 4 + b _020959F4 ; case 5 + b _02095A88 ; case 6 + b _02095A94 ; case 7 +_020959D8: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020959E4: + mov r9, r5 + b _0209574C +_020959EC: + ldr r9, [sp, #0xac] + b _0209574C +_020959F4: + mov r0, r10 + mov r1, r4 + bl DC_InvalidateRange + cmp r9, #0x4 + bne _02095A24 + ldrb r0, [r10, #0x0] + ands r0, r0, #0x2 + ldrne r9, [sp, #0xb0] + bne _0209574C + add sp, sp, #0xc4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095A24: + ldrb r1, [r10, #0x0] + ands r0, r1, #0x1 + addeq sp, sp, #0xc4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ands r0, r1, #0x20 + bne _02095A74 + bl OS_GetTick + ldr r2, [sp, #0x0] + ldr r3, [sp, #0xb4] + subs r2, r0, r2 + sbc r0, r1, r11 + mov r1, r0, lsl #0x6 + orr r1, r1, r2, lsr #0x1a + mov r0, r2, lsl #0x6 + ldr r2, _02095ADC ; =0x000082EA + bl _ll_udiv + cmp r1, #0x0 + cmpeq r0, #0xfa0 + bls _02095A7C +_02095A74: + ldr r9, [sp, #0xb8] + b _0209574C +_02095A7C: + ldr r0, [sp, #0xbc] + bl SVC_WaitByLoop + b _0209574C +_02095A88: + add sp, sp, #0xc4 + mov r0, r8 + ldmia sp!, {r4-r11,pc} +_02095A94: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_02095AA0: + mov r0, r8 + add sp, sp, #0xc4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095AAC: .word 0x0000FFFF +_02095AB0: .word Work +_02095AB4: .word 0x01050000 +_02095AB8: .word 0x02002200 +_02095ABC: .word 0x02002300 +_02095AC0: .word 0x02002500 +_02095AC4: .word 0x01020000 +_02095AC8: .word nv_cb_occurred +_02095ACC: .word 0x03002000 +_02095AD0: .word 0x03002D00 +_02095AD4: .word 0x03002100 +_02095AD8: .word nv_result +_02095ADC: .word 0x000082EA + + arm_func_start DWC_BACKUPlCheckAddress +DWC_BACKUPlCheckAddress: + ldrb r0, [r0, #0x0] + cmp r0, #0x7f + moveq r0, #0x0 + bxeq lr + cmp r0, #0x1 + movcc r0, #0x0 + bxcc lr + cmp r0, #0xdf + movls r0, #0x1 + movhi r0, #0x0 + bx lr + + arm_func_start DWC_BACKUPlCheckIp +DWC_BACKUPlCheckIp: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x4 + bl MI_CpuCopy8 + add r1, sp, #0x4 + mov r0, r4 + mov r2, #0x4 + bl MI_CpuCopy8 + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x0] + mvn r0, #0x1 + orr r1, r2, r3 + cmp r1, r0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mvn r0, r3 + ands r0, r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_BACKUPlCheckSsid +DWC_BACKUPlCheckSsid: + mov r2, #0x0 +_02095B8C: + ldrb r1, [r0, r2] + cmp r1, #0x0 + movne r0, #0x1 + bxne lr + add r2, r2, #0x1 + cmp r2, #0x20 + blt _02095B8C + mov r0, #0x0 + bx lr + + arm_func_start DWCi_BACKUPlConvMaskAddr +DWCi_BACKUPlConvMaskAddr: ; 0x02095BB0 + mvn r2, #0x0 + mov r12, #0x0 + eor r3, r2, r2, lsr r0 + mov r2, r12 +_02095BC0: + rsb r0, r2, #0x18 + mov r0, r3, lsr r0 + strb r0, [r1, r12] + add r12, r12, #0x1 + cmp r12, #0x4 + add r2, r2, #0x8 + blt _02095BC0 + bx lr + + arm_func_start DWCi_BACKUPlConvMaskCidr +DWCi_BACKUPlConvMaskCidr: ; 0x02095BE0 + stmdb sp!, {r4,lr} + mov lr, #0x0 + mov r4, lr + mov r2, lr +_02095BF0: + ldrb r3, [r0, lr] + mov r12, r2 +_02095BF8: + mov r1, r3, asr r12 + ands r1, r1, #0x1 + add r12, r12, #0x1 + addne r4, r4, #0x1 + cmp r12, #0x8 + blt _02095BF8 + add lr, lr, #0x1 + cmp lr, #0x4 + blt _02095BF0 + and r0, r4, #0xff + ldmia sp!, {r4,pc} + + arm_func_start DWCi_BACKUPlSetWiFi +DWCi_BACKUPlSetWiFi: ; 0x02095C24 + ldr ip, _02095C34 ; =MI_CpuCopy8 + ldr r1, _02095C38 ; =Wifi + mov r2, #0xe + bx r12 + .balign 4 +_02095C34: .word MI_CpuCopy8 +_02095C38: .word Wifi + + arm_func_start DWCi_BACKUPlWriteAll +DWCi_BACKUPlWriteAll: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r1, _02095CD8 ; =Address + mov r10, r0 + ldr r8, [r1, #0x0] + mov r7, r10 + mov r9, #0x0 + add r4, r10, #0x400 + add r6, r10, #0x500 + mov r5, #0x100 + mov r11, #0xfe +_02095C68: + mov r0, r6 + mov r1, r7 + mov r2, r11 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + strh r0, [r1, #0xfe] +_02095C80: + mov r0, r8 + mov r1, r5 + mov r2, r7 + bl writeNvram + mov r0, r7 + mov r1, r8 + mov r2, r5 + mov r3, r4 + bl verify + cmp r0, #0x0 + beq _02095C80 + add r9, r9, #0x1 + cmp r9, #0x4 + add r7, r7, #0x100 + add r8, r8, #0x100 + blt _02095C68 + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095CD8: .word Address + + arm_func_start DWCi_BACKUPlWritePage +DWCi_BACKUPlWritePage: ; 0x02095CDC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _02095D64 ; =Address + mov r4, r0 + ldr r6, [r3, #0x0] + mov r9, r1 + mov r8, r2 + mov r7, #0x0 + mov r5, #0x100 +_02095D00: + ldr r0, [r9, r7, lsl #0x2] + cmp r0, #0x0 + beq _02095D38 +_02095D0C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl writeNvram + mov r0, r4 + mov r1, r6 + mov r2, r5 + mov r3, r8 + bl verify + cmp r0, #0x0 + beq _02095D0C +_02095D38: + add r7, r7, #0x1 + cmp r7, #0x4 + add r4, r4, #0x100 + add r6, r6, #0x100 + blt _02095D00 + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_02095D64: .word Address + + arm_func_start DWCi_BACKUPlRead +DWCi_BACKUPlRead: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095D98 ; =Address + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x400 + bl readNvram + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095D98: .word Address + + arm_func_start DWCi_BACKUPlInit +DWCi_BACKUPlInit: + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x20 + mov r1, r0 + mov r2, r4 + bl readNvram + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldrh r2, [r4, #0x0] + ldr r1, _02095DDC ; =Address + mov r0, #0x1 + mov r2, r2, lsl #0x3 + sub r2, r2, #0x400 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_02095DDC: .word Address + + arm_func_start DWCi_BM_SetWiFiInfo +DWCi_BM_SetWiFiInfo: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, _02095EBC ; =Address + mov r10, r1 + ldr r8, [r2, #0x0] + bl DWCi_BACKUPlConvWifiInfo + ldr r1, _02095EC0 ; =0x0000A001 + add r0, r10, #0x200 + bl MATHi_CRC16InitTableRev + mov r9, #0x0 + add r4, r10, #0x100 + add r6, r10, #0xf0 + mov r7, #0x100 + mov r5, #0xe + mov r11, #0xfe +_02095E1C: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl readNvram + cmp r0, #0x0 + bne _02095E44 + bl OS_Terminate + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095E44: + ldr r0, _02095EC4 ; =Wifi + mov r1, r6 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, r10 + mov r2, r11 + add r0, r10, #0x200 + bl MATH_CalcCRC16 + strh r0, [r10, #0xfe] +_02095E68: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl writeNvram + mov r0, r10 + mov r1, r8 + mov r2, r7 + mov r3, r4 + bl verify + cmp r0, #0x0 + beq _02095E68 + add r9, r9, #0x1 + cmp r9, #0x2 + add r8, r8, #0x100 + blt _02095E1C + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095EBC: .word Address +_02095EC0: .word 0x0000A001 +_02095EC4: .word Wifi + + arm_func_start DWCi_BM_GetWiFiInfo +DWCi_BM_GetWiFiInfo: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _02095F90 ; =Wifi + mov r1, r4 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r3, [r4, #0x0] + mvn r0, #0x0 + ldr r2, [r4, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x0] + and r1, r2, r1 + ldr r0, _02095F98 ; =Wifi + 0x5 + str r1, [r4, #0x4] + add r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + add r12, r4, #0x8 + ldr r1, [r4, #0x8] + ldr r0, [r12, #0x4] + mov r1, r1, lsr #0x3 + orr r1, r1, r0, lsl #0x1d + str r1, [r4, #0x8] + mov r0, r0, lsr #0x3 + str r0, [r12, #0x4] + ldr r3, [r4, #0x8] + mvn r0, #0x0 + ldr r2, [r12, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x8] + and r1, r2, r1 + ldr r0, _02095F9C ; =Wifi + 0xa + str r1, [r12, #0x4] + add r1, r4, #0x10 + mov r2, #0x2 + bl MI_CpuCopy8 + ldrh r1, [r4, #0x10] + ldr r3, _02095FA0 ; =0x000003FF + ldr r0, _02095FA4 ; =Wifi + 0xc + mov r1, r1, asr #0x6 + strh r1, [r4, #0x10] + ldrh r12, [r4, #0x10] + add r1, r4, #0x12 + mov r2, #0x2 + and r3, r12, r3 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldmia sp!, {r4,pc} + .balign 4 +_02095F90: .word Wifi +_02095F94: .word 0x000007FF +_02095F98: .word Wifi + 0x5 +_02095F9C: .word Wifi + 0xa +_02095FA0: .word 0x000003FF +_02095FA4: .word Wifi + 0xc + + arm_func_start DWCi_BM_GetApInfo +DWCi_BM_GetApInfo: ; 0x02095FA8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095FD8 ; =Address + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x300 + bl readNvram + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095FD8: .word Address diff --git a/arm9/asm/DWC_bm_init.s b/arm9/asm/DWC_bm_init.s new file mode 100644 index 00000000..038abe94 --- /dev/null +++ b/arm9/asm/DWC_bm_init.s @@ -0,0 +1,357 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global DWCi_SETTING_NONE +DWCi_SETTING_NONE: ; 0x020FF574 + .byte 0x00, 0x00, 0x00, 0x00 + + .text + + arm_func_start initPage +initPage: ; 0x02095FDC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r1, r5, r4, lsl #0x8 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 + add r0, r5, r4, lsl #0x8 + mov r1, #0xff + strb r1, [r0, #0xe7] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start init +init: ; 0x02096010 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r1, r7 + mov r0, #0x0 + mov r2, #0x400 + bl MIi_CpuClear16 + mov r2, #0x0 + mov r1, #0xff +_02096034: + add r0, r7, r2, lsl #0x8 + add r2, r2, #0x1 + strb r1, [r0, #0xe7] + cmp r2, #0x3 + blt _02096034 + add r0, sp, #0x0 + bl DWCi_AUTH_GetNewWiFiInfo + add r0, sp, #0x0 + bl DWCi_BACKUPlConvWifiInfo + mov r6, r0 + mov r5, #0x0 + mov r4, #0xe +_02096064: + mov r0, r6 + mov r2, r4 + add r1, r7, #0xf0 + bl MI_CpuCopy8 + add r5, r5, #0x1 + cmp r5, #0x2 + add r7, r7, #0x100 + blt _02096064 + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start checkAp +checkAp: + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldrb r0, [r4, #0xe7] + cmp r0, #0xff + addeq sp, sp, #0x8 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + cmp r0, #0x2 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} + add r0, r4, #0x40 + bl DWC_BACKUPlCheckSsid + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, _0209618C ; =DWCi_SETTING_NONE + add r0, r4, #0xc0 + mov r2, #0x4 + bl memcmp + cmp r0, #0x0 + beq _02096140 + add r0, r4, #0xc4 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldrb r0, [r4, #0xd0] + cmp r0, #0x20 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} + add r1, sp, #0x0 + bl DWCi_BACKUPlConvMaskAddr + add r1, sp, #0x0 + add r0, r4, #0xc0 + bl DWC_BACKUPlCheckIp + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096140: + ldr r1, _0209618C ; =DWCi_SETTING_NONE + add r0, r4, #0xc8 + mov r2, #0x4 + bl memcmp + cmp r0, #0x0 + beq _02096180 + add r0, r4, #0xc8 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + bne _02096180 + add r0, r4, #0xcc + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096180: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_0209618C: .word DWCi_SETTING_NONE + + arm_func_start DWC_BM_Init +DWC_BM_Init: ; 0x02096190 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + mov r1, #0x0 + mov r2, #0x700 + bl MI_CpuFill8 + mov r0, r10 + bl DWCi_BACKUPlInit + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} + ldr r1, _020964B8 ; =0x0000A001 + add r0, r10, #0x500 + bl MATHi_CRC16InitTableRev + mov r0, r10 + bl DWCi_BACKUPlRead + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r8, r10 + mov r7, r10 + mov r9, #0x0 + add r11, sp, #0x0 + add r6, r10, #0x500 + mov r4, #0x1 + mov r5, #0xfe +_02096210: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + bne _02096240 + mov r0, r7 + bl checkAp + cmp r0, #0x0 + strne r4, [r11, r9, lsl #0x2] +_02096240: + add r9, r9, #0x1 + cmp r9, #0x3 + add r8, r8, #0x100 + add r7, r7, #0x100 + blt _02096210 + add r0, r10, #0x500 + add r1, r10, #0x300 + mov r2, #0xfe + bl MATH_CalcCRC16 + add r1, r10, #0x300 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + moveq r0, #0x1 + ldr r1, [sp, #0x0] + streq r0, [sp, #0xc] + cmp r1, #0x0 + beq _020962BC + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _020962BC + add r0, r10, #0xf0 + bl DWCi_BACKUPlSetWiFi + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020962BC: + cmp r1, #0x0 + bne _0209630C + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209630C + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209630C: + cmp r1, #0x0 + beq _02096320 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209635C +_02096320: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02096338 + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209635C +_02096338: + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209635C: + cmp r1, #0x0 + bne _02096394 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _02096394 + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + ldrne r0, _020964C0 ; =0xFFFFD8ED + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_02096394: + cmp r1, #0x0 + bne _020963C4 + mov r0, r10 + mov r1, #0x0 + bl initPage + add r0, r10, #0x1f0 + add r1, r10, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0x1ef] + strb r0, [r10, #0xef] + b _020963F4 +_020963C4: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _020963F4 + mov r0, r10 + mov r1, #0x1 + bl initPage + add r0, r10, #0xf0 + add r1, r10, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0xef] + strb r0, [r10, #0x1ef] +_020963F4: + add r0, r10, #0xf0 + bl DWCi_BACKUPlSetWiFi + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _02096414 + mov r0, r10 + mov r1, #0x2 + bl initPage +_02096414: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _02096430 + add r1, r10, #0x300 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 +_02096430: + mov r4, #0x0 + mov r1, r4 + add r0, sp, #0x0 + add r5, r10, #0xef + mov r6, #0x1 +_02096444: + ldr r2, [r0, r1, lsl #0x2] + cmp r2, #0x0 + bne _0209647C + ldrb r2, [r10, #0xef] + mov r7, r6, lsl r1 + ands r2, r2, r7 + beq _0209647C + ldrb r3, [r5, #0x0] + mvn r2, r7 + mov r4, r6 + and r2, r3, r2 + strb r2, [r5, #0x0] + ldrb r2, [r10, #0xef] + strb r2, [r10, #0x1ef] +_0209647C: + add r1, r1, #0x1 + cmp r1, #0x3 + blt _02096444 + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmeqia sp!, {r4-r11,pc} + cmp r4, #0x0 + ldrne r0, _020964C4 ; =0xFFFFD8EE + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020964B4: .word 0xFFFFD8EF +_020964B8: .word 0x0000A001 +_020964BC: .word 0xFFFFD8F0 +_020964C0: .word 0xFFFFD8ED +_020964C4: .word 0xFFFFD8EE diff --git a/arm9/asm/DWC_init.s b/arm9/asm/DWC_init.s new file mode 100644 index 00000000..24395f70 --- /dev/null +++ b/arm9/asm/DWC_init.s @@ -0,0 +1,37 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + .extern _SDK_NintendoDWC + + arm_func_start DWC_Init +DWC_Init: ; 0x02096B14 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, _02096B74 ; =_SDK_NintendoDWC + mov r4, #0x0 + bl OSi_ReferSymbol + mov r0, r6 + bl DWC_BM_Init + mov r5, r0 + bl DWC_Auth_CheckWiFiIDNeedCreate + cmp r0, #0x0 + beq _02096B4C + mov r0, r6 + bl DWCi_AUTH_MakeWiFiID + mov r4, #0x1 +_02096B4C: + cmp r5, #0x0 + bge _02096B64 + cmp r4, #0x0 + movne r0, #0x2 + moveq r0, #0x3 + ldmia sp!, {r4-r6,pc} +_02096B64: + cmp r4, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02096B74: .word _SDK_NintendoDWC diff --git a/arm9/asm/DWC_report.s b/arm9/asm/DWC_report.s new file mode 100644 index 00000000..1a4b032e --- /dev/null +++ b/arm9/asm/DWC_report.s @@ -0,0 +1,2 @@ + .include "asm/macros.inc" + .include "global.inc" diff --git a/arm9/asm/DWC_util_wifiidtool.s b/arm9/asm/DWC_util_wifiidtool.s new file mode 100644 index 00000000..660db18e --- /dev/null +++ b/arm9/asm/DWC_util_wifiidtool.s @@ -0,0 +1,458 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global UNK_020FF578 +UNK_020FF578: ; 0x020FF578 + .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 + + .global UNK_020FF580 +UNK_020FF580: ; 0x020FF580 + .byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07 + + .text + + arm_func_start DWC_Auth_CheckWiFiIDNeedCreate +DWC_Auth_CheckWiFiIDNeedCreate: + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0x0 + bl DWCi_BM_GetWiFiInfo + ldr r2, [sp, #0x8] + ldr r1, [sp, #0xc] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + bne _0209650C + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + cmp r1, r0 + cmpeq r2, r0 + addeq sp, sp, #0x14 + moveq r0, #0x1 + ldmeqia sp!, {pc} +_0209650C: + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start DWC_Auth_GetId +DWC_Auth_GetId: ; 0x02096518 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWCi_BM_GetWiFiInfo + add r0, sp, #0x0 + ldmia r0, {r2-r3} + stmia r4, {r2-r3} + add r1, sp, #0x8 + add r0, r4, #0x8 + ldmia r1, {r2-r3} + stmia r0, {r2-r3} + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + streq r0, [r4, #0x10] + movne r0, #0x1 + strne r0, [r4, #0x10] + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096570 +FUN_02096570: ; 0x02096570 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + add r2, sp, #0x0 + mov r1, #0x0 + strb r1, [r2, #0x0] + strb r1, [r2, #0x1] + strb r1, [r2, #0x2] + strb r1, [r2, #0x3] + strb r1, [r2, #0x4] + mov r5, r0 + strb r1, [r2, #0x5] + bl DWCi_BM_GetWiFiInfo + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x18 + bl RTC_GetTime + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} + bl OS_IsTickAvailable + cmp r0, #0x0 + beq _0209660C + ldr r0, _02096700 ; =OS_GetTick + adds r4, r4, r0 +_0209660C: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr r6, _02096704 ; =0x5D588B65 + ldr r7, _02096708 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r9, r4, r6, r7 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _0209670C ; =0x000009BF + ldrb r8, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + mov r2, r9, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + mov r3, r8, lsl #0x10 + ldrb r4, [sp, #0x4] + ldrb r0, [sp, #0x5] + mov r8, #0x0 + orr r10, r3, r4, lsl #0x8 + strh r2, [r5, #0x10] + str r8, [r5, #0x8] + str r8, [r5, #0xc] + moveq r1, #0x0 + ldr r2, [r5, #0xc] + ldr r3, [r5, #0x8] + cmp r2, r8 + cmpeq r3, r8 + and r4, r1, #0xff + orr r10, r0, r10 + bne _020966F4 +_02096698: + mla r9, r6, r9, r7 + b _020966A4 +_020966A0: + mla r9, r6, r9, r7 +_020966A4: + cmp r9, #0x0 + beq _020966A0 + ldrh r1, [r5, #0x12] + mov r0, r9, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r1, r0 + beq _020966A0 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + mov r1, r10 + mov r2, r4 + mov r3, r8 + bl FUN_02096988 + str r0, [r5, #0x8] + str r1, [r5, #0xc] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x8] + cmp r0, r8 + cmpeq r1, r8 + beq _02096698 +_020966F4: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096700: .word OS_GetTick +_02096704: .word 0x5D588B65 +_02096708: .word 0x00269EC3 +_0209670C: .word 0x000009BF + + arm_func_start FUN_02096710 +FUN_02096710: ; 0x02096710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0x0 + mov r4, r1 + bl DWCi_BM_GetWiFiInfo + add r12, r5, #0x8 + ldmia r12, {r2-r3} + stmia r5, {r2-r3} + add r1, sp, #0x8 + ldmia r1, {r2-r3} + mov r0, r5 + mov r1, r4 + stmia r12, {r2-r3} + bl DWCi_BM_SetWiFiInfo + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWCi_AUTH_MakeWiFiID +DWCi_AUTH_MakeWiFiID: ; 0x02096760 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWCi_AUTH_GetNewWiFiInfo + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + add r0, sp, #0x0 + mov r1, r4 + bl DWCi_BM_SetWiFiInfo + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_AUTH_GetNewWiFiInfo +DWCi_AUTH_GetNewWiFiInfo: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + mov r8, r0 + bl DWCi_BM_GetWiFiInfo + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x18 + bl RTC_GetTime + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} + bl OS_IsTickAvailable + cmp r0, #0x0 + beq _02096820 + ldr r0, _02096978 ; =OS_GetTick + adds r4, r4, r0 +_02096820: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr sb, _0209697C ; =0x5D588B65 + ldr sl, _02096980 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r5, r4, r9, r10 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _02096984 ; =0x000009BF + ldrb r6, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + moveq r1, #0x0 + mov r2, r5, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + ldrb r0, [sp, #0x5] + ldrb r4, [sp, #0x4] + mov r3, r6, lsl #0x10 + and r7, r1, #0xff + orr r3, r3, r4, lsl #0x8 + strh r2, [r8, #0x10] + mov r4, #0x0 + str r4, [r8, #0x0] + str r4, [r8, #0x4] + ldrh r2, [r8, #0x12] + orr r6, r0, r3 + cmp r2, #0x0 + bne _02096910 + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C +_020968C0: + mul r0, r5, r9 + adds r5, r0, r10 + bne _020968D8 +_020968CC: + mul r0, r5, r9 + adds r5, r0, r10 + beq _020968CC +_020968D8: + strh r5, [r8, #0x12] + ldrh r0, [r8, #0x12] + mov r1, r6 + mov r2, r7 + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, #0x0 + beq _020968C0 + b _0209696C +_02096910: + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C + add r5, r8, #0x12 +_02096930: + ldrh r0, [r5, #0x0] + mov r1, r6 + mov r2, r7 + add r0, r0, #0x1 + strh r0, [r5, #0x0] + ldrh r0, [r8, #0x12] + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + beq _02096930 +_0209696C: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096978: .word OS_GetTick +_0209697C: .word 0x5D588B65 +_02096980: .word 0x00269EC3 +_02096984: .word 0x000009BF + + arm_func_start FUN_02096988 +FUN_02096988: ; 0x02096988 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov lr, #0x0 + and r12, lr, #0x0 + mvn r5, #0xff000000 + ldr r4, _02096B08 ; =0x0000FFFF + and r2, r2, #0x1 + mov r6, r12, lsl #0x2 + and r3, r3, #0x3 + and r5, r1, r5 + orr r1, r3, r2, lsl #0x2 + orr r6, r6, r2, lsr #0x1e + mov r7, r12, lsl #0x3 + and r2, r0, r4 + orr r0, r1, r5, lsl #0x3 + orr r1, r0, r2, lsl #0x1b + mov r3, r12, lsl #0x1b + orr r3, r3, r2, lsr #0x5 + orr r7, r7, r5, lsr #0x1d + orr r0, r12, r6 + orr r0, r7, r0 + orr r0, r3, r0 + add r2, sp, #0x0 + str r1, [sp, #0x0] + str r0, [sp, #0x4] +_020969EC: + ldrb r0, [r2, #0x0] + add lr, lr, #0x1 + cmp lr, #0x6 + eor r0, r0, #0xd6 + strb r0, [r2], #0x1 + blt _020969EC + ldr r2, _02096B0C ; =UNK_020FF580 + add r5, sp, #0x0 + mov r4, #0x0 +_02096A10: + ldrb r3, [r5, #0x0] + add r4, r4, #0x1 + cmp r4, #0x5 + mov r0, r3, asr #0x4 + and r1, r0, #0xf + and r0, r3, #0xf + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + orr r0, r0, r1, lsl #0x4 + strb r0, [r5], #0x1 + blt _02096A10 + add r0, sp, #0x0 + add r1, sp, #0x8 + mov r2, #0x8 + bl MI_CpuCopy8 + ldr r4, _02096B10 ; =UNK_020FF578 + add r5, sp, #0x8 + mov r3, #0x0 + add r1, sp, #0x0 +_02096A5C: + ldrb r2, [r5, #0x0] + ldrb r0, [r4, #0x0] + add r3, r3, #0x1 + cmp r3, #0x5 + strb r2, [r1, r0] + add r5, r5, #0x1 + add r4, r4, #0x1 + blt _02096A5C + ldrb r2, [sp, #0x5] + mov r0, #0x0 + ldr r3, [sp, #0x0] + and r2, r2, #0x7 + strb r0, [sp, #0x7] + strb r0, [sp, #0x6] + strb r2, [sp, #0x5] + ldr r2, [sp, #0x4] + mov r4, r3, lsl #0x1 + mov r2, r2, lsl #0x1 + orr r2, r2, r3, lsr #0x1f + str r2, [sp, #0x4] + ldrb r2, [sp, #0x5] + str r4, [sp, #0x0] + ldrb r3, [sp, #0x0] + mov r2, r2, asr #0x3 + and r2, r2, #0x1 + orr r2, r3, r2 + strb r2, [sp, #0x0] +_02096AC8: + ldrb r2, [r1, #0x0] + add r0, r0, #0x1 + cmp r0, #0x6 + eor r2, r2, #0x67 + strb r2, [r1], #0x1 + blt _02096AC8 + ldrb r0, [sp, #0x5] + mov r1, #0x0 + strb r1, [sp, #0x7] + and r0, r0, #0x7 + strb r1, [sp, #0x6] + strb r0, [sp, #0x5] + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + .balign 4 +_02096B08: .word 0x0000FFFF +_02096B0C: .word UNK_020FF580 +_02096B10: .word UNK_020FF578 diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s index e7c3eeb8..edf5e64f 100644 --- a/arm9/asm/unk_020281E0.s +++ b/arm9/asm/unk_020281E0.s @@ -347,7 +347,7 @@ _0202843A: add r5, #0x40 mul r0, r4 add r0, r5, r0 - bl FUN_0209700C + bl DWC_IsValidFriendData pop {r3-r5, pc} thumb_func_start FUN_02028448 diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s index be2e9a54..1af52e10 100644 --- a/arm9/asm/unk_0202DB14.s +++ b/arm9/asm/unk_0202DB14.s @@ -198,7 +198,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0] add r1, #0x48 add r1, r1, r5 - bl FUN_02096CCC + bl DWC_CreateExchangeToken ldr r0, _0202DCD8 ; =UNK_021C59E4 mov r1, #0x0 ldr r0, [r0, #0x0] diff --git a/arm9/asm/unk_020337E8.s b/arm9/asm/unk_020337E8.s index 34148259..d535c8fc 100644 --- a/arm9/asm/unk_020337E8.s +++ b/arm9/asm/unk_020337E8.s @@ -13,7 +13,7 @@ FUN_020337E8: ; 0x020337E8 add r0, #0x1f mov r1, #0x1f bic r0, r1 - bl FUN_02096B14 + bl DWC_Init add r5, r0, #0x0 add r0, r4, #0x0 bl FUN_02016A18 @@ -26,14 +26,14 @@ FUN_0203380C: ; 0x0203380C push {r4, lr} bl FUN_02028228 add r4, r0, #0x0 - bl FUN_02096FB0 + bl DWC_CheckUserData cmp r0, #0x0 bne _0203382A ldr r1, _0203382C ; =0x4144414A add r0, r4, #0x0 - bl thunk_FUN_02097190 + bl DWC_CreateUserData add r0, r4, #0x0 - bl thunk_FUN_02096e4c + bl DWC_ClearDirtyFlag _0203382A: pop {r4, pc} .balign 4 @@ -46,10 +46,10 @@ FUN_02033830: ; 0x02033830 bl FUN_02028228 add r4, r0, #0x0 add r1, sp, #0x0 - bl FUN_02096CCC + bl DWC_CreateExchangeToken add r0, r4, #0x0 add r1, sp, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId add sp, #0xc pop {r3-r4, pc} @@ -59,11 +59,11 @@ FUN_0203384C: ; 0x0203384C bl FUN_020286EC bl FUN_02028228 add r4, r0, #0x0 - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0x0 beq _0203386E add r0, r4, #0x0 - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0x0 beq _0203386E mov r0, #0x1 diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s index 1a099779..a321f397 100644 --- a/arm9/asm/unk_02033874.s +++ b/arm9/asm/unk_02033874.s @@ -23,7 +23,7 @@ FUN_02033874: ; 0x02033874 mvn r1, r1 str r1, [r0, #0x0] add r0, r5, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _020338AE add sp, #0x8 @@ -34,7 +34,7 @@ _020338AE: _020338B0: add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_02096B78 + bl DWC_IsEqualFriendData cmp r0, #0x0 beq _020338C6 ldr r0, [sp, #0x0] @@ -45,16 +45,16 @@ _020338B0: _020338C6: add r0, r6, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0x0 ble _020338F4 add r0, r6, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId str r0, [sp, #0x4] add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId ldr r1, [sp, #0x4] cmp r1, r0 bne _020338F4 @@ -69,7 +69,7 @@ _020338F4: cmp r0, #0x0 bge _0203390A add r0, r4, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _0203390A ldr r0, [sp, #0x0] @@ -102,7 +102,7 @@ FUN_02033918: ; 0x02033918 ldr r1, [sp, #0x0] ldr r2, [sp, #0x4] add r0, r7, #0x0 - bl FUN_020973B4 + bl DWC_CheckFriendKey cmp r0, #0x0 bne _02033950 add sp, #0x18 @@ -112,10 +112,10 @@ _02033950: ldr r1, [sp, #0x0] ldr r2, [sp, #0x4] add r0, sp, #0xc - bl FUN_02096D2C + bl DWC_CreateFriendKeyToken add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0x0 bgt _0203396C add sp, #0x18 @@ -129,11 +129,11 @@ _0203396C: _02033974: add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_02096DA0 + bl DWC_GetGsProfileId str r0, [sp, #0x8] add r0, r7, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId ldr r1, [sp, #0x8] cmp r1, r0 bne _02033994 @@ -146,7 +146,7 @@ _02033994: cmp r0, #0x0 bge _020339A6 add r0, r5, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _020339A6 str r4, [r6, #0x0] diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index 185f3505..abab2d60 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -1,8 +1,6 @@ .include "asm/macros.inc" .include "global.inc" - .extern OSi_ThreadInfo - .section .rodata .global UNK_020FF500 @@ -50,18 +48,6 @@ UNK_020FF572: ; 0x020FF572 UNK_020FF573: ; 0x020FF573 .byte 0x00 - .global UNK_020FF574 -UNK_020FF574: ; 0x020FF574 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF578 -UNK_020FF578: ; 0x020FF578 - .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 - - .global UNK_020FF580 -UNK_020FF580: ; 0x020FF580 - .byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07 - .section .data .global UNK_02106170 @@ -74,60 +60,8 @@ UNK_02106170: ; 0x02106170 .word UNK_020FF554 .word UNK_020FF534 - .global UNK_0210618C -UNK_0210618C: ; 0x0210618C - .asciz "%s%c%c%c%c%s" - - .balign 4, 0 - .global UNK_0210619C -UNK_0210619C: ; 0x0210619C - ; .asciz "0123456789abcdefghijklmnopqrstuvwxyz" - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 - .byte 0x00, 0x00, 0x00, 0x00 - - .section .bss - - .global UNK_021C8C78 -UNK_021C8C78: ; 0x021C8C78 - .space 0x4 - - .global UNK_021C8C7C -UNK_021C8C7C: ; 0x021C8C7C - .space 0x4 - - .global UNK_021C8C80 -UNK_021C8C80: ; 0x021C8C80 - .space 0x4 - - .global UNK_021C8C84 -UNK_021C8C84: ; 0x021C8C84 - .space 0x5 - - .global UNK_021C8C89 -UNK_021C8C89: ; 0x021C8C89 - .space 0x1 - - .global UNK_021C8C8A -UNK_021C8C8A: ; 0x021C8C8A - .space 0x4 - - .global UNK_021C8C8E -UNK_021C8C8E: ; 0x021C8C8E - .space 0x2 - - .global UNK_021C8C90 -UNK_021C8C90: ; 0x021C8C90 - .space 0x10 - - .global UNK_021C8CA0 -UNK_021C8CA0: ; 0x021C8CA0 - .space 0x20 - .text - ; Nintendo DWC - arm_func_start FUN_020910EC FUN_020910EC: ; 0x020910EC stmdb sp!, {r4-r5,lr} @@ -4822,2597 +4756,3 @@ _0209530C: strb r7, [r0, #-0x4] strb r6, [r0, #-0x3] ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_02095324 -FUN_02095324: ; 0x02095324 - ldr r0, _0209532C ; =UNK_021C8C84 - bx lr - .balign 4 -_0209532C: .word UNK_021C8C84 - - arm_func_start FUN_02095330 -FUN_02095330: ; 0x02095330 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldr r3, [r4, #0x8] - ldr r2, [r4, #0xc] - ldr r1, _020953E4 ; =UNK_021C8C84 - str r2, [sp, #0x4] - str r3, [sp, #0x0] - mov r2, #0x5 - bl MI_CpuCopy8 - ldr r1, [sp, #0x0] - ldr r2, [r4, #0x4] - ldr r0, [sp, #0x4] - mov r2, r2, lsr #0x8 - mov r12, r1, lsr #0x5 - mov r3, r0, lsr #0x5 - orr r12, r12, r0, lsl #0x1b - and lr, r2, #0x7 - and r0, r1, #0x1f - orr lr, lr, r0, lsl #0x3 - ldr r2, _020953E4 ; =UNK_021C8C84 - ldr r1, _020953E8 ; =UNK_021C8C8A - strb lr, [r2, #0x5] - add r0, sp, #0x0 - str r12, [sp, #0x0] - str r3, [sp, #0x4] - mov r2, #0x4 - bl MI_CpuCopy8 - ldrh r0, [r4, #0x10] - ldr r1, [sp, #0x4] - ldr r3, _020953E4 ; =UNK_021C8C84 - and r1, r1, #0x3f - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0x6 - strb r0, [r3, #0xa] - ldrh r2, [r4, #0x10] - add r0, r4, #0x12 - ldr r1, _020953EC ; =UNK_021C8C90 - mov r4, r2, asr #0x2 - mov r2, #0x2 - strb r4, [r3, #0xb] - bl MI_CpuCopy8 - ldr r0, _020953E4 ; =UNK_021C8C84 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020953E4: .word UNK_021C8C84 -_020953E8: .word UNK_021C8C8A -_020953EC: .word UNK_021C8C90 - - arm_func_start FUN_020953F0 -FUN_020953F0: ; 0x020953F0 - ldr r3, _02095420 ; =UNK_021C8C78 - and r12, r1, #0xff - ldr r0, _02095424 ; =UNK_021C8C7C - mov r1, #0x1 - strh r12, [r3, #0x0] - str r1, [r0, #0x0] - cmp r2, #0x0 - movne r0, #0xff - strneh r0, [r3, #0x0] - ldr r0, _02095420 ; =UNK_021C8C78 - ldrh r0, [r0, #0x0] - bx lr - .balign 4 -_02095420: .word UNK_021C8C78 -_02095424: .word UNK_021C8C7C - - arm_func_start FUN_02095428 -FUN_02095428: - stmdb sp!, {r4-r6,lr} - mov r5, #0x4 - mov r4, #0x1 -_02095434: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _02095434 - ldr r1, _02095490 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r4, #0x40000 - mov r6, #0x7 - mov r5, #0x0 -_02095460: - mov r0, r6 - mov r1, r5 - mov r2, r5 - mov r3, r5 - bl FUN_020955F4 - cmp r0, #0x1 - beq _02095488 - mov r0, r4 - bl SVC_WaitByLoop - b _02095460 -_02095488: - mov r0, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02095490: .word FUN_020953F0 - - arm_func_start FUN_02095494 -FUN_02095494: - stmdb sp!, {r4-r6,lr} - mov r5, r2 - mov r4, r3 - mov r6, r0 - mov r0, r1 - mov r1, r5 - mov r2, r4 - bl FUN_0209555C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl memcmp - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020954E0 -FUN_020954E0: ; 0x020954E0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0x4 - mov r4, #0x1 -_020954F8: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _020954F8 - ldr r1, _02095558 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r0, r6 - mov r1, r7 - bl DC_StoreRange - mov r4, #0x40000 - mov r5, #0x2 -_0209552C: - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl FUN_020955F4 - cmp r0, #0x1 - ldmeqia sp!, {r4-r8,pc} - mov r0, r4 - bl SVC_WaitByLoop - b _0209552C - ldmia sp!, {r4-r8,pc} - .balign 4 -_02095558: .word FUN_020953F0 - - arm_func_start FUN_0209555C -FUN_0209555C: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r4, r2 - mov r6, r0 - mov r0, r4 - mov r5, r1 - bl DC_InvalidateRange - mov r8, #0x4 - mov r7, #0x1 -_02095580: - mov r0, r8 - mov r1, r7 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _02095580 - ldr r1, _020955F0 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r0, r5, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r7, #0x40000 - mov r9, #0x1 -_020955B0: - mov r0, r9 - mov r1, r6 - mov r2, r8 - mov r3, r4 - bl FUN_020955F4 - cmp r0, #0x1 - beq _020955D8 - mov r0, r7 - bl SVC_WaitByLoop - b _020955B0 -_020955D8: - mov r0, r4 - mov r1, r5 - bl DC_InvalidateRange - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020955F0: .word FUN_020953F0 - - arm_func_start FUN_020955F4 -FUN_020955F4: ; 0x020955F4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc4 - ldr ip, _02095AAC ; =0x0000FFFF - ldr sl, _02095AB0 ; =UNK_021C8CA0 - and r8, r2, r12 - and r7, r1, r12 - mov r5, r1, lsr #0x10 - mov r4, r3, lsr #0x10 - and r1, r3, r12 - orr r3, r8, #0x30000 - str r3, [sp, #0xc] - ldr r3, _02095AB4 ; =0x01050000 - orr r2, r2, #0x20000 - orr r3, r1, r3 - str r3, [sp, #0x14] - orr r1, r1, #0x1040000 - mov r9, r0 - and r0, r5, #0xff - str r2, [sp, #0x1c] - str r1, [sp, #0x24] - ldr r1, _02095AB8 ; =0x02002200 - mov r8, #0x0 - orr r2, r4, #0x40000 - orr r1, r1, r10, lsr #0x18 - str r1, [sp, #0x28] - and r1, r12, r10, lsr #0x8 - orr r1, r1, #0x10000 - ldr r3, _02095ABC ; =0x02002300 - str r2, [sp, #0x10] - orr r2, r0, r3 - str r2, [sp, #0x8] - orr r2, r4, #0x30000 - str r2, [sp, #0x20] - ldr r2, _02095AC0 ; =0x02002500 - mov r6, r10, lsl #0x8 - str r1, [sp, #0x2c] - and r1, r6, #0xff00 - orr r0, r0, r2 - ldr r3, _02095AC4 ; =0x01020000 - str r0, [sp, #0x18] - orr r0, r1, r3 - str r0, [sp, #0x30] - mov r0, #0x20000 - str r0, [sp, #0x40] - mov r0, #0x5 - str r0, [sp, #0xac] - mov r0, #0x3 - str r0, [sp, #0xb0] - mov r0, #0x6 - str r0, [sp, #0xb8] - mov r0, #0x4000 - orr r7, r7, #0x10000 - str r8, [sp, #0xb4] - mov r4, #0x1 - str r8, [sp, #0xa8] - mov r5, #0x4 - str r8, [sp, #0xa4] - str r8, [sp, #0xa0] - str r8, [sp, #0x90] - str r8, [sp, #0x98] - str r8, [sp, #0x9c] - str r8, [sp, #0x94] - str r8, [sp, #0x8c] - str r8, [sp, #0x6c] - str r8, [sp, #0x74] - str r8, [sp, #0x7c] - str r8, [sp, #0x84] - str r8, [sp, #0x88] - str r8, [sp, #0x80] - str r8, [sp, #0x78] - str r8, [sp, #0x70] - str r8, [sp, #0x68] - str r8, [sp, #0x64] - str r8, [sp, #0x38] - str r8, [sp, #0x44] - str r8, [sp, #0x4c] - str r8, [sp, #0x54] - str r8, [sp, #0x5c] - str r8, [sp, #0x60] - str r8, [sp, #0x58] - str r8, [sp, #0x50] - str r8, [sp, #0x48] - str r8, [sp, #0x3c] - str r8, [sp, #0x34] - mov r6, r8 - str r0, [sp, #0xbc] -_0209574C: - cmp r8, #0x0 - bne _02095988 - ldr r0, _02095AC8 ; =UNK_021C8C7C - cmp r9, #0x7 - str r6, [r0, #0x0] - addls pc, pc, r9, lsl #0x2 - b _0209574C -_02095768: - b _0209574C -_0209576C: - b _02095788 -_02095770: - b _02095834 -_02095774: - b _02095854 -_02095778: - b _020958F0 -_0209577C: - b _020958F0 -_02095780: - b _02095948 -_02095784: - b _02095968 -_02095788: - ldr r1, [sp, #0x8] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x34] - blt _0209574C - ldr r2, [sp, #0x38] - mov r0, r5 - mov r1, r7 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x3c] - blt _0209574C - ldr r1, [sp, #0x40] - ldr r2, [sp, #0x44] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x48] - blt _0209574C - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x4c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x50] - blt _0209574C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x54] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x58] - blt _0209574C - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x5c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x60] - movge r8, r4 - b _0209574C -_02095834: - ldr r1, _02095ACC ; =0x03002000 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0x64] - b _0209574C -_02095854: - ldr r1, [sp, #0x18] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x68] - blt _020958E0 - ldr r2, [sp, #0x6c] - mov r0, r5 - mov r1, r7 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x70] - blt _020958E0 - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x74] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x78] - blt _020958E0 - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x7c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x80] - blt _020958E0 - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x84] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x88] - movge r8, r4 -_020958E0: - bl OS_GetTick - str r0, [sp, #0x0] - mov r11, r1 - b _0209574C -_020958F0: - ldr r1, [sp, #0x28] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x8c] - blt _0209574C - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x90] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x94] - blt _0209574C - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x98] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x9c] - movge r8, r4 - b _0209574C -_02095948: - ldr r1, _02095AD0 ; =0x03002D00 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0xa0] - b _0209574C -_02095968: - ldr r1, _02095AD4 ; =0x03002100 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0xa4] - b _0209574C -_02095988: - ldr r0, _02095AC8 ; =UNK_021C8C7C - ldr r0, [r0, #0x0] - cmp r0, #0x1 - bne _0209574C - ldr r0, _02095AD8 ; =UNK_021C8C78 - ldr r8, [sp, #0xa8] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bne _02095AA0 - cmp r9, #0x7 - addls pc, pc, r9, lsl #0x2 - b _0209574C - b _0209574C - b _020959D8 - b _020959E4 - b _020959EC - b _020959F4 - b _020959F4 - b _02095A88 - b _02095A94 -_020959D8: - add sp, sp, #0xc4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020959E4: - mov r9, r5 - b _0209574C -_020959EC: - ldr r9, [sp, #0xac] - b _0209574C -_020959F4: - mov r0, r10 - mov r1, r4 - bl DC_InvalidateRange - cmp r9, #0x4 - bne _02095A24 - ldrb r0, [r10, #0x0] - ands r0, r0, #0x2 - ldrne r9, [sp, #0xb0] - bne _0209574C - add sp, sp, #0xc4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_02095A24: - ldrb r1, [r10, #0x0] - ands r0, r1, #0x1 - addeq sp, sp, #0xc4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ands r0, r1, #0x20 - bne _02095A74 - bl OS_GetTick - ldr r2, [sp, #0x0] - ldr r3, [sp, #0xb4] - subs r2, r0, r2 - sbc r0, r1, r11 - mov r1, r0, lsl #0x6 - orr r1, r1, r2, lsr #0x1a - mov r0, r2, lsl #0x6 - ldr r2, _02095ADC ; =0x000082EA - bl _ll_udiv - cmp r1, #0x0 - cmpeq r0, #0xfa0 - bls _02095A7C -_02095A74: - ldr r9, [sp, #0xb8] - b _0209574C -_02095A7C: - ldr r0, [sp, #0xbc] - bl SVC_WaitByLoop - b _0209574C -_02095A88: - add sp, sp, #0xc4 - mov r0, r8 - ldmia sp!, {r4-r11,pc} -_02095A94: - add sp, sp, #0xc4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_02095AA0: - mov r0, r8 - add sp, sp, #0xc4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095AAC: .word 0x0000FFFF -_02095AB0: .word UNK_021C8CA0 -_02095AB4: .word 0x01050000 -_02095AB8: .word 0x02002200 -_02095ABC: .word 0x02002300 -_02095AC0: .word 0x02002500 -_02095AC4: .word 0x01020000 -_02095AC8: .word UNK_021C8C7C -_02095ACC: .word 0x03002000 -_02095AD0: .word 0x03002D00 -_02095AD4: .word 0x03002100 -_02095AD8: .word UNK_021C8C78 -_02095ADC: .word 0x000082EA - - arm_func_start FUN_02095AE0 -FUN_02095AE0: - ldrb r0, [r0, #0x0] - cmp r0, #0x7f - moveq r0, #0x0 - bxeq lr - cmp r0, #0x1 - movcc r0, #0x0 - bxcc lr - cmp r0, #0xdf - movls r0, #0x1 - movhi r0, #0x0 - bx lr - - arm_func_start FUN_02095B0C -FUN_02095B0C: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - add r1, sp, #0x0 - mov r0, r5 - mov r2, #0x4 - bl MI_CpuCopy8 - add r1, sp, #0x4 - mov r0, r4 - mov r2, #0x4 - bl MI_CpuCopy8 - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x0] - mvn r0, #0x1 - orr r1, r2, r3 - cmp r1, r0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mvn r0, r3 - ands r0, r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02095B88 -FUN_02095B88: - mov r2, #0x0 -_02095B8C: - ldrb r1, [r0, r2] - cmp r1, #0x0 - movne r0, #0x1 - bxne lr - add r2, r2, #0x1 - cmp r2, #0x20 - blt _02095B8C - mov r0, #0x0 - bx lr - - arm_func_start FUN_02095BB0 -FUN_02095BB0: ; 0x02095BB0 - mvn r2, #0x0 - mov r12, #0x0 - eor r3, r2, r2, lsr r0 - mov r2, r12 -_02095BC0: - rsb r0, r2, #0x18 - mov r0, r3, lsr r0 - strb r0, [r1, r12] - add r12, r12, #0x1 - cmp r12, #0x4 - add r2, r2, #0x8 - blt _02095BC0 - bx lr - - arm_func_start FUN_02095BE0 -FUN_02095BE0: ; 0x02095BE0 - stmdb sp!, {r4,lr} - mov lr, #0x0 - mov r4, lr - mov r2, lr -_02095BF0: - ldrb r3, [r0, lr] - mov r12, r2 -_02095BF8: - mov r1, r3, asr r12 - ands r1, r1, #0x1 - add r12, r12, #0x1 - addne r4, r4, #0x1 - cmp r12, #0x8 - blt _02095BF8 - add lr, lr, #0x1 - cmp lr, #0x4 - blt _02095BF0 - and r0, r4, #0xff - ldmia sp!, {r4,pc} - - arm_func_start FUN_02095C24 -FUN_02095C24: ; 0x02095C24 - ldr ip, _02095C34 ; =MI_CpuCopy8 - ldr r1, _02095C38 ; =UNK_021C8C84 - mov r2, #0xe - bx r12 - .balign 4 -_02095C34: .word MI_CpuCopy8 -_02095C38: .word UNK_021C8C84 - - arm_func_start FUN_02095C3C -FUN_02095C3C: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r1, _02095CD8 ; =UNK_021C8C80 - mov r10, r0 - ldr r8, [r1, #0x0] - mov r7, r10 - mov r9, #0x0 - add r4, r10, #0x400 - add r6, r10, #0x500 - mov r5, #0x100 - mov r11, #0xfe -_02095C68: - mov r0, r6 - mov r1, r7 - mov r2, r11 - bl MATH_CalcCRC16 - add r1, r10, r9, lsl #0x8 - strh r0, [r1, #0xfe] -_02095C80: - mov r0, r8 - mov r1, r5 - mov r2, r7 - bl FUN_020954E0 - mov r0, r7 - mov r1, r8 - mov r2, r5 - mov r3, r4 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095C80 - add r9, r9, #0x1 - cmp r9, #0x4 - add r7, r7, #0x100 - add r8, r8, #0x100 - blt _02095C68 - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095CD8: .word UNK_021C8C80 - - arm_func_start FUN_02095CDC -FUN_02095CDC: ; 0x02095CDC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _02095D64 ; =UNK_021C8C80 - mov r4, r0 - ldr r6, [r3, #0x0] - mov r9, r1 - mov r8, r2 - mov r7, #0x0 - mov r5, #0x100 -_02095D00: - ldr r0, [r9, r7, lsl #0x2] - cmp r0, #0x0 - beq _02095D38 -_02095D0C: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020954E0 - mov r0, r4 - mov r1, r6 - mov r2, r5 - mov r3, r8 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095D0C -_02095D38: - add r7, r7, #0x1 - cmp r7, #0x4 - add r4, r4, #0x100 - add r6, r6, #0x100 - blt _02095D00 - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_02095D64: .word UNK_021C8C80 - - arm_func_start FUN_02095D68 -FUN_02095D68: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _02095D98 ; =UNK_021C8C80 - mov r2, r0 - ldr r0, [r1, #0x0] - mov r1, #0x400 - bl FUN_0209555C - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_02095D98: .word UNK_021C8C80 - - arm_func_start FUN_02095D9C -FUN_02095D9C: - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x20 - mov r1, r0 - mov r2, r4 - bl FUN_0209555C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldrh r2, [r4, #0x0] - ldr r1, _02095DDC ; =UNK_021C8C80 - mov r0, #0x1 - mov r2, r2, lsl #0x3 - sub r2, r2, #0x400 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_02095DDC: .word UNK_021C8C80 - - arm_func_start FUN_02095DE0 -FUN_02095DE0: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, _02095EBC ; =UNK_021C8C80 - mov r10, r1 - ldr r8, [r2, #0x0] - bl FUN_02095330 - ldr r1, _02095EC0 ; =0x0000A001 - add r0, r10, #0x200 - bl MATHi_CRC16InitTableRev - mov r9, #0x0 - add r4, r10, #0x100 - add r6, r10, #0xf0 - mov r7, #0x100 - mov r5, #0xe - mov r11, #0xfe -_02095E1C: - mov r0, r8 - mov r1, r7 - mov r2, r10 - bl FUN_0209555C - cmp r0, #0x0 - bne _02095E44 - bl OS_Terminate - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_02095E44: - ldr r0, _02095EC4 ; =UNK_021C8C84 - mov r1, r6 - mov r2, r5 - bl MI_CpuCopy8 - mov r1, r10 - mov r2, r11 - add r0, r10, #0x200 - bl MATH_CalcCRC16 - strh r0, [r10, #0xfe] -_02095E68: - mov r0, r8 - mov r1, r7 - mov r2, r10 - bl FUN_020954E0 - mov r0, r10 - mov r1, r8 - mov r2, r7 - mov r3, r4 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095E68 - add r9, r9, #0x1 - cmp r9, #0x2 - add r8, r8, #0x100 - blt _02095E1C - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095EBC: .word UNK_021C8C80 -_02095EC0: .word 0x0000A001 -_02095EC4: .word UNK_021C8C84 - - arm_func_start FUN_02095EC8 -FUN_02095EC8: - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _02095F90 ; =UNK_021C8C84 - mov r1, r4 - mov r2, #0x6 - bl MI_CpuCopy8 - ldr r3, [r4, #0x0] - mvn r0, #0x0 - ldr r2, [r4, #0x4] - ldr r1, _02095F94 ; =0x000007FF - and r0, r3, r0 - str r0, [r4, #0x0] - and r1, r2, r1 - ldr r0, _02095F98 ; =UNK_021C8C89 - str r1, [r4, #0x4] - add r1, r4, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - add r12, r4, #0x8 - ldr r1, [r4, #0x8] - ldr r0, [r12, #0x4] - mov r1, r1, lsr #0x3 - orr r1, r1, r0, lsl #0x1d - str r1, [r4, #0x8] - mov r0, r0, lsr #0x3 - str r0, [r12, #0x4] - ldr r3, [r4, #0x8] - mvn r0, #0x0 - ldr r2, [r12, #0x4] - ldr r1, _02095F94 ; =0x000007FF - and r0, r3, r0 - str r0, [r4, #0x8] - and r1, r2, r1 - ldr r0, _02095F9C ; =UNK_021C8C8E - str r1, [r12, #0x4] - add r1, r4, #0x10 - mov r2, #0x2 - bl MI_CpuCopy8 - ldrh r1, [r4, #0x10] - ldr r3, _02095FA0 ; =0x000003FF - ldr r0, _02095FA4 ; =UNK_021C8C90 - mov r1, r1, asr #0x6 - strh r1, [r4, #0x10] - ldrh r12, [r4, #0x10] - add r1, r4, #0x12 - mov r2, #0x2 - and r3, r12, r3 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldmia sp!, {r4,pc} - .balign 4 -_02095F90: .word UNK_021C8C84 -_02095F94: .word 0x000007FF -_02095F98: .word UNK_021C8C89 -_02095F9C: .word UNK_021C8C8E -_02095FA0: .word 0x000003FF -_02095FA4: .word UNK_021C8C90 - - arm_func_start FUN_02095FA8 -FUN_02095FA8: ; 0x02095FA8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _02095FD8 ; =UNK_021C8C80 - mov r2, r0 - ldr r0, [r1, #0x0] - mov r1, #0x300 - bl FUN_0209555C - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_02095FD8: .word UNK_021C8C80 - - arm_func_start FUN_02095FDC -FUN_02095FDC: ; 0x02095FDC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r1, r5, r4, lsl #0x8 - mov r0, #0x0 - mov r2, #0x100 - bl MIi_CpuClear16 - add r0, r5, r4, lsl #0x8 - mov r1, #0xff - strb r1, [r0, #0xe7] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096010 -FUN_02096010: ; 0x02096010 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r1, r7 - mov r0, #0x0 - mov r2, #0x400 - bl MIi_CpuClear16 - mov r2, #0x0 - mov r1, #0xff -_02096034: - add r0, r7, r2, lsl #0x8 - add r2, r2, #0x1 - strb r1, [r0, #0xe7] - cmp r2, #0x3 - blt _02096034 - add r0, sp, #0x0 - bl FUN_020967A4 - add r0, sp, #0x0 - bl FUN_02095330 - mov r6, r0 - mov r5, #0x0 - mov r4, #0xe -_02096064: - mov r0, r6 - mov r2, r4 - add r1, r7, #0xf0 - bl MI_CpuCopy8 - add r5, r5, #0x1 - cmp r5, #0x2 - add r7, r7, #0x100 - blt _02096064 - mov r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_02096090 -FUN_02096090: - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldrb r0, [r4, #0xe7] - cmp r0, #0xff - addeq sp, sp, #0x8 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - cmp r0, #0x2 - addhi sp, sp, #0x8 - movhi r0, #0x0 - ldmhiia sp!, {r4,pc} - add r0, r4, #0x40 - bl FUN_02095B88 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, _0209618C ; =UNK_020FF574 - add r0, r4, #0xc0 - mov r2, #0x4 - bl memcmp - cmp r0, #0x0 - beq _02096140 - add r0, r4, #0xc4 - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldrb r0, [r4, #0xd0] - cmp r0, #0x20 - addhi sp, sp, #0x8 - movhi r0, #0x0 - ldmhiia sp!, {r4,pc} - add r1, sp, #0x0 - bl FUN_02095BB0 - add r1, sp, #0x0 - add r0, r4, #0xc0 - bl FUN_02095B0C - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} -_02096140: - ldr r1, _0209618C ; =UNK_020FF574 - add r0, r4, #0xc8 - mov r2, #0x4 - bl memcmp - cmp r0, #0x0 - beq _02096180 - add r0, r4, #0xc8 - bl FUN_02095AE0 - cmp r0, #0x0 - bne _02096180 - add r0, r4, #0xcc - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} -_02096180: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_0209618C: .word UNK_020FF574 - - arm_func_start FUN_02096190 -FUN_02096190: ; 0x02096190 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - mov r1, #0x0 - mov r2, #0x700 - bl MI_CpuFill8 - mov r0, r10 - bl FUN_02095D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964B4 ; =0xFFFFD8EF - ldmeqia sp!, {r4-r11,pc} - ldr r1, _020964B8 ; =0x0000A001 - add r0, r10, #0x500 - bl MATHi_CRC16InitTableRev - mov r0, r10 - bl FUN_02095D68 - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964B4 ; =0xFFFFD8EF - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x0 - mov r1, #0x0 - mov r2, #0x10 - bl MI_CpuFill8 - mov r8, r10 - mov r7, r10 - mov r9, #0x0 - add r11, sp, #0x0 - add r6, r10, #0x500 - mov r4, #0x1 - mov r5, #0xfe -_02096210: - mov r0, r6 - mov r1, r8 - mov r2, r5 - bl MATH_CalcCRC16 - add r1, r10, r9, lsl #0x8 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - bne _02096240 - mov r0, r7 - bl FUN_02096090 - cmp r0, #0x0 - strne r4, [r11, r9, lsl #0x2] -_02096240: - add r9, r9, #0x1 - cmp r9, #0x3 - add r8, r8, #0x100 - add r7, r7, #0x100 - blt _02096210 - add r0, r10, #0x500 - add r1, r10, #0x300 - mov r2, #0xfe - bl MATH_CalcCRC16 - add r1, r10, #0x300 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - moveq r0, #0x1 - ldr r1, [sp, #0x0] - streq r0, [sp, #0xc] - cmp r1, #0x0 - beq _020962BC - ldr r0, [sp, #0x4] - cmp r0, #0x0 - beq _020962BC - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _020962BC - ldr r0, [sp, #0xc] - cmp r0, #0x0 - beq _020962BC - add r0, r10, #0xf0 - bl FUN_02095C24 - add sp, sp, #0x14 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020962BC: - cmp r1, #0x0 - bne _0209630C - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _0209630C - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bne _0209630C - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _0209630C - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_0209630C: - cmp r1, #0x0 - beq _02096320 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _0209635C -_02096320: - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02096338 - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _0209635C -_02096338: - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_0209635C: - cmp r1, #0x0 - bne _02096394 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _02096394 - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - ldrne r0, _020964C0 ; =0xFFFFD8ED - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_02096394: - cmp r1, #0x0 - bne _020963C4 - mov r0, r10 - mov r1, #0x0 - bl FUN_02095FDC - add r0, r10, #0x1f0 - add r1, r10, #0xf0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r10, #0x1ef] - strb r0, [r10, #0xef] - b _020963F4 -_020963C4: - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _020963F4 - mov r0, r10 - mov r1, #0x1 - bl FUN_02095FDC - add r0, r10, #0xf0 - add r1, r10, #0x1f0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r10, #0xef] - strb r0, [r10, #0x1ef] -_020963F4: - add r0, r10, #0xf0 - bl FUN_02095C24 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bne _02096414 - mov r0, r10 - mov r1, #0x2 - bl FUN_02095FDC -_02096414: - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _02096430 - add r1, r10, #0x300 - mov r0, #0x0 - mov r2, #0x100 - bl MIi_CpuClear16 -_02096430: - mov r4, #0x0 - mov r1, r4 - add r0, sp, #0x0 - add r5, r10, #0xef - mov r6, #0x1 -_02096444: - ldr r2, [r0, r1, lsl #0x2] - cmp r2, #0x0 - bne _0209647C - ldrb r2, [r10, #0xef] - mov r7, r6, lsl r1 - ands r2, r2, r7 - beq _0209647C - ldrb r3, [r5, #0x0] - mvn r2, r7 - mov r4, r6 - and r2, r3, r2 - strb r2, [r5, #0x0] - ldrb r2, [r10, #0xef] - strb r2, [r10, #0x1ef] -_0209647C: - add r1, r1, #0x1 - cmp r1, #0x3 - blt _02096444 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmeqia sp!, {r4-r11,pc} - cmp r4, #0x0 - ldrne r0, _020964C4 ; =0xFFFFD8EE - moveq r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020964B4: .word 0xFFFFD8EF -_020964B8: .word 0x0000A001 -_020964BC: .word 0xFFFFD8F0 -_020964C0: .word 0xFFFFD8ED -_020964C4: .word 0xFFFFD8EE - - arm_func_start FUN_020964C8 -FUN_020964C8: - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0x0 - bl FUN_02095EC8 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0xc] - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r0 - bne _0209650C - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x0] - cmp r1, r0 - cmpeq r2, r0 - addeq sp, sp, #0x14 - moveq r0, #0x1 - ldmeqia sp!, {pc} -_0209650C: - mov r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {pc} - - arm_func_start FUN_02096518 -FUN_02096518: ; 0x02096518 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_02095EC8 - add r0, sp, #0x0 - ldmia r0, {r2-r3} - stmia r4, {r2-r3} - add r1, sp, #0x8 - add r0, r4, #0x8 - ldmia r1, {r2-r3} - stmia r0, {r2-r3} - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x4] - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r0 - streq r0, [r4, #0x10] - movne r0, #0x1 - strne r0, [r4, #0x10] - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096570 -FUN_02096570: ; 0x02096570 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x28 - add r2, sp, #0x0 - mov r1, #0x0 - strb r1, [r2, #0x0] - strb r1, [r2, #0x1] - strb r1, [r2, #0x2] - strb r1, [r2, #0x3] - strb r1, [r2, #0x4] - mov r5, r0 - strb r1, [r2, #0x5] - bl FUN_02095EC8 - bl RTC_Init - add r0, sp, #0x8 - bl RTC_GetDate - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x18 - bl RTC_GetTime - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x8 - add r1, sp, #0x18 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0x0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x28 - ldmltia sp!, {r4-r10,pc} - bl OS_IsTickAvailable - cmp r0, #0x0 - beq _0209660C - ldr r0, _02096700 ; =OS_GetTick - adds r4, r4, r0 -_0209660C: - add r0, sp, #0x0 - bl OS_GetMacAddress - ldrb r1, [sp, #0x0] - ldr r6, _02096704 ; =0x5D588B65 - ldr r7, _02096708 ; =0x00269EC3 - ldrb r0, [sp, #0x1] - mla r9, r4, r6, r7 - mov r1, r1, lsl #0x10 - orr r1, r1, r0, lsl #0x8 - ldrb r2, [sp, #0x2] - ldr r0, _0209670C ; =0x000009BF - ldrb r8, [sp, #0x3] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #0x1 - mov r2, r9, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - mov r3, r8, lsl #0x10 - ldrb r4, [sp, #0x4] - ldrb r0, [sp, #0x5] - mov r8, #0x0 - orr r10, r3, r4, lsl #0x8 - strh r2, [r5, #0x10] - str r8, [r5, #0x8] - str r8, [r5, #0xc] - moveq r1, #0x0 - ldr r2, [r5, #0xc] - ldr r3, [r5, #0x8] - cmp r2, r8 - cmpeq r3, r8 - and r4, r1, #0xff - orr r10, r0, r10 - bne _020966F4 -_02096698: - mla r9, r6, r9, r7 - b _020966A4 -_020966A0: - mla r9, r6, r9, r7 -_020966A4: - cmp r9, #0x0 - beq _020966A0 - ldrh r1, [r5, #0x12] - mov r0, r9, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r1, r0 - beq _020966A0 - strh r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - mov r1, r10 - mov r2, r4 - mov r3, r8 - bl FUN_02096988 - str r0, [r5, #0x8] - str r1, [r5, #0xc] - ldr r0, [r5, #0xc] - ldr r1, [r5, #0x8] - cmp r0, r8 - cmpeq r1, r8 - beq _02096698 -_020966F4: - mov r0, #0x1 - add sp, sp, #0x28 - ldmia sp!, {r4-r10,pc} - .balign 4 -_02096700: .word OS_GetTick -_02096704: .word 0x5D588B65 -_02096708: .word 0x00269EC3 -_0209670C: .word 0x000009BF - - arm_func_start FUN_02096710 -FUN_02096710: ; 0x02096710 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0x0 - mov r4, r1 - bl FUN_02095EC8 - add r12, r5, #0x8 - ldmia r12, {r2-r3} - stmia r5, {r2-r3} - add r1, sp, #0x8 - ldmia r1, {r2-r3} - mov r0, r5 - mov r1, r4 - stmia r12, {r2-r3} - bl FUN_02095DE0 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096760 -FUN_02096760: ; 0x02096760 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_020967A4 - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - add r0, sp, #0x0 - mov r1, r4 - bl FUN_02095DE0 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020967A4 -FUN_020967A4: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x28 - mov r8, r0 - bl FUN_02095EC8 - bl RTC_Init - add r0, sp, #0x8 - bl RTC_GetDate - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x18 - bl RTC_GetTime - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x8 - add r1, sp, #0x18 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0x0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x28 - ldmltia sp!, {r4-r10,pc} - bl OS_IsTickAvailable - cmp r0, #0x0 - beq _02096820 - ldr r0, _02096978 ; =OS_GetTick - adds r4, r4, r0 -_02096820: - add r0, sp, #0x0 - bl OS_GetMacAddress - ldrb r1, [sp, #0x0] - ldr sb, _0209697C ; =0x5D588B65 - ldr sl, _02096980 ; =0x00269EC3 - ldrb r0, [sp, #0x1] - mla r5, r4, r9, r10 - mov r1, r1, lsl #0x10 - orr r1, r1, r0, lsl #0x8 - ldrb r2, [sp, #0x2] - ldr r0, _02096984 ; =0x000009BF - ldrb r6, [sp, #0x3] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #0x1 - moveq r1, #0x0 - mov r2, r5, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - ldrb r0, [sp, #0x5] - ldrb r4, [sp, #0x4] - mov r3, r6, lsl #0x10 - and r7, r1, #0xff - orr r3, r3, r4, lsl #0x8 - strh r2, [r8, #0x10] - mov r4, #0x0 - str r4, [r8, #0x0] - str r4, [r8, #0x4] - ldrh r2, [r8, #0x12] - orr r6, r0, r3 - cmp r2, #0x0 - bne _02096910 - str r4, [r8, #0x8] - str r4, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - bne _0209696C -_020968C0: - mul r0, r5, r9 - adds r5, r0, r10 - bne _020968D8 -_020968CC: - mul r0, r5, r9 - adds r5, r0, r10 - beq _020968CC -_020968D8: - strh r5, [r8, #0x12] - ldrh r0, [r8, #0x12] - mov r1, r6 - mov r2, r7 - mov r3, r4 - bl FUN_02096988 - str r0, [r8, #0x8] - str r1, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, #0x0 - beq _020968C0 - b _0209696C -_02096910: - str r4, [r8, #0x8] - str r4, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - bne _0209696C - add r5, r8, #0x12 -_02096930: - ldrh r0, [r5, #0x0] - mov r1, r6 - mov r2, r7 - add r0, r0, #0x1 - strh r0, [r5, #0x0] - ldrh r0, [r8, #0x12] - mov r3, r4 - bl FUN_02096988 - str r0, [r8, #0x8] - str r1, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - beq _02096930 -_0209696C: - mov r0, #0x1 - add sp, sp, #0x28 - ldmia sp!, {r4-r10,pc} - .balign 4 -_02096978: .word OS_GetTick -_0209697C: .word 0x5D588B65 -_02096980: .word 0x00269EC3 -_02096984: .word 0x000009BF - - arm_func_start FUN_02096988 -FUN_02096988: ; 0x02096988 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov lr, #0x0 - and r12, lr, #0x0 - mvn r5, #0xff000000 - ldr r4, _02096B08 ; =0x0000FFFF - and r2, r2, #0x1 - mov r6, r12, lsl #0x2 - and r3, r3, #0x3 - and r5, r1, r5 - orr r1, r3, r2, lsl #0x2 - orr r6, r6, r2, lsr #0x1e - mov r7, r12, lsl #0x3 - and r2, r0, r4 - orr r0, r1, r5, lsl #0x3 - orr r1, r0, r2, lsl #0x1b - mov r3, r12, lsl #0x1b - orr r3, r3, r2, lsr #0x5 - orr r7, r7, r5, lsr #0x1d - orr r0, r12, r6 - orr r0, r7, r0 - orr r0, r3, r0 - add r2, sp, #0x0 - str r1, [sp, #0x0] - str r0, [sp, #0x4] -_020969EC: - ldrb r0, [r2, #0x0] - add lr, lr, #0x1 - cmp lr, #0x6 - eor r0, r0, #0xd6 - strb r0, [r2], #0x1 - blt _020969EC - ldr r2, _02096B0C ; =UNK_020FF580 - add r5, sp, #0x0 - mov r4, #0x0 -_02096A10: - ldrb r3, [r5, #0x0] - add r4, r4, #0x1 - cmp r4, #0x5 - mov r0, r3, asr #0x4 - and r1, r0, #0xf - and r0, r3, #0xf - ldrb r1, [r2, r1] - ldrb r0, [r2, r0] - orr r0, r0, r1, lsl #0x4 - strb r0, [r5], #0x1 - blt _02096A10 - add r0, sp, #0x0 - add r1, sp, #0x8 - mov r2, #0x8 - bl MI_CpuCopy8 - ldr r4, _02096B10 ; =UNK_020FF578 - add r5, sp, #0x8 - mov r3, #0x0 - add r1, sp, #0x0 -_02096A5C: - ldrb r2, [r5, #0x0] - ldrb r0, [r4, #0x0] - add r3, r3, #0x1 - cmp r3, #0x5 - strb r2, [r1, r0] - add r5, r5, #0x1 - add r4, r4, #0x1 - blt _02096A5C - ldrb r2, [sp, #0x5] - mov r0, #0x0 - ldr r3, [sp, #0x0] - and r2, r2, #0x7 - strb r0, [sp, #0x7] - strb r0, [sp, #0x6] - strb r2, [sp, #0x5] - ldr r2, [sp, #0x4] - mov r4, r3, lsl #0x1 - mov r2, r2, lsl #0x1 - orr r2, r2, r3, lsr #0x1f - str r2, [sp, #0x4] - ldrb r2, [sp, #0x5] - str r4, [sp, #0x0] - ldrb r3, [sp, #0x0] - mov r2, r2, asr #0x3 - and r2, r2, #0x1 - orr r2, r3, r2 - strb r2, [sp, #0x0] -_02096AC8: - ldrb r2, [r1, #0x0] - add r0, r0, #0x1 - cmp r0, #0x6 - eor r2, r2, #0x67 - strb r2, [r1], #0x1 - blt _02096AC8 - ldrb r0, [sp, #0x5] - mov r1, #0x0 - strb r1, [sp, #0x7] - and r0, r0, #0x7 - strb r1, [sp, #0x6] - strb r0, [sp, #0x5] - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - .balign 4 -_02096B08: .word 0x0000FFFF -_02096B0C: .word UNK_020FF580 -_02096B10: .word UNK_020FF578 - - .extern _SDK_NintendoDWC - - arm_func_start FUN_02096B14 -FUN_02096B14: ; 0x02096B14 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, _02096B74 ; =_SDK_NintendoDWC - mov r4, #0x0 - bl OSi_ReferSymbol - mov r0, r6 - bl FUN_02096190 - mov r5, r0 - bl FUN_020964C8 - cmp r0, #0x0 - beq _02096B4C - mov r0, r6 - bl FUN_02096760 - mov r4, #0x1 -_02096B4C: - cmp r5, #0x0 - bge _02096B64 - cmp r4, #0x0 - movne r0, #0x2 - moveq r0, #0x3 - ldmia sp!, {r4-r6,pc} -_02096B64: - cmp r4, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02096B74: .word _SDK_NintendoDWC - - ; Nintendo Wifi (?) - - arm_func_start FUN_02096B78 -FUN_02096B78: ; 0x02096B78 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r7, r0 - bl FUN_020974C8 - mov r5, r0 - mov r0, r4 - bl FUN_020974C8 - cmp r5, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - cmp r5, #0x3 - bne _02096BD8 - mov r0, r7 - bl FUN_02097544 - mov r5, r0 - mov r0, r4 - bl FUN_02097544 - cmp r5, r0 - moveq r0, #0x1 - add sp, sp, #0x4 - movne r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096BD8: - cmp r5, #0x1 - bne _02096C34 - mov r0, r7 - bl FUN_02097568 - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl FUN_02097568 - cmp r6, r1 - cmpeq r5, r0 - bne _02096C28 - mov r0, r7 - bl FUN_02097560 - mov r5, r0 - mov r0, r4 - bl FUN_02097560 - cmp r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r7,pc} -_02096C28: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096C34: - cmp r5, #0x2 - bne _02096C6C - mov r0, r7 - bl FUN_0209754C - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl FUN_0209754C - cmp r6, r1 - cmpeq r5, r0 - moveq r0, #0x1 - add sp, sp, #0x4 - movne r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096C6C: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_02096C78 -FUN_02096C78: ; 0x02096C78 - ldr ip, _02096C8C ; =FUN_02097218 - mov r3, r0 - mov r0, r1 - ldr r1, [r3, #0x24] - bx r12 - .balign 4 -_02096C8C: .word FUN_02097218 - - arm_func_start FUN_02096C90 -FUN_02096C90: ; 0x02096C90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - mov r1, r4 - bl FUN_020974F4 - mov r0, r5 - mov r1, #0x3 - bl FUN_02097440 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096CCC -FUN_02096CCC: ; 0x02096CCC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - bl FUN_0209702C - cmp r0, #0x0 - addeq r0, r5, #0x4 - ldmeqia r0, {r0-r2} - addeq sp, sp, #0x4 - stmeqia r4, {r0-r2} - ldmeqia sp!, {r4-r5,pc} - ldr r1, [r5, #0x1c] - mov r0, r4 - bl FUN_020974F4 - mov r0, r4 - mov r1, #0x3 - bl FUN_02097440 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096D2C -FUN_02096D2C: ; 0x02096D2C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, r2 - mov r6, r0 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020974FC - mov r0, r6 - mov r1, #0x2 - bl FUN_02097440 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_02096D68 -FUN_02096D68: ; 0x02096D68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r3, #0x1c] - mov r2, #0x0 - mov r1, r2 - cmp r0, #0x0 - beq _02096D94 - ldr r1, [r3, #0x24] - bl FUN_020973D0 - mov r2, r0 -_02096D94: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_02096DA0 -FUN_02096DA0: ; 0x02096DA0 - stmdb sp!, {r4-r6,lr} - mov r4, r1 - mov r6, r0 - mov r0, r4 - bl FUN_020974C8 - cmp r0, #0x1 - beq _02096E14 - cmp r0, #0x2 - beq _02096DD0 - cmp r0, #0x3 - beq _02096E08 - b _02096E1C -_02096DD0: - mov r0, r4 - bl FUN_0209754C - ldr r2, [r6, #0x24] - mov r4, r0 - mov r5, r1 - bl FUN_02097344 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r6, #0x24] - mov r0, r4 - mov r1, r5 - bl FUN_02097324 - ldmia sp!, {r4-r6,pc} -_02096E08: - mov r0, r4 - bl FUN_02097544 - ldmia sp!, {r4-r6,pc} -_02096E14: - mvn r0, #0x0 - ldmia sp!, {r4-r6,pc} -_02096E1C: - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_02096E24 -FUN_02096E24: ; 0x02096E24 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x2 - movne r0, #0x0 - movne r1, r0 - ldmneia sp!, {r4,pc} - mov r0, r4 - bl FUN_0209754C - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096E4C -FUN_02096E4C: ; 0x02096E4C - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - mov r4, r0 - ldr r1, [r4, #0x20] - add r0, sp, #0x0 - bic r2, r1, #0x1 - ldr r1, _02096E8C ; =0xEDB88320 - str r2, [r4, #0x20] - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096E8C: .word 0xEDB88320 - - arm_func_start thunk_FUN_02096e4c -thunk_FUN_02096e4c: ; 0x02096E90 - ldr ip, _02096E98 ; =FUN_02096E4C - bx r12 - .balign 4 -_02096E98: .word FUN_02096E4C - - arm_func_start FUN_02096E9C -FUN_02096E9C: ; 0x02096E9C - ldr r0, [r0, #0x20] - and r0, r0, #0x1 - cmp r0, #0x1 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_02096EB4 -FUN_02096EB4: ; 0x02096EB4 - ldr ip, _02096EBC ; =FUN_02096E9C - bx r12 - .balign 4 -_02096EBC: .word FUN_02096E9C - - arm_func_start FUN_02096EC0 -FUN_02096EC0: ; 0x02096EC0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - mov r4, r0 - add r3, r4, #0x10 - mov r12, r2 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} - ldr r1, _02096F14 ; =0xEDB88320 - add r0, sp, #0x0 - str r12, [r4, #0x1c] - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x20] - orr r0, r0, #0x1 - str r0, [r4, #0x20] - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096F14: .word 0xEDB88320 - - arm_func_start FUN_02096F18 -FUN_02096F18: ; 0x02096F18 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, r4, #0x10 - bl FUN_020974C8 - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - add r0, sp, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - add r0, r4, #0x10 - bl FUN_02097568 - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x0] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096F80 -FUN_02096F80: ; 0x02096F80 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x10 - bl FUN_0209703C - cmp r0, #0x0 - beq _02096FA8 - ldr r0, [r4, #0x1c] - cmp r0, #0x0 - movgt r0, #0x1 - ldmgtia sp!, {r4,pc} -_02096FA8: - mov r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096FB0 -FUN_02096FB0: ; 0x02096FB0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - ldr r1, _02096FF0 ; =0xEDB88320 - mov r4, r0 - add r0, sp, #0x0 - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - ldr r1, [r4, #0x3c] - cmp r0, r1 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096FF0: .word 0xEDB88320 - - arm_func_start thunk_FUN_02097190 -thunk_FUN_02097190: ; 0x02096FF4 - ldr ip, _02096FFC ; =FUN_02097190 - bx r12 - .balign 4 -_02096FFC: .word FUN_02097190 - - arm_func_start FUN_02097000 -FUN_02097000: ; 0x02097000 - ldr ip, _02097008 ; =FUN_0209700C - bx r12 - .balign 4 -_02097008: .word FUN_0209700C - - arm_func_start FUN_0209700C -FUN_0209700C: ; 0x0209700C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974C8 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_0209702C -FUN_0209702C: - ldr ip, _02097038 ; =FUN_0209703C - add r0, r0, #0x10 - bx r12 - .balign 4 -_02097038: .word FUN_0209703C - - arm_func_start FUN_0209703C -FUN_0209703C: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974C8 - cmp r0, #0x1 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_0209705C -FUN_0209705C: ; 0x0209705C - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - beq _020970A4 - mov r0, r4 - bl FUN_02097568 - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x0] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - add sp, sp, #0x18 - movne r0, #0x0 - ldmia sp!, {r4,pc} -_020970A4: - mov r0, r4 - bl FUN_02097568 - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020970CC -FUN_020970CC: ; 0x020970CC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x38 - mov r6, r0 - add r0, sp, #0x14 - bl OS_GetLowEntropyData - mov r3, #0x1 - add r2, sp, #0x14 -_020970E8: - add r0, r2, r3, lsl #0x2 - ldr r1, [r2, r3, lsl #0x2] - ldr r0, [r0, #-0x4] - eor r0, r1, r0 - str r0, [r2, r3, lsl #0x2] - add r3, r3, #0x1 - cmp r3, #0x8 - blo _020970E8 - add r0, sp, #0x0 - ldr r5, [sp, #0x30] - mov r4, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - beq _02097138 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x4] - mov r0, r6 - bl FUN_02097510 - b _02097148 -_02097138: - ldr r1, [sp, #0x8] - ldr r2, [sp, #0xc] - mov r0, r6 - bl FUN_02097510 -_02097148: - ldr r0, _02097184 ; =0x6C078965 - ldr r1, _02097188 ; =0x5D588B65 - umull r3, r2, r5, r0 - mla r2, r5, r1, r2 - ldr r1, _0209718C ; =0x00269EC3 - mla r2, r4, r0, r2 - adds r0, r3, r1 - mov r0, r6 - adc r1, r2, #0x0 - bl FUN_02097508 - mov r0, r6 - mov r1, #0x1 - bl FUN_02097440 - add sp, sp, #0x38 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02097184: .word 0x6C078965 -_02097188: .word 0x5D588B65 -_0209718C: .word 0x00269EC3 - - arm_func_start FUN_02097190 -FUN_02097190: ; 0x02097190 - stmdb sp!, {r4-r5,lr} - ldr ip, _02097210 ; =0x00000404 - sub sp, sp, r12 - mov r4, r1 - mov r1, #0x0 - mov r2, #0x40 - mov r5, r0 - bl MI_CpuFill8 - mov r0, #0x40 - str r0, [r5, #0x0] - mov r0, #0x0 - str r0, [r5, #0x1c] - add r0, r5, #0x4 - str r4, [r5, #0x24] - bl FUN_020970CC - add r0, r5, #0x10 - mov r1, #0x0 - bl FUN_02097440 - ldr r1, _02097214 ; =0xEDB88320 - add r0, sp, #0x0 - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r5 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r5, #0x3c] - ldr r0, [r5, #0x20] - orr r0, r0, #0x1 - str r0, [r5, #0x20] - ldr ip, _02097210 ; =0x00000404 - add sp, sp, r12 - ldmia sp!, {r4-r5,pc} - .balign 4 -_02097210: .word 0x00000404 -_02097214: .word 0xEDB88320 - - arm_func_start FUN_02097218 -FUN_02097218: ; 0x02097218 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r4, r1 - mov r5, r2 - bl FUN_02097568 - add r3, sp, #0x14 - mov r2, #0x2b - bl FUN_020972A8 - mov r0, r6 - bl FUN_02097560 - mov r1, #0x0 - mov r2, #0x20 - add r3, sp, #0x29 - bl FUN_020972A8 - mov r1, r4, lsr #0x18 - and r1, r1, #0xff - str r1, [sp, #0x0] - mov r1, r4, lsr #0x10 - and r1, r1, #0xff - str r1, [sp, #0x4] - mov r1, r4, lsr #0x8 - and r1, r1, #0xff - str r1, [sp, #0x8] - and r1, r4, #0xff - str r1, [sp, #0xc] - add r2, sp, #0x29 - str r2, [sp, #0x10] - ldr r2, _020972A4 ; =UNK_0210618C - mov r0, r5 - mov r1, #0x15 - add r3, sp, #0x14 - bl OS_SNPrintf - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020972A4: .word UNK_0210618C - - arm_func_start FUN_020972A8 -FUN_020972A8: ; 0x020972A8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr lr, _0209731C ; =0x66666667 - add r4, r2, #0x4 - smull r12, r2, lr, r4 - mov r2, r2, asr #0x1 - mov r12, r4, lsr #0x1f - add r2, r12, r2 - cmp r2, #0x0 - ldr r6, _02097320 ; =UNK_0210619C - mov r7, #0x0 - ble _0209730C - add r4, r3, r2 - sub r4, r4, #0x1 - mov r12, #0x1f -_020972E4: - and r5, r0, r12 - ldrsb r5, [r6, r5] - mov r0, r0, lsr #0x5 - mov lr, r1, lsr #0x5 - strb r5, [r4, -r7] - add r7, r7, #0x1 - orr r0, r0, r1, lsl #0x1b - mov r1, lr - cmp r7, r2 - blt _020972E4 -_0209730C: - mov r0, #0x0 - strb r0, [r3, r2] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_0209731C: .word 0x66666667 -_02097320: .word UNK_0210619C - - arm_func_start FUN_02097324 -FUN_02097324: ; 0x02097324 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_02097344 - cmp r0, #0x0 - mvnne r0, #0x0 - andne r0, r4, r0 - moveq r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097344 -FUN_02097344: - stmdb sp!, {r4,lr} - sub sp, sp, #0x108 - mov r4, r1 - and r3, r4, #0x0 - mov r1, #0x0 - and r12, r0, #0x80000000 - cmp r3, r1 - cmpeq r12, r1 - addne sp, sp, #0x108 - movne r0, r1 - ldmneia sp!, {r4,pc} - str r0, [sp, #0x0] - add r0, sp, #0x8 - mov r1, #0x7 - str r2, [sp, #0x4] - bl MATHi_CRC8InitTable - add r0, sp, #0x8 - add r1, sp, #0x0 - mov r2, #0x8 - bl MATH_CalcCRC8 - and r2, r0, #0x7f - mov r1, r2, asr #0x1f - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r4 - moveq r0, #0x1 - add sp, sp, #0x108 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020973B4 -FUN_020973B4: ; 0x020973B4 - ldr ip, _020973CC ; =FUN_02097344 - mov r3, r0 - mov r0, r1 - mov r1, r2 - ldr r2, [r3, #0x24] - bx r12 - .balign 4 -_020973CC: .word FUN_02097344 - - arm_func_start FUN_020973D0 -FUN_020973D0: ; 0x020973D0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x108 - mov r4, r0 - str r1, [sp, #0x4] - add r0, sp, #0x8 - mov r1, #0x7 - str r4, [sp, #0x0] - bl MATHi_CRC8InitTable - add r0, sp, #0x8 - add r1, sp, #0x0 - mov r2, #0x8 - bl MATH_CalcCRC8 - and r0, r0, #0x7f - orr r1, r0, #0x0 - orr r0, r4, #0x0 - add sp, sp, #0x108 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097414 -FUN_02097414: ; 0x02097414 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x3 - ldmneia sp!, {r4,pc} - mov r0, r4 - bl FUN_020974E0 - orr r1, r0, #0x4 - mov r0, r4 - bl FUN_0209746C - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097440 -FUN_02097440: ; 0x02097440 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl FUN_020974E0 - bic r1, r0, #0x3 - mov r0, r5 - orr r1, r1, r4 - bl FUN_0209746C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_0209746C -FUN_0209746C: ; 0x0209746C - ldr ip, _0209747C ; =FUN_02097588 - ldr r3, _02097480 ; =0x001FFFFF - mov r2, #0xb - bx r12 - .balign 4 -_0209747C: .word FUN_02097588 -_02097480: .word 0x001FFFFF - - arm_func_start FUN_02097484 -FUN_02097484: ; 0x02097484 - ldr ip, _0209748C ; =FUN_020974C8 - bx r12 - .balign 4 -_0209748C: .word FUN_020974C8 - - arm_func_start FUN_02097490 -FUN_02097490: ; 0x02097490 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x3 - bne _020974C0 - mov r0, r4 - bl FUN_020974E0 - and r0, r0, #0x4 - cmp r0, #0x4 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4,pc} -_020974C0: - mov r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020974C8 -FUN_020974C8: ; 0x020974C8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974E0 - and r0, r0, #0x3 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020974E0 -FUN_020974E0: ; 0x020974E0 - ldr r1, [r0, #0x0] - ldr r0, _020974F0 ; =0x001FFFFF - and r0, r0, r1, lsr #0xb - bx lr - .balign 4 -_020974F0: .word 0x001FFFFF - - arm_func_start FUN_020974F4 -FUN_020974F4: ; 0x020974F4 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020974FC -FUN_020974FC: ; 0x020974FC - str r1, [r0, #0x4] - str r2, [r0, #0x8] - bx lr - - arm_func_start FUN_02097508 -FUN_02097508: ; 0x02097508 - str r1, [r0, #0x8] - bx lr - - arm_func_start FUN_02097510 -FUN_02097510: ; 0x02097510 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r4, r1 - mov r1, r2 - ldr r3, _02097540 ; =0x000007FF - mov r2, r12 - mov r5, r0 - bl FUN_02097588 - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_02097540: .word 0x000007FF - - arm_func_start FUN_02097544 -FUN_02097544: - ldr r0, [r0, #0x4] - bx lr - - arm_func_start FUN_0209754C -FUN_0209754C: ; 0x0209754C - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x4] - orr r1, r1, #0x0 - orr r0, r0, #0x0 - bx lr - - arm_func_start FUN_02097560 -FUN_02097560: - ldr r0, [r0, #0x8] - bx lr - - arm_func_start FUN_02097568 -FUN_02097568: ; 0x02097568 - ldr r2, [r0, #0x0] - ldr r1, _02097584 ; =0x000007FF - ldr r0, [r0, #0x4] - and r1, r2, r1 - orr r1, r1, #0x0 - orr r0, r0, #0x0 - bx lr - .balign 4 -_02097584: .word 0x000007FF - - arm_func_start FUN_02097588 -FUN_02097588: ; 0x02097588 - mvn r12, r3 - ands r12, r1, r12 - movne r0, #0x0 - bxne lr - mvn r3, r3, lsl r2 - ldr r12, [r0, #0x0] - and r3, r12, r3 - orr r1, r3, r1, lsl r2 - str r1, [r0, #0x0] - mov r0, #0x1 - bx lr diff --git a/arm9/global.inc b/arm9/global.inc index 12497154..07ea6384 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5474,47 +5474,47 @@ .extern FUN_020910EC .extern FUN_0209521C .extern FUN_020952AC -.extern FUN_02095324 -.extern FUN_02095330 -.extern FUN_02095AE0 -.extern FUN_02095B0C -.extern FUN_02095BB0 -.extern FUN_02095BE0 -.extern FUN_02095CDC -.extern FUN_02095D68 -.extern FUN_02095EC8 -.extern FUN_02095FA8 -.extern FUN_02096190 +.extern DWCi_BACKUPlGetWifi +.extern DWCi_BACKUPlConvWifiInfo +.extern DWC_BACKUPlCheckAddress +.extern DWC_BACKUPlCheckIp +.extern DWCi_BACKUPlConvMaskAddr +.extern DWCi_BACKUPlConvMaskCidr +.extern DWCi_BACKUPlWritePage +.extern DWCi_BACKUPlRead +.extern DWCi_BM_GetWiFiInfo +.extern DWCi_BM_GetApInfo +.extern DWC_BM_Init .extern FUN_02096570 .extern FUN_02096710 -.extern FUN_02096760 -.extern FUN_020967A4 -.extern FUN_02096B14 -.extern FUN_02096B78 -.extern FUN_02096C78 -.extern FUN_02096C90 -.extern FUN_02096CCC -.extern FUN_02096D2C -.extern FUN_02096D68 -.extern FUN_02096DA0 -.extern FUN_02096E24 -.extern FUN_02096EB4 -.extern FUN_02096EC0 -.extern FUN_02096F18 -.extern FUN_02096F80 -.extern FUN_02096FB0 -.extern FUN_02097000 -.extern FUN_0209700C -.extern FUN_0209702C -.extern FUN_0209703C -.extern FUN_0209705C -.extern FUN_020970CC -.extern FUN_02097218 -.extern FUN_020973B4 -.extern FUN_02097414 -.extern FUN_02097484 -.extern FUN_02097490 -.extern FUN_02097508 +.extern DWCi_AUTH_MakeWiFiID +.extern DWCi_AUTH_GetNewWiFiInfo +.extern DWC_Init +.extern DWC_IsEqualFriendData +.extern DWC_LoginIdToUserName +.extern DWC_SetGsProfileId +.extern DWC_CreateExchangeToken +.extern DWC_CreateFriendKeyToken +.extern DWC_CreateFriendKey +.extern DWC_GetGsProfileId +.extern DWC_GetFriendKey +.extern DWC_CheckDirtyFlag +.extern DWCi_Acc_SetLoginIdToUserData +.extern DWC_CheckValidConsole +.extern DWC_CheckHasProfile +.extern DWC_CheckUserData +.extern DWCi_Acc_IsValidFriendData +.extern DWC_IsValidFriendData +.extern DWCi_Acc_IsAuthentic +.extern DWCi_Acc_IsValidLoginId +.extern DWCi_Acc_CheckConsoleUserId +.extern DWCi_Acc_CreateTempLoginId +.extern DWCi_Acc_LoginIdToUserName +.extern DWC_CheckFriendKey +.extern DWCi_SetBuddyFriendData +.extern DWC_GetFriendDataType +.extern DWC_IsBuddyFriendData +.extern DWCi_Acc_SetPlayerId .extern WCM_GetPhase .extern WCM_TerminateAsync .extern WCM_DisconnectAsync @@ -7874,8 +7874,8 @@ .extern sys_writec .extern tempName_NNS_FndAllocFromExpHeapEx .extern tempName_NNS_FndCreateExpHeapEx -.extern thunk_FUN_02096e4c -.extern thunk_FUN_02097190 +.extern DWC_ClearDirtyFlag +.extern DWC_CreateUserData .extern thunk_FUN_020adc8c .extern thunk_FUN_020adc8c_2 .extern thunk_FUN_020ae84c @@ -7897,3 +7897,10 @@ .extern WCMi_EntryApList .extern WCMi_CpsifRecvCallback .extern WCMi_ShelterRssi +.extern DWC_Auth_GetId +.extern DWC_BACKUPlCheckSsid +.extern DWCi_BACKUPlInit +.extern DWCi_BACKUPlSetWiFi +.extern DWCi_BACKUPlWriteAll +.extern DWCi_BM_SetWiFiInfo +.extern DWC_Auth_CheckWiFiIDNeedCreate diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 1f9a41fa..835a8975 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -457,7 +457,7 @@ _021D9378: _021D93AC: add r0, r5, #0x1f bic r0, r0, #0x1f - bl FUN_02096760 + bl DWCi_AUTH_MakeWiFiID ldr r0, _021D940C ; =0x0220BF98 mov r1, r5 mov r2, #0 @@ -718,7 +718,7 @@ MOD04_021D96EC: ; 0x021D96EC cmp r4, #1 bne _021D9758 ldr r0, _021D97EC ; =0x0221046C - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo _021D9758: ldr r0, _021D97E8 ; =0x02210468 ldr r2, _021D97F0 ; =0x000011CC @@ -1482,7 +1482,7 @@ MOD04_021DA238: ; 0x021DA238 sub sp, sp, #0x18 mov r4, r0 add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo add r1, sp, #0 mov r0, r4 bl MOD04_021D9F78 @@ -3343,7 +3343,7 @@ _021DBCB4: ldr r0, [r4] bl MOD04_021DAE4C add r0, sp, #0x68 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r2, [sp, #0x68] ldr r1, [sp, #0x6c] mov r0, #0 @@ -8747,7 +8747,7 @@ MOD04_021E0628: ; 0x021E0628 ldr r1, [r2, #0xc] add r2, sp, #8 add r0, r0, #4 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName ldr r1, _021E07D0 ; =0x00000705 add r2, sp, #8 mov r0, r5 @@ -8791,7 +8791,7 @@ _021E0704: ldr r1, [r2, #0xc] add r2, sp, #0x1d add r0, r0, #4 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName add r1, sp, #0x1d add r0, r4, #0x8e bl strcmp @@ -8802,13 +8802,13 @@ _021E0704: ldr r0, [r0] ldr r1, [r0, #0xc] add r0, r0, #0x3c - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName ldr r0, _021E07CC ; =0x022106C8 ldr r2, [r4, #4] ldr r1, [r0] ldr r0, [r1, #0x1c] add r1, r1, #0x3c - bl FUN_02096EC0 + bl DWCi_Acc_SetLoginIdToUserData mov r0, r5 bl MOD04_021F0D54 ldr r0, _021E07CC ; =0x022106C8 @@ -8876,7 +8876,7 @@ MOD04_021E07E4: ; 0x021E07E4 str r2, [r1, #0x24] ldr r0, [r0] ldr r0, [r0, #0x1c] - bl FUN_0209702C + bl DWCi_Acc_IsAuthentic cmp r0, #0 beq _021E0898 ldr r0, _021E09DC ; =0x022106C8 @@ -9002,7 +9002,7 @@ MOD04_021E0A00: ; 0x021E0A00 str r5, [r2] str r4, [r1] ldr r0, [r0, #0x1c] - bl FUN_0209702C + bl DWCi_Acc_IsAuthentic cmp r0, #0 beq _021E0A68 ldr r0, _021E0BB8 ; =0x022106C8 @@ -9011,20 +9011,20 @@ MOD04_021E0A00: ; 0x021E0A00 add r2, r1, #0x248 ldr r1, [r0, #0x24] add r0, r0, #0x10 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName b _021E0B1C _021E0A68: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] add r0, r0, #0x3c - bl FUN_0209703C + bl DWCi_Acc_IsValidLoginId cmp r0, #0 bne _021E0AD0 ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] ldr r0, [r0, #0x1c] add r0, r0, #4 - bl FUN_0209705C + bl DWCi_Acc_CheckConsoleUserId cmp r0, #0 beq _021E0ABC ldr r0, _021E0BB8 ; =0x022106C8 @@ -9039,7 +9039,7 @@ _021E0ABC: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] add r0, r0, #0x3c - bl FUN_020970CC + bl DWCi_Acc_CreateTempLoginId b _021E0B04 _021E0AD0: bl OS_GetTick @@ -9054,14 +9054,14 @@ _021E0AD0: ldr r3, [r3] adc r1, r4, #0 add r0, r3, #0x3c - bl FUN_02097508 + bl DWCi_Acc_SetPlayerId _021E0B04: ldr r0, _021E0BB8 ; =0x022106C8 ldr r2, [r0] ldr r1, [r2, #0xc] add r0, r2, #0x3c add r2, r2, #0x248 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName _021E0B1C: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] @@ -9534,7 +9534,7 @@ MOD04_021E110C: ; 0x021E110C _021E115C: ldr r0, [r2, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #1 bne _021E11C8 bl MOD04_021E0F00 @@ -9542,7 +9542,7 @@ _021E115C: add r2, sp, #8 ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096C78 + bl DWC_LoginIdToUserName add r0, sp, #8 add r1, sl, #0x8e bl strcmp @@ -9552,31 +9552,31 @@ _021E115C: ldr r1, [sl, #4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData mov r8, r5 b _021E125C _021E11C8: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 beq _021E11F8 ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E125C _021E11F8: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #1 streq fp, [sp] beq _021E125C @@ -9585,18 +9585,18 @@ _021E11F8: ldr r1, [r4] ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r6, r0 bne _021E125C ldr r0, [r4] mov r1, r6 ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData ldr r8, [sp, #4] _021E125C: ldr r2, [r4] @@ -9650,7 +9650,7 @@ MOD04_021E12B8: ; 0x021E12B8 _021E1304: ldr r0, [r1, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #1 bne _021E136C bl MOD04_021E0F00 @@ -9658,7 +9658,7 @@ _021E1304: add r2, sp, #4 ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096C78 + bl DWC_LoginIdToUserName ldr r1, [sp] add r0, sp, #4 bl strcmp @@ -9671,20 +9671,20 @@ _021E1304: ldr r1, [sb, #4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId mov fp, r5 b _021E13CC _021E136C: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 beq _021E139C ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E13CC _021E139C: @@ -9693,7 +9693,7 @@ _021E139C: ldr r1, [r4] ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r6, r0 bne _021E13CC mov r0, sl @@ -9742,7 +9742,7 @@ MOD04_021E1414: ; 0x021E1414 ldr r0, [r1] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #0 beq _021E15FC ldr r7, _021E1670 ; =0x022106D0 @@ -9813,12 +9813,12 @@ _021E1548: ldr r1, [r1] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, _021E1670 ; =0x022106D0 ldr r0, [r0] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData mov r0, r8 bl MOD04_021E1DA4 ldr r0, _021E1670 ; =0x022106D0 @@ -9871,7 +9871,7 @@ _021E1618: ldr r1, [r1, #0x18] mov r0, #0xc mla r0, r8, r0, r1 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #0 addne sp, sp, #4 ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} @@ -9951,7 +9951,7 @@ _021E1720: _021E172C: bl MOD04_021E0F00 mov r1, r5 - bl FUN_02096DA0 + bl DWC_GetGsProfileId mov r5, r0 cmp r5, #0 ble _021E176C @@ -10042,23 +10042,23 @@ _021E1858: cmp sb, r0 bne _021E18CC mov r0, r6 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E1894 mov r0, r4 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 bne _021E1894 mov r0, r5 mov r1, sb - bl FUN_02096C90 + bl DWC_SetGsProfileId _021E1894: mov r0, r4 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021E18AC mov r0, r5 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData _021E18AC: mov r0, fp mov r1, r7 @@ -10105,12 +10105,12 @@ _021E1920: bne _021E199C mov r0, #0xc mla r0, r6, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021E1974 mov r0, #0xc mla r0, r4, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 bne _021E1974 mov r0, r7 @@ -10232,15 +10232,15 @@ _021E1AD8: bne _021E1B24 mul sl, r4, r7 add r0, r6, sl - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 bne _021E1B30 add sl, r6, sl ldr r1, [sp, #0x38] mov r0, sl - bl FUN_02096C90 + bl DWC_SetGsProfileId mov r0, sl - bl FUN_02097414 + bl DWCi_SetBuddyFriendData ldr r0, [r8] strb sb, [r0, #0x1d] b _021E1B30 @@ -10312,7 +10312,7 @@ _021E1C08: ldr r1, [sl] ldrb r2, [r1, #0x1c] mla r1, r2, r8, r6 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, sb bne _021E1C9C bl MOD04_021E0F00 @@ -10322,7 +10322,7 @@ _021E1C08: add r2, sp, #0x20 ldrb r3, [r3, #0x1c] mla r1, r3, r1, r6 - bl FUN_02096C78 + bl DWC_LoginIdToUserName ldr r0, _021E1CC4 ; =0x022106D0 mov r1, #0 ldr r4, [r0] @@ -10585,7 +10585,7 @@ MOD04_021E1F84: ; 0x021E1F84 bl MOD04_021E0F00 mov r1, #0xc mla r1, r5, r1, r4 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0 beq _021E1FD4 mvn r1, #0 @@ -15142,7 +15142,7 @@ _021E5E50: ldrb r2, [r2, #0x304] mov r0, fp mla r1, r2, r1, r3 - bl FUN_02096DA0 + bl DWC_GetGsProfileId movs sl, r0 beq _021E5DB4 mvn r0, #0 @@ -15159,7 +15159,7 @@ _021E5E50: add r1, fp, r1 ldrb r1, [r1, #0x304] mla r0, r1, r0, r2 - bl FUN_02097000 + bl DWCi_Acc_IsValidFriendData cmp r0, #0 beq _021E5DB4 mov r6, r7 @@ -21924,7 +21924,7 @@ MOD04_021EBC60: ; 0x021EBC60 and r1, r1, #3 orr r1, r2, r1, lsl #4 strb r1, [r0, #0xd0c] - bl FUN_02095FA8 + bl DWCi_BM_GetApInfo ldr r0, _021EBE14 ; =0x02210E4C mov r1, #0x2300 ldr r0, [r0] @@ -53611,7 +53611,7 @@ MOD04_022071C0: ; 0x022071C0 mov r1, #0x14 bl MOD04_022083B4 add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r1, [sp] ldr r2, [sp, #4] mov r0, #0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index d10d80bb..56664ef1 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -159,7 +159,7 @@ _021D7608: ldr r1, [r0] ldr r0, _021D7658 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _021D762C mov r0, #1 @@ -169,7 +169,7 @@ _021D762C: ldr r1, [r0] ldr r0, _021D7658 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0 beq _021D7640 mov r0, #0 @@ -719,14 +719,14 @@ MOD04_021D7A7C: ; 0x021D7A7C ldr r1, [r0] ldr r0, _021D7AFC ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096EB4 + bl DWC_CheckDirtyFlag cmp r0, #0 beq _021D7AB0 ldr r0, _021D7AF8 ; =0x0220FBC0 ldr r1, [r0] ldr r0, _021D7AFC ; =0x00001EF0 ldr r0, [r1, r0] - bl thunk_FUN_02096e4c + bl DWC_ClearDirtyFlag ldr r0, _021D7AF8 ; =0x0220FBC0 ldr r1, [r0] mov r0, #0x1f @@ -1979,7 +1979,7 @@ _021D8400: lsl r1, r1, #8 ldr r0, [r0, r1] add r0, r0, r4 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021D844A mov r0, #0x11 @@ -2192,7 +2192,7 @@ MOD04_021D85B4: ; 0x021D85B4 ldr r1, [r0] ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _021D85D8 ldr r0, _021D8614 ; =0x0220FBC0 @@ -2200,7 +2200,7 @@ MOD04_021D85B4: ; 0x021D85B4 ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] add r1, sp, #0xc - bl FUN_02096CCC + bl DWC_CreateExchangeToken b _021D85E6 _021D85D8: ldr r0, _021D8614 ; =0x0220FBC0 @@ -2208,7 +2208,7 @@ _021D85D8: ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] add r1, sp, #0 - bl FUN_02096CCC + bl DWC_CreateExchangeToken _021D85E6: mov r4, #0 mov r7, #0x11 @@ -2221,11 +2221,11 @@ _021D85F0: lsl r0, r0, #8 ldr r0, [r1, r0] add r0, r0, r5 - bl FUN_02097484 + bl DWC_GetFriendDataType ldr r0, [r6] ldr r0, [r0, r7] add r0, r0, r5 - bl FUN_02097490 + bl DWC_IsBuddyFriendData add r4, r4, #1 add r5, #0xc cmp r4, #0x20 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s index 6245d91c..b0291130 100644 --- a/arm9/modules/13/asm/module_13_arm2.s +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -5713,7 +5713,7 @@ _0222338C: mov r1, #0x20 bl MOD13_0223B004 str r0, [sp] - bl FUN_02096190 + bl DWC_BM_Init add r0, sp, #0 bl MOD13_0223AF90 add sp, sp, #4 @@ -7885,7 +7885,7 @@ MOD13_02224FEC: ; 0x02224FEC mov r0, fp bl MOD13_0223A4F0 add r0, sp, #0x1c - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr sb, [sp, #0x1c] ldr sl, [sp, #0x20] mov r3, #0 @@ -8250,7 +8250,7 @@ _02225578: b _022255E4 _02225584: add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r0, _022255F4 ; =0x0224308C ldrb r0, [r0] cmp r0, #0 @@ -8485,7 +8485,7 @@ _02225844: bl MOD13_022393D8 mov r5, r0 add r0, sp, #0x30 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r1, [sp, #0x30] ldr r0, [sp, #0x34] mov r6, #0 @@ -14113,7 +14113,7 @@ _0222A464: ldmia sp!, {r4, r5, r6, r7, r8, pc} _0222A48C: add r0, sp, #8 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 movne r0, #1 moveq r0, #0 @@ -15568,11 +15568,11 @@ MOD13_0222B87C: ; 0x0222B87C cmp r0, #0 bne _0222B8C8 add r0, r4, #0xc8 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 bne _0222B8C8 add r0, r4, #0xcc - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -15581,18 +15581,18 @@ _0222B8C8: cmp r0, #0 bne _0222B914 add r0, r4, #0xc0 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} add r0, r4, #0xc4 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} add r0, r4, #0xc0 add r1, r4, #0xf0 - bl FUN_02095B0C + bl DWC_BACKUPlCheckIp cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -17255,7 +17255,7 @@ _0222D02C: bl MOD13_02234164 mov r4, r0 add r0, r4, #0xf0 - bl FUN_02095BE0 + bl DWCi_BACKUPlConvMaskCidr strb r0, [r4, #0xd0] ldrb r0, [r4, #0xf5] cmp r0, #0 @@ -21999,11 +21999,11 @@ MOD13_02231090: ; 0x02231090 bl MOD04_021EB9D8 cmp r0, #0 ldmeqia sp!, {r4, pc} - bl FUN_02095324 + bl DWCi_BACKUPlGetWifi add r1, r4, #0xf0 mov r2, #0xe bl MI_CpuCopy8 - bl FUN_02095324 + bl DWCi_BACKUPlGetWifi add r1, r4, #0x1f0 mov r2, #0xe bl MI_CpuCopy8 @@ -24971,7 +24971,7 @@ _022337BC: add r1, sp, #4 ldr r0, [r0] str r2, [sp] - bl FUN_02095CDC + bl DWCi_BACKUPlWritePage add r0, sp, #0 bl MOD13_0223AF90 add sp, sp, #0x14 @@ -25000,9 +25000,9 @@ _02233830: cmp r3, #3 blt _02233830 add r0, sp, #0 - bl FUN_020967A4 + bl DWCi_AUTH_GetNewWiFiInfo add r0, sp, #0 - bl FUN_02095330 + bl DWCi_BACKUPlConvWifiInfo mov r6, #0 ldr r4, _022338B4 ; =0x02243150 mov r8, r0 @@ -25257,7 +25257,7 @@ _02233BB4: mov r2, #4 bl MI_CpuCopy8 add r0, r5, #0xf0 - bl FUN_02095BE0 + bl DWCi_BACKUPlConvMaskCidr strb r0, [r4, #0xd0] _02233BE0: ldrb r0, [r5, #0xf6] @@ -25340,7 +25340,7 @@ _02233CE8: ldrb r0, [r4, #0xd0] ldr r1, [r1] add r1, r1, #0x4f0 - bl FUN_02095BB0 + bl DWCi_BACKUPlConvMaskAddr add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 @@ -25734,7 +25734,7 @@ MOD13_0223418C: ; 0x0223418C bl MATHi_CRC16InitTableRev ldr r0, _022341D0 ; =0x02243150 ldr r0, [r0] - bl FUN_02095D68 + bl DWCi_BACKUPlRead add sp, sp, #4 ldmia sp!, {pc} .align 2, 0 @@ -31696,7 +31696,7 @@ MOD13_0223923C: ; 0x0223923C ldr r0, _0223932C ; =0x0000064C ldr r1, [r1] add r0, r1, r0 - bl FUN_02095D68 + bl DWCi_BACKUPlRead bl OS_GetTick bl MOD13_022338FC ldr r1, _02239328 ; =0x0224318C diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 79cee761..3215db95 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -2086,7 +2086,7 @@ _021D85B2: ldr r0, [sp, #4] add r6, r1, #0 bl FUN_02028228 - bl FUN_02096D68 + bl DWC_CreateFriendKey eor r1, r6 eor r0, r7 orr r0, r1 @@ -3492,7 +3492,7 @@ MOD55_021D90D8: ; 0x021D90D8 ldrb r1, [r1, #0x18] sub r1, r1, #1 bl FUN_0202838C - bl FUN_02096E24 + bl DWC_GetFriendKey str r1, [sp, #4] add r4, r0, #0 ldr r0, [sp, #4] @@ -3557,7 +3557,7 @@ MOD55_021D9184: ; 0x021D9184 add r7, r1, #0 bl FUN_020286EC bl FUN_02028228 - bl FUN_02096D68 + bl DWC_CreateFriendKey add r6, r0, #0 add r4, r1, #0 ldr r0, [r5, #4] @@ -5538,7 +5538,7 @@ MOD55_021DA224: ; 0x021DA224 bl FUN_02028228 add r1, r4, #0 add r2, r6, #0 - bl FUN_020973B4 + bl DWC_CheckFriendKey cmp r0, #0 bne _021DA24C mov r0, #0 @@ -5562,7 +5562,7 @@ _021DA262: bl FUN_0202838C add r1, r4, #0 add r2, r6, #0 - bl FUN_02096D2C + bl DWC_CreateFriendKeyToken _021DA276: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 183fe0d3..08de4669 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1539,7 +1539,7 @@ _02212A9A: bl MOD56_022128A4 ldr r0, [r5] bl FUN_02028228 - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _02212AFA mov r0, #0 @@ -1577,7 +1577,7 @@ _02212A9A: _02212AFA: ldr r0, [r5] bl FUN_02028228 - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0 bne _02212B1A add r0, r5, #0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index bf202f2f..12992a4e 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -18661,7 +18661,7 @@ _022369CC: bl FUN_02023830 add r6, r0, #0 add r0, r4, #0 - bl FUN_02096D68 + bl DWC_CreateFriendKey add r3, r0, #0 add r2, r1, #0 add r0, r6, #0 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 18e1984d..d96f335e 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -2282,7 +2282,7 @@ _0222E7C2: add r4, r0, #0 ldr r0, [r5] ldr r0, [r0, #0x14] - bl FUN_02096D68 + bl DWC_CreateFriendKey add r3, r0, #0 add r2, r1, #0 add r0, r4, #0 -- cgit v1.2.3 From e643eddc0def8e4851a4195e8ed4de06c847f52d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 25 May 2020 20:41:58 -0400 Subject: Fully carve out libvct --- arm9/arm9.lcf | 5 + arm9/asm/WIFI_stubsmd5_dummy.s | 25 + arm9/asm/libVCT.s | 28738 +-------------------------------------- arm9/asm/unk_020ADA84.s | 28069 ++++++++++++++++++++++++++++++++++++++ arm9/global.inc | 14 +- arm9/modules/04/asm/arm_04.s | 6 +- arm9/modules/04/asm/thumb_04.s | 10 +- 7 files changed, 28446 insertions(+), 28421 deletions(-) create mode 100644 arm9/asm/WIFI_stubsmd5_dummy.s create mode 100644 arm9/asm/unk_020ADA84.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 65774dac..57c4e18a 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -460,7 +460,9 @@ SECTIONS { WCM_aplist.o (.text) WCM_cpsif.o (.text) WCM_util.o (.text) + WIFI_stubsmd5_dummy.o (.text) libVCT.o (.text) + unk_020ADA84.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) FX_mtx33.o (.text) @@ -746,6 +748,7 @@ SECTIONS { SSL_biginteger.o (.rodata) WCM_system.o (.rodata) libVCT.o (.rodata) + unk_020ADA84.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) SND_util.o (.rodata) @@ -810,6 +813,7 @@ SECTIONS { SSL_rca4.o (.data) SSL_biginteger.o (.data) libVCT.o (.data) + unk_020ADA84.o (.data) GX.o (.data) OS_irqHandler.o (.data) OS_emulator.o (.data) @@ -905,6 +909,7 @@ SECTIONS { WCM_cpsif.o (.bss) WCM_util.o (.bss) libVCT.o (.bss) + unk_020ADA84.o (.bss) GX.o (.bss) GX_state.o (.bss) GX_load2d.o (.bss) diff --git a/arm9/asm/WIFI_stubsmd5_dummy.s b/arm9/asm/WIFI_stubsmd5_dummy.s new file mode 100644 index 00000000..dd3f79a7 --- /dev/null +++ b/arm9/asm/WIFI_stubsmd5_dummy.s @@ -0,0 +1,25 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start MD5Final +MD5Final: ; 0x020A8BA4 + ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R + bx r12 + .balign 4 +_020A8BAC: .word DGT_Hash1GetDigest_R + + arm_func_start MD5Update +MD5Update: ; 0x020A8BB0 + ldr ip, _020A8BB8 ; =DGT_Hash1SetSource + bx r12 + .balign 4 +_020A8BB8: .word DGT_Hash1SetSource + + arm_func_start MD5Init +MD5Init: ; 0x020A8BBC + ldr ip, _020A8BC4 ; =DGT_Hash1Reset + bx r12 + .balign 4 +_020A8BC4: .word DGT_Hash1Reset diff --git a/arm9/asm/libVCT.s b/arm9/asm/libVCT.s index dcf17d22..ee05bcce 100644 --- a/arm9/asm/libVCT.s +++ b/arm9/asm/libVCT.s @@ -1,25 +1,22 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_02103BAC - .extern GXi_DmaId - .section .rodata - .global UNK_020FF5B8 -UNK_020FF5B8: ; 0x020FF5B8 + .global cAdpcmIndexTable2 +cAdpcmIndexTable2: ; 0x020FF5B8 .byte 0xFF, 0x01, 0xFF, 0x01 - .global UNK_020FF5BC -UNK_020FF5BC: ; 0x020FF5BC + .global cAdpcmIndexTable3 +cAdpcmIndexTable3: ; 0x020FF5BC .byte 0xFF, 0xFF, 0x01, 0x02, 0xFF, 0xFF, 0x01, 0x02 - .global UNK_020FF5C4 -UNK_020FF5C4: ; 0x020FF5C4 + .global cAdpcmIndexTable4 +cAdpcmIndexTable4: ; 0x020FF5C4 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x06, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x06, 0x08 - .global UNK_020FF5D4 -UNK_020FF5D4: ; 0x020FF5D4 + .global cAdpcmStepSizeTable +cAdpcmStepSizeTable: ; 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 @@ -33,13 +30,9 @@ UNK_020FF5D4: ; 0x020FF5D4 .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 sCodecInfo +sCodecInfo: ; 0x020FF688 + .byte 0x08, 0x00, 0x08, 0x00, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x00, 0x00 .global UNK_020FF694 UNK_020FF694: ; 0x020FF694 @@ -86,1176 +79,6 @@ UNK_020FF788: ; 0x020FF788 .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 - .word FUN_020AE894 - .word FUN_020AE884 - - .global UNK_020FF7D4 -UNK_020FF7D4: ; 0x020FF7D4 - .word FUN_020AF2B4 - .word FUN_020AF288 - .word FUN_020AF25C - .word FUN_020AF230 - .word GX_LoadBG0Char_2 - .word GX_LoadBG1Char_2 - .word GX_LoadBG2Char_2 - .word GX_LoadBG3Char_2 - .word GX_LoadBG0Scr_2 - .word GX_LoadBG1Scr_2 - .word GX_LoadBG2Scr_2 - .word GX_LoadBG3Scr_2 - .word GX_LoadBG2Scr_3 - .word GX_LoadBG3Scr_3 - .word GX_LoadOBJPltt_2 - .word GX_LoadBGPltt_2 - .word FUN_020AF174 - .word FUN_020AF148 - .word GX_LoadOAM_2 - .word GX_LoadOBJ_2 - .word GXS_LoadBG0Char_2 - .word GXS_LoadBG1Char_2 - .word GXS_LoadBG2Char_2 - .word GXS_LoadBG3Char_2 - .word GXS_LoadBG0Scr_2 - .word GXS_LoadBG1Scr_2 - .word GXS_LoadBG2Scr_2 - .word GXS_LoadBG3Scr_2 - .word GXS_LoadBG2Scr_3 - .word GXS_LoadBG3Scr_3 - .word GXS_LoadOBJPltt_2 - .word GXS_LoadBGPltt_2 - .word FUN_020AF074 - .word FUN_020AF048 - .word GXS_LoadOAM_2 - .word GXS_LoadOBJ_2 - - .global UNK_020FF864 -UNK_020FF864: ; 0x020FF864 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF894 -UNK_020FF894: ; 0x020FF894 - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - - .global UNK_020FF8AC -UNK_020FF8AC: ; 0x020FF8AC - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - - .global UNK_020FF8C4 -UNK_020FF8C4: ; 0x020FF8C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - - .global UNK_020FF8D0 -UNK_020FF8D0: ; 0x020FF8D0 - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - - .global UNK_020FF8D8 -UNK_020FF8D8: ; 0x020FF8D8 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - - .global UNK_020FF8F8 -UNK_020FF8F8: ; 0x020FF8F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020FF928 -UNK_020FF928: ; 0x020FF928 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK_020FF958 -UNK_020FF958: ; 0x020FF958 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF970 -UNK_020FF970: ; 0x020FF970 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 - .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 - - .global UNK_020FF990 -UNK_020FF990: ; 0x020FF990 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 - - .global UNK_020FF9D0 -UNK_020FF9D0: ; 0x020FF9D0 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F - .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F - - .global UNK_020FF9F0 -UNK_020FF9F0: ; 0x020FF9F0 - .byte 0x04 - - .global UNK_020FF9F1 -UNK_020FF9F1: ; 0x020FF9F1 - .byte 0x05 - - .global UNK_020FF9F2 -UNK_020FF9F2: ; 0x020FF9F2 - .byte 0x07 - - .global UNK_020FF9F3 -UNK_020FF9F3: ; 0x020FF9F3 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA14 -UNK_020FFA14: ; 0x020FFA14 - .byte 0x04 - - .global UNK_020FFA15 -UNK_020FFA15: ; 0x020FFA15 - .byte 0x05 - - .global UNK_020FFA16 -UNK_020FFA16: ; 0x020FFA16 - .byte 0x07 - - .global UNK_020FFA17 -UNK_020FFA17: ; 0x020FFA17 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA38 -UNK_020FFA38: ; 0x020FFA38 - .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, - .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, - .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, - .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, - .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, - .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, - .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, - .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, - .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, - .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, - .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, - .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, - .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, - .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, - .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, - .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, - .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, - .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, - .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, - .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, - .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, - .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, - .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, - .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, - .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, - .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, - .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, - .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, - .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, - .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, - .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, - .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, - .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, - .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, - .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, - .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, - .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, - .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, - .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, - .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, - .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, - .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, - .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, - .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, - .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, - .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, - .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, - .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, - .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, - .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, - .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, - .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, - .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, - .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, - .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, - .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, - .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, - .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, - .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, - .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, - .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, - .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, - .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, - .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, - .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, - .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, - .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, - .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, - .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, - .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, - .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, - .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, - .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, - .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, - .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, - .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, - .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, - .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, - .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, - .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, - .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, - .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, - .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, - .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, - .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, - .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, - .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, - .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, - .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, - .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, - .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, - .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, - .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, - .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, - .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, - .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, - .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, - .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, - .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, - .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, - .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, - .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, - .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, - .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, - .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, - .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, - .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, - .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, - .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, - .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, - .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, - .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, - .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, - .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, - .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, - .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, - .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, - .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, - .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, - .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, - .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, - .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, - .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, - .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, - .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, - .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, - .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, - .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, - .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, - .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, - .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, - .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, - .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, - .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, - .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, - .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, - .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, - .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, - .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, - .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, - .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, - .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, - .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, - .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, - .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, - .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, - .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, - .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, - .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, - .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, - .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, - .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, - .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, - .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, - .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, - .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, - .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, - .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, - .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, - .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, - .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, - .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, - .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, - .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, - .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, - .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, - .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, - .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, - .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, - .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, - .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, - .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, - .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, - .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, - .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, - .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, - .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, - .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, - .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, - .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, - .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, - .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, - .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, - .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, - .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, - .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, - .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, - .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, - .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, - .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, - .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, - .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, - .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, - .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, - .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, - .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, - .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, - .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, - .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, - .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, - .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, - .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, - .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, - .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, - .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, - .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, - .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, - .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, - .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, - .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, - .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, - .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, - .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, - .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, - .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, - .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, - .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, - .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, - .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, - .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, - .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, - .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, - .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, - .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, - .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, - .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, - .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, - .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, - .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, - .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, - .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, - .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, - .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, - .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, - .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, - .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, - .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, - .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, - .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, - .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, - .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, - .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, - .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, - .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, - .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, - .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, - .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, - .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, - .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, - .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, - .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, - .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, - .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, - .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, - .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, - .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, - .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, - .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, - .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, - .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, - .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, - .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, - .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, - .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, - .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, - .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, - .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, - .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, - .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, - .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, - .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, - .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, - .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, - .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, - .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, - .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, - .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, - .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, - .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, - .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, - .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, - .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, - .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, - .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, - .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, - .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, - .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, - .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, - .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, - .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, - .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, - .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, - .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, - .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, - .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, - .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, - .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, - .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, - .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, - .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, - .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, - .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, - .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, - .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, - .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, - .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, - .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, - .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, - .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, - .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, - .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, - .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, - .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, - .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, - .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, - .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, - .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, - .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, - .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, - .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, - .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, - .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, - .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, - .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, - .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, - .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, - .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, - .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, - .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, - .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, - .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, - .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, - .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, - .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, - .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, - .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, - .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, - .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, - .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, - .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, - .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, - .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, - .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, - .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, - .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, - .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, - .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, - .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, - .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, - .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, - .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, - .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, - .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, - .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, - .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, - .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, - .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, - .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, - .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, - .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, - .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, - .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, - .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, - .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, - .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, - .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, - .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, - .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, - .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, - .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, - .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, - .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, - .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, - .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, - .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, - .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, - .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, - .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, - .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, - .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, - .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, - .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, - .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, - .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, - .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, - .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, - .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, - .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, - .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, - .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, - .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, - .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, - .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, - .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, - .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, - .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, - .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, - .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, - .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, - .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, - .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, - .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, - .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, - .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, - .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, - .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, - .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, - .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, - .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, - .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, - .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, - .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, - .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, - .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, - .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, - .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, - .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, - .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, - .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, - .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, - .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, - .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, - .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, - .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, - .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, - .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, - .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, - .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, - .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, - .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, - .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, - .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, - .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, - .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, - .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, - .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, - .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, - .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, - .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, - .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, - .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, - .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, - .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, - .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, - .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, - .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, - .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, - .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, - .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, - .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, - .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, - .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, - .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, - .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, - .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, - .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, - .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, - .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, - .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, - .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, - .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, - .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, - .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, - .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, - .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, - .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, - .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, - .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, - .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, - .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, - .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, - .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, - .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, - .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, - .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, - .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, - .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, - .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, - .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, - .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, - .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, - .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, - .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, - .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, - .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, - .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, - .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, - .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, - .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, - .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, - .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, - .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, - .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, - .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, - .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, - .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, - .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, - .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, - .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, - .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, - .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, - .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, - .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, - .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, - .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, - .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, - .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, - .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, - .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, - .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, - .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, - .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, - .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, - .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, - .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, - .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, - .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, - .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, - .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, - .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, - .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, - .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, - .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, - .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, - .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, - .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, - .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, - .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, - .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, - .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, - .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, - .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, - .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, - .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, - .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, - .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, - .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, - .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, - .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, - .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, - .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, - .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, - .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, - .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, - .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, - .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, - .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, - .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, - .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, - .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, - .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, - .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, - .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, - .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, - .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, - .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, - .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, - .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, - .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, - .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, - .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, - .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, - .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, - .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, - .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, - .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, - .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, - .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, - .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, - .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, - .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, - .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, - .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, - .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, - .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, - .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, - .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, - .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, - .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, - .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, - .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, - .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, - .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, - .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, - .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, - .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, - .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, - .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, - .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, - .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, - .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, - .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, - .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, - .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, - .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, - .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, - .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, - .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, - .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, - .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, - .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, - .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, - .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, - .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, - .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, - .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, - .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, - .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, - .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, - .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, - .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, - .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, - .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, - .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, - .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, - .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, - .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, - .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, - .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, - .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, - .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, - .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, - .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, - .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, - .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, - .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, - .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, - .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, - .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, - .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, - .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, - .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, - .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, - .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, - .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, - .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, - .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, - .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, - .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, - .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, - .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, - .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, - .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, - .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, - .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, - .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, - .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, - .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, - .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, - .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, - .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, - .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, - .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, - .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, - .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, - .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, - .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, - .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, - .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, - .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, - .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, - .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, - .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, - .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, - .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, - .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, - .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, - .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, - .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, - .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, - .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, - .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, - .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, - .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, - .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, - .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, - .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, - .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, - .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, - .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, - .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, - .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, - .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, - .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, - .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, - .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, - .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, - .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, - .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, - .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, - .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, - .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, - .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, - .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, - .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, - .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, - .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, - .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, - .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, - .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, - .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, - .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, - .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, - .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, - .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, - .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, - .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, - .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, - .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, - .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, - .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, - .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, - .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, - .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, - .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, - .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, - .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, - .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, - .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, - .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, - .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, - .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, - .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, - .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, - .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, - .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, - .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, - .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, - .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, - .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, - .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, - .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, - .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, - .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, - .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, - .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, - .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, - .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, - .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, - .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, - .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, - .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, - .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, - .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, - .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, - .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, - .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, - .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, - .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, - .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, - .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, - .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, - .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, - .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, - .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, - .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, - .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, - .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, - .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, - .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, - .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, - .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, - .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, - .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, - .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, - .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, - .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, - .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, - .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, - .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, - .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, - .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, - .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, - .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, - .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, - .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, - .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, - .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, - .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, - .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, - .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, - .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, - .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, - .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, - .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, - .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, - .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, - .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, - .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, - .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, - .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, - .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, - .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, - .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, - .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, - .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, - .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, - .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, - .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, - .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, - .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, - .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, - .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, - .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, - .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, - .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, - .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, - .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, - .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, - .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, - .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, - .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, - .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, - .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, - .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, - .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, - .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, - .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, - .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, - .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, - .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, - .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, - .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, - .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, - .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, - .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, - .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, - .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, - .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, - .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, - .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, - .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, - .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, - .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, - .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, - .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, - .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, - .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, - .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, - .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, - .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, - .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, - .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, - .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, - .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, - .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, - .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, - .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, - .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, - .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, - .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, - .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, - .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, - .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, - .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, - .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, - .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, - .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, - .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, - .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, - .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, - .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, - .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, - .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, - .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, - .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, - .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, - .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, - .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, - .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, - .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, - .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, - .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, - .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, - .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, - .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, - .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, - .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, - .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, - .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, - .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, - .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, - .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, - .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, - .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, - .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, - .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, - .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, - .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, - .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, - .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, - .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, - .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, - .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, - .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, - .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, - .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, - .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, - .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, - .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, - .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, - .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, - .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, - .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, - .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, - .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, - .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, - .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, - .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, - .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, - .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, - .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, - .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, - .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, - .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, - .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, - .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, - .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, - .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, - .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, - .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, - .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, - .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, - .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, - .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, - .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, - .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, - .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, - .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, - .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, - .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, - .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, - .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, - .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, - .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, - .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, - .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, - .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, - .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, - .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, - .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, - .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, - .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, - .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, - .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, - .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, - .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, - .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, - .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, - .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, - .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, - .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, - .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, - .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, - .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, - .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, - .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, - .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, - .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, - .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, - .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, - .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, - .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, - .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, - .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, - .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, - .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, - .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, - .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, - .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, - .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, - .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, - .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, - .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, - .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, - .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, - .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, - .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, - .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, - .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, - .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, - .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, - .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, - .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, - .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, - .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, - .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, - .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, - .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, - .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, - .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, - .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, - .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, - .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, - .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, - .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, - .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, - .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, - .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, - .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, - .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, - .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, - .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, - .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, - .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, - .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, - .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, - .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, - .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, - .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, - .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, - .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, - .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, - .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, - .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, - .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, - .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, - .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, - .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, - .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, - .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, - .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, - .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 - .section .data .global UNK_0210646C @@ -1279,300 +102,14 @@ UNK_02106498: ; 0x02106498 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 - - .global UNK_0210655C -UNK_0210655C: ; 0x0210655C - .word FUN_020B1088 - .word FUN_020B1098 - .word 0 - .word 0 - .word 0 - - .global UNK_02106570 -UNK_02106570: ; 0x02106570 - .short -2 - - .balign 4, 0 - .global UNK_02106574 -UNK_02106574: ; 0x02106574 - .word -1 - - .global UNK_02106578 -UNK_02106578: ; 0x02106578 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106590 -UNK_02106590: ; 0x02106590 - .byte 0x00, 0xF0, 0xFF, 0xFF - - .global UNK_02106594 -UNK_02106594: ; 0x02106594 - .byte 0x05, 0x00, 0x00, 0x00 - - .global UNK_02106598 -UNK_02106598: ; 0x02106598 - .word FUN_020BE5A0 - - .global UNK_0210659C -UNK_0210659C: ; 0x0210659C - .word FUN_020BDA70 - - .global UNK_021065A0 -UNK_021065A0: ; 0x021065A0 - .word FUN_020BDF38 - - .global UNK_021065A4 -UNK_021065A4: ; 0x021065A4 - .word FUN_020BE334 - - .global UNK_021065A8 -UNK_021065A8: ; 0x021065A8 - .word FUN_020BDB40 - - .global UNK_021065AC -UNK_021065AC: ; 0x021065AC - .word FUN_020B8640 - - .global UNK_021065B0 -UNK_021065B0: ; 0x021065B0 - .word FUN_020B86B0 - - .global UNK_021065B4 -UNK_021065B4: ; 0x021065B4 - .word FUN_020B8A08 - - .global UNK_021065B8 -UNK_021065B8: ; 0x021065B8 - .byte 0x4D, 0x00, 0x41, 0x4D - - .global UNK_021065BC -UNK_021065BC: ; 0x021065BC - .word FUN_020BDC0C - .byte 0x4D, 0x00, 0x50, 0x54 - .word FUN_020BE4F0 - .byte 0x4D, 0x00, 0x41, 0x54 - .word FUN_020BDF84 - .byte 0x56, 0x00, 0x41, 0x56 - .word FUN_020BE5E0 - .byte 0x4A, 0x00, 0x41, 0x43 - .word FUN_020BDAB4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106608 -UNK_02106608: ; 0x02106608 - .word FUN_020BE668 - .word FUN_020BEE3C - .word FUN_020BF2FC - - .global UNK_02106614 -UNK_02106614: ; 0x02106614 - .word FUN_020BE62C - .word FUN_020BECEC - .word FUN_020BF0D4 - - .global UNK_02106620 -UNK_02106620: ; 0x02106620 - .word FUN_020BE6E4 - .word FUN_020BEF10 - .word FUN_020BF42C - .word FUN_020BFA9C - - .global UNK_02106630 -UNK_02106630: ; 0x02106630 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_02106634 -UNK_02106634: ; 0x02106634 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106638 -UNK_02106638: ; 0x02106638 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_0210663C -UNK_0210663C: ; 0x0210663C - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106640 -UNK_02106640: ; 0x02106640 - .word FUN_020BA58C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106650 -UNK_02106650: ; 0x02106650 - .word FUN_020BA438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106660 -UNK_02106660: ; 0x02106660 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - - .global UNK_021066A0 -UNK_021066A0: ; 0x021066A0 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066A4 -UNK_021066A4: ; 0x021066A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066AC -UNK_021066AC: ; 0x021066AC - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_021066D0 -UNK_021066D0: ; 0x021066D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066DC -UNK_021066DC: ; 0x021066DC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066E8 -UNK_021066E8: ; 0x021066E8 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066EC -UNK_021066EC: ; 0x021066EC - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066F4 -UNK_021066F4: ; 0x021066F4 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_02106718 -UNK_02106718: ; 0x02106718 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106724 -UNK_02106724: ; 0x02106724 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106730 -UNK_02106730: ; 0x02106730 - .word FUN_020BAC70 - .word FUN_020BAC48 - .word FUN_020BAAC0 - .word FUN_020BA9EC - .word FUN_020BA50C - .word FUN_020BA3C4 - .word FUN_020B9F84 - .word FUN_020B9C54 - .word FUN_020B98C4 - .word FUN_020B9258 - .word FUN_020B9178 - .word FUN_020B9110 - .word FUN_020B8DF0 - .word FUN_020B8A60 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021067B0 -UNK_021067B0: ; 0x021067B0 - .word FUN_020BEBD8 - .word FUN_020BEB00 - .word FUN_020BEA84 - .word FUN_020BEA3C - .word FUN_020BE954 - .word FUN_020BE894 - .word FUN_020BE850 - .word FUN_020BE82C - - .global UNK_021067D0 -UNK_021067D0: ; 0x021067D0 - .word FUN_020BF988 - .word FUN_020BF894 - .word FUN_020BF810 - .word FUN_020BF7C8 - .word FUN_020BF6C8 - .word FUN_020BF5E8 - .word FUN_020BF598 - .word FUN_020BF574 - - .global UNK_021067F0 -UNK_021067F0: ; 0x021067F0 - .word FUN_020BFFD4 - .word FUN_020BFEEC - .word FUN_020BFE68 - .word FUN_020BFE0C - .word FUN_020BFD38 - .word FUN_020BFC8C - .word FUN_020BFC4C - .word FUN_020BFC28 - .bss .global UNK_021CA8B0 UNK_021CA8B0: ; 0x021CA8B0 .space 0x4 - .global UNK_021CA8B4 -UNK_021CA8B4: ; 0x021CA8B4 + .global sBitmap +sBitmap: ; 0x021CA8B4 .space 0x4 .global UNK_021CA8B8 @@ -1599,8 +136,8 @@ UNK_021CA8C8: ; 0x021CA8C8 UNK_021CA8CC: ; 0x021CA8CC .space 0x4 - .global UNK_021CA8D0 -UNK_021CA8D0: ; 0x021CA8D0 + .global sNumStream +sNumStream: ; 0x021CA8D0 .space 0x4 .global UNK_021CA8D4 @@ -1615,8 +152,8 @@ UNK_021CA8D8: ; 0x021CA8D8 UNK_021CA8DC: ; 0x021CA8DC .space 0xc - .global UNK_021CA8E8 -UNK_021CA8E8: ; 0x021CA8E8 + .global sStream +sStream: ; 0x021CA8E8 .space 0x1bc .global UNK_021CAAA4 @@ -1647,8 +184,8 @@ UNK_021CB7EC: ; 0x021CB7EC UNK_021CB7F0: ; 0x021CB7F0 .space 0xc - .global UNK_021CB7FC -UNK_021CB7FC: ; 0x021CB7FC + .global sCount +sCount: ; 0x021CB7FC .space 0xc .global UNK_021CB808 @@ -1747,459 +284,24 @@ UNK_021CBD14: ; 0x021CBD14 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 - - .global UNK_021CCD6C -UNK_021CCD6C: ; 0x021CCD6C - .space 0x4 - - .global UNK_021CCD70 -UNK_021CCD70: ; 0x021CCD70 - .space 0x4 - - .global UNK_021CCD74 -UNK_021CCD74: ; 0x021CCD74 - .space 0x14 - - .global UNK_021CCD88 -UNK_021CCD88: ; 0x021CCD88 - .space 0x4 - - .global UNK_021CCD8C -UNK_021CCD8C: ; 0x021CCD8C - .space 0x10 - - .global UNK_021CCD9C -UNK_021CCD9C: ; 0x021CCD9C - .space 0x4 - - .global UNK_021CCDA0 -UNK_021CCDA0: ; 0x021CCDA0 - .space 0x100 - - .global UNK_021CCEA0 -UNK_021CCEA0: ; 0x021CCEA0 - .space 0x400 - - .global UNK_021CD2A0 -UNK_021CD2A0: ; 0x021CD2A0 - .space 0x40 - - .global UNK_021CD2E0 -UNK_021CD2E0: ; 0x021CD2E0 - .space 0x100 - - .global UNK_021CD3E0 -UNK_021CD3E0: ; 0x021CD3E0 - .space 0x400 - - .global UNK_021CD7E0 -UNK_021CD7E0: ; 0x021CD7E0 - .space 0x40 - - .global UNK_021CD820 -UNK_021CD820: ; 0x021CD820 - .space 0x100 - - .global UNK_021CD920 -UNK_021CD920: ; 0x021CD920 - .space 0x400 - - .global UNK_021CDD20 -UNK_021CDD20: ; 0x021CDD20 - .space 0x40 - - .global UNK_021CDD60 -UNK_021CDD60: ; 0x021CDD60 - .space 0x4 - - .global UNK_021CDD64 -UNK_021CDD64: ; 0x021CDD64 - .space 0x4 - - .global UNK_021CDD68 -UNK_021CDD68: ; 0x021CDD68 - .space 0x4 - - .global UNK_021CDD6C -UNK_021CDD6C: ; 0x021CDD6C - .space 0x4 - - .global UNK_021CDD70 -UNK_021CDD70: ; 0x021CDD70 - .space 0x4 - - .global UNK_021CDD74 -UNK_021CDD74: ; 0x021CDD74 - .space 0x80 - - .global UNK_021CDDF4 -UNK_021CDDF4: ; 0x021CDDF4 - .space 0x4 - - .global UNK_021CDDF8 -UNK_021CDDF8: ; 0x021CDDF8 - .space 0xfc - - .global UNK_021CDEF4 -UNK_021CDEF4: ; 0x021CDEF4 - .space 0x10 - - .global UNK_021CDF04 -UNK_021CDF04: ; 0x021CDF04 - .space 0x4 - - .global UNK_021CDF08 -UNK_021CDF08: ; 0x021CDF08 - .space 0x2ec - - .global UNK_021CE1F4 -UNK_021CE1F4: ; 0x021CE1F4 - .space 0x300 - - .global UNK_021CE4F4 -UNK_021CE4F4: ; 0x021CE4F4 - .space 0x400 - - .global UNK_021CE8F4 -UNK_021CE8F4: ; 0x021CE8F4 - .space 0x4 - - .global UNK_021CE8F8 -UNK_021CE8F8: ; 0x021CE8F8 - .space 0x404 - - .global UNK_021CECFC -UNK_021CECFC: ; 0x021CECFC - .space 0x4 - - .global UNK_021CED00 -UNK_021CED00: ; 0x021CED00 - .space 0x4 - - .global UNK_021CED04 -UNK_021CED04: ; 0x021CED04 - .space 0x4 - - .global UNK_021CED08 -UNK_021CED08: ; 0x021CED08 - .space 0x4 - - .global UNK_021CED0C -UNK_021CED0C: ; 0x021CED0C - .space 0x4 - - .global UNK_021CED10 -UNK_021CED10: ; 0x021CED10 - .space 0x4 - - .global UNK_021CED14 -UNK_021CED14: ; 0x021CED14 - .space 0x4 - - .global UNK_021CED18 -UNK_021CED18: ; 0x021CED18 - .space 0x8 - - .global UNK_021CED20 -UNK_021CED20: ; 0x021CED20 - .space 0x44 - - .global UNK_021CED64 -UNK_021CED64: ; 0x021CED64 - .space 0x34 - - .global UNK_021CED98 -UNK_021CED98: ; 0x021CED98 - .space 0x28 - - .global UNK_021CEDC0 -UNK_021CEDC0: ; 0x021CEDC0 - .space 0x14 - - .global UNK_021CEDD4 -UNK_021CEDD4: ; 0x021CEDD4 - .space 0x24 - - .global UNK_021CEDF8 -UNK_021CEDF8: ; 0x021CEDF8 - .space 0xc - - .global UNK_021CEE04 -UNK_021CEE04: ; 0x021CEE04 - .space 0x14 - - .global UNK_021CEE18 -UNK_021CEE18: ; 0x021CEE18 - .space 0x30 - - .global UNK_021CEE48 -UNK_021CEE48: ; 0x021CEE48 - .space 0x30 - - .global UNK_021CEE78 -UNK_021CEE78: ; 0x021CEE78 - .space 0xe0 - - .global UNK_021CEF58 -UNK_021CEF58: ; 0x021CEF58 - .space 0xc - - .global UNK_021CEF64 -UNK_021CEF64: ; 0x021CEF64 - .space 0xc - - .global UNK_021CEF70 -UNK_021CEF70: ; 0x021CEF70 - .space 0xc - - .global UNK_021CEF7C -UNK_021CEF7C: ; 0x021CEF7C - .space 0x4 - - .global UNK_021CEF80 -UNK_021CEF80: ; 0x021CEF80 - .space 0xe00 - - .global UNK_021CFD80 -UNK_021CFD80: ; 0x021CFD80 - .space 0x4 - - .global UNK_021CFD84 -UNK_021CFD84: ; 0x021CFD84 - .space 0x4 - - .global UNK_021CFD88 -UNK_021CFD88: ; 0x021CFD88 - .space 0x4 - - .global UNK_021CFD8C -UNK_021CFD8C: ; 0x021CFD8C - .space 0x4 - - .global UNK_021CFD90 -UNK_021CFD90: ; 0x021CFD90 - .space 0x4 - - .global UNK_021CFD94 -UNK_021CFD94: ; 0x021CFD94 - .space 0x2ba - - .global UNK_021D004E -UNK_021D004E: ; 0x021D004E - .space 0x332 - - .global UNK_021D0380 -UNK_021D0380: ; 0x021D0380 - .space 0x40 - - .global UNK_021D03C0 -UNK_021D03C0: ; 0x021D03C0 - .space 0xb42 - - .global UNK_021D0F02 -UNK_021D0F02: ; 0x021D0F02 - .space 0xd7e - - .global UNK_021D1C80 -UNK_021D1C80: ; 0x021D1C80 - .space 0x4 - - .global UNK_021D1C84 -UNK_021D1C84: ; 0x021D1C84 + .global sRecvPerFrame +sRecvPerFrame: ; 0x021CCD18 .space 0x4 - .global UNK_021D1C88 -UNK_021D1C88: ; 0x021D1C88 + .global initialized +initialized: ; 0x021CCD1C .space 0x4 - .global UNK_021D1C8C -UNK_021D1C8C: ; 0x021D1C8C - .space 0x4 - - .global UNK_021D1C90 -UNK_021D1C90: ; 0x021D1C90 - .space 0x4 - - .global UNK_021D1C94 -UNK_021D1C94: ; 0x021D1C94 - .space 0x4 - - .global UNK_021D1C98 -UNK_021D1C98: ; 0x021D1C98 - .space 0xc - - .global UNK_021D1CA4 -UNK_021D1CA4: ; 0x021D1CA4 - .space 0xc - - .global UNK_021D1CB0 -UNK_021D1CB0: ; 0x021D1CB0 - .space 0x4 - - .global UNK_021D1CB4 -UNK_021D1CB4: ; 0x021D1CB4 - .space 0x4 - - .global UNK_021D1CB8 -UNK_021D1CB8: ; 0x021D1CB8 - .space 0x4 - - .global UNK_021D1CBC -UNK_021D1CBC: ; 0x021D1CBC - .space 0x140 - - .global UNK_021D1DFC -UNK_021D1DFC: ; 0x021D1DFC - .space 0xc - - .global UNK_021D1E08 -UNK_021D1E08: ; 0x021D1E08 - .space 0xc - - .global UNK_021D1E14 -UNK_021D1E14: ; 0x021D1E14 - .space 0x440 - - .global UNK_021D2254 -UNK_021D2254: ; 0x021D2254 - .space 0x8 - - .global UNK_021D225C -UNK_021D225C: ; 0x021D225C - .space 0x10 - - .global UNK_021D226C -UNK_021D226C: ; 0x021D226C - .space 0x4 - - .global UNK_021D2270 -UNK_021D2270: ; 0x021D2270 - .space 0x4 - - .global UNK_021D2274 -UNK_021D2274: ; 0x021D2274 - .space 0x460 - - .global UNK_021D26D4 -UNK_021D26D4: ; 0x021D26D4 - .space 0x4 - - .global UNK_021D26D8 -UNK_021D26D8: ; 0x021D26D8 - .space 0xc - - .global UNK_021D26E4 -UNK_021D26E4: ; 0x021D26E4 - .space 0x40 - - .global UNK_021D2724 -UNK_021D2724: ; 0x021D2724 - .space 0x80 - - .global UNK_021D27A4 -UNK_021D27A4: ; 0x021D27A4 - .space 0x4 - - .global UNK_021D27A8 -UNK_021D27A8: ; 0x021D27A8 - .space 0x4 - - .global UNK_021D27AC -UNK_021D27AC: ; 0x021D27AC - .space 0x20 - - .global UNK_021D27CC -UNK_021D27CC: ; 0x021D27CC - .space 0x54 - - .global UNK_021D2820 -UNK_021D2820: ; 0x021D2820 - .space 0xa0 - - .global UNK_021D28C0 -UNK_021D28C0: ; 0x021D28C0 - .space 0x4 - - .global UNK_021D28C4 -UNK_021D28C4: ; 0x021D28C4 - .space 0x3c - - .global UNK_021D2900 -UNK_021D2900: ; 0x021D2900 - .space 0x4 - - .global UNK_021D2904 -UNK_021D2904: ; 0x021D2904 - .space 0x4d4 - - .global UNK_021D2DD8 -UNK_021D2DD8: ; 0x021D2DD8 + .global __vct +__vct: ; 0x021CCD20 .space 0x18 - .global UNK_021D2DF0 -UNK_021D2DF0: ; 0x021D2DF0 - .space 0xc - - .global UNK_021D2DFC -UNK_021D2DFC: ; 0x021D2DFC - .space 0x5c0 - .text - 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 +; libvct.a:adpcm.o - arm_func_start FUN_020A8BC8 -FUN_020A8BC8: ; 0x020A8BC8 + arm_func_start vct_encode_adpcm +vct_encode_adpcm: ; 0x020A8BC8 stmdb sp!, {r4,lr} ldrsh r4, [r3, #0x0] ldr r12, [sp, #0x8] @@ -2217,19 +319,19 @@ FUN_020A8BC8: ; 0x020A8BC8 ldmia sp!, {r4,pc} _020A8C04: add r0, r0, #0x4 - bl FUN_020A8CA8 + bl vct_encode_adpcm_16 ldmia sp!, {r4,pc} _020A8C10: add r0, r0, #0x4 - bl FUN_020A91D8 + bl vct_encode_adpcm_24 ldmia sp!, {r4,pc} _020A8C1C: add r0, r0, #0x4 - bl FUN_020A9D18 + bl vct_encode_adpcm_32 ldmia sp!, {r4,pc} - arm_func_start FUN_020A8C28 -FUN_020A8C28: ; 0x020A8C28 + arm_func_start vct_decode_adpcm +vct_decode_adpcm: ; 0x020A8C28 stmdb sp!, {lr} sub sp, sp, #0x4 ldrsh r12, [r0, #0x0] @@ -2248,26 +350,26 @@ _020A8C60: add r3, sp, #0x0 add r0, r0, #0x4 sub r2, r2, #0x4 - bl FUN_020A8F58 + bl vct_decode_adpcm_16 add sp, sp, #0x4 ldmia sp!, {pc} _020A8C78: add r3, sp, #0x0 add r0, r0, #0x4 sub r2, r2, #0x4 - bl FUN_020A97DC + bl vct_decode_adpcm_24 add sp, sp, #0x4 ldmia sp!, {pc} _020A8C90: add r3, sp, #0x0 add r0, r0, #0x4 sub r2, r2, #0x4 - bl FUN_020A9F10 + bl vct_decode_adpcm_32 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_start FUN_020A8CA8 -FUN_020A8CA8: ; 0x020A8CA8 + arm_func_start vct_encode_adpcm_16 +vct_encode_adpcm_16: ; 0x020A8CA8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x3c movs r2, r2, lsr #0x2 @@ -2277,7 +379,7 @@ FUN_020A8CA8: ; 0x020A8CA8 addeq sp, sp, #0x3c ldmeqia sp!, {r4-r11,pc} mov r5, #0x8000 - ldr fp, _020A8F4C ; =UNK_020FF5D4 + ldr fp, _020A8F4C ; =cAdpcmStepSizeTable ldr r4, _020A8F50 ; =0x00007FFF str r2, [sp, #0x8] str r2, [sp, #0xc] @@ -2314,7 +416,7 @@ _020A8D10: add r2, r2, r10 rsb r8, r8, #0x0 cmp r2, r8 - ldr r8, _020A8F54 ; =UNK_020FF5B8 + ldr r8, _020A8F54 ; =cAdpcmIndexTable2 movlt r2, r5 cmp r2, r4 ldrsb r8, [r8, r7] @@ -2347,7 +449,7 @@ _020A8D84: add r7, r7, r12 rsb r9, r9, #0x0 cmp r7, r9 - ldr sb, _020A8F54 ; =UNK_020FF5B8 + ldr sb, _020A8F54 ; =cAdpcmIndexTable2 movlt r7, r5 cmp r7, r4 ldrsb r9, [r9, r8] @@ -2381,7 +483,7 @@ _020A8E04: add r7, r7, r12 rsb r9, r9, #0x0 cmp r7, r9 - ldr sb, _020A8F54 ; =UNK_020FF5B8 + ldr sb, _020A8F54 ; =cAdpcmIndexTable2 movlt r7, r5 cmp r7, r4 ldrsb r9, [r9, r8] @@ -2416,7 +518,7 @@ _020A8E8C: add r7, r7, r12 rsb r9, r9, #0x0 cmp r7, r9 - ldr sb, _020A8F54 ; =UNK_020FF5B8 + ldr sb, _020A8F54 ; =cAdpcmIndexTable2 movlt r7, r5 cmp r7, r4 ldrsb r9, [r9, r8] @@ -2443,12 +545,12 @@ _020A8F18: add sp, sp, #0x3c ldmia sp!, {r4-r11,pc} .balign 4 -_020A8F4C: .word UNK_020FF5D4 +_020A8F4C: .word cAdpcmStepSizeTable _020A8F50: .word 0x00007FFF -_020A8F54: .word UNK_020FF5B8 +_020A8F54: .word cAdpcmIndexTable2 - arm_func_start FUN_020A8F58 -FUN_020A8F58: ; 0x020A8F58 + arm_func_start vct_decode_adpcm_16 +vct_decode_adpcm_16: ; 0x020A8F58 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x34 cmp r2, #0x0 @@ -2458,7 +560,7 @@ FUN_020A8F58: ; 0x020A8F58 mov r4, #0x8000 rsb r6, r4, #0x0 ldr r5, _020A91CC ; =0x00007FFF - ldr fp, _020A91D0 ; =UNK_020FF5D4 + ldr fp, _020A91D0 ; =cAdpcmStepSizeTable str r12, [sp, #0x0] str r12, [sp, #0x8] str r12, [sp, #0xc] @@ -2491,7 +593,7 @@ _020A8FE8: cmp r9, r5 movgt r9, r5 _020A8FF4: - ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldr r7, _020A91D4 ; =cAdpcmIndexTable2 ldrsb r7, [r7, r10] adds r8, r8, r7 ldrmi r8, [sp, #0x8] @@ -2527,7 +629,7 @@ _020A906C: cmp r9, r5 movgt r9, r5 _020A9078: - ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldr r7, _020A91D4 ; =cAdpcmIndexTable2 ldrsb r7, [r7, r10] adds r8, r8, r7 ldrmi r8, [sp, #0x14] @@ -2563,7 +665,7 @@ _020A90F0: cmp r9, r5 movgt r9, r5 _020A90FC: - ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldr r7, _020A91D4 ; =cAdpcmIndexTable2 ldrsb r7, [r7, r10] adds r8, r8, r7 ldrmi r8, [sp, #0x20] @@ -2599,7 +701,7 @@ _020A9174: cmp r9, r5 movgt r9, r5 _020A9180: - ldr r7, _020A91D4 ; =UNK_020FF5B8 + ldr r7, _020A91D4 ; =cAdpcmIndexTable2 ldrsb r7, [r7, r10] adds r8, r8, r7 ldrmi r8, [sp, #0x2c] @@ -2621,11 +723,11 @@ _020A919C: ldmia sp!, {r4-r11,pc} .balign 4 _020A91CC: .word 0x00007FFF -_020A91D0: .word UNK_020FF5D4 -_020A91D4: .word UNK_020FF5B8 +_020A91D0: .word cAdpcmStepSizeTable +_020A91D4: .word cAdpcmIndexTable2 - arm_func_start FUN_020A91D8 -FUN_020A91D8: ; 0x020A91D8 + arm_func_start vct_encode_adpcm_24 +vct_encode_adpcm_24: ; 0x020A91D8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x54 movs r2, r2, lsr #0x3 @@ -2662,7 +764,7 @@ _020A9250: ldrb r5, [r3, #0x2] subs r7, r6, r8 movmi r10, r4 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable mov r9, r5, lsl #0x1 ldrsh r6, [r6, r9] ldrpl r10, [sp, #0x10] @@ -2684,7 +786,7 @@ _020A9250: mov r7, #0x8000 rsb r7, r7, #0x0 cmp r6, r7 - ldr r7, _020A97D8 ; =UNK_020FF5BC + ldr r7, _020A97D8 ; =cAdpcmIndexTable3 movlt r6, lr cmp r6, r12 ldrsb r7, [r7, r10] @@ -2705,7 +807,7 @@ _020A92E4: ldrsh r5, [r1, #0x2] mov r9, r8, lsl #0x1 subs r7, r5, r11 - ldr r5, _020A97D4 ; =UNK_020FF5D4 + ldr r5, _020A97D4 ; =cAdpcmStepSizeTable movmi r6, r4 ldrsh r9, [r5, r9] ldrpl r6, [sp, #0x18] @@ -2727,7 +829,7 @@ _020A92E4: mov r7, #0x8000 rsb r7, r7, #0x0 cmp r5, r7 - ldr r7, _020A97D8 ; =UNK_020FF5BC + ldr r7, _020A97D8 ; =cAdpcmIndexTable3 movlt r5, lr cmp r5, r12 ldrsb r7, [r7, r6] @@ -2748,7 +850,7 @@ _020A938C: ldrsh r5, [r1, #0x4] mov r9, r8, lsl #0x1 subs r7, r5, r11 - ldr r5, _020A97D4 ; =UNK_020FF5D4 + ldr r5, _020A97D4 ; =cAdpcmStepSizeTable movmi r6, r4 ldrsh r9, [r5, r9] ldrpl r6, [sp, #0x20] @@ -2770,7 +872,7 @@ _020A938C: mov r7, #0x8000 rsb r7, r7, #0x0 cmp r5, r7 - ldr r7, _020A97D8 ; =UNK_020FF5BC + ldr r7, _020A97D8 ; =cAdpcmIndexTable3 movlt r5, lr cmp r5, r12 ldrsb r7, [r7, r6] @@ -2792,7 +894,7 @@ _020A9434: ldrsh r6, [r1, #0x6] mov r9, r5, lsl #0x1 subs r7, r6, r8 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable movmi r10, r4 ldrsh r6, [r6, r9] ldrpl r10, [sp, #0x28] @@ -2814,7 +916,7 @@ _020A9434: mov r7, #0x8000 rsb r7, r7, #0x0 cmp r6, r7 - ldr r7, _020A97D8 ; =UNK_020FF5BC + ldr r7, _020A97D8 ; =cAdpcmIndexTable3 movlt r6, lr cmp r6, r12 ldrsb r7, [r7, r10] @@ -2833,7 +935,7 @@ _020A94E0: and r5, r10, #0xff subs r8, r6, r11 movmi r7, r4 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable mov r10, r9, lsl #0x1 ldrsh r10, [r6, r10] ldrpl r7, [sp, #0x30] @@ -2855,7 +957,7 @@ _020A94E0: mov r8, #0x8000 rsb r8, r8, #0x0 cmp r6, r8 - ldr r8, _020A97D8 ; =UNK_020FF5BC + ldr r8, _020A97D8 ; =cAdpcmIndexTable3 movlt r6, lr mov r5, r5, lsl #0x4 cmp r6, r12 @@ -2878,7 +980,7 @@ _020A9588: mov r10, r9, lsl #0x1 and r5, r5, #0xff subs r8, r6, r11 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable movmi r7, r4 ldrsh r10, [r6, r10] ldrpl r7, [sp, #0x38] @@ -2900,7 +1002,7 @@ _020A9588: mov r8, #0x8000 rsb r8, r8, #0x0 cmp r6, r8 - ldr r8, _020A97D8 ; =UNK_020FF5BC + ldr r8, _020A97D8 ; =cAdpcmIndexTable3 movlt r6, lr cmp r6, r12 ldrsb r8, [r8, r7] @@ -2924,7 +1026,7 @@ _020A9630: ldrsh r6, [r1, #0xc] mov r9, r5, lsl #0x1 subs r7, r6, r8 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable movmi r10, r4 ldrsh r6, [r6, r9] ldrpl r10, [sp, #0x40] @@ -2946,7 +1048,7 @@ _020A9630: mov r7, #0x8000 rsb r7, r7, #0x0 cmp r6, r7 - ldr r7, _020A97D8 ; =UNK_020FF5BC + ldr r7, _020A97D8 ; =cAdpcmIndexTable3 movlt r6, lr cmp r6, r12 ldrsb r7, [r7, r10] @@ -2968,7 +1070,7 @@ _020A96E4: add r1, r1, #0x10 subs r8, r6, r5 movmi r7, r4 - ldr r6, _020A97D4 ; =UNK_020FF5D4 + ldr r6, _020A97D4 ; =cAdpcmStepSizeTable mov r10, r9, lsl #0x1 ldrsh r10, [r6, r10] ldrpl r7, [sp, #0x48] @@ -2990,7 +1092,7 @@ _020A96E4: add r5, r5, r8 rsb r6, r6, #0x0 cmp r5, r6 - ldr r6, _020A97D8 ; =UNK_020FF5BC + ldr r6, _020A97D8 ; =cAdpcmIndexTable3 movlt r5, lr cmp r5, r12 ldrsb r6, [r6, r7] @@ -3019,11 +1121,11 @@ _020A9790: ldmia sp!, {r4-r11,pc} .balign 4 _020A97D0: .word 0x00007FFF -_020A97D4: .word UNK_020FF5D4 -_020A97D8: .word UNK_020FF5BC +_020A97D4: .word cAdpcmStepSizeTable +_020A97D8: .word cAdpcmIndexTable3 - arm_func_start FUN_020A97DC -FUN_020A97DC: ; 0x020A97DC + arm_func_start vct_decode_adpcm_24 +vct_decode_adpcm_24: ; 0x020A97DC stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4c ldr r5, _020A9D08 ; =0xAAAAAAAB @@ -3050,7 +1152,7 @@ FUN_020A97DC: ; 0x020A97DC str r2, [sp, #0x48] _020A983C: ldrb r8, [r3, #0x2] - ldr r5, _020A9D10 ; =UNK_020FF5D4 + ldr r5, _020A9D10 ; =cAdpcmStepSizeTable ldrb r6, [r0, #0x0] mov r7, r8, lsl #0x1 ldrsh r5, [r5, r7] @@ -3082,7 +1184,7 @@ _020A98AC: cmp r9, lr movgt r9, lr _020A98B8: - ldr r7, _020A9D14 ; =UNK_020FF5BC + ldr r7, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r5, [r7, r5] adds r8, r8, r5 ldrmi r8, [sp, #0x18] @@ -3098,7 +1200,7 @@ _020A98D4: ldrb r8, [r3, #0x2] mov r5, r6, asr #0x2 ands r7, r5, #0x2 - ldr r7, _020A9D10 ; =UNK_020FF5D4 + ldr r7, _020A9D10 ; =cAdpcmStepSizeTable mov r10, r8, lsl #0x1 ldrsh r7, [r7, r10] ldrsh r9, [r3, #0x0] @@ -3125,7 +1227,7 @@ _020A9948: movgt r9, lr _020A9954: and r7, r5, #0x7 - ldr r5, _020A9D14 ; =UNK_020FF5BC + ldr r5, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r5, [r5, r7] adds r8, r8, r5 ldrmi r8, [sp, #0x24] @@ -3143,7 +1245,7 @@ _020A9974: orr r6, r6, r11, asr #0x7 ldrb r8, [r3, #0x2] ands r5, r6, #0x2 - ldr r5, _020A9D10 ; =UNK_020FF5D4 + ldr r5, _020A9D10 ; =cAdpcmStepSizeTable mov r7, r8, lsl #0x1 ldrsh r10, [r5, r7] ldrsh r9, [r3, #0x0] @@ -3165,7 +1267,7 @@ _020A99E0: cmp r9, lr movgt r9, lr _020A99EC: - ldr r5, _020A9D14 ; =UNK_020FF5BC + ldr r5, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r5, [r5, r6] adds r8, r8, r5 ldrmi r8, [sp, #0x2c] @@ -3181,7 +1283,7 @@ _020A9A08: ldrb r8, [r3, #0x2] mov r6, r11, asr #0x4 ands r5, r6, #0x2 - ldr r5, _020A9D10 ; =UNK_020FF5D4 + ldr r5, _020A9D10 ; =cAdpcmStepSizeTable mov r7, r8, lsl #0x1 ldrsh r10, [r5, r7] ldrsh r9, [r3, #0x0] @@ -3203,7 +1305,7 @@ _020A9A6C: cmp r9, lr movgt r9, lr _020A9A78: - ldr r5, _020A9D14 ; =UNK_020FF5BC + ldr r5, _020A9D14 ; =cAdpcmIndexTable3 and r6, r6, #0x7 ldrsb r5, [r5, r6] adds r8, r8, r5 @@ -3220,7 +1322,7 @@ _020A9A98: ldrb r8, [r3, #0x2] mov r6, r11, asr #0x1 ands r5, r6, #0x2 - ldr r5, _020A9D10 ; =UNK_020FF5D4 + ldr r5, _020A9D10 ; =cAdpcmStepSizeTable mov r7, r8, lsl #0x1 ldrsh r10, [r5, r7] ldrsh r9, [r3, #0x0] @@ -3242,7 +1344,7 @@ _020A9AFC: cmp r9, lr movgt r9, lr _020A9B08: - ldr r5, _020A9D14 ; =UNK_020FF5BC + ldr r5, _020A9D14 ; =cAdpcmIndexTable3 and r6, r6, #0x7 ldrsb r5, [r5, r6] adds r8, r8, r5 @@ -3261,7 +1363,7 @@ _020A9B28: orr r5, r5, r2, asr #0x6 ands r6, r5, #0x2 ldrb r6, [r3, #0x2] - ldr r8, _020A9D10 ; =UNK_020FF5D4 + ldr r8, _020A9D10 ; =cAdpcmStepSizeTable ldrsh r7, [r3, #0x0] mov r9, r6, lsl #0x1 ldrsh r10, [r8, r9] @@ -3282,7 +1384,7 @@ _020A9B90: cmp r7, lr movgt r7, lr _020A9B9C: - ldr r8, _020A9D14 ; =UNK_020FF5BC + ldr r8, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r5, [r8, r5] adds r6, r6, r5 ldrmi r6, [sp, #0x40] @@ -3298,7 +1400,7 @@ _020A9BB8: ldrb r6, [r3, #0x2] mov r5, r2, asr #0x3 ands r8, r5, #0x2 - ldr r8, _020A9D10 ; =UNK_020FF5D4 + ldr r8, _020A9D10 ; =cAdpcmStepSizeTable mov r9, r6, lsl #0x1 ldrsh r10, [r8, r9] ldrsh r7, [r3, #0x0] @@ -3320,7 +1422,7 @@ _020A9C18: movgt r7, lr _020A9C24: and r8, r5, #0x7 - ldr r5, _020A9D14 ; =UNK_020FF5BC + ldr r5, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r5, [r5, r8] adds r6, r6, r5 ldrmi r6, [sp, #0x44] @@ -3335,7 +1437,7 @@ _020A9C44: strh r5, [r1, #0xc] ands r5, r2, #0x2 ldrb r5, [r3, #0x2] - ldr r7, _020A9D10 ; =UNK_020FF5D4 + ldr r7, _020A9D10 ; =cAdpcmStepSizeTable ldrsh r6, [r3, #0x0] mov r8, r5, lsl #0x1 ldrsh r9, [r7, r8] @@ -3357,7 +1459,7 @@ _020A9CA0: movgt r6, lr _020A9CAC: and r7, r2, #0x7 - ldr r2, _020A9D14 ; =UNK_020FF5BC + ldr r2, _020A9D14 ; =cAdpcmIndexTable3 ldrsb r2, [r2, r7] adds r5, r5, r2 ldrmi r5, [sp, #0x48] @@ -3383,11 +1485,11 @@ _020A9CCC: .balign 4 _020A9D08: .word 0xAAAAAAAB _020A9D0C: .word 0x00007FFF -_020A9D10: .word UNK_020FF5D4 -_020A9D14: .word UNK_020FF5BC +_020A9D10: .word cAdpcmStepSizeTable +_020A9D14: .word cAdpcmIndexTable3 - arm_func_start FUN_020A9D18 -FUN_020A9D18: ; 0x020A9D18 + arm_func_start vct_encode_adpcm_32 +vct_encode_adpcm_32: ; 0x020A9D18 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x1c movs r2, r2, lsr #0x1 @@ -3409,7 +1511,7 @@ _020A9D5C: ldrb r2, [r3, #0x2] ldrsh r8, [r3, #0x0] ldrsh r7, [r1, #0x0] - ldr sb, _020A9F08 ; =UNK_020FF5D4 + ldr sb, _020A9F08 ; =cAdpcmStepSizeTable mov r12, r2, lsl #0x1 subs r7, r7, r8 ldrsh r12, [r9, r12] @@ -3439,7 +1541,7 @@ _020A9D5C: mov r8, #0x8000 rsb r8, r8, #0x0 cmp r7, r8 - ldr r8, _020A9F0C ; =UNK_020FF5C4 + ldr r8, _020A9F0C ; =cAdpcmIndexTable4 movlt r7, r5 cmp r7, r11 ldrsb r8, [r8, r10] @@ -3461,7 +1563,7 @@ _020A9E08: add r1, r1, #0x4 subs r7, r8, r7 movmi r10, r6 - ldr r8, _020A9F08 ; =UNK_020FF5D4 + ldr r8, _020A9F08 ; =cAdpcmStepSizeTable mov r9, r2, lsl #0x1 ldrsh r12, [r8, r9] ldrpl r10, [sp, #0x14] @@ -3490,7 +1592,7 @@ _020A9E08: mov r8, #0x8000 rsb r8, r8, #0x0 cmp r7, r8 - ldr r8, _020A9F0C ; =UNK_020FF5C4 + ldr r8, _020A9F0C ; =cAdpcmIndexTable4 movlt r7, r5 cmp r7, r11 ldrsb r8, [r8, r10] @@ -3516,11 +1618,11 @@ _020A9ED0: ldmia sp!, {r4-r11,pc} .balign 4 _020A9F04: .word 0x00007FFF -_020A9F08: .word UNK_020FF5D4 -_020A9F0C: .word UNK_020FF5C4 +_020A9F08: .word cAdpcmStepSizeTable +_020A9F0C: .word cAdpcmIndexTable4 - arm_func_start FUN_020A9F10 -FUN_020A9F10: ; 0x020A9F10 + arm_func_start vct_decode_adpcm_32 +vct_decode_adpcm_32: ; 0x020A9F10 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x1c cmp r2, #0x0 @@ -3538,7 +1640,7 @@ _020A9F40: ldrb r6, [r3, #0x2] ldrsh r7, [r3, #0x0] and r9, r5, #0xf - ldr r5, _020AA09C ; =UNK_020FF5D4 + ldr r5, _020AA09C ; =cAdpcmStepSizeTable mov r8, r6, lsl #0x1 ldrsh r8, [r5, r8] ands r5, r9, #0x4 @@ -3563,7 +1665,7 @@ _020A9FA0: cmp r7, r11 movgt r7, r11 _020A9FAC: - ldr r5, _020AA0A0 ; =UNK_020FF5C4 + ldr r5, _020AA0A0 ; =cAdpcmIndexTable4 ldrsb r5, [r5, r9] adds r6, r6, r5 ldrmi r6, [sp, #0x8] @@ -3581,7 +1683,7 @@ _020A9FC8: ldrsh r7, [r3, #0x0] mov r5, r5, asr #0x4 and r9, r5, #0xf - ldr r5, _020AA09C ; =UNK_020FF5D4 + ldr r5, _020AA09C ; =cAdpcmStepSizeTable mov r8, r6, lsl #0x1 ldrsh r8, [r5, r8] ands r5, r9, #0x4 @@ -3606,7 +1708,7 @@ _020AA040: cmp r7, r11 movgt r7, r11 _020AA04C: - ldr r5, _020AA0A0 ; =UNK_020FF5C4 + ldr r5, _020AA0A0 ; =cAdpcmIndexTable4 ldrsb r5, [r5, r9] adds r6, r6, r5 ldrmi r6, [sp, #0x14] @@ -3628,13 +1730,15 @@ _020AA068: ldmia sp!, {r4-r11,pc} .balign 4 _020AA098: .word 0x00007FFF -_020AA09C: .word UNK_020FF5D4 -_020AA0A0: .word UNK_020FF5C4 +_020AA09C: .word cAdpcmStepSizeTable +_020AA0A0: .word cAdpcmIndexTable4 - arm_func_start FUN_020AA0A4 -FUN_020AA0A4: +; libvct.a:audio.o + + arm_func_start vct_flush_send_buffer +vct_flush_send_buffer: stmdb sp!, {r4-r8,lr} - ldr r0, _020AA1B4 ; =UNK_021CA8D0 + ldr r0, _020AA1B4 ; =sNumStream ldr r0, [r0, #0x0] cmp r0, #0x0 moveq r0, #0x1 @@ -3657,7 +1761,7 @@ _020AA0F4: mov r0, #0x1 ldmia sp!, {r4-r8,pc} _020AA0FC: - ldr r0, _020AA1C0 ; =UNK_021CCD20 + ldr r0, _020AA1C0 ; =__vct mov r5, #0x1 ldr r0, [r0, #0x10] cmp r0, #0x2 @@ -3709,15 +1813,15 @@ _020AA1AC: mov r0, #0x1 ldmia sp!, {r4-r8,pc} .balign 4 -_020AA1B4: .word UNK_021CA8D0 +_020AA1B4: .word sNumStream _020AA1B8: .word UNK_021CAF00 _020AA1BC: .word UNK_021CA8C8 -_020AA1C0: .word UNK_021CCD20 +_020AA1C0: .word __vct _020AA1C4: .word UNK_020FF694 _020AA1C8: .word UNK_021CA8BC - arm_func_start FUN_020AA1CC -FUN_020AA1CC: ; 0x020AA1CC + arm_func_start vct_decode_audio_buffer +vct_decode_audio_buffer: ; 0x020AA1CC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 bl FUN_020AB154 @@ -3742,7 +1846,7 @@ _020AA204: ldr r0, [r4, #0x474] ldr r2, [r4, #0x14] add r1, r4, #0x1c - bl FUN_020A8C28 + bl vct_decode_adpcm b _020AA25C _020AA230: cmp r3, #0x1 @@ -3768,7 +1872,7 @@ _020AA25C: cmp r0, #0x0 bge _020AA288 mov r0, r4 - bl FUN_020ACD90 + bl vct_free_packet_buffer _020AA288: add r7, r7, #0x1 cmp r7, r6 @@ -3778,11 +1882,11 @@ _020AA294: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_start FUN_020AA2A0 -FUN_020AA2A0: ; 0x020AA2A0 + arm_func_start vct_handle_audio +vct_handle_audio: ; 0x020AA2A0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 - ldr r4, _020AA4A8 ; =UNK_021CA8D0 + ldr r4, _020AA4A8 ; =sNumStream mov r10, r0 ldr r0, [r4, #0x0] ldr r7, [sp, #0x28] @@ -3794,12 +1898,12 @@ FUN_020AA2A0: ; 0x020AA2A0 addeq sp, sp, #0x4 moveq r0, r5 ldmeqia sp!, {r4-r11,pc} - ldr r1, _020AA4AC ; =UNK_021CA8E8 + ldr r1, _020AA4AC ; =sStream mov r2, r5 _020AA2E0: ldr r0, [r1, #0x38] cmp r10, r0 - ldreq r1, _020AA4AC ; =UNK_021CA8E8 + ldreq r1, _020AA4AC ; =sStream moveq r0, #0x94 mlaeq r5, r2, r0, r1 beq _020AA308 @@ -3835,8 +1939,8 @@ _020AA344: str r4, [r5, #0x24] movge r0, #0x0 ldmgeia sp!, {r4-r11,pc} - ldr r1, _020AA4B0 ; =UNK_020FF689 - ldr r0, _020AA4B4 ; =UNK_020FF688 + ldr r1, _020AA4B0 ; =sCodecInfo+1 + ldr r0, _020AA4B4 ; =sCodecInfo ldrb r2, [r1, r4, lsl #0x1] ldrb r1, [r0, r4, lsl #0x1] mov r0, #0x44 @@ -3849,26 +1953,26 @@ _020AA344: cmp r10, #0x0 movne r0, #0x1 movne r1, r0, lsl r10 - ldr r0, _020AA4B8 ; =UNK_021CA8B4 + ldr r0, _020AA4B8 ; =sBitmap 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 + bl vct_alloc_packet_buffer movs r6, r0 bne _020AA40C ldr r0, [r5, #0x34] - bl FUN_020AB6C4 + bl vct_flush_audio_queue ldr r0, [r5, #0x34] bl FUN_020AB234 - bl FUN_020ACDC8 + bl vct_alloc_packet_buffer movs r6, r0 bne _020AA3FC bl FUN_020AB630 bl FUN_020AB1E4 - bl FUN_020ACDC8 + bl vct_alloc_packet_buffer mov r6, r0 _020AA3FC: cmp r6, #0x0 @@ -3902,26 +2006,26 @@ _020AA40C: str r2, [r6, #0x460] ldrh r2, [r9, #0x6] str r2, [r6, #0x18] - bl FUN_020AB760 + bl vct_calc_jitter_and_skew cmp r0, #0x0 bne _020AA494 mov r0, r6 - bl FUN_020ACD90 + bl vct_free_packet_buffer add sp, sp, #0x4 mov r0, #0x0 ldmia sp!, {r4-r11,pc} _020AA494: mov r0, r6 - bl FUN_020AB164 + bl vct_insert_decoder 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 +_020AA4A8: .word sNumStream +_020AA4AC: .word sStream +_020AA4B0: .word sCodecInfo+1 +_020AA4B4: .word sCodecInfo +_020AA4B8: .word sBitmap _020AA4BC: .word 0x0000045C arm_func_start FUN_020AA4C0 @@ -4046,7 +2150,7 @@ _020AA62C: mov r1, r7 sub r0, r7, #0x4 mov r2, r2, lsr #0x1 - bl FUN_020A8BC8 + bl vct_encode_adpcm b _020AA6D4 _020AA690: cmp r5, #0x1 @@ -4068,8 +2172,8 @@ _020AA6B4: mov r2, r2, lsr #0x1 bl FUN_020AB2FC _020AA6D4: - ldr r0, _020AA758 ; =UNK_021CCD20 - ldr r1, _020AA75C ; =UNK_021CA8B4 + ldr r0, _020AA758 ; =__vct + ldr r1, _020AA75C ; =sBitmap ldrb r0, [r0, #0x0] mov r2, #0x1 ldr r3, [r1, #0x0] @@ -4102,8 +2206,8 @@ _020AA748: .word UNK_021CA8D8 _020AA74C: .word UNK_021CA8B8 _020AA750: .word UNK_021CA8C4 _020AA754: .word UNK_021CA8C0 -_020AA758: .word UNK_021CCD20 -_020AA75C: .word UNK_021CA8B4 +_020AA758: .word __vct +_020AA75C: .word sBitmap arm_func_start FUN_020AA760 FUN_020AA760: ; 0x020AA760 @@ -4134,7 +2238,7 @@ FUN_020AA7A0: ; 0x020AA7A0 cmp r0, #0x5 movge r0, #0x0 bxge lr - ldr r1, _020AA80C ; =UNK_021CCD20 + ldr r1, _020AA80C ; =__vct ldr r1, [r1, #0x10] cmp r1, #0x1 beq _020AA7C8 @@ -4142,8 +2246,8 @@ FUN_020AA7A0: ; 0x020AA7A0 movls r0, #0x0 bxls lr _020AA7C8: - ldr r2, _020AA810 ; =UNK_020FF689 - ldr r1, _020AA814 ; =UNK_020FF688 + ldr r2, _020AA810 ; =sCodecInfo+1 + ldr r1, _020AA814 ; =sCodecInfo ldrb r12, [r2, r0, lsl #0x1] ldrb r3, [r1, r0, lsl #0x1] mov r1, #0x44 @@ -4160,9 +2264,9 @@ _020AA7C8: mov r0, #0x1 bx lr .balign 4 -_020AA80C: .word UNK_021CCD20 -_020AA810: .word UNK_020FF689 -_020AA814: .word UNK_020FF688 +_020AA80C: .word __vct +_020AA810: .word sCodecInfo+1 +_020AA814: .word sCodecInfo _020AA818: .word UNK_021CA8CC _020AA81C: .word UNK_021CA8BC _020AA820: .word UNK_021CA8C0 @@ -4180,7 +2284,7 @@ FUN_020AA824: ; 0x020AA824 mov r4, #0x0 cmp r6, r0 bne _020AA920 - ldr r8, _020AA95C ; =UNK_021CA8D0 + ldr r8, _020AA95C ; =sNumStream ldr r0, [r8, #0x0] cmp r0, #0x0 beq _020AA920 @@ -4203,7 +2307,7 @@ _020AA86C: _020AA89C: cmp r4, #0x0 beq _020AA90C - ldr r8, _020AA95C ; =UNK_021CA8D0 + ldr r8, _020AA95C ; =sNumStream add r10, r9, #0x1 ldr r0, [r8, #0x0] cmp r10, r0 @@ -4224,7 +2328,7 @@ _020AA8C8: mov r1, r9 mov r2, r7 mov r3, r6 - bl FUN_020AD61C + bl vct_mix_audio _020AA8F8: ldr r0, [r8, #0x0] add r10, r10, #0x1 @@ -4256,7 +2360,7 @@ _020AA950: ldmia sp!, {r4-r10,pc} .balign 4 _020AA958: .word UNK_021CA8D4 -_020AA95C: .word UNK_021CA8D0 +_020AA95C: .word sNumStream _020AA960: .word UNK_021CAAA4 _020AA964: .word UNK_021CA8C8 @@ -4264,7 +2368,7 @@ _020AA964: .word UNK_021CA8C8 FUN_020AA968: ; 0x020AA968 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc - ldr r4, _020AABD4 ; =UNK_021CA8E8 + ldr r4, _020AABD4 ; =sStream mov r10, r2 mov r2, #0x94 mla r6, r10, r2, r4 @@ -4282,7 +2386,7 @@ _020AA9A4: mov r4, r0 mov r0, r10 mov r9, r1 - bl FUN_020AB4B8 + bl vct_top_audio_queue movs r7, r0 beq _020AAB98 mov r0, #0x34 @@ -4309,7 +2413,7 @@ _020AA9A4: ldr r0, [r0, #0x474] bl MIi_CpuCopyFast ldr r0, [r6, #0x3c] - bl FUN_020ACD90 + bl vct_free_packet_buffer mov r0, #0x0 str r0, [r6, #0x3c] ldr r0, [sp, #0x8] @@ -4343,7 +2447,7 @@ _020AAA68: bl FUN_020ABC0C mov r8, r0 mov r0, r10 - bl FUN_020AB4B8 + bl vct_top_audio_queue mov r5, r11 b _020AABA8 _020AAAA8: @@ -4374,7 +2478,7 @@ _020AAAE0: bl FUN_020ABC0C mov r8, r0 mov r0, r10 - bl FUN_020AB4B8 + bl vct_top_audio_queue ldr r0, [r6, #0x70] sub r0, r0, #0x1 str r0, [r6, #0x70] @@ -4422,7 +2526,7 @@ _020AABB0: ldr r0, [r6, #0x3c] cmp r0, #0x0 beq _020AABC8 - bl FUN_020ACD90 + bl vct_free_packet_buffer mov r0, #0x0 str r0, [r6, #0x3c] _020AABC8: @@ -4430,7 +2534,7 @@ _020AABC8: add sp, sp, #0xc ldmia sp!, {r4-r11,pc} .balign 4 -_020AABD4: .word UNK_021CA8E8 +_020AABD4: .word sStream _020AABD8: .word 0x00008B4C arm_func_start FUN_020AABDC @@ -4443,7 +2547,7 @@ FUN_020AABDC: ; 0x020AABDC cmp r2, r1 movne r0, r12 ldmneia sp!, {r4,pc} - ldr r1, _020AACE4 ; =UNK_021CA8D0 + ldr r1, _020AACE4 ; =sNumStream ldr r4, [r1, #0x0] cmp r4, #0x0 moveq r0, r12 @@ -4507,7 +2611,7 @@ _020AAC9C: ldmia sp!, {r4,pc} .balign 4 _020AACE0: .word UNK_021CA8D4 -_020AACE4: .word UNK_021CA8D0 +_020AACE4: .word sNumStream _020AACE8: .word UNK_021CA8DC _020AACEC: .word UNK_021CAF00 _020AACF0: .word 0x5F564354 @@ -4526,10 +2630,10 @@ _020AAD10: mov lr, r4, lsl #0x2 cmp r0, r5 bne _020AAD74 - ldr r1, _020AADBC ; =UNK_021CA8E8 + ldr r1, _020AADBC ; =sStream mov r0, #0x94 mla r0, r4, r0, r1 - ldr r1, _020AADC0 ; =UNK_021CA8D0 + ldr r1, _020AADC0 ; =sNumStream mov r3, #0x0 ldr r2, [r1, #0x0] str r3, [r12, lr] @@ -4537,10 +2641,10 @@ _020AAD10: str r2, [r1, #0x0] bl FUN_020ABC40 mov r0, r4 - bl FUN_020AB6C4 + bl vct_flush_audio_queue mov r0, r4 bl FUN_020AB234 - ldr r0, _020AADC4 ; =UNK_021CA8B4 + ldr r0, _020AADC4 ; =sBitmap ldr r1, [r5, #0x8] ldr r2, [r0, #0x0] mvn r1, r1 @@ -4552,7 +2656,7 @@ _020AAD74: cmp r4, #0x3 blo _020AAD10 _020AAD80: - ldr r0, _020AADC0 ; =UNK_021CA8D0 + ldr r0, _020AADC0 ; =sNumStream ldr r0, [r0, #0x0] cmp r0, #0x0 addne sp, sp, #0x4 @@ -4561,16 +2665,16 @@ _020AAD80: mov r1, #0x1 str r1, [r0, #0x0] bl FUN_020AD170 - ldr r0, _020AADC4 ; =UNK_021CA8B4 + ldr r0, _020AADC4 ; =sBitmap 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 +_020AADBC: .word sStream +_020AADC0: .word sNumStream +_020AADC4: .word sBitmap _020AADC8: .word UNK_021CA8C4 arm_func_start FUN_020AADCC @@ -4581,7 +2685,7 @@ FUN_020AADCC: ; 0x020AADCC addeq sp, sp, #0x4 moveq r0, #0x0 ldmeqia sp!, {r4-r5,pc} - ldr r0, _020AAF24 ; =UNK_021CA8D0 + ldr r0, _020AAF24 ; =sNumStream ldr r0, [r0, #0x0] cmp r0, #0x3 addeq sp, sp, #0x4 @@ -4618,10 +2722,10 @@ _020AAE48: cmp r4, #0x3 blo _020AAE48 _020AAE68: - ldr r0, _020AAF24 ; =UNK_021CA8D0 - ldr r1, _020AAF2C ; =UNK_021CA8B4 + ldr r0, _020AAF24 ; =sNumStream + ldr r1, _020AAF2C ; =sBitmap ldr r3, [r0, #0x0] - ldr r2, _020AAF30 ; =UNK_021CA8E8 + ldr r2, _020AAF30 ; =sStream add r3, r3, #0x1 str r3, [r0, #0x0] mov r0, #0x94 @@ -4640,7 +2744,7 @@ _020AAE68: addne sp, sp, #0x4 movne r0, #0x1 ldmneia sp!, {r4-r5,pc} - ldr r0, _020AAF24 ; =UNK_021CA8D0 + ldr r0, _020AAF24 ; =sNumStream ldr r0, [r0, #0x0] cmp r0, #0x1 bne _020AAF18 @@ -4667,39 +2771,39 @@ _020AAF18: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AAF24: .word UNK_021CA8D0 +_020AAF24: .word sNumStream _020AAF28: .word UNK_021CA8DC -_020AAF2C: .word UNK_021CA8B4 -_020AAF30: .word UNK_021CA8E8 +_020AAF2C: .word sBitmap +_020AAF30: .word sStream _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 + arm_func_start vct_finish_audio +vct_finish_audio: ; 0x020AAF44 + ldr r0, _020AAF54 ; =sNumStream mov r1, #0x0 str r1, [r0, #0x0] bx lr .balign 4 -_020AAF54: .word UNK_021CA8D0 +_020AAF54: .word sNumStream arm_func_start FUN_020AAF58 FUN_020AAF58: stmdb sp!, {r4-r8,lr} bl OS_GetTickLo - ldr r1, _020AB054 ; =UNK_021CCD20 + ldr r1, _020AB054 ; =__vct 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 + ldr r1, _020AB060 ; =sBitmap streq r5, [r0, #0x0] str r5, [r1, #0x0] - ldr r2, _020AB064 ; =UNK_021CA8D0 + ldr r2, _020AB064 ; =sNumStream ldrne r0, _020AB05C ; =UNK_021CA8CC movne r1, #0x4 strne r1, [r0, #0x0] @@ -4708,9 +2812,9 @@ FUN_020AAF58: ldr r3, _020AB068 ; =UNK_0210646C ldr r2, [r0, #0x0] mov r6, #0x1 - ldr r1, _020AB06C ; =UNK_020FF689 + ldr r1, _020AB06C ; =sCodecInfo+1 str r6, [r3, #0x0] - ldr r0, _020AB070 ; =UNK_020FF688 + ldr r0, _020AB070 ; =sCodecInfo ldrb r3, [r1, r2, lsl #0x1] ldrb r1, [r0, r2, lsl #0x1] mov r0, #0x44 @@ -4731,7 +2835,7 @@ FUN_020AAF58: str r3, [r0, #0x8d4] bl FUN_020ACF10 mov r8, #0x0 - ldr r7, _020AB080 ; =UNK_021CA8E8 + ldr r7, _020AB080 ; =sStream ldr r5, _020AB084 ; =UNK_021CA8DC mov r6, r8 mvn r4, #0x0 @@ -4752,18 +2856,18 @@ _020AB018: mov r0, #0x1 ldmia sp!, {r4-r8,pc} .balign 4 -_020AB054: .word UNK_021CCD20 +_020AB054: .word __vct _020AB058: .word UNK_021CA8B0 _020AB05C: .word UNK_021CA8CC -_020AB060: .word UNK_021CA8B4 -_020AB064: .word UNK_021CA8D0 +_020AB060: .word sBitmap +_020AB064: .word sNumStream _020AB068: .word UNK_0210646C -_020AB06C: .word UNK_020FF689 -_020AB070: .word UNK_020FF688 +_020AB06C: .word sCodecInfo+1 +_020AB070: .word sCodecInfo _020AB074: .word UNK_021CA8D4 _020AB078: .word UNK_021CA8BC _020AB07C: .word UNK_021CAF00 -_020AB080: .word UNK_021CA8E8 +_020AB080: .word sStream _020AB084: .word UNK_021CA8DC arm_func_start FUN_020AB088 @@ -4841,8 +2945,8 @@ FUN_020AB154: .balign 4 _020AB160: .word UNK_021CB7D8 - arm_func_start FUN_020AB164 -FUN_020AB164: ; 0x020AB164 + arm_func_start vct_insert_decoder +vct_insert_decoder: ; 0x020AB164 ldr r2, _020AB1D8 ; =UNK_021CB7D8 ldr r1, [r2, #0x0] cmp r1, #0x0 @@ -4889,7 +2993,7 @@ FUN_020AB1E4: ; 0x020AB1E4 _020AB1F8: mov r0, r4 ldr r4, [r4, #0x8] - bl FUN_020ACD90 + bl vct_free_packet_buffer cmp r4, #0x0 bne _020AB1F8 _020AB20C: @@ -4918,7 +3022,7 @@ _020AB24C: mov r0, r4 bl FUN_020AB088 mov r0, r4 - bl FUN_020ACD90 + bl vct_free_packet_buffer mov r0, r5 bl FUN_020AB10C movs r4, r0 @@ -5067,14 +3171,14 @@ _020AB430: .word 0x00001FDF arm_func_start FUN_020AB434 FUN_020AB434: ; 0x020AB434 - ldr r1, _020AB440 ; =UNK_021CB7FC + ldr r1, _020AB440 ; =sCount ldr r0, [r1, r0, lsl #0x2] bx lr .balign 4 -_020AB440: .word UNK_021CB7FC +_020AB440: .word sCount - arm_func_start FUN_020AB444 -FUN_020AB444: ; 0x020AB444 + arm_func_start vct_pop_audio_queue +vct_pop_audio_queue: ; 0x020AB444 stmdb sp!, {r4,lr} mov r4, r0 bl OS_DisableInterrupts @@ -5085,7 +3189,7 @@ FUN_020AB444: ; 0x020AB444 cmp r2, #0x0 mov r12, r4, lsl #0x2 beq _020AB494 - ldr r1, _020AB4B4 ; =UNK_021CB7FC + ldr r1, _020AB4B4 ; =sCount ldr r2, [r2, #0x8] ldr r0, [r1, r12] sub r0, r0, #0x1 @@ -5099,16 +3203,16 @@ _020AB494: ldr r0, _020AB4B0 ; =UNK_021CB7EC ldr r0, [r0, #0x0] bl OS_RestoreInterrupts - ldr r0, _020AB4B4 ; =UNK_021CB7FC + ldr r0, _020AB4B4 ; =sCount ldr r0, [r0, r4, lsl #0x2] ldmia sp!, {r4,pc} .balign 4 _020AB4AC: .word UNK_021CB7F0 _020AB4B0: .word UNK_021CB7EC -_020AB4B4: .word UNK_021CB7FC +_020AB4B4: .word sCount - arm_func_start FUN_020AB4B8 -FUN_020AB4B8: ; 0x020AB4B8 + arm_func_start vct_top_audio_queue +vct_top_audio_queue: ; 0x020AB4B8 stmdb sp!, {r4,lr} mov r4, r0 bl OS_DisableInterrupts @@ -5198,14 +3302,14 @@ _020AB5D4: str r5, [r0, #0x4] str r5, [r1, r4, lsl #0x2] _020AB5F4: - ldr r2, _020AB62C ; =UNK_021CB7FC + ldr r2, _020AB62C ; =sCount 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, _020AB62C ; =sCount ldr r0, [r0, r4, lsl #0x2] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} @@ -5213,7 +3317,7 @@ _020AB5F4: _020AB620: .word UNK_021CB7F0 _020AB624: .word UNK_021CB7EC _020AB628: .word UNK_021CB808 -_020AB62C: .word UNK_021CB7FC +_020AB62C: .word sCount arm_func_start FUN_020AB630 FUN_020AB630: ; 0x020AB630 @@ -5226,7 +3330,7 @@ FUN_020AB630: ; 0x020AB630 mov r9, r7 str r0, [r1, #0x0] ldr r5, _020AB6BC ; =UNK_021CB7F0 - ldr r8, _020AB6C0 ; =UNK_021CB7FC + ldr r8, _020AB6C0 ; =sCount b _020AB69C _020AB65C: ldr r0, [r5, r7, lsl #0x2] @@ -5240,7 +3344,7 @@ _020AB66C: ldr r1, [r5, r6] cmp r1, #0x0 strne r4, [r1, #0x4] - bl FUN_020ACD90 + bl vct_free_packet_buffer ldr r0, [r5, r6] cmp r0, #0x0 bne _020AB66C @@ -5258,33 +3362,33 @@ _020AB69C: .balign 4 _020AB6B8: .word UNK_021CB7EC _020AB6BC: .word UNK_021CB7F0 -_020AB6C0: .word UNK_021CB7FC +_020AB6C0: .word sCount - arm_func_start FUN_020AB6C4 -FUN_020AB6C4: ; 0x020AB6C4 + arm_func_start vct_flush_audio_queue +vct_flush_audio_queue: ; 0x020AB6C4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 - bl FUN_020AB4B8 + bl vct_top_audio_queue movs r4, r0 beq _020AB6FC _020AB6DC: mov r0, r5 - bl FUN_020AB444 + bl vct_pop_audio_queue mov r0, r4 - bl FUN_020ACD90 + bl vct_free_packet_buffer mov r0, r5 - bl FUN_020AB4B8 + bl vct_top_audio_queue movs r4, r0 bne _020AB6DC _020AB6FC: - ldr r0, _020AB710 ; =UNK_021CB7FC + ldr r0, _020AB710 ; =sCount mov r1, #0x0 str r1, [r0, r5, lsl #0x2] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AB710: .word UNK_021CB7FC +_020AB710: .word sCount arm_func_start FUN_020AB714 FUN_020AB714: ; 0x020AB714 @@ -5295,7 +3399,7 @@ FUN_020AB714: ; 0x020AB714 ldr r3, _020AB754 ; =UNK_021CB808 mov lr, #0x0 str lr, [r3, r4, lsl #0x2] - ldr r2, _020AB758 ; =UNK_021CB7FC + ldr r2, _020AB758 ; =sCount ldr r12, [r3, r4, lsl #0x2] ldr r3, _020AB75C ; =UNK_021CB7F0 str r0, [r1, #0x0] @@ -5306,11 +3410,11 @@ FUN_020AB714: ; 0x020AB714 .balign 4 _020AB750: .word UNK_021CB7EC _020AB754: .word UNK_021CB808 -_020AB758: .word UNK_021CB7FC +_020AB758: .word sCount _020AB75C: .word UNK_021CB7F0 - arm_func_start FUN_020AB760 -FUN_020AB760: + arm_func_start vct_calc_jitter_and_skew +vct_calc_jitter_and_skew: stmdb sp!, {r4-r8,lr} mov r7, r0 ldr r2, [r7, #0x5c] @@ -5644,11 +3748,11 @@ FUN_020ABC0C: ; 0x020ABC0C mov r4, r1 cmp r0, #0x0 beq _020ABC2C - bl FUN_020ACD90 + bl vct_free_packet_buffer _020ABC2C: str r4, [r5, #0x3c] ldr r0, [r5, #0x34] - bl FUN_020AB444 + bl vct_pop_audio_queue add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} @@ -5659,7 +3763,7 @@ FUN_020ABC40: ; 0x020ABC40 ldr r0, [r4, #0x3c] cmp r0, #0x0 beq _020ABC60 - bl FUN_020ACD90 + bl vct_free_packet_buffer mov r0, #0x0 str r0, [r4, #0x3c] _020ABC60: @@ -5710,7 +3814,7 @@ _020ABCF4: .word 0x000134DF FUN_020ABCF8: ; 0x020ABCF8 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _020ABE34 ; =UNK_021CCD20 + ldr r3, _020ABE34 ; =__vct ldr r2, [r3, #0x10] cmp r2, #0x2 addne sp, sp, #0x4 @@ -5797,7 +3901,7 @@ _020ABE28: add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020ABE34: .word UNK_021CCD20 +_020ABE34: .word __vct _020ABE38: .word UNK_021CB824 _020ABE3C: .word UNK_021CB850 @@ -6068,7 +4172,7 @@ _020AC1E4: .word UNK_021CB838 arm_func_start FUN_020AC1E8 FUN_020AC1E8: - ldr r1, _020AC25C ; =UNK_021CCD20 + ldr r1, _020AC25C ; =__vct ldr r2, _020AC260 ; =UNK_021CB824 ldr r1, [r1, #0x10] ldr r3, [r2, #0x4] @@ -6103,7 +4207,7 @@ _020AC254: mov r0, #0x0 bx lr .balign 4 -_020AC25C: .word UNK_021CCD20 +_020AC25C: .word __vct _020AC260: .word UNK_021CB824 _020AC264: .word UNK_021CB850 @@ -6123,7 +4227,7 @@ _020AC28C: cmp r12, #0x0 mvnlt r0, #0x0 bxlt lr - ldr r1, _020AC2F8 ; =UNK_021CCD20 + ldr r1, _020AC2F8 ; =__vct ldr r1, [r1, #0x10] cmp r1, #0x1 ldrne r3, [r0, #0xc] @@ -6149,7 +4253,7 @@ _020AC2D0: movne r0, #0x1 bx lr .balign 4 -_020AC2F8: .word UNK_021CCD20 +_020AC2F8: .word __vct _020AC2FC: .word UNK_020FF788 _020AC300: .word UNK_020FF744 @@ -6199,7 +4303,7 @@ _020AC380: addlt sp, sp, #0x4 mvnlt r0, #0x0 ldmltia sp!, {r4-r5,pc} - ldr r0, _020AC44C ; =UNK_021CCD20 + ldr r0, _020AC44C ; =__vct ldr r0, [r0, #0x10] cmp r0, #0x1 ldrne r2, [r4, #0xc] @@ -6251,7 +4355,7 @@ _020AC440: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AC44C: .word UNK_021CCD20 +_020AC44C: .word __vct _020AC450: .word UNK_020FF700 _020AC454: .word UNK_020FF6BC @@ -6261,7 +4365,7 @@ FUN_020AC458: mov r3, #0x10 str r12, [r1, #0x0] strb r3, [r1, #0x5] - ldr r3, _020AC49C ; =UNK_021CCD20 + ldr r3, _020AC49C ; =__vct strb r2, [r1, #0x6] ldrb r2, [r3, #0x0] strb r2, [r1, #0x8] @@ -6275,7 +4379,7 @@ FUN_020AC458: bx lr .balign 4 _020AC498: .word 0x5F564354 -_020AC49C: .word UNK_021CCD20 +_020AC49C: .word __vct arm_func_start FUN_020AC4A0 FUN_020AC4A0: @@ -6368,7 +4472,7 @@ _020AC5B0: strb r2, [r12], #0x1 subs r3, r3, #0x1 bne _020AC5B0 - ldr r2, _020AC5E4 ; =UNK_021CCD20 + ldr r2, _020AC5E4 ; =__vct mov r3, #0x0 ldr r2, [r2, #0x10] str r2, [r0, #0x0] @@ -6376,7 +4480,7 @@ _020AC5B0: strb r1, [r0, #0x4] bx lr .balign 4 -_020AC5E4: .word UNK_021CCD20 +_020AC5E4: .word __vct arm_func_start FUN_020AC5E8 FUN_020AC5E8: @@ -6406,7 +4510,7 @@ FUN_020AC628: ; 0x020AC628 mov r10, r1 mov r9, #0x0 bl FUN_020AC6E4 - ldr r4, _020AC6DC ; =UNK_021CCD20 + ldr r4, _020AC6DC ; =__vct ldr r5, _020AC6E0 ; =UNK_021CB818 mov r8, r9 mov r7, #0x1 @@ -6449,7 +4553,7 @@ _020AC6C8: add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} .balign 4 -_020AC6DC: .word UNK_021CCD20 +_020AC6DC: .word __vct _020AC6E0: .word UNK_021CB818 arm_func_start FUN_020AC6E4 @@ -6512,7 +4616,7 @@ FUN_020AC790: ; 0x020AC790 cmp r1, #0x20 movcs r0, #0x0 ldmcsia sp!, {r4,pc} - ldr r0, _020AC7F4 ; =UNK_021CCD20 + ldr r0, _020AC7F4 ; =__vct ldrb r0, [r0, #0x0] cmp r1, r0 moveq r0, #0x0 @@ -6533,11 +4637,11 @@ FUN_020AC790: ; 0x020AC790 str r4, [r1, #0x4] ldmia sp!, {r4,pc} .balign 4 -_020AC7F4: .word UNK_021CCD20 +_020AC7F4: .word __vct _020AC7F8: .word UNK_021CB824 - arm_func_start FUN_020AC7FC -FUN_020AC7FC: + arm_func_start vct_handle_ssp +vct_handle_ssp: stmdb sp!, {lr} sub sp, sp, #0x4 cmp r2, #0x10 @@ -6547,7 +4651,7 @@ FUN_020AC7FC: ldrb r2, [r1, #0x8] cmp r2, r0 bne _020AC834 - ldr r0, _020AC894 ; =UNK_021CCD20 + ldr r0, _020AC894 ; =__vct ldrb r12, [r1, #0x9] ldrb r2, [r0, #0x0] cmp r12, r2 @@ -6581,14 +4685,14 @@ _020AC880: add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AC894: .word UNK_021CCD20 +_020AC894: .word __vct - arm_func_start FUN_020AC898 -FUN_020AC898: ; 0x020AC898 + arm_func_start vct_check_timeout +vct_check_timeout: ; 0x020AC898 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 bl OS_GetTick - ldr r2, _020AC950 ; =UNK_021CCD20 + ldr r2, _020AC950 ; =__vct ldr r3, [r2, #0x10] cmp r3, #0x2 addne sp, sp, #0x4 @@ -6621,7 +4725,7 @@ FUN_020AC898: ; 0x020AC898 str r12, [r1, #0x2c] str r12, [r1, #0x38] bl FUN_020AC5E8 - ldr r1, _020AC950 ; =UNK_021CCD20 + ldr r1, _020AC950 ; =__vct ldr r0, _020AC95C ; =UNK_021CB824 ldr r3, [r1, #0x8] ldrb r0, [r0, #0x30] @@ -6632,14 +4736,14 @@ FUN_020AC898: ; 0x020AC898 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AC950: .word UNK_021CCD20 +_020AC950: .word __vct _020AC954: .word UNK_021CB81C _020AC958: .word UNK_02106490 _020AC95C: .word UNK_021CB824 _020AC960: .word UNK_021CB850 - arm_func_start FUN_020AC964 -FUN_020AC964: ; 0x020AC964 + arm_func_start vct_finish_ssp +vct_finish_ssp: ; 0x020AC964 ldr r0, _020AC978 ; =UNK_021CB824 mov r1, #0x0 str r1, [r0, #0x4] @@ -6708,7 +4812,7 @@ _020ACA34: str r5, [r0, #-0x4] ldr r2, _020ACA98 ; =UNK_021CB818 ldr r1, _020ACA9C ; =UNK_021CB814 - ldr r0, _020ACAA0 ; =UNK_021CCD20 + ldr r0, _020ACAA0 ; =__vct ldr lr, _020ACAA4 ; =OS_GetTick ldr ip, _020ACAA8 ; =0x5D588B65 ldr r4, _020ACAAC ; =0x00269EC3 @@ -6728,7 +4832,7 @@ _020ACA90: .word UNK_021CB850 _020ACA94: .word UNK_021CB838 _020ACA98: .word UNK_021CB818 _020ACA9C: .word UNK_021CB814 -_020ACAA0: .word UNK_021CCD20 +_020ACAA0: .word __vct _020ACAA4: .word OS_GetTick _020ACAA8: .word 0x5D588B65 _020ACAAC: .word 0x00269EC3 @@ -6737,7 +4841,7 @@ _020ACAAC: .word 0x00269EC3 FUN_020ACAB0: ; 0x020ACAB0 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r2, _020ACADC ; =UNK_021CCD20 + ldr r2, _020ACADC ; =__vct ldr r2, [r2, #0x10] cmp r2, #0x2 addeq sp, sp, #0x4 @@ -6747,7 +4851,7 @@ FUN_020ACAB0: ; 0x020ACAB0 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020ACADC: .word UNK_021CCD20 +_020ACADC: .word __vct arm_func_start FUN_020ACAE0 FUN_020ACAE0: @@ -6775,7 +4879,7 @@ _020ACB1C: bl FUN_020AC458 cmp r6, #0x0 bne _020ACB80 - ldr r0, _020ACB9C ; =UNK_021CCD20 + ldr r0, _020ACB9C ; =__vct ldr r0, [r0, #0x10] cmp r0, #0x1 bne _020ACB68 @@ -6803,13 +4907,13 @@ _020ACB80: movne r0, #0x0 ldmia sp!, {r4-r6,pc} .balign 4 -_020ACB9C: .word UNK_021CCD20 +_020ACB9C: .word __vct arm_func_start FUN_020ACBA0 FUN_020ACBA0: ; 0x020ACBA0 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r2, _020ACBCC ; =UNK_021CCD20 + ldr r2, _020ACBCC ; =__vct ldr r2, [r2, #0x10] cmp r2, #0x2 addeq sp, sp, #0x4 @@ -6819,7 +4923,7 @@ FUN_020ACBA0: ; 0x020ACBA0 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020ACBCC: .word UNK_021CCD20 +_020ACBCC: .word __vct arm_func_start FUN_020ACBD0 FUN_020ACBD0: @@ -6832,7 +4936,7 @@ FUN_020ACBD0: cmp r3, #0x10 mvncc r0, #0x0 ldmccia sp!, {r4-r6,pc} - ldr r1, _020ACC80 ; =UNK_021CCD20 + ldr r1, _020ACC80 ; =__vct ldr r1, [r1, #0xc] cmp r1, #0x1 mvneq r0, #0x2 @@ -6856,7 +4960,7 @@ _020ACC20: cmp r0, #0x0 mvneq r0, #0x2 ldmeqia sp!, {r4-r6,pc} - ldr r0, _020ACC80 ; =UNK_021CCD20 + ldr r0, _020ACC80 ; =__vct ldr r0, [r0, #0x10] cmp r0, #0x1 bne _020ACC78 @@ -6871,7 +4975,7 @@ _020ACC78: mov r0, #0x0 ldmia sp!, {r4-r6,pc} .balign 4 -_020ACC80: .word UNK_021CCD20 +_020ACC80: .word __vct arm_func_start FUN_020ACC84 FUN_020ACC84: ; 0x020ACC84 @@ -6884,7 +4988,7 @@ FUN_020ACC84: ; 0x020ACC84 ldr r12, [r2, #0x4] moveq r0, lr ldmeqia sp!, {pc} - ldr r1, _020ACD4C ; =UNK_021CCD20 + ldr r1, _020ACD4C ; =__vct ldr r1, [r1, #0x10] cmp r1, #0x2 bne _020ACCD0 @@ -6931,14 +5035,14 @@ _020ACD3C: ldmia sp!, {pc} .balign 4 _020ACD48: .word UNK_021CB824 -_020ACD4C: .word UNK_021CCD20 +_020ACD4C: .word __vct _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, _020ACD8C ; =__vct ldr r1, [r1, #0x10] cmp r1, #0x0 beq _020ACD74 @@ -6953,10 +5057,10 @@ _020ACD80: add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020ACD8C: .word UNK_021CCD20 +_020ACD8C: .word __vct - arm_func_start FUN_020ACD90 -FUN_020ACD90: + arm_func_start vct_free_packet_buffer +vct_free_packet_buffer: stmdb sp!, {r4,lr} mov r4, r0 bl OS_DisableInterrupts @@ -6973,8 +5077,8 @@ FUN_020ACD90: _020ACDC0: .word UNK_021CB86C _020ACDC4: .word UNK_021CB868 - arm_func_start FUN_020ACDC8 -FUN_020ACDC8: ; 0x020ACDC8 + arm_func_start vct_alloc_packet_buffer +vct_alloc_packet_buffer: ; 0x020ACDC8 stmdb sp!, {r4,lr} mov r4, #0x0 bl OS_DisableInterrupts @@ -6995,8 +5099,8 @@ FUN_020ACDC8: ; 0x020ACDC8 _020ACE08: .word UNK_021CB86C _020ACE0C: .word UNK_021CB868 - arm_func_start FUN_020ACE10 -FUN_020ACE10: + arm_func_start vct_cleanup_packet_buffer +vct_cleanup_packet_buffer: ldr r1, _020ACE28 ; =UNK_021CB86C mov r2, #0x0 ldr r0, _020ACE2C ; =UNK_021CB870 @@ -7582,8 +5686,10 @@ _020AD610: .word 0x04000290 _020AD614: .word 0x04000298 _020AD618: .word 0x040002A0 - arm_func_start FUN_020AD61C -FUN_020AD61C: +; libvct.a:mixer.o + + arm_func_start vct_mix_audio +vct_mix_audio: stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 movs lr, r3, lsr #0x1 @@ -7657,8 +5763,10 @@ _020AD704: .balign 4 _020AD720: .word 0x00007FFF - arm_func_start FUN_020AD724 -FUN_020AD724: +; libvct.a:vct_main.o + + arm_func_start VCTi_HandleData +VCTi_HandleData: stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 movs r6, r1 @@ -7674,11 +5782,11 @@ FUN_020AD724: addne sp, sp, #0x4 movne r0, #0x2 ldmneia sp!, {r4-r7,pc} - ldr r0, _020AD828 ; =UNK_021CCD20 + ldr r0, _020AD828 ; =__vct ldr r0, [r0, #0x10] cmp r0, #0x0 beq _020AD780 - ldr r0, _020AD82C ; =UNK_021CCD1C + ldr r0, _020AD82C ; =initialized ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020AD78C @@ -7695,7 +5803,7 @@ _020AD78C: and r2, r3, #0xf0 cmp r2, #0x40 bne _020AD7E0 - ldr r2, _020AD830 ; =UNK_021CCD18 + ldr r2, _020AD830 ; =sRecvPerFrame mov r3, r0 ldr r4, [r2, #0x0] mov r0, r7 @@ -7704,7 +5812,7 @@ _020AD78C: str r1, [sp, #0x0] mov r1, r6 mov r2, r5 - bl FUN_020AA2A0 + bl vct_handle_audio add sp, sp, #0x4 mov r0, #0x0 ldmia sp!, {r4-r7,pc} @@ -7718,7 +5826,7 @@ _020AD7F0: mov r1, r6 mov r2, r5 mov r3, r4 - bl FUN_020AC7FC + bl vct_handle_ssp cmp r0, #0x0 movne r0, #0x1 add sp, sp, #0x4 @@ -7730,17 +5838,17 @@ _020AD818: ldmia sp!, {r4-r7,pc} .balign 4 _020AD824: .word 0x5F564354 -_020AD828: .word UNK_021CCD20 -_020AD82C: .word UNK_021CCD1C -_020AD830: .word UNK_021CCD18 +_020AD828: .word __vct +_020AD82C: .word initialized +_020AD830: .word sRecvPerFrame - arm_func_start FUN_020AD834 -FUN_020AD834: ; 0x020AD834 + arm_func_start VCT_HandleData +VCT_HandleData: ; 0x020AD834 stmdb sp!, {r4,lr} sub sp, sp, #0x8 add r3, sp, #0x0 mov r4, r0 - bl FUN_020AD724 + bl VCTi_HandleData cmp r0, #0x0 beq _020AD898 cmp r0, #0x1 @@ -7749,7 +5857,7 @@ FUN_020AD834: ; 0x020AD834 beq _020AD88C b _020AD898 _020AD864: - ldr r0, _020AD8A4 ; =UNK_021CCD20 + ldr r0, _020AD8A4 ; =__vct ldr r1, [sp, #0x0] ldr r2, [sp, #0x4] ldr r3, [r0, #0x8] @@ -7768,13 +5876,13 @@ _020AD898: add sp, sp, #0x8 ldmia sp!, {r4,pc} .balign 4 -_020AD8A4: .word UNK_021CCD20 +_020AD8A4: .word __vct - arm_func_start FUN_020AD8A8 -FUN_020AD8A8: ; 0x020AD8A8 + arm_func_start VCT_Main +VCT_Main: ; 0x020AD8A8 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020AD8FC ; =UNK_021CCD1C + ldr r0, _020AD8FC ; =initialized ldr r0, [r0, #0x0] cmp r0, #0x0 addeq sp, sp, #0x4 @@ -7785,41 +5893,41 @@ FUN_020AD8A8: ; 0x020AD8A8 str r1, [r0, #0x0] ands r0, r1, #0xf bne _020AD8E0 - bl FUN_020AC898 + bl vct_check_timeout _020AD8E0: - bl FUN_020AA0A4 + bl vct_flush_send_buffer cmp r0, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {pc} - bl FUN_020AA1CC + bl vct_decode_audio_buffer add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AD8FC: .word UNK_021CCD1C -_020AD900: .word UNK_021CCD14 +_020AD8FC: .word initialized +_020AD900: .word UNK_021CCD14 ; count$7906 - arm_func_start FUN_020AD904 -FUN_020AD904: ; 0x020AD904 + arm_func_start VCT_Cleanup +VCT_Cleanup: ; 0x020AD904 stmdb sp!, {lr} sub sp, sp, #0x4 - bl FUN_020AAF44 - bl FUN_020AC964 - bl FUN_020ACE10 - ldr r1, _020AD934 ; =UNK_021CCD20 + bl vct_finish_audio + bl vct_finish_ssp + bl vct_cleanup_packet_buffer + ldr r1, _020AD934 ; =__vct mov r2, #0x0 - ldr r0, _020AD938 ; =UNK_021CCD1C + ldr r0, _020AD938 ; =initialized 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 +_020AD934: .word __vct +_020AD938: .word initialized .extern _SDK_AbiossolibVCT - arm_func_start FUN_020AD93C -FUN_020AD93C: ; 0x020AD93C + arm_func_start VCT_Init +VCT_Init: ; 0x020AD93C stmdb sp!, {r4,lr} mov r4, r0 ldr r0, _020ADA78 ; =_SDK_AbiossolibVCT @@ -7827,7 +5935,7 @@ FUN_020AD93C: ; 0x020AD93C cmp r4, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4,pc} - ldr r0, _020ADA7C ; =UNK_021CCD1C + ldr r0, _020ADA7C ; =initialized ldr r0, [r0, #0x0] cmp r0, #0x0 movne r0, #0x1 @@ -7860,12 +5968,12 @@ _020AD9BC: adds r0, r1, r0, ror #0x1b movne r0, #0x0 ldmneia sp!, {r4,pc} - ldr r0, _020ADA80 ; =UNK_021CCD20 + ldr r0, _020ADA80 ; =__vct mov r1, #0x0 mov r2, #0x18 bl MI_CpuFill8 ldr r2, [r4, #0x18] - ldr r1, _020ADA80 ; =UNK_021CCD20 + ldr r1, _020ADA80 ; =__vct mov r0, #0x0 str r2, [r1, #0x4] ldr r2, [r4, #0x1c] @@ -7882,7 +5990,7 @@ _020AD9BC: bl FUN_020ACE30 cmp r0, #0x0 bne _020ADA34 - bl FUN_020ACE10 + bl vct_cleanup_packet_buffer mov r0, #0x0 ldmia sp!, {r4,pc} _020ADA34: @@ -7890,26205 +5998,23 @@ _020ADA34: bl FUN_020AC97C cmp r0, #0x0 bne _020ADA50 - bl FUN_020ACE10 + bl vct_cleanup_packet_buffer mov r0, #0x0 ldmia sp!, {r4,pc} _020ADA50: bl FUN_020AAF58 cmp r0, #0x0 - ldrne r1, _020ADA7C ; =UNK_021CCD1C + ldrne r1, _020ADA7C ; =initialized movne r0, #0x1 strne r0, [r1, #0x0] ldmneia sp!, {r4,pc} - bl FUN_020AC964 - bl FUN_020ACE10 + bl vct_finish_ssp + bl vct_cleanup_packet_buffer mov r0, #0x0 ldmia sp!, {r4,pc} .balign 4 _020ADA78: .word _SDK_AbiossolibVCT -_020ADA7C: .word UNK_021CCD1C -_020ADA80: .word UNK_021CCD20 - - 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} +_020ADA7C: .word initialized +_020ADA80: .word __vct - 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 - - arm_func_start GXS_LoadOBJ_2 -GXS_LoadOBJ_2: - ldr ip, _020AF038 ; =GXS_LoadOBJ - bx r12 - .balign 4 -_020AF038: .word GXS_LoadOBJ - - arm_func_start GXS_LoadOAM_2 -GXS_LoadOAM_2: ; 0x020AF03C - ldr ip, _020AF044 ; =GXS_LoadOAM - bx r12 - .balign 4 -_020AF044: .word GXS_LoadOAM - - arm_func_start FUN_020AF048 -FUN_020AF048: ; 0x020AF048 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF074 -FUN_020AF074: ; 0x020AF074 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GXS_LoadBGPltt_2 -GXS_LoadBGPltt_2: ; 0x020AF0A0 - ldr ip, _020AF0A8 ; =GXS_LoadBGPltt - bx r12 - .balign 4 -_020AF0A8: .word GXS_LoadBGPltt - - arm_func_start GXS_LoadOBJPltt_2 -GXS_LoadOBJPltt_2: ; 0x020AF0AC - ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt - bx r12 - .balign 4 -_020AF0B4: .word GXS_LoadOBJPltt - - arm_func_start GXS_LoadBG3Scr_3 -GXS_LoadBG3Scr_3: ; 0x020AF0B8 - ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0C0: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_3 -GXS_LoadBG2Scr_3: ; 0x020AF0C4 - ldr ip, _020AF0CC ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0CC: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG3Scr_2 -GXS_LoadBG3Scr_2: ; 0x020AF0D0 - ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0D8: .word GXS_LoadBG3Scr - - arm_func_start GXS_LoadBG2Scr_2 -GXS_LoadBG2Scr_2: ; 0x020AF0DC - ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0E4: .word GXS_LoadBG2Scr - - arm_func_start GXS_LoadBG1Scr_2 -GXS_LoadBG1Scr_2: ; 0x020AF0E8 - ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr - bx r12 - .balign 4 -_020AF0F0: .word GXS_LoadBG1Scr - - arm_func_start GXS_LoadBG0Scr_2 -GXS_LoadBG0Scr_2: ; 0x020AF0F4 - ldr ip, _020AF0FC ; =GXS_LoadBG0Scr - bx r12 - .balign 4 -_020AF0FC: .word GXS_LoadBG0Scr - - arm_func_start GXS_LoadBG3Char_2 -GXS_LoadBG3Char_2: ; 0x020AF100 - ldr ip, _020AF108 ; =GXS_LoadBG3Char - bx r12 - .balign 4 -_020AF108: .word GXS_LoadBG3Char - - arm_func_start GXS_LoadBG2Char_2 -GXS_LoadBG2Char_2: ; 0x020AF10C - ldr ip, _020AF114 ; =GXS_LoadBG2Char - bx r12 - .balign 4 -_020AF114: .word GXS_LoadBG2Char - - arm_func_start GXS_LoadBG1Char_2 -GXS_LoadBG1Char_2: ; 0x020AF118 - ldr ip, _020AF120 ; =GXS_LoadBG1Char - bx r12 - .balign 4 -_020AF120: .word GXS_LoadBG1Char - - arm_func_start GXS_LoadBG0Char_2 -GXS_LoadBG0Char_2: ; 0x020AF124 - ldr ip, _020AF12C ; =GXS_LoadBG0Char - bx r12 - .balign 4 -_020AF12C: .word GXS_LoadBG0Char - - arm_func_start GX_LoadOBJ_2 -GX_LoadOBJ_2: ; 0x020AF130 - ldr ip, _020AF138 ; =GX_LoadOBJ - bx r12 - .balign 4 -_020AF138: .word GX_LoadOBJ - - arm_func_start GX_LoadOAM_2 -GX_LoadOAM_2: ; 0x020AF13C - ldr ip, _020AF144 ; =GX_LoadOAM - bx r12 - .balign 4 -_020AF144: .word GX_LoadOAM - - arm_func_start FUN_020AF148 -FUN_020AF148: ; 0x020AF148 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF174 -FUN_020AF174: ; 0x020AF174 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start GX_LoadBGPltt_2 -GX_LoadBGPltt_2: ; 0x020AF1A0 - ldr ip, _020AF1A8 ; =GX_LoadBGPltt - bx r12 - .balign 4 -_020AF1A8: .word GX_LoadBGPltt - - arm_func_start GX_LoadOBJPltt_2 -GX_LoadOBJPltt_2: ; 0x020AF1AC - ldr ip, _020AF1B4 ; =GX_LoadOBJPltt - bx r12 - .balign 4 -_020AF1B4: .word GX_LoadOBJPltt - - arm_func_start GX_LoadBG3Scr_3 -GX_LoadBG3Scr_3: ; 0x020AF1B8 - ldr ip, _020AF1C0 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1C0: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_3 -GX_LoadBG2Scr_3: ; 0x020AF1C4 - ldr ip, _020AF1CC ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1CC: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG3Scr_2 -GX_LoadBG3Scr_2: ; 0x020AF1D0 - ldr ip, _020AF1D8 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1D8: .word GX_LoadBG3Scr - - arm_func_start GX_LoadBG2Scr_2 -GX_LoadBG2Scr_2: ; 0x020AF1DC - ldr ip, _020AF1E4 ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1E4: .word GX_LoadBG2Scr - - arm_func_start GX_LoadBG1Scr_2 -GX_LoadBG1Scr_2: ; 0x020AF1E8 - ldr ip, _020AF1F0 ; =GX_LoadBG1Scr - bx r12 - .balign 4 -_020AF1F0: .word GX_LoadBG1Scr - - arm_func_start GX_LoadBG0Scr_2 -GX_LoadBG0Scr_2: ; 0x020AF1F4 - ldr ip, _020AF1FC ; =GX_LoadBG0Scr - bx r12 - .balign 4 -_020AF1FC: .word GX_LoadBG0Scr - - arm_func_start GX_LoadBG3Char_2 -GX_LoadBG3Char_2: ; 0x020AF200 - ldr ip, _020AF208 ; =GX_LoadBG3Char - bx r12 - .balign 4 -_020AF208: .word GX_LoadBG3Char - - arm_func_start GX_LoadBG2Char_2 -GX_LoadBG2Char_2: ; 0x020AF20C - ldr ip, _020AF214 ; =GX_LoadBG2Char - bx r12 - .balign 4 -_020AF214: .word GX_LoadBG2Char - - arm_func_start GX_LoadBG1Char_2 -GX_LoadBG1Char_2: ; 0x020AF218 - ldr ip, _020AF220 ; =GX_LoadBG1Char - bx r12 - .balign 4 -_020AF220: .word GX_LoadBG1Char - - arm_func_start GX_LoadBG0Char_2 -GX_LoadBG0Char_2: ; 0x020AF224 - ldr ip, _020AF22C ; =GX_LoadBG0Char - bx r12 - .balign 4 -_020AF22C: .word GX_LoadBG0Char - - arm_func_start FUN_020AF230 -FUN_020AF230: ; 0x020AF230 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageDepth - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF25C -FUN_020AF25C: ; 0x020AF25C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageColor - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AF288 -FUN_020AF288: ; 0x020AF288 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTexPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2B4 -FUN_020AF2B4: ; 0x020AF2B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTex - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTex - bl GX_EndLoadTex - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF2E0 -FUN_020AF2E0: ; 0x020AF2E0 - ldrh r0, [r0, #0xc] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF2F4 -FUN_020AF2F4: ; 0x020AF2F4 - ldrh r1, [r0, #0xc] - ldr r0, [r0, #0x4] - cmp r1, r0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_020AF30C -FUN_020AF30C: ; 0x020AF30C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r0 - add r0, r1, #0x1 - ldr r1, [r2, #0x4] - bl _u32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF334 -FUN_020AF334: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - add r3, r2, r3 - str r2, [sp, #0x0] - str r2, [sp, #0x8] - str r3, [sp, #0x4] - str r3, [sp, #0xc] - ldr r3, [r0, #0x0] - add r12, sp, #0x0 - cmp r3, #0x0 - beq _020AF418 - mov r6, #0x0 -_020AF364: - ldr r5, [r3, #0x0] - ldr r4, [r12, #0x4] - ldr r2, [r3, #0xc] - cmp r5, r4 - bne _020AF3B8 - ldr r4, [r3, #0x4] - add r4, r5, r4 - str r4, [sp, #0xc] - ldr r4, [r3, #0x8] - cmp r4, #0x0 - strne r2, [r4, #0xc] - streq r2, [r0, #0x0] - cmp r2, #0x0 - strne r4, [r2, #0x8] - ldr r4, [r1, #0x0] - cmp r4, #0x0 - strne r3, [r4, #0x8] - ldr r4, [r1, #0x0] - str r4, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF3B8: - ldr r5, [r3, #0x0] - ldr lr, [r3, #0x4] - ldr r4, [r12, #0x0] - add lr, r5, lr - cmp r4, lr - bne _020AF40C - str r5, [sp, #0x8] - ldr r5, [r3, #0x8] - ldr r4, [r3, #0xc] - cmp r5, #0x0 - strne r4, [r5, #0xc] - streq r4, [r0, #0x0] - cmp r4, #0x0 - strne r5, [r4, #0x8] - ldr lr, [r1, #0x0] - cmp lr, #0x0 - strne r3, [lr, #0x8] - ldr lr, [r1, #0x0] - str lr, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF40C: - mov r3, r2 - cmp r2, #0x0 - bne _020AF364 -_020AF418: - ldr r4, [r1, #0x0] - cmp r4, #0x0 - ldrne r2, [r4, #0xc] - strne r2, [r1, #0x0] - cmp r4, #0x0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [sp, #0x8] - mov r1, #0x0 - str r2, [r4, #0x0] - ldr r3, [sp, #0xc] - ldr r2, [sp, #0x8] - sub r2, r3, r2 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - strne r4, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [r4, #0xc] - str r1, [r4, #0x8] - str r4, [r0, #0x0] - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AF488 -FUN_020AF488: - stmdb sp!, {r4-r10,lr} - ldr r4, [r0, #0x0] - ldr r9, [sp, #0x20] - cmp r4, #0x0 - mov r5, #0x0 - beq _020AF4EC - sub r12, r9, #0x1 - mvn lr, r12 -_020AF4A8: - cmp r9, #0x1 - ldrls r8, [r4, #0x0] - movls r6, r5 - movls r7, r3 - bls _020AF4D0 - ldr r7, [r4, #0x0] - add r6, r7, r12 - and r8, lr, r6 - sub r6, r8, r7 - add r7, r3, r6 -_020AF4D0: - ldr r10, [r4, #0x4] - cmp r10, r7 - movcs r5, r4 - bhs _020AF4EC - ldr r4, [r4, #0xc] - cmp r4, #0x0 - bne _020AF4A8 -_020AF4EC: - cmp r5, #0x0 - beq _020AF5B8 - cmp r6, #0x0 - beq _020AF54C - ldr r9, [r1, #0x0] - cmp r9, #0x0 - ldrne r3, [r9, #0xc] - strne r3, [r1, #0x0] - cmp r9, #0x0 - beq _020AF5B8 - ldr r4, [r5, #0x0] - mov r3, #0x0 - str r4, [r9, #0x0] - str r6, [r9, #0x4] - str r3, [r9, #0x8] - str r3, [r9, #0xc] - ldr r3, [r0, #0x0] - cmp r3, #0x0 - strne r9, [r3, #0x8] - ldr r4, [r0, #0x0] - mov r3, #0x0 - str r4, [r9, #0xc] - str r3, [r9, #0x8] - str r9, [r0, #0x0] -_020AF54C: - ldr r3, [r5, #0x4] - sub r3, r3, r7 - str r3, [r5, #0x4] - ldr r3, [r5, #0x0] - add r3, r3, r7 - str r3, [r5, #0x0] - ldr r3, [r5, #0x4] - cmp r3, #0x0 - bne _020AF5AC - ldr r4, [r5, #0x8] - ldr r3, [r5, #0xc] - cmp r4, #0x0 - strne r3, [r4, #0xc] - streq r3, [r0, #0x0] - cmp r3, #0x0 - strne r4, [r3, #0x8] - ldr r0, [r1, #0x0] - cmp r0, #0x0 - strne r5, [r0, #0x8] - ldr r3, [r1, #0x0] - mov r0, #0x0 - str r3, [r5, #0xc] - str r0, [r5, #0x8] - str r5, [r1, #0x0] -_020AF5AC: - str r8, [r2, #0x0] - mov r0, #0x1 - ldmia sp!, {r4-r10,pc} -_020AF5B8: - mov r0, #0x0 - str r0, [r2, #0x0] - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020AF5C4 -FUN_020AF5C4: - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [sp, #0x0] - bl FUN_020AF488 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF5E0 -FUN_020AF5E0: ; 0x020AF5E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x0] - cmp lr, #0x0 - ldrne r12, [lr, #0xc] - strne r12, [r1, #0x0] - cmp lr, #0x0 - beq _020AF640 - str r2, [lr, #0x0] - str r3, [lr, #0x4] - mov r1, #0x0 - str r1, [lr, #0x8] - str r1, [lr, #0xc] - ldr r1, [r0, #0x0] - add sp, sp, #0x4 - cmp r1, #0x0 - strne lr, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [lr, #0xc] - str r1, [lr, #0x8] - str lr, [r0, #0x0] - mov r0, #0x1 - ldmia sp!, {pc} -_020AF640: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AF64C -FUN_020AF64C: ; 0x020AF64C - stmdb sp!, {r4,lr} - subs lr, r1, #0x1 - mov r2, #0x0 - beq _020AF684 - mov r4, r0 -_020AF660: - add r12, r2, #0x1 - add r2, r0, r2, lsl #0x4 - add r3, r0, r12, lsl #0x4 - str r3, [r2, #0xc] - str r4, [r3, #0x8] - mov r2, r12 - cmp r12, lr - add r4, r4, #0x10 - blo _020AF660 -_020AF684: - mov r2, #0x0 - str r2, [r0, #0x8] - add r1, r0, r1, lsl #0x4 - str r2, [r1, #-0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AF698 -FUN_020AF698: ; 0x020AF698 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020AF6A4 -FUN_020AF6A4: ; 0x020AF6A4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x30 - ldr r6, _020AF884 ; =UNK_020FF864 - add r5, sp, #0x0 - ldmia r6!, {r0-r3} - mov r12, r5 - stmia r5!, {r0-r3} - ldmia r6!, {r0-r3} - stmia r5!, {r0-r3} - ldr r4, _020AF888 ; =UNK_021CCD6C - ldmia r6, {r0-r3} - stmia r5, {r0-r3} - ldr lr, [r4, #0x10] - ldr r1, [r4, #0xc] - add r0, lr, lr, lsr #0x1 - mov r4, lr, lsr #0x1 - sub r0, r1, r0 - mov r3, #0x0 -_020AF6EC: - cmp r3, #0x0 - beq _020AF6FC - cmp r3, #0x2 - bne _020AF734 -_020AF6FC: - ldr r2, [r12, #0x0] - cmp r2, #0x0 - beq _020AF734 - cmp lr, #0x0 - beq _020AF734 - ldr r1, [r12, #0x8] - cmp r2, lr - movhi r2, lr - add r1, r1, r2 - str r1, [r12, #0x8] - ldr r1, [r12, #0x0] - sub lr, lr, r2 - sub r1, r1, r2 - str r1, [r12, #0x0] -_020AF734: - add r3, r3, #0x1 - cmp r3, #0x4 - add r12, r12, #0xc - blo _020AF6EC - ldr r1, [sp, #0xc] - add r5, sp, #0x0 - sub r1, r1, r4 - str r1, [sp, #0xc] - mov r3, #0x0 -_020AF758: - ldr r2, [r5, #0x0] - cmp r2, #0x0 - beq _020AF790 - cmp r0, #0x0 - beq _020AF790 - ldr r1, [r5, #0x4] - cmp r2, r0 - movhi r2, r0 - add r1, r1, r2 - str r1, [r5, #0x4] - ldr r1, [r5, #0x0] - sub r0, r0, r2 - sub r1, r1, r2 - str r1, [r5, #0x0] -_020AF790: - add r3, r3, #0x1 - cmp r3, #0x4 - add r5, r5, #0xc - blo _020AF758 - ldr r0, _020AF888 ; =UNK_021CCD6C - bl FUN_020AF698 - ldr r0, _020AF88C ; =UNK_021CCD70 - bl FUN_020AF698 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, [r0, #0x18] - ldr r0, [r0, #0x14] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r3, [sp, #0x8] - ldr r1, _020AF888 ; =UNK_021CCD6C - cmp r3, #0x0 - str r0, [r1, #0x8] - beq _020AF7E8 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x0 - bl FUN_020AF5E0 -_020AF7E8: - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x8] - cmp r3, #0x0 - beq _020AF804 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF804: - ldr r3, [sp, #0x20] - cmp r3, #0x0 - beq _020AF820 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x40000 - bl FUN_020AF5E0 -_020AF820: - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x20] - cmp r3, #0x0 - add r2, r0, #0x40000 - beq _020AF840 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF840: - ldr r3, [sp, #0x28] - cmp r3, #0x0 - beq _020AF85C - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x60000 - bl FUN_020AF5E0 -_020AF85C: - ldr r3, [sp, #0x10] - cmp r3, #0x0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - add r2, r4, #0x20000 - bl FUN_020AF5E0 - add sp, sp, #0x30 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AF884: .word UNK_020FF864 -_020AF888: .word UNK_021CCD6C -_020AF88C: .word UNK_021CCD70 -_020AF890: .word UNK_021CCD74 - - arm_func_start FUN_020AF894 -FUN_020AF894: ; 0x020AF894 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020AF908 ; =0x7FFF0000 - ldr r1, _020AF90C ; =0x0000FFFF - and r2, r0, r2 - and r3, r0, r1 - mov r1, r2, lsr #0x10 - and r0, r0, #0x80000000 - mov r2, r3, lsl #0x3 - movs r3, r1, lsl #0x4 - mov r0, r0, lsr #0x1f - beq _020AF8FC - cmp r0, #0x0 - beq _020AF8DC - ldr r0, _020AF910 ; =UNK_021CCD70 - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 - b _020AF8E8 -_020AF8DC: - ldr r0, _020AF918 ; =UNK_021CCD6C - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 -_020AF8E8: - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x4 - moveq r0, #0x1 - ldmia sp!, {pc} -_020AF8FC: - mov r0, #0x2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AF908: .word 0x7FFF0000 -_020AF90C: .word 0x0000FFFF -_020AF910: .word UNK_021CCD70 -_020AF914: .word UNK_021CCD74 -_020AF918: .word UNK_021CCD6C - - arm_func_start FUN_020AF91C -FUN_020AF91C: ; 0x020AF91C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - moveq r5, #0x10 - addne r0, r0, #0xf - bicne r5, r0, #0xf - ldr r0, _020AF9B0 ; =0x0007FFF0 - mov r4, r1 - cmp r5, r0 - addcs sp, sp, #0x4 - movcs r0, #0x0 - ldmcsia sp!, {r4-r5,pc} - cmp r4, #0x0 - beq _020AF96C - ldr r0, _020AF9B4 ; =UNK_021CCD70 - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 - b _020AF980 -_020AF96C: - ldr r0, _020AF9BC ; =UNK_021CCD6C - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 -_020AF980: - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - ldr r1, [sp, #0x0] - ldr r0, _020AF9C0 ; =0x0000FFFF - mov r2, r5, lsr #0x4 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r4, lsl #0x1f - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF9B0: .word 0x0007FFF0 -_020AF9B4: .word UNK_021CCD70 -_020AF9B8: .word UNK_021CCD74 -_020AF9BC: .word UNK_021CCD6C -_020AF9C0: .word 0x0000FFFF - - arm_func_start FUN_020AF9C4 -FUN_020AF9C4: ; 0x020AF9C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr ip, _020AFA14 ; =UNK_021CCD6C - str r0, [r12, #0xc] - str r1, [r12, #0x10] - str r2, [r12, #0x14] - str r3, [r12, #0x18] - bl FUN_020AF6A4 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r3, _020AFA18 ; =FUN_020AF91C - ldr r1, _020AFA1C ; =UNK_021064B8 - ldr r2, _020AFA20 ; =FUN_020AF894 - ldr r0, _020AFA24 ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA14: .word UNK_021CCD6C -_020AFA18: .word FUN_020AF91C -_020AFA1C: .word UNK_021064B8 -_020AFA20: .word FUN_020AF894 -_020AFA24: .word UNK_021064BC - - arm_func_start FUN_020AFA28 -FUN_020AFA28: ; 0x020AFA28 - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFA30 -FUN_020AFA30: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, [r0, #0x10] - ldr r0, [r0, #0xc] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r1, _020AFA78 ; =UNK_021CCD88 - str r0, [r1, #0x4] - mov r0, r1 - bl FUN_020AF698 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, _020AFA7C ; =UNK_021CCD8C - ldr r3, [r0, #0x8] - mov r2, #0x0 - bl FUN_020AF5E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA78: .word UNK_021CCD88 -_020AFA7C: .word UNK_021CCD8C - - arm_func_start FUN_020AFA80 -FUN_020AFA80: ; 0x020AFA80 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, #0x10000 - rsb r2, r1, #0x0 - ldr r1, _020AFAC8 ; =0x0000FFFF - and r2, r0, r2 - and r12, r0, r1 - mov r3, r2, lsr #0x10 - ldr r0, _020AFACC ; =UNK_021CCD88 - ldr r1, _020AFAD0 ; =UNK_021CCD8C - mov r2, r12, lsl #0x3 - mov r3, r3, lsl #0x3 - bl FUN_020AF334 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFAC8: .word 0x0000FFFF -_020AFACC: .word UNK_021CCD88 -_020AFAD0: .word UNK_021CCD8C - - arm_func_start FUN_020AFAD4 -FUN_020AFAD4: ; 0x020AFAD4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - cmp r0, #0x0 - moveq r4, #0x8 - addne r0, r0, #0x7 - bicne r4, r0, #0x7 - ldr r0, _020AFB98 ; =0x0007FFF8 - cmp r4, r0 - addcs sp, sp, #0x8 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r1, #0x0 - beq _020AFB50 - mov r12, #0x8 - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 - ldr r2, [sp, #0x4] - add r1, r2, r4 - cmp r1, #0x10000 - bls _020AFB6C - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - mov r3, r4 - bl FUN_020AF334 - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020AFB50: - ldr r0, _020AFB9C ; =UNK_021CCD88 - mov r12, #0x10 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 -_020AFB6C: - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [sp, #0x4] - ldr r0, _020AFBA4 ; =0x0000FFFF - mov r2, r4, lsr #0x3 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020AFB98: .word 0x0007FFF8 -_020AFB9C: .word UNK_021CCD88 -_020AFBA0: .word UNK_021CCD8C -_020AFBA4: .word 0x0000FFFF - - arm_func_start FUN_020AFBA8 -FUN_020AFBA8: ; 0x020AFBA8 - stmdb sp!, {r4,lr} - ldr ip, _020AFBE8 ; =UNK_021CCD88 - mov r4, r3 - str r0, [r12, #0x8] - str r1, [r12, #0xc] - str r2, [r12, #0x10] - bl FUN_020AFA30 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AFBEC ; =FUN_020AFAD4 - ldr r1, _020AFBF0 ; =UNK_021064C0 - ldr r2, _020AFBF4 ; =FUN_020AFA80 - ldr r0, _020AFBF8 ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AFBE8: .word UNK_021CCD88 -_020AFBEC: .word FUN_020AFAD4 -_020AFBF0: .word UNK_021064C0 -_020AFBF4: .word FUN_020AFA80 -_020AFBF8: .word UNK_021064C4 - - arm_func_start FUN_020AFBFC -FUN_020AFBFC: ; 0x020AFBFC - mov r0, r0, lsl #0x4 - bx lr - - arm_func_start FUN_020AFC04 -FUN_020AFC04: ; 0x020AFC04 - ldrh r2, [r0, #0x0] - cmp r2, r1 - ldrhi r0, [r0, #0x4] - addhi r0, r0, r1, lsl #0x4 - movls r0, #0x0 - bx lr - - arm_func_start FUN_020AFC1C -FUN_020AFC1C: ; 0x020AFC1C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x4] - mov r6, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - ldrh r1, [r0, #0x0] - ldr r4, [r0, #0x4] - ldr lr, [r0, #0x8] - cmp r1, #0x0 - ldr r12, [r0, #0xc] - bls _020AFCCC - mov r1, r6 -_020AFC68: - add r2, r4, r6, lsl #0x4 - ldr r5, [r2, #0xc] - mov r3, r6, lsl #0x4 - add r5, lr, r5 - str r5, [r2, #0xc] - ldrh r7, [r4, r3] - mov r5, r1 - cmp r7, #0x0 - bls _020AFCB4 -_020AFC8C: - ldr r9, [r2, #0xc] - add r7, r5, #0x1 - ldr r8, [r9, r5, lsl #0x3] - mov r7, r7, lsl #0x10 - add r8, r12, r8 - str r8, [r9, r5, lsl #0x3] - ldrh r8, [r4, r3] - mov r5, r7, lsr #0x10 - cmp r5, r8 - blo _020AFC8C -_020AFCB4: - add r2, r6, #0x1 - mov r2, r2, lsl #0x10 - ldrh r3, [r0, #0x0] - mov r6, r2, lsr #0x10 - cmp r6, r3 - blo _020AFC68 -_020AFCCC: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - add r1, r1, r0 - str r1, [r0, #0x14] - ldr r1, [r0, #0x14] - mov r12, #0x0 - add r2, r1, #0x8 - ldr r0, [r2, #0x4] - add r0, r0, r2 - str r0, [r2, #0x4] - ldrh r0, [r1, #0x8] - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r0, r12 - mov r6, r12 -_020AFD14: - ldr r5, [r2, #0x4] - mov r3, r6 - add r1, r5, r0 - ldr r4, [r1, #0x4] - add r4, r4, r2 - str r4, [r1, #0x4] - ldr r4, [r1, #0x8] - add r4, r4, r2 - str r4, [r1, #0x8] - ldrh r4, [r5, r0] - cmp r4, #0x0 - bls _020AFD6C - mov r7, r6 -_020AFD48: - ldr r5, [r1, #0x8] - add r3, r3, #0x1 - ldr r4, [r5, r7] - add r4, r4, r2 - str r4, [r5, r7] - ldrh r4, [r1, #0x0] - add r7, r7, #0x4 - cmp r3, r4 - blo _020AFD48 -_020AFD6C: - ldrh r1, [r2, #0x0] - add r12, r12, #0x1 - add r0, r0, #0xc - cmp r12, r1 - blo _020AFD14 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start thunk_FUN_020afda0 -thunk_FUN_020afda0: ; 0x020AFD88 - ldr ip, _020AFD90 ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD90: .word FUN_020AFDA0 - - arm_func_start thunk_FUN_020afda0_2 -thunk_FUN_020afda0_2: ; 0x020AFD94 - ldr ip, _020AFD9C ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD9C: .word FUN_020AFDA0 - - arm_func_start FUN_020AFDA0 -FUN_020AFDA0: ; 0x020AFDA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFDE4 ; =0x41424E4B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFC1C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFDE4: .word 0x41424E4B - - arm_func_start FUN_020AFDE8 -FUN_020AFDE8: ; 0x020AFDE8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r1, [r5, #0x4] - add r1, r1, r5 - str r1, [r5, #0x4] - bl FUN_020AFF10 - ldrh r1, [r5, #0x0] - mov r4, r0 - mov r6, #0x0 - cmp r1, #0x0 - bls _020AFE44 -_020AFE14: - mov r0, r5 - mov r1, r6 - bl FUN_020AFE8C - ldr r2, [r0, #0x4] - add r1, r6, #0x1 - add r2, r2, r4 - str r2, [r0, #0x4] - mov r0, r1, lsl #0x10 - ldrh r1, [r5, #0x0] - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020AFE14 -_020AFE44: - ldr r0, [r5, #0xc] - cmp r0, #0x0 - beq _020AFE6C - add r0, r0, r5 - str r0, [r5, #0xc] - ldr r1, [r5, #0xc] - ldr r0, [r1, #0x4] - add r0, r0, r1 - str r0, [r1, #0x4] - str r1, [r5, #0xc] -_020AFE6C: - ldr r0, [r5, #0x14] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r0, r5 - str r0, [r5, #0x14] - ldr r0, [r5, #0x14] - bl FUN_020AFF00 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AFE8C -FUN_020AFE8C: ; 0x020AFE8C - ldrh r2, [r0, #0x0] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - ldrh r2, [r0, #0x2] - ands r2, r2, #0x1 - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFEB8 -FUN_020AFEB8: ; 0x020AFEB8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFEFC ; =0x4345424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFDE8 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFEFC: .word 0x4345424B - - arm_func_start FUN_020AFF00 -FUN_020AFF00: ; 0x020AFF00 - ldr ip, _020AFF0C ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFF0C: .word FUN_020B01B0 - - arm_func_start FUN_020AFF10 -FUN_020AFF10: ; 0x020AFF10 - ldrh r1, [r0, #0x2] - ands r1, r1, #0x1 - ldrneh r1, [r0, #0x0] - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreqh r1, [r0, #0x0] - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - - arm_func_start FUN_020AFF34 -FUN_020AFF34: ; 0x020AFF34 - ldrh r2, [r0, #0x0] - cmp r1, r2 - ldrcc r0, [r0, #0x4] - addcc r0, r0, r1, lsl #0x3 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020AFF4C -FUN_020AFF4C: ; 0x020AFF4C - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x4] - mov r4, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldrh r1, [r0, #0x0] - ldr lr, [r0, #0x4] - cmp r1, #0x0 - bls _020AFFA8 -_020AFF7C: - add r3, lr, r4, lsl #0x3 - ldr r12, [r0, #0x8] - ldr r2, [r3, #0x4] - add r1, r4, #0x1 - add r2, r12, r2 - str r2, [r3, #0x4] - mov r1, r1, lsl #0x10 - ldrh r2, [r0, #0x0] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020AFF7C -_020AFFA8: - ldr r1, [r0, #0x10] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - add r1, r1, r0 - str r1, [r0, #0x10] - ldr r0, [r0, #0x10] - bl FUN_020AFFC8 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020AFFC8 -FUN_020AFFC8: ; 0x020AFFC8 - ldr ip, _020AFFD4 ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFFD4: .word FUN_020B01B0 - - arm_func_start FUN_020AFFD8 -FUN_020AFFD8: ; 0x020AFFD8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B001C ; =0x4D43424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFF4C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B001C: .word 0x4D43424B - - arm_func_start FUN_020B0020 -FUN_020B0020: ; 0x020B0020 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0030 -FUN_020B0030: ; 0x020B0030 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0074 ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0020 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0074: .word 0x43484152 - - arm_func_start FUN_020B0078 -FUN_020B0078: ; 0x020B0078 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - - arm_func_start FUN_020B0088 -FUN_020B0088: ; 0x020B0088 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B00CC ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0078 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B00CC: .word 0x43484152 - - arm_func_start FUN_020B00D0 -FUN_020B00D0: ; 0x020B00D0 - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B00E0 -FUN_020B00E0: ; 0x020B00E0 - ldr r1, [r0, #0x4] - add r1, r1, r0 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B00F0 -FUN_020B00F0: ; 0x020B00F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0134 ; =0x50434D50 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00E0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0134: .word 0x50434D50 - - arm_func_start FUN_020B0138 -FUN_020B0138: ; 0x020B0138 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B017C ; =0x504C5454 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00D0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B017C: .word 0x504C5454 - - arm_func_start FUN_020B0180 -FUN_020B0180: ; 0x020B0180 - stmdb sp!, {r4,lr} - mov r4, r1 - ldr r1, _020B01AC ; =0x5343524E - bl FUN_020B01F8 - cmp r0, #0x0 - addne r0, r0, #0x8 - strne r0, [r4, #0x0] - movne r0, #0x1 - moveq r0, #0x0 - streq r0, [r4, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020B01AC: .word 0x5343524E - - arm_func_start FUN_020B01B0 -FUN_020B01B0: ; 0x020B01B0 - ldr r1, [r0, #0x4] - mov r12, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - bxls lr -_020B01CC: - ldr r3, [r0, #0x4] - add r1, r12, #0x1 - ldr r2, [r3, r12, lsl #0x2] - mov r1, r1, lsl #0x10 - add r2, r0, r2 - str r2, [r3, r12, lsl #0x2] - ldrh r2, [r0, #0x0] - mov r12, r1, lsr #0x10 - cmp r12, r2 - blo _020B01CC - bx lr - - arm_func_start FUN_020B01F8 -FUN_020B01F8: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r2, [r0, #0xc] - ldrh r12, [r0, #0xe] - mov lr, #0x0 - add r0, r0, r2 - cmp r12, #0x0 - bls _020B0244 -_020B0218: - ldr r2, [r0, #0x0] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r2, lr, #0x1 - mov r2, r2, lsl #0x10 - ldr r3, [r0, #0x4] - mov lr, r2, lsr #0x10 - cmp lr, r12 - add r0, r0, r3 - blo _020B0218 -_020B0244: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B0250 -FUN_020B0250: ; 0x020B0250 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020B02C0 ; =0x04000470 - mov r0, r0, lsl #0xc - str r0, [r5, #0x0] - mov r4, r1, lsl #0xc - ldr r12, [sp, #0x10] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x1c] - str r4, [r5, #0x0] - mov r4, r2, lsl #0xc - ldr r2, [sp, #0x18] - ldr lr, _020B02C4 ; =0x0400046C - str r4, [r5, #0x0] - mov r4, r3, lsl #0xc - ldr r3, [sp, #0x20] - str r4, [lr, #0x0] - mov r12, r12, lsl #0xc - str r12, [lr, #0x0] - mov r12, #0x1000 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - mov r2, r2, lsl #0xc - mov r3, r3, lsl #0xc - str r12, [lr, #0x0] - bl FUN_020B0340 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B02C0: .word 0x04000470 -_020B02C4: .word 0x0400046C - - arm_func_start FUN_020B02C8 -FUN_020B02C8: ; 0x020B02C8 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r2, _020B0330 ; =0xBFFF0000 - ldr r0, _020B0334 ; =0x04000580 - mov r1, #0x400000 - str r2, [r0, #0x0] - rsb r0, r1, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - mov r0, #0x0 - str r1, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - mov r2, r0 - mov r1, #0xc0000 - mov r3, #0x100000 - str r0, [sp, #0x10] - bl G3i_OrthoW_ - ldr r1, _020B0338 ; =0x0400044C - mov r2, #0x0 - ldr r0, _020B033C ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B0330: .word 0xBFFF0000 -_020B0334: .word 0x04000580 -_020B0338: .word 0x0400044C -_020B033C: .word 0x04000440 - - arm_func_start FUN_020B0340 -FUN_020B0340: ; 0x020B0340 - stmdb sp!, {r4-r6,lr} - mov r3, r3, lsl #0x8 - mov r0, r0, lsl #0x8 - mov r4, r3, asr #0x10 - mov r3, r0, asr #0x10 - mov r0, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r1, r1, lsl #0x8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x8 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - ldr ip, _020B03F4 ; =0x04000500 - mov lr, #0x1 - mov r6, r0, lsr #0x10 - mov r5, r3, lsr #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - ldr r4, _020B03F8 ; =0x04000488 - str lr, [r12, #0x0] - orr r0, r5, r6, lsl #0x10 - ldr lr, _020B03FC ; =0x0400048C - str r0, [r4, #0x0] - mov r0, #0x10000000 - str r0, [lr, #0x0] - mov r12, #0x0 - str r12, [lr, #0x0] - orr r2, r3, r6, lsl #0x10 - ldr r0, _020B0400 ; =0x10001000 - str r2, [r4, #0x0] - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r3, r1, lsl #0x10 - str r0, [r4, #0x0] - mov r0, #0x1000 - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r5, r1, lsl #0x10 - str r0, [r4, #0x0] - str r12, [lr, #0x0] - ldr r0, _020B0404 ; =0x04000504 - str r12, [lr, #0x0] - str r12, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B03F4: .word 0x04000500 -_020B03F8: .word 0x04000488 -_020B03FC: .word 0x0400048C -_020B0400: .word 0x10001000 -_020B0404: .word 0x04000504 - - arm_func_start FUN_020B0408 -FUN_020B0408: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - ldreq r0, [r0, #0x18] - ldreq r1, [r0, #0x8] - cmp r1, #0x2 - beq _020B0428 - cmp r1, #0x4 - bne _020B0430 -_020B0428: - mov r0, #0x1 - bx lr -_020B0430: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B0438 -FUN_020B0438: ; 0x020B0438 - ldr ip, _020B0444 ; =FUN_020B0448 - str r1, [r0, #0x18] - bx r12 - .balign 4 -_020B0444: .word FUN_020B0448 - - arm_func_start FUN_020B0448 -FUN_020B0448: ; 0x020B0448 - ldr r1, [r0, #0x10] - cmp r1, #0x0 - movgt r2, #0x1 - ldr r1, [r0, #0x4] - movle r2, #0x0 - eors r1, r2, r1 - beq _020B047C - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - str r1, [r0, #0x0] - b _020B0494 -_020B047C: - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - str r1, [r0, #0x0] -_020B0494: - ldr ip, _020B04A4 ; =FUN_020B0534 - mov r1, #0x0 - str r1, [r0, #0xc] - bx r12 - .balign 4 -_020B04A4: .word FUN_020B0534 - - arm_func_start FUN_020B04A8 -FUN_020B04A8: ; 0x020B04A8 - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] - str r1, [r0, #0x8] - strh r1, [r0, #0xc] - bx lr - - arm_func_start FUN_020B04C0 -FUN_020B04C0: ; 0x020B04C0 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x1c - bl FUN_020B04A8 - mov r1, #0x0 - str r1, [r4, #0x0] - str r1, [r4, #0x4] - mov r0, #0x1 - str r0, [r4, #0x8] - str r1, [r4, #0xc] - mov r0, #0x1000 - str r0, [r4, #0x10] - str r1, [r4, #0x14] - str r1, [r4, #0x18] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B04FC -FUN_020B04FC: ; 0x020B04FC - ldr r1, [r0, #0x18] - ldr r2, [r0, #0x0] - ldr r0, [r1, #0xc] - sub r0, r2, r0 - mov r0, r0, lsl #0xd - mov r0, r0, lsr #0x10 - bx lr - - arm_func_start FUN_020B0518 -FUN_020B0518: - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B06EC - cmp r0, #0x0 - movne r1, #0x0 - strne r1, [r4, #0xc] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0534 -FUN_020B0534: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r0, [r8, #0x8] - mov r7, #0x0 - cmp r0, #0x1 - movne r0, r7 - ldmneia sp!, {r4-r8,pc} - ldr r2, [r8, #0x10] - mov r0, #0x800 - smull r3, r1, r2, r1 - adds r0, r3, r0 - adc r1, r1, r7 - mov r0, r0, lsr #0xc - orr r0, r0, r1, lsl #0x14 - bl abs - ldr r1, [r8, #0xc] - add r6, r8, #0xc - add r0, r1, r0 - str r0, [r8, #0xc] - mov r4, r7 - mov r5, #0x1 - b _020B06A8 -_020B058C: - ldr r0, [r8, #0x0] - ldr r1, [r6, #0x0] - ldrh r0, [r0, #0x4] - mov r7, r5 - sub r0, r1, r0, lsl #0xc - str r0, [r6, #0x0] - ldr r0, [r8, #0x10] - cmp r0, #0x0 - movgt r1, r5 - ldr r0, [r8, #0x4] - movle r1, r4 - eors r0, r1, r0 - ldrne r0, [r8, #0x0] - addne r0, r0, #0x8 - strne r0, [r8, #0x0] - ldreq r0, [r8, #0x0] - subeq r0, r0, #0x8 - streq r0, [r8, #0x0] - ldr r1, [r8, #0x10] - ldr r0, [r8, #0x0] - cmp r1, #0x0 - movgt r2, r5 - ldr r1, [r8, #0x4] - movle r2, r4 - eors r1, r2, r1 - beq _020B0614 - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - cmp r0, r1 - movcs r0, r5 - movcc r0, r4 - b _020B0634 -_020B0614: - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - cmp r0, r1 - movls r0, r5 - movhi r0, r4 -_020B0634: - cmp r0, #0x0 - beq _020B0644 - mov r0, r8 - bl FUN_020B0710 -_020B0644: - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B06A8 - ldr r0, [r8, #0x18] - ldr r2, [r8, #0x1c] - ldr r1, [r8, #0x0] - ldr r0, [r0, #0xc] - cmp r2, #0x2 - sub r0, r1, r0 - mov r0, r0, lsl #0xd - mov r1, r0, lsr #0x10 - beq _020B0680 - cmp r2, #0x3 - beq _020B069C - b _020B06A8 -_020B0680: - ldrh r0, [r8, #0x28] - cmp r1, r0 - bne _020B06A8 - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 - b _020B06A8 -_020B069C: - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 -_020B06A8: - ldr r0, [r8, #0x8] - cmp r0, #0x0 - beq _020B06CC - ldr r0, [r8, #0x0] - ldr r1, [r8, #0xc] - ldrh r0, [r0, #0x4] - cmp r1, r0, lsl #0xc - movge r0, r5 - bge _020B06D0 -_020B06CC: - mov r0, r4 -_020B06D0: - cmp r0, #0x0 - bne _020B058C - mov r0, r7 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B06E0 -FUN_020B06E0: ; 0x020B06E0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - - arm_func_start FUN_020B06EC -FUN_020B06EC: - ldr r3, [r0, #0x18] - ldrh r2, [r3, #0x0] - cmp r1, r2 - ldrcc r2, [r3, #0xc] - addcc r1, r2, r1, lsl #0x3 - strcc r1, [r0, #0x0] - movcc r0, #0x1 - movcs r0, #0x0 - bx lr - - arm_func_start FUN_020B0710 -FUN_020B0710: ; 0x020B0710 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x3 - beq _020B0738 - cmp r0, #0x4 - bne _020B07B4 -_020B0738: - ldr r0, [r4, #0x4] - eor r0, r0, #0x1 - str r0, [r4, #0x4] - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x2] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - bhi _020B0800 - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B0780 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B0780: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07A8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07A8: - mov r0, r4 - bl FUN_020B0448 - b _020B0800 -_020B07B4: - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B07D0 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B07D0: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07F8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07F8: - mov r0, r4 - bl FUN_020B0448 -_020B0800: - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x0] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - strhi r0, [r4, #0x0] - ldmhiia sp!, {r4,pc} - cmp r2, r1 - strcc r1, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0830 -FUN_020B0830: ; 0x020B0830 - ldrh r3, [r0, #0x6] - ldrh r2, [r0, #0x8] - mov r12, #0x0 - add r1, r3, #0x1 - cmp r2, r1 - bgt _020B0854 - ldrh r0, [r0, #0x4] - cmp r0, r3 - movls r12, #0x1 -_020B0854: - cmp r12, #0x0 - subne r0, r3, r2 - addne r0, r0, #0x1 - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B0870 -FUN_020B0870: ; 0x020B0870 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B09B4 - mov r0, r4 - bl FUN_020B0888 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B0888 -FUN_020B0888: ; 0x020B0888 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x14] - cmp r0, #0x0 - beq _020B0944 - ldrh r2, [r5, #0x6] - ldrh r1, [r5, #0x8] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B08C0 - ldrh r0, [r5, #0x4] - cmp r0, r2 - movls r3, #0x1 -_020B08C0: - cmp r3, #0x0 - moveq r4, #0x0 - beq _020B08E0 - ldrh r0, [r5, #0x4] - sub r0, r2, r0 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0xd -_020B08E0: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r0, [r5, #0x4] - add r2, r1, #0x100 - mov r1, r4 - add r6, r2, r0, lsl #0x3 - mov r0, r6 - bl DC_InvalidateRange - ldr r0, _020B09B0 ; =GXi_DmaId - mvn r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, r1 - beq _020B0930 - mov r1, r6 - mov r3, r4 - mov r2, #0xc0 - bl MI_DmaFill32 - b _020B0998 -_020B0930: - mov r1, r6 - mov r2, r4 - mov r0, #0xc0 - bl MIi_CpuClear32 - b _020B0998 -_020B0944: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r2, [r5, #0x4] - ldrh r0, [r5, #0x6] - add r1, r1, #0x100 - add r3, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - movs r2, r0, lsr #0x10 - mov r0, #0x0 - beq _020B0998 - mov r1, #0xc0 -_020B0980: - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r2 - strh r1, [r3], #0x8 - blo _020B0980 -_020B0998: - ldrh r0, [r5, #0x4] - strh r0, [r5, #0x8] - ldrh r0, [r5, #0xa] - strh r0, [r5, #0xe] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B09AC: .word UNK_021CCDA0 -_020B09B0: .word GXi_DmaId - - arm_func_start FUN_020B09B4 -FUN_020B09B4: ; 0x020B09B4 - stmdb sp!, {r4-r10,lr} - mov r7, r0 - ldr r0, [r7, #0x14] - cmp r0, #0x0 - beq _020B0A48 - ldr r5, [r7, #0x0] - ldr r1, _020B0BA8 ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r5, r0, r1 - ldrh r2, [r7, #0x4] - ldrh r0, [r7, #0x6] - add r1, r1, #0x100 - add r4, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x13 - mov r6, r0, lsr #0x10 - mov r2, r2, lsl #0x13 - mov r0, r4 - mov r1, r6 - mov r7, r2, lsr #0x10 - bl DC_FlushRange - cmp r5, #0x0 - beq _020B0A20 - cmp r5, #0x1 - beq _020B0A34 - ldmia sp!, {r4-r10,pc} -_020B0A20: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GX_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A34: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GXS_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A48: - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0x4] - ldrh r1, [r7, #0x6] - ldr r3, _020B0BAC ; =UNK_0210655C - add r4, r2, #0x100 - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - mov r2, r5, lsl #0x13 - add r6, r4, r5, lsl #0x3 - movs r5, r1, lsr #0x10 - mov r4, r2, lsr #0x10 - ldr r9, [r3, r0, lsl #0x2] - mov r10, #0x0 - beq _020B0AC8 - mov r8, #0x6 -_020B0A94: - mov r0, r6 - mov r1, r4 - mov r2, r8 - blx r9 - add r0, r10, #0x1 - add r2, r4, #0x8 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r10, r1, lsr #0x10 - cmp r10, r5 - mov r4, r0, lsr #0x10 - add r6, r6, #0x8 - blo _020B0A94 -_020B0AC8: - ldrh r2, [r7, #0xc] - ldrh r1, [r7, #0xe] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B0AEC - ldrh r0, [r7, #0xa] - cmp r0, r2 - movls r3, #0x1 -_020B0AEC: - cmp r3, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0xa] - add r4, r2, #0x100 - ldrh r1, [r7, #0xc] - mov r2, r5, lsl #0x15 - ldr r3, _020B0BAC ; =UNK_0210655C - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - add r9, r4, r5, lsl #0x5 - ldr r5, [r3, r0, lsl #0x2] - movs r8, r1, lsr #0x10 - mov r7, r2, lsr #0x10 - mov r6, #0x0 - ldmeqia sp!, {r4-r10,pc} - mov r4, #0x2 -_020B0B40: - mov r2, r4 - add r0, r9, #0x6 - add r1, r7, #0x6 - blx r5 - mov r2, r4 - add r0, r9, #0xe - add r1, r7, #0xe - blx r5 - mov r2, r4 - add r0, r9, #0x16 - add r1, r7, #0x16 - blx r5 - add r0, r9, #0x1e - add r1, r7, #0x1e - mov r2, r4 - blx r5 - add r0, r7, #0x20 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - add r9, r9, #0x20 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B0B40 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B0BA8: .word UNK_021CCDA0 -_020B0BAC: .word UNK_0210655C - - arm_func_start FUN_020B0BB0 -FUN_020B0BB0: ; 0x020B0BB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov lr, #0x0 - add r2, r12, #0x1 - cmp r3, r2 - bgt _020B0BDC - ldrh r2, [r0, #0xa] - cmp r2, r12 - movls lr, #0x1 -_020B0BDC: - cmp lr, #0x0 - subne r2, r12, r3 - addne r2, r2, #0x1 - movne r2, r2, lsl #0x10 - movne r2, r2, lsr #0x10 - moveq r2, #0x0 - cmp r2, #0x1 - movcs r2, #0x1 - movcc r2, #0x0 - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldreq r0, _020B0C74 ; =0x0000FFFE - ldmeqia sp!, {pc} - ldr lr, [r0, #0x0] - ldr r3, _020B0C78 ; =UNK_021CCDA0 - mov r2, #0x540 - mla r12, lr, r2, r3 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0xe] - add r12, r12, #0x100 - mov r3, r3, asr #0x4 - add r12, r12, r2, lsl #0x5 - strh r3, [r12, #0x6] - ldr r3, [r1, #0x4] - mov r3, r3, asr #0x4 - strh r3, [r12, #0xe] - ldr r3, [r1, #0x8] - mov r3, r3, asr #0x4 - strh r3, [r12, #0x16] - ldr r1, [r1, #0xc] - mov r1, r1, asr #0x4 - strh r1, [r12, #0x1e] - ldrh r1, [r0, #0xe] - add r1, r1, #0x1 - strh r1, [r0, #0xe] - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B0C74: .word 0x0000FFFE -_020B0C78: .word UNK_021CCDA0 - - arm_func_start FUN_020B0C7C -FUN_020B0C7C: ; 0x020B0C7C - stmdb sp!, {r4,lr} - ldrh r12, [r0, #0x6] - ldrh r4, [r0, #0x8] - mov lr, #0x0 - add r3, r12, #0x1 - cmp r4, r3 - bgt _020B0CA4 - ldrh r3, [r0, #0x4] - cmp r3, r12 - movls lr, #0x1 -_020B0CA4: - cmp lr, #0x0 - subne r3, r12, r4 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, #0x1 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0D48 - ldr r4, [r0, #0x0] - ldr ip, _020B0D50 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, r4, r3, r12 - ldrh r3, [r0, #0x8] - add r4, r12, #0x100 - ldrh r12, [r1, #0x0] - mov lr, r3, lsl #0x3 - add r3, r4, r3, lsl #0x3 - strh r12, [r4, lr] - ldrh lr, [r1, #0x2] - ldr ip, _020B0D54 ; =0x0000FFFE - strh lr, [r3, #0x2] - ldrh r1, [r1, #0x4] - cmp r2, r12 - strh r1, [r3, #0x4] - beq _020B0D34 - ldr r1, [r3, #0x0] - mov r12, r1, lsl #0x16 - mov r12, r12, lsr #0x1e - ands r12, r12, #0x1 - bicne r12, r1, #0x3e000000 - andne r1, r2, #0x1f - orrne r1, r12, r1, lsl #0x19 - strne r1, [r3, #0x0] -_020B0D34: - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - mov r0, #0x1 - ldmia sp!, {r4,pc} -_020B0D48: - mov r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020B0D50: .word UNK_021CCDA0 -_020B0D54: .word 0x0000FFFE - - arm_func_start FUN_020B0D58 -FUN_020B0D58: ; 0x020B0D58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh lr, [r0, #0x6] - ldrh r12, [r0, #0x8] - mov r4, #0x0 - add r3, lr, #0x1 - cmp r12, r3 - bgt _020B0D84 - ldrh r3, [r0, #0x4] - cmp r3, lr - movls r4, #0x1 -_020B0D84: - cmp r4, #0x0 - subne r3, lr, r12 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, r2 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0E24 - ldr lr, [r0, #0x0] - ldr ip, _020B0E30 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, lr, r3, r12 - ldrh r3, [r0, #0x8] - add r12, r12, #0x100 - cmp r2, #0x0 - add r4, r12, r3, lsl #0x3 - mov r5, #0x0 - ble _020B0E18 - add r3, r0, #0x8 -_020B0DDC: - ldrh lr, [r1, #0x0] - mov r0, r5, lsl #0x3 - add r12, r4, r5, lsl #0x3 - strh lr, [r4, r0] - ldrh r0, [r1, #0x2] - add r5, r5, #0x1 - cmp r5, r2 - strh r0, [r12, #0x2] - ldrh r0, [r1, #0x4] - add r1, r1, #0x8 - strh r0, [r12, #0x4] - ldrh r0, [r3, #0x0] - add r0, r0, #0x1 - strh r0, [r3, #0x0] - blt _020B0DDC -_020B0E18: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r5,pc} -_020B0E24: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0E30: .word UNK_021CCDA0 - - arm_func_start FUN_020B0E34 -FUN_020B0E34: ; 0x020B0E34 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, [sp, #0x1c] - ldr r6, _020B0FB4 ; =UNK_021CCDA0 - mov r4, #0x540 - mla r4, r5, r4, r6 - mov lr, r1 - sub r1, r2, #0x1 - add r1, lr, r1 - mov r1, r1, lsl #0x10 - mov r12, r1, lsr #0x10 - add r7, r4, lr, lsl #0x1 - add r2, r4, r12, lsl #0x1 - mov r6, r0 - mov r5, r3 - cmp r7, r2 - mov r3, lr, lsl #0x1 - bhi _020B0E9C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0E80: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0EA0 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0E80 -_020B0E9C: - mov r0, #0x1 -_020B0EA0: - cmp r0, #0x0 - beq _020B0EE0 - ldr r0, _020B0FBC ; =UNK_021CCD9C - sub r2, r12, lr - ldrh r7, [r0, #0x0] - add r1, r4, r3 - mov r2, r2, lsl #0x1 - add r3, r7, #0x1 - strh r3, [r0, #0x0] - strh r7, [r6, #0x10] - strh lr, [r6, #0x4] - strh r12, [r6, #0x6] - strh lr, [r6, #0x8] - ldrh r0, [r6, #0x10] - bl MIi_CpuClear16 - b _020B0EEC -_020B0EE0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0EEC: - ldrh r0, [sp, #0x18] - add r4, r4, #0x500 - cmp r0, #0x0 - bne _020B0F18 - mov r0, #0x20 - strh r0, [r6, #0xa] - mov r0, #0x0 - strh r0, [r6, #0xc] - ldrh r0, [r6, #0xa] - strh r0, [r6, #0xe] - b _020B0F98 -_020B0F18: - sub r0, r0, #0x1 - add r0, r5, r0 - mov r0, r0, lsl #0x10 - mov r12, r0, lsr #0x10 - add r7, r4, r5, lsl #0x1 - add r2, r4, r12, lsl #0x1 - cmp r7, r2 - mov r3, r5, lsl #0x1 - bhi _020B0F5C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0F40: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0F60 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0F40 -_020B0F5C: - mov r0, #0x1 -_020B0F60: - cmp r0, #0x0 - beq _020B0F8C - strh r5, [r6, #0xa] - strh r12, [r6, #0xc] - strh r5, [r6, #0xe] - ldrh r0, [r6, #0x10] - sub r2, r12, r5 - add r1, r4, r3 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - b _020B0F98 -_020B0F8C: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0F98: - mov r1, #0x0 - ldr r0, [sp, #0x1c] - str r1, [r6, #0x14] - str r0, [r6, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B0FB4: .word UNK_021CCDA0 -_020B0FB8: .word 0x0000FFFF -_020B0FBC: .word UNK_021CCD9C - - arm_func_start FUN_020B0FC0 -FUN_020B0FC0: ; 0x020B0FC0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B1060 ; =UNK_021CCEA0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1064 ; =UNK_021CD3E0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1068 ; =UNK_021CD920 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1070 ; =UNK_021CCDA0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1074 ; =UNK_021CD2E0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1078 ; =UNK_021CD820 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B107C ; =UNK_021CD2A0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1080 ; =UNK_021CD7E0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1084 ; =UNK_021CDD20 - mov r2, #0x40 - bl MIi_CpuClear16 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B1060: .word UNK_021CCEA0 -_020B1064: .word UNK_021CD3E0 -_020B1068: .word UNK_021CD920 -_020B106C: .word 0x0000FFFF -_020B1070: .word UNK_021CCDA0 -_020B1074: .word UNK_021CD2E0 -_020B1078: .word UNK_021CD820 -_020B107C: .word UNK_021CD2A0 -_020B1080: .word UNK_021CD7E0 -_020B1084: .word UNK_021CDD20 - - arm_func_start FUN_020B1088 -FUN_020B1088: ; 0x020B1088 - ldr ip, _020B1094 ; =MIi_CpuCopy16 - add r1, r1, #0x7000000 - bx r12 - .balign 4 -_020B1094: .word MIi_CpuCopy16 - - arm_func_start FUN_020B1098 -FUN_020B1098: ; 0x020B1098 - ldr r3, _020B10A8 ; =0x07000400 - ldr ip, _020B10AC ; =MIi_CpuCopy16 - add r1, r1, r3 - bx r12 - .balign 4 -_020B10A8: .word 0x07000400 -_020B10AC: .word MIi_CpuCopy16 - - arm_func_start FUN_020B10B0 -FUN_020B10B0: ; 0x020B10B0 - mov r1, r1, lsl #0x1 - ldrh r0, [r0, r1] - bx lr - - arm_func_start FUN_020B10BC -FUN_020B10BC: ; 0x020B10BC - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10C4 -FUN_020B10C4: - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B10CC -FUN_020B10CC: - mov r2, #0x0 - mvn r1, #0x0 -_020B10D4: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B10D4 - bx lr - - arm_func_start FUN_020B10E8 -FUN_020B10E8: ; 0x020B10E8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - cmp r0, #0x3 - ldr r0, [sp, #0x28] - moveq r7, #0x20 - str r0, [sp, #0x28] - ldrh r0, [r9, #0x0] - movne r7, #0x200 - mov r11, r2 - mov r8, r3 - str r0, [sp, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - bls _020B1210 -_020B112C: - ldr r1, [r9, #0x4] - mov r0, r6, lsl #0x1 - ldrh r2, [r1, r0] - ldr r0, [r10, #0xc] - ldr r1, [r10, #0x8] - mla r5, r7, r2, r11 - mla r4, r7, r6, r0 - bl DC_FlushRange - cmp r8, #0x0 - beq _020B11E0 - cmp r8, #0x1 - beq _020B1168 - cmp r8, #0x2 - beq _020B11A4 - b _020B11F8 -_020B1168: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B1190 - bl GX_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B11F8 -_020B1190: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJPltt - b _020B11F8 -_020B11A4: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B11CC - bl GXS_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B11F8 -_020B11CC: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJPltt - b _020B11F8 -_020B11E0: - bl GX_BeginLoadTexPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B11F8: - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _020B112C -_020B1210: - ldr r0, [sp, #0x28] - ldr r2, [r10, #0x0] - mov r1, r0 - str r2, [r1, #0x0] - ldr r4, [r10, #0x4] - mov r3, r0 - mov r1, r8 - mov r2, r11 - str r4, [r3, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B1240 -FUN_020B1240: ; 0x020B1240 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r5, [r9, #0xc] - ldr r4, [r9, #0x8] - mov r8, r1 - mov r7, r2 - mov r0, r5 - mov r1, r4 - mov r6, r3 - bl DC_FlushRange - cmp r7, #0x0 - beq _020B1300 - cmp r7, #0x1 - beq _020B1288 - cmp r7, #0x2 - beq _020B12C4 - b _020B1318 -_020B1288: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12B0 - bl GX_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B1318 -_020B12B0: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJPltt - b _020B1318 -_020B12C4: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12EC - bl GXS_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B1318 -_020B12EC: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJPltt - b _020B1318 -_020B1300: - bl GX_BeginLoadTexPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B1318: - ldr r1, [r9, #0x0] - mov r0, r6 - str r1, [r6, #0x0] - ldr r3, [r9, #0x4] - mov r1, r7 - mov r2, r8 - str r3, [r6, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B1340 -FUN_020B1340: ; 0x020B1340 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - mov r5, r2 - mov r4, r3 - bl DC_FlushRange - cmp r5, #0x0 - ldr r0, [r7, #0x8] - beq _020B13B8 - cmp r5, #0x1 - beq _020B1384 - cmp r5, #0x2 - beq _020B13A0 - b _020B13B8 -_020B1384: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1520 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B13B8 -_020B13A0: - ldr r3, _020B1524 ; =0x04001000 - ldr r1, _020B1520 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B13B8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B14D8 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1408 - cmp r0, #0x10 - bge _020B1434 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1444 -_020B13E4: - b _020B1444 -_020B13E8: - b _020B1414 -_020B13EC: - b _020B141C -_020B13F0: - b _020B1444 -_020B13F4: - b _020B1424 -_020B13F8: - b _020B1444 -_020B13FC: - b _020B1444 -_020B1400: - b _020B1444 -_020B1404: - b _020B142C -_020B1408: - cmp r0, #0x20 - beq _020B143C - b _020B1444 -_020B1414: - mov r0, #0x0 - b _020B1448 -_020B141C: - mov r0, #0x1 - b _020B1448 -_020B1424: - mov r0, #0x2 - b _020B1448 -_020B142C: - mov r0, #0x3 - b _020B1448 -_020B1434: - mov r0, #0x4 - b _020B1448 -_020B143C: - mov r0, #0x5 - b _020B1448 -_020B1444: - mov r0, #0x0 -_020B1448: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1490 - cmp r0, #0x10 - bge _020B14BC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B14CC -_020B146C: - b _020B14CC -_020B1470: - b _020B149C -_020B1474: - b _020B14A4 -_020B1478: - b _020B14CC -_020B147C: - b _020B14AC -_020B1480: - b _020B14CC -_020B1484: - b _020B14CC -_020B1488: - b _020B14CC -_020B148C: - b _020B14B4 -_020B1490: - cmp r0, #0x20 - beq _020B14C4 - b _020B14CC -_020B149C: - mov r0, #0x0 - b _020B14D0 -_020B14A4: - mov r0, #0x1 - b _020B14D0 -_020B14AC: - mov r0, #0x2 - b _020B14D0 -_020B14B4: - mov r0, #0x3 - b _020B14D0 -_020B14BC: - mov r0, #0x4 - b _020B14D0 -_020B14C4: - mov r0, #0x5 - b _020B14D0 -_020B14CC: - mov r0, #0x0 -_020B14D0: - str r0, [r4, #0x10] - b _020B14E8 -_020B14D8: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B14E8: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1520: .word 0xFFCFFFEF -_020B1524: .word 0x04001000 - - arm_func_start FUN_020B1528 -FUN_020B1528: ; 0x020B1528 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B1590 - cmp r5, #0x1 - beq _020B155C - cmp r5, #0x2 - beq _020B1578 - b _020B1590 -_020B155C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1760 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B1590 -_020B1578: - ldr r3, _020B1764 ; =0x04001000 - ldr r1, _020B1760 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B1590: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B15B8 - cmp r5, #0x1 - beq _020B15D4 - cmp r5, #0x2 - beq _020B15E8 - b _020B15F8 -_020B15B8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B15F8 -_020B15D4: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B15F8 -_020B15E8: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B15F8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1718 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1648 - cmp r0, #0x10 - bge _020B1674 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1684 -_020B1624: - b _020B1684 -_020B1628: - b _020B1654 -_020B162C: - b _020B165C -_020B1630: - b _020B1684 -_020B1634: - b _020B1664 -_020B1638: - b _020B1684 -_020B163C: - b _020B1684 -_020B1640: - b _020B1684 -_020B1644: - b _020B166C -_020B1648: - cmp r0, #0x20 - beq _020B167C - b _020B1684 -_020B1654: - mov r0, #0x0 - b _020B1688 -_020B165C: - mov r0, #0x1 - b _020B1688 -_020B1664: - mov r0, #0x2 - b _020B1688 -_020B166C: - mov r0, #0x3 - b _020B1688 -_020B1674: - mov r0, #0x4 - b _020B1688 -_020B167C: - mov r0, #0x5 - b _020B1688 -_020B1684: - mov r0, #0x0 -_020B1688: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B16D0 - cmp r0, #0x10 - bge _020B16FC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B170C -_020B16AC: - b _020B170C -_020B16B0: - b _020B16DC -_020B16B4: - b _020B16E4 -_020B16B8: - b _020B170C -_020B16BC: - b _020B16EC -_020B16C0: - b _020B170C -_020B16C4: - b _020B170C -_020B16C8: - b _020B170C -_020B16CC: - b _020B16F4 -_020B16D0: - cmp r0, #0x20 - beq _020B1704 - b _020B170C -_020B16DC: - mov r0, #0x0 - b _020B1710 -_020B16E4: - mov r0, #0x1 - b _020B1710 -_020B16EC: - mov r0, #0x2 - b _020B1710 -_020B16F4: - mov r0, #0x3 - b _020B1710 -_020B16FC: - mov r0, #0x4 - b _020B1710 -_020B1704: - mov r0, #0x5 - b _020B1710 -_020B170C: - mov r0, #0x0 -_020B1710: - str r0, [r4, #0x10] - b _020B1728 -_020B1718: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1728: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1760: .word 0xFFCFFFEF -_020B1764: .word 0x04001000 - - arm_func_start FUN_020B1768 -FUN_020B1768: ; 0x020B1768 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B17D0 - cmp r5, #0x1 - beq _020B179C - cmp r5, #0x2 - beq _020B17B8 - b _020B17D0 -_020B179C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B19A0 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B17D0 -_020B17B8: - ldr r3, _020B19A4 ; =0x04001000 - ldr r1, _020B19A0 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B17D0: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B17F8 - cmp r5, #0x1 - beq _020B1814 - cmp r5, #0x2 - beq _020B1828 - b _020B1838 -_020B17F8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B1838 -_020B1814: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B1838 -_020B1828: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B1838: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1958 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1888 - cmp r0, #0x10 - bge _020B18B4 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B18C4 -_020B1864: - b _020B18C4 -_020B1868: - b _020B1894 -_020B186C: - b _020B189C -_020B1870: - b _020B18C4 -_020B1874: - b _020B18A4 -_020B1878: - b _020B18C4 -_020B187C: - b _020B18C4 -_020B1880: - b _020B18C4 -_020B1884: - b _020B18AC -_020B1888: - cmp r0, #0x20 - beq _020B18BC - b _020B18C4 -_020B1894: - mov r0, #0x0 - b _020B18C8 -_020B189C: - mov r0, #0x1 - b _020B18C8 -_020B18A4: - mov r0, #0x2 - b _020B18C8 -_020B18AC: - mov r0, #0x3 - b _020B18C8 -_020B18B4: - mov r0, #0x4 - b _020B18C8 -_020B18BC: - mov r0, #0x5 - b _020B18C8 -_020B18C4: - mov r0, #0x0 -_020B18C8: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1910 - cmp r0, #0x10 - bge _020B193C - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B194C -_020B18EC: - b _020B194C -_020B18F0: - b _020B191C -_020B18F4: - b _020B1924 -_020B18F8: - b _020B194C -_020B18FC: - b _020B192C -_020B1900: - b _020B194C -_020B1904: - b _020B194C -_020B1908: - b _020B194C -_020B190C: - b _020B1934 -_020B1910: - cmp r0, #0x20 - beq _020B1944 - b _020B194C -_020B191C: - mov r0, #0x0 - b _020B1950 -_020B1924: - mov r0, #0x1 - b _020B1950 -_020B192C: - mov r0, #0x2 - b _020B1950 -_020B1934: - mov r0, #0x3 - b _020B1950 -_020B193C: - mov r0, #0x4 - b _020B1950 -_020B1944: - mov r0, #0x5 - b _020B1950 -_020B194C: - mov r0, #0x0 -_020B1950: - str r0, [r4, #0x10] - b _020B1968 -_020B1958: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1968: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B19A0: .word 0xFFCFFFEF -_020B19A4: .word 0x04001000 - - arm_func_start FUN_020B19A8 -FUN_020B19A8: - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x8] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B19C4 -FUN_020B19C4: ; 0x020B19C4 - add r0, r0, r1, lsl #0x2 - ldr r0, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19D0 -FUN_020B19D0: ; 0x020B19D0 - add r0, r0, r1, lsl #0x2 - str r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B19DC -FUN_020B19DC: ; 0x020B19DC - mov r3, #0x0 - mvn r2, #0x0 -_020B19E4: - add r1, r0, r3, lsl #0x2 - add r3, r3, #0x1 - str r2, [r1, #0x8] - cmp r3, #0x3 - blt _020B19E4 - bx lr - - arm_func_start FUN_020B19FC -FUN_020B19FC: - ldr r1, [r0, r1, lsl #0x2] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B1A14 -FUN_020B1A14: ; 0x020B1A14 - ldr r0, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A1C -FUN_020B1A1C: ; 0x020B1A1C - str r2, [r0, r1, lsl #0x2] - bx lr - - arm_func_start FUN_020B1A24 -FUN_020B1A24: ; 0x020B1A24 - mov r2, #0x0 - mvn r1, #0x0 -_020B1A2C: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B1A2C - bx lr - - arm_func_start FUN_020B1A40 -FUN_020B1A40: ; 0x020B1A40 - stmdb sp!, {r4,lr} - mov r4, r0 - add r1, r4, #0x4 - mov r0, #0x0 - mov r2, #0x18 - bl MIi_CpuClear16 - mov r0, #0x1000 - str r0, [r4, #0x4] - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1A68 -FUN_020B1A68: - ldr ip, _020B1A74 ; =FUN_020B1A40 - str r1, [r0, #0x0] - bx r12 - .balign 4 -_020B1A74: .word FUN_020B1A40 - - arm_func_start FUN_020B1A78 -FUN_020B1A78: ; 0x020B1A78 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x2 - streqh r3, [r0, #0x12] - streq r1, [r0, #0x4] - streq r2, [r0, #0x8] - bx lr - - arm_func_start FUN_020B1A98 -FUN_020B1A98: ; 0x020B1A98 - ldr r2, [r0, #0x0] - cmp r2, #0x1 - ldreqh r2, [r0, #0x12] - orreq r2, r2, #0x4 - streqh r2, [r0, #0x12] - streqh r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B1AB4 -FUN_020B1AB4: ; 0x020B1AB4 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x8 - streqh r3, [r0, #0x12] - streqh r1, [r0, #0xc] - streqh r2, [r0, #0xe] - bx lr - - arm_func_start FUN_020B1AD4 -FUN_020B1AD4: ; 0x020B1AD4 - mov r2, #0x0 - str r2, [r0, #0x0] - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x8] - ldr ip, _020B1AF4 ; =FUN_020B1A68 - add r0, r0, #0xc - bx r12 - .balign 4 -_020B1AF4: .word FUN_020B1A68 - - arm_func_start FUN_020B1AF8 -FUN_020B1AF8: ; 0x020B1AF8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldrh r5, [r2, #0x0] - ldr r4, [sp, #0x60] - ldr r10, [sp, #0x58] - str r4, [sp, #0x60] - cmp r1, r5 - movcs r1, r5 - mov r4, #0x0 - cmp r1, #0x0 - str r4, [sp, #0x0] - bls _020B1E7C - ldrh r4, [sp, #0x5c] - mov r4, r4, lsl #0x19 - str r4, [sp, #0x4] - ldr r4, [sp, #0x0] - str r4, [sp, #0x14] - mov r4, #0x100 - str r4, [sp, #0xc] - mov r4, #0x300 - str r4, [sp, #0x8] - mov r4, #0x1 - str r4, [sp, #0x10] -_020B1B54: - ldr r5, [sp, #0x0] - mov r6, #0x6 - mul r6, r5, r6 - ldr r8, [r2, #0x4] - ldr r4, [sp, #0x0] - add r7, r0, r5, lsl #0x3 - ldrh r5, [r8, r6] - mov r4, r4, lsl #0x3 - add r9, r8, r6 - strh r5, [r0, r4] - ldrh r4, [r9, #0x2] - cmp r3, #0x0 - strh r4, [r7, #0x2] - ldrh r4, [r9, #0x4] - strh r4, [r7, #0x4] - bne _020B1B9C - cmp r10, #0x0 - beq _020B1E60 -_020B1B9C: - ldr r5, [r7, #0x0] - ldr r4, _020B1E88 ; =0x01FF0000 - and r4, r5, r4 - mov r4, r4, lsr #0x10 - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0xff - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x20] - ldr r4, [r7, #0x0] - and r4, r4, #0xff - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0x7f - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x24] - cmp r3, #0x0 - beq _020B1E00 - ldr r5, [r7, #0x0] - and r6, r5, #0x300 - cmp r6, #0x100 - beq _020B1C1C - cmp r6, #0x300 - beq _020B1C1C - and r4, r5, #0x30000000 - orr r6, r6, r4 -_020B1C1C: - cmp r6, #0x300 - bne _020B1C70 - ldr r4, _020B1E8C ; =0xC000C000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - and r5, r5, r4 - and r4, r5, #0xc000 - mov r6, r4, asr #0xe - and r4, r5, #0xc0000000 - mov r4, r4, lsr #0x1e - mov r4, r4, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r4, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r5, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - add r5, r5, r9, lsl #0xb - str r5, [sp, #0x20] - ldrh r4, [r4, r6] - ldr r5, [sp, #0x24] - add r4, r5, r4, lsl #0xb - str r4, [sp, #0x24] -_020B1C70: - ldr r4, [sp, #0x60] - ldr r5, [r3, #0x8] - cmp r4, #0x0 - ldrne r8, [sp, #0x8] - add r4, sp, #0x20 - ldreq r8, [sp, #0xc] - mov r6, r4 - cmp r8, #0x300 - ldreq r9, [sp, #0x10] - mov r12, #0x1000 - ldrne r9, [sp, #0x14] - cmp r4, r4 - ldr r4, [sp, #0x24] - addeq r6, sp, #0x28 - smull r11, r4, r5, r4 - adds r5, r11, r12 - adc r11, r4, #0x0 - ldr r4, [r3, #0x0] - ldr lr, [sp, #0x20] - smlal r5, r11, r4, lr - mov r4, r5, lsr #0xc - orr r4, r4, r11, lsl #0x14 - str r4, [r6, #0x0] - ldr r4, [r3, #0xc] - ldr r5, [sp, #0x24] - ldr lr, [r3, #0x4] - smull r11, r5, r4, r5 - adds r11, r11, r12 - adc r4, r5, #0x0 - add r5, sp, #0x28 - cmp r6, r5 - ldr r5, [sp, #0x20] - smlal r11, r4, lr, r5 - mov r5, r11, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, #0x4] - ldreq r5, [sp, #0x28] - ldreq r4, [sp, #0x2c] - streq r5, [sp, #0x20] - streq r4, [sp, #0x24] - cmp r8, #0x100 - beq _020B1D38 - cmp r8, #0x300 - beq _020B1D38 - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r4, r4, r8 - str r4, [r7, #0x0] - b _020B1D54 -_020B1D38: - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r5, r4, r8 - ldr r4, [sp, #0x4] - orr r4, r4, r5 - str r4, [r7, #0x0] -_020B1D54: - ldr r6, [r7, #0x0] - ldr r5, _020B1E8C ; =0xC000C000 - cmp r9, #0x0 - and r8, r6, r5 - and r5, r8, #0xc000 - mov r6, r5, asr #0xe - and r5, r8, #0xc0000000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - mov r5, r5, lsr #0x1e - mov r5, r5, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r5, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r4, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - mov r11, r9, asr #0x1 - ldrh r5, [r5, r6] - mov r8, r11, lsl #0xc - ldr r6, [r3, #0x0] - rsb r12, r8, #0x0 - mov r9, r5, asr #0x1 - mla r12, r6, r11, r12 - ldr r5, [r3, #0x8] - mla r6, r5, r9, r12 - add r6, r4, r6 - str r6, [sp, #0x20] - ldr r12, [r3, #0x4] - mov r5, r9, lsl #0xc - str r12, [sp, #0x1c] - ldr r12, [r3, #0xc] - rsb lr, r5, #0x0 - str r12, [sp, #0x18] - ldr r12, [sp, #0x1c] - ldr r4, [sp, #0x24] - mla r11, r12, r11, lr - ldr r12, [sp, #0x18] - subne r6, r6, r8 - mla r9, r12, r9, r11 - add r4, r4, r9 - str r4, [sp, #0x24] - subne r4, r4, r5 - strne r6, [sp, #0x20] - strne r4, [sp, #0x24] -_020B1E00: - cmp r10, #0x0 - beq _020B1E28 - ldr r6, [sp, #0x20] - ldr r4, [r10, #0x0] - ldr r5, [sp, #0x24] - add r4, r6, r4 - str r4, [sp, #0x20] - ldr r4, [r10, #0x4] - add r4, r5, r4 - str r4, [sp, #0x24] -_020B1E28: - ldr r4, [sp, #0x20] - ldr r6, [r7, #0x0] - add r5, r4, #0x800 - ldr r4, _020B1E9C ; =0x000001FF - and r4, r4, r5, asr #0xc - ldr r5, _020B1EA0 ; =0xFE00FF00 - and r6, r6, r5 - ldr r5, [sp, #0x24] - add r5, r5, #0x800 - mov r5, r5, asr #0xc - and r5, r5, #0xff - orr r5, r6, r5 - orr r4, r5, r4, lsl #0x10 - str r4, [r7, #0x0] -_020B1E60: - ldr r4, [sp, #0x0] - add r4, r4, #0x1 - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - str r4, [sp, #0x0] - cmp r4, r1 - blo _020B1B54 -_020B1E7C: - mov r0, r1 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B1E88: .word 0x01FF0000 -_020B1E8C: .word 0xC000C000 -_020B1E90: .word UNK_020FF8AC -_020B1E94: .word UNK_020FF894 -_020B1E98: .word 0xC1FFFCFF -_020B1E9C: .word 0x000001FF -_020B1EA0: .word 0xFE00FF00 - - arm_func_start FUN_020B1EA4 -FUN_020B1EA4: ; 0x020B1EA4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0518 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EC4 -FUN_020B1EC4: ; 0x020B1EC4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0534 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EE4 -FUN_020B1EE4: ; 0x020B1EE4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0438 - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B1EFC -FUN_020B1EFC: ; 0x020B1EFC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r4, r2 - ldr r2, [r4, #0xc] - mov r5, r1 - ldr r1, [r2, #0x0] - ldr r2, [sp, #0x34] - str r1, [sp, #0x0] - ldr r1, [sp, #0x38] - str r2, [sp, #0x4] - mov r6, r3 - mov r7, r0 - ldr r12, [sp, #0x3c] - str r1, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - mov r0, r6 - str r12, [sp, #0xc] - bl FUN_020B45F0 - str r6, [r7, #0x34] - str r4, [r7, #0x30] - add r0, r7, #0x38 - mov r1, #0x1 - str r6, [r7, #0x34] - bl FUN_020B1A68 - mov r0, r7 - bl FUN_020B04C0 - mov r0, r7 - mov r1, r5 - bl FUN_020B1EE4 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B1F80 -FUN_020B1F80: ; 0x020B1F80 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - str r2, [r5, #0x30] - mvn r2, #0x0 - add r0, r5, #0x38 - mov r1, #0x1 - str r2, [r5, #0x34] - bl FUN_020B1A68 - mov r0, r5 - bl FUN_020B04C0 - mov r0, r5 - mov r1, r4 - bl FUN_020B1EE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B1FC4 -FUN_020B1FC4: ; 0x020B1FC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldrh r1, [r1, #0x4] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl FUN_020B06E0 - mov r4, r0 - ldr r7, [r5, #0x30] - ldrh r1, [r4, #0x0] - mov r0, r7 - bl FUN_020AFE8C - str r0, [r5, #0x2c] - ldr r1, [r5, #0x18] - add r0, r5, #0x38 - ldr r2, [r1, #0x4] - mov r1, #0x1 - and r6, r2, #0xff - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2068 - cmp r6, #0x2 - bne _020B203C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r5, #0x38 - bl FUN_020B1AB4 - b _020B2068 -_020B203C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r5, #0x38 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r5, #0x38 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r5, #0x38 - bl FUN_020B1AB4 -_020B2068: - ldr r2, [r7, #0xc] - cmp r2, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r5, #0x34] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldrh r1, [r4, #0x0] - ldr r2, [r2, #0x4] - ldr r0, [r5, #0x34] - add r3, r2, r1, lsl #0x3 - ldr r1, [r2, r1, lsl #0x3] - ldr r2, [r3, #0x4] - bl FUN_020B4400 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B20C8 -FUN_020B20C8: ; 0x020B20C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r6, #0x0 - str r6, [r0, #0x38] - ldr r7, [sp, #0x30] - str r6, [r0, #0x30] - mov r10, r1 - str r7, [r0, #0x34] - str r0, [sp, #0x0] - movs r8, r3 - mov r9, r2 - str r10, [r0, #0x3c] - ldr r11, [sp, #0x34] - beq _020B215C - mov r0, #0x1 - str r6, [sp, #0x8] - str r0, [sp, #0x4] -_020B210C: - mov r0, #0x28 - mul r4, r6, r0 - ldr r1, [sp, #0x4] - add r0, r10, r4 - bl FUN_020B1AD4 - mov r0, #0x54 - mla r5, r6, r0, r9 - ldr r1, [sp, #0x8] - mov r0, r7 - str r5, [r10, r4] - bl FUN_020AFC04 - mov r1, r0 - mov r0, r5 - mov r2, r11 - bl FUN_020B1F80 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B210C -_020B215C: - ldr r0, [sp, #0x0] - bl FUN_020B04C0 - ldr r0, [sp, #0x0] - ldr r3, [sp, #0x38] - ldr r2, [sp, #0x0] - add r0, r0, #0x44 - mov r1, #0x1 - str r3, [r2, #0x40] - bl FUN_020B1A68 - ldr r0, [sp, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2c] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B2194 -FUN_020B2194: ; 0x020B2194 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0518 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r7 - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B2234 - cmp r5, #0x2 - bne _020B2208 - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B2234 -_020B2208: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B2234: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B224C -FUN_020B224C: ; 0x020B224C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r2, [r4, #0x0] - mov r6, r1 - ldrh r5, [r2, #0x4] - bl FUN_020B0534 - cmp r0, #0x0 - beq _020B2318 - ldrh r1, [r4, #0x2c] - mov r0, r4 - add r1, r1, r5 - strh r1, [r4, #0x2c] - bl FUN_020B06E0 - mov r5, r0 - ldrh r1, [r5, #0x0] - ldr r0, [r4, #0x40] - bl FUN_020AFF34 - ldr r1, [r4, #0x18] - mov r7, r0 - ldr r1, [r1, #0x4] - add r0, r4, #0x44 - and r6, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2300 - cmp r6, #0x2 - bne _020B22D4 - ldrsh r1, [r5, #0x4] - ldrsh r2, [r5, #0x6] - add r0, r4, #0x44 - bl FUN_020B1AB4 - b _020B2300 -_020B22D4: - ldr r1, [r5, #0x4] - ldr r2, [r5, #0x8] - add r0, r4, #0x44 - bl FUN_020B1A78 - ldrh r1, [r5, #0x2] - add r0, r4, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #0xe] - add r0, r4, #0x44 - bl FUN_020B1AB4 -_020B2300: - ldrh r2, [r4, #0x2c] - mov r1, r7 - add r0, r4, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B2318: - mov r1, r6 - add r0, r4, #0x30 - bl FUN_020B232C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B232C -FUN_020B232C: ; 0x020B232C - stmdb sp!, {r4-r8,lr} - mov r7, r0 - ldr r0, [r7, #0x8] - mov r6, r1 - cmp r0, #0x1 - bne _020B238C - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x2] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x58 -_020B2360: - mla r0, r5, r8, r4 - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x2] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2360 - ldmia sp!, {r4-r8,pc} -_020B238C: - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x28 -_020B23A8: - mul r0, r5, r8 - ldr r0, [r4, r0] - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B23A8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B23D8 -FUN_020B23D8: ; 0x020B23D8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldrh r0, [r5, #0x0] - mov r4, #0x0 - mov r6, r4 - cmp r0, #0x0 - bls _020B2424 -_020B23F4: - mov r0, r5 - mov r1, r6 - bl FUN_020AFF34 - ldrh r0, [r0, #0x0] - ldrh r1, [r5, #0x0] - cmp r0, r4 - movhi r4, r0 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020B23F4 -_020B2424: - mov r0, r4 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B242C -FUN_020B242C: ; 0x020B242C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0438 - mov r1, #0x0 - mov r0, r7 - strh r1, [r7, #0x2c] - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B24C8 - cmp r5, #0x2 - bne _020B249C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B24C8 -_020B249C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B24C8: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B24E0 -FUN_020B24E0: ; 0x020B24E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r1 - str r0, [sp, #0x0] - str r10, [r0, #0x0] - ldr r0, [r0, #0x8] - mov r9, r2 - cmp r0, #0x1 - bne _020B2654 - ldrh r1, [r10, #0x2] - ldr r0, [sp, #0x0] - mov r4, #0x0 - ldr r8, [r0, #0xc] - cmp r1, #0x0 - bls _020B2544 - mov r3, r4 - mov r0, #0x58 -_020B2524: - mla r1, r4, r0, r8 - str r3, [r1, #0x54] - add r1, r4, #0x1 - mov r1, r1, lsl #0x10 - ldrh r2, [r10, #0x2] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020B2524 -_020B2544: - ldrh r0, [r10, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - str r5, [sp, #0x4] - mov r11, #0x1 -_020B2560: - ldr r0, [r10, #0x4] - mov r1, #0x58 - add r7, r0, r5, lsl #0x3 - ldrh r0, [r7, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x10 - mla r6, r0, r1, r8 - ldr r0, [r6, #0x54] - cmp r0, #0x0 - bne _020B2634 - ldr r0, [sp, #0x0] - ldrh r1, [r7, #0x0] - ldr r0, [r0, #0x4] - bl FUN_020AFC04 - mov r4, r0 - mov r0, r6 - mov r1, r4 - bl FUN_020B1EE4 - str r11, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2630 - ldrh r1, [r4, #0x0] - ldr r7, [sp, #0x4] - mov r3, r7 - cmp r1, #0x0 - bls _020B25F0 - ldr r2, [r4, #0xc] -_020B25D8: - add r0, r2, r3, lsl #0x3 - ldrh r0, [r0, #0x4] - add r3, r3, #0x1 - cmp r3, r1 - add r7, r7, r0 - blo _020B25D8 -_020B25F0: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B261C - mov r0, r9 - mov r1, r7 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2630 -_020B261C: - cmp r9, r7 - movcc r7, r9 - mov r0, r6 - mov r1, r7, lsl #0xc - bl FUN_020B1EC4 -_020B2630: - str r11, [r6, #0x54] -_020B2634: - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2560 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} -_020B2654: - ldrh r1, [r10, #0x0] - ldr r0, [sp, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - ldr r11, [r0, #0xc] - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - str r4, [sp, #0xc] - str r0, [sp, #0x8] -_020B267C: - mov r0, #0x28 - mul r2, r4, r0 - ldr r3, [r10, #0x4] - mov r0, r4, lsl #0x3 - ldrh r1, [r3, r0] - ldr r0, [sp, #0x0] - ldr r6, [r11, r2] - ldr r0, [r0, #0x4] - add r7, r3, r4, lsl #0x3 - bl FUN_020AFC04 - mov r5, r0 - mov r0, r6 - mov r1, r5 - bl FUN_020B1EE4 - ldr r0, [sp, #0x8] - str r0, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2740 - ldrh r1, [r5, #0x0] - ldr r8, [sp, #0xc] - mov r0, r8 - cmp r1, #0x0 - bls _020B2700 - ldr r3, [r5, #0xc] -_020B26E4: - add r1, r3, r0, lsl #0x3 - ldrh r2, [r1, #0x4] - add r0, r0, #0x1 - ldrh r1, [r5, #0x0] - add r8, r8, r2 - cmp r0, r1 - blo _020B26E4 -_020B2700: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B272C - mov r0, r9 - mov r1, r8 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2740 -_020B272C: - cmp r9, r8 - movcc r8, r9 - mov r0, r6 - mov r1, r8, lsl #0xc - bl FUN_020B1EC4 -_020B2740: - mov r0, #0x28 - mla r3, r4, r0, r11 - ldr r0, [sp, #0x8] - str r0, [r3, #0x8] - ldrsh r1, [r7, #0x2] - ldrsh r2, [r7, #0x4] - add r0, r3, #0xc - bl FUN_020B1AB4 - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B267C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start thunk_FUN_020b5040 -thunk_FUN_020b5040: ; 0x020B2780 - ldr ip, _020B2788 ; =FUN_020B5040 - bx r12 - .balign 4 -_020B2788: .word FUN_020B5040 - - arm_func_start FUN_020B278C -FUN_020B278C: - ldr r0, [r0, #0x78] - bx lr - - arm_func_start FUN_020B2794 -FUN_020B2794: ; 0x020B2794 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr r2, _020B2894 ; =UNK_021CDD70 - mov lr, #0x0 - ldr r12, [r2, #0x0] - ldr r3, _020B2898 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x0] - str r1, [sp, #0xc] - mla r1, r12, r2, r3 - rsb r3, r0, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x8] - str lr, [sp, #0x10] - str lr, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B289C ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B28A0 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2824 - ldr r1, _020B28A4 ; =UNK_02106570 - ldr r0, _020B28A8 ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B2828 -_020B2824: - mov r0, #0x0 -_020B2828: - cmp r0, #0x0 - ldreq r1, _020B2894 ; =UNK_021CDD70 - ldreq r0, _020B28A4 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B28AC ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B288C -_020B2860: - b _020B2870 -_020B2864: - b _020B288C -_020B2868: - b _020B2870 -_020B286C: - b _020B2870 -_020B2870: - ldr r0, _020B28B0 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B288C: - add sp, sp, #0x1c - ldmia sp!, {pc} - .balign 4 -_020B2894: .word UNK_021CDD70 -_020B2898: .word UNK_021CDEF4 -_020B289C: .word UNK_021CE1F4 -_020B28A0: .word UNK_021CDD68 -_020B28A4: .word UNK_02106570 -_020B28A8: .word 0x0000FFFE -_020B28AC: .word UNK_021CDDF4 -_020B28B0: .word UNK_021CDD64 - - arm_func_start FUN_020B28B4 -FUN_020B28B4: ; 0x020B28B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r2, _020B29E8 ; =UNK_021CDD70 - mov r12, #0x0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r2, _020B29EC ; =UNK_021CDEF4 - mov r1, #0x18 - mla r1, r3, r1, r2 - mov r5, r0 - add r0, sp, #0x0 - mov r2, r1 - str r5, [sp, #0x0] - str r12, [sp, #0x4] - str r12, [sp, #0x8] - str r4, [sp, #0xc] - str r12, [sp, #0x10] - str r12, [sp, #0x14] - bl FUN_020B423C - mov r0, r5 - bl FX_Inv - mov r1, #0x0 - str r0, [sp, #0x0] - mov r0, r4 - str r1, [sp, #0x4] - str r1, [sp, #0x8] - bl FX_Inv - mov r3, #0x0 - ldr r1, _020B29E8 ; =UNK_021CDD70 - str r0, [sp, #0xc] - ldr r2, [r1, #0x0] - ldr r1, _020B29F0 ; =UNK_021CE1F4 - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x10] - str r3, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B29F4 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2978 - ldr r1, _020B29F8 ; =UNK_02106570 - ldr r0, _020B29FC ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B297C -_020B2978: - mov r0, #0x0 -_020B297C: - cmp r0, #0x0 - ldreq r1, _020B29E8 ; =UNK_021CDD70 - ldreq r0, _020B29F8 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B29E8 ; =UNK_021CDD70 - ldr r1, _020B2A00 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B29E0 -_020B29B4: - b _020B29C4 -_020B29B8: - b _020B29E0 -_020B29BC: - b _020B29C4 -_020B29C0: - b _020B29C4 -_020B29C4: - ldr r0, _020B2A04 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B29E0: - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B29E8: .word UNK_021CDD70 -_020B29EC: .word UNK_021CDEF4 -_020B29F0: .word UNK_021CE1F4 -_020B29F4: .word UNK_021CDD68 -_020B29F8: .word UNK_02106570 -_020B29FC: .word 0x0000FFFE -_020B2A00: .word UNK_021CDDF4 -_020B2A04: .word UNK_021CDD64 - - arm_func_start FUN_020B2A08 -FUN_020B2A08: ; 0x020B2A08 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r3, _020B2AEC ; =UNK_021CDD68 - mov r4, r2 - ldr r2, [r3, #0x0] - cmp r2, #0x0 - beq _020B2A6C - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov r3, #0x18 - ldr r2, [r2, #0x0] - ldr lr, _020B2AF4 ; =UNK_021CDF04 - mul r5, r2, r3 - ldr r3, [lr, r5] - ldr ip, _020B2AF8 ; =UNK_021CDF08 - add r0, r3, r0 - str r0, [lr, r5] - ldr r0, [r12, r5] - ldr r3, _020B2AFC ; =UNK_021CDD74 - add r0, r0, r1 - str r0, [r12, r5] - ldr r0, [r3, r2, lsl #0x2] - add sp, sp, #0x1c - add r0, r0, r4 - str r0, [r3, r2, lsl #0x2] - ldmia sp!, {r4-r5,pc} -_020B2A6C: - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov lr, #0x1000 - ldr r12, [r2, #0x0] - ldr r3, _020B2B00 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x14] - mla r1, r12, r2, r3 - mov r3, #0x0 - str r0, [sp, #0x10] - add r0, sp, #0x0 - mov r2, r1 - str lr, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - str lr, [sp, #0xc] - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r1, _020B2B04 ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r2, _020B2AFC ; =UNK_021CDD74 - ldr r1, [r0, #0x0] - ldr r0, [r2, r1, lsl #0x2] - add r0, r0, r4 - str r0, [r2, r1, lsl #0x2] - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B2AEC: .word UNK_021CDD68 -_020B2AF0: .word UNK_021CDD70 -_020B2AF4: .word UNK_021CDF04 -_020B2AF8: .word UNK_021CDF08 -_020B2AFC: .word UNK_021CDD74 -_020B2B00: .word UNK_021CDEF4 -_020B2B04: .word UNK_021CE1F4 - - arm_func_start FUN_020B2B08 -FUN_020B2B08: ; 0x020B2B08 - ldr r0, _020B2B4C ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - movle r0, #0x1 - movgt r0, #0x0 - cmp r0, #0x0 - bxne lr - ldr r1, _020B2B4C ; =UNK_021CDD70 - ldr r0, _020B2B50 ; =UNK_02106570 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0x0] - sub r3, r3, #0x1 - str r3, [r1, #0x0] - cmp r2, r3 - ldrgt r1, _020B2B54 ; =0x0000FFFE - strgth r1, [r0, #0x0] - bx lr - .balign 4 -_020B2B4C: .word UNK_021CDD70 -_020B2B50: .word UNK_02106570 -_020B2B54: .word 0x0000FFFE - - arm_func_start FUN_020B2B58 -FUN_020B2B58: ; 0x020B2B58 - stmdb sp!, {r4-r10,lr} - ldr r0, _020B2D74 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x7c] - ands r0, r0, #0x1 - bne _020B2CA4 - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r1, [r0, #0x0] - mov r0, r1, lsl #0x10 - add r5, r1, #0x1 - cmp r5, #0x20 - mov r4, r0, lsr #0x10 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - beq _020B2C44 - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2BE4 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r8, r3, r0 - ldr r6, _020B2D84 ; =UNK_021CDF04 - mul r7, r5, r0 - ldr r2, [r6, r8] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r6, r7] - ldr r2, [r3, r8] - str r0, [r1, r5, lsl #0x2] - str r2, [r3, r7] - b _020B2C3C -_020B2BE4: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r7, _020B2D80 ; =UNK_021CDD74 - mul lr, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r12, r5, r0 - ldr r8, _020B2D90 ; =UNK_021CE1F4 - add r10, r1, lr - ldr r6, [r7, r2, lsl #0x2] - add r9, r1, r12 - ldmia r10!, {r0-r3} - stmia r9!, {r0-r3} - ldmia r10, {r0-r1} - str r6, [r7, r5, lsl #0x2] - add r7, r8, lr - stmia r9, {r0-r1} - add r6, r8, r12 - ldmia r7!, {r0-r3} - stmia r6!, {r0-r3} - ldmia r7, {r0-r1} - stmia r6, {r0-r1} -_020B2C3C: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r5, [r0, #0x0] -_020B2C44: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r2, _020B2D94 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r5, r4, lsl #0x3 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - add r4, r2, r4, lsl #0x3 - mov r6, r3, lsl #0x3 - ldrh r1, [r2, r5] - ldrh r0, [r4, #0x2] - add r3, r2, r3, lsl #0x3 - strh r1, [r2, r6] - strh r0, [r3, #0x2] - ldrh r2, [r4, #0x4] - ldrh r0, [r4, #0x6] - ldr r1, _020B2D98 ; =UNK_021CDDF8 - strh r2, [r3, #0x4] - strh r0, [r3, #0x6] - ldrh r0, [r1, r5] - cmp r0, #0x1 - moveq r0, #0x2 - streqh r0, [r1, r6] - strneh r0, [r1, r6] - ldmia sp!, {r4-r10,pc} -_020B2CA4: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - add r4, r0, #0x1 - cmp r4, #0x20 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2D10 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r7, r3, r0 - ldr r5, _020B2D84 ; =UNK_021CDF04 - mul r6, r4, r0 - ldr r2, [r5, r7] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r5, r6] - ldr r2, [r3, r7] - str r0, [r1, r4, lsl #0x2] - str r2, [r3, r6] - b _020B2D68 -_020B2D10: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr ip, _020B2D80 ; =UNK_021CDD74 - mul r9, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r8, r4, r0 - ldr lr, _020B2D90 ; =UNK_021CE1F4 - add r6, r1, r9 - ldr r5, [r12, r2, lsl #0x2] - add r7, r1, r8 - ldmia r6!, {r0-r3} - stmia r7!, {r0-r3} - ldmia r6, {r0-r1} - add r6, lr, r9 - stmia r7, {r0-r1} - add lr, lr, r8 - ldmia r6!, {r0-r3} - stmia lr!, {r0-r3} - ldmia r6, {r0-r1} - stmia lr, {r0-r1} - str r5, [r12, r4, lsl #0x2] -_020B2D68: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r4, [r0, #0x0] - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B2D74: .word UNK_021CDD6C -_020B2D78: .word UNK_021CDD70 -_020B2D7C: .word UNK_021CDD68 -_020B2D80: .word UNK_021CDD74 -_020B2D84: .word UNK_021CDF04 -_020B2D88: .word UNK_021CDF08 -_020B2D8C: .word UNK_021CDEF4 -_020B2D90: .word UNK_021CE1F4 -_020B2D94: .word UNK_021CDDF4 -_020B2D98: .word UNK_021CDDF8 - - arm_func_start FUN_020B2D9C -FUN_020B2D9C: ; 0x020B2D9C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldrh r0, [r4, #0x56] - cmp r0, #0x0 - bne _020B2DBC - add r0, r4, #0x30 - bl FUN_020B2E78 - ldmia sp!, {r4-r6,pc} -_020B2DBC: - bl FUN_020B2B58 - ldrh r0, [r4, #0x56] - ands r0, r0, #0x8 - beq _020B2E0C - ldr r0, _020B2E70 ; =UNK_021CDD6C - ldrsh r6, [r4, #0x52] - ldr r0, [r0, #0x0] - ldrsh r5, [r4, #0x50] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B2E70 ; =UNK_021CDD6C - rsbne r5, r5, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r6, r6, #0x0 - mov r0, r5, lsl #0xc - mov r1, r6, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B2E0C: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x4 - beq _020B2E40 - ldrh r0, [r4, #0x54] - ldr r2, _020B2E74 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B2E40: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x2 - beq _020B2E5C - ldr r0, [r4, #0x48] - ldr r1, [r4, #0x4c] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B2E5C: - add r0, r4, #0x30 - bl FUN_020B2E78 - mov r0, #0x1 - bl FUN_020B2B08 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B2E70: .word UNK_021CDD6C -_020B2E74: .word UNK_020FFA38 - - arm_func_start FUN_020B2E78 -FUN_020B2E78: ; 0x020B2E78 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x1 - bne _020B309C - ldr r0, [r5, #0x0] - mov r2, #0x0 - ldrh r0, [r0, #0x2] - cmp r0, #0x0 - bls _020B2ED0 - ldr r3, _020B3174 ; =UNK_021CE8F4 - mov r4, r2 -_020B2EAC: - add r0, r3, r2, lsl #0x2 - str r4, [r0, #0x4] - ldr r0, [r5, #0x0] - add r2, r2, #0x1 - ldrh r1, [r0, #0x2] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0x10 - cmp r2, r1 - blo _020B2EAC -_020B2ED0: - ldr r0, _020B3178 ; =UNK_021CDD6C - mov r6, #0x1 - ldr r1, [r0, #0x0] - ldr r0, _020B3174 ; =UNK_021CE8F4 - str r6, [r0, #0x404] - ldr r0, [r1, #0x80] - cmp r0, #0x0 - beq _020B2FD8 - bl FUN_020B4948 - str r0, [sp, #0x0] - mov r0, r6 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B2FC0 - mov r11, r7 -_020B2F28: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - mov r2, r11 - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mov r0, #0x58 - mla r0, r8, r0, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2F28 -_020B2FC0: - mov r0, #0x0 - bl FUN_020B497C - ldr r0, [sp, #0x0] - bl FUN_020B4958 - bl FUN_020B4968 - b _020B3088 -_020B2FD8: - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B3088 - str r7, [sp, #0x4] - mov r11, #0x58 -_020B2FF4: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - ldr r2, [sp, #0x4] - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mla r0, r8, r11, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2FF4 -_020B3088: - ldr r0, _020B3174 ; =UNK_021CE8F4 - mov r1, #0x0 - str r1, [r0, #0x404] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B309C: - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r7, [r5, #0xc] - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - cmp r0, #0x0 - beq _020B312C - bl FUN_020B4948 - mov r6, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bls _020B3110 - mov r8, #0x28 -_020B30EC: - mla r0, r4, r8, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B30EC -_020B3110: - mov r0, #0x0 - bl FUN_020B497C - mov r0, r6 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B312C: - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0xc - ldmlsia sp!, {r4-r11,pc} - mov r6, #0x28 -_020B3148: - mla r0, r4, r6, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B3148 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3174: .word UNK_021CE8F4 -_020B3178: .word UNK_021CDD6C - - arm_func_start FUN_020B317C -FUN_020B317C: ; 0x020B317C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B31EC ; =UNK_021CDD6C - mov r5, r0 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x80] - cmp r1, #0x0 - beq _020B31E0 - bl FUN_020B4948 - mov r4, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B31EC ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - mov r0, r5 - bl FUN_020B3554 - mov r0, #0x0 - bl FUN_020B497C - mov r0, r4 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B31E0: - bl FUN_020B3554 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B31EC: .word UNK_021CDD6C - - arm_func_start FUN_020B31F0 -FUN_020B31F0: ; 0x020B31F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B3260 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020B3264 ; =UNK_021CDD6C - str r2, [r1, #0x0] - ldr r2, [r0, #0x0] - ldr r3, [r2, #0x7c] - cmp r3, #0x0 - beq _020B324C - ands r0, r3, #0x1 - ldrne r0, _020B3268 ; =UNK_021CDD68 - movne r1, #0x0 - strne r1, [r0, #0x0] - ands r0, r3, #0x2 - beq _020B323C - mov r0, #0x0 - str r0, [r2, #0x74] - bl FUN_020B4DA0 -_020B323C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x7c] -_020B324C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B3260: .word 0x04000448 -_020B3264: .word UNK_021CDD6C -_020B3268: .word UNK_021CDD68 - - arm_func_start FUN_020B326C -FUN_020B326C: ; 0x020B326C - stmdb sp!, {r4-r8,lr} - ldr r5, _020B330C ; =UNK_021CDD60 - ldr r3, _020B3310 ; =UNK_021CDD6C - ldrh r6, [r5, #0x0] - ldr r2, _020B3314 ; =UNK_021CDD70 - mov r4, #0x0 - ldr r7, _020B3318 ; =0x0000FFFE - ldr r1, _020B331C ; =UNK_02106570 - str r0, [r3, #0x0] - str r4, [r2, #0x0] - strh r7, [r1, #0x0] - cmp r6, #0x0 - ble _020B32D0 - ldr r8, _020B3320 ; =UNK_021CE4F4 - mvn r7, #0x0 - mov r6, #0x10 -_020B32AC: - mov r0, r7 - mov r2, r6 - add r1, r8, #0x10 - bl MIi_CpuClearFast - ldrh r0, [r5, #0x0] - add r4, r4, #0x1 - add r8, r8, #0x20 - cmp r4, r0 - blt _020B32AC -_020B32D0: - ldr r4, _020B330C ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3324 ; =UNK_021CDD64 - ldr r1, _020B3328 ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r4, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r1, _020B332C ; =0x04000444 - mov r2, #0x0 - ldr r0, _020B3330 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bl FUN_020B4178 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B330C: .word UNK_021CDD60 -_020B3310: .word UNK_021CDD6C -_020B3314: .word UNK_021CDD70 -_020B3318: .word 0x0000FFFE -_020B331C: .word UNK_02106570 -_020B3320: .word UNK_021CE4F4 -_020B3324: .word UNK_021CDD64 -_020B3328: .word UNK_021CDDF4 -_020B332C: .word 0x04000444 -_020B3330: .word 0x04000454 - - arm_func_start FUN_020B3334 -FUN_020B3334: ; 0x020B3334 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x48 - bl MIi_CpuClear16 - mov r0, #0x1 - str r0, [r4, #0x10] - mov r0, #0x3 - ldr r1, _020B3380 ; =FUN_020B3EE0 - str r0, [r4, #0x14] - ldr r0, _020B3384 ; =FUN_020B3E48 - str r1, [r4, #0x18] - ldr r1, _020B3388 ; =FUN_020B3C40 - str r0, [r4, #0x1c] - ldr r0, _020B338C ; =FUN_020B3B90 - str r1, [r4, #0x20] - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020B3380: .word FUN_020B3EE0 -_020B3384: .word FUN_020B3E48 -_020B3388: .word FUN_020B3C40 -_020B338C: .word FUN_020B3B90 - - arm_func_start FUN_020B3390 -FUN_020B3390: ; 0x020B3390 - ldr r2, [r0, #0x70] - str r2, [r1, #0x30] - str r1, [r0, #0x70] - bx lr - - arm_func_start FUN_020B33A0 -FUN_020B33A0: ; 0x020B33A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl FUN_020B504C - mov r7, #0x0 - str r7, [r4, #0x70] - str r7, [r4, #0x74] - str r7, [r4, #0x78] - str r7, [r4, #0x7c] - str r7, [r4, #0x80] - str r7, [r4, #0x84] - strh r7, [r4, #0x88] - strh r7, [r4, #0x8a] - str r7, [r4, #0x8c] - str r7, [r4, #0x90] - ldr r1, _020B3454 ; =UNK_021CDD70 - strh r7, [r4, #0x94] - ldr r2, _020B3458 ; =0x0000FFFE - ldr r0, _020B345C ; =UNK_02106570 - ldr r6, _020B3460 ; =UNK_021CE4F4 - str r7, [r1, #0x0] - strh r2, [r0, #0x0] - mvn r5, #0x0 - mov r4, #0x10 -_020B3400: - mov r0, r5 - mov r2, r4 - add r1, r6, #0x10 - bl MIi_CpuClearFast - add r7, r7, #0x1 - cmp r7, #0x20 - add r6, r6, #0x20 - blt _020B3400 - ldr ip, _020B3464 ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3468 ; =UNK_021CDD64 - ldr r1, _020B346C ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r12, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B3470 ; =UNK_021CDD68 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B3454: .word UNK_021CDD70 -_020B3458: .word 0x0000FFFE -_020B345C: .word UNK_02106570 -_020B3460: .word UNK_021CE4F4 -_020B3464: .word UNK_021CDD60 -_020B3468: .word UNK_021CDD64 -_020B346C: .word UNK_021CDDF4 -_020B3470: .word UNK_021CDD68 - - arm_func_start FUN_020B3474 -FUN_020B3474: ; 0x020B3474 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r4, [r5, #0x0] - bl FUN_020B2B58 - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x8 - beq _020B34E4 - ldr r0, _020B354C ; =UNK_021CDD6C - ldrsh r7, [r5, #0x1a] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x18] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B354C ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B34E4: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x4 - beq _020B3518 - ldrh r0, [r5, #0x1c] - ldr r2, _020B3550 ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3518: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x2 - beq _020B3534 - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3534: - mov r0, r4 - bl FUN_020B3554 - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B354C: .word UNK_021CDD6C -_020B3550: .word UNK_020FFA38 - - arm_func_start FUN_020B3554 -FUN_020B3554: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x4a] - ldr r4, [r5, #0x2c] - cmp r0, #0x0 - bne _020B35C0 - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B35B0 - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35B0: - mov r0, r4 - bl FUN_020B36C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35C0: - bl FUN_020B2B58 - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x8 - beq _020B3610 - ldr r0, _020B36B8 ; =UNK_021CDD6C - ldrsh r7, [r5, #0x46] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x44] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B36B8 ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B3610: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x4 - beq _020B3644 - ldrh r0, [r5, #0x48] - ldr r2, _020B36BC ; =UNK_020FFA38 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3644: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x2 - beq _020B3660 - ldr r0, [r5, #0x3c] - ldr r1, [r5, #0x40] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3660: - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B369C - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - b _020B36A4 -_020B369C: - mov r0, r4 - bl FUN_020B36C0 -_020B36A4: - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B36B4: .word UNK_02106574 -_020B36B8: .word UNK_021CDD6C -_020B36BC: .word UNK_020FFA38 - - arm_func_start FUN_020B36C0 -FUN_020B36C0: ; 0x020B36C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r5, _020B3B54 ; =UNK_021CDD6C - mov r10, r0 - ldr r0, [r5, #0x0] - ldr r1, [r0, #0x7c] - str r0, [sp, #0x0] - ldr r9, [r0, #0x70] - ands r0, r1, #0x2 - beq _020B38EC - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3840 - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3720 - ldr r2, _020B3B5C ; =UNK_02106570 - ldr r0, _020B3B60 ; =0x0000FFFE - ldrh r2, [r2, #0x0] - cmp r2, r0 - movne r0, #0x1 - bne _020B3724 -_020B3720: - mov r0, #0x0 -_020B3724: - cmp r0, #0x0 - beq _020B37AC - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r1, [r0, #0x404] - cmp r1, #0x0 - beq _020B3788 - ldrh r1, [r0, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - ldr r1, [r0, r1, lsl #0x2] - cmp r1, #0x0 - bne _020B37AC - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r2, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r1, _020B3B64 ; =UNK_021CE8F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r3, [r2, r0] - ldr r4, _020B3B74 ; =UNK_021CE4F4 - ldrh r2, [r1, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - add r1, r4, r3, lsl #0x5 - str r1, [r0, r2, lsl #0x2] - b _020B37AC -_020B3788: - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r2, _020B3B74 ; =UNK_021CE4F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r0, [r1, r0] - add r1, r2, r0, lsl #0x5 -_020B37AC: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r3, _020B3B78 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r3 - beq _020B37FC - ldr r2, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r2, #0x0] - ldr r3, _020B3B7C ; =UNK_021CDF04 - mul r4, r2, r0 - ldr r2, _020B3B80 ; =UNK_021CDF08 - ldr r3, [r3, r4] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r2, r4] - str r3, [r0, #0x10] - str r2, [r0, #0x14] -_020B37FC: - bl FUN_020B4FAC - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B3830 - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3830: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3840: - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r2, _020B3B78 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r2 - beq _020B38A8 - ldr r1, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r1, [r1, #0x0] - ldr r2, _020B3B7C ; =UNK_021CDF04 - mul r3, r1, r0 - ldr r1, _020B3B80 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r1, [r1, r3] - str r2, [r0, #0x10] - str r1, [r0, #0x14] -_020B38A8: - bl FUN_020B4FC4 - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B38DC - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38DC: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38EC: - cmp r9, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r11,pc} - ldr r4, _020B3B6C ; =UNK_021CDD70 - ldr fp, _020B3B78 ; =UNK_021CDEF4 - mov r7, #0x0 - mov r6, #0x1 -_020B3908: - ldr r0, [r9, #0x10] - cmp r0, #0x0 - beq _020B3B40 - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3A8C - ldr r8, [r5, #0x0] - mov r1, r9 - str r9, [r8, #0x74] - mov r0, r8 - bl FUN_020B4F9C - ldr r1, [r9, #0x28] - ldr r2, [r9, #0x2c] - mov r0, r8 - bl FUN_020B5034 - mov r0, r8 - bl FUN_020B4E0C - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, r7 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3978 - ldr r0, _020B3B5C ; =UNK_02106570 - ldrh r2, [r0, #0x0] - ldr r0, _020B3B60 ; =0x0000FFFE - cmp r2, r0 - movne r0, r6 - bne _020B397C -_020B3978: - mov r0, r7 -_020B397C: - cmp r0, #0x0 - beq _020B3A04 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r0, [r0, #0x404] - cmp r0, #0x0 - beq _020B39E4 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldrh r1, [r0, #0x0] - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020B3A04 - bl FUN_020B4010 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r2, [r4, #0x0] - ldrh r1, [r0, #0x0] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r3, [r0, r2] - ldr r0, _020B3B64 ; =UNK_021CE8F4 - add r2, r0, r1, lsl #0x2 - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r3, lsl #0x5 - str r1, [r2, #0x4] - b _020B3A04 -_020B39E4: - bl FUN_020B4010 - ldr r0, [r4, #0x0] - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r1, [r0, r1] - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r1, lsl #0x5 -_020B3A04: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r2, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r11 - beq _020B3A44 - ldr r2, [r4, #0x0] - mov r0, #0x18 - mla r8, r2, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r3, [r8, #0x10] - mov r2, r0 - str r3, [r2, #0x10] - ldr r3, [r8, #0x14] - str r3, [r2, #0x14] -_020B3A44: - bl FUN_020B4FAC - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3A74 - mov r0, r10 - bl FUN_020B4BF4 - b _020B3A7C -_020B3A74: - mov r0, r10 - bl FUN_020B4CDC -_020B3A7C: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 - b _020B3B40 -_020B3A8C: - ldr r8, [r5, #0x0] - mov r1, r9 - mov r0, r8 - str r9, [r8, #0x74] - bl FUN_020B4F9C - mov r0, r8 - bl FUN_020B4E0C - ldr r2, [r4, #0x0] - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r1, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r11 - beq _020B3AFC - ldr r1, [r4, #0x0] - mov r0, #0x18 - mla r3, r1, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r3, #0x10] - mov r1, r0 - str r2, [r1, #0x10] - ldr r2, [r3, #0x14] - str r2, [r1, #0x14] -_020B3AFC: - bl FUN_020B4FC4 - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3B2C - mov r0, r10 - bl FUN_020B4BF4 - b _020B3B34 -_020B3B2C: - mov r0, r10 - bl FUN_020B4CDC -_020B3B34: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 -_020B3B40: - ldr r9, [r9, #0x30] - cmp r9, #0x0 - bne _020B3908 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3B54: .word UNK_021CDD6C -_020B3B58: .word UNK_021CDD68 -_020B3B5C: .word UNK_02106570 -_020B3B60: .word 0x0000FFFE -_020B3B64: .word UNK_021CE8F4 -_020B3B68: .word UNK_021CE8F8 -_020B3B6C: .word UNK_021CDD70 -_020B3B70: .word UNK_021CDDF4 -_020B3B74: .word UNK_021CE4F4 -_020B3B78: .word UNK_021CDEF4 -_020B3B7C: .word UNK_021CDF04 -_020B3B80: .word UNK_021CDF08 -_020B3B84: .word UNK_02106578 -_020B3B88: .word UNK_02106574 -_020B3B8C: .word UNK_021CDD74 - - arm_func_start FUN_020B3B90 -FUN_020B3B90: ; 0x020B3B90 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r0, _020B3C24 ; =UNK_021CDD6C - mov r12, r1 - ldr r0, [r0, #0x0] - mov r3, r2 - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x44] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3C28 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3C2C ; =UNK_021CDD70 - ldreq r4, _020B3C30 ; =UNK_021CDEF4 - ldreq lr, [r2, #0x0] - moveq r2, #0x18 - mlaeq r6, lr, r2, r4 - beq _020B3C0C - ldr lr, _020B3C2C ; =UNK_021CDD70 - mov r2, #0x18 - ldr lr, [lr, #0x0] - ldr r4, _020B3C34 ; =UNK_021CDF04 - mul r5, lr, r2 - ldr r2, _020B3C38 ; =UNK_021CDF08 - ldr r4, [r4, r5] - ldr r6, _020B3C3C ; =UNK_02106578 - ldr r2, [r2, r5] - str r4, [r6, #0x10] - str r2, [r6, #0x14] -_020B3C0C: - str r6, [sp, #0x0] - ldr lr, [r1, #0x44] - mov r2, r12 - blx lr - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3C24: .word UNK_021CDD6C -_020B3C28: .word UNK_021CDD68 -_020B3C2C: .word UNK_021CDD70 -_020B3C30: .word UNK_021CDEF4 -_020B3C34: .word UNK_021CDF04 -_020B3C38: .word UNK_021CDF08 -_020B3C3C: .word UNK_02106578 - - arm_func_start FUN_020B3C40 -FUN_020B3C40: ; 0x020B3C40 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r3, _020B3E2C ; =UNK_021CDD6C - add r4, r0, #0x38 - ldr r0, [r3, #0x0] - mov r6, r1 - mov r5, r2 - bl FUN_020B278C - cmp r0, #0x0 - beq _020B3C90 - ldrh r1, [r4, #0x4] - and r1, r1, #0xf000 - mov r1, r1, lsl #0x4 - mov r1, r1, lsr #0x10 - bl FUN_020B10B0 - ldr r1, [r4, #0x4] - and r0, r0, #0xf - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3C90: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - cmp r0, #0x0 - beq _020B3DA4 - ldr r0, [r1, #0x84] - ands r0, r0, #0x1 - beq _020B3CC8 - ldrh r0, [r1, #0x88] - ldr r1, [r4, #0x4] - bic r1, r1, #0xc00 - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0xa - str r0, [r4, #0x4] -_020B3CC8: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x2 - beq _020B3CF4 - ldrh r0, [r1, #0x8a] - ldr r1, [r4, #0x4] - bic r1, r1, #0xf000 - and r0, r0, #0xf - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3CF4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x10 - beq _020B3D2C - ldr r2, [r4, #0x4] - ldrh r0, [r1, #0x94] - mov r1, r2, lsl #0x10 - bic r2, r2, #0xf000 - add r0, r0, r1, lsr #0x1c - and r0, r0, #0xf - and r0, r0, #0xf - orr r0, r2, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3D2C: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x4 - beq _020B3D60 - ldr r0, [r1, #0x90] - cmp r0, #0x0 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x1000 - strne r0, [r4, #0x0] - ldreq r0, [r4, #0x0] - biceq r0, r0, #0x1000 - streq r0, [r4, #0x0] -_020B3D60: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x8 - beq _020B3DA4 - ldr r0, [r4, #0x0] - ldrh r2, [r4, #0x4] - ldr r1, [r1, #0x8c] - bic r0, r0, #0xc00 - orr r0, r0, r1, lsl #0xa - str r0, [r4, #0x0] - ldrh r0, [r4, #0x4] - and r1, r2, #0xf000 - mov r1, r1, asr #0xc - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #0xc - strh r0, [r4, #0x4] -_020B3DA4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x40] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3E30 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3E34 ; =UNK_021CDD70 - ldreq r4, _020B3E38 ; =UNK_021CDEF4 - ldreq r3, [r2, #0x0] - moveq r2, #0x18 - mlaeq r4, r3, r2, r4 - beq _020B3E10 - ldr r3, _020B3E34 ; =UNK_021CDD70 - mov r2, #0x18 - ldr r4, [r3, #0x0] - ldr r3, _020B3E3C ; =UNK_021CDF04 - mul r12, r4, r2 - ldr r2, _020B3E40 ; =UNK_021CDF08 - ldr r3, [r3, r12] - ldr r4, _020B3E44 ; =UNK_02106578 - ldr r2, [r2, r12] - str r3, [r4, #0x10] - str r2, [r4, #0x14] -_020B3E10: - str r4, [sp, #0x0] - ldr r4, [r1, #0x40] - mov r2, r6 - mov r3, r5 - blx r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3E2C: .word UNK_021CDD6C -_020B3E30: .word UNK_021CDD68 -_020B3E34: .word UNK_021CDD70 -_020B3E38: .word UNK_021CDEF4 -_020B3E3C: .word UNK_021CDF04 -_020B3E40: .word UNK_021CDF08 -_020B3E44: .word UNK_02106578 - - arm_func_start FUN_020B3E48 -FUN_020B3E48: ; 0x020B3E48 - stmdb sp!, {r4,lr} - ldr r0, _020B3EC4 ; =UNK_021CDD6C - mov r2, r1 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r3, [r1, #0x3c] - cmp r3, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020B3EC8 ; =UNK_021CDD68 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - ldreq r3, _020B3ECC ; =UNK_021CDD70 - ldreq lr, _020B3ED0 ; =UNK_021CDEF4 - ldreq r12, [r3, #0x0] - moveq r3, #0x18 - mlaeq r3, r12, r3, lr - beq _020B3EB8 - ldr ip, _020B3ECC ; =UNK_021CDD70 - mov r3, #0x18 - ldr r12, [r12, #0x0] - ldr lr, _020B3ED4 ; =UNK_021CDF04 - mul r4, r12, r3 - ldr ip, _020B3ED8 ; =UNK_021CDF08 - ldr lr, [lr, r4] - ldr r3, _020B3EDC ; =UNK_02106578 - ldr r12, [r12, r4] - str lr, [r3, #0x10] - str r12, [r3, #0x14] -_020B3EB8: - ldr r12, [r1, #0x3c] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020B3EC4: .word UNK_021CDD6C -_020B3EC8: .word UNK_021CDD68 -_020B3ECC: .word UNK_021CDD70 -_020B3ED0: .word UNK_021CDEF4 -_020B3ED4: .word UNK_021CDF04 -_020B3ED8: .word UNK_021CDF08 -_020B3EDC: .word UNK_02106578 - - arm_func_start FUN_020B3EE0 -FUN_020B3EE0: ; 0x020B3EE0 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B3FF4 ; =UNK_021CDD6C - mov r6, r0 - ldr r0, [r2, #0x0] - mov r5, r1 - ldr r4, [r0, #0x74] - ldr r0, [r4, #0x34] - cmp r0, #0x0 - beq _020B3F7C - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r1, _020B4000 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r1, r2, r0, r1 - beq _020B3F54 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r3, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r2, [r1, r3] - ldr r1, _020B400C ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r1, #0x10] - str r0, [r1, #0x14] -_020B3F54: - ldr r3, [r4, #0x34] - mov r0, r5 - mov r2, r4 - blx r3 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r6, #0x30] - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r6, #0x30] -_020B3F7C: - ldr r0, [r4, #0x38] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r2, _020B4000 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r3, r1, r0, r2 - beq _020B3FD8 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r6, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r1, [r1, r6] - ldr r3, _020B400C ; =UNK_02106578 - ldr r0, [r0, r6] - str r1, [r3, #0x10] - str r0, [r3, #0x14] -_020B3FD8: - ldr r0, _020B3FF4 ; =UNK_021CDD6C - ldr r6, [r4, #0x38] - ldr r0, [r0, #0x0] - mov r1, r4 - mov r2, r5 - blx r6 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3FF4: .word UNK_021CDD6C -_020B3FF8: .word UNK_021CDD68 -_020B3FFC: .word UNK_021CDD70 -_020B4000: .word UNK_021CDEF4 -_020B4004: .word UNK_021CDF04 -_020B4008: .word UNK_021CDF08 -_020B400C: .word UNK_02106578 - - arm_func_start FUN_020B4010 -FUN_020B4010: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4158 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r0, lsl #0x10 - add r3, r1, r0, lsr #0xd - ldrh r0, [r3, #0x4] - cmp r0, #0x1 - beq _020B4044 - cmp r0, #0x2 - movne r2, #0x0 -_020B4044: - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B415C ; =UNK_021CDD60 - mov r2, #0x10 - ldrh r4, [r0, #0x0] - cmp r4, #0x1f - addcc r1, r4, #0x1 - strcch r1, [r0, #0x0] - ldr r0, _020B4160 ; =UNK_021CE4F4 - ldrh r5, [r3, #0x2] - add r0, r0, r4, lsl #0x5 - add r1, r0, #0x10 - mvn r0, #0x0 - strh r4, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4164 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsl #0x10 - cmp r2, #0x0 - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r1, r1, lsr #0xd - ldrh r1, [r3, r1] - ldr r3, _020B4160 ; =UNK_021CE4F4 - moveq r2, #0x18 - add r1, r3, r1, lsl #0x5 - ldreq r3, _020B4168 ; =UNK_021CE1F4 - mlaeq r12, r0, r2, r3 - beq _020B40E4 - mov r2, #0x18 - mul r3, r0, r2 - ldr r2, _020B416C ; =UNK_021CDF04 - ldr r0, _020B4170 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr ip, _020B4174 ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r12, #0x10] - str r0, [r12, #0x14] -_020B40E4: - ldr r2, [r12, #0x0] - ldr r0, _020B4154 ; =UNK_021CDD70 - str r2, [r1, #0x0] - ldr r2, [r12, #0x4] - str r2, [r1, #0x4] - ldr r2, [r12, #0x8] - str r2, [r1, #0x8] - ldr r2, [r12, #0xc] - str r2, [r1, #0xc] - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - movs lr, r0, lsr #0x10 - addmi sp, sp, #0x4 - ldmmiia sp!, {r4-r5,pc} - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r0, #0x3 -_020B4124: - add r2, r3, lr, lsl #0x3 - ldrh r1, [r2, #0x2] - mov r12, lr, lsl #0x3 - cmp r5, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - strh r0, [r2, #0x4] - strh r4, [r3, r12] - subs lr, lr, #0x1 - bpl _020B4124 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4154: .word UNK_021CDD70 -_020B4158: .word UNK_021CDDF4 -_020B415C: .word UNK_021CDD60 -_020B4160: .word UNK_021CE4F4 -_020B4164: .word UNK_021CDD68 -_020B4168: .word UNK_021CE1F4 -_020B416C: .word UNK_021CDF04 -_020B4170: .word UNK_021CDF08 -_020B4174: .word UNK_02106578 - - arm_func_start FUN_020B4178 -FUN_020B4178: ; 0x020B4178 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4220 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B41B8 - ldr r1, _020B4224 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r12, [r1, #0x0] - ldr r1, _020B4228 ; =UNK_021CDF04 - mul r3, r12, r0 - mov r2, #0x0 - ldr r0, _020B422C ; =UNK_021CDF08 - str r2, [r1, r3] - str r2, [r0, r3] - b _020B420C -_020B41B8: - ldr r0, _020B4224 ; =UNK_021CDD70 - mov lr, #0x18 - ldr r1, [r0, #0x0] - ldr r4, _020B4230 ; =UNK_021CDEF4 - mul r3, r1, lr - mov r2, #0x1000 - str r2, [r4, r3] - add r5, r4, r3 - mov r1, #0x0 - str r1, [r5, #0x4] - str r1, [r5, #0x8] - str r2, [r5, #0xc] - str r1, [r5, #0x10] - str r1, [r5, #0x14] - ldr r12, [r0, #0x0] - ldr r4, _020B4234 ; =UNK_021CE1F4 - ldmia r5!, {r0-r3} - mla lr, r12, lr, r4 - stmia lr!, {r0-r3} - ldmia r5, {r0-r1} - stmia lr, {r0-r1} -_020B420C: - ldr r0, _020B4238 ; =UNK_021CDD74 - mov r1, #0x0 - str r1, [r0, r12, lsl #0x2] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4220: .word UNK_021CDD68 -_020B4224: .word UNK_021CDD70 -_020B4228: .word UNK_021CDF04 -_020B422C: .word UNK_021CDF08 -_020B4230: .word UNK_021CDEF4 -_020B4234: .word UNK_021CE1F4 -_020B4238: .word UNK_021CDD74 - - arm_func_start FUN_020B423C -FUN_020B423C: ; 0x020B423C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - ldr r4, [r0, #0x4] - ldr r3, [r1, #0x8] - mov r12, r2 - smull r6, r5, r4, r3 - ldr r4, [r0, #0x0] - ldr r3, [r1, #0x0] - cmp r12, r1 - smlal r6, r5, r4, r3 - mov r3, r6, lsr #0xc - addeq r2, sp, #0x0 - orr r3, r3, r5, lsl #0x14 - str r3, [r2, #0x0] - ldr r4, [r0, #0x4] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x0] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - add lr, sp, #0x0 - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x4] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - cmp r2, lr - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x8] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0xc] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x10] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - ldr r4, [r1, #0x10] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - add r3, r4, r3 - str r3, [r2, #0x10] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x10] - ldr r0, [r1, #0x4] - smull r6, r3, r4, r3 - smlal r6, r3, r5, r0 - mov r0, r6, lsr #0xc - ldr r1, [r1, #0x14] - orr r0, r0, r3, lsl #0x14 - add r0, r1, r0 - str r0, [r2, #0x14] - ldmeqia lr!, {r0-r3} - stmeqia r12!, {r0-r3} - ldmeqia lr, {r0-r1} - stmeqia r12, {r0-r1} - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B4358 -FUN_020B4358: ; 0x020B4358 - stmdb sp!, {r4,lr} - ldr r2, _020B43A0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r4, r0, r1, r2 - mov r0, r4 - bl FUN_020B10CC - mov r0, #0x0 - str r0, [r4, #0xc] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - str r0, [r4, #0x20] - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - .balign 4 -_020B43A0: .word UNK_021CED04 - - arm_func_start FUN_020B43A4 -FUN_020B43A4: ; 0x020B43A4 - ldr r1, _020B43F8 ; =UNK_021CED00 - mov r0, #0x0 - ldr r3, [r1, #0x0] - cmp r3, #0x0 - bls _020B43F0 - ldr r1, _020B43FC ; =UNK_021CED04 - ldr r2, [r1, #0x0] - mov r12, r2 -_020B43C4: - ldr r1, [r12, #0x1c] - cmp r1, #0x1 - movne r1, #0x30 - mlane r1, r0, r1, r2 - movne r2, #0x1 - strne r2, [r1, #0x1c] - bxne lr - add r0, r0, #0x1 - cmp r0, r3 - add r12, r12, #0x30 - blo _020B43C4 -_020B43F0: - mvn r0, #0x0 - bx lr - .balign 4 -_020B43F8: .word UNK_021CED00 -_020B43FC: .word UNK_021CED04 - - arm_func_start FUN_020B4400 -FUN_020B4400: ; 0x020B4400 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - bl FUN_020B469C - mvn r1, #0x0 - str r1, [r0, #0x24] - str r5, [r0, #0x28] - str r4, [r0, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B442C -FUN_020B442C: ; 0x020B442C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - ldr r0, [sp, #0x0] - mov r5, #0x1 - str r0, [sp, #0x4] - mov r11, r0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] -_020B4468: - ldr r0, _020B455C ; =UNK_021CED04 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x4] - add r8, r1, r0 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B4528 - ldr r9, [sp, #0x8] - mov r0, r9 - cmp r0, #0x3 - bge _020B4520 - add r4, r8, #0x24 -_020B4498: - mov r6, r5, lsl r9 - mov r1, r11 - ldr r0, [r8, #0x24] - ands r0, r0, r6 - beq _020B44B8 - ldr r0, [r8, #0x20] - ands r0, r0, r6 - movne r1, r5 -_020B44B8: - cmp r1, #0x0 - beq _020B4514 - ldr r0, _020B4560 ; =UNK_020FF8C4 - cmp r9, #0x0 - ldr r7, [r0, r9, lsl #0x2] - ldreq r10, [r8, #0x14] - mov r0, r8 - mov r1, r9 - ldrne r10, [r8, #0x10] - bl FUN_020B10BC - mov r1, r0 - mov r0, r7 - ldr r7, _020B4564 ; =UNK_021CECFC - ldr r2, [r8, #0x28] - ldr r3, [r8, #0x2c] - ldr r7, [r7, #0x0] - add r2, r10, r2 - blx r7 - cmp r0, #0x0 - ldrne r1, [r4, #0x0] - mvnne r0, r6 - andne r0, r1, r0 - strne r0, [r4, #0x0] -_020B4514: - add r9, r9, #0x1 - cmp r9, #0x3 - blt _020B4498 -_020B4520: - ldr r0, [sp, #0xc] - str r0, [r8, #0x20] -_020B4528: - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x0] - add r0, r0, #0x1 - str r0, [sp, #0x0] - cmp r0, r1 - ldr r0, [sp, #0x4] - add r0, r0, #0x30 - str r0, [sp, #0x4] - blo _020B4468 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B4558: .word UNK_021CED00 -_020B455C: .word UNK_021CED04 -_020B4560: .word UNK_020FF8C4 -_020B4564: .word UNK_021CECFC - - arm_func_start FUN_020B4568 -FUN_020B4568: ; 0x020B4568 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B45E4 ; =UNK_021CECFC - movs r6, r1 - ldr r1, _020B45E8 ; =UNK_021CED00 - ldr r3, _020B45EC ; =UNK_021CED04 - mov r7, r0 - str r2, [r12, #0x0] - mov r5, #0x0 - addeq sp, sp, #0x4 - str r7, [r3, #0x0] - str r6, [r1, #0x0] - ldmeqia sp!, {r4-r7,pc} - mov r4, r5 -_020B45A0: - mov r0, r7 - bl FUN_020B10CC - str r4, [r7, #0xc] - str r4, [r7, #0x10] - str r4, [r7, #0x14] - str r4, [r7, #0x18] - str r4, [r7, #0x1c] - str r4, [r7, #0x20] - str r4, [r7, #0x24] - str r4, [r7, #0x28] - add r5, r5, #0x1 - str r4, [r7, #0x2c] - cmp r5, r6 - add r7, r7, #0x30 - blo _020B45A0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B45E4: .word UNK_021CECFC -_020B45E8: .word UNK_021CED00 -_020B45EC: .word UNK_021CED04 - - arm_func_start FUN_020B45F0 -FUN_020B45F0: ; 0x020B45F0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B4698 ; =UNK_021CED04 - mov r4, #0x30 - ldr r12, [r12, #0x0] - mov r7, r1 - mla r4, r0, r4, r12 - mov r0, r4 - mov r6, r2 - mov r5, r3 - bl FUN_020B10CC - mvn r0, #0x0 - cmp r7, r0 - beq _020B4638 - mov r0, r4 - mov r2, r7 - mov r1, #0x0 - bl FUN_020B10C4 -_020B4638: - mvn r0, #0x0 - cmp r6, r0 - beq _020B4654 - mov r0, r4 - mov r2, r6 - mov r1, #0x1 - bl FUN_020B10C4 -_020B4654: - mvn r0, #0x0 - cmp r5, r0 - beq _020B4670 - mov r0, r4 - mov r2, r5 - mov r1, #0x2 - bl FUN_020B10C4 -_020B4670: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0xc] - ldr r1, [sp, #0x20] - str r0, [r4, #0x10] - ldr r0, [sp, #0x24] - str r1, [r4, #0x14] - str r0, [r4, #0x18] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4698: .word UNK_021CED04 - - arm_func_start FUN_020B469C -FUN_020B469C: ; 0x020B469C - ldr r2, _020B46B0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r0, r1, r0, r2 - bx lr - .balign 4 -_020B46B0: .word UNK_021CED04 - - arm_func_start FUN_020B46B4 -FUN_020B46B4: ; 0x020B46B4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - add r12, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r7, r3 - mov r6, r0 - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x34] - ldr r3, [sp, #0x38] - mov r0, r7 - str r12, [sp, #0x0] - bl FUN_020B498C - ldr r2, [r7, #0x0] - and r1, r2, #0x300 - cmp r1, #0x100 - beq _020B4708 - cmp r1, #0x300 - beq _020B4708 - and r0, r2, #0x30000000 - orr r1, r1, r0 -_020B4708: - cmp r1, #0x300 - bne _020B478C - ldr r0, _020B4914 ; =0xC000C000 - ldr r1, _020B4918 ; =UNK_021CED08 - and r0, r2, r0 - and r2, r0, #0xc0000000 - mov r12, r2, lsr #0x1e - and r0, r0, #0xc000 - mov lr, r0, asr #0xe - ldr r3, _020B491C ; =UNK_020FF8AC - ldr r0, [r1, #0x0] - ldr r2, _020B4920 ; =UNK_020FF894 - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - mov r12, r12, lsl #0x1 - add r1, r2, lr, lsl #0x3 - add r3, r3, lr, lsl #0x3 - ldrh r2, [r12, r3] - ldrh r1, [r12, r1] - ldrne r0, [r0, #0x0] - mov r2, r2, asr #0x1 - addne r3, r0, r4, lsl #0xc - mov r1, r1, asr #0x1 - add r0, r5, r1 - add r2, r6, r2 - ldr r1, _020B4928 ; =0x04000470 - mov r2, r2, lsl #0xc - str r2, [r1, #0x0] - mov r0, r0, lsl #0xc - moveq r3, r4, lsl #0xc - str r0, [r1, #0x0] - str r3, [r1, #0x0] - b _020B47C0 -_020B478C: - ldr r0, _020B4918 ; =UNK_021CED08 - ldr r1, _020B4928 ; =0x04000470 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - ldrne r0, [r0, #0x0] - addne r2, r0, r4, lsl #0xc - mov r0, r6, lsl #0xc - str r0, [r1, #0x0] - mov r0, r5, lsl #0xc - moveq r2, r4, lsl #0xc - str r0, [r1, #0x0] - str r2, [r1, #0x0] -_020B47C0: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x18] - ldr r2, _020B492C ; =0x0400046C - mov r0, r0, lsl #0xc - str r0, [r2, #0x0] - mov r0, r1, lsl #0xc - str r0, [r2, #0x0] - mov r1, #0x1000 - str r1, [r2, #0x0] - ldr r0, _020B4930 ; =0x04000500 - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x10] - mov r0, r0, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r2, r2, r0, lsl #0x10 - ldr r1, _020B4934 ; =0x04000488 - ldr r0, _020B4938 ; =0x04000490 - str r2, [r1, #0x0] - mov r2, #0x10000 - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r3, r4, r2, lsl #0x10 - ldr r2, _020B493C ; =0x00010040 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x40 - str r2, [r0, #0x0] - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r0, #0x0] - ldr r1, _020B4940 ; =0x04000504 - ldr r0, _020B4918 ; =UNK_021CED08 - str r2, [r1, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r7,pc} - ldr r1, _020B4924 ; =UNK_021CED10 - ldr r0, _020B4944 ; =UNK_02106590 - ldr r2, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, r2, r0 - str r0, [r1, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4914: .word 0xC000C000 -_020B4918: .word UNK_021CED08 -_020B491C: .word UNK_020FF8AC -_020B4920: .word UNK_020FF894 -_020B4924: .word UNK_021CED10 -_020B4928: .word 0x04000470 -_020B492C: .word 0x0400046C -_020B4930: .word 0x04000500 -_020B4934: .word 0x04000488 -_020B4938: .word 0x04000490 -_020B493C: .word 0x00010040 -_020B4940: .word 0x04000504 -_020B4944: .word UNK_02106590 - - arm_func_start FUN_020B4948 -FUN_020B4948: - ldr r0, _020B4954 ; =UNK_02106590 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020B4954: .word UNK_02106590 - - arm_func_start FUN_020B4958 -FUN_020B4958: - ldr r1, _020B4964 ; =UNK_02106590 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4964: .word UNK_02106590 - - arm_func_start FUN_020B4968 -FUN_020B4968: ; 0x020B4968 - ldr r0, _020B4978 ; =UNK_021CED10 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4978: .word UNK_021CED10 - - arm_func_start FUN_020B497C -FUN_020B497C: - ldr r1, _020B4988 ; =UNK_021CED08 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4988: .word UNK_021CED08 - - arm_func_start FUN_020B498C -FUN_020B498C: ; 0x020B498C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r4, [r6, #0x0] - ldr r0, _020B4BCC ; =0xC000C000 - ldr r5, [r6, #0x4] - and r4, r4, r0 - and r0, r4, #0xc0000000 - and r4, r4, #0xc000 - mov lr, r0, lsr #0x1e - ldr r0, _020B4BD0 ; =UNK_020FF8AC - mov r12, r4, asr #0xe - ldr r8, _020B4BD4 ; =UNK_020FF894 - mov r4, lr, lsl #0x1 - add r0, r0, r12, lsl #0x3 - ldrh r9, [r4, r0] - ldr r0, [sp, #0x28] - mov r5, r5, lsl #0x16 - mov r5, r5, lsr #0x16 - mov r7, r5, lsl #0x10 - str r9, [r0, #0x10] - add r5, r8, r12, lsl #0x3 - ldrh r8, [r4, r5] - mov r5, r1 - mov r4, r3 - str r8, [r0, #0x14] - ldr r1, [r5, #0x14] - mov r7, r7, lsr #0x10 - cmp r1, #0x0 - bne _020B4A74 - ldr r1, [r5, #0x8] - mov r2, r2, lsr #0x3 - orr r1, r2, r1, lsl #0x1a - ldr r2, [r5, #0x0] - orr r1, r1, #0x40000000 - ldr r3, [r5, #0x4] - orr r1, r1, r2, lsl #0x14 - orr r2, r1, r3, lsl #0x17 - ldr r8, [r5, #0x10] - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r8, lsl #0x1d - str r2, [r1, #0x0] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0x0] - cmp r1, #0x4 - moveq r1, r7, lsl #0xf - moveq r7, r1, lsr #0x10 - ldr r1, _020B4BDC ; =UNK_020FF8D8 - ldr r1, [r1, r2, lsl #0x2] - sub r1, r1, #0x1 - and r1, r7, r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x0] - ldr r1, [r5, #0x0] - mov r1, r7, asr r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x4] - b _020B4AE0 -_020B4A74: - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - mov r12, r12, lsl #0x10 - add r1, r1, #0x5 - ldr r3, [r5, #0x8] - mov lr, lr, lsl #0x10 - ldr sb, _020B4BE0 ; =UNK_020FF8F8 - mov r12, r12, lsr #0x10 - ldr r8, _020B4BE4 ; =UNK_020FF928 - add r1, r2, r7, lsl r1 - mov r2, r3, lsl #0x1a - orr r3, r2, r1, lsr #0x3 - mov r7, lr, lsr #0x10 - add r2, r9, r12, lsl #0x4 - add r1, r8, r12, lsl #0x4 - ldr r2, [r2, r7, lsl #0x2] - orr r3, r3, #0x40000000 - ldr r1, [r1, r7, lsl #0x2] - orr r2, r3, r2, lsl #0x14 - ldr r3, [r5, #0x10] - orr r2, r2, r1, lsl #0x17 - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r3, lsl #0x1d - str r2, [r1, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] -_020B4AE0: - ldr r2, [r0, #0x0] - ldr r1, [r0, #0x10] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0x8] - ldr r2, [r0, #0x4] - ldr r1, [r0, #0x14] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0xc] - ldr r1, [r6, #0x0] - mov r2, r1, lsl #0x2 - mov r1, r1, lsl #0x3 - movs r3, r1, lsr #0x1f - mov r12, r2, lsr #0x1f - ldrne r2, [r0, #0x0] - ldrne r1, [r0, #0x8] - strne r1, [r0, #0x0] - strne r2, [r0, #0x8] - cmp r12, #0x0 - ldrne r2, [r0, #0x4] - ldrne r1, [r0, #0xc] - strne r1, [r0, #0x4] - ldr r1, _020B4BE8 ; =UNK_021CED0C - strne r2, [r0, #0xc] - ldr r7, [r1, #0x0] - cmp r7, #0x0 - beq _020B4B60 - str r3, [sp, #0x0] - add r1, r0, #0x4 - add r2, r0, #0x8 - add r3, r0, #0xc - str r12, [sp, #0x4] - blx r7 -_020B4B60: - ldr r0, [r6, #0x4] - ldr r1, [r6, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x1c - mov r3, r1, lsl #0x12 - ldr r1, [r5, #0xc] - mov r0, r0, lsl #0x10 - ldr r2, _020B4BEC ; =UNK_020FF8D0 - mov r3, r3, lsr #0x1f - cmp r1, #0x0 - mov r0, r0, lsr #0x10 - ldr r1, [r2, r3, lsl #0x2] - movne r0, r0, lsl #0x9 - bne _020B4BA4 - cmp r1, #0x4 - moveq r0, #0x0 - movne r0, r0, lsl #0x5 -_020B4BA4: - cmp r1, #0x2 - moveq r2, #0x1 - movne r2, #0x0 - add r1, r4, r0 - rsb r0, r2, #0x4 - mov r1, r1, lsr r0 - ldr r0, _020B4BF0 ; =0x040004AC - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B4BCC: .word 0xC000C000 -_020B4BD0: .word UNK_020FF8AC -_020B4BD4: .word UNK_020FF894 -_020B4BD8: .word 0x040004A8 -_020B4BDC: .word UNK_020FF8D8 -_020B4BE0: .word UNK_020FF8F8 -_020B4BE4: .word UNK_020FF928 -_020B4BE8: .word UNK_021CED0C -_020B4BEC: .word UNK_020FF8D0 -_020B4BF0: .word 0x040004AC - - arm_func_start FUN_020B4BF4 -FUN_020B4BF4: ; 0x020B4BF4 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B4CD8 ; =UNK_021CED14 - mov r6, r0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r5, [r3, #0x0] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r3, #0x30] - ldr r3, [r5, #0x18] - cmp r3, #0x0 - beq _020B4C38 - ldr r0, [r2, #0x0] - mov r1, r6 - blx r3 -_020B4C38: - ldr r0, _020B4CD8 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4CB8 - mvn r0, #0x0 - cmp r4, r0 - beq _020B4C7C - mov r0, r4 - ldr r4, [r5, #0x14] - bl FUN_020B469C - mov r3, #0x1 - mvn r1, r3, lsl r4 - ldr r2, [r0, #0x20] - and r1, r2, r1 - orr r1, r1, r3, lsl r4 - str r1, [r0, #0x20] -_020B4C7C: - ldr r0, [r5, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4CB8 -_020B4C8C: - b _020B4C9C -_020B4C90: - b _020B4CAC -_020B4C94: - b _020B4CAC -_020B4C98: - b _020B4CB8 -_020B4C9C: - mov r0, r5 - mov r1, r6 - bl FUN_020B5090 - b _020B4CB8 -_020B4CAC: - mov r0, r5 - mov r1, r6 - bl FUN_020B53B4 -_020B4CB8: - ldr r2, [r5, #0x1c] - cmp r2, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B4CD8 ; =UNK_021CED14 - mov r1, r6 - ldr r0, [r0, #0x0] - blx r2 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B4CD8: .word UNK_021CED14 - - arm_func_start FUN_020B4CDC -FUN_020B4CDC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B4D9C ; =UNK_021CED14 - mov r5, r0 - ldr r2, [r1, #0x0] - ldr r4, [r2, #0x0] - ldr r0, [r4, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, #0x1 - str r0, [r2, #0x30] - ldr r2, [r4, #0x18] - cmp r2, #0x0 - beq _020B4D24 - ldr r0, [r1, #0x0] - mov r1, r5 - blx r2 -_020B4D24: - ldr r0, _020B4D9C ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4D74 - ldr r0, [r4, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4D74 -_020B4D48: - b _020B4D58 -_020B4D4C: - b _020B4D68 -_020B4D50: - b _020B4D68 -_020B4D54: - b _020B4D74 -_020B4D58: - mov r0, r4 - mov r1, r5 - bl FUN_020B5090 - b _020B4D74 -_020B4D68: - mov r0, r4 - mov r1, r5 - bl FUN_020B53B4 -_020B4D74: - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B4D9C ; =UNK_021CED14 - mov r1, r5 - ldr r0, [r0, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4D9C: .word UNK_021CED14 - - arm_func_start FUN_020B4DA0 -FUN_020B4DA0: ; 0x020B4DA0 - ldr r0, _020B4E00 ; =UNK_021CED14 - ldr r3, [r0, #0x0] - ldr r1, [r3, #0x0] - ldr r1, [r1, #0x14] - cmp r1, #0x0 - bne _020B4DD8 - ldr r2, _020B4E04 ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4E08 ; =0x04000448 - str r1, [r2, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - str r1, [r2, #0x0] - b _020B4DF0 -_020B4DD8: - mov r2, #0x0 - str r2, [r3, #0x10] - ldr r1, [r0, #0x0] - str r2, [r1, #0x2c] - ldr r0, [r0, #0x0] - str r2, [r0, #0x28] -_020B4DF0: - ldr r0, _020B4E00 ; =UNK_021CED14 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4E00: .word UNK_021CED14 -_020B4E04: .word 0x04000440 -_020B4E08: .word 0x04000448 - - arm_func_start FUN_020B4E0C -FUN_020B4E0C: ; 0x020B4E0C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r2, _020B4F28 ; =UNK_021CED14 - mov r4, r0 - str r4, [r2, #0x0] - ldr r0, [r4, #0x0] - ldr r5, [r0, #0x14] - cmp r5, #0x0 - bne _020B4ED8 - ldr lr, _020B4F2C ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4F30 ; =0x04000444 - str r1, [lr, #0x0] - str r1, [r0, #0x0] - ldr r12, [r4, #0x0] - ldr r0, _020B4F34 ; =0x04000470 - ldr r3, [r12, #0x0] - ldr r12, [r12, #0x4] - rsb r3, r3, #0x0 - str r3, [r0, #0x0] - rsb r3, r12, #0x0 - str r3, [r0, #0x0] - str r1, [r0, #0x0] - mov r0, #0x1 - str r0, [lr, #0x0] - ldr r0, [r2, #0x0] - ldr r5, [r0, #0x8] - mov r0, r5 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4E98 - mov r0, r5 - mov r1, #0x0 - bl FUN_020B1A14 -_020B4E98: - ldr r1, _020B4F28 ; =UNK_021CED14 - str r0, [r4, #0x14] - ldr r0, [r1, #0x0] - mov r1, #0x0 - ldr r5, [r0, #0xc] - mov r0, r5 - bl FUN_020B19A8 - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4ECC - mov r0, r5 - mov r1, #0x0 - bl FUN_020B19C4 -_020B4ECC: - add sp, sp, #0x4 - str r0, [r4, #0x18] - ldmia sp!, {r4-r5,pc} -_020B4ED8: - ldr r4, [r4, #0x8] - mov r1, r5 - mov r0, r4 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r1, #0x0 - beq _020B4F14 - mov r0, r4 - mov r1, r5 - bl FUN_020B1A14 - ldr r1, [r4, #0x20] - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - add r1, r1, #0x5 - mov r1, r0, lsr r1 -_020B4F14: - ldr r0, _020B4F28 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4F28: .word UNK_021CED14 -_020B4F2C: .word 0x04000440 -_020B4F30: .word 0x04000444 -_020B4F34: .word 0x04000470 - - arm_func_start FUN_020B4F38 -FUN_020B4F38: ; 0x020B4F38 - cmp r1, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x1 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x1 - streq r1, [r0, #0x24] - cmp r2, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x2 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x2 - streq r1, [r0, #0x24] - bx lr - - arm_func_start FUN_020B4F74 -FUN_020B4F74: - ldr r0, [r0, #0x24] - ands r0, r0, #0x2 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F88 -FUN_020B4F88: - ldr r0, [r0, #0x24] - ands r0, r0, #0x1 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020B4F9C -FUN_020B4F9C: ; 0x020B4F9C - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020B4FA4 -FUN_020B4FA4: ; 0x020B4FA4 - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020B4FAC -FUN_020B4FAC: ; 0x020B4FAC - ldr r2, _020B4FC0 ; =UNK_021CED14 - ldr r2, [r2, #0x0] - str r0, [r2, #0x2c] - str r1, [r2, #0x28] - bx lr - .balign 4 -_020B4FC0: .word UNK_021CED14 - - arm_func_start FUN_020B4FC4 -FUN_020B4FC4: ; 0x020B4FC4 - ldr r1, _020B5028 ; =UNK_021CED14 - mov r3, #0x0 - ldr r12, [r1, #0x0] - mov r1, #0x1000 - str r0, [r12, #0x2c] - ldr r2, [r0, #0x0] - str r2, [r12, #0x40] - ldr r2, [r0, #0x4] - str r2, [r12, #0x44] - str r3, [r12, #0x48] - ldr r2, [r0, #0x8] - str r2, [r12, #0x4c] - ldr r2, [r0, #0xc] - str r2, [r12, #0x50] - str r3, [r12, #0x54] - str r3, [r12, #0x58] - str r3, [r12, #0x5c] - str r1, [r12, #0x60] - ldr r1, [r0, #0x10] - str r1, [r12, #0x64] - ldr r0, [r0, #0x14] - str r0, [r12, #0x68] - ldr r0, [r12, #0x34] - str r0, [r12, #0x6c] - bx lr - .balign 4 -_020B5028: .word UNK_021CED14 - - arm_func_start FUN_020B502C -FUN_020B502C: ; 0x020B502C - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020B5034 -FUN_020B5034: ; 0x020B5034 - str r1, [r0, #0x1c] - str r2, [r0, #0x20] - bx lr - - arm_func_start FUN_020B5040 -FUN_020B5040: ; 0x020B5040 - str r1, [r0, #0x8] - str r2, [r0, #0xc] - bx lr - - arm_func_start FUN_020B504C -FUN_020B504C: ; 0x020B504C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x70 - bl MIi_CpuClear16 - mov r1, #0x0 - str r1, [r4, #0x0] - mov r0, #0x2 - str r0, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - str r1, [r4, #0x24] - mov r0, #0x1 - str r0, [r4, #0x30] - str r1, [r4, #0x28] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B5090 -FUN_020B5090: ; 0x020B5090 - stmdb sp!, {r4-r10,lr} - ldr r5, _020B5158 ; =UNK_021CED14 - mov r9, r1 - ldrh r1, [r9, #0x0] - ldr r2, [r5, #0x0] - mov r10, r0 - add r7, r2, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - ldmlsia sp!, {r4-r10,pc} - mov r6, #0x1 - mov r4, #0x6 -_020B50C0: - mul r1, r8, r4 - ldr r0, [r5, #0x0] - str r6, [r0, #0x30] - ldr r2, [r9, #0x4] - ldrh r0, [r2, r1] - add r1, r2, r1 - strh r0, [r7, #0x0] - ldrh r0, [r1, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r1, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B5108 - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B5108: - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5120 - mov r0, r7 - bl FUN_020B515C -_020B5120: - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B513C - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B513C: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r9, #0x0] - mov r8, r0, lsr #0x10 - cmp r8, r1 - blo _020B50C0 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5158: .word UNK_021CED14 - - arm_func_start FUN_020B515C -FUN_020B515C: ; 0x020B515C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r1, _020B53A4 ; =UNK_021CED14 - mov r7, r0 - ldr r0, [r1, #0x0] - add r0, r0, #0x40 - bl G3_LoadMtx43 - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B533C - ldr r2, [r7, #0x0] - ldr r1, _020B53A8 ; =0xC000C000 - and r4, r2, r1 - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B51F4 - ldr r0, [r7, #0x0] - and r2, r4, #0xc000 - mov r0, r0, lsl #0x7 - mov r3, r0, lsr #0x17 - and r1, r4, #0xc0000000 - mov r1, r1, lsr #0x1e - ldr r0, _020B53AC ; =UNK_020FF8AC - mov r2, r2, asr #0xe - mov r1, r1, lsl #0x1 - add r0, r0, r2, lsl #0x3 - cmp r3, #0xff - ldrh r1, [r1, r0] - orrgt r0, r3, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r3, r0, asr #0x10 - add r0, r3, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - b _020B5218 -_020B51F4: - ldr r0, [r7, #0x0] - mov r0, r0, lsl #0x7 - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 -_020B5218: - ldr r0, _020B53A4 ; =UNK_021CED14 - mov r1, r1, lsl #0x10 - ldr r0, [r0, #0x0] - mov r6, r1, asr #0x10 - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B527C - and r1, r4, #0xc000 - and r0, r4, #0xc0000000 - ldrb r4, [r7, #0x0] - ldr r2, _020B53B0 ; =UNK_020FF894 - mov r0, r0, lsr #0x1e - mov r3, r1, asr #0xe - mov r1, r0, lsl #0x1 - add r0, r2, r3, lsl #0x3 - cmp r4, #0x7f - ldrh r1, [r1, r0] - orrgt r0, r4, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r4, r0, asr #0x10 - add r0, r4, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - b _020B5298 -_020B527C: - ldrb r0, [r7, #0x0] - cmp r0, #0x7f - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 -_020B5298: - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - mov r5, r1, lsl #0x3 - bl FUN_020B4F88 - ldr r2, [r7, #0x0] - ldr r1, _020B53A4 ; =UNK_021CED14 - eor r5, r0, r5, lsr #0x1f - ldr r0, [r1, #0x0] - mov r8, r2, lsl #0x2 - bl FUN_020B4F74 - ldr r2, [r7, #0x0] - eor r1, r0, r8, lsr #0x1f - bic r0, r2, #0x10000000 - str r0, [r7, #0x0] - ldr r2, [r7, #0x0] - ldr r3, _020B53A4 ; =UNK_021CED14 - orr r2, r2, r5, lsl #0x1c - str r2, [r7, #0x0] - ldr r2, [r7, #0x0] - mov r0, r6 - bic r2, r2, #0x20000000 - str r2, [r7, #0x0] - ldr r5, [r7, #0x0] - mov r2, r4, lsl #0x10 - orr r1, r5, r1, lsl #0x1d - str r1, [r7, #0x0] - ldr r5, [r3, #0x0] - mov r1, r2, asr #0x10 - ldr r4, [r5, #0x8] - mov r3, r7 - add r2, r4, #0xc - str r2, [sp, #0x0] - ldr r4, [r5, #0x14] - mvn r2, #0x0 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} -_020B533C: - ldr r2, _020B53A4 ; =UNK_021CED14 - ldr r0, [r7, #0x0] - ldr r5, [r2, #0x0] - mov r0, r0, lsl #0x7 - ldr r4, [r5, #0x8] - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - ldrb r1, [r7, #0x0] - add r4, r4, #0xc - movgt r0, r0, asr #0x10 - str r4, [sp, #0x0] - ldr r4, [r5, #0x14] - cmp r1, #0x7f - orrgt r1, r1, #0xff00 - movgt r1, r1, lsl #0x10 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - movgt r1, r1, asr #0x10 - mov r3, r7 - mvn r2, #0x0 - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B53A4: .word UNK_021CED14 -_020B53A8: .word 0xC000C000 -_020B53AC: .word UNK_020FF8AC -_020B53B0: .word UNK_020FF894 - - arm_func_start FUN_020B53B4 -FUN_020B53B4: ; 0x020B53B4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x44 - ldr r2, _020B57B0 ; =UNK_021CED14 - mov r10, r0 - ldr r0, [r2, #0x0] - mov r11, r1 - ldr r9, [r0, #0x2c] - ldr r1, _020B57B0 ; =UNK_021CED14 - cmp r9, #0x0 - ldreq sb, _020B57B4 ; =UNK_020FF958 - ldr r3, [r1, #0x0] - ldr r4, [r9, #0x10] - str r4, [sp, #0x18] - ldr r2, [r9, #0x14] - str r2, [sp, #0x1c] - ldr r1, [r10, #0x0] - sub r1, r4, r1 - str r1, [sp, #0x18] - ldr r1, [r10, #0x4] - sub r1, r2, r1 - str r1, [sp, #0x1c] - ldr r2, [r3, #0x24] - ldr r1, [r3, #0x10] - cmp r2, #0x0 - str r1, [sp, #0x4] - bne _020B5430 - ldr r1, [r3, #0x28] - cmp r1, #0x0 - movne r1, #0x1 - strne r1, [sp, #0x0] - bne _020B5438 -_020B5430: - mov r1, #0x0 - str r1, [sp, #0x0] -_020B5438: - ldrh r1, [r11, #0x0] - add r7, r0, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - addls sp, sp, #0x44 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - ldr r4, _020B57B0 ; =UNK_021CED14 - str r8, [sp, #0x14] - str r0, [sp, #0xc] -_020B5460: - ldr r2, [r4, #0x0] - ldr r0, [sp, #0xc] - mov r1, #0x6 - str r0, [r2, #0x30] - mul r0, r8, r1 - ldr r1, [r11, #0x4] - add r2, r1, r0 - ldrh r0, [r1, r0] - strh r0, [r7, #0x0] - ldrh r0, [r2, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r2, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B54B0 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B54B0: - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5790 - ldr r0, [sp, #0x0] - ldr r1, [r7, #0x4] - cmp r0, #0x0 - mov r0, #0x400 - rsb r0, r0, #0x0 - and r2, r1, r0 - ldr r0, [sp, #0x4] - mov r1, r1, lsl #0x16 - add r1, r0, r1, lsr #0x16 - ldr r0, _020B57B8 ; =0x000003FF - and r0, r1, r0 - orr r0, r2, r0 - str r0, [r7, #0x4] - beq _020B5600 - ldr r0, [r10, #0x14] - ldr lr, [r4, #0x0] - sub r1, r0, #0x1 - ldr r0, [r7, #0x0] - ldr r6, [lr, #0x28] - mov r2, r0, lsl #0x2 - mov r2, r2, lsr #0x1f - mov r2, r2, lsl #0x1 - mov r0, r0, lsl #0x3 - orr r5, r2, r0, lsr #0x1f - add r0, r6, r5, lsl #0x2 - add r0, r0, r1, lsl #0x1 - ldrh r1, [r0, #0x10] - ldr r0, _020B57BC ; =0x0000FFFF - str r1, [sp, #0x8] - cmp r1, r0 - bne _020B55CC - cmp r5, #0x0 - bne _020B5558 - ldr r1, [lr, #0x20] - mov r0, r6 - blx r1 - str r0, [sp, #0x8] - b _020B55B4 -_020B5558: - ands r0, r5, #0x1 - add r12, sp, #0x30 - ldmia r6, {r0-r3} - stmia r12, {r0-r3} - beq _020B5584 - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x34] - rsb r1, r1, #0x0 - str r1, [sp, #0x30] - rsb r0, r0, #0x0 - str r0, [sp, #0x34] -_020B5584: - ands r0, r5, #0x2 - beq _020B55A4 - ldr r1, [sp, #0x38] - ldr r0, [sp, #0x3c] - rsb r1, r1, #0x0 - str r1, [sp, #0x38] - rsb r0, r0, #0x0 - str r0, [sp, #0x3c] -_020B55A4: - ldr r1, [lr, #0x20] - add r0, sp, #0x30 - blx r1 - str r0, [sp, #0x8] -_020B55B4: - ldr r1, [r10, #0x14] - add r0, r6, r5, lsl #0x2 - sub r1, r1, #0x1 - add r1, r0, r1, lsl #0x1 - ldr r0, [sp, #0x8] - strh r0, [r1, #0x10] -_020B55CC: - ldr r1, [r9, #0x0] - add r0, sp, #0x20 - str r1, [sp, #0x20] - ldr r2, [r9, #0x4] - mov r1, r7 - str r2, [sp, #0x24] - ldr r3, [r9, #0x8] - add r2, sp, #0x18 - str r3, [sp, #0x28] - ldr r3, [r9, #0xc] - str r3, [sp, #0x2c] - bl FUN_020B57D8 - b _020B5750 -_020B5600: - ldr r0, _020B57C0 ; =0x0000FFFE - str r0, [sp, #0x8] - ldr r0, [r4, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B5714 - ldr r2, [r7, #0x0] - ldr r1, _020B57C4 ; =0xC000C000 - mov r6, r2, lsl #0x3 - and r5, r2, r1 - bl FUN_020B4F88 - ldr r1, [r7, #0x0] - eor r6, r0, r6, lsr #0x1f - mov r1, r1, lsl #0x2 - ldr r0, [r4, #0x0] - str r1, [sp, #0x10] - bl FUN_020B4F74 - ldr r1, [sp, #0x10] - eor r0, r0, r1, lsr #0x1f - ldr r1, [r7, #0x0] - bic r1, r1, #0x10000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r1, r1, r6, lsl #0x1c - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - bic r1, r1, #0x20000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r0, r1, r0, lsl #0x1d - str r0, [r7, #0x0] - ldr r0, [r4, #0x0] - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B56D4 - and r1, r5, #0xc000 - mov r2, r1, asr #0xe - ldr r1, _020B57C8 ; =UNK_020FF8AC - and r3, r5, #0xc0000000 - mov r3, r3, lsr #0x1e - add r2, r1, r2, lsl #0x3 - mov r3, r3, lsl #0x1 - ldr r0, [r7, #0x0] - ldr r1, _020B57CC ; =0xFE00FFFF - ldrh r2, [r3, r2] - and r1, r0, r1 - mov r0, r0, lsl #0x7 - add r0, r2, r0, lsr #0x17 - rsb r2, r0, #0x0 - ldr r0, _020B57D0 ; =0x000001FF - and r0, r2, r0 - orr r0, r1, r0, lsl #0x10 - str r0, [r7, #0x0] -_020B56D4: - ldr r0, [r4, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B5714 - and r1, r5, #0xc000 - mov r3, r1, asr #0xe - and r1, r5, #0xc0000000 - mov r1, r1, lsr #0x1e - mov r2, r1, lsl #0x1 - ldr r1, _020B57D4 ; =UNK_020FF894 - ldrb r0, [r7, #0x0] - add r1, r1, r3, lsl #0x3 - ldrh r1, [r2, r1] - add r0, r0, r1 - rsb r0, r0, #0x0 - strb r0, [r7, #0x0] -_020B5714: - ldr r2, [r7, #0x0] - ldr r0, _020B57CC ; =0xFE00FFFF - ldr r1, [sp, #0x18] - and r0, r2, r0 - mov r2, r2, lsl #0x7 - mov r2, r2, lsr #0x17 - add r2, r2, r1, asr #0xc - ldr r1, _020B57D0 ; =0x000001FF - and r1, r2, r1 - orr r0, r0, r1, lsl #0x10 - str r0, [r7, #0x0] - ldrb r1, [r7, #0x0] - ldr r0, [sp, #0x1c] - add r0, r1, r0, asr #0xc - strb r0, [r7, #0x0] -_020B5750: - ldr r3, [r4, #0x0] - ldr r1, [sp, #0x8] - ldr r2, [sp, #0x14] - ldr r3, [r3, #0x1c] - mov r0, r7 - blx r3 - cmp r0, #0x1 - addne sp, sp, #0x44 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B5790 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B5790: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - ldrh r0, [r11, #0x0] - cmp r8, r0 - blo _020B5460 - add sp, sp, #0x44 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B57B0: .word UNK_021CED14 -_020B57B4: .word UNK_020FF958 -_020B57B8: .word 0x000003FF -_020B57BC: .word 0x0000FFFF -_020B57C0: .word 0x0000FFFE -_020B57C4: .word 0xC000C000 -_020B57C8: .word UNK_020FF8AC -_020B57CC: .word 0xFE00FFFF -_020B57D0: .word 0x000001FF -_020B57D4: .word UNK_020FF894 - - arm_func_start FUN_020B57D8 -FUN_020B57D8: ; 0x020B57D8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r4, [r1, #0x0] - ldr r3, _020B5A9C ; =0x01FF0000 - and r3, r4, r3 - mov r3, r3, lsr #0x10 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0xff - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x0] - ldr r3, [r1, #0x0] - and r3, r3, #0xff - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0x7f - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x4] - ldr r5, [r1, #0x0] - and r4, r5, #0x300 - cmp r4, #0x100 - beq _020B5858 - cmp r4, #0x300 - beq _020B5858 - and r3, r5, #0x30000000 - orr r4, r4, r3 -_020B5858: - cmp r4, #0x300 - bne _020B58AC - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r5, r3 - and r5, r3, #0xc0000000 - and r3, r3, #0xc000 - mov r6, r5, lsr #0x1e - mov r5, r3, asr #0xe - ldr r3, _020B5AA8 ; =UNK_020FF894 - mov r6, r6, lsl #0x1 - add r4, r4, r5, lsl #0x3 - add r3, r3, r5, lsl #0x3 - ldrh r5, [r6, r4] - ldr r7, [sp, #0x0] - ldrh r3, [r6, r3] - ldr r4, [sp, #0x4] - add r5, r7, r5, lsl #0xb - add r3, r4, r3, lsl #0xb - str r5, [sp, #0x0] - str r3, [sp, #0x4] -_020B58AC: - ldr r5, [r0, #0x8] - ldr r4, [sp, #0x4] - add r3, sp, #0x0 - smull r8, r7, r5, r4 - cmp r3, r3 - ldr r6, [r0, #0x0] - mov r4, #0x1000 - addeq r3, sp, #0x8 - adds r8, r8, r4 - ldr r5, [sp, #0x0] - adc r7, r7, #0x0 - smlal r8, r7, r6, r5 - mov r5, r8, lsr #0xc - orr r5, r5, r7, lsl #0x14 - str r5, [r3, #0x0] - ldr r7, [r0, #0xc] - ldr r6, [sp, #0x4] - ldr r5, [r0, #0x4] - smull r8, r6, r7, r6 - adds r7, r8, r4 - ldr r4, [sp, #0x0] - adc r6, r6, #0x0 - smlal r7, r6, r5, r4 - mov r5, r7, lsr #0xc - add r4, sp, #0x8 - orr r5, r5, r6, lsl #0x14 - str r5, [r3, #0x4] - cmp r3, r4 - ldreq r3, [sp, #0xc] - ldreq r4, [sp, #0x8] - streq r3, [sp, #0x4] - ldr r3, _020B5AAC ; =UNK_021CED14 - streq r4, [sp, #0x0] - ldr r3, [r3, #0x0] - ldr r3, [r3, #0x4] - cmp r3, #0x0 - beq _020B597C - cmp r3, #0x2 - moveq r5, #0x300 - movne r5, #0x100 - cmp r5, #0x100 - ldreq r4, [r1, #0x0] - ldreq r3, _020B5AB0 ; =0xC1FFFCFF - andeq r3, r4, r3 - orreq r3, r3, r5 - streq r3, [r1, #0x0] - beq _020B597C - ldr r4, [r1, #0x0] - ldr r3, _020B5AB0 ; =0xC1FFFCFF - and r3, r4, r3 - orr r3, r3, r5 - str r3, [r1, #0x0] -_020B597C: - ldr r6, [r1, #0x0] - and r5, r6, #0x300 - cmp r5, #0x100 - beq _020B599C - cmp r5, #0x300 - beq _020B599C - and r3, r6, #0x30000000 - orr r5, r5, r3 -_020B599C: - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r6, r3 - and r6, r3, #0xc0000000 - and r3, r3, #0xc000 - mov lr, r3, asr #0xe - mov r6, r6, lsr #0x1e - mov r3, r6, lsl #0x1 - add r4, r4, lr, lsl #0x3 - ldrh r4, [r3, r4] - ldr r6, [r0, #0x0] - ldr r8, _020B5AA8 ; =UNK_020FF894 - mov r12, r4, asr #0x1 - mov r4, r12, lsl #0xc - rsb r7, r4, #0x0 - mla r7, r6, r12, r7 - add lr, r8, lr, lsl #0x3 - ldrh r3, [r3, lr] - ldr r6, [r0, #0x8] - ldr lr, [sp, #0x0] - mov r3, r3, asr #0x1 - mla r7, r6, r3, r7 - add r6, lr, r7 - str r6, [sp, #0x0] - mov lr, r3, lsl #0xc - ldr r6, [r0, #0x4] - rsb r7, lr, #0x0 - mla r7, r6, r12, r7 - ldr r0, [r0, #0xc] - ldr r6, [sp, #0x4] - mla r3, r0, r3, r7 - add r0, r6, r3 - str r0, [sp, #0x4] - cmp r5, #0x300 - moveq r0, #0x1 - movne r0, #0x0 - cmp r0, #0x0 - beq _020B5A4C - ldr r3, [sp, #0x0] - ldr r0, [sp, #0x4] - sub r3, r3, r4 - sub r0, r0, lr - str r3, [sp, #0x0] - str r0, [sp, #0x4] -_020B5A4C: - ldr r4, [sp, #0x0] - ldr r0, [r2, #0x0] - ldr r3, [sp, #0x4] - add r5, r4, r0 - str r5, [sp, #0x0] - ldr r2, [r2, #0x4] - ldr r0, _020B5AB4 ; =0x000001FF - add r2, r3, r2 - str r2, [sp, #0x4] - mov r3, r2, asr #0xc - ldr r4, [r1, #0x0] - ldr r2, _020B5AB8 ; =0xFE00FF00 - and r3, r3, #0xff - and r2, r4, r2 - and r4, r0, r5, asr #0xc - orr r0, r2, r3 - orr r0, r0, r4, lsl #0x10 - str r0, [r1, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B5A9C: .word 0x01FF0000 -_020B5AA0: .word 0xC000C000 -_020B5AA4: .word UNK_020FF8AC -_020B5AA8: .word UNK_020FF894 -_020B5AAC: .word UNK_021CED14 -_020B5AB0: .word 0xC1FFFCFF -_020B5AB4: .word 0x000001FF -_020B5AB8: .word 0xFE00FF00 - - arm_func_start FUN_020B5ABC -FUN_020B5ABC: ; 0x020B5ABC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - add r5, sp, #0x0 - mov r4, #0x0 - str r4, [r5, #0x0] - str r4, [r5, #0x4] - mov r8, r2 - ldr r2, [sp, #0x28] - mov r5, r0 - mov r9, r1 - mov r4, r3 - cmp r2, #0x0 - mov r7, #0x1 - beq _020B5B24 - add r6, sp, #0x28 -_020B5AF8: - mov r0, r9 - mov r1, r8 - mov r3, r6 - bl FUN_020B5BC8 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x28] - cmp r0, r1 - strgt r0, [sp, #0x0] - add r7, r7, #0x1 - cmp r2, #0x0 - bne _020B5AF8 -_020B5B24: - ldr r0, [r9, #0x0] - sub r2, r7, #0x1 - ldrsb r1, [r0, #0x1] - ldr r0, [sp, #0x0] - add r1, r4, r1 - mul r1, r2, r1 - sub r1, r1, r4 - str r1, [sp, #0x4] - str r0, [r5, #0x0] - str r1, [r5, #0x4] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B5B54 -FUN_020B5B54: ; 0x020B5B54 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - str r2, [sp, #0x0] - add r3, sp, #0x4 - mov r2, #0x0 - str r2, [r3, #0x0] - mov r8, r0 - str r2, [r3, #0x4] - ldr r7, [r8, #0x4] - add r0, sp, #0x0 - mov r5, r1 - mov r4, #0x1 - blx r7 - cmp r0, #0x0 - beq _020B5BAC - add r6, sp, #0x0 -_020B5B94: - cmp r0, #0xa - mov r0, r6 - addeq r4, r4, #0x1 - blx r7 - cmp r0, #0x0 - bne _020B5B94 -_020B5BAC: - ldr r0, [r8, #0x0] - ldrsb r0, [r0, #0x1] - add r0, r5, r0 - mul r0, r4, r0 - sub r0, r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B5BC8 -FUN_020B5BC8: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - mov r8, r0 - str r2, [sp, #0x0] - ldr r4, [r8, #0x4] - add r0, sp, #0x0 - mov r7, r1 - mov r6, r3 - mov r5, #0x0 - blx r4 - movs r1, r0 - beq _020B5C58 - ldr sb, _020B5C84 ; =0x0000FFFF - add r10, sp, #0x0 -_020B5C00: - cmp r1, #0xa - beq _020B5C58 - mov r0, r8 - bl FUN_020B5CE4 - mov r1, r0 - cmp r1, r9 - ldreq r0, [r8, #0x0] - ldreqh r1, [r0, #0x2] - mov r0, r8 - bl FUN_020B5C88 - ldrh r1, [r8, #0x8] - cmp r1, #0x0 - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreqsb r0, [r0, #0x2] - add r1, r7, r0 - mov r0, r10 - add r5, r5, r1 - blx r4 - movs r1, r0 - bne _020B5C00 -_020B5C58: - cmp r6, #0x0 - beq _020B5C70 - cmp r1, #0xa - ldreq r0, [sp, #0x0] - movne r0, #0x0 - str r0, [r6, #0x0] -_020B5C70: - cmp r5, #0x0 - subgt r5, r5, r7 - mov r0, r5 - add sp, sp, #0x8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5C84: .word 0x0000FFFF - - arm_func_start FUN_020B5C88 -FUN_020B5C88: ; 0x020B5C88 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - ldr lr, [r3, #0xc] - cmp lr, #0x0 - beq _020B5CD8 -_020B5CA0: - ldrh r12, [lr, #0x0] - cmp r12, r1 - bhi _020B5CCC - ldrh r2, [lr, #0x2] - cmp r1, r2 - ldrlsh r2, [r0, #0xa] - addls r3, lr, #0x8 - subls r0, r1, r12 - mlals r0, r2, r0, r3 - addls sp, sp, #0x4 - ldmlsia sp!, {pc} -_020B5CCC: - ldr lr, [lr, #0x4] - cmp lr, #0x0 - bne _020B5CA0 -_020B5CD8: - add r0, r3, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B5CE4 -FUN_020B5CE4: ; 0x020B5CE4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - cmp r0, #0x0 - beq _020B5D2C -_020B5CFC: - ldrh r2, [r0, #0x0] - cmp r2, r1 - bhi _020B5D20 - ldrh r2, [r0, #0x2] - cmp r1, r2 - bhi _020B5D20 - bl FUN_020B5D7C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020B5D20: - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _020B5CFC -_020B5D2C: - ldr r0, _020B5D38 ; =0x0000FFFF - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5D38: .word 0x0000FFFF - - arm_func_start FUN_020B5D3C -FUN_020B5D3C: ; 0x020B5D3C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r4 - bl FUN_020B7558 - sub r0, r0, #0x1 - strh r0, [r4, #0x8] - ldrh r0, [r4, #0x8] - cmp r0, #0x0 - movne r1, #0x2 - moveq r1, #0x3 - ldr r0, _020B5D78 ; =FUN_020B7718 - strh r1, [r4, #0xa] - str r0, [r4, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020B5D78: .word FUN_020B7718 - - arm_func_start FUN_020B5D7C -FUN_020B5D7C: ; 0x020B5D7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r3, [r0, #0x4] - ldr r2, _020B5E4C ; =0x0000FFFF - cmp r3, #0x0 - beq _020B5DA8 - cmp r3, #0x1 - beq _020B5DC4 - cmp r3, #0x2 - beq _020B5DD8 - b _020B5E40 -_020B5DA8: - ldrh r2, [r0, #0x0] - ldrh r3, [r0, #0xc] - sub r0, r1, r2 - add r0, r3, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - b _020B5E40 -_020B5DC4: - ldrh r2, [r0, #0x0] - sub r1, r1, r2 - add r0, r0, r1, lsl #0x1 - ldrh r2, [r0, #0xc] - b _020B5E40 -_020B5DD8: - ldrh r3, [r0, #0xc] - add r0, r0, #0xc - add r0, r0, #0x2 - sub r3, r3, #0x1 - add lr, r0, r3, lsl #0x2 - cmp r0, lr - bhi _020B5E40 -_020B5DF4: - sub r12, lr, r0 - mov r3, r12, asr #0x1 - add r3, r12, r3, lsr #0x1e - mov r3, r3, asr #0x2 - add r3, r3, r3, lsr #0x1f - mov r12, r3, asr #0x1 - mov r3, r12, lsl #0x2 - ldrh r3, [r0, r3] - add r12, r0, r12, lsl #0x2 - cmp r3, r1 - addcc r0, r12, #0x4 - blo _020B5E38 - cmp r1, r3 - subcc lr, r12, #0x4 - blo _020B5E38 - ldrh r2, [r12, #0x2] - b _020B5E40 -_020B5E38: - cmp r0, lr - bls _020B5DF4 -_020B5E40: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5E4C: .word 0x0000FFFF - - arm_func_start FUN_020B5E50 -FUN_020B5E50: ; 0x020B5E50 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r7, r0 - mov r0, r1 - cmp r0, #0x8 - ldr r0, [sp, #0x60] - str r1, [sp, #0x10] - str r0, [sp, #0x60] - ldr r0, [sp, #0x6c] - str r2, [sp, #0x14] - str r0, [sp, #0x6c] - ldrlt r0, [sp, #0x10] - mov r11, r3 - ldr r6, [sp, #0x64] - ldr r5, [sp, #0x68] - movge r2, #0x3 - clzlt r0, r0 - rsblt r2, r0, #0x1f - ldr r0, [sp, #0x14] - cmp r0, #0x8 - ldrlt r0, [sp, #0x14] - movge r1, #0x3 - clzlt r0, r0 - rsblt r1, r0, #0x1f - ldr r0, _020B6170 ; =UNK_020FF970 - mvn r3, #0x0 - add r1, r0, r1, lsl #0x3 - add r0, r1, r2, lsl #0x1 - ldrb r4, [r1, r2, lsl #0x1] - ldrb r1, [r0, #0x1] - ldr r2, [sp, #0x14] - cmp r6, #0x0 - str r1, [sp, #0x18] - ldr r1, [sp, #0x10] - and r1, r1, r3, lsl r4 - str r1, [sp, #0x1c] - ldr r1, [sp, #0x18] - and r1, r2, r3, lsl r1 - str r1, [sp, #0x20] - moveq r1, #0x1 - streq r1, [sp, #0x24] - movne r1, #0x2 - strne r1, [sp, #0x24] - mov r1, #0x0 - str r1, [sp, #0x28] - bl FUN_020B704C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r10, r1, asr r4 - ldr r1, [sp, #0x18] - mov r1, r2, asr r1 - str r1, [sp, #0x2c] - ldr r1, [sp, #0x24] - mov r2, r1, lsl r4 - ldr r1, [sp, #0x18] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x6c] - mov r9, r2, asr r1 - mov r1, #0x0 - str r1, [sp, #0x30] - str r1, [sp, #0x34] - b _020B5FE8 -_020B5F48: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x18] - ldr r8, [sp, #0x34] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x60] - add lr, r1, r2, lsl #0x3 - b _020B5FD4 -_020B5F64: - mov r1, r8, lsl r4 - add r2, r11, r1, lsl #0x3 - ldr r1, _020B6174 ; =0x000001FF - ldr r3, [r7, #0x0] - and r12, r2, r1 - ldr r1, _020B6178 ; =0xFE00FF00 - and r2, lr, #0xff - and r1, r3, r1 - orr r1, r1, r2 - orr r1, r1, r12, lsl #0x10 - str r1, [r7, #0x0] - ldr r3, [r7, #0x0] - ldr r1, _020B617C ; =0x3FFF3FFF - mov r2, #0x400 - and r1, r3, r1 - orr r1, r1, r0 - str r1, [r7, #0x0] - rsb r1, r2, #0x0 - ldrh r2, [r7, #0x4] - add r8, r8, #0x1 - and r1, r2, r1 - orr r1, r1, r5 - strh r1, [r7, #0x4] - ldr r1, [r7, #0x0] - add r5, r5, r9 - bic r1, r1, #0x2000 - orr r1, r1, r6, lsl #0xd - str r1, [r7], #0x8 -_020B5FD4: - cmp r8, r10 - blt _020B5F64 - ldr r1, [sp, #0x30] - add r1, r1, #0x1 - str r1, [sp, #0x30] -_020B5FE8: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x2c] - cmp r2, r1 - blt _020B5F48 - ldr r0, [sp, #0x28] - mla r0, r10, r1, r0 - str r0, [sp, #0x28] - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6078 - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - str r6, [sp, #0x4] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - str r5, [sp, #0x8] - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x20] - add r3, r11, r1, lsl #0x3 - mov r0, r7 - mov r1, r4 - bl FUN_020B5E50 - ldr r1, [sp, #0x24] - add r7, r7, r0, lsl #0x3 - mul r2, r1, r4 - ldr r1, [sp, #0x20] - mul r2, r1, r2 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6078: - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B60F0 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - mov r3, r11 - add r0, r1, r0, lsl #0x3 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - str r5, [sp, #0x8] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - mov r0, r7 - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - mov r2, r4 - bl FUN_020B5E50 - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x1c] - add r7, r7, r0, lsl #0x3 - mul r1, r2, r1 - mul r2, r4, r1 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B60F0: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - add r0, r1, r0, lsl #0x3 - ldr r1, [sp, #0x1c] - ldr r3, [sp, #0x14] - str r0, [sp, #0x0] - sub r1, r2, r1 - ldr r2, [sp, #0x20] - str r6, [sp, #0x4] - sub r2, r3, r2 - ldr r3, [sp, #0x1c] - ldr r4, [sp, #0x6c] - str r5, [sp, #0x8] - mov r0, r7 - add r3, r11, r3, lsl #0x3 - str r4, [sp, #0xc] - bl FUN_020B5E50 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6164: - ldr r0, [sp, #0x28] - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B6170: .word UNK_020FF970 -_020B6174: .word 0x000001FF -_020B6178: .word 0xFE00FF00 -_020B617C: .word 0x3FFF3FFF - - arm_func_start FUN_020B6180 -FUN_020B6180: ; 0x020B6180 - stmdb sp!, {r4-r6,lr} - mov r3, r0, lsr #0x3 - mov r6, r1, lsr #0x3 - mul r12, r3, r6 - and r2, r0, #0x4 - and lr, r0, #0x2 - and r0, r0, #0x1 - add r4, r0, lr, lsr #0x1 - mov r5, r2, lsr #0x2 - and r0, r1, #0x4 - add lr, r12, #0x0 - add r12, r5, r4, lsl #0x1 - mla r12, r6, r12, lr - and lr, r1, #0x2 - and r1, r1, #0x1 - add lr, r1, lr, lsr #0x1 - mov r1, r0, lsr #0x2 - add r1, r1, lr, lsl #0x1 - mla r12, r3, r1, r12 - add r1, r4, r2, lsr #0x2 - add r0, lr, r0, lsr #0x2 - mla r0, r1, r0, r12 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B61DC -FUN_020B61DC: ; 0x020B61DC - stmdb sp!, {r4-r8,lr} - ldr r12, [sp, #0x1c] - ldr r8, [sp, #0x18] - mov r12, r12, lsl #0x1c - mov r4, r12, lsr #0x10 - mov r6, #0x0 - cmp r2, #0x0 - ldmleia sp!, {r4-r8,pc} - mov lr, r3, lsl #0x1 - mov r12, r6 -_020B6204: - mov r5, r0 - mov r7, r12 - cmp r1, #0x0 - ble _020B622C -_020B6214: - orr r3, r4, r8 - add r7, r7, #0x1 - cmp r7, r1 - add r8, r8, #0x1 - strh r3, [r5], #0x2 - blt _020B6214 -_020B622C: - add r6, r6, #0x1 - cmp r6, r2 - add r0, r0, lr - blt _020B6204 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B6240 -FUN_020B6240: ; 0x020B6240 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r5, [sp, #0x24] - ldr lr, [sp, #0x20] - cmp r5, #0x20 - ldr r12, [sp, #0x28] - bgt _020B6280 - mla r4, r5, lr, r3 - ldr lr, [sp, #0x2c] - str r12, [sp, #0x0] - mov r3, r5 - add r0, r0, r4, lsl #0x1 - str lr, [sp, #0x4] - bl FUN_020B61DC - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} -_020B6280: - ldr r4, [sp, #0x2c] - add r7, lr, r2 - mov r2, r4, lsl #0x1c - cmp lr, r7 - add r8, r3, r1 - mov r4, r2, lsr #0x10 - addge sp, sp, #0x8 - ldmgeia sp!, {r4-r8,pc} -_020B62A0: - cmp lr, #0x20 - movlt r1, lr - addge r1, lr, #0x20 - mov r6, r3 - cmp r3, r8 - add r5, r0, r1, lsl #0x6 - bge _020B62E4 -_020B62BC: - cmp r6, #0x20 - movlt r1, r6 - addge r1, r6, #0x3e0 - orr r2, r4, r12 - mov r1, r1, lsl #0x1 - add r6, r6, #0x1 - strh r2, [r5, r1] - cmp r6, r8 - add r12, r12, #0x1 - blt _020B62BC -_020B62E4: - add lr, lr, #0x1 - cmp lr, r7 - blt _020B62A0 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B62F8 -FUN_020B62F8: ; 0x020B62F8 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x18 - cmp r2, #0x8 - movlt r4, r2 - movge r12, #0x3 - clzlt r4, r4 - rsblt r12, r4, #0x1f - cmp r3, #0x8 - movlt r4, r3 - movge r6, #0x3 - clzlt r4, r4 - rsblt r6, r4, #0x1f - ldr r4, _020B6378 ; =UNK_020FF970 - ldr r5, [sp, #0x28] - add r4, r4, r6, lsl #0x3 - ldrb r6, [r4, r12, lsl #0x1] - add r12, r4, r12, lsl #0x1 - ldr r4, _020B637C ; =FUN_020B6908 - strb r6, [sp, #0x14] - ldrb r6, [r12, #0x1] - ldr lr, _020B6380 ; =FUN_020B68AC - ldr ip, _020B6384 ; =FUN_020B64C0 - strb r6, [sp, #0x15] - str r5, [sp, #0x0] - str r4, [sp, #0x4] - str lr, [sp, #0x8] - str r12, [sp, #0xc] - ldr r12, [sp, #0x14] - str r12, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x18 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B6378: .word UNK_020FF970 -_020B637C: .word FUN_020B6908 -_020B6380: .word FUN_020B68AC -_020B6384: .word FUN_020B64C0 - - arm_func_start FUN_020B6388 -FUN_020B6388: ; 0x020B6388 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr lr, [sp, #0x18] - ldr ip, _020B63C0 ; =FUN_020B6B10 - str lr, [sp, #0x0] - ldr lr, _020B63C4 ; =FUN_020B68AC - str r12, [sp, #0x4] - ldr ip, _020B63C8 ; =FUN_020B66D4 - str lr, [sp, #0x8] - str r12, [sp, #0xc] - str r2, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B63C0: .word FUN_020B6B10 -_020B63C4: .word FUN_020B68AC -_020B63C8: .word FUN_020B66D4 - - arm_func_start FUN_020B63CC -FUN_020B63CC: ; 0x020B63CC - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r7, r1 - ldrh r1, [sp, #0x2c] - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl FUN_020B5CE4 - ldr r1, _020B6484 ; =0x0000FFFF - mov r4, r0 - cmp r4, r1 - ldreq r0, [r7, #0x0] - ldreqh r4, [r0, #0x2] - mov r0, r7 - mov r1, r4 - bl FUN_020B5C88 - str r0, [sp, #0x8] - ldr r0, [r7, #0x0] - ldr r2, [sp, #0x28] - ldr r0, [r0, #0x8] - add r1, sp, #0x8 - ldrh r3, [r0, #0x2] - add r12, r0, #0x8 - mov r0, r8 - mla r3, r4, r3, r12 - str r3, [sp, #0xc] - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x8] - ldr r4, [r8, #0x14] - ldrsb r2, [r1, #0x0] - mov r1, r7 - mov r3, r5 - add r2, r6, r2 - blx r4 - ldrh r0, [r7, #0x8] - cmp r0, #0x0 - ldrne r0, [sp, #0x8] - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreq r0, [sp, #0x8] - ldreqsb r0, [r0, #0x2] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B6484: .word 0x0000FFFF - - arm_func_start FUN_020B6488 -FUN_020B6488: ; 0x020B6488 - str r2, [r0, #0x4] - ldr r2, [sp, #0x0] - str r3, [r0, #0x8] - strb r2, [r0, #0xc] - ldr r2, [sp, #0x4] - str r1, [r0, #0x0] - ldr r1, [sp, #0x8] - str r2, [r0, #0x14] - ldr r2, [sp, #0xc] - str r1, [r0, #0x18] - ldr r1, [sp, #0x10] - str r2, [r0, #0x1c] - str r1, [r0, #0x10] - bx lr - - arm_func_start FUN_020B64C0 -FUN_020B64C0: ; 0x020B64C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x44] - ldr r1, [sp, #0x44] - ldr r4, [sp, #0x78] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x1c] - ldr r2, [sp, #0x7c] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x20] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B6528 - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B6528: - bic r1, r10, #0x7 - str r1, [sp, #0x30] - ldr r1, [sp, #0x10] - ldr r2, [r0, #0x10] - bic r1, r1, #0x7 - str r1, [sp, #0x14] - ldr r1, [sp, #0x44] - str r2, [sp, #0x4c] - mov r3, r1, lsl #0x6 - mov r2, r3, asr #0x2 - ldr r1, [sp, #0x20] - add r3, r3, r2, lsr #0x1d - ldr r2, [sp, #0x1c] - add r6, r1, #0x7 - add r2, r2, #0x7 - bic r5, r2, #0x7 - bic r2, r6, #0x7 - ldr r1, [sp, #0x30] - str r2, [sp, #0x24] - mov r2, r3, asr #0x3 - str r2, [sp, #0x48] - mov r4, r1, asr #0x2 - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x14] - add r2, r2, r4, lsr #0x1d - mov r2, r2, asr #0x3 - str r2, [sp, #0x2c] - ldr r2, [sp, #0x14] - mov r1, r1, asr #0x2 - add r1, r2, r1, lsr #0x1d - mov r6, r1, asr #0x3 - ldr r1, [sp, #0x24] - cmp r2, r1 - ldr r1, [r0, #0x4] - str r1, [sp, #0x40] - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x0] - str r1, [sp, #0x3c] - str r0, [sp, #0x28] - ldrb r0, [sp, #0x4c] - str r0, [sp, #0x38] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x34] - addge sp, sp, #0x54 - ldmgeia sp!, {r4-r11,pc} - mov r4, #0x0 - mov r11, #0x8 -_020B65E4: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r7, [sp, #0x2c] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - movge r9, r4 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r11 - sub r0, r0, r9 - str r0, [sp, #0x18] - ldr r0, [sp, #0x30] - cmp r0, r5 - mov r8, r0 - bge _020B66B0 -_020B6630: - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x40] - str r0, [sp, #0x0] - ldr r0, [sp, #0x34] - ldr r3, [sp, #0x3c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - bl FUN_020B7068 - ldr r2, [sp, #0x1c] - cmp r8, r10 - sublt r1, r10, r8 - sub r2, r2, r8 - movge r1, r4 - cmp r2, #0x8 - movgt r2, r11 - sub r3, r2, r1 - ldr r2, [sp, #0x18] - ldr r12, [sp, #0x48] - str r2, [sp, #0x0] - ldr r2, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x44] - str r2, [sp, #0x8] - ldr r2, [sp, #0x28] - mla r0, r12, r0, r2 - mov r2, r9 - bl FUN_020B6F18 - add r8, r8, #0x8 - add r7, r7, #0x1 - cmp r8, r5 - blt _020B6630 -_020B66B0: - ldr r0, [sp, #0x14] - add r6, r6, #0x1 - add r1, r0, #0x8 - ldr r0, [sp, #0x24] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B65E4 - add sp, sp, #0x54 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B66D4 -FUN_020B66D4: ; 0x020B66D4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x2c] - ldr r1, [sp, #0x2c] - ldr r4, [sp, #0x60] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x18] - ldr r2, [sp, #0x64] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x1c] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B673C - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B673C: - ldr r1, [sp, #0x10] - bic r1, r1, #0x7 - mov r2, r1, asr #0x2 - str r1, [sp, #0x14] - add r1, r1, r2, lsr #0x1d - ldr r2, [r0, #0x10] - mov r3, r1, asr #0x3 - mul r1, r3, r2 - bic r3, r10, #0x7 - str r3, [sp, #0x28] - ldr r3, [sp, #0x2c] - mov r6, r3, lsl #0x6 - ldr r3, [sp, #0x28] - mov r4, r6, asr #0x2 - mov r5, r3, asr #0x2 - add r5, r3, r5, lsr #0x1d - add r4, r6, r4, lsr #0x1d - mov r3, r4, asr #0x3 - str r3, [sp, #0x30] - ldr r3, [sp, #0x1c] - add r1, r1, r5, asr #0x3 - add r4, r3, #0x7 - ldr r3, [r0, #0x0] - ldr r0, [sp, #0x18] - add r5, r0, #0x7 - ldr r0, [sp, #0x30] - bic r7, r5, #0x7 - mla r1, r0, r1, r3 - bic r0, r4, #0x7 - str r0, [sp, #0x20] - ldr r0, [sp, #0x30] - str r1, [sp, #0x24] - mul r0, r2, r0 - str r0, [sp, #0x34] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - cmp r1, r0 - addge sp, sp, #0x3c - ldmgeia sp!, {r4-r11,pc} - mov r5, #0x0 - mov r4, #0x8 -_020B67E0: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r6, [sp, #0x24] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x14] - movge r9, r5 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r4 - sub r11, r0, r9 - ldr r0, [sp, #0x28] - cmp r0, r7 - mov r8, r0 - bge _020B687C -_020B6828: - ldr r0, [sp, #0x18] - cmp r8, r10 - sublt r1, r10, r8 - sub r0, r0, r8 - movge r1, r5 - cmp r0, #0x8 - movgt r0, r4 - sub r3, r0, r1 - ldr r0, [sp, #0xc] - str r11, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - mov r2, r9 - str r0, [sp, #0x8] - mov r0, r6 - bl FUN_020B6F18 - ldr r0, [sp, #0x30] - add r8, r8, #0x8 - add r6, r6, r0 - cmp r8, r7 - blt _020B6828 -_020B687C: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x34] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - add r1, r0, #0x8 - ldr r0, [sp, #0x20] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B67E0 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B68AC -FUN_020B68AC: ; 0x020B68AC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldrb r2, [r3, #0xc] - ldr r12, [r3, #0x4] - cmp r2, #0x4 - orreq r0, r1, r1, lsl #0x4 - orreq r0, r0, r0, lsl #0x8 - orreq r1, r0, r0, lsl #0x10 - orrne r0, r1, r1, lsl #0x8 - orrne r1, r0, r0, lsl #0x10 - ldr r0, [r3, #0x8] - mov r2, r2, lsl #0x6 - mul lr, r12, r0 - mov r0, r2, asr #0x2 - add r0, r2, r0, lsr #0x1d - mov r2, r0, asr #0x3 - mov r0, r1 - mul r2, lr, r2 - ldr r1, [r3, #0x0] - bl MIi_CpuClearFast - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020B6908 -FUN_020B6908: ; 0x020B6908 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4c - ldr r7, [sp, #0x74] - ldrb r5, [r0, #0xc] - ldr r6, [r1, #0x0] - ldr r4, [r7, #0x0] - ldr r9, [r6, #0x8] - mov r8, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r8, asr #0x2 - add r5, r8, r5, lsr #0x1d - ldrb r9, [r9, #0x1] - ldr r8, [r0, #0x4] - ldr r6, [r0, #0x8] - str r2, [sp, #0x8] - str r3, [sp, #0xc] - cmp r4, #0x0 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r11,pc} - adds r3, r2, r4 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r2, [sp, #0xc] - adds r2, r2, r9 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r10, [sp, #0x8] - add r3, r3, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - strle r10, [sp, #0x10] - movgt r10, r10, lsr #0x3 - strgt r10, [sp, #0x10] - ldr r10, [sp, #0xc] - add r2, r2, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - mov r11, r2, lsr #0x3 - mov r3, r3, lsr #0x3 - movgt r10, r10, lsr #0x3 - cmp r3, r8 - movcs r3, r8 - cmp r11, r6 - ldr r2, [sp, #0x10] - movcs r11, r6 - subs r8, r3, r2 - addmi sp, sp, #0x4c - sub r3, r11, r10 - ldmmiia sp!, {r4-r11,pc} - cmp r3, #0x0 - addlt sp, sp, #0x4c - ldmltia sp!, {r4-r11,pc} - ldr r2, [sp, #0x8] - ldr r6, [r0, #0x0] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0x8] - ldr r2, [sp, #0xc] - ldr r11, [sp, #0x8] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0xc] - sub r8, r11, r8, lsl #0x3 - ldr r11, [sp, #0xc] - ldr r2, [sp, #0x70] - sub r3, r11, r3, lsl #0x3 - str r3, [sp, #0x14] - ldr r3, [r7, #0x4] - sub r2, r2, #0x1 - str r3, [sp, #0x28] - str r2, [sp, #0x48] - str r9, [sp, #0x38] - str r4, [sp, #0x34] - ldr r4, [r1, #0x0] - ldr r2, [sp, #0x14] - mov r3, r11 - cmp r3, r2 - ldr r2, [r4, #0x8] - ldrb r3, [r2, #0x6] - str r3, [sp, #0x40] - ldrb r2, [r0, #0xc] - str r2, [sp, #0x44] - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x8] - ldrb r1, [r1, #0x0] - mul r1, r3, r1 - str r1, [sp, #0x3c] - ldr r1, [r0, #0x10] - str r1, [sp, #0x20] - ldr r1, [r0, #0x4] - ldr r0, [r0, #0x8] - ldrb r11, [sp, #0x20] - ldrb r4, [sp, #0x21] - str r1, [sp, #0x1c] - str r0, [sp, #0x18] - addle sp, sp, #0x4c - ldmleia sp!, {r4-r11,pc} -_020B6A90: - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x10] - str r0, [sp, #0x30] - ldr r0, [sp, #0x8] - cmp r0, r8 - mov r9, r0 - ble _020B6AEC -_020B6AAC: - ldr r2, [sp, #0x1c] - str r11, [sp, #0x0] - ldr r3, [sp, #0x18] - mov r0, r7 - mov r1, r10 - str r4, [sp, #0x4] - bl FUN_020B7068 - mla r1, r0, r5, r6 - add r0, sp, #0x24 - str r9, [sp, #0x2c] - str r1, [sp, #0x24] - bl FUN_020B6CAC - sub r9, r9, #0x8 - add r7, r7, #0x1 - cmp r9, r8 - bgt _020B6AAC -_020B6AEC: - ldr r0, [sp, #0xc] - add r10, r10, #0x1 - sub r1, r0, #0x8 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - bgt _020B6A90 - add sp, sp, #0x4c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6B10 -FUN_020B6B10: ; 0x020B6B10 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x2c - ldr r4, [sp, #0x54] - ldrb r5, [r0, #0xc] - str r4, [sp, #0x54] - ldr r4, [r4, #0x0] - ldr r6, [r1, #0x0] - mov r7, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r7, asr #0x2 - add r5, r7, r5, lsr #0x1d - cmp r4, #0x0 - ldr r6, [r6, #0x8] - mov r9, r3 - ldr r8, [r0, #0x4] - ldr r7, [r0, #0x8] - mov r10, r2 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x2c - ldr lr, [r0, #0x0] - ldrb r3, [r6, #0x1] - ldmeqia sp!, {r4-r11,pc} - adds r6, r10, r4 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - adds r2, r9, r3 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - cmp r10, #0x0 - movle r11, #0x0 - add r6, r6, #0x7 - movgt r11, r10, lsr #0x3 - cmp r9, #0x0 - movle r12, #0x0 - add r2, r2, #0x7 - mov r6, r6, lsr #0x3 - movgt r12, r9, lsr #0x3 - cmp r6, r8 - movcs r6, r8 - mov r2, r2, lsr #0x3 - cmp r2, r7 - movcs r2, r7 - subs r7, r6, r11 - addmi sp, sp, #0x2c - sub r2, r2, r12 - ldmmiia sp!, {r4-r11,pc} - cmp r2, #0x0 - addlt sp, sp, #0x2c - ldmltia sp!, {r4-r11,pc} - ldr r6, [r0, #0x10] - cmp r10, #0x0 - sub r8, r6, r7 - mul r8, r5, r8 - mla r11, r6, r12, r11 - andge r10, r10, #0x7 - str r8, [sp, #0x0] - ldr r8, [sp, #0x54] - mla r6, r5, r11, lr - ldr r12, [r8, #0x4] - ldr r11, [sp, #0x50] - cmp r9, #0x0 - sub r8, r11, #0x1 - andge r9, r9, #0x7 - sub r11, r9, r2, lsl #0x3 - str r12, [sp, #0x8] - str r4, [sp, #0x14] - str r8, [sp, #0x28] - str r3, [sp, #0x18] - ldr r3, [r1, #0x0] - cmp r9, r11 - ldr r2, [r3, #0x8] - sub r7, r10, r7, lsl #0x3 - ldrb r2, [r2, #0x6] - str r2, [sp, #0x20] - ldrb r0, [r0, #0xc] - str r0, [sp, #0x24] - ldr r0, [r1, #0x0] - ldr r0, [r0, #0x8] - ldrb r0, [r0, #0x0] - mul r0, r2, r0 - str r0, [sp, #0x1c] - addle sp, sp, #0x2c - ldmleia sp!, {r4-r11,pc} - add r4, sp, #0x4 -_020B6C60: - mov r8, r10 - str r9, [sp, #0x10] - cmp r10, r7 - ble _020B6C90 -_020B6C70: - mov r0, r4 - str r6, [sp, #0x4] - str r8, [sp, #0xc] - bl FUN_020B6CAC - sub r8, r8, #0x8 - cmp r8, r7 - add r6, r6, r5 - bgt _020B6C70 -_020B6C90: - ldr r0, [sp, #0x0] - sub r9, r9, #0x8 - cmp r9, r11 - add r6, r6, r0 - bgt _020B6C60 - add sp, sp, #0x2c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6CAC -FUN_020B6CAC: ; 0x020B6CAC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldr r5, [r0, #0x8] - ldr r4, [r0, #0xc] - cmp r5, #0x0 - strge r5, [sp, #0x0] - movlt r1, #0x0 - strlt r1, [sp, #0x0] - ldr r1, [r0, #0x10] - cmp r4, #0x0 - add r10, r5, r1 - ldr r1, [r0, #0x14] - movge r2, r4 - movlt r2, #0x0 - cmp r10, #0x8 - add r3, r4, r1 - movge r10, #0x8 - cmp r3, #0x8 - movge r3, #0x8 - cmp r4, #0x0 - movgt r4, #0x0 - cmp r5, #0x0 - ldr r8, [r0, #0x20] - movgt r5, #0x0 - rsb r1, r4, #0x0 - mul r7, r10, r8 - ldr r6, [r0, #0x1c] - rsb r4, r5, #0x0 - mul r9, r6, r4 - ldr r4, [r0, #0x18] - mov r10, r7 - str r4, [sp, #0x8] - ldr r4, [sp, #0x0] - cmp r8, #0x4 - mul r5, r4, r8 - ldr r4, [sp, #0x8] - str r5, [sp, #0x0] - mla r11, r1, r4, r9 - ldr r1, [r0, #0x4] - str r1, [sp, #0x4] - bne _020B6E24 - ldr r1, [r0, #0x0] - ldr r7, [r0, #0x24] - add r0, r1, r2, lsl #0x2 - str r0, [sp, #0xc] - add r0, r1, r3, lsl #0x2 - ldr r1, [sp, #0xc] - str r0, [sp, #0x10] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - add r9, sp, #0x24 - mov r4, #0xf - str r0, [sp, #0x1c] -_020B6D88: - ldr r0, [sp, #0xc] - mov r1, r11, lsr #0x1f - ldr r5, [r0, #0x0] - ldr r0, [sp, #0x4] - rsb r2, r1, r11, lsl #0x1d - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - add r1, r1, r2, ror #0x1d - strb r0, [sp, #0x28] - strb r0, [sp, #0x29] - mov r0, r9 - bl FUN_020B76B0 - ldr r8, [sp, #0x0] - mov r0, r8 - cmp r0, r10 - bhs _020B6DF8 -_020B6DCC: - mov r0, r9 - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - mvnne r1, r4, lsl r8 - addne r0, r7, r0 - andne r1, r5, r1 - orrne r5, r1, r0, lsl r8 - add r8, r8, #0x4 - cmp r8, r10 - blo _020B6DCC -_020B6DF8: - ldr r0, [sp, #0xc] - add r1, r0, #0x4 - str r5, [r0, #0x0] - ldr r0, [sp, #0x10] - str r1, [sp, #0xc] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6D88 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020B6E24: - ldr r1, [r0, #0x0] - ldr r9, [r0, #0x24] - add r0, r1, r2, lsl #0x3 - str r0, [sp, #0x14] - add r0, r1, r3, lsl #0x3 - ldr r1, [sp, #0x14] - str r0, [sp, #0x18] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - mov r4, #0xff - str r0, [sp, #0x20] -_020B6E58: - mov r1, r11, lsr #0x1f - rsb r0, r1, r11, lsl #0x1d - add r1, r1, r0, ror #0x1d - ldr r0, [sp, #0x14] - ldr r8, [r0, #0x0] - ldr r7, [r0, #0x4] - ldr r0, [sp, #0x4] - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x20] - strb r0, [sp, #0x30] - strb r0, [sp, #0x31] - add r0, sp, #0x2c - bl FUN_020B76B0 - ldr r0, [sp, #0x0] - cmp r0, r10 - mov r5, r0 - bhs _020B6EE8 -_020B6EA0: - add r0, sp, #0x2c - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - beq _020B6EDC - cmp r5, #0x20 - mvncc r1, r4, lsl r5 - addcc r0, r9, r0 - andcc r1, r8, r1 - orrcc r8, r1, r0, lsl r5 - subcs r2, r5, #0x20 - mvncs r1, r4, lsl r2 - addcs r0, r9, r0 - andcs r1, r7, r1 - orrcs r7, r1, r0, lsl r2 -_020B6EDC: - add r5, r5, #0x8 - cmp r5, r10 - blo _020B6EA0 -_020B6EE8: - ldr r0, [sp, #0x14] - str r8, [r0, #0x0] - add r1, r0, #0x8 - str r7, [r0, #0x4] - ldr r0, [sp, #0x18] - str r1, [sp, #0x14] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6E58 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B6F18 -FUN_020B6F18: ; 0x020B6F18 - stmdb sp!, {r4-r6,lr} - mov lr, r0 - cmp r3, #0x8 - ldr r0, [sp, #0x14] - bne _020B6F4C - ldr r4, [sp, #0x10] - cmp r4, #0x8 - bne _020B6F4C - ldr r2, [sp, #0x18] - mov r1, lr - mov r2, r2, lsl #0x3 - bl MIi_CpuClearFast - ldmia sp!, {r4-r6,pc} -_020B6F4C: - ldr r4, [sp, #0x18] - cmp r4, #0x4 - bne _020B6FAC - mov r5, r1, lsl #0x2 - add r4, r5, r3, lsl #0x2 - mvn r3, #0x0 - rsb r4, r4, #0x20 - mov r3, r3, lsr r5 - add r1, r4, r1, lsl #0x2 - mov r3, r3, lsl r1 - ldr r1, [sp, #0x10] - add r5, lr, r2, lsl #0x2 - add r2, r5, r1, lsl #0x2 - and r6, r0, r3, lsr r4 - cmp r5, r2 - mvn r1, r3, lsr r4 - ldmcsia sp!, {r4-r6,pc} -_020B6F90: - ldr r0, [r5, #0x0] - and r0, r0, r1 - orr r0, r6, r0 - str r0, [r5], #0x4 - cmp r5, r2 - blo _020B6F90 - ldmia sp!, {r4-r6,pc} -_020B6FAC: - mov r12, r1, lsl #0x3 - add r1, r12, r3, lsl #0x3 - rsb r1, r1, #0x40 - mvn r3, #0x0 - cmp r1, #0x20 - mov r5, r3, lsr r12 - subcs r4, r1, #0x20 - addcs r3, r12, r4 - movcs r3, r5, lsl r3 - movcs r3, r3, lsr r4 - movcc r3, r5, lsl r12 - mvn r4, #0x0 - add r5, lr, r2, lsl #0x3 - cmp r12, #0x20 - mov r4, r4, lsl r1 - subcs r12, r12, #0x20 - addcs r1, r12, r1 - movcs r1, r4, lsr r1 - movcs r6, r1, lsl r12 - movcc r6, r4, lsr r1 - ldr r1, [sp, #0x10] - and lr, r0, r3 - add r4, r5, r1, lsl #0x3 - cmp r5, r4 - and r12, r0, r6 - mvn r2, r3 - mvn r1, r6 - ldmcsia sp!, {r4-r6,pc} -_020B701C: - ldr r0, [r5, #0x0] - and r0, r0, r2 - orr r0, lr, r0 - str r0, [r5, #0x0] - ldr r0, [r5, #0x4] - and r0, r0, r1 - orr r0, r12, r0 - str r0, [r5, #0x4] - add r5, r5, #0x8 - cmp r5, r4 - blo _020B701C - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B704C -FUN_020B704C: ; 0x020B704C - ldrb r3, [r0, #0x1] - ldr r2, _020B7064 ; =UNK_020FF990 - ldrb r1, [r0, #0x0] - add r0, r2, r3, lsl #0x4 - ldr r0, [r0, r1, lsl #0x2] - bx lr - .balign 4 -_020B7064: .word UNK_020FF990 - - arm_func_start FUN_020B7068 -FUN_020B7068: ; 0x020B7068 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr fp, _020B7164 ; =UNK_020FF970 - mov r9, #0x0 - mov r10, #0x3 - mvn r7, #0x0 -_020B7080: - ldr r4, [sp, #0x2c] - ldr r6, [sp, #0x28] - and r12, r3, r7, lsl r4 - cmp r12, r1 - mov r8, r7, lsl r6 - mov r5, r7, lsl r4 - and lr, r2, r7, lsl r6 - bhi _020B70D0 - mla r9, r2, r12, r9 - cmp lr, r0 - movhi r2, lr - subhi r1, r1, r12 - subhi r3, r3, r12 - bhi _020B7118 - sub r3, r3, r12 - mla r9, lr, r3, r9 - sub r0, r0, lr - sub r1, r1, r12 - sub r2, r2, lr - b _020B7118 -_020B70D0: - cmp lr, r0 - mlals r9, lr, r12, r9 - mvn r3, r5 - movls r3, r12 - subls r0, r0, lr - subls r2, r2, lr - bls _020B7118 - and r2, r1, r5 - mla r5, lr, r2, r9 - and r2, r0, r8 - and r1, r1, r3 - add r2, r5, r2, lsl r4 - mvn r3, r8 - add r1, r2, r1, lsl r6 - and r0, r0, r3 - add sp, sp, #0x4 - add r0, r1, r0 - ldmia sp!, {r4-r11,pc} -_020B7118: - cmp r2, #0x8 - movlt r4, r2 - movge r5, r10 - clzlt r4, r4 - rsblt r5, r4, #0x1f - cmp r3, #0x8 - movge r4, r10 - movlt r4, r3 - clzlt r4, r4 - rsblt r4, r4, #0x1f - add r4, r11, r4, lsl #0x3 - add r6, r4, r5, lsl #0x1 - ldrb r5, [r4, r5, lsl #0x1] - ldrb r4, [r6, #0x1] - str r5, [sp, #0x28] - str r4, [sp, #0x2c] - b _020B7080 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7164: .word UNK_020FF970 - - arm_func_start FUN_020B7168 -FUN_020B7168: ; 0x020B7168 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r12, [sp, #0x28] - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - ands r0, r12, #0x100 - beq _020B71AC - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r1, [sp, #0x20] - sub r0, r1, r0 - add r5, r5, r0 - b _020B71E4 -_020B71AC: - ands r0, r12, #0x80 - beq _020B71E4 - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r2, [sp, #0x20] - add r1, r0, #0x1 - add r0, r2, #0x1 - add r0, r0, r0, lsr #0x1f - mov r2, r0, asr #0x1 - add r0, r1, r1, lsr #0x1f - sub r0, r2, r0, asr #0x1 - add r5, r5, r0 -_020B71E4: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [sp, #0x0] - ldr r12, [sp, #0x2c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str r12, [sp, #0x8] - bl FUN_020B72C4 - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7218 -FUN_020B7218: ; 0x020B7218 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - ldr r4, [sp, #0x34] - mov r8, r0 - str r4, [sp, #0x0] - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x30] - ldr r1, [r8, #0x4] - ldr r2, [r8, #0x8] - ldr r3, [r8, #0xc] - add r0, sp, #0xc - bl FUN_020B5ABC - ands r0, r4, #0x10 - ldrne r0, [sp, #0xc] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r7, r7, r0, asr #0x1 - bne _020B7274 - ands r0, r4, #0x20 - ldrne r0, [sp, #0xc] - subne r7, r7, r0 -_020B7274: - ands r0, r4, #0x2 - ldrne r0, [sp, #0x10] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r6, r6, r0, asr #0x1 - bne _020B7298 - ands r0, r4, #0x4 - ldrne r0, [sp, #0x10] - subne r6, r6, r0 -_020B7298: - str r5, [sp, #0x0] - ldr r0, [sp, #0x34] - str r4, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0xc] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl FUN_020B72C4 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B72C4 -FUN_020B72C4: ; 0x020B72C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r4, [r10, #0x4] - ldr r0, [sp, #0x40] - ldr r4, [r4, #0x0] - ldr r5, [r10, #0xc] - ldrsb r4, [r4, #0x1] - cmp r0, #0x0 - mov r9, r1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x38] - mov r8, r2 - str r0, [sp, #0x38] - mov r7, r3 - add r6, r5, r4 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4-r11,pc} - add r0, r7, #0x1 - ldr r1, [sp, #0x3c] - add r0, r0, r0, lsr #0x1f - mov r0, r0, asr #0x1 - and r5, r1, #0x800 - and r11, r1, #0x400 - str r0, [sp, #0x8] - mov r4, #0x0 -_020B732C: - mov r1, r9 - cmp r5, #0x0 - beq _020B7358 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - sub r0, r7, r0 - add r1, r9, r0 - b _020B7388 -_020B7358: - cmp r11, #0x0 - beq _020B7388 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - add r0, r0, #0x1 - add r1, r0, r0, lsr #0x1f - ldr r0, [sp, #0x8] - sub r0, r0, r1, asr #0x1 - add r1, r9, r0 -_020B7388: - ldr r2, [sp, #0xc] - add r3, sp, #0xc - str r2, [sp, #0x0] - str r3, [sp, #0x4] - ldr r3, [sp, #0x38] - mov r0, r10 - mov r2, r8 - bl FUN_020B73C0 - ldr r0, [sp, #0xc] - add r8, r8, r6 - cmp r0, #0x0 - bne _020B732C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B73C0 -FUN_020B73C0: ; 0x020B73C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r0 - ldr r6, [r10, #0x8] - ldr r5, [r10, #0x4] - ldr r4, [sp, #0x30] - add r0, sp, #0x8 - str r4, [sp, #0x8] - ldr r4, [r5, #0x4] - mov r9, r1 - mov r8, r2 - mov r7, r3 - blx r4 - cmp r0, #0x0 - beq _020B743C - add r11, sp, #0x8 -_020B7400: - cmp r0, #0xa - beq _020B743C - str r7, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [r10, #0x0] - mov r1, r5 - mov r2, r9 - mov r3, r8 - bl FUN_020B63CC - add r1, r9, r0 - mov r0, r11 - add r9, r1, r6 - blx r4 - cmp r0, #0x0 - bne _020B7400 -_020B743C: - ldr r1, [sp, #0x34] - cmp r1, #0x0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - cmp r0, #0xa - ldreq r1, [sp, #0x8] - ldr r0, [sp, #0x34] - movne r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7468 -FUN_020B7468: ; 0x020B7468 - stmdb sp!, {r4-r6,lr} - ldrh r2, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov r1, #0x0 - add r2, r0, r2 - cmp r3, #0x0 - ldmleia sp!, {r4-r6,pc} - ldr r3, _020B7548 ; =0x46494E46 - ldr ip, _020B754C ; =0x43574448 - ldr r4, _020B7550 ; =0x434D4150 - ldr lr, _020B7554 ; =0x43474C50 -_020B7494: - ldr r5, [r2, #0x0] - cmp r5, r4 - bhi _020B74B0 - cmp r5, r4 - bhs _020B7518 - cmp r5, lr - b _020B752C -_020B74B0: - cmp r5, r12 - bhi _020B74C4 - cmp r5, r12 - beq _020B7500 - b _020B752C -_020B74C4: - cmp r5, r3 - bne _020B752C - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - add r5, r5, r0 - str r5, [r6, #0x8] - ldr r5, [r6, #0xc] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0xc] - ldr r5, [r6, #0x10] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x10] - b _020B752C -_020B7500: - add r6, r2, #0x8 - ldr r5, [r6, #0x4] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x4] - b _020B752C -_020B7518: - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x8] -_020B752C: - ldrh r5, [r0, #0xe] - ldr r6, [r2, #0x4] - add r1, r1, #0x1 - cmp r1, r5 - add r2, r2, r6 - blt _020B7494 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B7548: .word 0x46494E46 -_020B754C: .word 0x43574448 -_020B7550: .word 0x434D4150 -_020B7554: .word 0x43474C50 - - arm_func_start FUN_020B7558 -FUN_020B7558: ; 0x020B7558 - stmdb sp!, {r4-r6,lr} - movs r6, r0 - mov r5, r1 - beq _020B75C8 - cmp r6, #0x0 - beq _020B7584 - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7588 -_020B7584: - mov r0, #0x0 -_020B7588: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B75CC - cmp r6, #0x0 - beq _020B75B4 - ldrh r0, [r6, #0x6] - cmp r0, #0x100 - movcs r0, #0x1 - bhs _020B75B8 -_020B75B4: - mov r0, #0x0 -_020B75B8: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B75CC -_020B75C8: - mov r0, #0x0 -_020B75CC: - cmp r0, #0x0 - movne r4, #0x0 - bne _020B7654 - cmp r6, #0x0 - beq _020B7640 - cmp r6, #0x0 - beq _020B75FC - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7600 -_020B75FC: - mov r0, #0x0 -_020B7600: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B7644 - cmp r6, #0x0 - beq _020B762C - ldrh r0, [r6, #0x6] - cmp r0, #0x1 - movcs r0, #0x1 - bhs _020B7630 -_020B762C: - mov r0, #0x0 -_020B7630: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B7644 -_020B7640: - mov r0, #0x0 -_020B7644: - cmp r0, #0x0 - movne r4, #0x1 - bne _020B7654 - bl OS_Terminate -_020B7654: - mov r0, r6 - bl FUN_020B7468 - ldr r1, _020B76AC ; =0x46494E46 - mov r0, r6 - bl FUN_020B01F8 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r6,pc} - add r0, r0, #0x8 - str r0, [r5, #0x0] - cmp r4, #0x0 - beq _020B76A0 - ldr r2, [r5, #0x0] - mov r1, #0x0 - ldrsb r0, [r2, #0x6] - strb r0, [r2, #0x7] - ldr r0, [r5, #0x0] - strb r1, [r0, #0x6] -_020B76A0: - add r0, r4, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B76A8: .word 0x4E465452 -_020B76AC: .word 0x46494E46 - - arm_func_start FUN_020B76B0 -FUN_020B76B0: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrsb r2, [r0, #0x4] - ldrb r12, [r0, #0x5] - mov r4, r1 - cmp r2, r4 - subge r1, r2, r4 - movge r5, r12, lsr r1 - strgeb r1, [r0, #0x4] - bge _020B7704 - ldr r3, [r0, #0x0] - sub r1, r4, r2 - add r2, r3, #0x1 - str r2, [r0, #0x0] - ldrb r2, [r3, #0x0] - mov r5, r12, lsl r1 - strb r2, [r0, #0x5] - mov r2, #0x8 - strb r2, [r0, #0x4] - bl FUN_020B76B0 - orr r5, r0, r5 -_020B7704: - rsb r0, r4, #0x8 - mov r1, #0xff - and r0, r5, r1, asr r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7718 -FUN_020B7718: ; 0x020B7718 - ldr r1, [r0, #0x0] - ldrh r2, [r1], #0x2 - str r1, [r0, #0x0] - mov r0, r2 - bx lr - - arm_func_start FUN_020B772C -FUN_020B772C: ; 0x020B772C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - ldrb r0, [r6, #0x9] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - add r4, r6, #0x8 -_020B7750: - ldrh r0, [r6, #0xe] - ldrh r1, [r4, r0] - add r0, r4, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r7, r6, r0 - mov r0, r7 - bl FUN_020B79A4 - mov r0, r7 - bl FUN_020B780C - ldrb r0, [r6, #0x9] - add r5, r5, #0x1 - cmp r5, r0 - blo _020B7750 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B7790 -FUN_020B7790: ; 0x020B7790 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrb r0, [r8, #0x9] - mov r7, r1 - mov r5, #0x1 - cmp r0, #0x0 - mov r6, #0x0 - bls _020B7800 - add r4, r8, #0x8 -_020B77B8: - ldrh r0, [r8, #0xe] - mov r1, r7 - ldrh r2, [r4, r0] - add r0, r4, r0 - mla r0, r2, r6, r0 - ldr r0, [r0, #0x4] - add r9, r8, r0 - mov r0, r9 - bl FUN_020B7A04 - and r5, r5, r0 - mov r0, r9 - mov r1, r7 - bl FUN_020B7864 - ldrb r1, [r8, #0x9] - add r6, r6, #0x1 - and r5, r5, r0 - cmp r6, r1 - blo _020B77B8 -_020B7800: - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020B780C -FUN_020B780C: ; 0x020B780C - ldr r2, [r0, #0x8] - mov r1, #0x0 - add r2, r0, r2 - ldrh r0, [r2, #0x2] - add r12, r2, r0 - ldrb r0, [r12, #0x1] - cmp r0, #0x0 - bxls lr -_020B782C: - ldrh r2, [r12, #0x6] - ldrh r0, [r12, r2] - add r2, r12, r2 - add r2, r2, #0x4 - mla r3, r0, r1, r2 - ldrb r0, [r3, #0x3] - add r1, r1, #0x1 - ands r2, r0, #0x1 - bicne r0, r0, #0x1 - strneb r0, [r3, #0x3] - ldrb r0, [r12, #0x1] - cmp r1, r0 - blo _020B782C - bx lr - - arm_func_start FUN_020B7864 -FUN_020B7864: ; 0x020B7864 - stmdb sp!, {r4-r10,lr} - ldr r2, [r0, #0x8] - mov r10, r1 - add r9, r0, r2 - ldrh r0, [r9, #0x2] - mov r6, #0x1 - mov r7, #0x0 - add r8, r9, r0 - ldrb r0, [r8, #0x1] - cmp r0, #0x0 - bls _020B7908 - mov r5, r7 - mov r4, r7 -_020B7898: - ldrh r1, [r8, #0x6] - ldrh r0, [r10, #0x34] - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r0, r10, r0 - add r1, r2, r1 - add r1, r1, r5 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B78F0 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B78F4 - mov r0, r9 - mov r2, r10 - bl FUN_020B7910 - b _020B78F4 -_020B78F0: - mov r6, r4 -_020B78F4: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r5, r5, #0x10 - cmp r7, r0 - blo _020B7898 -_020B7908: - mov r0, r6 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020B7910 -FUN_020B7910: - stmdb sp!, {r4-r6,lr} - ldrh r5, [r1, #0x0] - ldr r2, [r2, #0x2c] - ldrh r4, [r3, #0x2] - mov r2, r2, lsl #0x10 - add r12, r0, r5 - mov r5, r2, lsr #0x10 - ands r2, r4, #0x1 - ldrh r4, [r3, #0x0] - moveq r3, r5, lsl #0xf - moveq r5, r3, lsr #0x10 - moveq r2, r4, lsl #0xf - moveq r4, r2, lsr #0x10 - ldrb r3, [r1, #0x2] - mov r2, #0x0 - cmp r3, #0x0 - bls _020B7994 - add r3, r4, r5 - mov r3, r3, lsl #0x10 - add r6, r0, #0x4 - mov r4, r3, lsr #0x10 -_020B7964: - ldrh r5, [r0, #0xa] - ldrb r3, [r12, r2] - add r2, r2, #0x1 - ldrh lr, [r6, r5] - add r5, r6, r5 - mla r3, lr, r3, r5 - ldr r3, [r3, #0x4] - add r3, r0, r3 - strh r4, [r3, #0x1c] - ldrb r3, [r1, #0x2] - cmp r2, r3 - blo _020B7964 -_020B7994: - ldrb r0, [r1, #0x3] - orr r0, r0, #0x1 - strb r0, [r1, #0x3] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B79A4 -FUN_020B79A4: ; 0x020B79A4 - stmdb sp!, {r4-r6,lr} - ldr r2, [r0, #0x8] - mov r4, #0x0 - ldrh r1, [r0, r2] - add r6, r0, r2 - add r5, r6, r1 - ldrb r0, [r5, #0x1] - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020B79C8: - ldrh r1, [r5, #0x6] - ldrh r0, [r5, r1] - add r1, r5, r1 - add r1, r1, #0x4 - mla r1, r0, r4, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - beq _020B79F0 - mov r0, r6 - bl FUN_020B7AB8 -_020B79F0: - ldrb r0, [r5, #0x1] - add r4, r4, #0x1 - cmp r4, r0 - blo _020B79C8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B7A04 -FUN_020B7A04: ; 0x020B7A04 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - mov r10, r1 - ldrh r1, [r0, r2] - add r9, r0, r2 - mov r11, #0x1 - add r8, r9, r1 - ldrb r0, [r8, #0x1] - mov r7, #0x0 - cmp r0, #0x0 - bls _020B7AAC - mov r6, r7 - mov r4, r7 - add r5, r10, #0x3c -_020B7A40: - ldrh r1, [r8, #0x6] - mov r0, r5 - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B7A94 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B7A98 - mov r0, r9 - mov r2, r10 - bl FUN_020B7B40 - b _020B7A98 -_020B7A94: - mov r11, r4 -_020B7A98: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020B7A40 -_020B7AAC: - mov r0, r11 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B7AB8 -FUN_020B7AB8: ; 0x020B7AB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r1, #0x0] - ldrb r2, [r1, #0x2] - mov r3, #0x0 - add r12, r0, r4 - cmp r2, #0x0 - bls _020B7B28 - add r2, r0, #0x4 - mov r5, #0x1000 - ldr lr, _020B7B3C ; =0xC00F0000 -_020B7AE4: - ldrh r7, [r0, #0xa] - ldrb r4, [r12, r3] - add r3, r3, #0x1 - ldrh r6, [r2, r7] - add r7, r2, r7 - mla r4, r6, r4, r7 - ldr r4, [r4, #0x4] - add r6, r0, r4 - ldr r4, [r6, #0x14] - and r4, r4, lr - str r4, [r6, #0x14] - str r5, [r6, #0x24] - ldr r4, [r6, #0x24] - str r4, [r6, #0x28] - ldrb r4, [r1, #0x2] - cmp r3, r4 - blo _020B7AE4 -_020B7B28: - ldrb r0, [r1, #0x3] - bic r0, r0, #0x1 - strb r0, [r1, #0x3] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B7B3C: .word 0xC00F0000 - - arm_func_start FUN_020B7B40 -FUN_020B7B40: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r11, r1 - mov r9, r3 - ldr r1, [r9, #0x0] - mov r10, r0 - and r0, r1, #0x1c000000 - cmp r0, #0x14000000 - ldrh r3, [r11, #0x0] - ldrne r1, [r2, #0x8] - mov r8, #0x0 - add r0, r10, r3 - str r0, [sp, #0x4] - ldrne r0, _020B7C50 ; =0x0000FFFF - andne r0, r1, r0 - strne r0, [sp, #0x0] - ldreq r1, [r2, #0x18] - ldreq r0, _020B7C50 ; =0x0000FFFF - andeq r0, r1, r0 - streq r0, [sp, #0x0] - ldrb r0, [r11, #0x2] - cmp r0, #0x0 - bls _020B7C3C - mov r4, #0x1000 - add r5, r10, #0x4 -_020B7BA4: - ldrh r6, [r10, #0xa] - ldr r0, [sp, #0x4] - ldr r1, [r9, #0x0] - ldrb r2, [r0, r8] - ldrh r3, [r5, r6] - ldr r0, [sp, #0x0] - add r6, r5, r6 - add r0, r1, r0 - mla r1, r3, r2, r6 - ldr r1, [r1, #0x4] - add r6, r10, r1 - ldr r1, [r6, #0x14] - orr r0, r1, r0 - str r0, [r6, #0x14] - ldr r3, [r9, #0x4] - ldr r0, _020B7C54 ; =0x000007FF - ldrh r1, [r6, #0x20] - and r2, r3, r0 - and r7, r0, r3, lsr #0xb - cmp r2, r1 - moveq r0, r4 - beq _020B7C08 - mov r0, r2, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C08: - str r0, [r6, #0x24] - ldrh r1, [r6, #0x22] - cmp r7, r1 - moveq r0, r4 - beq _020B7C28 - mov r0, r7, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C28: - str r0, [r6, #0x28] - ldrb r0, [r11, #0x2] - add r8, r8, #0x1 - cmp r8, r0 - blo _020B7BA4 -_020B7C3C: - ldrb r0, [r11, #0x3] - orr r0, r0, #0x1 - strb r0, [r11, #0x3] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7C50: .word 0x0000FFFF -_020B7C54: .word 0x000007FF - - arm_func_start FUN_020B7C58 -FUN_020B7C58: ; 0x020B7C58 - ldrh r2, [r0, #0x32] - mov r1, #0x0 - bic r2, r2, #0x1 - strh r2, [r0, #0x32] - ldr r2, [r0, #0x2c] - str r1, [r0, #0x2c] - mov r0, r2 - bx lr - - arm_func_start FUN_020B7C78 -FUN_020B7C78: ; 0x020B7C78 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r4, r1 - mov r5, r0 - beq _020B7C90 - bl GX_BeginLoadTexPltt -_020B7C90: - ldrh r2, [r5, #0x30] - ldr r0, [r5, #0x38] - ldr r3, [r5, #0x2c] - ldr r1, _020B7CD8 ; =0x0000FFFF - add r0, r5, r0 - and r1, r3, r1 - mov r1, r1, lsl #0x3 - mov r2, r2, lsl #0x3 - bl GX_LoadTexPltt - ldrh r0, [r5, #0x32] - cmp r4, #0x0 - addeq sp, sp, #0x4 - orr r0, r0, #0x1 - strh r0, [r5, #0x32] - ldmeqia sp!, {r4-r5,pc} - bl GX_EndLoadTexPltt - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B7CD8: .word 0x0000FFFF - - arm_func_start FUN_020B7CDC -FUN_020B7CDC: ; 0x020B7CDC - str r1, [r0, #0x2c] - bx lr - - arm_func_start FUN_020B7CE4 -FUN_020B7CE4: ; 0x020B7CE4 - ldrh r0, [r0, #0x30] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7CF0 -FUN_020B7CF0: ; 0x020B7CF0 - ldrh r12, [r0, #0x10] - mov r3, #0x0 - bic r12, r12, #0x1 - strh r12, [r0, #0x10] - ldrh r12, [r0, #0x20] - bic r12, r12, #0x1 - strh r12, [r0, #0x20] - ldr r12, [r0, #0x8] - str r12, [r1, #0x0] - str r3, [r0, #0x8] - ldr r1, [r0, #0x18] - str r1, [r2, #0x0] - str r3, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7D28 -FUN_020B7D28: ; 0x020B7D28 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - movs r8, r1 - mov r9, r0 - beq _020B7D40 - bl GX_BeginLoadTex -_020B7D40: - ldrh r0, [r9, #0xc] - movs r2, r0, lsl #0x3 - beq _020B7D74 - ldr r1, [r9, #0x8] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x14] - and r1, r1, r0 - add r0, r9, r3 - mov r1, r1, lsl #0x3 - bl GX_LoadTex - ldrh r0, [r9, #0x10] - orr r0, r0, #0x1 - strh r0, [r9, #0x10] -_020B7D74: - ldrh r0, [r9, #0x1c] - movs r7, r0, lsl #0x3 - beq _020B7DDC - ldr r1, [r9, #0x18] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x24] - and r4, r1, r0 - mov r5, r4, lsl #0x3 - ldr r6, [r9, #0x28] - mov r1, r5 - mov r2, r7 - add r0, r9, r3 - add r6, r9, r6 - bl GX_LoadTex - ldr r0, _020B7DF8 ; =0x0001FFFF - and r1, r5, #0x40000 - and r0, r0, r4, lsl #0x3 - mov r0, r0, lsr #0x1 - add r2, r0, #0x20000 - mov r0, r6 - add r1, r2, r1, lsr #0x2 - mov r2, r7, lsr #0x1 - bl GX_LoadTex - ldrh r0, [r9, #0x20] - orr r0, r0, #0x1 - strh r0, [r9, #0x20] -_020B7DDC: - cmp r8, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - bl GX_EndLoadTex - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B7DF4: .word 0x0000FFFF -_020B7DF8: .word 0x0001FFFF - - arm_func_start FUN_020B7DFC -FUN_020B7DFC: ; 0x020B7DFC - cmp r1, #0x0 - strne r1, [r0, #0x8] - cmp r2, #0x0 - strne r2, [r0, #0x18] - bx lr - - arm_func_start FUN_020B7E10 -FUN_020B7E10: ; 0x020B7E10 - ldrh r0, [r0, #0x1c] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E1C -FUN_020B7E1C: ; 0x020B7E1C - ldrh r0, [r0, #0xc] - mov r0, r0, lsl #0x3 - bx lr - - arm_func_start FUN_020B7E28 -FUN_020B7E28: ; 0x020B7E28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x8 - mov r4, r1 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7E88 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} -_020B7E74: - ldr r0, [r5, #0x0] - orr r0, r0, #0x10 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7E88 -FUN_020B7E88: - ldr r2, [r0, #0x0] - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r2, r1 - bne _020B7EB8 - ldr r3, [r2, #0x10] - mov r2, #0x0 - str r3, [r0, #0x0] - str r2, [r1, #0x10] - mov r0, #0x1 - bx lr -_020B7EB8: - ldr r3, [r2, #0x10] - cmp r3, #0x0 - beq _020B7EF4 -_020B7EC4: - cmp r3, r1 - bne _020B7EE4 - ldr r1, [r3, #0x10] - mov r0, #0x0 - str r1, [r2, #0x10] - str r0, [r3, #0x10] - mov r0, #0x1 - bx lr -_020B7EE4: - mov r2, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B7EC4 -_020B7EF4: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B7EFC -FUN_020B7EFC: ; 0x020B7EFC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - ldr r2, [r4, #0x8] - mov r5, r0 - ldrb r0, [r2, #0x0] - cmp r0, #0x4a - beq _020B7F50 - cmp r0, #0x4d - beq _020B7F34 - cmp r0, #0x56 - beq _020B7F6C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F34: - add r0, r5, #0x3c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F50: - add r0, r5, #0x44 - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F6C: - add r0, r5, #0x4c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7F88 -FUN_020B7F88: ; 0x020B7F88 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020B7FA4: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020B7FE4 -_020B7FB4: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020B7FB4 -_020B7FE4: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020B7FA4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020B7FF8 -FUN_020B7FF8: ; 0x020B7FF8 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - streq r1, [r0, #0x0] - bxeq lr - ldr r3, [r12, #0x10] - cmp r3, #0x0 - bne _020B8058 - ldrb r3, [r12, #0x18] - ldrb r2, [r1, #0x18] - cmp r3, r2 - bls _020B8050 - ldr r2, [r1, #0x10] - mov r3, r1 - cmp r2, #0x0 - beq _020B8044 -_020B8034: - ldr r3, [r3, #0x10] - ldr r2, [r3, #0x10] - cmp r2, #0x0 - bne _020B8034 -_020B8044: - str r12, [r3, #0x10] - str r1, [r0, #0x0] - bx lr -_020B8050: - str r1, [r12, #0x10] - bx lr -_020B8058: - cmp r3, #0x0 - beq _020B80AC - ldrb r2, [r1, #0x18] -_020B8064: - ldrb r0, [r3, #0x18] - cmp r0, r2 - blo _020B809C - ldr r0, [r1, #0x10] - mov r2, r1 - cmp r0, #0x0 - beq _020B8090 -_020B8080: - ldr r2, [r2, #0x10] - ldr r0, [r2, #0x10] - cmp r0, #0x0 - bne _020B8080 -_020B8090: - str r1, [r12, #0x10] - str r3, [r2, #0x10] - bx lr -_020B809C: - mov r12, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B8064 -_020B80AC: - str r1, [r12, #0x10] - bx lr - - arm_func_start FUN_020B80B4 -FUN_020B80B4: ; 0x020B80B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x54 - bl MIi_CpuClear32 - ldr r0, _020B8104 ; =UNK_021065B4 - ldr r1, _020B8108 ; =UNK_021065B0 - ldr r2, [r0, #0x0] - ldr r0, _020B810C ; =UNK_021065AC - str r2, [r5, #0xc] - ldr r1, [r1, #0x0] - str r1, [r5, #0x14] - ldr r0, [r0, #0x0] - str r0, [r5, #0x1c] - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B8104: .word UNK_021065B4 -_020B8108: .word UNK_021065B0 -_020B810C: .word UNK_021065AC - - arm_func_start FUN_020B8110 -FUN_020B8110: ; 0x020B8110 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x8] - str r12, [r0, #0x10] - mov r4, #0x7f - strb r4, [r0, #0x18] - mov r4, #0x1000 - str r4, [r0, #0x4] - ldr lr, _020B81A4 ; =UNK_02106594 - str r3, [r0, #0x14] - ldr r6, [lr, #0x0] - cmp r6, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - ldrb r7, [r1, #0x0] - ldr r4, _020B81A8 ; =UNK_021065B8 -_020B8158: - ldrb r3, [r4, r12, lsl #0x3] - mov r5, r12, lsl #0x3 - cmp r7, r3 - bne _020B8190 - add r3, r4, r5 - ldrh lr, [r1, #0x2] - ldrh r3, [r3, #0x2] - cmp lr, r3 - bne _020B8190 - ldr r3, _020B81AC ; =UNK_021065BC - ldr r3, [r3, r5] - blx r3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B8190: - add r12, r12, #0x1 - cmp r12, r6 - blo _020B8158 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B81A4: .word UNK_02106594 -_020B81A8: .word UNK_021065B8 -_020B81AC: .word UNK_021065BC - - arm_func_start FUN_020B81B0 -FUN_020B81B0: ; 0x020B81B0 - ldrb r0, [r0, #0x0] - cmp r0, #0x4a - beq _020B81E4 - cmp r0, #0x4d - beq _020B81D0 - cmp r0, #0x56 - beq _020B81E4 - b _020B81F8 -_020B81D0: - ldrb r0, [r1, #0x18] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81E4: - ldrb r0, [r1, #0x17] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81F8: - mov r0, #0x0 - bx lr - - arm_func_start FUN_020B8200 -FUN_020B8200: ; 0x020B8200 - cmp r0, #0x0 - ldrne ip, _020B8260 ; =UNK_021CED18 - ldrne r12, [r12, #0xa0] - andne r12, r12, #0xff - strne r12, [r0, #0x0] - cmp r1, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x8 - andne r0, r0, #0xff - strne r0, [r1, #0x0] - cmp r2, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x10 - andne r0, r0, #0xff - strne r0, [r2, #0x0] - cmp r3, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x18 - andne r0, r0, #0xff - strne r0, [r3, #0x0] - bx lr - .balign 4 -_020B8260: .word UNK_021CED18 - - arm_func_start FUN_020B8264 -FUN_020B8264: ; 0x020B8264 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B8290 - bl FUN_020B82E4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B8290: - ldr r0, _020B82A0 ; =UNK_021CEE78 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B829C: .word UNK_021CED18 -_020B82A0: .word UNK_021CEE78 - - arm_func_start FUN_020B82A4 -FUN_020B82A4: ; 0x020B82A4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B82D0 - bl FUN_020B82E4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B82D0: - ldr r0, _020B82E0 ; =UNK_021CEE48 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B82DC: .word UNK_021CED18 -_020B82E0: .word UNK_021CEE48 - - arm_func_start FUN_020B82E4 -FUN_020B82E4: ; 0x020B82E4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8330 ; =UNK_021CEDD4 - ldr r1, _020B8334 ; =UNK_021CED64 - ldr r2, _020B8338 ; =UNK_021CEE48 - bl MTX_Concat43 - ldr r3, _020B833C ; =UNK_021CED18 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r2, [r3, #0xf4] - mov r1, r0 - str r2, [sp, #0x0] - ldr r2, [r3, #0xec] - ldr r3, [r3, #0xf0] - bl MTX_ScaleApply43 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r1, _020B8340 ; =UNK_021CEE78 - bl MTX_Inverse43 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8330: .word UNK_021CEDD4 -_020B8334: .word UNK_021CED64 -_020B8338: .word UNK_021CEE48 -_020B833C: .word UNK_021CED18 -_020B8340: .word UNK_021CEE78 - - arm_func_start FUN_020B8344 -FUN_020B8344: ; 0x020B8344 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x8 - bne _020B8378 - ldr r0, _020B8388 ; =UNK_021CED64 - ldr r1, _020B838C ; =UNK_021CEE18 - bl MTX_Inverse43 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x8 - str r1, [r0, #0xfc] -_020B8378: - ldr r0, _020B838C ; =UNK_021CEE18 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8384: .word UNK_021CED18 -_020B8388: .word UNK_021CED64 -_020B838C: .word UNK_021CEE18 - - arm_func_start FUN_020B8390 -FUN_020B8390: ; 0x020B8390 - orr r0, r0, r1, lsl #0x4 - - arm_func_start FUN_020B8394 -FUN_020B8394: ; 0x020B8394 - ldr r1, [sp, #0x4] - orr r0, r0, r2, lsl #0x6 - orr r0, r1, r0 - ldr r2, [sp, #0x0] - orr r1, r0, r3, lsl #0x18 - ldr r0, _020B83B8 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0x10 - str r1, [r0, #0x9c] - bx lr - .balign 4 -_020B83B8: .word UNK_021CED18 - - arm_func_start FUN_020B83BC -FUN_020B83BC: ; 0x020B83BC - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B83DC ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x98] - bx lr - .balign 4 -_020B83DC: .word UNK_021CED18 - - arm_func_start FUN_020B83E0 -FUN_020B83E0: ; 0x020B83E0 - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B8400 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x94] - bx lr - .balign 4 -_020B8400: .word UNK_021CED18 - - arm_func_start FUN_020B8404 -FUN_020B8404: ; 0x020B8404 - ldr r2, _020B8414 ; =UNK_021CEDC0 - orr r1, r1, r0, lsl #0x1e - str r1, [r2, r0, lsl #0x2] - bx lr - .balign 4 -_020B8414: .word UNK_021CEDC0 - - arm_func_start FUN_020B8418 -FUN_020B8418: ; 0x020B8418 - stmdb sp!, {r4,lr} - ldr ip, _020B8444 ; =0x000003FF - ldr lr, _020B8448 ; =UNK_021CED98 - and r4, r12, r1, asr #0x3 - and r1, r12, r2, asr #0x3 - and r2, r12, r3, asr #0x3 - orr r1, r4, r1, lsl #0xa - orr r1, r1, r2, lsl #0x14 - orr r1, r1, r0, lsl #0x1e - str r1, [lr, r0, lsl #0x2] - ldmia sp!, {r4,pc} - .balign 4 -_020B8444: .word 0x000003FF -_020B8448: .word UNK_021CED98 - - arm_func_start FUN_020B844C -FUN_020B844C: ; 0x020B844C - ldr r3, _020B846C ; =UNK_021CEE04 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8470 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B846C: .word UNK_021CEE04 -_020B8470: .word UNK_021CED18 - - arm_func_start FUN_020B8474 -FUN_020B8474: ; 0x020B8474 - ldr r3, _020B8494 ; =UNK_021CEDF8 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8498 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B8494: .word UNK_021CEDF8 -_020B8498: .word UNK_021CED18 - - arm_func_start FUN_020B849C -FUN_020B849C: ; 0x020B849C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B84D4 ; =UNK_021CED18 - mov r2, #0x3e - ldr r0, [r1], #0x4 - bl FUN_020BB1C0 - ldr r0, _020B84D4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0x1 - str r1, [r0, #0xfc] - bic r1, r1, #0x2 - str r1, [r0, #0xfc] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B84D4: .word UNK_021CED18 - - arm_func_start FUN_020B84D8 -FUN_020B84D8: ; 0x020B84D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r8, _020B85F4 ; =0x17101610 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r5, _020B85FC ; =0x32323232 - ldr r4, _020B8600 ; =0x60293130 - ldr r3, _020B8604 ; =0x33333333 - ldr r2, _020B8608 ; =0x002A1B19 - mov r7, #0x0 - mov r6, #0x2 - ldr r0, _020B860C ; =UNK_021CED64 - str r8, [r1, #0x0] - str r7, [r1, #0x4] - str r6, [r1, #0x48] - str r5, [r1, #0x7c] - str r4, [r1, #0x90] - str r3, [r1, #0xa4] - str r2, [r1, #0xb8] - bl MTX_Identity43_ - ldr r0, _020B8610 ; =UNK_021CED20 - bl MTX_Identity44_ - mov r2, r7 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r7, _020B8614 ; =0x4210C210 - ldr r0, _020B8618 ; =0x40000200 - ldr lr, _020B861C ; =0x2D8B62D8 - ldr sb, _020B8620 ; =0x800001FF - ldr r8, _020B8624 ; =0xC0080000 - ldr r6, _020B8628 ; =0x001F008F - ldr r5, _020B862C ; =0xBFFF0000 - ldr r4, _020B8630 ; =0x00007FFF - ldr ip, _020B8634 ; =0x800003E0 - ldr r3, _020B8638 ; =0xC0007C00 - str r0, [r1, #0x84] - str lr, [r1, #0x80] - mov lr, #0x4000001f - ldr r0, _020B863C ; =UNK_021CEDD4 - str r9, [r1, #0x88] - str r8, [r1, #0x8c] - str r7, [r1, #0x94] - str r7, [r1, #0x98] - str r6, [r1, #0x9c] - str r5, [r1, #0xa0] - str r4, [r1, #0xa8] - str lr, [r1, #0xac] - str r12, [r1, #0xb0] - str r3, [r1, #0xb4] - str r2, [r1, #0xe0] - str r2, [r1, #0xe4] - str r2, [r1, #0xe8] - bl MTX_Identity33_ - mov r3, #0x1000 - ldr r0, _020B85F8 ; =UNK_021CED18 - mov r2, #0x0 - rsb r1, r3, #0x0 - str r3, [r0, #0xec] - str r3, [r0, #0xf0] - str r3, [r0, #0xf4] - str r2, [r0, #0xf8] - str r2, [r0, #0xfc] - str r2, [r0, #0x248] - str r2, [r0, #0x244] - str r2, [r0, #0x240] - str r2, [r0, #0x254] - str r2, [r0, #0x24c] - str r3, [r0, #0x250] - str r2, [r0, #0x25c] - str r2, [r0, #0x258] - str r1, [r0, #0x260] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B85F4: .word 0x17101610 -_020B85F8: .word UNK_021CED18 -_020B85FC: .word 0x32323232 -_020B8600: .word 0x60293130 -_020B8604: .word 0x33333333 -_020B8608: .word 0x002A1B19 -_020B860C: .word UNK_021CED64 -_020B8610: .word UNK_021CED20 -_020B8614: .word 0x4210C210 -_020B8618: .word 0x40000200 -_020B861C: .word 0x2D8B62D8 -_020B8620: .word 0x800001FF -_020B8624: .word 0xC0080000 -_020B8628: .word 0x001F008F -_020B862C: .word 0xBFFF0000 -_020B8630: .word 0x00007FFF -_020B8634: .word 0x800003E0 -_020B8638: .word 0xC0007C00 -_020B863C: .word UNK_021CEDD4 - - arm_func_start FUN_020B8640 -FUN_020B8640: ; 0x020B8640 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r0 - mov r0, #0x0 - mov r6, r1 - str r0, [r7, #0x0] - add r4, sp, #0x0 - mov r5, r2, lsl #0x1 - mov r8, #0x1 -_020B8664: - add r1, r5, r6 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B869C - ldr r3, [r6, #0xc] - mov r0, r4 - mov r1, r6 - and r2, r2, #0xff - blx r3 - ldr r2, [r7, #0x0] - ldr r1, [sp, #0x0] - mov r0, r8 - orr r1, r2, r1 - str r1, [r7, #0x0] -_020B869C: - ldr r6, [r6, #0x10] - cmp r6, #0x0 - bne _020B8664 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020B86B0 -FUN_020B86B0: ; 0x020B86B0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x5c - mov r9, r1 - ldr r3, [r9, #0x10] - mov r10, r0 - mov r8, r2 - cmp r3, #0x0 - bne _020B8704 - add r2, r9, r8, lsl #0x1 - ldrh r4, [r2, #0x1a] - and r2, r4, #0x300 - cmp r2, #0x100 - addne sp, sp, #0x5c - movne r0, #0x0 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r9, #0xc] - and r2, r4, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B8704: - mov r7, #0x0 - mov r3, r7 - mov r4, r9 - mov r2, r8, lsl #0x1 -_020B8714: - add r0, r2, r4 - ldrh r0, [r0, #0x1a] - and r0, r0, #0x300 - cmp r0, #0x100 - ldreq r0, [r4, #0x4] - moveq r1, r4 - ldr r4, [r4, #0x10] - addeq r7, r7, r0 - addeq r3, r3, #0x1 - cmp r4, #0x0 - bne _020B8714 - cmp r7, #0x0 - addeq sp, sp, #0x5c - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,pc} - cmp r3, #0x1 - bne _020B877C - add r0, r1, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - ldr r3, [r1, #0xc] - mov r0, r10 - and r2, r2, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B877C: - mov r1, r10 - mov r0, #0x0 - mov r2, #0x58 - bl MIi_CpuClearFast - mvn r0, #0x0 - str r0, [r10, #0x0] - add r5, sp, #0x0 - add r4, sp, #0x4 - add r11, sp, #0x10 -_020B87A0: - add r0, r9, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - and r0, r2, #0x300 - cmp r0, #0x100 - bne _020B8948 - ldr r0, [r9, #0x4] - cmp r0, #0x0 - ble _020B8948 - ldr r3, [r9, #0xc] - mov r0, r5 - mov r1, r9 - and r2, r2, #0xff - blx r3 - cmp r7, #0x1000 - ldreq r6, [r9, #0x4] - beq _020B87F0 - ldr r0, [r9, #0x4] - mov r1, r7 - bl FX_Div - mov r6, r0 -_020B87F0: - ldr r3, [sp, #0x0] - mov r1, r4 - mov r2, r6 - add r0, r10, #0x4 - and r3, r3, #0x1 - bl FUN_020B8998 - ldr r1, [sp, #0x0] - add r0, r10, #0x10 - and r3, r1, #0x8 - mov r1, r11 - mov r2, r6 - bl FUN_020B8998 - ldr r3, [sp, #0x0] - add r0, r10, #0x1c - add r1, sp, #0x1c - mov r2, r6 - and r3, r3, #0x10 - bl FUN_020B8998 - ldr r0, [sp, #0x0] - ands r0, r0, #0x4 - bne _020B8898 - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x4c] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x4c] - ldr r0, [sp, #0x50] - ldr r2, [r10, #0x50] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x50] - ldr r0, [sp, #0x54] - ldr r2, [r10, #0x54] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x54] -_020B8898: - ldr r0, [sp, #0x0] - ands r0, r0, #0x2 - bne _020B8920 - ldr r0, [sp, #0x28] - ldr r1, [r10, #0x28] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x28] - ldr r0, [sp, #0x2c] - ldr r1, [r10, #0x2c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x2c] - ldr r0, [sp, #0x30] - ldr r1, [r10, #0x30] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x30] - ldr r0, [sp, #0x34] - ldr r1, [r10, #0x34] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x34] - ldr r0, [sp, #0x38] - ldr r1, [r10, #0x38] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x38] - ldr r0, [sp, #0x3c] - ldr r1, [r10, #0x3c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x3c] - b _020B8938 -_020B8920: - ldr r0, [r10, #0x28] - add r0, r0, r6 - str r0, [r10, #0x28] - ldr r0, [r10, #0x38] - add r0, r0, r6 - str r0, [r10, #0x38] -_020B8938: - ldr r1, [r10, #0x0] - ldr r0, [sp, #0x0] - and r0, r1, r0 - str r0, [r10, #0x0] -_020B8948: - ldr r9, [r9, #0x10] - cmp r9, #0x0 - bne _020B87A0 - add r0, r10, #0x28 - add r1, r10, #0x34 - add r2, r10, #0x40 - bl VEC_CrossProduct - add r0, r10, #0x28 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - add r1, r10, #0x28 - add r2, r10, #0x34 - bl VEC_CrossProduct - mov r0, #0x1 - add sp, sp, #0x5c - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020B8998 -FUN_020B8998: - cmp r3, #0x0 - beq _020B89C8 - ldr r1, [r0, #0x0] - add r1, r1, r2 - str r1, [r0, #0x0] - ldr r1, [r0, #0x4] - add r1, r1, r2 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r2 - str r1, [r0, #0x8] - bx lr -_020B89C8: - ldr r3, [r1, #0x0] - ldr r12, [r0, #0x0] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x0] - ldr r3, [r1, #0x4] - ldr r12, [r0, #0x4] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x4] - ldr r1, [r1, #0x8] - ldr r3, [r0, #0x8] - mul r1, r2, r1 - add r1, r3, r1, asr #0xc - str r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020B8A08 -FUN_020B8A08: ; 0x020B8A08 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - mov r0, #0x0 - mov r4, r2, lsl #0x1 - mov r7, #0x1 -_020B8A24: - add r1, r4, r5 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B8A4C - ldr r3, [r5, #0xc] - mov r0, r6 - mov r1, r5 - and r2, r2, #0xff - blx r3 - mov r0, r7 -_020B8A4C: - ldr r5, [r5, #0x10] - cmp r5, #0x0 - bne _020B8A24 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020B8A60 -FUN_020B8A60: ; 0x020B8A60 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x80 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020B8DB4 - ands r0, r1, #0x1 - beq _020B8DB4 - add r0, sp, #0x10 - mov r1, #0x0 - bl FUN_020BB824 - mov r0, #0x1e - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x13 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r2, [r5, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0xc0000000 - beq _020B8AF0 - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r3, _020B8DC8 ; =UNK_02106630 - ldr r0, [r2, #0x10] - ldr r1, _020B8DCC ; =UNK_02106634 - orr r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8AF0: - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B8B3C - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8B40 -_020B8B3C: - mov r0, #0x0 -_020B8B40: - cmp r0, #0x0 - bne _020B8B84 - ldr r0, [r5, #0xb0] - ldr r1, _020B8DD0 ; =UNK_02106660 - ldrh r6, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - mov r0, #0x16 - rsb r2, r6, #0x0 - mov lr, r3, lsl #0xf - mov r12, r2, lsl #0xf - mov r3, r6, lsl #0xf - mov r2, #0x10 - str lr, [r1, #0x0] - str r12, [r1, #0x14] - str lr, [r1, #0x30] - str r3, [r1, #0x34] - bl FUN_020BB1C0 -_020B8B84: - cmp r4, #0x2 - bne _020B8BC0 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8BC4 -_020B8BC0: - mov r0, #0x0 -_020B8BC4: - cmp r0, #0x0 - bne _020B8C28 - ldr r12, [r5, #0xd8] - ldr r0, [r5, #0x0] - ldrh r2, [r12, #0xa] - add r3, r12, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8C28 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8C28: - cmp r4, #0x3 - movne r0, #0x0 - bne _020B8C54 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x8] - and r0, r0, #0x40 -_020B8C54: - cmp r0, #0x0 - bne _020B8D84 - ldr r0, _020B8DD4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B8CA0 - ldr r1, _020B8DD8 ; =UNK_021CEDF8 - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - ldr r1, _020B8DDC ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CA0: - ands r0, r1, #0x2 - beq _020B8CBC - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CBC: - bl FUN_020B8344 - mov r1, r0 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 -_020B8CE0: - bl FUN_020BB394 - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020B8DE4 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020B8DE8 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - add r4, sp, #0x40 -_020B8D04: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B8D04 - ldr r1, _020B8DEC ; =0x04000448 - mov r2, #0x1 - str r2, [r1, #0x0] - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x3 - str r2, [r0, #0x0] - add r1, sp, #0x40 - mov r0, #0x16 - mov r2, #0x10 - bl FUN_020BB1C0 - ldr r1, [sp, #0x70] - ldr r0, [sp, #0x74] - mov r2, r1, asr #0x4 - mov r1, r0, asr #0x4 - mov r0, r2, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8D84: - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - mov r3, #0x1e - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 -_020B8DB4: - ldr r0, [r5, #0x0] - add r0, r0, #0x3 - str r0, [r5, #0x0] - add sp, sp, #0x80 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B8DC8: .word UNK_02106630 -_020B8DCC: .word UNK_02106634 -_020B8DD0: .word UNK_02106660 -_020B8DD4: .word UNK_021CED18 -_020B8DD8: .word UNK_021CEDF8 -_020B8DDC: .word UNK_021CEDD4 -_020B8DE0: .word 0x04000440 -_020B8DE4: .word 0x04000444 -_020B8DE8: .word 0x04000454 -_020B8DEC: .word 0x04000448 - - arm_func_start FUN_020B8DF0 -FUN_020B8DF0: ; 0x020B8DF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x44 - mov r7, r0 - ldr r1, [r7, #0x8] - ands r0, r1, #0x200 - bne _020B90E8 - ands r0, r1, #0x1 - beq _020B90E8 - ldr r2, [r7, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0x80000000 - beq _020B8E5C - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r3, _020B90FC ; =UNK_02106638 - ldr r0, [r2, #0x10] - ldr r1, _020B9100 ; =UNK_0210663C - orr r0, r0, #0x80000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8E5C: - mov r0, #0x3 - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x10 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - moveq r6, #0x0 - cmp r6, #0x1 - bne _020B8EC0 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8EC4 -_020B8EC0: - mov r0, #0x0 -_020B8EC4: - cmp r0, #0x0 - bne _020B8F3C - ldr r0, [r7, #0xb0] - add r1, sp, #0x38 - ldrh r4, [r0, #0x2e] - ldrh r5, [r0, #0x2c] - mov r3, #0x10000 - rsb r0, r4, #0x0 - mov r12, r0, lsl #0xf - mov lr, r5, lsl #0xf - mov r0, #0x1b - mov r2, #0x3 - str lr, [sp, #0x38] - str r12, [sp, #0x3c] - str r3, [sp, #0x40] - bl FUN_020BB1C0 - mov r0, r5, lsl #0x13 - mov r1, r4, lsl #0x13 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8F3C: - cmp r6, #0x2 - bne _020B8F78 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8F7C -_020B8F78: - mov r0, #0x0 -_020B8F7C: - cmp r0, #0x0 - bne _020B8FE0 - ldr r4, [r7, #0xd8] - ldr r0, [r7, #0x0] - ldrh r2, [r4, #0xa] - add r3, r4, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8FE0 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8FE0: - cmp r6, #0x3 - movne r0, #0x0 - bne _020B900C - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x8] - and r0, r0, #0x40 -_020B900C: - cmp r0, #0x0 - bne _020B90D0 - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x0 - bl FUN_020BB824 - mov r3, #0x3 - add r1, sp, #0xc - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 - ldr r0, _020B9104 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9094 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - ldr r1, _020B910C ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B9094: - ands r0, r1, #0x2 - beq _020B90C0 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B90C0: - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020B90D0: - mov r3, #0x2 - add r1, sp, #0x10 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020B90E8: - ldr r0, [r7, #0x0] - add r0, r0, #0x3 - str r0, [r7, #0x0] - add sp, sp, #0x44 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B90FC: .word UNK_02106638 -_020B9100: .word UNK_0210663C -_020B9104: .word UNK_021CED18 -_020B9108: .word UNK_021CED64 -_020B910C: .word UNK_021CEDD4 - - arm_func_start FUN_020B9110 -FUN_020B9110: ; 0x020B9110 - stmdb sp!, {r4,lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r2, [r4, #0x8] - ands r0, r2, #0x100 - bne _020B9164 - ands r0, r2, #0x200 - bne _020B9164 - cmp r1, #0x0 - ldreq r0, [r4, #0xe0] - add r1, sp, #0x0 - streq r0, [sp, #0x8] - streq r0, [sp, #0x4] - streq r0, [sp, #0x0] - ldrne r0, [r4, #0xe4] - mov r2, #0x3 - strne r0, [sp, #0x8] - strne r0, [sp, #0x4] - strne r0, [sp, #0x0] - mov r0, #0x1b - bl FUN_020BB1C0 -_020B9164: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020B9178 -FUN_020B9178: ; 0x020B9178 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B91CC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r1, r0, #0x40 - b _020B91D0 -_020B91CC: - mov r1, #0x0 -_020B91D0: - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020B9228 - cmp r1, #0x0 - bne _020B9228 - ldr r0, [r5, #0x0] - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x2] - ldrb lr, [r0, #0x3] - ldrb r2, [r0, #0x5] - ldrb r1, [r0, #0x6] - orr r3, r12, r3, lsl #0x8 - ldrb r6, [r0, #0x4] - orr r12, r3, lr, lsl #0x10 - ldrb r3, [r0, #0x7] - orr r1, r2, r1, lsl #0x8 - orr r6, r12, r6, lsl #0x18 - ldrb r2, [r0, #0x8] - orr r1, r1, r3, lsl #0x10 - add r0, r0, r6 - orr r1, r1, r2, lsl #0x18 - bl FUN_020BB2B0 -_020B9228: - cmp r4, #0x3 - bne _020B9248 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 -_020B9248: - ldr r0, [r5, #0x0] - add r0, r0, #0x9 - str r0, [r5, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020B9258 -FUN_020B9258: ; 0x020B9258 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x8c - ldr r1, [r0, #0x4] - ldr r4, [r0, #0x0] - ldr r6, [r1, #0x4] - ldrb r2, [r4, #0x2] - ldr r3, [r6, #0x10] - mov r10, #0x0 - str r0, [sp, #0x0] - str r2, [sp, #0x8] - add r3, r6, r3 - add r1, sp, #0x34 - mov r0, r10 - mov r2, #0x54 - mov r9, r10 - str r3, [sp, #0x4] - add r8, r4, #0x3 - bl MIi_CpuClearFast - bl FUN_020BB394 - ldr r0, _020B98AC ; =0x04000440 - mov r7, r10 - str r7, [r0, #0x0] - mov r0, #0x1 - ldr r2, _020B98B0 ; =0x0400044C - ldr r1, _020B98B4 ; =0x04000454 - str r0, [r2, #0x0] - str r0, [sp, #0x10] - str r7, [r1, #0x0] - mov r1, #0x2 - ldr r0, _020B98AC ; =0x04000440 - str r1, [sp, #0x14] - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bls _020B96CC -_020B92E4: - ldrb r4, [r8, #0x1] - mov r0, #0x64 - ldr r3, _020B98B8 ; =UNK_021D0380 - mul r0, r4, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x0] - mov r1, r4, lsr #0x5 - add r0, r0, r1, lsl #0x2 - ldr r1, [sp, #0x10] - and r2, r4, #0x1f - mov r1, r1, lsl r2 - ldr r11, [r0, #0xcc] - ldr r2, [sp, #0xc] - ands r11, r1, r11 - add r6, r3, r2 - bne _020B9358 - ldr r3, [r0, #0xcc] - mov r2, #0x54 - orr r1, r3, r1 - str r1, [r0, #0xcc] - ldr r0, [sp, #0x4] - ldr r1, _020B98BC ; =0x04000450 - mla r0, r4, r2, r0 - ldrb r2, [r8, #0x0] - str r2, [r1, #0x0] - ldr r2, [sp, #0x10] - ldr r1, _020B98AC ; =0x04000440 - str r2, [r1, #0x0] - bl G3_MultMtx43 -_020B9358: - cmp r7, #0x0 - beq _020B9500 - ldr r2, [sp, #0x6c] - ldr r1, [r5, #0x0] - str r2, [sp, #0x18] - ldr r2, [sp, #0x70] - mov r0, r1, asr #0x1f - str r2, [sp, #0x1c] - ldr r2, [sp, #0x74] - ldr r12, [sp, #0x64] - str r2, [sp, #0x20] - ldr r2, [sp, #0x78] - ldr lr, [sp, #0x68] - str r2, [sp, #0x24] - ldr r2, [sp, #0x7c] - str r2, [sp, #0x28] - ldr r2, [sp, #0x80] - str r2, [sp, #0x2c] - ldr r2, [sp, #0x84] - str r2, [sp, #0x30] - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r12, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, lr, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x18] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x6c] - ldr r1, [r5, #0xc] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x1c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x70] - ldr r1, [r5, #0x10] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x20] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x74] - ldr r1, [r5, #0x14] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x24] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x78] - ldr r1, [r5, #0x18] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x28] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x7c] - ldr r1, [r5, #0x1c] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x2c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x80] - ldr r1, [r5, #0x20] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x30] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x84] -_020B9500: - cmp r11, #0x0 - bne _020B9538 -_020B9508: - mov r0, r6 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9508 - ldr r1, [sp, #0x14] - ldr r0, _020B98AC ; =0x04000440 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - mov r1, #0x54 - mla r0, r4, r1, r0 - add r0, r0, #0x30 - bl G3_MultMtx33 -_020B9538: - ldrb r1, [r8, #0x2] - ldr r2, [sp, #0x34] - ldr r0, [r6, #0x0] - mov r10, r1, lsl #0x4 - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x34] - mov r9, r10, asr #0x1f - ldr r2, [sp, #0x38] - ldr r0, [r6, #0x4] - ldr r3, [sp, #0x3c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x38] - ldr r0, [r6, #0x8] - ldr r2, [sp, #0x40] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x3c] - ldr r0, [r6, #0x10] - ldr r3, [sp, #0x44] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x40] - ldr r0, [r6, #0x14] - ldr r2, [sp, #0x48] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x44] - ldr r0, [r6, #0x18] - ldr r3, [sp, #0x4c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x48] - ldr r0, [r6, #0x20] - ldr r2, [sp, #0x50] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x4c] - ldr r0, [r6, #0x24] - ldr r3, [sp, #0x54] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x50] - ldr r0, [r6, #0x28] - ldr r2, [sp, #0x58] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x54] - ldr r0, [r6, #0x30] - ldr r3, [sp, #0x5c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x58] - ldr r0, [r6, #0x34] - ldr r2, [sp, #0x60] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x5c] - ldr r0, [r6, #0x38] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x60] - cmp r11, #0x0 - ldr r1, _020B98C0 ; =UNK_021D03C0 - ldr r0, [sp, #0xc] - add r5, r1, r0 - add r8, r8, #0x3 - bne _020B96BC -_020B96AC: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020B96AC -_020B96BC: - ldr r0, [sp, #0x8] - add r7, r7, #0x1 - cmp r7, r0 - blo _020B92E4 -_020B96CC: - ldr r1, [r5, #0x0] - ldr r4, [sp, #0x64] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - ldr r4, [sp, #0x68] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - ldr r4, [sp, #0x6c] - umull r0, r2, r10, r1 - mov r3, r0, lsr #0xc - mov r0, r1, asr #0x1f - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - orr r3, r3, r2, lsl #0x14 - adds r0, r4, r3 - str r0, [sp, #0x6c] - ldr r7, [r5, #0xc] - ldr r12, [sp, #0x70] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r6, r12, r6 - str r6, [sp, #0x70] - ldr r7, [r5, #0x10] - ldr r4, [sp, #0x74] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r4, r4, r6 - str r4, [sp, #0x74] - ldr r6, [r5, #0x14] - ldr r3, [sp, #0x78] - mov r4, r6, asr #0x1f - umull r8, r7, r10, r6 - mla r7, r10, r4, r7 - mla r7, r9, r6, r7 - mov r4, r8, lsr #0xc - orr r4, r4, r7, lsl #0x14 - adds r3, r3, r4 - str r3, [sp, #0x78] - ldr r4, [r5, #0x18] - ldr r2, [sp, #0x7c] - mov r3, r4, asr #0x1f - umull r7, r6, r10, r4 - mla r6, r10, r3, r6 - mla r6, r9, r4, r6 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - adds r2, r2, r3 - str r2, [sp, #0x7c] - ldr r3, [r5, #0x1c] - ldr r1, [sp, #0x80] - mov r2, r3, asr #0x1f - umull r6, r4, r10, r3 - mla r4, r10, r2, r4 - mla r4, r9, r3, r4 - mov r2, r6, lsr #0xc - orr r2, r2, r4, lsl #0x14 - adds r1, r1, r2 - str r1, [sp, #0x80] - ldr r2, [r5, #0x20] - ldr lr, [sp, #0x84] - mov r1, r2, asr #0x1f - umull r4, r3, r10, r2 - mla r3, r10, r1, r3 - mla r3, r9, r2, r3 - mov r1, r4, lsr #0xc - orr r1, r1, r3, lsl #0x14 - adds r1, lr, r1 - add r0, sp, #0x64 - str r1, [sp, #0x84] - bl G3_LoadMtx43 - ldr r1, _020B98AC ; =0x04000440 - mov r2, #0x1 - add r0, sp, #0x34 - str r2, [r1, #0x0] - bl G3_LoadMtx43 - ldr r3, _020B98AC ; =0x04000440 - mov r0, #0x0 - str r0, [r3, #0x0] - ldr r1, _020B98BC ; =0x04000450 - mov r2, #0x1 - mov r0, #0x2 - str r2, [r1, #0x0] - str r0, [r3, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, _020B98B0 ; =0x0400044C - ldrb r2, [r1, #0x1] - mov r1, #0x3 - str r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r2, [r0, #0x0] - ldrb r0, [r2, #0x2] - add r0, r0, #0x1 - mla r1, r0, r1, r2 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x8c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B98AC: .word 0x04000440 -_020B98B0: .word 0x0400044C -_020B98B4: .word 0x04000454 -_020B98B8: .word UNK_021D0380 -_020B98BC: .word 0x04000450 -_020B98C0: .word UNK_021D03C0 - - arm_func_start FUN_020B98C4 -FUN_020B98C4: ; 0x020B98C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xcc - mov r10, r0 - ldr r2, [r10, #0x8] - mov r9, r1 - ands r0, r2, #0x200 - mov r7, #0x2 - ldr r6, _020B9C28 ; =UNK_02106718 - ldr fp, _020B9C2C ; =UNK_02106724 - ldr r5, _020B9C30 ; =UNK_021066F4 - beq _020B992C - cmp r9, #0x40 - beq _020B9900 - cmp r9, #0x60 - bne _020B9904 -_020B9900: - add r7, r7, #0x1 -_020B9904: - cmp r9, #0x20 - beq _020B9914 - cmp r9, #0x60 - bne _020B9918 -_020B9914: - add r7, r7, #0x1 -_020B9918: - ldr r0, [r10, #0x0] - add sp, sp, #0xcc - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020B992C: - cmp r9, #0x40 - beq _020B993C - cmp r9, #0x60 - bne _020B9974 -_020B993C: - add r7, r7, #0x1 - ands r0, r2, #0x100 - bne _020B9974 - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9974: - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020B99C0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r1, r0, #0x40 - b _020B99C4 -_020B99C0: - mov r1, #0x0 -_020B99C4: - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9BA4 - cmp r1, #0x0 - bne _020B9BA4 - bl FUN_020BB394 - ldr r2, _020B9C34 ; =0x00151110 - ldr r1, _020B9C38 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r4, sp, #0x8 -_020B99F8: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B99F8 - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9A38 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9A5C -_020B9A38: - ands r0, r1, #0x2 - beq _020B9A5C - ldr r0, _020B9C40 ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9A5C: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r6, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r6, #0x4] - ldr r1, [sp, #0x40] - str r1, [r6, #0x8] - bl VEC_Mag - str r0, [r11, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r11, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - str r0, [r11, #0x8] - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - bne _020B9AB0 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - beq _020B9AD4 -_020B9AB0: - add r0, sp, #0x18 - add r1, r5, #0xc - bl VEC_Normalize - ldr r0, [r5, #0x14] - rsb r0, r0, #0x0 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x10] - str r0, [r5, #0x20] - b _020B9AF4 -_020B9AD4: - add r0, sp, #0x28 - add r1, r5, #0x18 - bl VEC_Normalize - ldr r0, [r5, #0x1c] - rsb r0, r0, #0x0 - str r0, [r5, #0x14] - ldr r0, [r5, #0x20] - str r0, [r5, #0x10] -_020B9AF4: - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9B48 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B48: - ands r0, r1, #0x2 - beq _020B9B94 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B94: - ldr r0, _020B9C50 ; =UNK_021066E8 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9BA4: - cmp r8, #0x3 - movne r0, #0x0 - bne _020B9BD0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020B9BD0: - cmp r9, #0x20 - beq _020B9BE0 - cmp r9, #0x60 - bne _020B9C14 -_020B9BE0: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020B9C14 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9C14 - ldr r0, [r10, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9C14: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0xcc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B9C28: .word UNK_02106718 -_020B9C2C: .word UNK_02106724 -_020B9C30: .word UNK_021066F4 -_020B9C34: .word 0x00151110 -_020B9C38: .word 0x04000400 -_020B9C3C: .word UNK_021CED18 -_020B9C40: .word UNK_021CED64 -_020B9C44: .word 0x00171012 -_020B9C48: .word UNK_021066EC -_020B9C4C: .word 0x00001B19 -_020B9C50: .word UNK_021066E8 - - arm_func_start FUN_020B9C54 -FUN_020B9C54: ; 0x020B9C54 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0xc8 - mov r9, r0 - ldr r2, [r9, #0x8] - mov r8, r1 - ands r0, r2, #0x200 - mov r6, #0x2 - ldr r5, _020B9F58 ; =UNK_021066D0 - ldr r4, _020B9F5C ; =UNK_021066DC - beq _020B9CB8 - cmp r8, #0x40 - beq _020B9C8C - cmp r8, #0x60 - bne _020B9C90 -_020B9C8C: - add r6, r6, #0x1 -_020B9C90: - cmp r8, #0x20 - beq _020B9CA0 - cmp r8, #0x60 - bne _020B9CA4 -_020B9CA0: - add r6, r6, #0x1 -_020B9CA4: - ldr r0, [r9, #0x0] - add sp, sp, #0xc8 - add r0, r0, r6 - str r0, [r9, #0x0] - ldmia sp!, {r4-r10,pc} -_020B9CB8: - cmp r8, #0x40 - beq _020B9CC8 - cmp r8, #0x60 - bne _020B9D00 -_020B9CC8: - add r6, r6, #0x1 - ands r0, r2, #0x100 - bne _020B9D00 - cmp r8, #0x40 - ldreq r0, [r9, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r9, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9D00: - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - moveq r7, #0x0 - cmp r7, #0x1 - bne _020B9D4C - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - ldr r0, [r9, #0x8] - moveq r7, #0x0 - and r1, r0, #0x40 - b _020B9D50 -_020B9D4C: - mov r1, #0x0 -_020B9D50: - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9ED4 - cmp r1, #0x0 - bne _020B9ED4 - bl FUN_020BB394 - ldr r2, _020B9F60 ; =0x00151110 - ldr r1, _020B9F64 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r10, sp, #0x8 -_020B9D84: - mov r0, r10 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9D84 - ldr r0, _020B9F68 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9DC4 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9DE8 -_020B9DC4: - ands r0, r1, #0x2 - beq _020B9DE8 - ldr r0, _020B9F6C ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9DE8: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r5, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r5, #0x4] - ldr r1, [sp, #0x40] - str r1, [r5, #0x8] - bl VEC_Mag - str r0, [r4, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r4, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - ldr r1, _020B9F68 ; =UNK_021CED18 - str r0, [r4, #0x8] - ldr r1, [r1, #0xfc] - ands r0, r1, #0x1 - beq _020B9E78 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9E78: - ands r0, r1, #0x2 - beq _020B9EC4 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9EC4: - ldr r0, _020B9F80 ; =UNK_021066A0 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9ED4: - cmp r7, #0x3 - movne r0, #0x0 - bne _020B9F00 - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x8] - and r0, r0, #0x40 -_020B9F00: - cmp r8, #0x20 - beq _020B9F10 - cmp r8, #0x60 - bne _020B9F44 -_020B9F10: - cmp r0, #0x0 - add r6, r6, #0x1 - bne _020B9F44 - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9F44 - ldr r0, [r9, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9F44: - ldr r0, [r9, #0x0] - add r0, r0, r6 - str r0, [r9, #0x0] - add sp, sp, #0xc8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B9F58: .word UNK_021066D0 -_020B9F5C: .word UNK_021066DC -_020B9F60: .word 0x00151110 -_020B9F64: .word 0x04000400 -_020B9F68: .word UNK_021CED18 -_020B9F6C: .word UNK_021CED64 -_020B9F70: .word 0x00171012 -_020B9F74: .word UNK_021066A4 -_020B9F78: .word 0x00001B19 -_020B9F7C: .word UNK_021066AC -_020B9F80: .word UNK_021066A0 - - arm_func_start FUN_020B9F84 -FUN_020B9F84: ; 0x020B9F84 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - ldrb r4, [r0, #0x1] - mov r7, #0x4 - strb r4, [r10, #0xae] - ldr r0, [r10, #0x8] - orr r0, r0, #0x10 - str r0, [r10, #0x8] - ldr r1, [r10, #0x8] - ands r0, r1, #0x400 - beq _020BA01C - cmp r9, #0x40 - beq _020B9FCC - cmp r9, #0x60 - bne _020B9FD0 -_020B9FCC: - add r7, r7, #0x1 -_020B9FD0: - cmp r9, #0x20 - beq _020B9FE0 - cmp r9, #0x60 - bne _020BA008 -_020B9FE0: - add r7, r7, #0x1 - ands r0, r1, #0x100 - bne _020BA008 - ldr r0, [r10, #0x0] - add r1, sp, #0x8 - ldrb r3, [r0, #0x4] - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 -_020BA008: - ldr r0, [r10, #0x0] - add sp, sp, #0x14 - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020BA01C: - cmp r9, #0x40 - beq _020BA02C - cmp r9, #0x60 - bne _020BA068 -_020BA02C: - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r7, r7, #0x1 - ldreqb r0, [r0, #0x4] - streq r0, [sp, #0xc] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x5] - strne r0, [sp, #0xc] - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA068 - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BA068: - add r0, r10, #0x12c - str r0, [r10, #0xb4] - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020BA0BC - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA0C0 -_020BA0BC: - mov r0, #0x0 -_020BA0C0: - cmp r0, #0x0 - bne _020BA2CC - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x34] - cmp r1, #0x0 - beq _020BA0F4 - mov r0, #0x58 - mla r6, r4, r0, r1 - ldr r0, [r10, #0x8] - ands r0, r0, #0x80 - moveq r0, #0x1 - movne r0, #0x0 - b _020BA0FC -_020BA0F4: - add r6, r10, #0x12c - mov r0, #0x0 -_020BA0FC: - cmp r0, #0x0 - bne _020BA2C8 - mov r0, #0x0 - str r0, [r6, #0x0] - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x10] - cmp r1, #0x0 - beq _020BA134 - ldr r3, [r0, #0x14] - mov r0, r6 - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BA2C8 -_020BA134: - ldr r2, [r10, #0xd4] - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r1, [r0, #0x4] - ldrh r0, [r2, r1] - add r4, r2, r1 - add r5, r4, #0x4 - ands r0, r0, #0x1 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x4 - strne r0, [r6, #0x0] - bne _020BA188 - ldr r0, [r5, #0x0] - str r0, [r6, #0x4c] - ldr r0, [r5, #0x4] - str r0, [r6, #0x50] - ldr r0, [r5, #0x8] - add r5, r5, #0xc - str r0, [r6, #0x54] -_020BA188: - ldrh r1, [r4, #0x0] - ands r0, r1, #0x2 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x2 - strne r0, [r6, #0x0] - bne _020BA2B0 - ands r0, r1, #0x8 - beq _020BA264 - and r1, r1, #0xf0 - mov r11, r1, asr #0x4 - ldrsh r1, [r5, #0x0] - add r0, r6, #0x28 - str r1, [sp, #0x0] - ldrsh r1, [r5, #0x2] - str r1, [sp, #0x4] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r6, r11, lsl #0x2 - add r5, r5, #0x4 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - str r2, [r1, #0x28] - ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F1 - ldrb r0, [r0, r11, lsl #0x2] - add r2, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r2, #0x28] - ldrb r0, [r1, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldrne r0, [sp, #0x4] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F2 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldrne r0, [sp, #0x0] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F3 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r1, #0x28] - b _020BA2B0 -_020BA264: - ldrsh r0, [r4, #0x2] - str r0, [r6, #0x28] - ldrsh r0, [r5, #0x0] - str r0, [r6, #0x2c] - ldrsh r0, [r5, #0x2] - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x4] - str r0, [r6, #0x34] - ldrsh r0, [r5, #0x6] - str r0, [r6, #0x38] - ldrsh r0, [r5, #0x8] - str r0, [r6, #0x3c] - ldrsh r0, [r5, #0xa] - str r0, [r6, #0x40] - ldrsh r0, [r5, #0xc] - str r0, [r6, #0x44] - ldrsh r0, [r5, #0xe] - add r5, r5, #0x10 - str r0, [r6, #0x48] -_020BA2B0: - ldrh r3, [r4, #0x0] - ldr r2, [r10, #0x0] - ldr r4, [r10, #0xe8] - mov r0, r6 - mov r1, r5 - blx r4 -_020BA2C8: - str r6, [r10, #0xb4] -_020BA2CC: - cmp r8, #0x2 - bne _020BA308 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA30C -_020BA308: - mov r0, #0x0 -_020BA30C: - cmp r0, #0x0 - bne _020BA32C - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA32C - ldr r0, [r10, #0xb4] - ldr r1, [r10, #0xec] - blx r1 -_020BA32C: - mov r0, #0x0 - str r0, [r10, #0xb4] - cmp r8, #0x3 - bne _020BA35C - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020BA35C: - cmp r9, #0x20 - beq _020BA36C - cmp r9, #0x60 - bne _020BA3A0 -_020BA36C: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020BA3A0 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA3A0 - ldr r0, [r10, #0x0] - add r1, sp, #0x10 - ldrb r3, [r0, #0x4] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020BA3A0: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F1 -_020BA3BC: .word UNK_020FF9F2 -_020BA3C0: .word UNK_020FF9F3 - - arm_func_start FUN_020BA3C4 -FUN_020BA3C4: ; 0x020BA3C4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r3, [r4, #0x8] - ands r2, r3, #0x200 - bne _020BA420 - ands r2, r3, #0x1 - beq _020BA420 - ands r2, r3, #0x2 - bne _020BA420 - ldr r5, [r4, #0xdc] - ldr r3, [r4, #0x0] - ldrh r2, [r5, #0x6] - ldrb r3, [r3, #0x1] - ldr ip, _020BA434 ; =UNK_02106650 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r5, r2] - add r2, r5, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA420: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BA434: .word UNK_02106650 - - arm_func_start FUN_020BA438 -FUN_020BA438: ; 0x020BA438 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x20] - mov r5, r2 - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BA490 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - ldr r0, [r6, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BA494 -_020BA490: - mov r0, #0x0 -_020BA494: - cmp r0, #0x0 - bne _020BA4B8 - ldr r0, [r6, #0x8] - ands r0, r0, #0x100 - bne _020BA4B8 - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - add r0, r5, r0 - bl FUN_020BB2B0 -_020BA4B8: - cmp r4, #0x2 - bne _020BA4E8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 -_020BA4E8: - cmp r4, #0x3 - ldmneia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BA50C -FUN_020BA50C: ; 0x020BA50C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r5, [r4, #0x8] - ands r0, r5, #0x200 - bne _020BA578 - ldr r2, [r4, #0x0] - ands r0, r5, #0x1 - ldrb r3, [r2, #0x1] - bne _020BA544 - ands r0, r5, #0x8 - beq _020BA544 - ldrb r0, [r4, #0xad] - cmp r3, r0 - beq _020BA578 -_020BA544: - ldr r6, [r4, #0xd8] - ldr ip, _020BA588 ; =UNK_02106640 - ldrh r2, [r6, #0xa] - add r5, r6, #0x4 - mov r0, r4 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r6, r2] - add r2, r6, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA578: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BA588: .word UNK_02106640 - - arm_func_start FUN_020BA58C -FUN_020BA58C: ; 0x020BA58C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x20 - mov r8, r0 - mov r6, r3 - strb r6, [r8, #0xad] - ldr r3, [r8, #0x8] - add r0, r8, #0xf4 - orr r3, r3, #0x8 - str r3, [r8, #0x8] - str r0, [r8, #0xb0] - ldr r0, [r8, #0x1c] - mov r4, r1 - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - mov r7, r2 - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BA608 - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA60C -_020BA608: - mov r0, #0x0 -_020BA60C: - cmp r0, #0x0 - bne _020BA8C0 - ldr r0, [r8, #0x4] - ldr r0, [r0, #0x38] - cmp r0, #0x0 - beq _020BA638 - ldr r1, [r8, #0x8] - ands r1, r1, #0x80 - moveq r1, #0x38 - mlaeq r4, r6, r1, r0 - beq _020BA8BC -_020BA638: - cmp r4, #0x20 - beq _020BA648 - cmp r4, #0x40 - bne _020BA684 -_020BA648: - mov r1, r6, lsr #0x5 - add r1, r8, r1, lsl #0x2 - and r2, r6, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xbc] - ands r1, r2, r1 - beq _020BA684 - cmp r0, #0x0 - movne r1, #0x38 - mlane r4, r6, r1, r0 - ldreq r1, _020BA9D8 ; =UNK_021CEF80 - moveq r0, #0x38 - mlaeq r4, r6, r0, r1 - b _020BA8BC -_020BA684: - cmp r0, #0x0 - beq _020BA6BC - add r4, r8, #0xbc - mov r3, r6, lsr #0x5 - ldr r2, [r4, r3, lsl #0x2] - and r0, r6, #0x1f - mov r1, #0x1 - orr r0, r2, r1, lsl r0 - str r0, [r4, r3, lsl #0x2] - ldr r1, [r8, #0x4] - mov r0, #0x38 - ldr r1, [r1, #0x38] - mla r4, r6, r0, r1 - b _020BA6F0 -_020BA6BC: - cmp r4, #0x40 - addne r4, r8, #0xf4 - bne _020BA6F0 - add lr, r8, #0xbc - mov r12, r6, lsr #0x5 - ldr r1, _020BA9D8 ; =UNK_021CEF80 - ldr r4, [lr, r12, lsl #0x2] - mov r0, #0x38 - and r2, r6, #0x1f - mov r3, #0x1 - orr r2, r4, r3, lsl r2 - mla r4, r6, r0, r1 - str r2, [lr, r12, lsl #0x2] -_020BA6F0: - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r3, [r8, #0xd8] - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r6, r0 - ldr r0, [r0, #0x4] - ldr r1, _020BA9DC ; =UNK_021CED18 - add r0, r3, r0 - ldrh r0, [r0, #0x1e] - ands r0, r0, #0x20 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x20 - strne r0, [r4, #0x0] - ldrh r2, [r7, #0x1e] - ldr r0, _020BA9E0 ; =UNK_020FF9D0 - ldr r12, [r1, #0x94] - mov r2, r2, asr #0x6 - and r2, r2, #0x7 - ldr lr, [r0, r2, lsl #0x2] - ldr r2, [r7, #0x4] - mvn r3, lr - and r3, r12, r3 - and r2, r2, lr - orr r2, r3, r2 - str r2, [r4, #0x4] - ldrh r12, [r7, #0x1e] - ldr r3, [r1, #0x98] - ldr r2, [r7, #0x8] - mov r12, r12, asr #0x9 - and r12, r12, #0x7 - ldr r12, [r0, r12, lsl #0x2] - mvn r0, r12 - and r3, r3, r0 - and r0, r2, r12 - orr r0, r3, r0 - str r0, [r4, #0x8] - ldr r3, [r7, #0x10] - ldr r0, [r7, #0xc] - ldr r2, [r1, #0x9c] - mvn r1, r3 - and r1, r2, r1 - and r0, r0, r3 - orr r0, r1, r0 - str r0, [r4, #0xc] - ldr r0, [r7, #0x14] - str r0, [r4, #0x10] - ldrh r0, [r7, #0x1c] - str r0, [r4, #0x14] - ldrh r1, [r7, #0x1e] - ands r0, r1, #0x1 - beq _020BA850 - ands r1, r1, #0x2 - ldrne r1, [r4, #0x0] - add r0, r7, #0x2c - orrne r1, r1, #0x1 - strne r1, [r4, #0x0] - bne _020BA7F4 - ldr r1, [r0, #0x0] - str r1, [r4, #0x18] - ldr r1, [r0, #0x4] - add r0, r0, #0x8 - str r1, [r4, #0x1c] -_020BA7F4: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x4 - ldrne r1, [r4, #0x0] - orrne r1, r1, #0x2 - strne r1, [r4, #0x0] - bne _020BA820 - ldrsh r1, [r0, #0x0] - strh r1, [r4, #0x20] - ldrsh r1, [r0, #0x2] - add r0, r0, #0x4 - strh r1, [r4, #0x22] -_020BA820: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x8 - ldreq r1, [r0, #0x0] - streq r1, [r4, #0x24] - ldreq r0, [r0, #0x4] - streq r0, [r4, #0x28] - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x4 - strne r0, [r4, #0x0] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] -_020BA850: - ldr r0, [r8, #0x4] - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _020BA890 - mov r2, r6, lsr #0x5 - add r2, r0, r2, lsl #0x2 - and r3, r6, #0x1f - mov r12, #0x1 - mov r3, r12, lsl r3 - ldr r2, [r2, #0x3c] - ands r2, r3, r2 - beq _020BA890 - ldr r3, [r0, #0xc] - mov r0, r4 - mov r2, r6 - blx r3 -_020BA890: - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA8BC - ldrh r0, [r7, #0x20] - strh r0, [r4, #0x2c] - ldrh r0, [r7, #0x22] - strh r0, [r4, #0x2e] - ldr r0, [r7, #0x24] - str r0, [r4, #0x30] - ldr r0, [r7, #0x28] - str r0, [r4, #0x34] -_020BA8BC: - str r4, [r8, #0xb0] -_020BA8C0: - cmp r5, #0x2 - bne _020BA8FC - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA900 -_020BA8FC: - mov r0, #0x0 -_020BA900: - cmp r0, #0x0 - bne _020BA9AC - ldr r4, [r8, #0xb0] - ldr r1, [r4, #0xc] - ands r0, r1, #0x1f0000 - beq _020BA9A0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - strne r0, [r4, #0xc] - ldr r0, [r8, #0x8] - bic r0, r0, #0x2 - str r0, [r8, #0x8] - ldr r0, [r8, #0x8] - ands r0, r0, #0x100 - bne _020BA9AC - ldr r0, _020BA9E4 ; =0x00293130 - ldr r3, _020BA9E8 ; =0x00002B2A - str r0, [sp, #0x0] - ldr r2, [r4, #0x4] - add r1, sp, #0x4 - str r2, [sp, #0x4] - ldr r6, [r4, #0x8] - mov r2, #0x6 - str r6, [sp, #0x8] - ldr r6, [r4, #0xc] - str r6, [sp, #0xc] - str r3, [sp, #0x10] - ldr r3, [r4, #0x10] - str r3, [sp, #0x14] - ldr r3, [r4, #0x14] - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA9AC - ldr r1, [r8, #0xf0] - mov r0, r4 - blx r1 - b _020BA9AC -_020BA9A0: - ldr r0, [r8, #0x8] - orr r0, r0, #0x2 - str r0, [r8, #0x8] -_020BA9AC: - cmp r5, #0x3 - addne sp, sp, #0x20 - ldmneia sp!, {r4-r8,pc} - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - add sp, sp, #0x20 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BA9D8: .word UNK_021CEF80 -_020BA9DC: .word UNK_021CED18 -_020BA9E0: .word UNK_020FF9D0 -_020BA9E4: .word 0x00293130 -_020BA9E8: .word 0x00002B2A - - arm_func_start FUN_020BA9EC -FUN_020BA9EC: ; 0x020BA9EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020BAAAC - ands r0, r1, #0x1 - beq _020BAAAC - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BAA58 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BAA5C -_020BAA58: - mov r0, #0x0 -_020BAA5C: - cmp r0, #0x0 - bne _020BAA8C - ldr r0, [r5, #0x0] - ldrb r0, [r0, #0x1] - str r0, [sp, #0x0] - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020BAA8C - add r1, sp, #0x0 - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BAA8C: - cmp r4, #0x3 - bne _020BAAAC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 -_020BAAAC: - ldr r0, [r5, #0x0] - add r0, r0, #0x2 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BAAC0 -FUN_020BAAC0: ; 0x020BAAC0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x8] - ands r0, r0, #0x200 - bne _020BAC38 - ldr r1, [r6, #0x0] - add r0, r6, #0x184 - ldrb r1, [r1, #0x1] - strb r1, [r6, #0xac] - ldr r1, [r6, #0x8] - ldrb r4, [r6, #0xac] - orr r1, r1, #0x4 - str r1, [r6, #0x8] - str r0, [r6, #0xb8] - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BAB44 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BAB48 -_020BAB44: - mov r0, #0x0 -_020BAB48: - cmp r0, #0x0 - bne _020BABAC - ldr r12, [r6, #0x4] - ldr r1, [r12, #0x18] - cmp r1, #0x0 - beq _020BAB98 - mov r0, r4, lsr #0x5 - add r0, r12, r0, lsl #0x2 - and r2, r4, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x4c] - ands r0, r2, r0 - beq _020BAB98 - ldr r0, [r6, #0xb8] - ldr r3, [r12, #0x1c] - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BABAC -_020BAB98: - ldr r1, [r6, #0x0] - ldr r0, [r6, #0xb8] - ldrb r1, [r1, #0x2] - and r1, r1, #0x1 - str r1, [r0, #0x0] -_020BABAC: - cmp r5, #0x2 - bne _020BABE8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BABEC -_020BABE8: - mov r0, #0x0 -_020BABEC: - cmp r0, #0x0 - bne _020BAC18 - ldr r0, [r6, #0xb8] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, [r6, #0x8] - orrne r0, r0, #0x1 - strne r0, [r6, #0x8] - ldreq r0, [r6, #0x8] - biceq r0, r0, #0x1 - streq r0, [r6, #0x8] -_020BAC18: - cmp r5, #0x3 - bne _020BAC38 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 -_020BAC38: - ldr r0, [r6, #0x0] - add r0, r0, #0x3 - str r0, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BAC48 -FUN_020BAC48: ; 0x020BAC48 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAC60 - blx r1 -_020BAC60: - ldr r0, [r4, #0x8] - orr r0, r0, #0x20 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC70 -FUN_020BAC70: ; 0x020BAC70 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0xc] - cmp r1, #0x0 - beq _020BAC88 - blx r1 -_020BAC88: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BAC98 -FUN_020BAC98: ; 0x020BAC98 - stmdb sp!, {r4,lr} - sub sp, sp, #0x188 - mov r4, r0 - ldr r0, [r4, #0x0] - and r0, r0, #0x10 - cmp r0, #0x10 - bne _020BAD2C - add r1, r4, #0x3c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x44 - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x4c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020BACF8 - add r0, r4, #0x3c - bl FUN_020BAD74 -_020BACF8: - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAD0C - add r0, r4, #0x44 - bl FUN_020BAD74 -_020BAD0C: - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _020BAD20 - add r0, r4, #0x4c - bl FUN_020BAD74 -_020BAD20: - ldr r0, [r4, #0x0] - bic r0, r0, #0x10 - str r0, [r4, #0x0] -_020BAD2C: - ldr r2, _020BAD70 ; =UNK_021CEF7C - ldr r0, [r2, #0x0] - cmp r0, #0x0 - beq _020BAD4C - mov r1, r4 - bl FUN_020BADE4 - add sp, sp, #0x188 - ldmia sp!, {r4,pc} -_020BAD4C: - add r0, sp, #0x0 - mov r1, r4 - str r0, [r2, #0x0] - bl FUN_020BADE4 - ldr r0, _020BAD70 ; =UNK_021CEF7C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x188 - ldmia sp!, {r4,pc} - .balign 4 -_020BAD70: .word UNK_021CEF7C - - arm_func_start FUN_020BAD74 -FUN_020BAD74: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020BAD90: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020BADD0 -_020BADA0: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020BADA0 -_020BADD0: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020BAD90 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BADE4 -FUN_020BADE4: ; 0x020BADE4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x188 - bl MIi_CpuClearFast - mov r0, #0x1 - str r0, [r5, #0xc4] - str r0, [r5, #0x8] - ldr r0, [r4, #0x30] - ldr r2, _020BAF60 ; =UNK_02106614 - cmp r0, #0x0 - strne r0, [r5, #0x0] - ldreq r1, [r4, #0x4] - ldreq r0, [r1, #0x4] - addeq r0, r1, r0 - streq r0, [r5, #0x0] - str r4, [r5, #0x4] - ldr r0, [r4, #0x4] - ldr r1, _020BAF64 ; =UNK_02106608 - add r0, r0, #0x40 - str r0, [r5, #0xd4] - ldr r12, [r4, #0x4] - ldr r0, _020BAF68 ; =UNK_02106620 - ldr r3, [r12, #0x8] - add r3, r12, r3 - str r3, [r5, #0xd8] - ldr r12, [r4, #0x4] - ldr r3, [r12, #0xc] - add r3, r12, r3 - str r3, [r5, #0xdc] - ldr r3, [r4, #0x4] - ldrb r3, [r3, #0x15] - ldr r2, [r2, r3, lsl #0x2] - str r2, [r5, #0xe8] - ldr r2, [r4, #0x4] - ldrb r2, [r2, #0x15] - ldr r1, [r1, r2, lsl #0x2] - str r1, [r5, #0xec] - ldr r1, [r4, #0x4] - ldrb r1, [r1, #0x16] - ldr r0, [r0, r1, lsl #0x2] - str r0, [r5, #0xf0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x1c] - str r0, [r5, #0xe0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x20] - str r0, [r5, #0xe4] - ldr r1, [r4, #0x20] - cmp r1, #0x0 - beq _020BAEE0 - ldrb r0, [r4, #0x24] - cmp r0, #0x20 - bhs _020BAEE0 - add r0, r5, r0, lsl #0x2 - str r1, [r0, #0xc] - ldrb r0, [r4, #0x24] - ldrb r1, [r4, #0x25] - add r0, r5, r0 - strb r1, [r0, #0x8c] -_020BAEE0: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x80 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x100 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x200 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x8 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x400 - strne r0, [r5, #0x8] - ldr r1, [r4, #0x28] - cmp r1, #0x0 - beq _020BAF44 - mov r0, r5 - blx r1 -_020BAF44: - mov r0, r5 - bl FUN_020BAF6C - ldr r0, [r4, #0x0] - bic r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BAF60: .word UNK_02106614 -_020BAF64: .word UNK_02106608 -_020BAF68: .word UNK_02106620 - - arm_func_start FUN_020BAF6C -FUN_020BAF6C: - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r6, _020BAFB4 ; =UNK_02106730 - add r4, r5, #0x8 -_020BAF7C: - ldr r1, [r4, #0x0] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r4, #0x0] - ldr r1, [r5, #0x0] - ldrb r3, [r1, #0x0] - and r1, r3, #0x1f - ldr r2, [r6, r1, lsl #0x2] - and r1, r3, #0xe0 - blx r2 - ldr r0, [r5, #0x8] - ands r0, r0, #0x20 - beq _020BAF7C - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BAFB4: .word UNK_02106730 - - arm_func_start FUN_020BAFB8 -FUN_020BAFB8: ; 0x020BAFB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x6c - mov r6, r0 - ldr r12, [r6, #0x1c] - mov r4, r1 - mov r5, r2 - mov r7, r3 - cmp r12, #0x1000 - beq _020BAFF8 - add r1, sp, #0x54 - mov r0, #0x1b - mov r2, #0x3 - str r12, [sp, #0x54] - str r12, [sp, #0x58] - str r12, [sp, #0x5c] - bl FUN_020BB1C0 -_020BAFF8: - cmp r7, #0x0 - beq _020BB150 - ldr r0, [r6, #0x8] - add r3, r6, r0 - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r0, [r0, #0x4] - add r4, r3, r0 - ldr r0, [r4, #0xc] - ands r0, r0, #0x1f0000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - ldr r0, _020BB1B4 ; =0x00293130 - str r0, [sp, #0x0] - ldr r0, [r4, #0x4] - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - ldr r1, [r4, #0xc] - str r1, [sp, #0xc] - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - ldr r1, _020BB1B8 ; =0x00002B2A - strne r0, [sp, #0xc] - str r1, [sp, #0x10] - ldr r2, [r4, #0x14] - ldr r0, [sp, #0x0] - str r2, [sp, #0x14] - ldrh r3, [r4, #0x1c] - add r1, sp, #0x4 - mov r2, #0x6 - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x1 - beq _020BB150 - ldrb r12, [r6, #0x16] - mov r3, #0x8 - ldr r1, _020BB1BC ; =UNK_02106620 - str r3, [sp, #0x1c] - ldrh r2, [r4, #0x20] - add r0, r4, #0x2c - ldr r1, [r1, r12, lsl #0x2] - strh r2, [sp, #0x48] - ldrh r2, [r4, #0x22] - strh r2, [sp, #0x4a] - ldr r2, [r4, #0x24] - str r2, [sp, #0x4c] - ldr r2, [r4, #0x28] - str r2, [sp, #0x50] - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x2 - orrne r2, r3, #0x1 - strne r2, [sp, #0x1c] - bne _020BB0F8 - ldr r2, [r0, #0x0] - str r2, [sp, #0x34] - ldr r2, [r0, #0x4] - add r0, r0, #0x8 - str r2, [sp, #0x38] -_020BB0F8: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x4 - ldrne r2, [sp, #0x1c] - orrne r2, r2, #0x2 - strne r2, [sp, #0x1c] - bne _020BB124 - ldrsh r2, [r0, #0x0] - strh r2, [sp, #0x3c] - ldrsh r2, [r0, #0x2] - add r0, r0, #0x4 - strh r2, [sp, #0x3e] -_020BB124: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x8 - ldreq r2, [r0, #0x0] - streq r2, [sp, #0x40] - ldreq r0, [r0, #0x4] - streq r0, [sp, #0x44] - ldrne r0, [sp, #0x1c] - orrne r0, r0, #0x4 - strne r0, [sp, #0x1c] - add r0, sp, #0x1c - blx r1 -_020BB150: - ldr r0, [r6, #0xc] - add r2, r6, r0 - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r2, r2, r0 - ldr r0, [r2, #0x8] - ldr r1, [r2, #0xc] - add r0, r2, r0 - bl FUN_020BB2B0 - ldr r3, [r6, #0x20] - cmp r3, #0x1000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - add r1, sp, #0x60 - mov r0, #0x1b - mov r2, #0x3 - str r3, [sp, #0x60] - str r3, [sp, #0x64] - str r3, [sp, #0x68] - bl FUN_020BB1C0 - add sp, sp, #0x6c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BB1B4: .word 0x00293130 -_020BB1B8: .word 0x00002B2A -_020BB1BC: .word UNK_02106620 - - arm_func_start FUN_020BB1C0 -FUN_020BB1C0: - stmdb sp!, {r4-r6,lr} - ldr r3, _020BB2A4 ; =UNK_021D1C80 - mov r6, r0 - ldr r12, [r3, #0x0] - mov r5, r1 - mov r4, r2 - cmp r12, #0x0 - beq _020BB278 - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB24C - ldr r2, [r12, #0x0] - add r0, r2, #0x1 - add r1, r0, r4 - cmp r1, #0xc0 - bhi _020BB24C - str r0, [r12, #0x0] - ldr r0, [r3, #0x0] - cmp r4, #0x0 - add r0, r0, r2, lsl #0x2 - str r6, [r0, #0x4] - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r3, #0x0] - mov r0, r5 - ldr r1, [r2], #0x4 - add r1, r2, r1, lsl #0x2 - mov r2, r4, lsl #0x2 - bl MIi_CpuCopyFast - ldr r0, _020BB2A4 ; =UNK_021D1C80 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, r0, r4 - str r0, [r1, #0x0] - ldmia sp!, {r4-r6,pc} -_020BB24C: - ldr r0, [r12, #0x0] - cmp r0, #0x0 - beq _020BB260 - bl FUN_020BB394 - b _020BB28C -_020BB260: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C - b _020BB28C -_020BB278: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C -_020BB28C: - ldr r1, _020BB2AC ; =0x04000400 - mov r0, r5 - mov r2, r4, lsl #0x2 - str r6, [r1, #0x0] - bl MIi_CpuSend32 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB2A4: .word UNK_021D1C80 -_020BB2A8: .word UNK_021D1C84 -_020BB2AC: .word 0x04000400 - - arm_func_start FUN_020BB2B0 -FUN_020BB2B0: ; 0x020BB2B0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - cmp r4, #0x100 - blo _020BB2DC - ldr r1, _020BB360 ; =GXi_DmaId - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - bne _020BB2F8 -_020BB2DC: - mov r2, r4, lsr #0x2 - ldr r0, [r5, #0x0] - add r1, r5, #0x4 - sub r2, r2, #0x1 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB2F8: - bl FUN_020BB394 - ldr r0, _020BB364 ; =UNK_021D1C88 - ldr r1, _020BB368 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - mov r2, #0x1 - str r2, [r1, #0x0] - cmp r0, #0x0 - beq _020BB33C - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsyncFast - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB33C: - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsync - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BB360: .word GXi_DmaId -_020BB364: .word UNK_021D1C88 -_020BB368: .word UNK_021D1C84 -_020BB36C: .word FUN_020BB370 - - arm_func_start FUN_020BB370 -FUN_020BB370: ; 0x020BB370 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BB37C -FUN_020BB37C: ; 0x020BB37C - ldr r0, _020BB390 ; =UNK_021D1C84 -_020BB380: - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _020BB380 - bx lr - .balign 4 -_020BB390: .word UNK_021D1C84 - - arm_func_start FUN_020BB394 -FUN_020BB394: ; 0x020BB394 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020BB3FC ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB3B0 - bl FUN_020BB37C -_020BB3B0: - ldr r0, _020BB400 ; =UNK_021D1C80 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r2, [r0, #0x0] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r1, _020BB404 ; =0x04000400 - add r0, r0, #0x4 - mov r2, r2, lsl #0x2 - bl MIi_CpuSend32 - ldr r0, _020BB400 ; =UNK_021D1C80 - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB3FC: .word UNK_021D1C84 -_020BB400: .word UNK_021D1C80 -_020BB404: .word 0x04000400 - - arm_func_start FUN_020BB408 -FUN_020BB408: ; 0x020BB408 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - mov r5, r1 - mov r4, r2 - ldr r6, _020BB594 ; =UNK_021CED20 - ldr r1, _020BB598 ; =UNK_021CED64 - add r2, sp, #0x10 - bl MTX_MultVec43 - ldr r1, [sp, #0x14] - ldr r0, [r6, #0x1c] - ldr r2, [sp, #0x10] - smull r8, r7, r1, r0 - ldr r0, [r6, #0xc] - ldr r3, [sp, #0x18] - smlal r8, r7, r2, r0 - ldr r1, [r6, #0x2c] - ldr r0, [r6, #0x3c] - smlal r8, r7, r3, r1 - mov r1, r8, lsr #0xc - orr r1, r1, r7, lsl #0x14 - add r0, r1, r0 - bl FX_InvAsync - ldr r2, [sp, #0x14] - ldr r1, [r6, #0x10] - ldr r0, [r6, #0x14] - smull lr, r8, r2, r1 - smull r12, r9, r2, r0 - ldr r1, [sp, #0x10] - ldr r3, [r6, #0x0] - ldr r0, [sp, #0x18] - smlal lr, r8, r1, r3 - ldr r7, [r6, #0x20] - ldr r2, [r6, #0x30] - smlal lr, r8, r0, r7 - mov r3, lr, lsr #0xc - orr r3, r3, r8, lsl #0x14 - add r7, r3, r2 - ldr r3, [r6, #0x4] - ldr r8, [r6, #0x24] - smlal r12, r9, r1, r3 - smlal r12, r9, r0, r8 - mov r0, r12, lsr #0xc - ldr r2, [r6, #0x34] - orr r0, r0, r9, lsl #0x14 - add r6, r0, r2 - bl FX_GetDivResultFx64c - mov r2, r7, asr #0x1f - umull r9, lr, r0, r7 - mla lr, r0, r2, lr - mov r3, #0x80000000 - mla lr, r1, r7, lr - adds r9, r9, r3 - adc r2, lr, #0x0 - add r2, r2, #0x1000 - add r2, r2, r2, lsr #0x1f - mov r7, r2, asr #0x1 - umull lr, r2, r0, r6 - mov r12, r6, asr #0x1f - mla r2, r0, r12, r2 - mla r2, r1, r6, r2 - adds r3, lr, r3 - adc r0, r2, #0x0 - add r0, r0, #0x1000 - add r0, r0, r0, lsr #0x1f - mov r8, #0x0 - mov r6, r0, asr #0x1 - cmp r7, #0x0 - blt _020BB530 - cmp r6, #0x0 - blt _020BB530 - cmp r7, #0x1000 - bgt _020BB530 - cmp r6, #0x1000 - ble _020BB534 -_020BB530: - mvn r8, #0x0 -_020BB534: - add r0, sp, #0x0 - add r1, sp, #0x4 - add r2, sp, #0x8 - add r3, sp, #0xc - bl FUN_020B8200 - ldr r2, [sp, #0x0] - ldr r0, [sp, #0x8] - ldr r12, [sp, #0xc] - sub r0, r0, r2 - mul r0, r7, r0 - add r1, r0, #0x800 - ldr r3, [sp, #0x4] - add r1, r2, r1, asr #0xc - sub r0, r12, r3 - mul r0, r6, r0 - str r1, [r5, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x800 - rsb r1, r1, #0xbf - sub r1, r1, r0, asr #0xc - mov r0, r8 - str r1, [r4, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BB594: .word UNK_021CED20 -_020BB598: .word UNK_021CED64 - - arm_func_start FUN_020BB59C -FUN_020BB59C: ; 0x020BB59C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldr r0, _020BB7C8 ; =0x30415642 - cmp r1, r0 - bhi _020BB5F4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7CC ; =0x30414D42 - cmp r1, r0 - bhi _020BB5E4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7D0 ; =0x30414342 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5E4: - ldr r0, _020BB7D4 ; =0x30415442 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5F4: - ldr r0, _020BB7D8 ; =0x30505442 - cmp r1, r0 - bhi _020BB618 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - beq _020BB624 - b _020BB7BC -_020BB618: - ldr r0, _020BB7E0 ; =0x30585442 - cmp r1, r0 - bne _020BB7BC -_020BB624: - mov r11, #0x1 - mov r0, r5 - mov r9, r11 - mov r8, r11 - bl FUN_020BC0FC - movs r4, r0 - beq _020BB77C - bl FUN_020B7E1C - mov r7, r0 - mov r0, r4 - bl FUN_020B7E10 - mov r6, r0 - mov r0, r4 - bl FUN_020B7CE4 - mov r10, r0 - cmp r7, #0x0 - beq _020BB68C - ldr r0, _020BB7E4 ; =UNK_021064B8 - mov r1, #0x0 - ldr r3, [r0, #0x0] - mov r0, r7 - mov r2, r1 - blx r3 - movs r7, r0 - moveq r11, #0x0 - b _020BB690 -_020BB68C: - mov r7, #0x0 -_020BB690: - cmp r6, #0x0 - beq _020BB6BC - ldr r1, _020BB7E4 ; =UNK_021064B8 - mov r0, r6 - ldr r3, [r1, #0x0] - mov r1, #0x1 - mov r2, #0x0 - blx r3 - movs r6, r0 - moveq r9, #0x0 - b _020BB6C0 -_020BB6BC: - mov r6, #0x0 -_020BB6C0: - cmp r10, #0x0 - beq _020BB6F0 - ldr r1, _020BB7E8 ; =UNK_021064C0 - ldrh r2, [r4, #0x20] - ldr r3, [r1, #0x0] - mov r0, r10 - and r1, r2, #0x8000 - mov r2, #0x0 - blx r3 - movs r10, r0 - moveq r8, #0x0 - b _020BB6F4 -_020BB6F0: - mov r10, #0x0 -_020BB6F4: - cmp r11, #0x0 - beq _020BB70C - cmp r9, #0x0 - beq _020BB70C - cmp r8, #0x0 - bne _020BB748 -_020BB70C: - ldr r1, _020BB7EC ; =UNK_021064C4 - mov r0, r10 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020BB748: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl FUN_020B7DFC - mov r0, r4 - mov r1, r10 - bl FUN_020B7CDC - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7D28 - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7C78 -_020BB77C: - ldr r1, [r5, #0x0] - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - bne _020BB7A4 - mov r0, r5 - bl FUN_020BC13C - cmp r4, #0x0 - beq _020BB7A4 - mov r1, r4 - bl FUN_020B7790 -_020BB7A4: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7B0: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7BC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BB7C8: .word 0x30415642 -_020BB7CC: .word 0x30414D42 -_020BB7D0: .word 0x30414342 -_020BB7D4: .word 0x30415442 -_020BB7D8: .word 0x30505442 -_020BB7DC: .word 0x30444D42 -_020BB7E0: .word 0x30585442 -_020BB7E4: .word UNK_021064B8 -_020BB7E8: .word UNK_021064C0 -_020BB7EC: .word UNK_021064C4 -_020BB7F0: .word UNK_021064BC - - arm_func_start FUN_020BB7F4 -FUN_020BB7F4: ; 0x020BB7F4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl G3X_Init - bl FUN_020B84D8 - ldr r1, _020BB820 ; =0x04000600 - ldr r0, [r1, #0x0] - bic r0, r0, #0xc0000000 - orr r0, r0, #0x80000000 - str r0, [r1, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB820: .word 0x04000600 - - arm_func_start FUN_020BB824 -FUN_020BB824: ; 0x020BB824 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r5, r1 - bl FUN_020BB394 - ldr r0, _020BB8B4 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020BB8B8 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020BB8BC ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - cmp r6, #0x0 - beq _020BB87C - add r4, sp, #0x0 -_020BB860: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020BB860 - add r0, sp, #0x0 - mov r1, r6 - bl MTX_Copy44To43_ -_020BB87C: - cmp r5, #0x0 - beq _020BB894 -_020BB884: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020BB884 -_020BB894: - ldr r1, _020BB8C0 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020BB8B4 ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x2 - str r1, [r0, #0x0] - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB8B4: .word 0x04000440 -_020BB8B8: .word 0x04000444 -_020BB8BC: .word 0x04000454 -_020BB8C0: .word 0x04000448 - - arm_func_start thunk_FUN_020ae84c -thunk_FUN_020ae84c: ; 0x020BB8C4 - ldr ip, _020BB8CC ; =FUN_020AE84C - bx r12 - .balign 4 -_020BB8CC: .word FUN_020AE84C - - arm_func_start FUN_020BB8D0 -FUN_020BB8D0: ; 0x020BB8D0 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - bl FUN_020B81B0 - mov r1, r0 - mov r0, r4 - bl FUN_020AE868 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BB8F4 -FUN_020BB8F4: ; 0x020BB8F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB910: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBC74 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB910 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB934 -FUN_020BB934: ; 0x020BB934 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB950: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCB8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB950 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB974 -FUN_020BB974: ; 0x020BB974 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB990: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCFC - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB990 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9B4 -FUN_020BB9B4: ; 0x020BB9B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB9D0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD40 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB9D0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BB9F4 -FUN_020BB9F4: ; 0x020BB9F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD84 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA34 -FUN_020BBA34: ; 0x020BBA34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBDC8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBA74 -FUN_020BBA74: ; 0x020BBA74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE0C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAB4 -FUN_020BBAB4: ; 0x020BBAB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBAD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE50 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBAD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBAF4 -FUN_020BBAF4: ; 0x020BBAF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE94 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB34 -FUN_020BBB34: ; 0x020BBB34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBED8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBB74 -FUN_020BBB74: ; 0x020BBB74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF1C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB90 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBB4 -FUN_020BBBB4: ; 0x020BBBB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBBD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF60 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBBD0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBBF4 -FUN_020BBBF4: ; 0x020BBBF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFA4 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC34 -FUN_020BBC34: ; 0x020BBC34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFE8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC50 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BBC74 -FUN_020BBC74: ; 0x020BBC74 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x800 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x800 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCB8 -FUN_020BBCB8: ; 0x020BBCB8 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x1000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x1000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBCFC -FUN_020BBCFC: ; 0x020BBCFC - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x2000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x2000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD40 -FUN_020BBD40: ; 0x020BBD40 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x4000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x4000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBD84 -FUN_020BBD84: ; 0x020BBD84 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x8000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x8000 - streq r0, [r1, #0xc] - bx lr - - arm_func_start FUN_020BBDC8 -FUN_020BBDC8: ; 0x020BBDC8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x1f0000 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE0C -FUN_020BBE0C: ; 0x020BBE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x3f000000 - orr r0, r0, r2, lsl #0x18 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE50 -FUN_020BBE50: ; 0x020BBE50 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xc0 - orr r0, r0, r2, lsl #0x6 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBE94 -FUN_020BBE94: ; 0x020BBE94 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x30 - orr r0, r0, r2, lsl #0x4 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBED8 -FUN_020BBED8: ; 0x020BBED8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xf - orr r0, r0, r2 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BBF1C -FUN_020BBF1C: ; 0x020BBF1C - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBF5C ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x8] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020BBF5C: .word 0x8000FFFF - - arm_func_start FUN_020BBF60 -FUN_020BBF60: ; 0x020BBF60 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x8] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BBFA4 -FUN_020BBFA4: ; 0x020BBFA4 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBFE4 ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x4] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020BBFE4: .word 0x8000FFFF - - arm_func_start FUN_020BBFE8 -FUN_020BBFE8: ; 0x020BBFE8 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x4] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x4] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BC02C -FUN_020BC02C: ; 0x020BC02C - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC050: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrne r5, [r6, #0x10] - orrne r5, r5, r2 - strne r5, [r6, #0x10] - ldreq r5, [r6, #0x10] - andeq r5, r5, r3 - streq r5, [r6, #0x10] - cmp lr, r4 - blo _020BC050 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC094 -FUN_020BC094: ; 0x020BC094 - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC0B8: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrneh r5, [r6, #0x1e] - orrne r5, r5, r2 - strneh r5, [r6, #0x1e] - ldreqh r5, [r6, #0x1e] - andeq r5, r5, r3 - streqh r5, [r6, #0x1e] - cmp lr, r4 - blo _020BC0B8 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BC0FC -FUN_020BC0FC: ; 0x020BC0FC - ldrh r2, [r0, #0xc] - ldrh r1, [r0, #0xe] - add r3, r0, r2 - cmp r1, #0x1 - bne _020BC12C - ldr r2, [r0, #0x0] - ldr r1, _020BC138 ; =0x30585442 - cmp r2, r1 - ldreq r1, [r3, #0x0] - addeq r0, r0, r1 - movne r0, #0x0 - bx lr -_020BC12C: - ldr r1, [r3, #0x4] - add r0, r0, r1 - bx lr - .balign 4 -_020BC138: .word 0x30585442 - - arm_func_start FUN_020BC13C -FUN_020BC13C: - ldrh r1, [r0, #0xc] - ldr r1, [r0, r1] - add r0, r0, r1 - bx lr - - arm_func_start FUN_020BC14C -FUN_020BC14C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC1E4 - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC294 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC190: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC1CC - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC1CC - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC1CC - ldr r5, [r7, #0xc] - cmp r5, r2 - addeq sp, sp, #0x4 - moveq r0, r4 - ldmeqia sp!, {r4-r7,pc} -_020BC1CC: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC190 - b _020BC294 -_020BC1E4: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC294 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC238 -_020BC208: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC208 -_020BC238: - ldrh r4, [r0, #0x6] - ldr r3, [r1, #0x0] - add r12, r0, r4 - ldrh r4, [r12, #0x2] - ldrb r0, [r2, #0x3] - add r4, r12, r4 - ldr r2, [r4, r0, lsl #0x4] - add r4, r4, r0, lsl #0x4 - cmp r2, r3 - bne _020BC294 - ldr r3, [r4, #0x4] - ldr r2, [r1, #0x4] - cmp r3, r2 - bne _020BC294 - ldr r3, [r4, #0x8] - ldr r2, [r1, #0x8] - cmp r3, r2 - bne _020BC294 - ldr r2, [r4, #0xc] - ldr r1, [r1, #0xc] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} -_020BC294: - mvn r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC2A0 -FUN_020BC2A0: ; 0x020BC2A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC34C - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC404 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC2E4: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC334 - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC334 - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC334 - ldr r5, [r7, #0xc] - cmp r5, r2 - bne _020BC334 - ldrh r2, [r0, #0x6] - add sp, sp, #0x4 - ldrh r1, [r0, r2] - add r0, r0, r2 - add r0, r0, #0x4 - mla r0, r1, r4, r0 - ldmia sp!, {r4-r7,pc} -_020BC334: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC2E4 - b _020BC404 -_020BC34C: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC404 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC3A0 -_020BC370: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC370 -_020BC3A0: - ldrh r4, [r0, #0x6] - ldrb r2, [r2, #0x3] - ldr r3, [r1, #0x0] - add r0, r0, r4 - ldrh r4, [r0, #0x2] - add r12, r0, r4 - ldr r4, [r12, r2, lsl #0x4] - add r12, r12, r2, lsl #0x4 - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x4] - ldr r3, [r1, #0x4] - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x8] - ldr r3, [r1, #0x8] - cmp r4, r3 - bne _020BC404 - ldr r3, [r12, #0xc] - ldr r1, [r1, #0xc] - cmp r3, r1 - ldreqh r1, [r0], #0x4 - addeq sp, sp, #0x4 - mlaeq r0, r1, r2, r0 - ldmeqia sp!, {r4-r7,pc} -_020BC404: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BC410 -FUN_020BC410: ; 0x020BC410 - ldrh r3, [r0, #0x12] - add r0, r0, #0xc - ldrh r2, [r0, r3] - add r0, r0, r3 - add r0, r0, #0x4 - mla r0, r2, r1, r0 - bx lr - - arm_func_start FUN_020BC42C -FUN_020BC42C: ; 0x020BC42C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl FUN_020BC410 - ldrsh r1, [r0, #0x4] - ldrh r3, [r0, #0x6] - mul r2, r1, r4 - add r3, r5, r3 - mov r2, r2, lsr #0xc - b _020BC45C -_020BC458: - sub r2, r2, #0x1 -_020BC45C: - cmp r2, #0x0 - beq _020BC474 - mov r1, r2, lsl #0x2 - ldrh r1, [r3, r1] - cmp r1, r4 - bhs _020BC458 -_020BC474: - ldrh r1, [r0, #0x0] - b _020BC480 -_020BC47C: - add r2, r2, #0x1 -_020BC480: - add r0, r2, #0x1 - cmp r0, r1 - bhs _020BC49C - add r0, r3, r2, lsl #0x2 - ldrh r0, [r0, #0x4] - cmp r0, r4 - bls _020BC47C -_020BC49C: - add r0, r3, r2, lsl #0x2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BC4A8 -FUN_020BC4A8: ; 0x020BC4A8 - ldrh r2, [r0, #0xa] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4B8 -FUN_020BC4B8: ; 0x020BC4B8 - ldrh r2, [r0, #0x8] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - - arm_func_start FUN_020BC4C8 -FUN_020BC4C8: ; 0x020BC4C8 - ldrh r2, [r0, #0xc] - ldr r2, [r0, r2] - add r12, r0, r2 - ldrh r2, [r12, #0xe] - add r3, r12, #0x8 - ldrh r0, [r3, r2] - add r2, r3, r2 - add r2, r2, #0x4 - mul r1, r0, r1 - adds r0, r2, r1 - ldrne r0, [r0, #0x0] - addne r0, r12, r0 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020BC500 -FUN_020BC500: - stmdb sp!, {r4,lr} - ands r4, r3, #0x8000 - beq _020BC5E0 - mov r2, #0x0 - str r2, [r0, #0x20] - ldr r4, [r0, #0x20] - ldr r2, _020BC684 ; =0x00007FFF - str r4, [r0, #0x1c] - ldr r4, [r0, #0x1c] - and r3, r3, r2 - str r4, [r0, #0x18] - ldr r4, [r0, #0x18] - mov r2, #0x3 - str r4, [r0, #0x14] - ldr r4, [r0, #0x14] - mul r2, r3, r2 - str r4, [r0, #0x10] - ldr r4, [r0, #0x10] - mov r3, r2, lsl #0x1 - str r4, [r0, #0xc] - ldr r4, [r0, #0xc] - add r2, r1, r2, lsl #0x1 - str r4, [r0, #0x8] - ldr r4, [r0, #0x8] - str r4, [r0, #0x4] - ldr r4, [r0, #0x4] - str r4, [r0, #0x0] - ldrsh r4, [r1, r3] - ldrsh r12, [r2, #0x2] - ldrsh r3, [r2, #0x4] - and r1, r4, #0xf - ands r4, r4, #0x10 - movne lr, #0x1000 - rsbne lr, lr, #0x0 - moveq lr, #0x1000 - str lr, [r0, r1, lsl #0x2] - ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA15 - ldrb r4, [r4, r1, lsl #0x2] - str r12, [r0, r4, lsl #0x2] - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh lr, [r2, #0x0] - ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA16 - rsbne r3, r3, #0x0 - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh r2, [r2, #0x0] - ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA17 - rsbne r12, r12, #0x0 - ldrb r1, [r2, r1, lsl #0x2] - str r12, [r0, r1, lsl #0x2] - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020BC5E0: - ldr r1, _020BC684 ; =0x00007FFF - mov r12, #0x5 - and r1, r3, r1 - mul r3, r1, r12 - add r1, r2, r3, lsl #0x1 - ldrsh lr, [r1, #0x8] - mov r12, r3, lsl #0x1 - mov r3, lr, asr #0x3 - str r3, [r0, #0x10] - ldrsh r12, [r2, r12] - and r2, lr, #0x7 - mov r2, r2, lsl #0x10 - mov r3, r12, asr #0x3 - str r3, [r0, #0x0] - ldrsh r3, [r1, #0x2] - and r12, r12, #0x7 - orr lr, r12, r2, asr #0xd - mov r2, r3, asr #0x3 - str r2, [r0, #0x4] - ldrsh r12, [r1, #0x4] - mov r2, lr, lsl #0x10 - and lr, r3, #0x7 - mov r3, r12, asr #0x3 - str r3, [r0, #0x8] - ldrsh r3, [r1, #0x6] - orr r1, lr, r2, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r12, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r3, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r3, asr #0x3 - mov r1, r1, lsl #0x13 - str r2, [r0, #0xc] - mov r1, r1, asr #0x13 - str r1, [r0, #0x14] - mov r0, #0x1 - ldmia sp!, {r4,pc} - .balign 4 -_020BC684: .word 0x00007FFF -_020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA15 -_020BC690: .word UNK_020FFA16 -_020BC694: .word UNK_020FFA17 - - arm_func_start FUN_020BC698 -FUN_020BC698: ; 0x020BC698 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x48 - ldrh r4, [r3, #0x4] - ldr r5, [r3, #0xc] - ldr r8, [r3, #0x10] - ldr r7, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - mov r6, r0 - cmp r12, r4 - add r5, r3, r5 - add r4, r3, r8 - add r8, r3, r7 - ldr r7, [r2, #0x0] - bne _020BC780 - ands r0, r7, #0xc0000000 - beq _020BC6F0 - ands r0, r7, #0x40000000 - andne r0, r12, #0x1 - addne r12, r0, r12, lsr #0x1 - andeq r0, r12, #0x3 - addeq r12, r0, r12, lsr #0x2 -_020BC6F0: - ldr r0, [r3, #0x8] - ands r0, r0, #0x2 - movne r7, #0x0 - bne _020BC7F4 - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x48 - ldmeqia sp!, {r4-r10,pc} - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x48 - str r0, [r6, #0x20] - ldmia sp!, {r4-r10,pc} -_020BC780: - ands r0, r7, #0xc0000000 - beq _020BC7F0 - ldr r0, _020BC9C4 ; =0x1FFF0000 - ands r2, r7, #0x40000000 - and r0, r7, r0 - mov r0, r0, lsr #0x10 - beq _020BC7C4 - cmp r12, r0 - movcs r12, r0, lsr #0x1 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9C8 ; =0x00001FFF - mov r12, r12, lsr #0x1 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x2 - b _020BC800 -_020BC7C4: - cmp r12, r0 - andcs r0, r12, #0x3 - addcs r12, r0, r12, lsr #0x2 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9CC ; =0x00003FFF - mov r12, r12, lsr #0x2 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x4 - b _020BC800 -_020BC7F0: - add r7, r12, #0x1 -_020BC7F4: - ldr r0, _020BC9D0 ; =0x00000FFF - mov r9, #0x1 - and r10, r1, r0 -_020BC800: - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - mov r1, r7, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [sp, #0x24] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [sp, #0x28] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [sp, #0x2c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x8] - ldr r3, [sp, #0xc] - ldr r1, [sp, #0x30] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0xc] - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x34] - orr r7, r7, r0 - sub r0, r1, r2 - mul r1, r2, r9 - mul r0, r10, r0 - add r0, r1, r0, asr #0xc - str r0, [r6, #0x10] - ldr r2, [sp, #0x14] - ldr r0, [sp, #0x38] - mul r1, r2, r9 - sub r0, r0, r2 - mul r0, r10, r0 - add r2, r1, r0, asr #0xc - mov r0, r6 - mov r1, r6 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BC968 - ldr r3, [sp, #0x18] - ldr r1, [sp, #0x3c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [sp, #0x40] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x1c] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x44] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r2, r2, r1, asr #0xc - add r0, r6, #0x18 - mov r1, r0 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} -_020BC968: - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020BC9C4: .word 0x1FFF0000 -_020BC9C8: .word 0x00001FFF -_020BC9CC: .word 0x00003FFF -_020BC9D0: .word 0x00000FFF - - arm_func_start FUN_020BC9D4 -FUN_020BC9D4: ; 0x020BC9D4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4c - ldr r5, [r3, #0xc] - ldr r4, [r3, #0x10] - ldr r12, [r2, #0x0] - ldr r2, [r2, #0x4] - mov r6, r0 - mov r0, r1, asr #0xc - add r5, r3, r5 - add r4, r3, r4 - add r8, r3, r2 - ands r1, r12, #0xc0000000 - beq _020BCD40 - ldr r1, _020BCDC0 ; =0x1FFF0000 - ands r2, r12, #0x40000000 - and r1, r12, r1 - mov r2, r1, lsr #0x10 - beq _020BCA44 - ands r1, r0, #0x1 - beq _020BCA3C - cmp r0, r2 - movhi r0, r2, lsr #0x1 - addhi r0, r0, #0x1 - bhi _020BCD40 - mov r7, r0, lsr #0x1 - b _020BCBE8 -_020BCA3C: - mov r0, r0, lsr #0x1 - b _020BCD40 -_020BCA44: - ands r1, r0, #0x3 - beq _020BCBE0 - cmp r0, r2 - addhi r0, r1, r2, lsr #0x2 - bhi _020BCD40 - ands r1, r0, #0x1 - beq _020BCBD8 - ands r1, r0, #0x2 - movne r9, r0, lsr #0x2 - addne r0, r9, #0x1 - moveq r0, r0, lsr #0x2 - addeq r9, r0, #0x1 - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r7, #0x0 - bl FUN_020BC500 - mov r1, r9, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r7, r0 - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [r6, #0x0] - mov r2, #0x3 - mla r3, r1, r2, r3 - str r3, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [r6, #0x4] - orr r7, r7, r0 - mla r0, r1, r2, r3 - str r0, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r6, #0x8] - mov r0, r6 - mla r3, r1, r2, r3 - str r3, [r6, #0x8] - ldr r4, [sp, #0xc] - ldr r3, [r6, #0xc] - mov r1, r6 - mla r4, r3, r2, r4 - str r4, [r6, #0xc] - ldr r4, [sp, #0x10] - ldr r3, [r6, #0x10] - mla r4, r3, r2, r4 - str r4, [r6, #0x10] - ldr r4, [sp, #0x14] - ldr r3, [r6, #0x14] - mla r2, r3, r2, r4 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCB7C - ldr r1, [sp, #0x18] - ldr r0, [r6, #0x18] - mov r2, #0x3 - mla r1, r0, r2, r1 - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [r6, #0x1c] - add r0, r6, #0x18 - mla r3, r1, r2, r3 - str r3, [r6, #0x1c] - ldr r4, [sp, #0x20] - ldr r3, [r6, #0x20] - mov r1, r0 - mla r2, r3, r2, r4 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCB7C: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCBD8: - mov r7, r0, lsr #0x2 - b _020BCBE8 -_020BCBE0: - mov r0, r0, lsr #0x2 - b _020BCD40 -_020BCBE8: - mov r0, r7, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - add r1, r8, r7, lsl #0x1 - ldrh r3, [r1, #0x2] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r2, [r6, #0x0] - ldr r1, [sp, #0x24] - orr r7, r7, r0 - add r0, r2, r1 - str r0, [r6, #0x0] - ldr r2, [r6, #0x4] - ldr r1, [sp, #0x28] - mov r0, r6 - add r1, r2, r1 - str r1, [r6, #0x4] - ldr r3, [r6, #0x8] - ldr r2, [sp, #0x2c] - mov r1, r6 - add r2, r3, r2 - str r2, [r6, #0x8] - ldr r3, [r6, #0xc] - ldr r2, [sp, #0x30] - add r2, r3, r2 - str r2, [r6, #0xc] - ldr r3, [r6, #0x10] - ldr r2, [sp, #0x34] - add r2, r3, r2 - str r2, [r6, #0x10] - ldr r3, [r6, #0x14] - ldr r2, [sp, #0x38] - add r2, r3, r2 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCCE4 - ldr r2, [r6, #0x18] - ldr r1, [sp, #0x3c] - add r0, r6, #0x18 - add r1, r2, r1 - str r1, [r6, #0x18] - ldr r3, [r6, #0x1c] - ldr r2, [sp, #0x40] - mov r1, r0 - add r2, r3, r2 - str r2, [r6, #0x1c] - ldr r3, [r6, #0x20] - ldr r2, [sp, #0x44] - add r2, r3, r2 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCCE4: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCD40: - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r9,pc} - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BCDC0: .word 0x1FFF0000 - - arm_func_start FUN_020BCDC4 -FUN_020BCDC4: ; 0x020BCDC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr r6, [r2, #0x4] - mov r5, r1, asr #0xc - sub r4, r4, #0x1 - cmp r5, r4 - add r6, r3, r6 - ldr r2, [r2, #0x0] - bne _020BCE58 - ands r4, r2, #0xc0000000 - beq _020BCE08 - ands r4, r2, #0x40000000 - andne r4, r5, #0x1 - addne r5, r4, r5, lsr #0x1 - andeq r4, r5, #0x3 - addeq r5, r4, r5, lsr #0x2 -_020BCE08: - ldr r3, [r3, #0x8] - ands r3, r3, #0x2 - movne r4, #0x0 - bne _020BCED4 - ands r1, r2, #0x20000000 - ldreq r2, [r6, r5, lsl #0x3] - addeq r1, r6, r5, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r7,pc} - mov r1, r5, lsl #0x2 - ldrsh r2, [r6, r1] - add r1, r6, r5, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r7,pc} -_020BCE58: - ands r3, r2, #0xc0000000 - beq _020BCED0 - ldr r3, _020BCF60 ; =0x1FFF0000 - ands r4, r2, #0x40000000 - and r3, r2, r3 - mov r3, r3, lsr #0x10 - beq _020BCEA0 - cmp r5, r3 - movcs r5, r3, lsr #0x1 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF64 ; =0x00001FFF - mov r5, r5, lsr #0x1 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x2 - mov r3, #0x1 - b _020BCEE4 -_020BCEA0: - cmp r5, r3 - andcs r3, r5, #0x3 - addcs r5, r3, r5, lsr #0x2 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF68 ; =0x00003FFF - mov r5, r5, lsr #0x2 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x4 - mov r3, #0x2 - b _020BCEE4 -_020BCED0: - add r4, r5, #0x1 -_020BCED4: - ldr r3, _020BCF6C ; =0x00000FFF - mov r12, #0x1 - and lr, r1, r3 - mov r3, #0x0 -_020BCEE4: - ands r1, r2, #0x20000000 - beq _020BCF10 - mov r2, r5, lsl #0x2 - add r1, r6, r5, lsl #0x2 - mov r5, r4, lsl #0x2 - add r4, r6, r4, lsl #0x2 - ldrsh r2, [r6, r2] - ldrsh r1, [r1, #0x2] - ldrsh r5, [r6, r5] - ldrsh r4, [r4, #0x2] - b _020BCF28 -_020BCF10: - add r1, r6, r5, lsl #0x3 - add r7, r6, r4, lsl #0x3 - ldr r2, [r6, r5, lsl #0x3] - ldr r1, [r1, #0x4] - ldr r5, [r6, r4, lsl #0x3] - ldr r4, [r7, #0x4] -_020BCF28: - sub r5, r5, r2 - sub r4, r4, r1 - mul r6, r2, r12 - mul r2, lr, r5 - add r2, r6, r2, asr #0xc - mov r5, r2, asr r3 - mul r2, r1, r12 - mul r1, lr, r4 - add r1, r2, r1, asr #0xc - mov r1, r1, asr r3 - str r5, [r0, #0x0] - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BCF60: .word 0x1FFF0000 -_020BCF64: .word 0x00001FFF -_020BCF68: .word 0x00003FFF -_020BCF6C: .word 0x00000FFF - - arm_func_start FUN_020BCF70 -FUN_020BCF70: ; 0x020BCF70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, [r2, #0x4] - ldr r12, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r4 - ands r2, r12, #0xc0000000 - beq _020BD0D0 - ldr r2, _020BD184 ; =0x1FFF0000 - ands r4, r12, #0x40000000 - and r2, r12, r2 - mov r4, r2, lsr #0x10 - beq _020BCFCC - ands r2, r1, #0x1 - beq _020BCFC4 - cmp r1, r4 - movhi r1, r4, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD0D0 - mov r2, r1, lsr #0x1 - b _020BD110 -_020BCFC4: - mov r1, r1, lsr #0x1 - b _020BD0D0 -_020BCFCC: - ands r2, r1, #0x3 - beq _020BD0CC - cmp r1, r4 - addhi r1, r2, r4, lsr #0x2 - bhi _020BD0D0 - ands r2, r1, #0x1 - beq _020BD0C4 - ands r2, r1, #0x2 - movne r1, r1, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r1, lsr #0x2 - addeq r1, r2, #0x1 - ands r4, r12, #0x20000000 - beq _020BD04C - mov r5, r2, lsl #0x2 - mov r4, r1, lsl #0x2 - ldrsh r12, [r3, r5] - ldrsh r5, [r3, r4] - add r2, r3, r2, lsl #0x2 - add r4, r12, r12, lsl #0x1 - add r4, r5, r4 - mov r4, r4, asr #0x2 - str r4, [r0, #0x0] - add r1, r3, r1, lsl #0x2 - ldrsh r3, [r2, #0x2] - ldrsh r2, [r1, #0x2] - add sp, sp, #0x4 - add r1, r3, r3, lsl #0x1 - add r1, r2, r1 - mov r1, r1, asr #0x2 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD04C: - ldr r5, [r3, r2, lsl #0x3] - ldr r4, [r3, r1, lsl #0x3] - mov r12, r5, asr #0x1f - mov r12, r12, lsl #0x1 - mov lr, r5, lsl #0x1 - orr r12, r12, r5, lsr #0x1f - adds lr, lr, r5 - adc r12, r12, r5, asr #0x1f - adds lr, lr, r4 - adc r12, r12, r4, asr #0x1f - mov lr, lr, lsr #0x2 - orr lr, lr, r12, lsl #0x1e - str lr, [r0, #0x0] - add r2, r3, r2, lsl #0x3 - ldr r12, [r2, #0x4] - add r1, r3, r1, lsl #0x3 - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - ldr r1, [r1, #0x4] - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BD0C4: - mov r2, r1, lsr #0x2 - b _020BD110 -_020BD0CC: - mov r1, r1, lsr #0x2 -_020BD0D0: - ands r2, r12, #0x20000000 - ldreq r2, [r3, r1, lsl #0x3] - addeq r1, r3, r1, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r5,pc} - mov r2, r1, lsl #0x2 - ldrsh r2, [r3, r2] - add r1, r3, r1, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD110: - ands r1, r12, #0x20000000 - beq _020BD150 - mov r1, r2, lsl #0x2 - add r12, r3, r2, lsl #0x2 - ldrsh r2, [r3, r1] - ldrsh r1, [r12, #0x4] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldrsh r2, [r12, #0x2] - ldrsh r1, [r12, #0x6] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD150: - add r12, r3, r2, lsl #0x3 - ldr r2, [r3, r2, lsl #0x3] - ldr r1, [r12, #0x8] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldr r2, [r12, #0x4] - ldr r1, [r12, #0xc] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD184: .word 0x1FFF0000 - - arm_func_start FUN_020BD188 -FUN_020BD188: ; 0x020BD188 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr lr, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - cmp r12, r4 - add r4, r3, lr - ldr lr, [r2, #0x0] - bne _020BD230 - ands r2, lr, #0xc0000000 - beq _020BD1CC - ands r2, lr, #0x40000000 - andne r2, r12, #0x1 - addne r12, r2, r12, lsr #0x1 - andeq r2, r12, #0x3 - addeq r12, r2, r12, lsr #0x2 -_020BD1CC: - ldr r2, [r3, #0x8] - ands r2, r2, #0x2 - beq _020BD210 - ldr r2, _020BD2E8 ; =0x00000FFF - ands r3, lr, #0x20000000 - and r3, r1, r2 - movne r1, r12, lsl #0x1 - ldrnesh r2, [r4, r1] - ldrnesh r1, [r4, #0x0] - add sp, sp, #0x4 - ldreq r2, [r4, r12, lsl #0x2] - ldreq r1, [r4, #0x0] - sub r1, r1, r2 - mul r1, r3, r1 - add r1, r2, r1, asr #0xc - str r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD210: - ands r1, lr, #0x20000000 - movne r1, r12, lsl #0x1 - ldrnesh r1, [r4, r1] - add sp, sp, #0x4 - strne r1, [r0, #0x0] - ldreq r1, [r4, r12, lsl #0x2] - streq r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD230: - ands r2, lr, #0xc0000000 - beq _020BD298 - ldr r2, _020BD2EC ; =0x1FFF0000 - ands r3, lr, #0x40000000 - and r2, lr, r2 - mov r2, r2, lsr #0x10 - beq _020BD270 - cmp r12, r2 - movcs r12, r2, lsr #0x1 - bhs _020BD298 - ldr r2, _020BD2F0 ; =0x00001FFF - mov r12, r12, lsr #0x1 - and r5, r1, r2 - mov r2, #0x2 - mov r1, #0x1 - b _020BD2A8 -_020BD270: - cmp r12, r2 - andcs r2, r12, #0x3 - addcs r12, r2, r12, lsr #0x2 - bhs _020BD298 - ldr r2, _020BD2F4 ; =0x00003FFF - mov r12, r12, lsr #0x2 - and r5, r1, r2 - mov r2, #0x4 - mov r1, #0x2 - b _020BD2A8 -_020BD298: - ldr r3, _020BD2E8 ; =0x00000FFF - mov r2, #0x1 - and r5, r1, r3 - mov r1, #0x0 -_020BD2A8: - ands r3, lr, #0x20000000 - addne r3, r4, r12, lsl #0x1 - movne lr, r12, lsl #0x1 - ldrnesh r12, [r4, lr] - ldrnesh r3, [r3, #0x2] - addeq r3, r4, r12, lsl #0x2 - ldreq r12, [r4, r12, lsl #0x2] - ldreq r3, [r3, #0x4] - mul r4, r12, r2 - sub r3, r3, r12 - mul r2, r5, r3 - add r2, r4, r2, asr #0xc - mov r1, r2, asr r1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD2E8: .word 0x00000FFF -_020BD2EC: .word 0x1FFF0000 -_020BD2F0: .word 0x00001FFF -_020BD2F4: .word 0x00003FFF - - arm_func_start FUN_020BD2F8 -FUN_020BD2F8: ; 0x020BD2F8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r12, [r2, #0x4] - ldr r2, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r12 - ands r12, r2, #0xc0000000 - beq _020BD44C - ldr ip, _020BD46C ; =0x1FFF0000 - ands lr, r2, #0x40000000 - and r12, r2, r12 - mov lr, r12, lsr #0x10 - beq _020BD354 - ands r12, r1, #0x1 - beq _020BD34C - cmp r1, lr - movhi r1, lr, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD44C - mov r12, r1, lsr #0x1 - b _020BD400 -_020BD34C: - mov r1, r1, lsr #0x1 - b _020BD44C -_020BD354: - ands r12, r1, #0x3 - beq _020BD3F8 - cmp r1, lr - addhi r1, r12, lr, lsr #0x2 - bhi _020BD44C - ands r12, r1, #0x1 - beq _020BD3F0 - ands r12, r1, #0x2 - movne lr, r1, lsr #0x2 - addne r12, lr, #0x1 - moveq r12, r1, lsr #0x2 - addeq lr, r12, #0x1 - ands r1, r2, #0x20000000 - beq _020BD3B4 - mov r2, r12, lsl #0x1 - mov r1, lr, lsl #0x1 - ldrsh r12, [r3, r2] - ldrsh r2, [r3, r1] - mov r1, #0x3 - add sp, sp, #0x4 - smlabb r1, r12, r1, r2 - mov r1, r1, asr #0x2 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD3B4: - ldr r12, [r3, r12, lsl #0x2] - ldr r1, [r3, lr, lsl #0x2] - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD3F0: - mov r12, r1, lsr #0x2 - b _020BD400 -_020BD3F8: - mov r1, r1, lsr #0x2 - b _020BD44C -_020BD400: - ands r1, r2, #0x20000000 - beq _020BD42C - mov r2, r12, lsl #0x1 - add r1, r3, r12, lsl #0x1 - ldrsh r2, [r3, r2] - ldrsh r1, [r1, #0x2] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD42C: - add r1, r3, r12, lsl #0x2 - ldr r2, [r3, r12, lsl #0x2] - ldr r1, [r1, #0x4] - mov r2, r2, asr #0x1 - add r1, r2, r1, asr #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD44C: - ands r2, r2, #0x20000000 - movne r1, r1, lsl #0x1 - ldrnesh r1, [r3, r1] - strne r1, [r0, #0x0] - ldreq r1, [r3, r1, lsl #0x2] - streq r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BD46C: .word 0x1FFF0000 - - arm_func_start FUN_020BD470 -FUN_020BD470: ; 0x020BD470 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r9, r0 - add r0, r9, r1, lsl #0x1 - ldrh r0, [r0, #0x14] - mov r7, r3 - mov r8, r2 - ldr r5, [r9, r0] - add r1, r9, r0 - ands r0, r5, #0x1 - movne r0, #0x7 - strne r0, [r7, #0x0] - bne _020BD814 - ldr r0, _020BD848 ; =0x00000FFF - add r4, r1, #0x4 - ands r0, r8, r0 - beq _020BD4C4 - ldr r0, [r9, #0x8] - ands r0, r0, #0x1 - movne r6, #0x1 - bne _020BD4C8 -_020BD4C4: - mov r6, #0x0 -_020BD4C8: - mov r0, #0x0 - str r0, [r7, #0x0] - ands r0, r5, #0x6 - bne _020BD5C0 - ands r0, r5, #0x8 - bne _020BD51C - cmp r6, #0x0 - beq _020BD500 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD188 - b _020BD514 -_020BD500: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD2F8 -_020BD514: - add r4, r4, #0x8 - b _020BD524 -_020BD51C: - ldr r0, [r4], #0x4 - str r0, [r7, #0x4c] -_020BD524: - ands r0, r5, #0x10 - bne _020BD568 - cmp r6, #0x0 - beq _020BD54C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD188 - b _020BD560 -_020BD54C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD2F8 -_020BD560: - add r4, r4, #0x8 - b _020BD570 -_020BD568: - ldr r0, [r4], #0x4 - str r0, [r7, #0x50] -_020BD570: - ands r0, r5, #0x20 - bne _020BD5B4 - cmp r6, #0x0 - beq _020BD598 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD188 - b _020BD5AC -_020BD598: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD2F8 -_020BD5AC: - add r4, r4, #0x8 - b _020BD5DC -_020BD5B4: - ldr r0, [r4], #0x4 - str r0, [r7, #0x54] - b _020BD5DC -_020BD5C0: - ands r0, r5, #0x2 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x4 - strne r0, [r7, #0x0] - bne _020BD5DC - mov r0, r7 - bl FUN_020BDA08 -_020BD5DC: - ands r0, r5, #0xc0 - bne _020BD6A8 - ands r0, r5, #0x100 - bne _020BD628 - cmp r6, #0x0 - beq _020BD60C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC698 - b _020BD620 -_020BD60C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC9D4 -_020BD620: - add r4, r4, #0x8 - b _020BD6C4 -_020BD628: - ldr r1, [r9, #0xc] - ldr r2, [r9, #0x10] - ldr r3, [r4, #0x0] - add r0, r7, #0x28 - add r1, r9, r1 - add r2, r9, r2 - bl FUN_020BC500 - cmp r0, #0x0 - beq _020BD6A0 - ldr r12, [r7, #0x3c] - ldr r0, [r7, #0x2c] - ldr r3, [r7, #0x28] - ldr r11, [r7, #0x38] - ldr r1, [r7, #0x30] - ldr r2, [r7, #0x34] - mul r10, r0, r12 - mul lr, r1, r11 - sub r10, r10, lr - mov r10, r10, asr #0xc - mul lr, r1, r2 - mul r1, r3, r12 - sub r1, lr, r1 - mul r11, r3, r11 - mul r2, r0, r2 - sub r0, r11, r2 - str r10, [r7, #0x40] - mov r1, r1, asr #0xc - str r1, [r7, #0x44] - mov r0, r0, asr #0xc - str r0, [r7, #0x48] -_020BD6A0: - add r4, r4, #0x4 - b _020BD6C4 -_020BD6A8: - ands r0, r5, #0x40 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x2 - strne r0, [r7, #0x0] - bne _020BD6C4 - mov r0, r7 - bl FUN_020BD850 -_020BD6C4: - ands r0, r5, #0x600 - bne _020BD7F0 - ands r0, r5, #0x800 - bne _020BD71C - cmp r6, #0x0 - beq _020BD6F4 - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCDC4 - b _020BD708 -_020BD6F4: - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCF70 -_020BD708: - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - str r1, [sp, #0x18] - str r0, [sp, #0x24] - b _020BD72C -_020BD71C: - ldr r0, [r4, #0x0] - str r0, [sp, #0x18] - ldr r0, [r4, #0x4] - str r0, [sp, #0x24] -_020BD72C: - ands r0, r5, #0x1000 - bne _020BD77C - cmp r6, #0x0 - beq _020BD754 - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCDC4 - b _020BD768 -_020BD754: - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCF70 -_020BD768: - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x1c] - str r0, [sp, #0x28] - b _020BD78C -_020BD77C: - ldr r0, [r4, #0x8] - str r0, [sp, #0x1c] - ldr r0, [r4, #0xc] - str r0, [sp, #0x28] -_020BD78C: - ands r0, r5, #0x2000 - bne _020BD7DC - cmp r6, #0x0 - beq _020BD7B4 - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCDC4 - b _020BD7C8 -_020BD7B4: - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCF70 -_020BD7C8: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - str r1, [sp, #0x20] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7DC: - ldr r0, [r4, #0x10] - str r0, [sp, #0x20] - ldr r0, [r4, #0x14] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7F0: - ands r0, r5, #0x200 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x1 - strne r0, [r7, #0x0] - bne _020BD814 - mov r0, r7 - bl FUN_020BD9A4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020BD814: - ldr r0, [r7, #0x0] - add r1, sp, #0x18 - ands r0, r0, #0x1 - ldr r0, _020BD84C ; =UNK_021CEF7C - movne r3, #0x4 - ldr r4, [r0, #0x0] - moveq r3, #0x0 - ldr r2, [r4, #0x0] - ldr r4, [r4, #0xe8] - mov r0, r7 - blx r4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BD848: .word 0x00000FFF -_020BD84C: .word UNK_021CEF7C - - arm_func_start FUN_020BD850 -FUN_020BD850: ; 0x020BD850 - stmdb sp!, {r4-r8,lr} - ldr r1, _020BD990 ; =UNK_021CEF7C - mov r8, r0 - ldr r0, [r1, #0x0] - ldr r3, [r0, #0xd4] - ldr r0, [r0, #0x0] - ldrh r2, [r3, #0x6] - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - ldrh r2, [r3, r0] - add r4, r3, r0 - add r1, r4, #0x4 - ands r0, r2, #0x1 - addeq r1, r1, #0xc - ands r0, r2, #0x2 - bne _020BD980 - ands r0, r2, #0x8 - beq _020BD934 - and r2, r2, #0xf0 - add r0, r8, #0x28 - mov r5, r2, asr #0x4 - ldrsh r7, [r1, #0x0] - ldrsh r6, [r1, #0x2] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r8, r5, lsl #0x2 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - ldr r0, _020BD994 ; =UNK_020FFA14 - str r2, [r1, #0x28] - ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA15 - add r1, r8, r1, lsl #0x2 - str r7, [r1, #0x28] - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA16 - rsbne r6, r6, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA17 - rsbne r7, r7, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r7, [r0, #0x28] - ldmia sp!, {r4-r8,pc} -_020BD934: - ldrsh r0, [r4, #0x2] - str r0, [r8, #0x28] - ldrsh r0, [r1, #0x0] - str r0, [r8, #0x2c] - ldrsh r0, [r1, #0x2] - str r0, [r8, #0x30] - ldrsh r0, [r1, #0x4] - str r0, [r8, #0x34] - ldrsh r0, [r1, #0x6] - str r0, [r8, #0x38] - ldrsh r0, [r1, #0x8] - str r0, [r8, #0x3c] - ldrsh r0, [r1, #0xa] - str r0, [r8, #0x40] - ldrsh r0, [r1, #0xc] - str r0, [r8, #0x44] - ldrsh r0, [r1, #0xe] - str r0, [r8, #0x48] - ldmia sp!, {r4-r8,pc} -_020BD980: - ldr r0, [r8, #0x0] - orr r0, r0, #0x2 - str r0, [r8, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BD990: .word UNK_021CEF7C -_020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA15 -_020BD99C: .word UNK_020FFA16 -_020BD9A0: .word UNK_020FFA17 - - arm_func_start FUN_020BD9A4 -FUN_020BD9A4: ; 0x020BD9A4 - stmdb sp!, {r4,lr} - ldr r1, _020BDA04 ; =UNK_021CEF7C - ldr r12, [r1, #0x0] - ldr r4, [r12, #0xd4] - ldr r2, [r12, #0x0] - ldrh lr, [r4, #0x6] - ldrb r1, [r2, #0x1] - ldrh r3, [r4, lr] - add lr, r4, lr - mla r1, r3, r1, lr - ldr r1, [r1, #0x4] - ldrh r3, [r4, r1] - add r1, r4, r1 - add r1, r1, #0x4 - ands lr, r3, #0x1 - addeq r1, r1, #0xc - ands lr, r3, #0x2 - bne _020BD9F8 - ands lr, r3, #0x8 - addne r1, r1, #0x4 - addeq r1, r1, #0x10 -_020BD9F8: - ldr r12, [r12, #0xe8] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020BDA04: .word UNK_021CEF7C - - arm_func_start FUN_020BDA08 -FUN_020BDA08: ; 0x020BDA08 - ldr r1, _020BDA6C ; =UNK_021CEF7C - ldr r1, [r1, #0x0] - ldr r12, [r1, #0xd4] - ldr r1, [r1, #0x0] - ldrh r3, [r12, #0x6] - ldrb r1, [r1, #0x1] - ldrh r2, [r12, r3] - add r3, r12, r3 - mla r1, r2, r1, r3 - ldr r2, [r1, #0x4] - ldrh r1, [r12, r2] - add r2, r12, r2 - ands r1, r1, #0x1 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x4 - strne r1, [r0, #0x0] - bxne lr - ldr r1, [r2, #0x4] - add r2, r2, #0x4 - str r1, [r0, #0x4c] - ldr r1, [r2, #0x4] - str r1, [r0, #0x50] - ldr r1, [r2, #0x8] - str r1, [r0, #0x54] - bx lr - .balign 4 -_020BDA6C: .word UNK_021CEF7C - - arm_func_start FUN_020BDA70 -FUN_020BDA70: ; 0x020BDA70 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r1, #0x8] - ldr r12, [r1, #0x0] - ldrh r1, [r0, #0x4] - mov r1, r1, lsl #0xc - cmp r12, r1 - subge r12, r1, #0x1 - bge _020BDAA0 - cmp r12, #0x0 - movlt r12, #0x0 -_020BDAA0: - mov r1, r2 - mov r2, r12 - bl FUN_020BD470 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BDAB4 -FUN_020BDAB4: ; 0x020BDAB4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - ldr r0, _020BDB3C ; =UNK_0210659C - str r4, [r5, #0x8] - ldr r0, [r0, #0x0] - add r1, r5, #0x1a - str r0, [r5, #0xc] - ldrb r2, [r2, #0x17] - mov r0, #0x0 - strb r2, [r5, #0x19] - ldrb r2, [r5, #0x19] - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrh r0, [r4, #0x6] - add r2, r4, #0x14 - mov r3, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r5,pc} -_020BDB08: - mov r0, r3, lsl #0x1 - ldrh r1, [r2, r0] - add r0, r5, r3, lsl #0x1 - add r3, r3, #0x1 - ldr r1, [r4, r1] - mov r1, r1, lsr #0x18 - orr r1, r1, #0x100 - strh r1, [r0, #0x1a] - ldrh r0, [r4, #0x6] - cmp r3, r0 - blo _020BDB08 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BDB3C: .word UNK_0210659C - - arm_func_start FUN_020BDB40 -FUN_020BDB40: ; 0x020BDB40 - stmdb sp!, {r4-r8,lr} - ldr r7, [r1, #0x8] - mov r2, r2, lsl #0x10 - ldrh r4, [r7, #0xe] - add r5, r7, #0x8 - ldr r6, [r1, #0x0] - ldrh r3, [r5, r4] - mov r1, r2, lsr #0x10 - add r2, r5, r4 - mul r4, r3, r1 - add r3, r2, #0x4 - mov r6, r6, asr #0xc - mov r8, r0 - ldr r1, [r3, r4] - mov r0, r7 - mov r2, r6 - add r5, r3, r4 - bl FUN_020BDDAC - mov r4, r0 - ldr r1, [r5, #0x4] - mov r0, r7 - mov r2, r6 - bl FUN_020BDDAC - ldr r1, [r8, #0x4] - mov r2, r6 - and r1, r1, #0x8000 - orr r1, r1, r4 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0x4] - mov r0, r7 - ldr r1, [r5, #0xc] - bl FUN_020BDDAC - mov r4, r0 - mov r0, r7 - ldr r1, [r5, #0x8] - mov r2, r6 - bl FUN_020BDDAC - mov r2, r6 - ldr r1, [r8, #0x8] - and r1, r1, #0x8000 - orr r0, r1, r0 - orr r0, r0, r4, lsl #0x10 - str r0, [r8, #0x8] - mov r0, r7 - ldr r1, [r5, #0x10] - bl FUN_020BDCB8 - ldr r1, [r8, #0xc] - bic r1, r1, #0x1f0000 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0xc] - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020BDC0C -FUN_020BDC0C: ; 0x020BDC0C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BDCB4 ; =UNK_021065A8 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDC6C: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDC6C - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BDCB4: .word UNK_021065A8 - - arm_func_start FUN_020BDCB8 -FUN_020BDCB8: ; 0x020BDCB8 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - movne r0, r0, lsr #0x10 - bxne lr - ldr r3, _020BDDA4 ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - ldreqb r0, [r0, r2] - bxeq lr - ldr r3, _020BDDA8 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDD30 - ands r1, r2, #0x1 - beq _020BDD28 - cmp r2, r3 - addhi r0, r0, r3, lsr #0x1 - ldrhib r0, [r0, #0x1] - bxhi lr - add r1, r0, r2, lsr #0x1 - ldrb r2, [r0, r2, lsr #0x1] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD28: - ldrb r0, [r0, r2, lsr #0x1] - bx lr -_020BDD30: - ands r1, r2, #0x3 - beq _020BDD9C - cmp r2, r3 - addhi r0, r0, r3, lsr #0x2 - ldrhib r0, [r1, r0] - bxhi lr - ands r1, r2, #0x1 - beq _020BDD80 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - ldrb r2, [r0, r2] - ldrb r1, [r0, r1] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, lsl #0xe - mov r0, r0, lsr #0x10 - bx lr -_020BDD80: - add r1, r0, r2, lsr #0x2 - ldrb r2, [r0, r2, lsr #0x2] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD9C: - ldrb r0, [r0, r2, lsr #0x2] - bx lr - .balign 4 -_020BDDA4: .word 0x0000FFFF -_020BDDA8: .word 0x1FFF0000 - - arm_func_start FUN_020BDDAC -FUN_020BDDAC: ; 0x020BDDAC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - addne sp, sp, #0x4 - movne r0, r0, lsr #0x10 - ldmneia sp!, {pc} - ldr r3, _020BDF2C ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - moveq r1, r2, lsl #0x1 - addeq sp, sp, #0x4 - ldreqh r0, [r0, r1] - ldmeqia sp!, {pc} - ldr r3, _020BDF30 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDE34 - ands r1, r2, #0x1 - beq _020BDE24 - cmp r2, r3 - bichi r1, r3, #0x1 - addhi r0, r0, r1 - addhi sp, sp, #0x4 - ldrhih r0, [r0, #0x2] - ldmhiia sp!, {pc} - mov r1, r2, lsr #0x1 - b _020BDEE0 -_020BDE24: - bic r1, r2, #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDE34: - ands r1, r2, #0x3 - beq _020BDECC - cmp r2, r3 - movhi r2, r3, lsr #0x2 - movhi r1, r1, lsl #0x1 - addhi r0, r0, r2, lsl #0x1 - addhi sp, sp, #0x4 - ldrhih r0, [r1, r0] - ldmhiia sp!, {pc} - ands r1, r2, #0x1 - beq _020BDEC4 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - mov r2, r2, lsl #0x1 - mov r1, r1, lsl #0x1 - ldrh r12, [r0, r2] - ldrh lr, [r0, r1] - ldr r0, _020BDF34 ; =0x00007C1F - and r3, r12, #0x3e0 - and r2, lr, #0x3e0 - mov r1, #0x3 - mla r2, r3, r1, r2 - and r12, r12, r0 - and r3, lr, r0 - mla r1, r12, r1, r3 - mov r2, r2, lsr #0x2 - and r1, r0, r1, lsr #0x2 - and r0, r2, #0x3e0 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - add sp, sp, #0x4 - mov r0, r0, lsr #0x10 - ldmia sp!, {pc} -_020BDEC4: - mov r1, r2, lsr #0x2 - b _020BDEE0 -_020BDECC: - mov r1, r2, lsr #0x2 - mov r1, r1, lsl #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDEE0: - mov r2, r1, lsl #0x1 - add r1, r0, r1, lsl #0x1 - ldrh r3, [r0, r2] - ldrh r12, [r1, #0x2] - ldr r0, _020BDF34 ; =0x00007C1F - and r2, r3, #0x3e0 - and r1, r12, #0x3e0 - add r1, r2, r1 - mov r1, r1, lsr #0x1 - and r3, r3, r0 - and r2, r12, r0 - add r2, r3, r2 - and r2, r0, r2, lsr #0x1 - and r0, r1, #0x3e0 - orr r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BDF2C: .word 0x0000FFFF -_020BDF30: .word 0x1FFF0000 -_020BDF34: .word 0x00007C1F - - arm_func_start FUN_020BDF38 -FUN_020BDF38: ; 0x020BDF38 - stmdb sp!, {r4,lr} - ldr r12, [r1, #0x0] - mov r4, r0 - mov r2, r2, lsl #0x10 - ldr r0, [r1, #0x8] - mov r1, r2, lsr #0x10 - mov r3, r4 - mov r2, r12, asr #0xc - bl FUN_020BE030 - ldr r0, [r4, #0x10] - bic r0, r0, #0xc0000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x10] - orr r0, r0, #0x40000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BDF84 -FUN_020BDF84: ; 0x020BDF84 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE02C ; =UNK_021065A0 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDFE4: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDFE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE02C: .word UNK_021065A0 - - arm_func_start FUN_020BE030 -FUN_020BE030: ; 0x020BE030 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrh r4, [r8, #0xe] - add r5, r8, #0x8 - mov r6, r3 - ldrh r3, [r5, r4] - add r4, r5, r4 - add r4, r4, #0x4 - mla r5, r3, r1, r4 - mov r7, r2 - ldr r1, [r5, #0x18] - ldr r2, [r5, #0x1c] - mov r3, r7 - ldr r4, [r6, #0x0] - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x20] - mov r0, r8 - ldr r2, [r5, #0x24] - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x0 - bne _020BE09C - cmp r0, #0x0 - orreq r4, r4, #0x4 - beq _020BE0A8 -_020BE09C: - str r9, [r6, #0x24] - str r0, [r6, #0x28] - bic r4, r4, #0x4 -_020BE0A8: - ldr r1, [r5, #0x10] - ldr r2, [r5, #0x14] - mov r0, r8 - mov r3, r7 - bl FUN_020BE12C - cmp r0, #0x10000000 - strneh r0, [r6, #0x20] - movne r0, r0, lsr #0x10 - strneh r0, [r6, #0x22] - orreq r4, r4, #0x2 - ldr r1, [r5, #0x0] - ldr r2, [r5, #0x4] - mov r0, r8 - mov r3, r7 - bicne r4, r4, #0x2 - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - mov r0, r8 - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x1000 - bne _020BE114 - cmp r0, #0x1000 - orreq r4, r4, #0x1 - beq _020BE120 -_020BE114: - str r9, [r6, #0x18] - str r0, [r6, #0x1c] - bic r4, r4, #0x1 -_020BE120: - str r4, [r6, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020BE12C -FUN_020BE12C: ; 0x020BE12C - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE1F8 - ldr r2, _020BE234 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r2, r1, r2 - beq _020BE17C - ands r1, r3, #0x1 - beq _020BE174 - cmp r3, r2 - movhi r1, r2, lsr #0x1 - addhi r3, r1, #0x1 - bhi _020BE1F8 - mov r2, r3, lsr #0x1 - b _020BE200 -_020BE174: - mov r3, r3, lsr #0x1 - b _020BE1F8 -_020BE17C: - ands r1, r3, #0x3 - beq _020BE1F4 - cmp r3, r2 - addhi r3, r1, r2, lsr #0x2 - bhi _020BE1F8 - ands r1, r3, #0x1 - beq _020BE1EC - ands r1, r3, #0x2 - movne r1, r3, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r3, lsr #0x2 - addeq r1, r2, #0x1 - mov r12, r2, lsl #0x2 - add r3, r0, r2, lsl #0x2 - mov r2, r1, lsl #0x2 - add r1, r0, r1, lsl #0x2 - ldrsh r12, [r0, r12] - ldrsh r2, [r0, r2] - mov r0, #0x3 - ldrsh r3, [r3, #0x2] - ldrsh r1, [r1, #0x2] - mla r2, r12, r0, r2 - mla r1, r3, r0, r1 - ldr r0, _020BE234 ; =0x0000FFFF - mov r1, r1, asr #0x2 - and r0, r0, r2, asr #0x2 - orr r0, r0, r1, lsl #0x10 - bx lr -_020BE1EC: - mov r2, r3, lsr #0x2 - b _020BE200 -_020BE1F4: - mov r3, r3, lsr #0x2 -_020BE1F8: - ldr r0, [r0, r3, lsl #0x2] - bx lr -_020BE200: - add r1, r0, r2, lsl #0x2 - mov r2, r2, lsl #0x2 - ldrsh r12, [r0, r2] - ldrsh r3, [r1, #0x4] - ldrsh r2, [r1, #0x2] - ldrsh r1, [r1, #0x6] - ldr r0, _020BE234 ; =0x0000FFFF - add r3, r12, r3 - add r1, r2, r1 - and r2, r0, r3, asr #0x1 - mov r0, r1, asr #0x1 - orr r0, r2, r0, lsl #0x10 - bx lr - .balign 4 -_020BE234: .word 0x0000FFFF - - arm_func_start FUN_020BE238 -FUN_020BE238: - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE2F0 - ldr r2, _020BE330 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r12, r1, r2 - beq _020BE288 - ands r2, r3, #0x1 - beq _020BE280 - cmp r3, r12 - movhi r2, r12, lsr #0x1 - addhi r3, r2, #0x1 - bhi _020BE2F0 - mov r3, r3, lsr #0x1 - b _020BE304 -_020BE280: - mov r3, r3, lsr #0x1 - b _020BE2F0 -_020BE288: - ands r2, r3, #0x3 - beq _020BE2EC - cmp r3, r12 - addhi r3, r2, r12, lsr #0x2 - bhi _020BE2F0 - ands r2, r3, #0x1 - beq _020BE2E4 - ands r2, r3, #0x2 - movne r3, r3, lsr #0x2 - addne r2, r3, #0x1 - moveq r2, r3, lsr #0x2 - addeq r3, r2, #0x1 - ands r1, r1, #0x10000000 - movne r2, r2, lsl #0x1 - movne r1, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r1, [r0, r1] - ldreq r2, [r0, r2, lsl #0x2] - ldreq r1, [r0, r3, lsl #0x2] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, asr #0x2 - bx lr -_020BE2E4: - mov r3, r3, lsr #0x2 - b _020BE304 -_020BE2EC: - mov r3, r3, lsr #0x2 -_020BE2F0: - ands r1, r1, #0x10000000 - movne r1, r3, lsl #0x1 - ldrnesh r0, [r0, r1] - ldreq r0, [r0, r3, lsl #0x2] - bx lr -_020BE304: - ands r1, r1, #0x10000000 - movne r2, r3, lsl #0x1 - addne r1, r0, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r0, [r1, #0x2] - addeq r1, r0, r3, lsl #0x2 - ldreq r2, [r0, r3, lsl #0x2] - ldreq r0, [r1, #0x4] - add r0, r2, r0 - mov r0, r0, asr #0x1 - bx lr - .balign 4 -_020BE330: .word 0x0000FFFF - - arm_func_start FUN_020BE334 -FUN_020BE334: ; 0x020BE334 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldr r3, [r6, #0x0] - ldr r5, [r6, #0x8] - mov r1, r2, lsl #0x10 - mov r2, r3, lsl #0x4 - mov r7, r0 - mov r0, r5 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl FUN_020BC42C - mov r4, r0 - ldrb r1, [r4, #0x2] - mov r0, r5 - bl FUN_020BC4B8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE408 - ldrb r1, [r4, #0x3] - cmp r1, #0xff - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r5 - bl FUN_020BC4A8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE3B4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE3B4 -FUN_020BE3B4: ; 0x020BE3B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x34] - mov r4, r2 - add r0, r5, r0 - bl FUN_020BC2A0 - ldr r1, [r5, #0x2c] - ldrh r2, [r0, #0x2] - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - ands r1, r2, #0x1 - ldrh r0, [r0, #0x0] - moveq r1, r3, lsl #0xf - moveq r3, r1, lsr #0x10 - moveq r0, r0, lsl #0xf - moveq r0, r0, lsr #0x10 - add r0, r0, r3 - str r0, [r4, #0x14] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BE408 -FUN_020BE408: ; 0x020BE408 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x3c - mov r4, r2 - bl FUN_020BC2A0 - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - and r1, r1, #0x1c000000 - cmp r1, #0x14000000 - ldrne r2, [r5, #0x8] - ldrne r1, _020BE4E0 ; =0x0000FFFF - andne r5, r2, r1 - ldreq r2, [r5, #0x18] - ldreq r1, _020BE4E0 ; =0x0000FFFF - andeq r5, r2, r1 - ldr r1, _020BE4E4 ; =0xC00F0000 - ldr r2, _020BE4E8 ; =0x000007FF - and r1, r3, r1 - str r1, [r4, #0x10] - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - add r1, r1, r5 - orr r1, r3, r1 - str r1, [r4, #0x10] - ldr r3, [r0, #0x4] - ldr r1, _020BE4EC ; =0x003FF800 - and r3, r3, r2 - strh r3, [r4, #0x2c] - ldr r3, [r0, #0x4] - and r1, r3, r1 - mov r1, r1, lsr #0xb - strh r1, [r4, #0x2e] - ldr r3, [r0, #0x4] - ldrh r1, [r4, #0x2c] - and r0, r3, r2 - and r5, r2, r3, lsr #0xb - cmp r0, r1 - moveq r0, #0x1000 - beq _020BE4B4 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4B4: - str r0, [r4, #0x30] - ldrh r1, [r4, #0x2e] - cmp r5, r1 - moveq r0, #0x1000 - beq _020BE4D4 - mov r0, r5, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4D4: - str r0, [r4, #0x34] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BE4E0: .word 0x0000FFFF -_020BE4E4: .word 0xC00F0000 -_020BE4E8: .word 0x000007FF -_020BE4EC: .word 0x003FF800 - - arm_func_start FUN_020BE4F0 -FUN_020BE4F0: ; 0x020BE4F0 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE59C ; =UNK_021065A4 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - str r8, [r9, #0x8] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0xd] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0xc - add r4, r4, #0x4 -_020BE554: - ldrh r1, [r8, #0x12] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0xd] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BE554 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE59C: .word UNK_021065A4 - - arm_func_start FUN_020BE5A0 -FUN_020BE5A0: ; 0x020BE5A0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x8] - ldr r3, [r1, #0x0] - ldrh r1, [lr, #0x6] - mov r12, r3, asr #0xc - mov r3, #0x1 - mla r2, r12, r1, r2 - mov r1, r2, lsr #0x5 - add r1, lr, r1, lsl #0x2 - ldr r1, [r1, #0xc] - and r2, r2, #0x1f - and r1, r1, r3, lsl r2 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BE5E0 -FUN_020BE5E0: ; 0x020BE5E0 - ldr r3, _020BE628 ; =UNK_02106598 - mov r12, #0x0 - ldr r3, [r3, #0x0] - str r3, [r0, #0xc] - ldrb r2, [r2, #0x17] - strb r2, [r0, #0x19] - str r1, [r0, #0x8] - ldrb r1, [r0, #0x19] - cmp r1, #0x0 - bxls lr -_020BE608: - orr r2, r12, #0x100 - add r1, r0, r12, lsl #0x1 - strh r2, [r1, #0x1a] - ldrb r1, [r0, #0x19] - add r12, r12, #0x1 - cmp r12, r1 - blo _020BE608 - bx lr - .balign 4 -_020BE628: .word UNK_02106598 - - arm_func_start FUN_020BE62C -FUN_020BE62C: ; 0x020BE62C - ands r2, r3, #0x4 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x1 - strne r1, [r0, #0x0] - bne _020BE658 - - arm_func_start FUN_020BE640 -FUN_020BE640: ; 0x020BE640 - ldr r2, [r1, #0x0] - str r2, [r0, #0x4] - ldr r2, [r1, #0x4] - str r2, [r0, #0x8] - ldr r1, [r1, #0x8] - str r1, [r0, #0xc] -_020BE658: - ldr r1, [r0, #0x0] - orr r1, r1, #0x18 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020BE668 -FUN_020BE668: ; 0x020BE668 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x0] - ands r0, r1, #0x4 - bne _020BE6AC - ands r0, r1, #0x2 - bne _020BE698 - add r1, r4, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BE6C4 -_020BE698: - add r1, r4, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - b _020BE6C4 -_020BE6AC: - ands r0, r1, #0x2 - bne _020BE6C4 - add r1, r4, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020BE6C4: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldmneia sp!, {r4,pc} - add r1, r4, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BE6E4 -FUN_020BE6E4: ; 0x020BE6E4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BE820 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BE824 ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BE828 ; =UNK_021067B0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BE7B4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BE7B4: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BE804 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BE804: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BE820: .word 0x00101610 -_020BE824: .word 0x00101810 -_020BE828: .word UNK_021067B0 - - arm_func_start FUN_020BE82C -FUN_020BE82C: ; 0x020BE82C - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BE850 -FUN_020BE850: ; 0x020BE850 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - str r12, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r3, [r1, #0x2e] - mov r1, r2, lsl #0x1 - rsb r1, r1, #0x0 - add r1, r1, #0x2000 - mul r1, r3, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BE894 -FUN_020BE894: ; 0x020BE894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2c] - add r0, r1, r0 - rsb r0, r0, #0x0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x30] - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - sub r0, r1, r0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BE954 -FUN_020BE954: ; 0x020BE954 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r0, r7, r6 - ldrh r3, [r9, #0x2c] - ldr r2, [r9, #0x18] - sub r0, r2, r0 - mul r0, r3, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x30] - ldrh r2, [r9, #0x2e] - ldr r0, [r9, #0x1c] - sub r0, r1, r0 - add r0, r0, #0x2000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BEA3C -FUN_020BEA3C: ; 0x020BEA3C - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldrh r2, [r1, #0x2c] - ldr r3, [r1, #0x24] - mul r2, r3, r2 - rsb r2, r2, #0x0 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BEA84 -FUN_020BEA84: ; 0x020BEA84 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r4, [r1, #0x18] - ldr r3, [r1, #0x24] - ldrh lr, [r1, #0x2c] - smull r12, r3, r4, r3 - mov r4, r12, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - rsb r3, r4, #0x0 - mul r3, lr, r3 - str r3, [r0, #0x30] - ldr r4, [r1, #0x1c] - ldr r12, [r1, #0x28] - mov r3, r4, lsl #0x1 - smull lr, r12, r4, r12 - rsb r4, r3, #0x0 - mov r3, lr, lsr #0x8 - ldrh lr, [r1, #0x2e] - add r1, r4, #0x2000 - orr r3, r3, r12, lsl #0x18 - mul r4, lr, r1 - mul r1, lr, r3 - add r1, r1, r4, lsl #0x3 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BEB00 -FUN_020BEB00: ; 0x020BEB00 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2c] - ldr r0, [r5, #0x24] - add r1, r2, r1 - rsb r1, r1, #0x0 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - sub r0, r0, r1, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2e] - ldr r0, [r5, #0x28] - sub r1, r2, r1 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - add r0, r0, r1, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BEBD8 -FUN_020BEBD8: ; 0x020BEBD8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r2, r7, r6 - ldr r5, [r9, #0x18] - ldrh r0, [r9, #0x2c] - sub r3, r5, r2 - ldr r2, [r9, #0x24] - mul r4, r0, r3 - smull r3, r2, r5, r2 - mov r4, r4, lsl #0x3 - mov r3, r3, lsr #0x8 - orr r3, r3, r2, lsl #0x18 - mul r2, r0, r3 - sub r0, r4, r2 - str r0, [r10, #0x30] - ldr r4, [r9, #0x1c] - ldrh r3, [r9, #0x2e] - sub r0, r1, r4 - add r0, r0, #0x2000 - mul r2, r3, r0 - ldr r0, [r9, #0x28] - smull r1, r0, r4, r0 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - mul r0, r3, r1 - add r0, r0, r2, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BECEC -FUN_020BECEC: ; 0x020BECEC - stmdb sp!, {r4-r8,lr} - mov r12, r0 - ands r0, r3, #0x4 - ldrb r3, [r2, #0x3] - beq _020BED40 - ldr r1, [r12, #0x0] - ands r0, r3, #0x2 - orr r0, r1, #0x1 - str r0, [r12, #0x0] - beq _020BEDB8 - ldr r0, _020BEE2C ; =UNK_021CEF7C - ldrb r7, [r2, #0x1] - ldr r0, [r0, #0x0] - mov r1, #0x1 - add r6, r0, #0xc4 - mov r5, r7, lsr #0x5 - ldr r4, [r6, r5, lsl #0x2] - and r0, r7, #0x1f - orr r0, r4, r1, lsl r0 - str r0, [r6, r5, lsl #0x2] - b _020BEDB8 -_020BED40: - ldr r4, [r1, #0x0] - ands r0, r3, #0x2 - str r4, [r12, #0x4] - ldr r0, [r1, #0x4] - str r0, [r12, #0x8] - ldr r0, [r1, #0x8] - str r0, [r12, #0xc] - beq _020BEDB8 - ldr lr, _020BEE2C ; =UNK_021CEF7C - ldrb r0, [r2, #0x1] - ldr r4, [lr, #0x0] - mov lr, #0x18 - add r8, r4, #0xc4 - mov r7, r0, lsr #0x5 - and r4, r0, #0x1f - mov r5, #0x1 - mvn r4, r5, lsl r4 - ldr r6, [r8, r7, lsl #0x2] - mul r5, r0, lr - and r0, r6, r4 - str r0, [r8, r7, lsl #0x2] - ldr r4, [r1, #0xc] - ldr r0, _020BEE30 ; =UNK_021CFD8C - ldr lr, _020BEE34 ; =UNK_021CFD90 - str r4, [r0, r5] - ldr r4, [r1, #0x10] - ldr r0, _020BEE38 ; =UNK_021CFD94 - str r4, [lr, r5] - ldr r1, [r1, #0x14] - str r1, [r0, r5] -_020BEDB8: - ands r0, r3, #0x1 - beq _020BEE1C - ldrb r0, [r2, #0x2] - ldr r2, [r12, #0x0] - ldr r1, _020BEE2C ; =UNK_021CEF7C - orr r2, r2, #0x20 - str r2, [r12, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r2, r1, lsl #0x2 - and r2, r0, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - ldrne r0, [r12, #0x0] - orrne r0, r0, #0x8 - strne r0, [r12, #0x0] - bne _020BEE1C - ldr r2, _020BEE30 ; =UNK_021CFD8C - mov r1, #0x18 - mla r1, r0, r1, r2 - add r3, r12, #0x10 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} -_020BEE1C: - ldr r0, [r12, #0x0] - orr r0, r0, #0x10 - str r0, [r12, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BEE2C: .word UNK_021CEF7C -_020BEE30: .word UNK_021CFD8C -_020BEE34: .word UNK_021CFD90 -_020BEE38: .word UNK_021CFD94 - - arm_func_start FUN_020BEE3C -FUN_020BEE3C: ; 0x020BEE3C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - mov r4, #0x0 - ands r0, r1, #0x4 - moveq r4, #0x1 - ands r0, r1, #0x20 - beq _020BEE94 - ands r0, r1, #0x8 - bne _020BEE94 - cmp r4, #0x0 - beq _020BEE84 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - mov r4, #0x0 -_020BEE84: - add r1, r5, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEE94: - ldr r0, [r5, #0x0] - ands r0, r0, #0x2 - bne _020BEED0 - cmp r4, #0x0 - beq _020BEEBC - add r1, r5, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BEEE8 -_020BEEBC: - add r1, r5, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BEEE8 -_020BEED0: - cmp r4, #0x0 - beq _020BEEE8 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEEE8: - ldr r0, [r5, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r1, r5, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020BEF10 -FUN_020BEF10: ; 0x020BEF10 - stmdb sp!, {lr} - sub sp, sp, #0x3c - ldr r1, [r0, #0x0] - mov r3, #0x0 - ands r1, r1, #0x8 - ldrne r1, _020BF0CC ; =0x00101710 - mov r2, #0x3 - strne r1, [sp, #0x0] - ldreq r1, _020BF0D0 ; =0x00101910 - str r3, [sp, #0x34] - streq r1, [sp, #0x0] - mov r1, #0x2 - str r1, [sp, #0x38] - str r3, [sp, #0x28] - str r3, [sp, #0x24] - str r3, [sp, #0x20] - str r3, [sp, #0x1c] - str r3, [sp, #0x14] - str r3, [sp, #0x10] - str r3, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [r0, #0x0] - ands r1, r2, #0x4 - beq _020BEFA0 - str r3, [sp, #0x2c] - str r3, [sp, #0x30] - ldr r1, [r0, #0x0] - ands r1, r1, #0x1 - movne r1, #0x1000 - strne r1, [sp, #0x8] - strne r1, [sp, #0x18] - ldreq r1, [r0, #0x18] - streq r1, [sp, #0x8] - ldreq r1, [r0, #0x1c] - streq r1, [sp, #0x18] - b _020BF040 -_020BEFA0: - ands r1, r2, #0x1 - beq _020BEFE8 - ldr r2, [r0, #0x24] - ldrh r1, [r0, #0x2c] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r1, r2, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x28] - ldrh r1, [r0, #0x2e] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r3, r2, r1 - mov r1, #0x1000 - str r3, [sp, #0x30] - str r1, [sp, #0x8] - str r1, [sp, #0x18] - b _020BF040 -_020BEFE8: - ldr r2, [r0, #0x18] - ldr r1, [r0, #0x24] - ldrh r12, [r0, #0x2c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x1c] - ldr r1, [r0, #0x28] - ldrh r12, [r0, #0x2e] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x30] - ldr r1, [r0, #0x18] - str r1, [sp, #0x8] - ldr r1, [r0, #0x1c] - str r1, [sp, #0x18] -_020BF040: - ldr r12, [r0, #0x30] - cmp r12, #0x1000 - beq _020BF078 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x2c] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x8] - ldr r2, [r0, #0x30] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x2c] -_020BF078: - ldr r12, [r0, #0x34] - cmp r12, #0x1000 - beq _020BF0B0 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x30] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x18] - ldr r0, [r0, #0x34] - smull r2, r1, r0, r1 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #0x14 - str r0, [sp, #0x30] -_020BF0B0: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0xe - bl FUN_020BB1C0 - add sp, sp, #0x3c - ldmia sp!, {pc} - .balign 4 -_020BF0CC: .word 0x00101710 -_020BF0D0: .word 0x00101910 - - arm_func_start FUN_020BF0D4 -FUN_020BF0D4: ; 0x020BF0D4 - stmdb sp!, {r4-r8,lr} - mov r5, r0 - ands r0, r3, #0x4 - ldrb r4, [r2, #0x1] - ldrb r0, [r2, #0x2] - beq _020BF174 - ldr r2, [r5, #0x0] - ldr r1, _020BF2E0 ; =UNK_021CEF7C - orr r2, r2, #0x1 - str r2, [r5, #0x0] - ldr r3, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r3, r1, lsl #0x2 - and r2, r0, #0x1f - mov r6, #0x1 - mov r2, r6, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - beq _020BF148 - add r3, r3, #0xc4 - mov r2, r4, lsr #0x5 - ldr r1, [r3, r2, lsl #0x2] - and r0, r4, #0x1f - orr r0, r1, r6, lsl r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF148: - ldr r1, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mla r6, r0, r2, r1 - mla r1, r4, r2, r1 - mov r0, r6 - bl MIi_CpuCopy32 - mov r0, r6 - add r1, r5, #0x10 - mov r2, #0x18 - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} -_020BF174: - ldr r3, [r1, #0x0] - ldr r2, _020BF2E0 ; =UNK_021CEF7C - str r3, [r5, #0x4] - ldr r3, [r1, #0x4] - mov r7, r0, lsr #0x5 - str r3, [r5, #0x8] - ldr r3, [r1, #0x8] - and r8, r0, #0x1f - str r3, [r5, #0xc] - ldr r6, [r2, #0x0] - mov r3, #0x1 - add r2, r6, r7, lsl #0x2 - mov r7, r3, lsl r8 - ldr r2, [r2, #0xc4] - ands r2, r7, r2 - beq _020BF200 - ldr r3, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mov r0, r1 - mla r1, r4, r2, r3 - bl MIi_CpuCopy32 - ldr r0, _020BF2E0 ; =UNK_021CEF7C - mov r2, r4, lsr #0x5 - ldr r1, [r0, #0x0] - and r0, r4, #0x1f - add r3, r1, #0xc4 - mov r1, #0x1 - mvn r0, r1, lsl r0 - ldr r1, [r3, r2, lsl #0x2] - and r0, r1, r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF200: - mov r2, #0x18 - mul r12, r0, r2 - and r7, r4, #0x1f - ldr r0, _020BF2E4 ; =UNK_021CFD80 - add r6, r6, #0xc4 - mov lr, r4, lsr #0x5 - mvn r7, r3, lsl r7 - ldr r8, [r6, lr, lsl #0x2] - mul r3, r4, r2 - and r4, r8, r7 - str r4, [r6, lr, lsl #0x2] - ldr r7, [r1, #0x0] - ldr r4, [r0, r12] - ldr r6, _020BF2E8 ; =UNK_021CFD84 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r0, r3] - ldr r8, [r1, #0x4] - ldr r4, [r6, r12] - ldr r7, _020BF2EC ; =UNK_021CFD88 - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r6, r3] - ldr r8, [r1, #0x8] - ldr r4, [r7, r12] - ldr r6, _020BF2F0 ; =UNK_021CFD8C - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r7, r3] - ldr r7, [r1, #0xc] - ldr r4, [r6, r12] - ldr lr, _020BF2F4 ; =UNK_021CFD90 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r6, r3] - ldr r7, [r1, #0x10] - ldr r4, [lr, r12] - ldr r6, _020BF2F8 ; =UNK_021CFD94 - smull r8, r4, r7, r4 - add r0, r0, r12 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [lr, r3] - ldr lr, [r1, #0x14] - ldr r4, [r6, r12] - add r1, r5, #0x10 - smull r5, r4, lr, r4 - mov r5, r5, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, r3] - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BF2E0: .word UNK_021CEF7C -_020BF2E4: .word UNK_021CFD80 -_020BF2E8: .word UNK_021CFD84 -_020BF2EC: .word UNK_021CFD88 -_020BF2F0: .word UNK_021CFD8C -_020BF2F4: .word UNK_021CFD90 -_020BF2F8: .word UNK_021CFD94 - - arm_func_start FUN_020BF2FC -FUN_020BF2FC: ; 0x020BF2FC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - mov r6, r0 - ldr r0, [r6, #0x0] - mov r5, #0x0 - ands r4, r0, #0x18 - bne _020BF328 - add r1, r6, #0x1c - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF328: - ldr r0, [r6, #0x0] - ands r0, r0, #0x4 - bne _020BF398 - cmp r4, #0x0 - movne r5, #0x1 - bne _020BF398 - ldr r2, [r6, #0x4c] - ldr r0, [r6, #0x10] - add r1, sp, #0x0 - smull r3, r0, r2, r0 - mov r2, r3, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x0] - ldr r3, [r6, #0x50] - ldr r2, [r6, #0x14] - mov r0, #0x1c - smull r12, r2, r3, r2 - mov r3, r12, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x4] - ldr r12, [r6, #0x54] - ldr r3, [r6, #0x18] - mov r2, #0x3 - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - str r12, [sp, #0x8] - bl FUN_020BB1C0 -_020BF398: - ldr r0, [r6, #0x0] - ands r0, r0, #0x2 - bne _020BF3D4 - cmp r5, #0x0 - beq _020BF3C0 - add r1, r6, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BF3EC -_020BF3C0: - add r1, r6, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BF3EC -_020BF3D4: - cmp r5, #0x0 - beq _020BF3EC - add r1, r6, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF3EC: - cmp r4, #0x0 - bne _020BF404 - add r1, r6, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF404: - ldr r0, [r6, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x10 - ldmneia sp!, {r4-r6,pc} - add r1, r6, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF42C -FUN_020BF42C: ; 0x020BF42C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BF568 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BF56C ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BF570 ; =UNK_021067D0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BF4FC - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BF4FC: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BF54C - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BF54C: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BF568: .word 0x00101610 -_020BF56C: .word 0x00101810 -_020BF570: .word UNK_021067D0 - - arm_func_start FUN_020BF574 -FUN_020BF574: ; 0x020BF574 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BF598 -FUN_020BF598: ; 0x020BF598 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - ldr r3, [r1, #0x18] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x1000 - mul r2, r3, r2 - mov r2, r2, lsl #0x3 - str r2, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r1, [r1, #0x2e] - rsb r2, r2, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF5E8 -FUN_020BF5E8: ; 0x020BF5E8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - ldrsh r4, [r5, #0x22] - rsb r0, r2, #0x0 - rsb r1, r1, #0x0 - mov r0, r0, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r1, r1, lsl #0xb - smull r7, lr, r4, r0 - smull r12, r4, r3, r1 - subs r7, r7, r12 - sbc r3, lr, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF6C8 -FUN_020BF6C8: ; 0x020BF6C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r3, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - rsb r0, r3, #0x0 - rsb r1, r1, #0x0 - mov r2, r1, lsl #0xb - mov r11, r0, lsl #0xb - smull r1, r0, r7, r11 - smull r8, r7, r5, r2 - smlal r8, r7, r4, r11 - mov r4, r8, lsr #0x8 - orr r4, r4, r7, lsl #0x18 - smull r5, r2, r6, r2 - subs r1, r1, r5 - sbc r0, r0, r2 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - add r0, r1, r3, lsl #0xf - str r0, [r10, #0x30] - ldrh r0, [r9, #0x2e] - add r0, r4, r0, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BF7C8 -FUN_020BF7C8: ; 0x020BF7C8 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldr r3, [r1, #0x24] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x0 - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - - arm_func_start FUN_020BF810 -FUN_020BF810: ; 0x020BF810 - stmdb sp!, {r4-r6,lr} - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - ldrh r5, [r1, #0x2c] - ldr r12, [r1, #0x24] - ldrh r2, [r1, #0x2e] - mul lr, r12, r5 - rsb r12, r5, #0x0 - mov r12, r12, lsl #0xb - ldr r4, [r1, #0x18] - sub r12, r12, lr - smull lr, r12, r4, r12 - ldr r6, [r1, #0x28] - mov r4, lr, lsr #0x8 - orr r4, r4, r12, lsl #0x18 - add r4, r4, r5, lsl #0xf - str r4, [r0, #0x30] - mul r4, r6, r2 - rsb r5, r2, #0x0 - ldr r2, [r1, #0x1c] - add r4, r4, r5, lsl #0xb - smull lr, r12, r2, r4 - mov r2, lr, lsr #0x8 - ldrh r1, [r1, #0x2e] - orr r2, r2, r12, lsl #0x18 - add r1, r2, r1, lsl #0xf - str r1, [r0, #0x34] - str r3, [r0, #0x10] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020BF894 -FUN_020BF894: ; 0x020BF894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r7, [r5, #0x2e] - ldr r1, [r5, #0x28] - ldr r0, [r5, #0x24] - rsb r4, r2, #0x0 - mul r3, r1, r7 - rsb r1, r7, #0x0 - add r1, r3, r1, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r7, r4, lsl #0xb - mul r4, r0, r2 - sub r0, r7, r4 - ldrsh lr, [r5, #0x22] - smull r12, r4, r3, r1 - smull r7, r3, lr, r0 - subs r7, r7, r12 - sbc r3, r3, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BF988 -FUN_020BF988: ; 0x020BF988 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r1, [r9, #0x2c] - ldrh r8, [r9, #0x2e] - ldr r2, [r9, #0x28] - rsb r0, r1, #0x0 - mul r3, r2, r8 - rsb r2, r8, #0x0 - add r8, r3, r2, lsl #0xb - mov r0, r0, lsl #0xb - smull r3, r2, r5, r8 - smull r8, r5, r6, r8 - ldr r11, [r9, #0x24] - mul r12, r11, r1 - sub r0, r0, r12 - smlal r3, r2, r4, r0 - smull r4, r0, r7, r0 - subs r4, r4, r8 - sbc r0, r0, r5 - mov r4, r4, lsr #0x8 - orr r4, r4, r0, lsl #0x18 - add r0, r4, r1, lsl #0xf - str r0, [r10, #0x30] - ldrh r1, [r9, #0x2e] - mov r0, r3, lsr #0x8 - orr r0, r0, r2, lsl #0x18 - add r0, r0, r1, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFA9C -FUN_020BFA9C: ; 0x020BFA9C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r3, #0x3 - ands r0, r0, #0x8 - ldrne r0, _020BFC1C ; =0x00101610 - mov r2, #0x2 - strne r0, [sp, #0x0] - ldreq r0, _020BFC20 ; =0x00101810 - mov r1, #0x1000 - streq r0, [sp, #0x0] - mov r0, #0x0 - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x44] - str r0, [sp, #0x40] - str r0, [sp, #0x34] - str r0, [sp, #0x30] - str r0, [sp, #0x2c] - str r0, [sp, #0x28] - str r0, [sp, #0x24] - str r0, [sp, #0x20] - str r0, [sp, #0x14] - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - strne r1, [r4, #0x1c] - ldrne r0, [r4, #0x1c] - strne r0, [r4, #0x18] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - movne r0, #0x1000 - strneh r0, [r4, #0x22] - movne r0, #0x0 - strneh r0, [r4, #0x20] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x28] - ldrne r0, [r4, #0x28] - strne r0, [r4, #0x24] - ldr r1, [r4, #0x0] - ldr r0, _020BFC24 ; =UNK_021067F0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BFBB0 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BFBB0: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BFC00 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BFC00: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BFC1C: .word 0x00101610 -_020BFC20: .word 0x00101810 -_020BFC24: .word UNK_021067F0 - - arm_func_start FUN_020BFC28 -FUN_020BFC28: ; 0x020BFC28 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - - arm_func_start FUN_020BFC4C -FUN_020BFC4C: ; 0x020BFC4C - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - str r3, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x1c] - rsb r2, r2, #0x0 - sub r1, r1, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r3, [r0, #0x10] - bx lr - - arm_func_start FUN_020BFC8C -FUN_020BFC8C: ; 0x020BFC8C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r1, [r5, #0x2c] - ldrsh r0, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrh r1, [r5, #0x2e] - ldrsh r0, [r5, #0x22] - rsb r1, r1, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFD38 -FUN_020BFD38: ; 0x020BFD38 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r3, [r9, #0x22] - ldr r0, [r9, #0x18] - ldrsh r7, [r9, #0x20] - ldr r5, [r9, #0x1c] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [r10, #0x0] - smull r2, r1, r5, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r7 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - str r4, [r10, #0x14] - bl FX_GetDivResult - smull r2, r1, r5, r7 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - mov r1, r11 - bl FX_DivAsync - sub r0, r4, #0x1000 - ldrh r1, [r9, #0x2c] - mul r2, r1, r6 - mov r1, r2, lsl #0x4 - str r1, [r10, #0x30] - ldrh r1, [r9, #0x2e] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020BFE0C -FUN_020BFE0C: ; 0x020BFE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov lr, #0x0 - str lr, [r0, #0x4] - ldr r2, [r1, #0x24] - ldrh r3, [r1, #0x2c] - rsb r2, r2, #0x0 - ldr r12, [r1, #0x28] - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r1, [r1, #0x2e] - rsb r2, r12, #0x0 - rsb r1, r1, #0x0 - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str lr, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020BFE68 -FUN_020BFE68: ; 0x020BFE68 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r12, [r1, #0x24] - ldr r3, [r1, #0x18] - ldr r4, [r1, #0x28] - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - ldrh lr, [r1, #0x2c] - rsb r3, r12, #0x0 - ldr r12, [r1, #0x1c] - rsb r4, r4, #0x0 - mul r3, lr, r3 - smull lr, r12, r4, r12 - mov r3, r3, lsl #0x4 - str r3, [r0, #0x30] - mov r4, lr, lsr #0xc - ldrh r3, [r1, #0x2e] - ldr r1, [r1, #0x1c] - orr r4, r4, r12, lsl #0x14 - add r1, r1, r4 - rsb r3, r3, #0x0 - sub r1, r1, #0x1000 - mul r1, r3, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020BFEEC -FUN_020BFEEC: ; 0x020BFEEC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh lr, [r5, #0x20] - ldr r4, [r5, #0x28] - ldrsh r0, [r5, #0x22] - ldr r12, [r5, #0x24] - smull r3, r2, r4, lr - smlal r3, r2, r12, r0 - smull r1, r0, r4, r0 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - sub r4, lr, r3 - smull r3, r2, r12, lr - subs r1, r3, r1 - sbc r0, r2, r0 - ldrh r2, [r5, #0x2c] - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - mul r0, r2, r4 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - add r0, r0, r1 - rsb r1, r2, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020BFFD4 -FUN_020BFFD4: ; 0x020BFFD4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldrh r2, [r6, #0x2c] - ldrh r1, [r6, #0x2e] - mov r7, r0 - mov r10, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r10 - bl FX_DivAsync - ldrsh r3, [r6, #0x22] - ldr r0, [r6, #0x18] - ldrsh r9, [r6, #0x20] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - ldr r8, [r6, #0x1c] - orr r2, r2, r1, lsl #0x14 - str r2, [r7, #0x0] - smull r2, r1, r8, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r9 - mov r5, r2, lsr #0xc - orr r5, r5, r1, lsl #0x14 - str r4, [r7, #0x14] - bl FX_GetDivResult - smull r2, r1, r8, r9 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x4] - mov r0, r10 - mov r1, r11 - bl FX_DivAsync - ldr lr, [r6, #0x1c] - ldrsh r2, [r6, #0x20] - ldr r8, [r6, #0x24] - ldr r0, [r6, #0x28] - smull r10, r9, r8, r2 - ldrh r1, [r6, #0x2c] - smull r3, r2, r0, r2 - ldrsh r12, [r6, #0x22] - str r1, [sp, #0x0] - mov r11, lr, asr #0x1f - smlal r3, r2, r8, r12 - smull r8, r12, r0, r12 - subs r8, r10, r8 - sbc r0, r9, r12 - mov r9, r8, lsr #0xc - mov r12, r3, lsr #0xc - orr r9, r9, r0, lsl #0x14 - mov r3, r2, asr #0xc - orr r12, r12, r2, lsl #0x14 - umull r10, r2, r9, lr - mla r2, r9, r11, r2 - mov r8, r0, asr #0xc - mla r2, r8, lr, r2 - ldr r1, [r6, #0x18] - mov r8, r10, lsr #0xc - orr r8, r8, r2, lsl #0x14 - add r2, r4, r8 - mov r0, r1, asr #0x1f - umull r8, r4, r12, r1 - mla r4, r12, r0, r4 - mla r4, r3, r1, r4 - mov r0, r8, lsr #0xc - orr r0, r0, r4, lsl #0x14 - sub r1, r5, r0 - ldr r0, [sp, #0x0] - sub r2, r2, #0x1000 - mul r1, r0, r1 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x30] - ldrh r0, [r6, #0x2e] - rsb r0, r0, #0x0 - mul r1, r0, r2 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x34] - bl FX_GetDivResult - rsb r1, r5, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C0130 -FUN_020C0130: ; 0x020C0130 - ldr ip, _020C0138 ; =FUN_020C187C - bx r12 - .balign 4 -_020C0138: .word FUN_020C187C - - arm_func_start FUN_020C013C -FUN_020C013C: ; 0x020C013C - stmdb sp!, {r4,lr} - bl FUN_020C18F8 - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0174 -FUN_020C0174: ; 0x020C0174 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - beq _020C0194 - mov r0, #0x40 - bl SND_SetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} -_020C0194: - bl SND_ResetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C01A0 -FUN_020C01A0: ; 0x020C01A0 - stmdb sp!, {r4,lr} - mov r4, #0x0 -_020C01A8: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0x0 - bne _020C01A8 - bl FUN_020C0BA0 - bl FUN_020C1D9C - bl FUN_020C3C88 - mov r0, #0x0 - bl SND_FlushCommand - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C01D0 -FUN_020C01D0: ; 0x020C01D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C0254 ; =UNK_021D1C94 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - mov r1, #0x1 - str r1, [r0, #0x0] - bl SND_Init - ldr ip, _020C0258 ; =FUN_020C013C - ldr r0, _020C025C ; =UNK_021D1C98 - mov r3, #0x0 - ldr r1, _020C0260 ; =UNK_021D1CA4 - ldr r2, _020C0264 ; =FUN_020C0130 - str r12, [r0, #0x0] - str r3, [r0, #0x4] - str r2, [r1, #0x0] - str r3, [r1, #0x4] - bl PM_PrependPreSleepCallback - ldr r0, _020C0260 ; =UNK_021D1CA4 - bl PM_AppendPostSleepCallback - bl FUN_020C0270 - bl FUN_020C1E38 - bl FUN_020C0D20 - ldr r1, _020C0268 ; =UNK_021D1C8C - mvn r3, #0x0 - ldr r0, _020C026C ; =UNK_021D1C90 - mov r2, #0x1 - strb r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C0254: .word UNK_021D1C94 -_020C0258: .word FUN_020C013C -_020C025C: .word UNK_021D1C98 -_020C0260: .word UNK_021D1CA4 -_020C0264: .word FUN_020C0130 -_020C0268: .word UNK_021D1C8C -_020C026C: .word UNK_021D1C90 - - arm_func_start FUN_020C0270 -FUN_020C0270: ; 0x020C0270 - ldr r2, _020C0290 ; =UNK_021D1CB8 - mov r3, #0x0 - ldr r1, _020C0294 ; =UNK_021D1CB0 - ldr r0, _020C0298 ; =UNK_021D1CB4 - str r3, [r2, #0x0] - str r3, [r1, #0x0] - str r3, [r0, #0x0] - bx lr - .balign 4 -_020C0290: .word UNK_021D1CB8 -_020C0294: .word UNK_021D1CB0 -_020C0298: .word UNK_021D1CB4 - - arm_func_start FUN_020C029C -FUN_020C029C: ; 0x020C029C - ldr r1, _020C02B8 ; =UNK_021D1CB4 - mov r2, #0x1 - mvn r0, r2, lsl r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C02B8: .word UNK_021D1CB4 - - arm_func_start FUN_020C02BC -FUN_020C02BC: ; 0x020C02BC - ldr r0, _020C02FC ; =UNK_021D1CB4 - mov r3, #0x1 - ldr r2, [r0, #0x0] - mov r0, #0x0 -_020C02CC: - ands r1, r2, r3 - ldreq r1, _020C02FC ; =UNK_021D1CB4 - ldreq r2, [r1, #0x0] - orreq r2, r2, r3 - streq r2, [r1, #0x0] - bxeq lr - add r0, r0, #0x1 - cmp r0, #0x8 - mov r3, r3, lsl #0x1 - blt _020C02CC - mvn r0, #0x0 - bx lr - .balign 4 -_020C02FC: .word UNK_021D1CB4 - - arm_func_start FUN_020C0300 -FUN_020C0300: ; 0x020C0300 - ldr r1, _020C0318 ; =UNK_021D1CB0 - mvn r0, r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C0318: .word UNK_021D1CB0 - - arm_func_start FUN_020C031C -FUN_020C031C: - ldr r1, _020C033C ; =UNK_021D1CB0 - ldr r2, [r1, #0x0] - ands r3, r0, r2 - movne r0, #0x0 - orreq r0, r2, r0 - streq r0, [r1, #0x0] - moveq r0, #0x1 - bx lr - .balign 4 -_020C033C: .word UNK_021D1CB0 - - arm_func_start FUN_020C0340 -FUN_020C0340: - stmdb sp!, {r4,lr} - movs r4, r0 - ldmeqia sp!, {r4,pc} - mov r1, #0x0 - bl SND_UnlockChannel - ldr r0, _020C036C ; =UNK_021D1CB8 - mvn r1, r4 - ldr r2, [r0, #0x0] - and r1, r2, r1 - str r1, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C036C: .word UNK_021D1CB8 - - arm_func_start FUN_020C0370 -FUN_020C0370: - stmdb sp!, {r4,lr} - movs r4, r0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - ldr r1, _020C03B4 ; =UNK_021D1CB8 - ldr r1, [r1, #0x0] - ands r1, r4, r1 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - mov r1, #0x0 - bl SND_LockChannel - ldr r1, _020C03B4 ; =UNK_021D1CB8 - mov r0, #0x1 - ldr r2, [r1, #0x0] - orr r2, r2, r4 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C03B4: .word UNK_021D1CB8 - - arm_func_start FUN_020C03B8 -FUN_020C03B8: ; 0x020C03B8 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0xc] - cmp r0, #0x0 - bne _020C03F8 - ldr r0, [r4, #0x10] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - mov r0, #0x1 - str r0, [r4, #0xc] -_020C03F8: - bl SND_GetChannelStatus - ldr r1, [r4, #0x0] - mov r2, #0x1 - mov r1, r2, lsl r1 - ands r0, r1, r0 - movne r0, r2 - moveq r0, #0x0 - streq r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C041C -FUN_020C041C: ; 0x020C041C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - bl SND_SetChannelPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C044C -FUN_020C044C: ; 0x020C044C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - mov r4, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r2, [r5, #0x4] - ldr r0, _020C04D4 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - mov r2, r4 - mov r3, r4, asr #0x1f - bl _ll_udiv - mov r2, #0x0 - mov r3, r0 - mov r0, #0x10 - cmp r1, r2 - cmpeq r3, r0 - movcc r3, r0 - blo _020C04B8 - ldr r0, _020C04D8 ; =0x0000FFFF - cmp r1, r2 - cmpeq r3, r0 - movhi r3, r0 -_020C04B8: - ldr r0, [r5, #0x0] - mov r1, #0x1 - mov r0, r1, lsl r0 - mov r1, r3 - bl SND_SetChannelTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C04D4: .word 0xD87F8000 -_020C04D8: .word 0x0000FFFF - - arm_func_start FUN_020C04DC -FUN_020C04DC: ; 0x020C04DC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, #0x0 - bl SND_SetChannelVolume - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0510 -FUN_020C0510: ; 0x020C0510 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r2, #0x1 - mov r1, #0x0 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StopTimer - mov r0, #0x0 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C054C -FUN_020C054C: ; 0x020C054C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - movs r8, r1 - mov r9, r0 - mov r7, r2 - mov r6, r3 - beq _020C0584 - cmp r8, #0x1 - ldreq r0, [sp, #0x3c] - ldreq r1, [sp, #0x38] - moveq r0, r0, asr #0x1 - moveq r5, r1, asr #0x1 - subeq r4, r0, r1, asr #0x1 - b _020C0598 -_020C0584: - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x38] - mov r0, r0, asr #0x2 - mov r5, r1, asr #0x2 - sub r4, r0, r1, asr #0x2 -_020C0598: - ldr r2, [sp, #0x40] - ldr r0, _020C0668 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - ldr r2, [sp, #0x48] - mov r3, r2, asr #0x1f - bl _ll_udiv - mov r3, #0x0 - mov r2, #0x10 - cmp r1, r3 - cmpeq r0, r2 - movcc r0, r2 - blo _020C05E0 - ldr r2, _020C066C ; =0x0000FFFF - cmp r1, r3 - cmpeq r0, r2 - movhi r0, r2 -_020C05E0: - str r5, [sp, #0x0] - ldr r1, [sp, #0x44] - str r4, [sp, #0x4] - str r1, [sp, #0x8] - mov r1, #0x0 - str r1, [sp, #0xc] - cmp r6, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x4c] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r9, #0x0] - moveq r3, #0x2 - mov r1, r8 - mov r2, r7 - bl SND_SetupChannelPcm - mov r1, #0x0 - ldr r0, [r9, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r9, #0x8] - mov r0, #0x0 - str r0, [r9, #0xc] - bl SND_GetCurrentCommandTag - str r0, [r9, #0x10] - ldr r1, [sp, #0x40] - mov r0, #0x1 - str r1, [r9, #0x4] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C0668: .word 0xD87F8000 -_020C066C: .word 0x0000FFFF - - arm_func_start FUN_020C0670 -FUN_020C0670: ; 0x020C0670 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr ip, _020C0684 ; =FUN_020C0340 - mov r0, r1, lsl r0 - bx r12 - .balign 4 -_020C0684: .word FUN_020C0340 - - arm_func_start FUN_020C0688 -FUN_020C0688: ; 0x020C0688 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x1 - mov r0, r0, lsl r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x14 - mul r0, r4, r0 - ldr r2, _020C06C8 ; =UNK_021D1CBC - mov r1, #0x0 - str r4, [r2, r0] - add r0, r2, r0 - str r1, [r0, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020C06C8: .word UNK_021D1CBC - - arm_func_start FUN_020C06CC -FUN_020C06CC: ; 0x020C06CC - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r4, [r6, #0x4] - mov r5, r1 - cmp r4, #0x0 - beq _020C06F8 - mov r0, r4 - mov r1, r6 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r6, #0x4] -_020C06F8: - ldr r0, _020C0728 ; =UNK_021D1E08 - mov r1, r6 - bl FUN_020ADAB0 - strb r5, [r6, #0x3d] - cmp r4, #0x0 - beq _020C071C - mov r0, r4 - mov r1, r6 - bl FUN_020C0910 -_020C071C: - mov r0, r6 - bl FUN_020C08B4 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0728: .word UNK_021D1E08 - - arm_func_start FUN_020C072C -FUN_020C072C: ; 0x020C072C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C2A7C - ldr r1, [r4, #0xc] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x8] - ldmneia sp!, {r4,pc} - ldr r1, [r4, #0x10] - ldr r2, _020C0778 ; =UNK_021D2254 - mov r0, #0x24 - mla r0, r1, r0, r2 - mov r1, r4 - add r0, r0, #0xc - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - .balign 4 -_020C0778: .word UNK_021D2254 - - arm_func_start FUN_020C077C -FUN_020C077C: ; 0x020C077C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x0] - strne r0, [r4, #0x0] - ldr r5, [r4, #0x4] - mov r1, r4 - mov r0, r5 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020C07D8 - add r0, r5, #0xc - bl FUN_020ADBE8 - ldr r0, [r4, #0x8] - mov r1, #0x0 - str r1, [r0, #0xc] - str r1, [r4, #0x8] -_020C07D8: - ldr r0, _020C0800 ; =UNK_021D1E08 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, _020C0804 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADBE8 - mov r0, #0x0 - strb r0, [r4, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0800: .word UNK_021D1E08 -_020C0804: .word UNK_021D1DFC - - arm_func_start FUN_020C0808 -FUN_020C0808: ; 0x020C0808 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - bne _020C0850 - ldr r0, _020C0878 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - mov r4, r0 - ldrb r1, [r4, #0x3d] - cmp r5, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r5,pc} - bl FUN_020C087C -_020C0850: - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADAB0 - mov r0, r4 - strb r5, [r4, #0x3d] - bl FUN_020C08B4 - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0874: .word UNK_021D1DFC -_020C0878: .word UNK_021D1E08 - - arm_func_start FUN_020C087C -FUN_020C087C: ; 0x020C087C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrb r0, [r4, #0x2c] - cmp r0, #0x2 - bne _020C089C - ldrb r0, [r4, #0x3c] - ldr r1, _020C08B0 ; =0xFFFFFD2D - bl SND_SetPlayerVolume -_020C089C: - ldrb r0, [r4, #0x3c] - bl SND_StopSeq - mov r0, r4 - bl FUN_020C077C - ldmia sp!, {r4,pc} - .balign 4 -_020C08B0: .word 0xFFFFFD2D - - arm_func_start FUN_020C08B4 -FUN_020C08B4: ; 0x020C08B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C090C ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C08F8 - ldr r4, _020C090C ; =UNK_021D1E08 -_020C08D8: - ldrb r2, [r5, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C08F8 - mov r0, r4 - bl FUN_020ADA98 - movs r1, r0 - bne _020C08D8 -_020C08F8: - ldr r0, _020C090C ; =UNK_021D1E08 - mov r2, r5 - bl FUN_020ADB18 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C090C: .word UNK_021D1E08 - - arm_func_start FUN_020C0910 -FUN_020C0910: ; 0x020C0910 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, #0x0 - mov r5, r0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C0950 -_020C0930: - ldrb r2, [r4, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C0950 - mov r0, r5 - bl FUN_020ADA98 - movs r1, r0 - bne _020C0930 -_020C0950: - mov r0, r5 - mov r2, r4 - bl FUN_020ADB18 - str r5, [r4, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0968 -FUN_020C0968: ; 0x020C0968 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x0 - strb r0, [r4, #0x2e] - strb r0, [r4, #0x2d] - strb r0, [r4, #0x2f] - strh r0, [r4, #0x34] - strh r0, [r4, #0x3e] - mov r1, #0x7f - strb r1, [r4, #0x40] - add r0, r4, #0x1c - strb r1, [r4, #0x41] - bl FUN_020C3E6C - add r0, r4, #0x1c - mov r1, #0x7f00 - mov r2, #0x1 - bl FUN_020C3E40 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C09B0 -FUN_020C09B0: ; 0x020C09B0 - stmdb sp!, {r4-r6,lr} - ldr r3, _020C0A00 ; =UNK_021D2254 - mov r2, #0x24 - mla r5, r0, r2, r3 - mov r6, r1 - add r0, r5, #0xc - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r4 - add r0, r5, #0xc - bl FUN_020ADAB0 - str r6, [r4, #0xc] - str r4, [r6, #0x8] - ldr r0, [r4, #0x8] - bl FUN_020C29C0 - ldr r0, [r4, #0x8] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0A00: .word UNK_021D2254 - - arm_func_start FUN_020C0A04 -FUN_020C0A04: ; 0x020C0A04 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r5, r0 - mov r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x2e] - cmp r4, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x3c] - bl SND_PauseSeq - strb r4, [r5, #0x2e] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0A40 -FUN_020C0A40: ; 0x020C0A40 - stmdb sp!, {r4,lr} - movs r4, r0 - mov r2, r1 - ldmeqia sp!, {r4,pc} - ldrb r1, [r4, #0x2c] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C0A6C - bl FUN_020C087C - ldmia sp!, {r4,pc} -_020C0A6C: - add r0, r4, #0x1c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, r4 - mov r1, #0x0 - bl FUN_020C06CC - mov r0, #0x2 - strb r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0A90 -FUN_020C0A90: ; 0x020C0A90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r0, [r5, #0x3c] - ldr r4, [r5, #0x4] - bl SND_PrepareSeq - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - beq _020C0AC0 - ldrb r0, [r5, #0x3c] - ldr r1, _020C0AE4 ; =0x0000FFFF - bl SND_SetTrackAllocatableChannel -_020C0AC0: - mov r0, r5 - bl FUN_020C0968 - bl SND_GetCurrentCommandTag - str r0, [r5, #0x30] - mov r0, #0x1 - strb r0, [r5, #0x2f] - strb r0, [r5, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0AE4: .word 0x0000FFFF - - arm_func_start thunk_FUN_020c077c -thunk_FUN_020c077c: ; 0x020C0AE8 - ldr ip, _020C0AF0 ; =FUN_020C077C - bx r12 - .balign 4 -_020C0AF0: .word FUN_020C077C - - arm_func_start FUN_020C0AF4 -FUN_020C0AF4: ; 0x020C0AF4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020C0B9C ; =UNK_021D2254 - mov r3, #0x24 - mov r4, r0 - ldr r5, [r4, #0x0] - mla r6, r1, r3, r12 - mov r7, r2 - cmp r5, #0x0 - beq _020C0B20 - bl FUN_020C0F68 -_020C0B20: - ldrh r1, [r6, #0x8] - ldr r0, [r6, #0x18] - cmp r1, r0 - blo _020C0B64 - mov r0, r6 - mov r1, #0x0 - bl FUN_020ADA98 - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldrb r1, [r0, #0x3d] - cmp r7, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r7,pc} - bl FUN_020C087C -_020C0B64: - mov r0, r7 - bl FUN_020C0808 - movs r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r0, r6 - mov r1, r5 - bl FUN_020C0910 - str r4, [r5, #0x0] - mov r0, r5 - str r5, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C0B9C: .word UNK_021D2254 - - arm_func_start FUN_020C0BA0 -FUN_020C0BA0: ; 0x020C0BA0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - bl SND_GetPlayerStatus - str r0, [sp, #0x0] - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r10, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - mov r0, #0x8000 - rsb r0, r0, #0x0 - ldr r4, _020C0D18 ; =UNK_02103BAC - str r0, [sp, #0x4] - mov r5, #0x1 - mov r11, #0x0 -_020C0BE0: - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, r10 - bl FUN_020ADA98 - ldrb r1, [r10, #0x2d] - mov r9, r0 - cmp r1, #0x0 - bne _020C0C0C - ldr r0, [r10, #0x30] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - strneb r5, [r10, #0x2d] -_020C0C0C: - ldrb r0, [r10, #0x2d] - cmp r0, #0x0 - beq _020C0C38 - ldrb r0, [r10, #0x3c] - mov r1, r5, lsl r0 - ldr r0, [sp, #0x0] - ands r0, r0, r1 - bne _020C0C38 - mov r0, r10 - bl FUN_020C077C - b _020C0D00 -_020C0C38: - add r0, r10, #0x1c - bl FUN_020C3DF4 - ldr r0, [r10, #0x4] - ldrb r2, [r10, #0x41] - ldrb r1, [r10, #0x40] - ldrb r0, [r0, #0x20] - mov r3, r2, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - add r0, r10, #0x1c - ldrsh r8, [r4, r3] - ldrsh r7, [r4, r2] - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r2, r0, lsl #0x1 - add r1, r7, r8 - mov r0, #0x8000 - ldrsh r2, [r4, r2] - add r1, r6, r1 - rsb r0, r0, #0x0 - add r6, r2, r1 - cmp r6, r0 - ldrlt r6, [sp, #0x4] - blt _020C0CA8 - ldr r0, _020C0D1C ; =0x00007FFF - cmp r6, r0 - movgt r6, r0 -_020C0CA8: - ldrsh r0, [r10, #0x3e] - cmp r6, r0 - beq _020C0CC4 - ldrb r0, [r10, #0x3c] - mov r1, r6 - bl SND_SetPlayerVolume - strh r6, [r10, #0x3e] -_020C0CC4: - ldrb r0, [r10, #0x2c] - cmp r0, #0x2 - bne _020C0CE8 - add r0, r10, #0x1c - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C0CE8 - mov r0, r10 - bl FUN_020C087C -_020C0CE8: - ldrb r0, [r10, #0x2f] - cmp r0, #0x0 - beq _020C0D00 - ldrb r0, [r10, #0x3c] - bl SND_StartPreparedSeq - strb r11, [r10, #0x2f] -_020C0D00: - mov r10, r9 - cmp r9, #0x0 - bne _020C0BE0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C0D14: .word UNK_021D1E08 -_020C0D18: .word UNK_02103BAC -_020C0D1C: .word 0x00007FFF - - arm_func_start FUN_020C0D20 -FUN_020C0D20: ; 0x020C0D20 - stmdb sp!, {r4-r10,lr} - ldr r0, _020C0DC4 ; =UNK_021D1E08 - mov r1, #0x14 - bl FUN_020ADC74 - ldr r0, _020C0DC8 ; =UNK_021D1DFC - mov r1, #0x14 - bl FUN_020ADC74 - ldr r6, _020C0DCC ; =UNK_021D1E14 - mov r7, #0x0 - ldr r4, _020C0DC8 ; =UNK_021D1DFC - mov r5, r7 -_020C0D4C: - strb r5, [r6, #0x2c] - mov r0, r4 - mov r1, r6 - strb r7, [r6, #0x3c] - bl FUN_020ADBE8 - add r7, r7, #0x1 - cmp r7, #0x10 - add r6, r6, #0x44 - blt _020C0D4C - ldr sl, _020C0DD0 ; =UNK_021D2254 - mov r9, #0x0 - mov r7, r9 - mov r4, r9 - mov r8, #0xc - mov r6, #0x7f - mov r5, #0x1 -_020C0D8C: - mov r0, r10 - mov r1, r8 - bl FUN_020ADC74 - mov r1, r7 - add r0, r10, #0xc - bl FUN_020ADC74 - strb r6, [r10, #0x20] - str r5, [r10, #0x18] - add r9, r9, #0x1 - str r4, [r10, #0x1c] - cmp r9, #0x20 - add r10, r10, #0x24 - blt _020C0D8C - ldmia sp!, {r4-r10,pc} - .balign 4 -_020C0DC4: .word UNK_021D1E08 -_020C0DC8: .word UNK_021D1DFC -_020C0DCC: .word UNK_021D1E14 -_020C0DD0: .word UNK_021D2254 - - arm_func_start FUN_020C0DD4 -FUN_020C0DD4: ; 0x020C0DD4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x2d] - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x3c] - bl SND_GetPlayerTickCounter - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0E14 -FUN_020C0E14: ; 0x020C0E14 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - mvneq r0, #0x0 - bxeq lr - ldrh r0, [r1, #0x34] - cmp r0, #0x1 - mvnne r0, #0x0 - ldreqh r0, [r1, #0x38] - bx lr - - arm_func_start FUN_020C0E38 -FUN_020C0E38: ; 0x020C0E38 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - bxeq lr - mov r3, #0x2 - strh r3, [r12, #0x34] - ldr r3, [r0, #0x0] - strh r1, [r3, #0x38] - ldr r0, [r0, #0x0] - strh r2, [r0, #0x3a] - bx lr - - arm_func_start FUN_020C0E60 -FUN_020C0E60: ; 0x020C0E60 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - movne r2, #0x1 - strneh r2, [r3, #0x34] - ldrne r0, [r0, #0x0] - strneh r1, [r0, #0x38] - bx lr - - arm_func_start FUN_020C0E7C -FUN_020C0E7C: ; 0x020C0E7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EA4 -FUN_020C0EA4: ; 0x020C0EA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPitch - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0ECC -FUN_020C0ECC: ; 0x020C0ECC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetPlayerChannelPriority - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EF4 -FUN_020C0EF4: ; 0x020C0EF4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r3, #0x2c] - cmp r0, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r0, r3, #0x1c - mov r1, r1, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0F30 -FUN_020C0F30: ; 0x020C0F30 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x40] - bx lr - - arm_func_start FUN_020C0F40 -FUN_020C0F40: ; 0x020C0F40 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x41] - bx lr - - arm_func_start FUN_020C0F50 -FUN_020C0F50: ; 0x020C0F50 - mov r1, #0x24 - mul r1, r0, r1 - ldr r0, _020C0F64 ; =UNK_021D225C - ldrh r0, [r0, r1] - bx lr - .balign 4 -_020C0F64: .word UNK_021D225C - - arm_func_start FUN_020C0F68 -FUN_020C0F68: ; 0x020C0F68 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F80 -FUN_020C0F80: ; 0x020C0F80 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F8C -FUN_020C0F8C: ; 0x020C0F8C - ldr ip, _020C0F98 ; =FUN_020C0A04 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C0F98: .word FUN_020C0A04 - - arm_func_start FUN_020C0F9C -FUN_020C0F9C: ; 0x020C0F9C - stmdb sp!, {r4-r6,lr} - ldr r4, _020C0FD8 ; =UNK_021D1E14 - mov r6, r0 - mov r5, #0x0 -_020C0FAC: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C0FC4 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C0FC4: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FAC - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0FD8: .word UNK_021D1E14 - - arm_func_start FUN_020C0FDC -FUN_020C0FDC: ; 0x020C0FDC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C103C ; =UNK_021D1E14 - mov r7, r0 - mov r6, r1 - mov r5, #0x0 -_020C0FF4: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C1024 - ldrh r0, [r4, #0x34] - cmp r0, #0x1 - bne _020C1024 - ldrh r0, [r4, #0x38] - cmp r0, r7 - bne _020C1024 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C1024: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C103C: .word UNK_021D1E14 - - arm_func_start FUN_020C1040 -FUN_020C1040: ; 0x020C1040 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r3, _020C109C ; =UNK_021D2254 - mov r2, #0x24 - mla r4, r0, r2, r3 - ldr r5, _020C10A0 ; =UNK_021D1E14 - mov r7, r1 - mov r6, #0x0 -_020C1060: - ldrb r0, [r5, #0x2c] - cmp r0, #0x0 - beq _020C1084 - ldr r0, [r5, #0x4] - cmp r0, r4 - bne _020C1084 - mov r0, r5 - mov r1, r7 - bl FUN_020C0A40 -_020C1084: - add r6, r6, #0x1 - cmp r6, #0x10 - add r5, r5, #0x44 - blt _020C1060 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C109C: .word UNK_021D2254 -_020C10A0: .word UNK_021D1E14 - - arm_func_start FUN_020C10A4 -FUN_020C10A4: ; 0x020C10A4 - ldr ip, _020C10B0 ; =FUN_020C0A40 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C10B0: .word FUN_020C0A40 - - arm_func_start FUN_020C10B4 -FUN_020C10B4: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r2 - mov r6, r0 - mov r0, r1 - mov r3, #0x0 - ldr r2, _020C1140 ; =FUN_020C072C - add r1, r5, #0x14 - str r3, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r2, #0x0 - str r2, [r4, #0xc] - str r6, [r4, #0x10] - mov r1, r5 - add r0, r4, #0x14 - str r2, [r4, #0x8] - bl FUN_020C2A94 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020C1144 ; =UNK_021D2254 - mov r1, #0x24 - mla r2, r6, r1, r2 - str r0, [r4, #0x8] - mov r1, r4 - add r0, r2, #0xc - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C1140: .word FUN_020C072C -_020C1144: .word UNK_021D2254 - - arm_func_start FUN_020C1148 -FUN_020C1148: ; 0x020C1148 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C115C ; =UNK_021D2270 - str r1, [r0, r2] - bx lr - .balign 4 -_020C115C: .word UNK_021D2270 - - arm_func_start FUN_020C1160 -FUN_020C1160: ; 0x020C1160 - mov r2, #0x24 - mul r2, r0, r2 - mov r0, r1, lsl #0x10 - ldr r1, _020C117C ; =UNK_021D226C - mov r0, r0, lsr #0x10 - str r0, [r1, r2] - bx lr - .balign 4 -_020C117C: .word UNK_021D226C - - arm_func_start FUN_020C1180 -FUN_020C1180: ; 0x020C1180 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C1194 ; =UNK_021D2274 - strb r1, [r0, r2] - bx lr - .balign 4 -_020C1194: .word UNK_021D2274 - - arm_func_start FUN_020C1198 -FUN_020C1198: ; 0x020C1198 - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmeqia sp!, {r4-r6,pc} - ldr r0, [r4, #0x38] - cmp r0, #0x0 - beq _020C11E8 - mov r5, #0x1 -_020C11C0: - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r4 - mov r1, r5 - bl FUN_020C1254 - mov r0, r6 - bl OS_RestoreInterrupts - ldr r0, [r4, #0x38] - cmp r0, #0x0 - bne _020C11C0 -_020C11E8: - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C1208 -FUN_020C1208: ; 0x020C1208 - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1e - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - ldr r2, [r0, #0x40] - mov r3, #0x1 - mov r1, #0x0 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x44] - mov r3, r1 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C1254 -FUN_020C1254: ; 0x020C1254 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - ldr r0, [r5, #0x28] - ldr r1, [r5, #0x2c] - bl _u32_div_f - ldr r1, [r5, #0x48] - ldr r2, [r5, #0x38] - mov r3, r0 - mul lr, r3, r2 - cmp r1, #0x0 - mov r12, #0x0 - ble _020C12B8 - ldr r2, _020C1300 ; =UNK_021D2724 - ldr r0, _020C1304 ; =UNK_021D26E4 -_020C1294: - add r1, r5, r12 - ldrb r1, [r1, #0x4c] - ldr r1, [r2, r1, lsl #0x3] - add r1, r1, lr - str r1, [r0, r12, lsl #0x2] - ldr r1, [r5, #0x48] - add r12, r12, #0x1 - cmp r12, r1 - blt _020C1294 -_020C12B8: - ldr r0, [r5, #0x20] - ldr r2, _020C1304 ; =UNK_021D26E4 - str r0, [sp, #0x0] - ldr r12, [r5, #0x34] - mov r0, r4 - str r12, [sp, #0x4] - ldr r4, [r5, #0x30] - blx r4 - ldr r0, [r5, #0x38] - add r0, r0, #0x1 - str r0, [r5, #0x38] - ldr r1, [r5, #0x38] - ldr r0, [r5, #0x2c] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r5, #0x38] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1300: .word UNK_021D2724 -_020C1304: .word UNK_021D26E4 - - arm_func_start FUN_020C1308 -FUN_020C1308: ; 0x020C1308 - ldr ip, _020C1314 ; =FUN_020C1254 - mov r1, #0x1 - bx r12 - .balign 4 -_020C1314: .word FUN_020C1254 - - arm_func_start FUN_020C1318 -FUN_020C1318: ; 0x020C1318 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - bl FUN_020C029C - ldr r0, _020C1344 ; =UNK_021D26D8 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C1344: .word UNK_021D26D8 - - arm_func_start FUN_020C1348 -FUN_020C1348: ; 0x020C1348 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C13B4 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StopTimer - add r0, r4, #0x8 - bl PM_DeletePreSleepCallback - add r0, r4, #0x14 - bl PM_DeletePostSleepCallback - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc -_020C13B4: - mov r0, r4 - bl FUN_020C1318 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C13C4 -FUN_020C13C4: ; 0x020C13C4 - stmdb sp!, {r4-r8,lr} - mov r7, r0 - str r1, [r7, #0x3c] - ldr r0, [r7, #0x48] - mov r5, #0x0 - cmp r0, #0x0 - ldmleia sp!, {r4-r8,pc} - ldr r4, _020C142C ; =UNK_021D2724 - mov r8, #0x1 -_020C13E8: - add r0, r7, r5 - ldrb r6, [r0, #0x4c] - ldr r1, [r7, #0x3c] - add r0, r4, r6, lsl #0x3 - ldr r0, [r0, #0x4] - add r0, r1, r0 - bl SND_CalcChannelVolume - mov r2, r0 - mov r0, r8, lsl r6 - and r1, r2, #0xff - mov r2, r2, asr #0x8 - bl SND_SetChannelVolume - ldr r0, [r7, #0x48] - add r5, r5, #0x1 - cmp r5, r0 - blt _020C13E8 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020C142C: .word UNK_021D2724 - - arm_func_start FUN_020C1430 -FUN_020C1430: ; 0x020C1430 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - bl FUN_020C1348 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C1458 -FUN_020C1458: ; 0x020C1458 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmneia sp!, {r4,pc} - add r0, r4, #0x8 - bl PM_PrependPreSleepCallback - add r0, r4, #0x14 - bl PM_AppendPostSleepCallback - ldr r0, [r4, #0x24] - orr r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C14AC -FUN_020C14AC: ; 0x020C14AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - mov r10, r0 - ldr r4, [r10, #0x24] - mov r9, r1 - mov r1, r4, lsl #0x1f - movs r1, r1, asr #0x1f - ldr r1, [sp, #0x4c] - str r2, [sp, #0x18] - mov r4, r3 - str r1, [sp, #0x4c] - beq _020C14E0 - bl FUN_020C1430 -_020C14E0: - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x48] - mov r0, r0, lsl #0x5 - mul r1, r2, r0 - mov r0, r4 - bl _u32_div_f - ldr r1, [sp, #0x4c] - ldr r2, [sp, #0x48] - mul r1, r0, r1 - mov r0, r1, lsl #0x5 - str r0, [r10, #0x28] - ldr r0, [r10, #0x28] - cmp r9, #0x1 - moveq r0, r0, lsr #0x1 - mul r0, r2, r0 - ldr r1, [sp, #0x4c] - bl _u32_div_f - str r0, [sp, #0x1c] - bl FUN_020C02BC - str r0, [r10, #0x40] - ldr r0, [r10, #0x40] - cmp r0, #0x0 - addlt sp, sp, #0x24 - movlt r0, #0x0 - ldmltia sp!, {r4-r11,pc} - ldr r0, [r10, #0x48] - mov r8, #0x0 - cmp r0, #0x0 - ble _020C15D4 - ldr r0, [sp, #0x48] - mov r7, r0, lsl #0x5 - ldr r6, _020C1668 ; =UNK_021D2724 - mov r5, r8 - mov r4, #0x7f - mov r11, #0x40 - mov r0, #0x1 - str r0, [sp, #0x20] -_020C1574: - ldr r2, [r10, #0x28] - ldr r1, [sp, #0x18] - add r0, r10, r8 - mla r1, r2, r8, r1 - ldrb r0, [r0, #0x4c] - ldr r3, [sp, #0x20] - str r1, [r6, r0, lsl #0x3] - add r1, r6, r0, lsl #0x3 - str r5, [r1, #0x4] - str r5, [sp, #0x0] - ldr r2, [r10, #0x28] - mov r1, r9 - mov r2, r2, lsr #0x2 - str r2, [sp, #0x4] - str r4, [sp, #0x8] - str r5, [sp, #0xc] - str r7, [sp, #0x10] - str r11, [sp, #0x14] - ldr r2, [r6, r0, lsl #0x3] - bl SND_SetupChannelPcm - ldr r0, [r10, #0x48] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C1574 -_020C15D4: - str r10, [sp, #0x0] - ldr r1, [sp, #0x1c] - ldr r0, [r10, #0x40] - ldr r3, _020C166C ; =FUN_020C1308 - mov r2, r1 - bl SND_SetupAlarm - ldr r0, _020C1670 ; =UNK_021D26D8 - mov r1, r10 - bl FUN_020ADBE8 - ldr r0, [sp, #0x4c] - str r9, [r10, #0x20] - str r0, [r10, #0x2c] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x54] - str r1, [r10, #0x30] - str r0, [r10, #0x34] - mov r0, #0x0 - str r0, [r10, #0x38] - str r0, [r10, #0x3c] - ldr r0, [r10, #0x24] - bic r0, r0, #0x1 - orr r0, r0, #0x1 - str r0, [r10, #0x24] - bl OS_DisableInterrupts - mov r4, r0 - mov r2, #0x1 - mov r0, r10 - mov r1, #0x0 - str r2, [r10, #0x2c] - bl FUN_020C1254 - ldr r1, [sp, #0x4c] - mov r0, r4 - str r1, [r10, #0x2c] - bl OS_RestoreInterrupts - mov r0, #0x1 - add sp, sp, #0x24 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1668: .word UNK_021D2724 -_020C166C: .word FUN_020C1308 -_020C1670: .word UNK_021D26D8 - - arm_func_start FUN_020C1674 -FUN_020C1674: ; 0x020C1674 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x44] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C0340 - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C169C -FUN_020C169C: ; 0x020C169C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, #0x0 - mov r6, r0 - mov r12, r4 - cmp r5, #0x0 - ble _020C16DC - mov r1, #0x1 -_020C16BC: - ldrb r3, [r2, r12] - add r0, r6, r12 - strb r3, [r0, #0x4c] - ldrb r0, [r2, r12] - add r12, r12, #0x1 - cmp r12, r5 - orr r4, r4, r1, lsl r0 - blt _020C16BC -_020C16DC: - mov r0, r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - strne r5, [r6, #0x48] - strne r4, [r6, #0x44] - movne r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C16FC -FUN_020C16FC: ; 0x020C16FC - stmdb sp!, {r4,lr} - ldr r1, _020C176C ; =UNK_021D26D4 - mov r4, r0 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - bne _020C172C - ldr r0, _020C1770 ; =UNK_021D26D8 - mov r1, #0x0 - bl FUN_020ADC74 - ldr r0, _020C176C ; =UNK_021D26D4 - mov r1, #0x1 - str r1, [r0, #0x0] -_020C172C: - ldr r1, _020C1774 ; =FUN_020C1208 - ldr r0, _020C1778 ; =FUN_020C1198 - str r1, [r4, #0x8] - str r4, [r4, #0xc] - str r0, [r4, #0x14] - str r4, [r4, #0x18] - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C176C: .word UNK_021D26D4 -_020C1770: .word UNK_021D26D8 -_020C1774: .word FUN_020C1208 -_020C1778: .word FUN_020C1198 - - arm_func_start FUN_020C177C -FUN_020C177C: ; 0x020C177C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r4, [r7, #0x18] - ldr r0, [r7, #0x1c] - ldr r1, _020C186C ; =UNK_021D27A4 - mul r0, r4, r0 - ldr r3, [r7, #0xc] - ldr r2, [r7, #0x10] - ldr r1, [r1, #0x0] - add r6, r3, r0 - cmp r1, #0x0 - add r5, r2, r0 - beq _020C180C - ldr r2, _020C1870 ; =UNK_021D27A8 - mov r1, #0x14 - ldr r2, [r2, #0x0] - ldr r3, _020C1874 ; =UNK_021D2820 - mul r1, r2, r1 - str r7, [r3, r1] - add r1, r3, r1 - str r4, [r1, #0x4] - str r0, [r1, #0x8] - str r6, [r1, #0xc] - ldr r0, _020C1878 ; =UNK_021D27AC - mov r2, #0x0 - str r5, [r1, #0x10] - bl OS_SendMessage - ldr r0, _020C1870 ; =UNK_021D27A8 - ldr r1, [r0, #0x0] - add r1, r1, #0x1 - str r1, [r0, #0x0] - cmp r1, #0x8 - movge r1, #0x0 - strge r1, [r0, #0x0] - b _020C1844 -_020C180C: - mov r0, r6 - mov r1, r4 - bl DC_InvalidateRange - mov r0, r5 - mov r1, r4 - bl DC_InvalidateRange - ldr r1, [r7, #0x38] - mov r0, r6 - str r1, [sp, #0x0] - ldr r3, [r7, #0x8] - ldr r6, [r7, #0x34] - mov r1, r5 - mov r2, r4 - blx r6 -_020C1844: - ldr r0, [r7, #0x1c] - add r0, r0, #0x1 - str r0, [r7, #0x1c] - ldr r1, [r7, #0x1c] - ldr r0, [r7, #0x30] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r7, #0x1c] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C186C: .word UNK_021D27A4 -_020C1870: .word UNK_021D27A8 -_020C1874: .word UNK_021D2820 -_020C1878: .word UNK_021D27AC - - arm_func_start FUN_020C187C -FUN_020C187C: ; 0x020C187C - stmdb sp!, {r4,lr} - ldr r4, _020C18F4 ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x0 - str r0, [r4, #0x1c] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x14] - bl MIi_CpuClear32 - ldr r1, [r4, #0x10] - ldr r2, [r4, #0x14] - mov r0, #0x0 - bl MIi_CpuClear32 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - movlt r2, #0x0 - bl SND_StartTimer - ldmia sp!, {r4,pc} - .balign 4 -_020C18F4: .word UNK_021D27CC - - arm_func_start FUN_020C18F8 -FUN_020C18F8: - stmdb sp!, {r4,lr} - ldr r3, _020C194C ; =UNK_021D27CC - ldr r0, [r3, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [r3, #0x2c] - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r3, #0x24] - ldr r1, [r3, #0x28] - movlt r2, #0x0 - mov r3, #0x0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - .balign 4 -_020C194C: .word UNK_021D27CC - - arm_func_start FUN_020C1950 -FUN_020C1950: ; 0x020C1950 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C1A3C ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r7, #0x1 - movlt r7, #0x0 - cmp r7, #0x0 - movne r0, #0x1 - movne r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - moveq r2, #0x0 - bl SND_StopTimer - cmp r7, #0x0 - beq _020C19DC - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc - ldr r6, _020C1A40 ; =UNK_021D27AC - mov r5, #0x0 -_020C19C4: - mov r0, r6 - mov r1, r5 - mov r2, r5 - bl OS_ReceiveMessage - cmp r0, #0x0 - bne _020C19C4 -_020C19DC: - ldr r0, [r4, #0x28] - cmp r0, #0x0 - beq _020C19EC - bl FUN_020C0300 -_020C19EC: - ldr r0, [r4, #0x20] - cmp r0, #0x0 - beq _020C19FC - bl FUN_020C0340 -_020C19FC: - cmp r7, #0x0 - beq _020C1A0C - ldr r0, [r4, #0x2c] - bl FUN_020C029C -_020C1A0C: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _020C1A2C - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_SetOutputSelector -_020C1A2C: - mov r0, #0x0 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1A3C: .word UNK_021D27CC -_020C1A40: .word UNK_021D27AC - - arm_func_start FUN_020C1A44 -FUN_020C1A44: ; 0x020C1A44 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r10, r3 - str r0, [sp, #0x18] - str r2, [sp, #0x20] - mov r2, #0x0 - str r1, [sp, #0x1c] - mov r0, r1 - mov r1, r10 - ldr r9, [sp, #0x6c] - ldr r8, [sp, #0x74] - str r2, [sp, #0x2c] - mvn r6, #0x0 - ldr r4, _020C1D90 ; =UNK_021D27CC - bl DC_FlushRange - ldr r0, [sp, #0x20] - mov r1, r10 - bl DC_FlushRange - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x70] - cmp r0, #0x1 - moveq r7, #0x1 - ldr r0, _020C1D94 ; =0x00FFB0FF - movne r7, #0x0 - bl _s32_div_f - ldr r1, [sp, #0x84] - mov r11, r0 - cmp r1, #0x0 - beq _020C1B00 - add r1, r11, #0x10 - bic r11, r1, #0x1f - mov r2, r11, asr #0x5 - mov r0, r10 - cmp r7, #0x0 - ldr r1, [sp, #0x80] - moveq r0, r10, lsr #0x1 - str r2, [sp, #0x34] - bl _u32_div_f - ldr r1, [sp, #0x34] - mov r5, #0x20 - mul r0, r1, r0 - str r0, [sp, #0x30] - cmp r7, #0x0 - ldr r0, [sp, #0x34] - moveq r5, r5, lsr #0x1 - mul r0, r5, r0 - mov r5, r0 -_020C1B00: - cmp r7, #0x0 - movne r0, #0x0 - strne r0, [sp, #0x28] - moveq r0, #0x1 - streq r0, [sp, #0x28] - cmp r7, #0x0 - movne r0, #0x1 - strne r0, [sp, #0x24] - moveq r0, #0x0 - streq r0, [sp, #0x24] - ldr r0, [sp, #0x18] - cmp r0, #0x2 - movne r0, #0xa - strne r0, [sp, #0x2c] - ldr r0, [sp, #0x84] - cmp r0, #0x0 - beq _020C1B58 - bl FUN_020C02BC - movs r6, r0 - addmi sp, sp, #0x3c - movmi r0, #0x0 - ldmmiia sp!, {r4-r11,pc} -_020C1B58: - mov r0, #0x3 - bl FUN_020C031C - cmp r0, #0x0 - bne _020C1B84 - cmp r6, #0x0 - blt _020C1B78 - mov r0, r6 - bl FUN_020C029C -_020C1B78: - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1B84: - mov r0, #0xa - bl FUN_020C0370 - cmp r0, #0x0 - bne _020C1BB8 - cmp r6, #0x0 - blt _020C1BA4 - mov r0, r6 - bl FUN_020C029C -_020C1BA4: - mov r0, #0x3 - bl FUN_020C0300 - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1BB8: - mov r0, #0x0 - mov r7, r10, lsr #0x2 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x78] - str r11, [sp, #0x10] - str r1, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x1c] - moveq r3, #0x2 - mov r0, #0x1 - bl SND_SetupChannelPcm - ldr r1, [sp, #0x64] - str r9, [sp, #0x0] - str r1, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x1c] - mov r0, #0x0 - mov r3, r7 - bl SND_SetupCapture - mov r0, #0x0 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r2, [sp, #0x7c] - str r11, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x20] - moveq r3, #0x2 - mov r0, #0x3 - bl SND_SetupChannelPcm - ldr r2, [sp, #0x64] - str r9, [sp, #0x0] - str r2, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x20] - mov r3, r7 - mov r0, #0x1 - bl SND_SetupCapture - cmp r6, #0x0 - blt _020C1CA8 - ldr r2, [sp, #0x30] - ldr r3, _020C1D98 ; =FUN_020C177C - mov r1, r2 - mov r0, r6 - add r1, r1, r5 - str r4, [sp, #0x0] - bl SND_SetupAlarm -_020C1CA8: - ldr r0, [sp, #0x18] - cmp r0, #0x1 - bne _020C1CC8 - mov r0, #0x1 - mov r2, r0 - mov r3, r0 - mov r1, #0x2 - bl SND_SetOutputSelector -_020C1CC8: - cmp r6, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r6 - ldr r0, [sp, #0x2c] - movlt r2, #0x0 - mov r1, #0x3 - mov r3, #0x0 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r4, #0x0] - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x80] - str r0, [r4, #0x4] - mov r0, #0xa - str r0, [r4, #0x20] - ldr r0, [sp, #0x2c] - str r0, [r4, #0x24] - mov r0, #0x3 - str r0, [r4, #0x28] - ldr r0, [sp, #0x60] - str r6, [r4, #0x2c] - str r0, [r4, #0x8] - ldr r0, [sp, #0x1c] - str r0, [r4, #0xc] - ldr r0, [sp, #0x20] - str r0, [r4, #0x10] - mov r0, r10 - str r10, [r4, #0x14] - bl _u32_div_f - str r0, [r4, #0x18] - mov r1, #0x0 - str r1, [r4, #0x1c] - ldr r0, [sp, #0x80] - ldr r1, [sp, #0x84] - str r0, [r4, #0x30] - ldr r0, [sp, #0x88] - str r1, [r4, #0x34] - str r0, [r4, #0x38] - add r0, r4, #0x3c - str r8, [r4, #0x50] - bl FUN_020C3E6C - add r0, r4, #0x3c - mov r1, r8, lsl #0x8 - mov r2, #0x1 - bl FUN_020C3E40 - mov r0, #0x0 - str r0, [r4, #0x4c] - mov r0, #0x1 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1D90: .word UNK_021D27CC -_020C1D94: .word 0x00FFB0FF -_020C1D98: .word FUN_020C177C - - arm_func_start FUN_020C1D9C -FUN_020C1D9C: ; 0x020C1D9C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020C1E34 ; =UNK_021D27CC - ldr r0, [r5, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r4, r5, #0x3c - mov r0, r4 - bl FUN_020C3DF4 - ldr r0, [r5, #0x4c] - cmp r0, #0x0 - beq _020C1DFC - mov r0, r4 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C1DFC - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020C1DFC: - mov r0, r4 - bl FUN_020C3E0C - ldr r1, [r5, #0x50] - mov r4, r0, asr #0x8 - cmp r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x24] - mov r1, r4 - mov r2, #0x0 - bl SND_SetChannelVolume - str r4, [r5, #0x50] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1E34: .word UNK_021D27CC - - arm_func_start FUN_020C1E38 -FUN_020C1E38: ; 0x020C1E38 - ldr r1, _020C1E50 ; =UNK_021D27A4 - mov r2, #0x0 - ldr r0, _020C1E54 ; =UNK_021D27CC - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bx lr - .balign 4 -_020C1E50: .word UNK_021D27A4 -_020C1E54: .word UNK_021D27CC - - arm_func_start FUN_020C1E58 -FUN_020C1E58: ; 0x020C1E58 - ldr r0, _020C1E64 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C1E64: .word UNK_021D27CC - - arm_func_start FUN_020C1E68 -FUN_020C1E68: ; 0x020C1E68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C1EA0 ; =UNK_021D27CC - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x4] - cmp r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1EA0: .word UNK_021D27CC - - arm_func_start FUN_020C1EA4 -FUN_020C1EA4: ; 0x020C1EA4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1E68 - ldr r0, _020C1F50 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r2, #0x0 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - str r6, [sp, #0x10] - mov r1, #0x7f - str r1, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, [sp, #0x40] - str r1, [sp, #0x1c] - ldr r1, [sp, #0x44] - str r2, [sp, #0x20] - ldr r12, [sp, #0x48] - str r1, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r12, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1F50: .word UNK_021D27CC - - arm_func_start FUN_020C1F54 -FUN_020C1F54: ; 0x020C1F54 - stmdb sp!, {r4,lr} - ldr r4, _020C1FA0 ; =UNK_021D27CC - mov r2, r0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x4] - cmp r0, #0x0 - ldmneia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C1F88 - bl FUN_020C1950 - ldmia sp!, {r4,pc} -_020C1F88: - add r0, r4, #0x3c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, #0x1 - str r0, [r4, #0x4c] - ldmia sp!, {r4,pc} - .balign 4 -_020C1FA0: .word UNK_021D27CC - - arm_func_start FUN_020C1FA4 -FUN_020C1FA4: ; 0x020C1FA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, _020C1FEC ; =UNK_021D27CC - mov r12, r0 - ldr r0, [r3, #0x0] - mov r2, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r3, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - add r0, r3, #0x3c - mov r1, r12, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1FEC: .word UNK_021D27CC - - arm_func_start FUN_020C1FF0 -FUN_020C1FF0: ; 0x020C1FF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r0, #0x0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1F54 - ldr r0, _020C2098 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - ldr r1, [sp, #0x40] - str r6, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x18] - mov r1, #0x7f - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r0, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2098: .word UNK_021D27CC - - arm_func_start FUN_020C209C -FUN_020C209C: ; 0x020C209C - mov r0, #0x0 - str r0, [r2, #0x88] - bx lr - - arm_func_start FUN_020C20A8 -FUN_020C20A8: ; 0x020C20A8 - mov r0, #0x0 - str r0, [r2, #0x84] - bx lr - - arm_func_start FUN_020C20B4 -FUN_020C20B4: ; 0x020C20B4 - mov r0, #0x0 - str r0, [r2, #0x8c] - bx lr - - arm_func_start FUN_020C20C0 -FUN_020C20C0: ; 0x020C20C0 - ldr r2, _020C20D8 ; =UNK_021D28C0 - ldr r2, [r2, #0x0] - ldr r2, [r2, #0x84] - add r0, r2, r0, lsl #0x4 - str r1, [r0, #0x14] - bx lr - .balign 4 -_020C20D8: .word UNK_021D28C0 - - arm_func_start FUN_020C20DC -FUN_020C20DC: - ldr r1, _020C2100 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x14] - bx lr - .balign 4 -_020C2100: .word UNK_021D28C0 - - arm_func_start FUN_020C2104 -FUN_020C2104: - stmdb sp!, {r4-r6,lr} - ldr r4, _020C2178 ; =UNK_021D28C0 - mov r5, r2 - ldr r4, [r4, #0x0] - mov r6, r1 - ldr r2, [r4, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - mvncs r0, #0x0 - ldmcsia sp!, {r4-r6,pc} - add r1, r2, #0xc - add r1, r1, r0, lsl #0x4 - ldr r0, [r1, #0x4] - ldr r1, [r1, #0x0] - sub r0, r0, r3 - cmp r5, r0 - movhi r5, r0 - add r0, r4, #0x34 - add r1, r1, r3 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - mov r2, r5 - add r0, r4, #0x34 - bl FS_ReadFile - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2178: .word UNK_021D28C0 - - arm_func_start FUN_020C217C -FUN_020C217C: ; 0x020C217C - ldr r1, _020C21A0 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x10] - bx lr - .balign 4 -_020C21A0: .word UNK_021D28C0 - - arm_func_start FUN_020C21A4 -FUN_020C21A4: ; 0x020C21A4 - ldr r1, _020C2204 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x1c] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2204: .word UNK_021D28C0 - - arm_func_start FUN_020C2208 -FUN_020C2208: ; 0x020C2208 - ldr r1, _020C2268 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x18] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2268: .word UNK_021D28C0 - - arm_func_start FUN_020C226C -FUN_020C226C: - ldr r1, _020C22CC ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x14] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C22CC: .word UNK_021D28C0 - - arm_func_start FUN_020C22D0 -FUN_020C22D0: ; 0x020C22D0 - ldr r1, _020C2330 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x10] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2330: .word UNK_021D28C0 - - arm_func_start FUN_020C2334 -FUN_020C2334: - ldr r1, _020C2394 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0xc] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2394: .word UNK_021D28C0 - - arm_func_start FUN_020C2398 -FUN_020C2398: - ldr r1, _020C23F8 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x8] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C23F8: .word UNK_021D28C0 - - arm_func_start FUN_020C23FC -FUN_020C23FC: ; 0x020C23FC - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C2398 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r0, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C241C -FUN_020C241C: ; 0x020C241C - ldr r0, _020C2428 ; =UNK_021D28C0 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C2428: .word UNK_021D28C0 - - arm_func_start FUN_020C242C -FUN_020C242C: ; 0x020C242C - ldr r1, _020C2440 ; =UNK_021D28C0 - ldr r2, [r1, #0x0] - str r0, [r1, #0x0] - mov r0, r2 - bx lr - .balign 4 -_020C2440: .word UNK_021D28C0 - - arm_func_start FUN_020C2444 -FUN_020C2444: ; 0x020C2444 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - mov r1, r5 - mov r2, #0x30 - bl MIi_CpuCopy32 - ldr r0, [r5, #0x18] - mov r12, #0x0 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x8c] - ldr r0, [r5, #0x20] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x84] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x88] - ldr r2, [r5, #0x84] - ldr r0, [r2, #0x8] - cmp r0, #0x0 - bls _020C24F0 - mov r3, r12 - mov r1, r12 -_020C24BC: - add r2, r2, #0xc - ldr r0, [r2, r3] - add r2, r2, r3 - cmp r0, #0x0 - moveq r0, r1 - addne r0, r4, r0 - str r0, [r2, #0x8] - ldr r2, [r5, #0x84] - add r12, r12, #0x1 - ldr r0, [r2, #0x8] - add r3, r3, #0x10 - cmp r12, r0 - blo _020C24BC -_020C24F0: - mov r1, #0x0 - ldr r0, _020C2508 ; =UNK_021D28C0 - str r1, [r5, #0x30] - str r5, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C2508: .word UNK_021D28C0 - - arm_func_start FUN_020C250C -FUN_020C250C: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - mov r5, r1 - mov r1, #0x0 - mov r4, r2 - mov r2, r1 - add r0, r6, #0x34 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - add r0, r6, #0x34 - mov r2, #0x30 - bl FS_ReadFile - cmp r0, #0x30 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r5, #0x0 - beq _020C26E0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x1c] - ldr r2, _020C26EC ; =FUN_020C20B4 - mov r0, r5 - mov r3, r6 - bl FUN_020C2958 - str r0, [r6, #0x8c] - ldr r0, [r6, #0x8c] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x18] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8c] - ldr r2, [r6, #0x1c] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x1c] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x24] - ldr r2, _020C26F0 ; =FUN_020C20A8 - mov r0, r5 - mov r3, r6 - bl FUN_020C2958 - str r0, [r6, #0x84] - ldr r0, [r6, #0x84] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x20] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x84] - ldr r2, [r6, #0x24] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x24] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r4, #0x0 - beq _020C26E0 - ldr r1, [r6, #0x14] - cmp r1, #0x0 - beq _020C26E0 - mov r4, #0x0 - ldr r2, _020C26F4 ; =FUN_020C209C - mov r0, r5 - mov r3, r6 - str r4, [sp, #0x0] - bl FUN_020C2958 - str r0, [r6, #0x88] - ldr r0, [r6, #0x88] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x10] - add r0, r6, #0x34 - mov r2, r4 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x88] - ldr r2, [r6, #0x14] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x14] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, r4 - ldmneia sp!, {r4-r6,pc} -_020C26E0: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C26EC: .word FUN_020C20B4 -_020C26F0: .word FUN_020C20A8 -_020C26F4: .word FUN_020C209C - - arm_func_start FUN_020C26F8 -FUN_020C26F8: ; 0x020C26F8 - ; r0: &sSoundDataBuffer - ; r1: char* filename - ; r2: (&sSoundDataBuffer)->unk_0090 - ; r3: 0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r12, #0x0 - str r12, [r6, #0x8c] - str r12, [r6, #0x84] - add r0, r6, #0x7c - mov r5, r2 - mov r4, r3 - str r12, [r6, #0x88] - bl FS_ConvertPathToFileID - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r6, #0x34 - bl FS_InitFile - add r1, r6, #0x7c - add r0, r6, #0x34 - ldmia r1, {r1-r2} - bl FS_OpenFileFast - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r3, #0x1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r3, [r6, #0x30] - bl FUN_020C250C - cmp r0, #0x0 - ldrne r0, _020C2770 ; =UNK_021D28C0 - strne r6, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2770: .word UNK_021D28C0 - - arm_func_start FUN_020C2774 -FUN_020C2774: ; 0x020C2774 - stmdb sp!, {r4,lr} - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2794 -FUN_020C2794: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x0] - mov r1, #0x14 - mov r2, #0x4 - bl FUN_020AE638 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - bl FUN_020C2818 - mov r1, r4 - add r0, r5, #0x4 - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C27DC -FUN_020C27DC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x4 - mov r1, #0xc - bl FUN_020ADC74 - mov r0, r5 - str r4, [r5, #0x0] - bl FUN_020C2794 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2818 -FUN_020C2818: ; 0x020C2818 - ldr ip, _020C2824 ; =FUN_020ADC74 - mov r1, #0x0 - bx r12 - .balign 4 -_020C2824: .word FUN_020ADC74 - - arm_func_start FUN_020C2828 -FUN_020C2828: ; 0x020C2828 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r7, #0x0 - movs r9, r1 - mov r10, r0 - mov r6, r7 - bne _020C2850 - bl FUN_020C29C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020C2850: - ldrh r0, [r10, #0xc] - cmp r9, r0 - bge _020C28D8 - mov r11, r7 - add r5, r10, #0x4 - mov r4, #0x1 -_020C2868: - mov r0, r5 - mov r1, r11 - bl FUN_020ADA84 - mov r1, r7 - mov r8, r0 - bl FUN_020ADA84 - movs r7, r0 - beq _020C28C0 -_020C2888: - ldr r12, [r7, #0xc] - cmp r12, #0x0 - beq _020C28AC - ldr r1, [r7, #0x8] - ldr r2, [r7, #0x10] - ldr r3, [r7, #0x14] - add r0, r7, #0x20 - blx r12 - mov r6, r4 -_020C28AC: - mov r0, r8 - mov r1, r7 - bl FUN_020ADA84 - movs r7, r0 - bne _020C2888 -_020C28C0: - mov r0, r5 - mov r1, r8 - bl FUN_020ADAB0 - ldrh r0, [r10, #0xc] - cmp r9, r0 - blt _020C2868 -_020C28D8: - ldr r0, [r10, #0x0] - mov r1, r9 - bl FUN_020AE554 - cmp r6, #0x0 - beq _020C28F0 - bl FUN_020C2774 -_020C28F0: - ldrh r1, [r10, #0xc] - ldr r0, [r10, #0x0] - bl FUN_020AE5B0 - mov r0, r10 - bl FUN_020C2794 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C290C -FUN_020C290C: ; 0x020C290C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrh r1, [r4, #0xc] - ldr r0, [r4, #0x0] - bl FUN_020AE5B0 - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020C2794 - cmp r0, #0x0 - ldrneh r0, [r4, #0xc] - subne r0, r0, #0x1 - ldmneia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_020AE554 - mvn r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2958 -FUN_020C2958: ; 0x020C2958 - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r8, r0 - add r0, r7, #0x1f - bic r1, r0, #0x1f - mov r6, r2 - ldr r0, [r8, #0x0] - add r1, r1, #0x20 - mov r2, #0x20 - mov r5, r3 - bl FUN_020AE638 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - add r0, r8, #0x4 - mov r1, #0x0 - bl FUN_020ADA84 - str r7, [r4, #0x8] - str r6, [r4, #0xc] - ldr r2, [sp, #0x18] - str r5, [r4, #0x10] - mov r1, r4 - str r2, [r4, #0x14] - bl FUN_020ADBE8 - add r0, r4, #0x20 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C29C0 -FUN_020C29C0: - stmdb sp!, {r4-r10,lr} - mov r8, r0 - mov r5, #0x0 - mov r1, r5 - add r0, r8, #0x4 - bl FUN_020ADA84 - movs r7, r0 - beq _020C2A58 - add r9, r8, #0x4 - mov r10, #0x1 - mov r4, r5 -_020C29EC: - mov r0, r7 - mov r1, r4 - bl FUN_020ADA84 - movs r6, r0 - beq _020C2A38 -_020C2A00: - ldr r12, [r6, #0xc] - cmp r12, #0x0 - beq _020C2A24 - ldr r1, [r6, #0x8] - ldr r2, [r6, #0x10] - ldr r3, [r6, #0x14] - add r0, r6, #0x20 - blx r12 - mov r5, r10 -_020C2A24: - mov r0, r7 - mov r1, r6 - bl FUN_020ADA84 - movs r6, r0 - bne _020C2A00 -_020C2A38: - mov r0, r9 - mov r1, r7 - bl FUN_020ADAB0 - mov r0, r9 - mov r1, r4 - bl FUN_020ADA84 - movs r7, r0 - bne _020C29EC -_020C2A58: - ldr r0, [r8, #0x0] - mov r1, #0x3 - bl FUN_020AE600 - cmp r5, #0x0 - beq _020C2A70 - bl FUN_020C2774 -_020C2A70: - mov r0, r8 - bl FUN_020C2794 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2A7C -FUN_020C2A7C: ; 0x020C2A7C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020C29C0 - ldr r0, [r4, #0x0] - bl thunk_FUN_020adc8c_2 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2A94 -FUN_020C2A94: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - add r2, r0, #0x3 - add r0, r0, r1 - bic r5, r2, #0x3 - cmp r5, r0 - addhi sp, sp, #0x4 - movhi r0, #0x0 - ldmhiia sp!, {r4-r5,pc} - sub r1, r0, r5 - cmp r1, #0x10 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - add r0, r5, #0x10 - sub r1, r1, #0x10 - mov r2, #0x0 - bl FUN_020AE684 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - mov r1, r4 - bl FUN_020C27DC - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, r5 - ldmneia sp!, {r4-r5,pc} - mov r0, r4 - bl thunk_FUN_020adc8c_2 - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2B1C -FUN_020C2B1C: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x20 - mov r8, r0 - add r0, sp, #0x8 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x40] - bl SND_GetFirstInstDataPos - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x0] - str r0, [sp, #0x4] - cmp r7, #0x0 - add r2, sp, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - add r1, sp, #0x10 - mov r0, r7 - bl SND_GetNextInstData - cmp r0, #0x0 - beq _020C2BD4 - add r10, sp, #0x10 - add r9, sp, #0x0 -_020C2B80: - ldrb r0, [sp, #0x10] - cmp r0, #0x1 - bne _020C2BBC - ldrh r0, [sp, #0x14] - cmp r6, r0 - bne _020C2BBC - ldrh r1, [sp, #0x12] - mov r0, r8 - mov r2, r5 - mov r3, r4 - bl FUN_020C2BE0 - cmp r0, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} -_020C2BBC: - mov r0, r7 - mov r1, r10 - mov r2, r9 - bl SND_GetNextInstData - cmp r0, #0x0 - bne _020C2B80 -_020C2BD4: - mov r0, #0x1 - add sp, sp, #0x20 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2BE0 -FUN_020C2BE0: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SND_GetWaveDataAddress - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r9,pc} - mov r0, r7 - bl SND_GetWaveDataCount - ldr r1, [r7, #0x38] - sub r0, r0, #0x1 - add r1, r1, r6 - add r1, r7, r1, lsl #0x2 - cmp r6, r0 - ldrcc r0, [r1, #0x40] - ldr r8, [r1, #0x3c] - ldrcs r0, [r7, #0x8] - cmp r4, #0x0 - sub r9, r0, r8 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - ldr r2, _020C2CBC ; =FUN_020C2CC0 - mov r0, r4 - mov r3, r7 - add r1, r9, #0x20 - str r6, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r5 - mov r1, r4 - mov r2, r9 - mov r3, r8 - bl FUN_020C2104 - cmp r9, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r4 - mov r1, r9 - bl DC_StoreRange - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl SND_SetWaveDataAddress - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2CBC: .word FUN_020C2CC0 - - arm_func_start FUN_020C2CC0 -FUN_020C2CC0: ; 0x020C2CC0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r2 - mov r7, r0 - mov r4, r3 - mov r6, r1 - mov r0, r5 - mov r1, r4 - bl SND_GetWaveDataAddress - cmp r7, r0 - bne _020C2CFC - mov r0, r5 - mov r1, r4 - mov r2, #0x0 - bl SND_SetWaveDataAddress -_020C2CFC: - mov r0, r7 - add r1, r7, r6 - bl SND_InvalidateWaveData - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2D10 -FUN_020C2D10: ; 0x020C2D10 - stmdb sp!, {r4,lr} - mov r1, r2 - mov r4, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r4 - bl SND_DestroyWaveArc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2D30 -FUN_020C2D30: ; 0x020C2D30 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateWaveData - mov r0, r5 - bl SND_DestroyWaveArc - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2D68 -FUN_020C2D68: ; 0x020C2D68 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateBankData - mov r0, r5 - bl SND_DestroyBank - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DA0 -FUN_020C2DA0: ; 0x020C2DA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateSeqData - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DD0 -FUN_020C2DD0: ; 0x020C2DD0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - movs r5, r1 - mov r7, r0 - mov r6, r2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r5 - bl FUN_020C242C - mov r5, r0 - mov r0, r6 - bl FUN_020C20DC - cmp r7, r0 - bne _020C2E1C - mov r0, r6 - mov r1, #0x0 - bl FUN_020C20C0 -_020C2E1C: - mov r0, r5 - bl FUN_020C242C - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2E34 -FUN_020C2E34: ; 0x020C2E34 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, r1 - mov r7, r2 - bl FUN_020C20DC - movs r6, r0 - bne _020C2F40 - ldr r1, _020C2F4C ; =UNK_021D28C4 - mov r0, r9 - mov r2, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - cmp r0, #0x3c - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r0, _020C2F4C ; =UNK_021D28C4 - cmp r8, #0x0 - ldr r0, [r0, #0x38] - addeq sp, sp, #0x4 - mov r4, r0, lsl #0x2 - mov r0, r4, lsl #0x1 - add r5, r0, #0x3c - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - cmp r7, #0x0 - moveq r3, #0x0 - beq _020C2EB0 - bl FUN_020C241C - mov r3, r0 -_020C2EB0: - ldr r2, _020C2F50 ; =FUN_020C2D10 - mov r0, r8 - add r1, r5, #0x20 - str r9, [sp, #0x0] - bl FUN_020C2958 - movs r6, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r9 - mov r1, r6 - add r2, r4, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - add r1, r4, #0x3c - cmp r0, r1 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r1, [r6, #0x38] - add r0, r6, #0x3c - mov r2, r4 - add r1, r0, r1, lsl #0x2 - bl MI_CpuCopy8 - mov r2, r4 - add r0, r6, #0x3c - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - bl DC_StoreRange - cmp r7, #0x0 - beq _020C2F40 - mov r0, r9 - mov r1, r6 - bl FUN_020C20C0 -_020C2F40: - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2F4C: .word UNK_021D28C4 -_020C2F50: .word FUN_020C2D10 - - arm_func_start FUN_020C2F54 -FUN_020C2F54: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C2FBC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C2F88 - bl FUN_020C241C - mov r2, r0 -_020C2F88: - ldr r1, _020C2FC8 ; =FUN_020C2D30 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C2FBC - cmp r4, #0x0 - beq _020C2FBC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C2FBC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2FC8: .word FUN_020C2D30 - - arm_func_start FUN_020C2FCC -FUN_020C2FCC: ; 0x020C2FCC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3034 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3000 - bl FUN_020C241C - mov r2, r0 -_020C3000: - ldr r1, _020C3040 ; =FUN_020C2D68 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3034 - cmp r4, #0x0 - beq _020C3034 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3034: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3040: .word FUN_020C2D68 - - arm_func_start FUN_020C3044 -FUN_020C3044: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C30AC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3078 - bl FUN_020C241C - mov r2, r0 -_020C3078: - ldr r1, _020C30B8 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C30AC - cmp r4, #0x0 - beq _020C30AC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C30AC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C30B8: .word FUN_020C2DA0 - - arm_func_start FUN_020C30BC -FUN_020C30BC: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3124 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C30F0 - bl FUN_020C241C - mov r2, r0 -_020C30F0: - ldr r1, _020C3130 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3124 - cmp r4, #0x0 - beq _020C3124 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3124: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3130: .word FUN_020C2DA0 - - arm_func_start FUN_020C3134 -FUN_020C3134: ; 0x020C3134 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, r3 - bl FUN_020C217C - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldr r0, [sp, #0x20] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r2, r7 - mov r3, r6 - add r1, r5, #0x20 - str r4, [sp, #0x0] - bl FUN_020C2958 - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r4 - mov r2, r5 - mov r3, #0x0 - bl FUN_020C2104 - cmp r5, r0 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r8,pc} - mov r0, r4 - mov r1, r5 - bl DC_StoreRange - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C31D4 -FUN_020C31D4: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C226C - cmp r0, #0x0 - moveq r0, #0x5 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x4 - beq _020C324C - ldrb r1, [r0, #0x3] - ands r1, r1, #0x1 - beq _020C3224 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2E34 - b _020C323C -_020C3224: - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2F54 -_020C323C: - cmp r0, #0x0 - bne _020C325C - mov r0, #0x9 - ldmia sp!, {r4-r6,pc} -_020C324C: - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x8 - bl FUN_020C20DC -_020C325C: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3270 -FUN_020C3270: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r1 - mov r9, r2 - mov r11, r3 - bl FUN_020C22D0 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x4 - ldmeqia sp!, {r4-r11,pc} - ands r0, r10, #0x2 - beq _020C32C4 - ldr r0, [r8, #0x0] - mov r1, r9 - mov r2, r11 - bl FUN_020C2FCC - movs r7, r0 - bne _020C32D0 - add sp, sp, #0xc - mov r0, #0x8 - ldmia sp!, {r4-r11,pc} -_020C32C4: - ldr r0, [r8, #0x0] - bl FUN_020C20DC - mov r7, r0 -_020C32D0: - and r5, r10, #0x4 - mov r6, #0x0 -_020C32D8: - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - ldr r1, _020C33B4 ; =0x0000FFFF - cmp r0, r1 - beq _020C3390 - bl FUN_020C226C - movs r4, r0 - addeq sp, sp, #0xc - moveq r0, #0x5 - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x4 - str r0, [sp, #0x0] - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - mov r1, r10 - mov r2, r9 - mov r3, r11 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} - ldrb r0, [r4, #0x3] - ands r0, r0, #0x1 - beq _020C3370 - cmp r5, #0x0 - beq _020C3370 - str r9, [sp, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - mov r3, r1, lsl #0x8 - mov r1, r7 - mov r2, r6 - mov r3, r3, lsr #0x8 - bl FUN_020C2B1C - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x9 - ldmeqia sp!, {r4-r11,pc} -_020C3370: - cmp r7, #0x0 - beq _020C3390 - ldr r2, [sp, #0x4] - cmp r2, #0x0 - beq _020C3390 - mov r0, r7 - mov r1, r6 - bl SND_AssignWaveArc -_020C3390: - add r6, r6, #0x1 - cmp r6, #0x4 - blt _020C32D8 - ldr r0, [sp, #0x30] - cmp r0, #0x0 - strne r7, [r0, #0x0] - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C33B4: .word 0x0000FFFF - - arm_func_start FUN_020C33B8 -FUN_020C33B8: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2334 - cmp r0, #0x0 - moveq r0, #0x3 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x8 - beq _020C3400 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r2, r4 - bl FUN_020C3044 - cmp r0, #0x0 - bne _020C3408 - mov r0, #0x7 - ldmia sp!, {r4-r6,pc} -_020C3400: - ldr r0, [r0, #0x0] - bl FUN_020C20DC -_020C3408: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C341C -FUN_020C341C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020C2398 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x2 - ldmeqia sp!, {r4-r7,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x4] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl FUN_020C3270 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,pc} - ands r0, r7, #0x1 - beq _020C3498 - ldr r0, [r4, #0x0] - mov r1, r6 - mov r2, r5 - bl FUN_020C30BC - cmp r0, #0x0 - bne _020C34A0 - add sp, sp, #0x4 - mov r0, #0x6 - ldmia sp!, {r4-r7,pc} -_020C3498: - ldr r0, [r4, #0x0] - bl FUN_020C20DC -_020C34A0: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C34B8 -FUN_020C34B8: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r9, r1 - bl FUN_020C21A4 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ldr r0, [r8, #0x0] - mov r7, #0x0 - cmp r0, #0x0 - bls _020C35D4 - add r6, r8, #0x4 - str r7, [sp, #0x4] - mov r11, r7 - mov r10, r7 - mov r5, r7 - mov r4, #0x1 -_020C3500: - ldrb r0, [r6, #0x0] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020C35C0 -_020C3510: - b _020C3520 -_020C3514: - b _020C3570 -_020C3518: - b _020C3598 -_020C351C: - b _020C3548 -_020C3520: - str r5, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C341C - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3548: - str r10, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C33B8 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3570: - str r11, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3598: - ldr r0, [sp, #0x4] - mov r2, r9 - str r0, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r3, r4 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} -_020C35C0: - ldr r0, [r8, #0x0] - add r7, r7, #0x1 - cmp r7, r0 - add r6, r6, #0x8 - blo _020C3500 -_020C35D4: - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C35E0 -FUN_020C35E0: ; 0x020C35E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C360C -FUN_020C360C: ; 0x020C360C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C31D4 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3640 -FUN_020C3640: ; 0x020C3640 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3674 -FUN_020C3674: ; 0x020C3674 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36A8 -FUN_020C36A8: ; 0x020C36A8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C34B8 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36C8 -FUN_020C36C8: ; 0x020C36C8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r2 - mov r2, r3 - ldr r6, [sp, #0x20] - mov r4, r0 - mov r8, r1 - bl FUN_020C0AF4 - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r5 - bl FUN_020C09B0 - add r12, sp, #0x4 - mov r2, r0 - mov r0, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C373C - mov r0, r5 - bl thunk_FUN_020c077c - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C373C: - ldr r12, [sp, #0x24] - ldr r2, [r6, #0x0] - ldr r1, [r12, #0x18] - ldr r3, [sp, #0x4] - mov r0, r5 - add r1, r12, r1 - bl FUN_020C0A90 - ldrb r1, [r6, #0x6] - mov r0, r4 - bl FUN_020C0F30 - ldrb r1, [r6, #0x7] - mov r0, r4 - bl FUN_020C0ECC - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r0, r4 - bl FUN_020C0E38 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C378C -FUN_020C378C: ; 0x020C378C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r8, r2 - mov r2, r3 - ldr r5, [sp, #0x28] - mov r6, r0 - mov r7, r1 - bl FUN_020C0AF4 - movs r4, r0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r7 - mov r1, r4 - bl FUN_020C09B0 - mov r7, r0 - add r12, sp, #0x8 - mov r0, r8 - mov r2, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C3804 - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C3804: - ldr r0, [sp, #0x2c] - add r12, sp, #0x4 - mov r2, r7 - mov r1, #0x1 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - beq _020C383C - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C383C: - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r2, #0x18] - mov r0, r4 - add r1, r2, r1 - mov r2, #0x0 - bl FUN_020C0A90 - ldrb r1, [r5, #0x6] - mov r0, r6 - bl FUN_020C0F30 - ldrb r1, [r5, #0x7] - mov r0, r6 - bl FUN_020C0ECC - ldr r1, [sp, #0x2c] - mov r0, r6 - bl FUN_020C0E60 - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3888 -FUN_020C3888: ; 0x020C3888 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl FUN_020C2334 - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldr r0, [r0, #0x0] - bl FUN_020C20DC - movs r4, r0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r1, r5 - bl FUN_020C3D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r7 - bl FUN_020C36C8 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3910 -FUN_020C3910: ; 0x020C3910 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r7, r0 - ldr r0, [sp, #0x20] - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - cmp r4, #0x0 - ldrltb r4, [r0, #0x8] - cmp r5, #0x0 - ldrlth r5, [r0, #0x4] - cmp r6, #0x0 - ldrltb r6, [r0, #0x9] - ldr r12, [sp, #0x20] - mov r2, r5 - str r0, [sp, #0x0] - mov r0, r7 - mov r1, r6 - mov r3, r4 - str r12, [sp, #0x4] - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3980 -FUN_020C3980: ; 0x020C3980 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r5 - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C39CC -FUN_020C39CC: ; 0x020C39CC - stmdb sp!, {r4-r8,lr} - mov r6, r0 - bl FUN_020C241C - mov r5, #0x0 - mov r7, r5 -_020C39E0: - mov r0, r5 - bl FUN_020C2208 - movs r4, r0 - beq _020C3A58 - ldrb r1, [r4, #0x0] - mov r0, r5 - bl FUN_020C1160 - ldrh r1, [r4, #0x2] - mov r0, r5 - bl FUN_020C1148 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _020C3A58 - cmp r6, #0x0 - beq _020C3A58 - ldrb r0, [r4, #0x0] - mov r8, r7 - cmp r0, #0x0 - ble _020C3A58 -_020C3A2C: - ldr r2, [r4, #0x4] - mov r0, r5 - mov r1, r6 - bl FUN_020C10B4 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldrb r0, [r4, #0x0] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C3A2C -_020C3A58: - add r5, r5, #0x1 - cmp r5, #0x20 - blt _020C39E0 - mov r0, #0x1 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3A6C -FUN_020C3A6C: ; 0x020C3A6C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _020C3A9C ; =UNK_021D2904 - mov r1, r5 - bl FUN_020ADBE8 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C3A9C: .word UNK_021D2904 - - arm_func_start FUN_020C3AA0 -FUN_020C3AA0: ; 0x020C3AA0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r8 - mov r1, #0x0 - bl FUN_020ADA98 - movs r5, r0 - beq _020C3B04 -_020C3AC8: - mov r0, r8 - mov r1, r5 - bl FUN_020ADA98 - ldr r1, [r5, #0x8] - mov r4, r0 - cmp r1, r7 - bne _020C3AF8 - mov r0, r8 - mov r1, r5 - bl FUN_020ADAB0 - mov r0, r5 - bl FUN_020C3A6C -_020C3AF8: - mov r5, r4 - cmp r4, #0x0 - bne _020C3AC8 -_020C3B04: - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3B10 -FUN_020C3B10: ; 0x020C3B10 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - sub r1, r1, #0x1 - str r1, [r0, #0x120] - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1674 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3B4C -FUN_020C3B4C: ; 0x020C3B4C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x110] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - bl FUN_020C3B10 - ldr r1, [r4, #0x164] - mov r0, r4 - blx r1 - ldr r0, _020C3BA8 ; =UNK_021D2DF0 - mov r1, r4 - bl FUN_020C3AA0 - ldr r0, _020C3BAC ; =UNK_021D2900 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020C3B9C - mov r1, r4 - add r0, r0, #0x4e0 - bl FUN_020C3AA0 -_020C3B9C: - mov r0, r4 - bl FUN_020C3C4C - ldmia sp!, {r4,pc} - .balign 4 -_020C3BA8: .word UNK_021D2DF0 -_020C3BAC: .word UNK_021D2900 - - arm_func_start FUN_020C3BB0 -FUN_020C3BB0: ; 0x020C3BB0 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_LockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _020C3BDC - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_LockMutex -_020C3BDC: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3BF4 - mov r0, r4 - bl FUN_020C1430 -_020C3BF4: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3C10 - ldr r1, [r4, #0x16c] - mov r0, r4 - blx r1 -_020C3C10: - mov r0, r4 - bl FUN_020C3B4C - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_UnlockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_UnlockMutex - ldmia sp!, {r4,pc} - .balign 4 -_020C3C40: .word UNK_021D2DD8 -_020C3C44: .word UNK_021D2900 -_020C3C48: .word 0x000004C8 - - arm_func_start FUN_020C3C4C -FUN_020C3C4C: ; 0x020C3C4C - ldr r2, [r0, #0x14c] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x14c] - ldr r1, [r0, #0x110] - bic r1, r1, #0x1 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x4 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x2 - str r1, [r0, #0x110] - bx lr - - arm_func_start FUN_020C3C88 -FUN_020C3C88: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020C3D94 ; =UNK_021D2DFC - mov r7, #0x0 - ldr r4, _020C3D98 ; =UNK_02103BAC -_020C3C9C: - ldr r1, [r5, #0x110] - mov r0, r1, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3D7C - ldr r0, [r5, #0x114] - cmp r0, #0x0 - bne _020C3CC4 - mov r0, r5 - bl FUN_020C3BB0 - b _020C3D7C -_020C3CC4: - mov r0, r1, lsl #0x1d - movs r0, r0, asr #0x1f - beq _020C3CFC - ldr r0, [r5, #0x118] - cmp r0, #0x0 - beq _020C3CFC - mov r0, r5 - bl FUN_020C1458 - ldr r0, [r5, #0x110] - orr r0, r0, #0x2 - str r0, [r5, #0x110] - ldr r0, [r5, #0x110] - bic r0, r0, #0x4 - str r0, [r5, #0x110] -_020C3CFC: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DF4 - ldr r1, [r5, #0x154] - add r0, r5, #0xe8 - mov r1, r1, lsl #0x1 - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r0, r0, lsl #0x1 - ldrsh r1, [r4, r0] - ldr r0, [r5, #0x158] - add r6, r1, r6 - cmp r6, r0 - beq _020C3D54 - mov r0, r5 - mov r1, r6 - bl FUN_020C13C4 - str r6, [r5, #0x158] -_020C3D54: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1c - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C3D7C - mov r0, r5 - bl FUN_020C3BB0 -_020C3D7C: - add r7, r7, #0x1 - cmp r7, #0x4 - add r5, r5, #0x170 - blt _020C3C9C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3D94: .word UNK_021D2DFC -_020C3D98: .word UNK_02103BAC - - arm_func_start FUN_020C3D9C -FUN_020C3D9C: - cmp r1, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r2, [r0, #0x1c] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - mov r2, #0xc - mul r2, r1, r2 - add r3, r0, #0x20 - ldr r1, [r3, r2] - mvn r0, #0x0 - cmp r1, r0 - add r0, r3, r2 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020C3DDC -FUN_020C3DDC: - ldr r1, [r0, #0x8] - ldr r0, [r0, #0xc] - cmp r1, r0 - movge r0, #0x1 - movlt r0, #0x0 - bx lr - - arm_func_start FUN_020C3DF4 -FUN_020C3DF4: ; 0x020C3DF4 - ldr r2, [r0, #0x8] - ldr r1, [r0, #0xc] - cmp r2, r1 - addlt r1, r2, #0x1 - strlt r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020C3E0C -FUN_020C3E0C: - stmdb sp!, {r4,lr} - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x8] - cmp r2, r1 - ldrge r0, [r0, #0x4] - ldmgeia sp!, {r4,pc} - ldr r4, [r0, #0x0] - ldr r0, [r0, #0x4] - sub r0, r0, r4 - mul r0, r2, r0 - bl _s32_div_f - add r0, r4, r0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C3E40 -FUN_020C3E40: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_020C3E0C - str r0, [r6, #0x0] - str r5, [r6, #0x4] - str r4, [r6, #0xc] - mov r0, #0x0 - str r0, [r6, #0x8] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3E6C -FUN_020C3E6C: ; 0x020C3E6C - mov r2, #0x0 - str r2, [r0, #0x4] - ldr r1, [r0, #0x4] - str r1, [r0, #0x0] - str r2, [r0, #0xc] - ldr r1, [r0, #0xc] - str r1, [r0, #0x8] - bx lr +; ??? diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s new file mode 100644 index 00000000..db2eaa4b --- /dev/null +++ b/arm9/asm/unk_020ADA84.s @@ -0,0 +1,28069 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern UNK_02103BAC + .extern GXi_DmaId + + .section .rodata + + .global UNK_020FF7CC +UNK_020FF7CC: ; 0x020FF7CC + .word FUN_020AE894 + .word FUN_020AE884 + + .global UNK_020FF7D4 +UNK_020FF7D4: ; 0x020FF7D4 + .word FUN_020AF2B4 + .word FUN_020AF288 + .word FUN_020AF25C + .word FUN_020AF230 + .word GX_LoadBG0Char_2 + .word GX_LoadBG1Char_2 + .word GX_LoadBG2Char_2 + .word GX_LoadBG3Char_2 + .word GX_LoadBG0Scr_2 + .word GX_LoadBG1Scr_2 + .word GX_LoadBG2Scr_2 + .word GX_LoadBG3Scr_2 + .word GX_LoadBG2Scr_3 + .word GX_LoadBG3Scr_3 + .word GX_LoadOBJPltt_2 + .word GX_LoadBGPltt_2 + .word FUN_020AF174 + .word FUN_020AF148 + .word GX_LoadOAM_2 + .word GX_LoadOBJ_2 + .word GXS_LoadBG0Char_2 + .word GXS_LoadBG1Char_2 + .word GXS_LoadBG2Char_2 + .word GXS_LoadBG3Char_2 + .word GXS_LoadBG0Scr_2 + .word GXS_LoadBG1Scr_2 + .word GXS_LoadBG2Scr_2 + .word GXS_LoadBG3Scr_2 + .word GXS_LoadBG2Scr_3 + .word GXS_LoadBG3Scr_3 + .word GXS_LoadOBJPltt_2 + .word GXS_LoadBGPltt_2 + .word FUN_020AF074 + .word FUN_020AF048 + .word GXS_LoadOAM_2 + .word GXS_LoadOBJ_2 + + .global UNK_020FF864 +UNK_020FF864: ; 0x020FF864 + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_020FF894 +UNK_020FF894: ; 0x020FF894 + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + + .global UNK_020FF8AC +UNK_020FF8AC: ; 0x020FF8AC + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + + .global UNK_020FF8C4 +UNK_020FF8C4: ; 0x020FF8C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + + .global UNK_020FF8D0 +UNK_020FF8D0: ; 0x020FF8D0 + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + + .global UNK_020FF8D8 +UNK_020FF8D8: ; 0x020FF8D8 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + + .global UNK_020FF8F8 +UNK_020FF8F8: ; 0x020FF8F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_020FF928 +UNK_020FF928: ; 0x020FF928 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global UNK_020FF958 +UNK_020FF958: ; 0x020FF958 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_020FF970 +UNK_020FF970: ; 0x020FF970 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 + .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 + + .global UNK_020FF990 +UNK_020FF990: ; 0x020FF990 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 + + .global UNK_020FF9D0 +UNK_020FF9D0: ; 0x020FF9D0 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F + .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F + + .global UNK_020FF9F0 +UNK_020FF9F0: ; 0x020FF9F0 + .byte 0x04 + + .global UNK_020FF9F1 +UNK_020FF9F1: ; 0x020FF9F1 + .byte 0x05 + + .global UNK_020FF9F2 +UNK_020FF9F2: ; 0x020FF9F2 + .byte 0x07 + + .global UNK_020FF9F3 +UNK_020FF9F3: ; 0x020FF9F3 + .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 + .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 + .byte 0x04 + + .global UNK_020FFA14 +UNK_020FFA14: ; 0x020FFA14 + .byte 0x04 + + .global UNK_020FFA15 +UNK_020FFA15: ; 0x020FFA15 + .byte 0x05 + + .global UNK_020FFA16 +UNK_020FFA16: ; 0x020FFA16 + .byte 0x07 + + .global UNK_020FFA17 +UNK_020FFA17: ; 0x020FFA17 + .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 + .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 + .byte 0x04 + + .global UNK_020FFA38 +UNK_020FFA38: ; 0x020FFA38 + .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, + .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, + .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, + .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, + .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, + .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, + .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, + .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, + .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, + .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, + .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, + .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, + .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, + .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, + .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, + .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, + .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, + .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, + .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, + .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, + .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, + .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, + .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, + .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, + .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, + .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, + .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, + .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, + .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, + .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, + .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, + .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, + .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, + .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, + .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, + .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, + .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, + .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, + .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, + .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, + .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, + .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, + .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, + .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, + .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, + .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, + .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, + .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, + .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, + .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, + .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, + .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, + .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, + .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, + .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, + .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, + .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, + .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, + .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, + .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, + .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, + .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, + .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, + .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, + .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, + .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, + .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, + .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, + .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, + .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, + .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, + .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, + .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, + .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, + .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, + .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, + .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, + .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, + .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, + .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, + .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, + .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, + .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, + .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, + .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, + .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, + .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, + .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, + .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, + .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, + .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, + .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, + .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, + .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, + .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, + .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, + .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, + .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, + .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, + .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, + .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, + .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, + .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, + .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, + .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, + .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, + .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, + .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, + .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, + .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, + .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, + .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, + .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, + .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, + .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, + .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, + .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, + .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, + .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, + .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, + .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, + .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, + .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, + .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, + .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, + .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, + .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, + .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, + .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, + .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, + .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, + .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, + .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, + .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, + .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, + .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, + .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, + .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, + .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, + .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, + .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, + .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, + .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, + .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, + .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, + .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, + .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, + .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, + .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, + .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, + .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, + .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, + .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, + .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, + .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, + .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, + .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, + .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, + .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, + .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, + .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, + .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, + .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, + .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, + .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, + .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, + .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, + .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, + .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, + .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, + .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, + .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, + .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, + .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, + .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, + .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, + .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, + .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, + .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, + .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, + .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, + .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, + .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, + .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, + .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, + .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, + .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, + .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, + .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, + .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, + .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, + .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, + .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, + .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, + .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, + .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, + .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, + .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, + .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, + .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, + .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, + .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, + .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, + .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, + .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, + .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, + .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, + .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, + .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, + .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, + .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, + .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, + .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, + .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, + .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, + .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, + .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, + .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, + .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, + .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, + .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, + .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, + .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, + .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, + .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, + .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, + .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, + .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, + .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, + .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, + .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, + .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, + .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, + .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, + .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, + .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, + .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, + .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, + .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, + .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, + .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, + .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, + .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, + .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, + .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, + .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, + .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, + .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, + .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, + .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, + .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, + .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, + .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, + .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, + .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, + .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, + .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, + .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, + .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, + .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, + .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, + .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, + .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, + .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, + .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, + .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, + .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, + .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, + .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, + .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, + .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, + .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, + .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, + .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, + .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, + .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, + .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, + .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, + .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, + .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, + .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, + .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, + .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, + .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, + .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, + .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, + .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, + .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, + .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, + .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, + .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, + .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, + .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, + .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, + .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, + .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, + .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, + .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, + .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, + .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, + .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, + .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, + .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, + .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, + .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, + .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, + .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, + .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, + .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, + .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, + .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, + .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, + .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, + .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, + .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, + .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, + .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, + .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, + .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, + .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, + .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, + .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, + .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, + .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, + .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, + .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, + .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, + .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, + .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, + .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, + .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, + .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, + .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, + .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, + .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, + .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, + .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, + .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, + .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, + .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, + .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, + .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, + .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, + .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, + .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, + .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, + .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, + .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, + .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, + .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, + .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, + .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, + .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, + .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, + .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, + .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, + .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, + .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, + .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, + .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, + .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, + .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, + .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, + .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, + .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, + .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, + .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, + .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, + .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, + .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, + .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, + .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, + .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, + .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, + .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, + .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, + .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, + .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, + .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, + .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, + .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, + .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, + .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, + .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, + .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, + .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, + .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, + .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, + .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, + .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, + .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, + .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, + .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, + .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, + .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, + .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, + .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, + .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, + .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, + .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, + .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, + .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, + .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, + .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, + .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, + .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, + .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, + .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, + .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, + .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, + .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, + .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, + .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, + .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, + .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, + .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, + .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, + .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, + .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, + .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, + .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, + .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, + .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, + .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, + .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, + .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, + .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, + .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, + .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, + .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, + .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, + .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, + .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, + .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, + .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, + .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, + .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, + .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, + .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, + .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, + .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, + .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, + .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, + .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, + .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, + .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, + .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, + .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, + .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, + .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, + .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, + .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, + .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, + .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, + .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, + .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, + .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, + .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, + .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, + .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, + .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, + .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, + .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, + .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, + .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, + .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, + .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, + .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, + .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, + .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, + .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, + .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, + .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, + .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, + .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, + .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, + .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, + .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, + .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, + .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, + .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, + .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, + .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, + .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, + .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, + .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, + .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, + .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, + .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, + .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, + .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, + .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, + .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, + .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, + .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, + .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, + .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, + .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, + .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, + .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, + .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, + .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, + .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, + .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, + .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, + .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, + .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, + .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, + .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, + .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, + .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, + .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, + .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, + .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, + .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, + .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, + .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, + .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, + .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, + .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, + .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, + .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, + .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, + .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, + .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, + .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, + .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, + .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, + .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, + .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, + .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, + .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, + .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, + .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, + .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, + .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, + .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, + .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, + .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, + .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, + .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, + .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, + .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, + .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, + .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, + .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, + .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, + .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, + .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, + .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, + .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, + .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, + .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, + .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, + .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, + .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, + .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, + .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, + .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, + .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, + .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, + .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, + .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, + .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, + .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, + .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, + .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, + .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, + .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, + .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, + .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, + .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, + .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, + .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, + .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, + .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, + .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, + .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, + .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, + .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, + .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, + .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, + .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, + .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, + .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, + .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, + .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, + .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, + .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, + .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, + .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, + .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, + .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, + .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, + .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, + .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, + .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, + .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, + .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, + .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, + .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, + .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, + .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, + .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, + .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, + .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, + .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, + .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, + .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, + .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, + .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, + .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, + .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, + .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, + .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, + .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, + .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, + .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, + .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, + .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, + .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, + .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, + .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, + .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, + .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, + .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, + .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, + .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, + .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, + .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, + .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, + .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, + .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, + .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, + .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, + .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, + .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, + .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, + .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, + .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, + .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, + .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, + .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, + .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, + .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, + .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, + .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, + .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, + .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, + .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, + .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, + .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, + .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, + .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, + .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, + .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, + .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, + .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, + .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, + .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, + .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, + .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, + .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, + .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, + .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, + .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, + .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, + .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, + .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, + .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, + .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, + .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, + .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, + .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, + .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, + .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, + .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, + .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, + .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, + .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, + .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, + .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, + .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, + .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, + .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, + .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, + .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, + .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, + .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, + .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, + .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, + .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, + .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, + .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, + .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, + .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, + .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, + .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, + .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, + .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, + .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, + .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, + .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, + .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, + .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, + .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, + .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, + .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, + .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, + .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, + .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, + .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, + .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, + .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, + .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, + .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, + .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, + .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, + .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, + .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, + .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, + .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, + .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, + .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, + .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, + .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, + .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, + .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, + .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, + .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, + .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, + .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, + .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, + .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, + .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, + .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, + .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, + .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, + .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, + .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, + .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, + .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, + .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, + .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, + .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, + .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, + .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, + .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, + .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, + .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, + .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, + .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, + .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, + .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, + .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, + .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, + .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, + .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, + .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, + .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, + .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, + .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, + .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, + .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, + .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, + .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, + .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, + .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, + .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, + .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, + .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, + .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, + .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, + .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, + .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, + .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, + .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, + .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, + .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, + .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, + .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, + .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, + .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, + .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, + .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, + .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, + .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, + .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, + .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, + .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, + .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, + .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, + .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, + .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, + .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, + .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, + .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, + .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, + .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, + .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, + .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, + .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, + .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, + .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, + .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, + .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, + .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, + .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, + .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, + .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, + .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, + .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, + .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, + .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, + .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, + .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, + .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, + .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, + .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, + .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, + .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, + .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, + .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, + .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, + .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, + .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, + .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, + .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, + .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, + .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, + .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, + .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, + .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, + .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, + .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, + .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, + .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, + .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, + .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, + .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, + .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, + .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, + .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, + .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, + .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, + .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, + .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, + .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, + .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, + .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, + .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, + .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, + .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, + .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, + .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, + .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, + .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, + .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, + .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, + .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, + .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, + .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, + .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, + .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, + .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, + .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, + .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, + .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, + .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, + .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, + .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, + .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, + .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, + .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, + .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, + .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, + .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, + .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, + .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, + .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, + .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, + .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, + .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, + .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, + .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, + .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, + .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, + .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, + .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, + .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, + .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, + .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, + .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, + .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, + .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, + .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, + .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, + .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, + .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, + .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, + .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, + .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, + .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, + .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, + .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, + .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, + .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, + .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, + .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, + .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, + .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, + .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, + .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, + .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, + .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, + .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, + .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, + .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, + .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, + .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, + .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, + .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, + .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, + .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, + .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, + .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, + .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, + .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, + .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, + .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, + .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, + .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, + .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, + .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, + .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, + .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, + .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, + .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, + .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, + .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, + .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, + .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, + .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, + .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, + .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, + .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, + .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, + .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, + .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, + .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, + .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, + .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, + .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, + .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, + .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, + .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, + .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, + .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, + .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, + .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, + .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, + .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, + .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, + .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, + .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, + .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, + .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, + .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, + .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, + .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, + .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, + .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, + .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, + .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, + .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, + .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, + .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, + .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, + .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, + .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, + .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, + .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, + .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, + .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, + .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, + .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, + .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, + .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, + .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, + .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, + .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, + .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, + .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, + .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, + .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, + .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, + .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, + .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, + .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, + .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, + .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, + .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, + .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, + .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, + .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, + .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, + .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, + .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, + .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, + .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, + .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, + .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, + .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, + .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, + .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, + .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, + .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, + .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, + .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, + .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, + .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, + .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, + .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 + + .section .data + + .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 + + .global UNK_0210655C +UNK_0210655C: ; 0x0210655C + .word FUN_020B1088 + .word FUN_020B1098 + .word 0 + .word 0 + .word 0 + + .global UNK_02106570 +UNK_02106570: ; 0x02106570 + .short -2 + + .balign 4, 0 + .global UNK_02106574 +UNK_02106574: ; 0x02106574 + .word -1 + + .global UNK_02106578 +UNK_02106578: ; 0x02106578 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106590 +UNK_02106590: ; 0x02106590 + .byte 0x00, 0xF0, 0xFF, 0xFF + + .global UNK_02106594 +UNK_02106594: ; 0x02106594 + .byte 0x05, 0x00, 0x00, 0x00 + + .global UNK_02106598 +UNK_02106598: ; 0x02106598 + .word FUN_020BE5A0 + + .global UNK_0210659C +UNK_0210659C: ; 0x0210659C + .word FUN_020BDA70 + + .global UNK_021065A0 +UNK_021065A0: ; 0x021065A0 + .word FUN_020BDF38 + + .global UNK_021065A4 +UNK_021065A4: ; 0x021065A4 + .word FUN_020BE334 + + .global UNK_021065A8 +UNK_021065A8: ; 0x021065A8 + .word FUN_020BDB40 + + .global UNK_021065AC +UNK_021065AC: ; 0x021065AC + .word FUN_020B8640 + + .global UNK_021065B0 +UNK_021065B0: ; 0x021065B0 + .word FUN_020B86B0 + + .global UNK_021065B4 +UNK_021065B4: ; 0x021065B4 + .word FUN_020B8A08 + + .global UNK_021065B8 +UNK_021065B8: ; 0x021065B8 + .byte 0x4D, 0x00, 0x41, 0x4D + + .global UNK_021065BC +UNK_021065BC: ; 0x021065BC + .word FUN_020BDC0C + .byte 0x4D, 0x00, 0x50, 0x54 + .word FUN_020BE4F0 + .byte 0x4D, 0x00, 0x41, 0x54 + .word FUN_020BDF84 + .byte 0x56, 0x00, 0x41, 0x56 + .word FUN_020BE5E0 + .byte 0x4A, 0x00, 0x41, 0x43 + .word FUN_020BDAB4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106608 +UNK_02106608: ; 0x02106608 + .word FUN_020BE668 + .word FUN_020BEE3C + .word FUN_020BF2FC + + .global UNK_02106614 +UNK_02106614: ; 0x02106614 + .word FUN_020BE62C + .word FUN_020BECEC + .word FUN_020BF0D4 + + .global UNK_02106620 +UNK_02106620: ; 0x02106620 + .word FUN_020BE6E4 + .word FUN_020BEF10 + .word FUN_020BF42C + .word FUN_020BFA9C + + .global UNK_02106630 +UNK_02106630: ; 0x02106630 + .byte 0x2A, 0x00, 0x00, 0x00 + + .global UNK_02106634 +UNK_02106634: ; 0x02106634 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106638 +UNK_02106638: ; 0x02106638 + .byte 0x2A, 0x00, 0x00, 0x00 + + .global UNK_0210663C +UNK_0210663C: ; 0x0210663C + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106640 +UNK_02106640: ; 0x02106640 + .word FUN_020BA58C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106650 +UNK_02106650: ; 0x02106650 + .word FUN_020BA438 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106660 +UNK_02106660: ; 0x02106660 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + + .global UNK_021066A0 +UNK_021066A0: ; 0x021066A0 + .byte 0x12, 0x10, 0x17, 0x1B + + .global UNK_021066A4 +UNK_021066A4: ; 0x021066A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_021066AC +UNK_021066AC: ; 0x021066AC + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + .global UNK_021066D0 +UNK_021066D0: ; 0x021066D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021066DC +UNK_021066DC: ; 0x021066DC + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021066E8 +UNK_021066E8: ; 0x021066E8 + .byte 0x12, 0x10, 0x17, 0x1B + + .global UNK_021066EC +UNK_021066EC: ; 0x021066EC + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_021066F4 +UNK_021066F4: ; 0x021066F4 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + .global UNK_02106718 +UNK_02106718: ; 0x02106718 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106724 +UNK_02106724: ; 0x02106724 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_02106730 +UNK_02106730: ; 0x02106730 + .word FUN_020BAC70 + .word FUN_020BAC48 + .word FUN_020BAAC0 + .word FUN_020BA9EC + .word FUN_020BA50C + .word FUN_020BA3C4 + .word FUN_020B9F84 + .word FUN_020B9C54 + .word FUN_020B98C4 + .word FUN_020B9258 + .word FUN_020B9178 + .word FUN_020B9110 + .word FUN_020B8DF0 + .word FUN_020B8A60 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global UNK_021067B0 +UNK_021067B0: ; 0x021067B0 + .word FUN_020BEBD8 + .word FUN_020BEB00 + .word FUN_020BEA84 + .word FUN_020BEA3C + .word FUN_020BE954 + .word FUN_020BE894 + .word FUN_020BE850 + .word FUN_020BE82C + + .global UNK_021067D0 +UNK_021067D0: ; 0x021067D0 + .word FUN_020BF988 + .word FUN_020BF894 + .word FUN_020BF810 + .word FUN_020BF7C8 + .word FUN_020BF6C8 + .word FUN_020BF5E8 + .word FUN_020BF598 + .word FUN_020BF574 + + .global UNK_021067F0 +UNK_021067F0: ; 0x021067F0 + .word FUN_020BFFD4 + .word FUN_020BFEEC + .word FUN_020BFE68 + .word FUN_020BFE0C + .word FUN_020BFD38 + .word FUN_020BFC8C + .word FUN_020BFC4C + .word FUN_020BFC28 + + .section .bss + + .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 + + .global UNK_021CCD6C +UNK_021CCD6C: ; 0x021CCD6C + .space 0x4 + + .global UNK_021CCD70 +UNK_021CCD70: ; 0x021CCD70 + .space 0x4 + + .global UNK_021CCD74 +UNK_021CCD74: ; 0x021CCD74 + .space 0x14 + + .global UNK_021CCD88 +UNK_021CCD88: ; 0x021CCD88 + .space 0x4 + + .global UNK_021CCD8C +UNK_021CCD8C: ; 0x021CCD8C + .space 0x10 + + .global UNK_021CCD9C +UNK_021CCD9C: ; 0x021CCD9C + .space 0x4 + + .global UNK_021CCDA0 +UNK_021CCDA0: ; 0x021CCDA0 + .space 0x100 + + .global UNK_021CCEA0 +UNK_021CCEA0: ; 0x021CCEA0 + .space 0x400 + + .global UNK_021CD2A0 +UNK_021CD2A0: ; 0x021CD2A0 + .space 0x40 + + .global UNK_021CD2E0 +UNK_021CD2E0: ; 0x021CD2E0 + .space 0x100 + + .global UNK_021CD3E0 +UNK_021CD3E0: ; 0x021CD3E0 + .space 0x400 + + .global UNK_021CD7E0 +UNK_021CD7E0: ; 0x021CD7E0 + .space 0x40 + + .global UNK_021CD820 +UNK_021CD820: ; 0x021CD820 + .space 0x100 + + .global UNK_021CD920 +UNK_021CD920: ; 0x021CD920 + .space 0x400 + + .global UNK_021CDD20 +UNK_021CDD20: ; 0x021CDD20 + .space 0x40 + + .global UNK_021CDD60 +UNK_021CDD60: ; 0x021CDD60 + .space 0x4 + + .global UNK_021CDD64 +UNK_021CDD64: ; 0x021CDD64 + .space 0x4 + + .global UNK_021CDD68 +UNK_021CDD68: ; 0x021CDD68 + .space 0x4 + + .global UNK_021CDD6C +UNK_021CDD6C: ; 0x021CDD6C + .space 0x4 + + .global UNK_021CDD70 +UNK_021CDD70: ; 0x021CDD70 + .space 0x4 + + .global UNK_021CDD74 +UNK_021CDD74: ; 0x021CDD74 + .space 0x80 + + .global UNK_021CDDF4 +UNK_021CDDF4: ; 0x021CDDF4 + .space 0x4 + + .global UNK_021CDDF8 +UNK_021CDDF8: ; 0x021CDDF8 + .space 0xfc + + .global UNK_021CDEF4 +UNK_021CDEF4: ; 0x021CDEF4 + .space 0x10 + + .global UNK_021CDF04 +UNK_021CDF04: ; 0x021CDF04 + .space 0x4 + + .global UNK_021CDF08 +UNK_021CDF08: ; 0x021CDF08 + .space 0x2ec + + .global UNK_021CE1F4 +UNK_021CE1F4: ; 0x021CE1F4 + .space 0x300 + + .global UNK_021CE4F4 +UNK_021CE4F4: ; 0x021CE4F4 + .space 0x400 + + .global UNK_021CE8F4 +UNK_021CE8F4: ; 0x021CE8F4 + .space 0x4 + + .global UNK_021CE8F8 +UNK_021CE8F8: ; 0x021CE8F8 + .space 0x404 + + .global UNK_021CECFC +UNK_021CECFC: ; 0x021CECFC + .space 0x4 + + .global UNK_021CED00 +UNK_021CED00: ; 0x021CED00 + .space 0x4 + + .global UNK_021CED04 +UNK_021CED04: ; 0x021CED04 + .space 0x4 + + .global UNK_021CED08 +UNK_021CED08: ; 0x021CED08 + .space 0x4 + + .global UNK_021CED0C +UNK_021CED0C: ; 0x021CED0C + .space 0x4 + + .global UNK_021CED10 +UNK_021CED10: ; 0x021CED10 + .space 0x4 + + .global UNK_021CED14 +UNK_021CED14: ; 0x021CED14 + .space 0x4 + + .global UNK_021CED18 +UNK_021CED18: ; 0x021CED18 + .space 0x8 + + .global UNK_021CED20 +UNK_021CED20: ; 0x021CED20 + .space 0x44 + + .global UNK_021CED64 +UNK_021CED64: ; 0x021CED64 + .space 0x34 + + .global UNK_021CED98 +UNK_021CED98: ; 0x021CED98 + .space 0x28 + + .global UNK_021CEDC0 +UNK_021CEDC0: ; 0x021CEDC0 + .space 0x14 + + .global UNK_021CEDD4 +UNK_021CEDD4: ; 0x021CEDD4 + .space 0x24 + + .global UNK_021CEDF8 +UNK_021CEDF8: ; 0x021CEDF8 + .space 0xc + + .global UNK_021CEE04 +UNK_021CEE04: ; 0x021CEE04 + .space 0x14 + + .global UNK_021CEE18 +UNK_021CEE18: ; 0x021CEE18 + .space 0x30 + + .global UNK_021CEE48 +UNK_021CEE48: ; 0x021CEE48 + .space 0x30 + + .global UNK_021CEE78 +UNK_021CEE78: ; 0x021CEE78 + .space 0xe0 + + .global UNK_021CEF58 +UNK_021CEF58: ; 0x021CEF58 + .space 0xc + + .global UNK_021CEF64 +UNK_021CEF64: ; 0x021CEF64 + .space 0xc + + .global UNK_021CEF70 +UNK_021CEF70: ; 0x021CEF70 + .space 0xc + + .global UNK_021CEF7C +UNK_021CEF7C: ; 0x021CEF7C + .space 0x4 + + .global UNK_021CEF80 +UNK_021CEF80: ; 0x021CEF80 + .space 0xe00 + + .global UNK_021CFD80 +UNK_021CFD80: ; 0x021CFD80 + .space 0x4 + + .global UNK_021CFD84 +UNK_021CFD84: ; 0x021CFD84 + .space 0x4 + + .global UNK_021CFD88 +UNK_021CFD88: ; 0x021CFD88 + .space 0x4 + + .global UNK_021CFD8C +UNK_021CFD8C: ; 0x021CFD8C + .space 0x4 + + .global UNK_021CFD90 +UNK_021CFD90: ; 0x021CFD90 + .space 0x4 + + .global UNK_021CFD94 +UNK_021CFD94: ; 0x021CFD94 + .space 0x2ba + + .global UNK_021D004E +UNK_021D004E: ; 0x021D004E + .space 0x332 + + .global UNK_021D0380 +UNK_021D0380: ; 0x021D0380 + .space 0x40 + + .global UNK_021D03C0 +UNK_021D03C0: ; 0x021D03C0 + .space 0xb42 + + .global UNK_021D0F02 +UNK_021D0F02: ; 0x021D0F02 + .space 0xd7e + + .global UNK_021D1C80 +UNK_021D1C80: ; 0x021D1C80 + .space 0x4 + + .global UNK_021D1C84 +UNK_021D1C84: ; 0x021D1C84 + .space 0x4 + + .global UNK_021D1C88 +UNK_021D1C88: ; 0x021D1C88 + .space 0x4 + + .global UNK_021D1C8C +UNK_021D1C8C: ; 0x021D1C8C + .space 0x4 + + .global UNK_021D1C90 +UNK_021D1C90: ; 0x021D1C90 + .space 0x4 + + .global UNK_021D1C94 +UNK_021D1C94: ; 0x021D1C94 + .space 0x4 + + .global UNK_021D1C98 +UNK_021D1C98: ; 0x021D1C98 + .space 0xc + + .global UNK_021D1CA4 +UNK_021D1CA4: ; 0x021D1CA4 + .space 0xc + + .global UNK_021D1CB0 +UNK_021D1CB0: ; 0x021D1CB0 + .space 0x4 + + .global UNK_021D1CB4 +UNK_021D1CB4: ; 0x021D1CB4 + .space 0x4 + + .global UNK_021D1CB8 +UNK_021D1CB8: ; 0x021D1CB8 + .space 0x4 + + .global UNK_021D1CBC +UNK_021D1CBC: ; 0x021D1CBC + .space 0x140 + + .global UNK_021D1DFC +UNK_021D1DFC: ; 0x021D1DFC + .space 0xc + + .global UNK_021D1E08 +UNK_021D1E08: ; 0x021D1E08 + .space 0xc + + .global UNK_021D1E14 +UNK_021D1E14: ; 0x021D1E14 + .space 0x440 + + .global UNK_021D2254 +UNK_021D2254: ; 0x021D2254 + .space 0x8 + + .global UNK_021D225C +UNK_021D225C: ; 0x021D225C + .space 0x10 + + .global UNK_021D226C +UNK_021D226C: ; 0x021D226C + .space 0x4 + + .global UNK_021D2270 +UNK_021D2270: ; 0x021D2270 + .space 0x4 + + .global UNK_021D2274 +UNK_021D2274: ; 0x021D2274 + .space 0x460 + + .global UNK_021D26D4 +UNK_021D26D4: ; 0x021D26D4 + .space 0x4 + + .global UNK_021D26D8 +UNK_021D26D8: ; 0x021D26D8 + .space 0xc + + .global UNK_021D26E4 +UNK_021D26E4: ; 0x021D26E4 + .space 0x40 + + .global UNK_021D2724 +UNK_021D2724: ; 0x021D2724 + .space 0x80 + + .global UNK_021D27A4 +UNK_021D27A4: ; 0x021D27A4 + .space 0x4 + + .global UNK_021D27A8 +UNK_021D27A8: ; 0x021D27A8 + .space 0x4 + + .global UNK_021D27AC +UNK_021D27AC: ; 0x021D27AC + .space 0x20 + + .global UNK_021D27CC +UNK_021D27CC: ; 0x021D27CC + .space 0x54 + + .global UNK_021D2820 +UNK_021D2820: ; 0x021D2820 + .space 0xa0 + + .global UNK_021D28C0 +UNK_021D28C0: ; 0x021D28C0 + .space 0x4 + + .global UNK_021D28C4 +UNK_021D28C4: ; 0x021D28C4 + .space 0x3c + + .global UNK_021D2900 +UNK_021D2900: ; 0x021D2900 + .space 0x4 + + .global UNK_021D2904 +UNK_021D2904: ; 0x021D2904 + .space 0x4d4 + + .global UNK_021D2DD8 +UNK_021D2DD8: ; 0x021D2DD8 + .space 0x18 + + .global UNK_021D2DF0 +UNK_021D2DF0: ; 0x021D2DF0 + .space 0xc + + .global UNK_021D2DFC +UNK_021D2DFC: ; 0x021D2DFC + .space 0x5c0 + + .text + + 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 + + arm_func_start GXS_LoadOBJ_2 +GXS_LoadOBJ_2: + ldr ip, _020AF038 ; =GXS_LoadOBJ + bx r12 + .balign 4 +_020AF038: .word GXS_LoadOBJ + + arm_func_start GXS_LoadOAM_2 +GXS_LoadOAM_2: ; 0x020AF03C + ldr ip, _020AF044 ; =GXS_LoadOAM + bx r12 + .balign 4 +_020AF044: .word GXS_LoadOAM + + arm_func_start FUN_020AF048 +FUN_020AF048: ; 0x020AF048 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadBGExtPltt + bl GXS_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF074 +FUN_020AF074: ; 0x020AF074 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GXS_LoadBGPltt_2 +GXS_LoadBGPltt_2: ; 0x020AF0A0 + ldr ip, _020AF0A8 ; =GXS_LoadBGPltt + bx r12 + .balign 4 +_020AF0A8: .word GXS_LoadBGPltt + + arm_func_start GXS_LoadOBJPltt_2 +GXS_LoadOBJPltt_2: ; 0x020AF0AC + ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt + bx r12 + .balign 4 +_020AF0B4: .word GXS_LoadOBJPltt + + arm_func_start GXS_LoadBG3Scr_3 +GXS_LoadBG3Scr_3: ; 0x020AF0B8 + ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0C0: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_3 +GXS_LoadBG2Scr_3: ; 0x020AF0C4 + ldr ip, _020AF0CC ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0CC: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG3Scr_2 +GXS_LoadBG3Scr_2: ; 0x020AF0D0 + ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0D8: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_2 +GXS_LoadBG2Scr_2: ; 0x020AF0DC + ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0E4: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG1Scr_2 +GXS_LoadBG1Scr_2: ; 0x020AF0E8 + ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr + bx r12 + .balign 4 +_020AF0F0: .word GXS_LoadBG1Scr + + arm_func_start GXS_LoadBG0Scr_2 +GXS_LoadBG0Scr_2: ; 0x020AF0F4 + ldr ip, _020AF0FC ; =GXS_LoadBG0Scr + bx r12 + .balign 4 +_020AF0FC: .word GXS_LoadBG0Scr + + arm_func_start GXS_LoadBG3Char_2 +GXS_LoadBG3Char_2: ; 0x020AF100 + ldr ip, _020AF108 ; =GXS_LoadBG3Char + bx r12 + .balign 4 +_020AF108: .word GXS_LoadBG3Char + + arm_func_start GXS_LoadBG2Char_2 +GXS_LoadBG2Char_2: ; 0x020AF10C + ldr ip, _020AF114 ; =GXS_LoadBG2Char + bx r12 + .balign 4 +_020AF114: .word GXS_LoadBG2Char + + arm_func_start GXS_LoadBG1Char_2 +GXS_LoadBG1Char_2: ; 0x020AF118 + ldr ip, _020AF120 ; =GXS_LoadBG1Char + bx r12 + .balign 4 +_020AF120: .word GXS_LoadBG1Char + + arm_func_start GXS_LoadBG0Char_2 +GXS_LoadBG0Char_2: ; 0x020AF124 + ldr ip, _020AF12C ; =GXS_LoadBG0Char + bx r12 + .balign 4 +_020AF12C: .word GXS_LoadBG0Char + + arm_func_start GX_LoadOBJ_2 +GX_LoadOBJ_2: ; 0x020AF130 + ldr ip, _020AF138 ; =GX_LoadOBJ + bx r12 + .balign 4 +_020AF138: .word GX_LoadOBJ + + arm_func_start GX_LoadOAM_2 +GX_LoadOAM_2: ; 0x020AF13C + ldr ip, _020AF144 ; =GX_LoadOAM + bx r12 + .balign 4 +_020AF144: .word GX_LoadOAM + + arm_func_start FUN_020AF148 +FUN_020AF148: ; 0x020AF148 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF174 +FUN_020AF174: ; 0x020AF174 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GX_LoadBGPltt_2 +GX_LoadBGPltt_2: ; 0x020AF1A0 + ldr ip, _020AF1A8 ; =GX_LoadBGPltt + bx r12 + .balign 4 +_020AF1A8: .word GX_LoadBGPltt + + arm_func_start GX_LoadOBJPltt_2 +GX_LoadOBJPltt_2: ; 0x020AF1AC + ldr ip, _020AF1B4 ; =GX_LoadOBJPltt + bx r12 + .balign 4 +_020AF1B4: .word GX_LoadOBJPltt + + arm_func_start GX_LoadBG3Scr_3 +GX_LoadBG3Scr_3: ; 0x020AF1B8 + ldr ip, _020AF1C0 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1C0: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_3 +GX_LoadBG2Scr_3: ; 0x020AF1C4 + ldr ip, _020AF1CC ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1CC: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG3Scr_2 +GX_LoadBG3Scr_2: ; 0x020AF1D0 + ldr ip, _020AF1D8 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1D8: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_2 +GX_LoadBG2Scr_2: ; 0x020AF1DC + ldr ip, _020AF1E4 ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1E4: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG1Scr_2 +GX_LoadBG1Scr_2: ; 0x020AF1E8 + ldr ip, _020AF1F0 ; =GX_LoadBG1Scr + bx r12 + .balign 4 +_020AF1F0: .word GX_LoadBG1Scr + + arm_func_start GX_LoadBG0Scr_2 +GX_LoadBG0Scr_2: ; 0x020AF1F4 + ldr ip, _020AF1FC ; =GX_LoadBG0Scr + bx r12 + .balign 4 +_020AF1FC: .word GX_LoadBG0Scr + + arm_func_start GX_LoadBG3Char_2 +GX_LoadBG3Char_2: ; 0x020AF200 + ldr ip, _020AF208 ; =GX_LoadBG3Char + bx r12 + .balign 4 +_020AF208: .word GX_LoadBG3Char + + arm_func_start GX_LoadBG2Char_2 +GX_LoadBG2Char_2: ; 0x020AF20C + ldr ip, _020AF214 ; =GX_LoadBG2Char + bx r12 + .balign 4 +_020AF214: .word GX_LoadBG2Char + + arm_func_start GX_LoadBG1Char_2 +GX_LoadBG1Char_2: ; 0x020AF218 + ldr ip, _020AF220 ; =GX_LoadBG1Char + bx r12 + .balign 4 +_020AF220: .word GX_LoadBG1Char + + arm_func_start GX_LoadBG0Char_2 +GX_LoadBG0Char_2: ; 0x020AF224 + ldr ip, _020AF22C ; =GX_LoadBG0Char + bx r12 + .balign 4 +_020AF22C: .word GX_LoadBG0Char + + arm_func_start FUN_020AF230 +FUN_020AF230: ; 0x020AF230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageDepth + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF25C +FUN_020AF25C: ; 0x020AF25C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageColor + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF288 +FUN_020AF288: ; 0x020AF288 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTexPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2B4 +FUN_020AF2B4: ; 0x020AF2B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTex + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTex + bl GX_EndLoadTex + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2E0 +FUN_020AF2E0: ; 0x020AF2E0 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF2F4 +FUN_020AF2F4: ; 0x020AF2F4 + ldrh r1, [r0, #0xc] + ldr r0, [r0, #0x4] + cmp r1, r0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF30C +FUN_020AF30C: ; 0x020AF30C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + add r0, r1, #0x1 + ldr r1, [r2, #0x4] + bl _u32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF334 +FUN_020AF334: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + add r3, r2, r3 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r3, [sp, #0x4] + str r3, [sp, #0xc] + ldr r3, [r0, #0x0] + add r12, sp, #0x0 + cmp r3, #0x0 + beq _020AF418 + mov r6, #0x0 +_020AF364: + ldr r5, [r3, #0x0] + ldr r4, [r12, #0x4] + ldr r2, [r3, #0xc] + cmp r5, r4 + bne _020AF3B8 + ldr r4, [r3, #0x4] + add r4, r5, r4 + str r4, [sp, #0xc] + ldr r4, [r3, #0x8] + cmp r4, #0x0 + strne r2, [r4, #0xc] + streq r2, [r0, #0x0] + cmp r2, #0x0 + strne r4, [r2, #0x8] + ldr r4, [r1, #0x0] + cmp r4, #0x0 + strne r3, [r4, #0x8] + ldr r4, [r1, #0x0] + str r4, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF3B8: + ldr r5, [r3, #0x0] + ldr lr, [r3, #0x4] + ldr r4, [r12, #0x0] + add lr, r5, lr + cmp r4, lr + bne _020AF40C + str r5, [sp, #0x8] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + cmp r5, #0x0 + strne r4, [r5, #0xc] + streq r4, [r0, #0x0] + cmp r4, #0x0 + strne r5, [r4, #0x8] + ldr lr, [r1, #0x0] + cmp lr, #0x0 + strne r3, [lr, #0x8] + ldr lr, [r1, #0x0] + str lr, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF40C: + mov r3, r2 + cmp r2, #0x0 + bne _020AF364 +_020AF418: + ldr r4, [r1, #0x0] + cmp r4, #0x0 + ldrne r2, [r4, #0xc] + strne r2, [r1, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [sp, #0x8] + mov r1, #0x0 + str r2, [r4, #0x0] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + sub r2, r3, r2 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + strne r4, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [r4, #0xc] + str r1, [r4, #0x8] + str r4, [r0, #0x0] + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF488 +FUN_020AF488: + stmdb sp!, {r4-r10,lr} + ldr r4, [r0, #0x0] + ldr r9, [sp, #0x20] + cmp r4, #0x0 + mov r5, #0x0 + beq _020AF4EC + sub r12, r9, #0x1 + mvn lr, r12 +_020AF4A8: + cmp r9, #0x1 + ldrls r8, [r4, #0x0] + movls r6, r5 + movls r7, r3 + bls _020AF4D0 + ldr r7, [r4, #0x0] + add r6, r7, r12 + and r8, lr, r6 + sub r6, r8, r7 + add r7, r3, r6 +_020AF4D0: + ldr r10, [r4, #0x4] + cmp r10, r7 + movcs r5, r4 + bhs _020AF4EC + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020AF4A8 +_020AF4EC: + cmp r5, #0x0 + beq _020AF5B8 + cmp r6, #0x0 + beq _020AF54C + ldr r9, [r1, #0x0] + cmp r9, #0x0 + ldrne r3, [r9, #0xc] + strne r3, [r1, #0x0] + cmp r9, #0x0 + beq _020AF5B8 + ldr r4, [r5, #0x0] + mov r3, #0x0 + str r4, [r9, #0x0] + str r6, [r9, #0x4] + str r3, [r9, #0x8] + str r3, [r9, #0xc] + ldr r3, [r0, #0x0] + cmp r3, #0x0 + strne r9, [r3, #0x8] + ldr r4, [r0, #0x0] + mov r3, #0x0 + str r4, [r9, #0xc] + str r3, [r9, #0x8] + str r9, [r0, #0x0] +_020AF54C: + ldr r3, [r5, #0x4] + sub r3, r3, r7 + str r3, [r5, #0x4] + ldr r3, [r5, #0x0] + add r3, r3, r7 + str r3, [r5, #0x0] + ldr r3, [r5, #0x4] + cmp r3, #0x0 + bne _020AF5AC + ldr r4, [r5, #0x8] + ldr r3, [r5, #0xc] + cmp r4, #0x0 + strne r3, [r4, #0xc] + streq r3, [r0, #0x0] + cmp r3, #0x0 + strne r4, [r3, #0x8] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + strne r5, [r0, #0x8] + ldr r3, [r1, #0x0] + mov r0, #0x0 + str r3, [r5, #0xc] + str r0, [r5, #0x8] + str r5, [r1, #0x0] +_020AF5AC: + str r8, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r10,pc} +_020AF5B8: + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020AF5C4 +FUN_020AF5C4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [sp, #0x0] + bl FUN_020AF488 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF5E0 +FUN_020AF5E0: ; 0x020AF5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x0] + cmp lr, #0x0 + ldrne r12, [lr, #0xc] + strne r12, [r1, #0x0] + cmp lr, #0x0 + beq _020AF640 + str r2, [lr, #0x0] + str r3, [lr, #0x4] + mov r1, #0x0 + str r1, [lr, #0x8] + str r1, [lr, #0xc] + ldr r1, [r0, #0x0] + add sp, sp, #0x4 + cmp r1, #0x0 + strne lr, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [lr, #0xc] + str r1, [lr, #0x8] + str lr, [r0, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020AF640: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF64C +FUN_020AF64C: ; 0x020AF64C + stmdb sp!, {r4,lr} + subs lr, r1, #0x1 + mov r2, #0x0 + beq _020AF684 + mov r4, r0 +_020AF660: + add r12, r2, #0x1 + add r2, r0, r2, lsl #0x4 + add r3, r0, r12, lsl #0x4 + str r3, [r2, #0xc] + str r4, [r3, #0x8] + mov r2, r12 + cmp r12, lr + add r4, r4, #0x10 + blo _020AF660 +_020AF684: + mov r2, #0x0 + str r2, [r0, #0x8] + add r1, r0, r1, lsl #0x4 + str r2, [r1, #-0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AF698 +FUN_020AF698: ; 0x020AF698 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020AF6A4 +FUN_020AF6A4: ; 0x020AF6A4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + ldr r6, _020AF884 ; =UNK_020FF864 + add r5, sp, #0x0 + ldmia r6!, {r0-r3} + mov r12, r5 + stmia r5!, {r0-r3} + ldmia r6!, {r0-r3} + stmia r5!, {r0-r3} + ldr r4, _020AF888 ; =UNK_021CCD6C + ldmia r6, {r0-r3} + stmia r5, {r0-r3} + ldr lr, [r4, #0x10] + ldr r1, [r4, #0xc] + add r0, lr, lr, lsr #0x1 + mov r4, lr, lsr #0x1 + sub r0, r1, r0 + mov r3, #0x0 +_020AF6EC: + cmp r3, #0x0 + beq _020AF6FC + cmp r3, #0x2 + bne _020AF734 +_020AF6FC: + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _020AF734 + cmp lr, #0x0 + beq _020AF734 + ldr r1, [r12, #0x8] + cmp r2, lr + movhi r2, lr + add r1, r1, r2 + str r1, [r12, #0x8] + ldr r1, [r12, #0x0] + sub lr, lr, r2 + sub r1, r1, r2 + str r1, [r12, #0x0] +_020AF734: + add r3, r3, #0x1 + cmp r3, #0x4 + add r12, r12, #0xc + blo _020AF6EC + ldr r1, [sp, #0xc] + add r5, sp, #0x0 + sub r1, r1, r4 + str r1, [sp, #0xc] + mov r3, #0x0 +_020AF758: + ldr r2, [r5, #0x0] + cmp r2, #0x0 + beq _020AF790 + cmp r0, #0x0 + beq _020AF790 + ldr r1, [r5, #0x4] + cmp r2, r0 + movhi r2, r0 + add r1, r1, r2 + str r1, [r5, #0x4] + ldr r1, [r5, #0x0] + sub r0, r0, r2 + sub r1, r1, r2 + str r1, [r5, #0x0] +_020AF790: + add r3, r3, #0x1 + cmp r3, #0x4 + add r5, r5, #0xc + blo _020AF758 + ldr r0, _020AF888 ; =UNK_021CCD6C + bl FUN_020AF698 + ldr r0, _020AF88C ; =UNK_021CCD70 + bl FUN_020AF698 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r3, [sp, #0x8] + ldr r1, _020AF888 ; =UNK_021CCD6C + cmp r3, #0x0 + str r0, [r1, #0x8] + beq _020AF7E8 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x0 + bl FUN_020AF5E0 +_020AF7E8: + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x8] + cmp r3, #0x0 + beq _020AF804 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF804: + ldr r3, [sp, #0x20] + cmp r3, #0x0 + beq _020AF820 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x40000 + bl FUN_020AF5E0 +_020AF820: + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r3, #0x0 + add r2, r0, #0x40000 + beq _020AF840 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF840: + ldr r3, [sp, #0x28] + cmp r3, #0x0 + beq _020AF85C + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x60000 + bl FUN_020AF5E0 +_020AF85C: + ldr r3, [sp, #0x10] + cmp r3, #0x0 + addeq sp, sp, #0x30 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + add r2, r4, #0x20000 + bl FUN_020AF5E0 + add sp, sp, #0x30 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AF884: .word UNK_020FF864 +_020AF888: .word UNK_021CCD6C +_020AF88C: .word UNK_021CCD70 +_020AF890: .word UNK_021CCD74 + + arm_func_start FUN_020AF894 +FUN_020AF894: ; 0x020AF894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020AF908 ; =0x7FFF0000 + ldr r1, _020AF90C ; =0x0000FFFF + and r2, r0, r2 + and r3, r0, r1 + mov r1, r2, lsr #0x10 + and r0, r0, #0x80000000 + mov r2, r3, lsl #0x3 + movs r3, r1, lsl #0x4 + mov r0, r0, lsr #0x1f + beq _020AF8FC + cmp r0, #0x0 + beq _020AF8DC + ldr r0, _020AF910 ; =UNK_021CCD70 + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 + b _020AF8E8 +_020AF8DC: + ldr r0, _020AF918 ; =UNK_021CCD6C + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 +_020AF8E8: + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x4 + moveq r0, #0x1 + ldmia sp!, {pc} +_020AF8FC: + mov r0, #0x2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AF908: .word 0x7FFF0000 +_020AF90C: .word 0x0000FFFF +_020AF910: .word UNK_021CCD70 +_020AF914: .word UNK_021CCD74 +_020AF918: .word UNK_021CCD6C + + arm_func_start FUN_020AF91C +FUN_020AF91C: ; 0x020AF91C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + moveq r5, #0x10 + addne r0, r0, #0xf + bicne r5, r0, #0xf + ldr r0, _020AF9B0 ; =0x0007FFF0 + mov r4, r1 + cmp r5, r0 + addcs sp, sp, #0x4 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} + cmp r4, #0x0 + beq _020AF96C + ldr r0, _020AF9B4 ; =UNK_021CCD70 + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 + b _020AF980 +_020AF96C: + ldr r0, _020AF9BC ; =UNK_021CCD6C + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 +_020AF980: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r1, [sp, #0x0] + ldr r0, _020AF9C0 ; =0x0000FFFF + mov r2, r5, lsr #0x4 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r4, lsl #0x1f + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF9B0: .word 0x0007FFF0 +_020AF9B4: .word UNK_021CCD70 +_020AF9B8: .word UNK_021CCD74 +_020AF9BC: .word UNK_021CCD6C +_020AF9C0: .word 0x0000FFFF + + arm_func_start FUN_020AF9C4 +FUN_020AF9C4: ; 0x020AF9C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020AFA14 ; =UNK_021CCD6C + str r0, [r12, #0xc] + str r1, [r12, #0x10] + str r2, [r12, #0x14] + str r3, [r12, #0x18] + bl FUN_020AF6A4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r3, _020AFA18 ; =FUN_020AF91C + ldr r1, _020AFA1C ; =UNK_021064B8 + ldr r2, _020AFA20 ; =FUN_020AF894 + ldr r0, _020AFA24 ; =UNK_021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA14: .word UNK_021CCD6C +_020AFA18: .word FUN_020AF91C +_020AFA1C: .word UNK_021064B8 +_020AFA20: .word FUN_020AF894 +_020AFA24: .word UNK_021064BC + + arm_func_start FUN_020AFA28 +FUN_020AFA28: ; 0x020AFA28 + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFA30 +FUN_020AFA30: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r1, _020AFA78 ; =UNK_021CCD88 + str r0, [r1, #0x4] + mov r0, r1 + bl FUN_020AF698 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, _020AFA7C ; =UNK_021CCD8C + ldr r3, [r0, #0x8] + mov r2, #0x0 + bl FUN_020AF5E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA78: .word UNK_021CCD88 +_020AFA7C: .word UNK_021CCD8C + + arm_func_start FUN_020AFA80 +FUN_020AFA80: ; 0x020AFA80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, #0x10000 + rsb r2, r1, #0x0 + ldr r1, _020AFAC8 ; =0x0000FFFF + and r2, r0, r2 + and r12, r0, r1 + mov r3, r2, lsr #0x10 + ldr r0, _020AFACC ; =UNK_021CCD88 + ldr r1, _020AFAD0 ; =UNK_021CCD8C + mov r2, r12, lsl #0x3 + mov r3, r3, lsl #0x3 + bl FUN_020AF334 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFAC8: .word 0x0000FFFF +_020AFACC: .word UNK_021CCD88 +_020AFAD0: .word UNK_021CCD8C + + arm_func_start FUN_020AFAD4 +FUN_020AFAD4: ; 0x020AFAD4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + cmp r0, #0x0 + moveq r4, #0x8 + addne r0, r0, #0x7 + bicne r4, r0, #0x7 + ldr r0, _020AFB98 ; =0x0007FFF8 + cmp r4, r0 + addcs sp, sp, #0x8 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r1, #0x0 + beq _020AFB50 + mov r12, #0x8 + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 + ldr r2, [sp, #0x4] + add r1, r2, r4 + cmp r1, #0x10000 + bls _020AFB6C + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + mov r3, r4 + bl FUN_020AF334 + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AFB50: + ldr r0, _020AFB9C ; =UNK_021CCD88 + mov r12, #0x10 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 +_020AFB6C: + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [sp, #0x4] + ldr r0, _020AFBA4 ; =0x0000FFFF + mov r2, r4, lsr #0x3 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AFB98: .word 0x0007FFF8 +_020AFB9C: .word UNK_021CCD88 +_020AFBA0: .word UNK_021CCD8C +_020AFBA4: .word 0x0000FFFF + + arm_func_start FUN_020AFBA8 +FUN_020AFBA8: ; 0x020AFBA8 + stmdb sp!, {r4,lr} + ldr ip, _020AFBE8 ; =UNK_021CCD88 + mov r4, r3 + str r0, [r12, #0x8] + str r1, [r12, #0xc] + str r2, [r12, #0x10] + bl FUN_020AFA30 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AFBEC ; =FUN_020AFAD4 + ldr r1, _020AFBF0 ; =UNK_021064C0 + ldr r2, _020AFBF4 ; =FUN_020AFA80 + ldr r0, _020AFBF8 ; =UNK_021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AFBE8: .word UNK_021CCD88 +_020AFBEC: .word FUN_020AFAD4 +_020AFBF0: .word UNK_021064C0 +_020AFBF4: .word FUN_020AFA80 +_020AFBF8: .word UNK_021064C4 + + arm_func_start FUN_020AFBFC +FUN_020AFBFC: ; 0x020AFBFC + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFC04 +FUN_020AFC04: ; 0x020AFC04 + ldrh r2, [r0, #0x0] + cmp r2, r1 + ldrhi r0, [r0, #0x4] + addhi r0, r0, r1, lsl #0x4 + movls r0, #0x0 + bx lr + + arm_func_start FUN_020AFC1C +FUN_020AFC1C: ; 0x020AFC1C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x4] + mov r6, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + ldrh r1, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + cmp r1, #0x0 + ldr r12, [r0, #0xc] + bls _020AFCCC + mov r1, r6 +_020AFC68: + add r2, r4, r6, lsl #0x4 + ldr r5, [r2, #0xc] + mov r3, r6, lsl #0x4 + add r5, lr, r5 + str r5, [r2, #0xc] + ldrh r7, [r4, r3] + mov r5, r1 + cmp r7, #0x0 + bls _020AFCB4 +_020AFC8C: + ldr r9, [r2, #0xc] + add r7, r5, #0x1 + ldr r8, [r9, r5, lsl #0x3] + mov r7, r7, lsl #0x10 + add r8, r12, r8 + str r8, [r9, r5, lsl #0x3] + ldrh r8, [r4, r3] + mov r5, r7, lsr #0x10 + cmp r5, r8 + blo _020AFC8C +_020AFCB4: + add r2, r6, #0x1 + mov r2, r2, lsl #0x10 + ldrh r3, [r0, #0x0] + mov r6, r2, lsr #0x10 + cmp r6, r3 + blo _020AFC68 +_020AFCCC: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + add r1, r1, r0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + mov r12, #0x0 + add r2, r1, #0x8 + ldr r0, [r2, #0x4] + add r0, r0, r2 + str r0, [r2, #0x4] + ldrh r0, [r1, #0x8] + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r0, r12 + mov r6, r12 +_020AFD14: + ldr r5, [r2, #0x4] + mov r3, r6 + add r1, r5, r0 + ldr r4, [r1, #0x4] + add r4, r4, r2 + str r4, [r1, #0x4] + ldr r4, [r1, #0x8] + add r4, r4, r2 + str r4, [r1, #0x8] + ldrh r4, [r5, r0] + cmp r4, #0x0 + bls _020AFD6C + mov r7, r6 +_020AFD48: + ldr r5, [r1, #0x8] + add r3, r3, #0x1 + ldr r4, [r5, r7] + add r4, r4, r2 + str r4, [r5, r7] + ldrh r4, [r1, #0x0] + add r7, r7, #0x4 + cmp r3, r4 + blo _020AFD48 +_020AFD6C: + ldrh r1, [r2, #0x0] + add r12, r12, #0x1 + add r0, r0, #0xc + cmp r12, r1 + blo _020AFD14 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start thunk_FUN_020afda0 +thunk_FUN_020afda0: ; 0x020AFD88 + ldr ip, _020AFD90 ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD90: .word FUN_020AFDA0 + + arm_func_start thunk_FUN_020afda0_2 +thunk_FUN_020afda0_2: ; 0x020AFD94 + ldr ip, _020AFD9C ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD9C: .word FUN_020AFDA0 + + arm_func_start FUN_020AFDA0 +FUN_020AFDA0: ; 0x020AFDA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFDE4 ; =0x41424E4B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFC1C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFDE4: .word 0x41424E4B + + arm_func_start FUN_020AFDE8 +FUN_020AFDE8: ; 0x020AFDE8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r1, [r5, #0x4] + add r1, r1, r5 + str r1, [r5, #0x4] + bl FUN_020AFF10 + ldrh r1, [r5, #0x0] + mov r4, r0 + mov r6, #0x0 + cmp r1, #0x0 + bls _020AFE44 +_020AFE14: + mov r0, r5 + mov r1, r6 + bl FUN_020AFE8C + ldr r2, [r0, #0x4] + add r1, r6, #0x1 + add r2, r2, r4 + str r2, [r0, #0x4] + mov r0, r1, lsl #0x10 + ldrh r1, [r5, #0x0] + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020AFE14 +_020AFE44: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _020AFE6C + add r0, r0, r5 + str r0, [r5, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r1, #0x4] + add r0, r0, r1 + str r0, [r1, #0x4] + str r1, [r5, #0xc] +_020AFE6C: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r0, r5 + str r0, [r5, #0x14] + ldr r0, [r5, #0x14] + bl FUN_020AFF00 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AFE8C +FUN_020AFE8C: ; 0x020AFE8C + ldrh r2, [r0, #0x0] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + ldrh r2, [r0, #0x2] + ands r2, r2, #0x1 + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFEB8 +FUN_020AFEB8: ; 0x020AFEB8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFEFC ; =0x4345424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFDE8 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFEFC: .word 0x4345424B + + arm_func_start FUN_020AFF00 +FUN_020AFF00: ; 0x020AFF00 + ldr ip, _020AFF0C ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFF0C: .word FUN_020B01B0 + + arm_func_start FUN_020AFF10 +FUN_020AFF10: ; 0x020AFF10 + ldrh r1, [r0, #0x2] + ands r1, r1, #0x1 + ldrneh r1, [r0, #0x0] + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreqh r1, [r0, #0x0] + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFF34 +FUN_020AFF34: ; 0x020AFF34 + ldrh r2, [r0, #0x0] + cmp r1, r2 + ldrcc r0, [r0, #0x4] + addcc r0, r0, r1, lsl #0x3 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020AFF4C +FUN_020AFF4C: ; 0x020AFF4C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + mov r4, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldrh r1, [r0, #0x0] + ldr lr, [r0, #0x4] + cmp r1, #0x0 + bls _020AFFA8 +_020AFF7C: + add r3, lr, r4, lsl #0x3 + ldr r12, [r0, #0x8] + ldr r2, [r3, #0x4] + add r1, r4, #0x1 + add r2, r12, r2 + str r2, [r3, #0x4] + mov r1, r1, lsl #0x10 + ldrh r2, [r0, #0x0] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020AFF7C +_020AFFA8: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + add r1, r1, r0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x10] + bl FUN_020AFFC8 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AFFC8 +FUN_020AFFC8: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFFD4: .word FUN_020B01B0 + + arm_func_start FUN_020AFFD8 +FUN_020AFFD8: ; 0x020AFFD8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B001C ; =0x4D43424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFF4C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B001C: .word 0x4D43424B + + arm_func_start FUN_020B0020 +FUN_020B0020: ; 0x020B0020 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0030 +FUN_020B0030: ; 0x020B0030 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0074 ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0020 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0074: .word 0x43484152 + + arm_func_start FUN_020B0078 +FUN_020B0078: ; 0x020B0078 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0088 +FUN_020B0088: ; 0x020B0088 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B00CC ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0078 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B00CC: .word 0x43484152 + + arm_func_start FUN_020B00D0 +FUN_020B00D0: ; 0x020B00D0 + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B00E0 +FUN_020B00E0: ; 0x020B00E0 + ldr r1, [r0, #0x4] + add r1, r1, r0 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B00F0 +FUN_020B00F0: ; 0x020B00F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0134 ; =0x50434D50 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00E0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0134: .word 0x50434D50 + + arm_func_start FUN_020B0138 +FUN_020B0138: ; 0x020B0138 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B017C ; =0x504C5454 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00D0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B017C: .word 0x504C5454 + + arm_func_start FUN_020B0180 +FUN_020B0180: ; 0x020B0180 + stmdb sp!, {r4,lr} + mov r4, r1 + ldr r1, _020B01AC ; =0x5343524E + bl FUN_020B01F8 + cmp r0, #0x0 + addne r0, r0, #0x8 + strne r0, [r4, #0x0] + movne r0, #0x1 + moveq r0, #0x0 + streq r0, [r4, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020B01AC: .word 0x5343524E + + arm_func_start FUN_020B01B0 +FUN_020B01B0: ; 0x020B01B0 + ldr r1, [r0, #0x4] + mov r12, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + bxls lr +_020B01CC: + ldr r3, [r0, #0x4] + add r1, r12, #0x1 + ldr r2, [r3, r12, lsl #0x2] + mov r1, r1, lsl #0x10 + add r2, r0, r2 + str r2, [r3, r12, lsl #0x2] + ldrh r2, [r0, #0x0] + mov r12, r1, lsr #0x10 + cmp r12, r2 + blo _020B01CC + bx lr + + arm_func_start FUN_020B01F8 +FUN_020B01F8: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r2, [r0, #0xc] + ldrh r12, [r0, #0xe] + mov lr, #0x0 + add r0, r0, r2 + cmp r12, #0x0 + bls _020B0244 +_020B0218: + ldr r2, [r0, #0x0] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r2, lr, #0x1 + mov r2, r2, lsl #0x10 + ldr r3, [r0, #0x4] + mov lr, r2, lsr #0x10 + cmp lr, r12 + add r0, r0, r3 + blo _020B0218 +_020B0244: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B0250 +FUN_020B0250: ; 0x020B0250 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020B02C0 ; =0x04000470 + mov r0, r0, lsl #0xc + str r0, [r5, #0x0] + mov r4, r1, lsl #0xc + ldr r12, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r4, [r5, #0x0] + mov r4, r2, lsl #0xc + ldr r2, [sp, #0x18] + ldr lr, _020B02C4 ; =0x0400046C + str r4, [r5, #0x0] + mov r4, r3, lsl #0xc + ldr r3, [sp, #0x20] + str r4, [lr, #0x0] + mov r12, r12, lsl #0xc + str r12, [lr, #0x0] + mov r12, #0x1000 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + mov r2, r2, lsl #0xc + mov r3, r3, lsl #0xc + str r12, [lr, #0x0] + bl FUN_020B0340 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B02C0: .word 0x04000470 +_020B02C4: .word 0x0400046C + + arm_func_start FUN_020B02C8 +FUN_020B02C8: ; 0x020B02C8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r2, _020B0330 ; =0xBFFF0000 + ldr r0, _020B0334 ; =0x04000580 + mov r1, #0x400000 + str r2, [r0, #0x0] + rsb r0, r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + mov r2, r0 + mov r1, #0xc0000 + mov r3, #0x100000 + str r0, [sp, #0x10] + bl G3i_OrthoW_ + ldr r1, _020B0338 ; =0x0400044C + mov r2, #0x0 + ldr r0, _020B033C ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B0330: .word 0xBFFF0000 +_020B0334: .word 0x04000580 +_020B0338: .word 0x0400044C +_020B033C: .word 0x04000440 + + arm_func_start FUN_020B0340 +FUN_020B0340: ; 0x020B0340 + stmdb sp!, {r4-r6,lr} + mov r3, r3, lsl #0x8 + mov r0, r0, lsl #0x8 + mov r4, r3, asr #0x10 + mov r3, r0, asr #0x10 + mov r0, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x8 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x8 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + ldr ip, _020B03F4 ; =0x04000500 + mov lr, #0x1 + mov r6, r0, lsr #0x10 + mov r5, r3, lsr #0x10 + mov r3, r1, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r4, _020B03F8 ; =0x04000488 + str lr, [r12, #0x0] + orr r0, r5, r6, lsl #0x10 + ldr lr, _020B03FC ; =0x0400048C + str r0, [r4, #0x0] + mov r0, #0x10000000 + str r0, [lr, #0x0] + mov r12, #0x0 + str r12, [lr, #0x0] + orr r2, r3, r6, lsl #0x10 + ldr r0, _020B0400 ; =0x10001000 + str r2, [r4, #0x0] + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r3, r1, lsl #0x10 + str r0, [r4, #0x0] + mov r0, #0x1000 + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r5, r1, lsl #0x10 + str r0, [r4, #0x0] + str r12, [lr, #0x0] + ldr r0, _020B0404 ; =0x04000504 + str r12, [lr, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B03F4: .word 0x04000500 +_020B03F8: .word 0x04000488 +_020B03FC: .word 0x0400048C +_020B0400: .word 0x10001000 +_020B0404: .word 0x04000504 + + arm_func_start FUN_020B0408 +FUN_020B0408: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + ldreq r0, [r0, #0x18] + ldreq r1, [r0, #0x8] + cmp r1, #0x2 + beq _020B0428 + cmp r1, #0x4 + bne _020B0430 +_020B0428: + mov r0, #0x1 + bx lr +_020B0430: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B0438 +FUN_020B0438: ; 0x020B0438 + ldr ip, _020B0444 ; =FUN_020B0448 + str r1, [r0, #0x18] + bx r12 + .balign 4 +_020B0444: .word FUN_020B0448 + + arm_func_start FUN_020B0448 +FUN_020B0448: ; 0x020B0448 + ldr r1, [r0, #0x10] + cmp r1, #0x0 + movgt r2, #0x1 + ldr r1, [r0, #0x4] + movle r2, #0x0 + eors r1, r2, r1 + beq _020B047C + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + str r1, [r0, #0x0] + b _020B0494 +_020B047C: + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + str r1, [r0, #0x0] +_020B0494: + ldr ip, _020B04A4 ; =FUN_020B0534 + mov r1, #0x0 + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020B04A4: .word FUN_020B0534 + + arm_func_start FUN_020B04A8 +FUN_020B04A8: ; 0x020B04A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + strh r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B04C0 +FUN_020B04C0: ; 0x020B04C0 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x1c + bl FUN_020B04A8 + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r1, [r4, #0xc] + mov r0, #0x1000 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + str r1, [r4, #0x18] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B04FC +FUN_020B04FC: ; 0x020B04FC + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [r1, #0xc] + sub r0, r2, r0 + mov r0, r0, lsl #0xd + mov r0, r0, lsr #0x10 + bx lr + + arm_func_start FUN_020B0518 +FUN_020B0518: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B06EC + cmp r0, #0x0 + movne r1, #0x0 + strne r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0534 +FUN_020B0534: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0x8] + mov r7, #0x0 + cmp r0, #0x1 + movne r0, r7 + ldmneia sp!, {r4-r8,pc} + ldr r2, [r8, #0x10] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r0, r3, r0 + adc r1, r1, r7 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + bl abs + ldr r1, [r8, #0xc] + add r6, r8, #0xc + add r0, r1, r0 + str r0, [r8, #0xc] + mov r4, r7 + mov r5, #0x1 + b _020B06A8 +_020B058C: + ldr r0, [r8, #0x0] + ldr r1, [r6, #0x0] + ldrh r0, [r0, #0x4] + mov r7, r5 + sub r0, r1, r0, lsl #0xc + str r0, [r6, #0x0] + ldr r0, [r8, #0x10] + cmp r0, #0x0 + movgt r1, r5 + ldr r0, [r8, #0x4] + movle r1, r4 + eors r0, r1, r0 + ldrne r0, [r8, #0x0] + addne r0, r0, #0x8 + strne r0, [r8, #0x0] + ldreq r0, [r8, #0x0] + subeq r0, r0, #0x8 + streq r0, [r8, #0x0] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0x0] + cmp r1, #0x0 + movgt r2, r5 + ldr r1, [r8, #0x4] + movle r2, r4 + eors r1, r2, r1 + beq _020B0614 + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + cmp r0, r1 + movcs r0, r5 + movcc r0, r4 + b _020B0634 +_020B0614: + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + cmp r0, r1 + movls r0, r5 + movhi r0, r4 +_020B0634: + cmp r0, #0x0 + beq _020B0644 + mov r0, r8 + bl FUN_020B0710 +_020B0644: + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B06A8 + ldr r0, [r8, #0x18] + ldr r2, [r8, #0x1c] + ldr r1, [r8, #0x0] + ldr r0, [r0, #0xc] + cmp r2, #0x2 + sub r0, r1, r0 + mov r0, r0, lsl #0xd + mov r1, r0, lsr #0x10 + beq _020B0680 + cmp r2, #0x3 + beq _020B069C + b _020B06A8 +_020B0680: + ldrh r0, [r8, #0x28] + cmp r1, r0 + bne _020B06A8 + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 + b _020B06A8 +_020B069C: + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 +_020B06A8: + ldr r0, [r8, #0x8] + cmp r0, #0x0 + beq _020B06CC + ldr r0, [r8, #0x0] + ldr r1, [r8, #0xc] + ldrh r0, [r0, #0x4] + cmp r1, r0, lsl #0xc + movge r0, r5 + bge _020B06D0 +_020B06CC: + mov r0, r4 +_020B06D0: + cmp r0, #0x0 + bne _020B058C + mov r0, r7 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B06E0 +FUN_020B06E0: ; 0x020B06E0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + + arm_func_start FUN_020B06EC +FUN_020B06EC: + ldr r3, [r0, #0x18] + ldrh r2, [r3, #0x0] + cmp r1, r2 + ldrcc r2, [r3, #0xc] + addcc r1, r2, r1, lsl #0x3 + strcc r1, [r0, #0x0] + movcc r0, #0x1 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020B0710 +FUN_020B0710: ; 0x020B0710 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x3 + beq _020B0738 + cmp r0, #0x4 + bne _020B07B4 +_020B0738: + ldr r0, [r4, #0x4] + eor r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x2] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + bhi _020B0800 + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B0780 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B0780: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07A8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07A8: + mov r0, r4 + bl FUN_020B0448 + b _020B0800 +_020B07B4: + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B07D0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B07D0: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07F8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07F8: + mov r0, r4 + bl FUN_020B0448 +_020B0800: + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x0] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + strhi r0, [r4, #0x0] + ldmhiia sp!, {r4,pc} + cmp r2, r1 + strcc r1, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0830 +FUN_020B0830: ; 0x020B0830 + ldrh r3, [r0, #0x6] + ldrh r2, [r0, #0x8] + mov r12, #0x0 + add r1, r3, #0x1 + cmp r2, r1 + bgt _020B0854 + ldrh r0, [r0, #0x4] + cmp r0, r3 + movls r12, #0x1 +_020B0854: + cmp r12, #0x0 + subne r0, r3, r2 + addne r0, r0, #0x1 + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B0870 +FUN_020B0870: ; 0x020B0870 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B09B4 + mov r0, r4 + bl FUN_020B0888 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0888 +FUN_020B0888: ; 0x020B0888 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _020B0944 + ldrh r2, [r5, #0x6] + ldrh r1, [r5, #0x8] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B08C0 + ldrh r0, [r5, #0x4] + cmp r0, r2 + movls r3, #0x1 +_020B08C0: + cmp r3, #0x0 + moveq r4, #0x0 + beq _020B08E0 + ldrh r0, [r5, #0x4] + sub r0, r2, r0 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0xd +_020B08E0: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r0, [r5, #0x4] + add r2, r1, #0x100 + mov r1, r4 + add r6, r2, r0, lsl #0x3 + mov r0, r6 + bl DC_InvalidateRange + ldr r0, _020B09B0 ; =GXi_DmaId + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020B0930 + mov r1, r6 + mov r3, r4 + mov r2, #0xc0 + bl MI_DmaFill32 + b _020B0998 +_020B0930: + mov r1, r6 + mov r2, r4 + mov r0, #0xc0 + bl MIi_CpuClear32 + b _020B0998 +_020B0944: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r2, [r5, #0x4] + ldrh r0, [r5, #0x6] + add r1, r1, #0x100 + add r3, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + movs r2, r0, lsr #0x10 + mov r0, #0x0 + beq _020B0998 + mov r1, #0xc0 +_020B0980: + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r2 + strh r1, [r3], #0x8 + blo _020B0980 +_020B0998: + ldrh r0, [r5, #0x4] + strh r0, [r5, #0x8] + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B09AC: .word UNK_021CCDA0 +_020B09B0: .word GXi_DmaId + + arm_func_start FUN_020B09B4 +FUN_020B09B4: ; 0x020B09B4 + stmdb sp!, {r4-r10,lr} + mov r7, r0 + ldr r0, [r7, #0x14] + cmp r0, #0x0 + beq _020B0A48 + ldr r5, [r7, #0x0] + ldr r1, _020B0BA8 ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r5, r0, r1 + ldrh r2, [r7, #0x4] + ldrh r0, [r7, #0x6] + add r1, r1, #0x100 + add r4, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x13 + mov r6, r0, lsr #0x10 + mov r2, r2, lsl #0x13 + mov r0, r4 + mov r1, r6 + mov r7, r2, lsr #0x10 + bl DC_FlushRange + cmp r5, #0x0 + beq _020B0A20 + cmp r5, #0x1 + beq _020B0A34 + ldmia sp!, {r4-r10,pc} +_020B0A20: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GX_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A34: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GXS_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A48: + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldr r3, _020B0BAC ; =UNK_0210655C + add r4, r2, #0x100 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + mov r2, r5, lsl #0x13 + add r6, r4, r5, lsl #0x3 + movs r5, r1, lsr #0x10 + mov r4, r2, lsr #0x10 + ldr r9, [r3, r0, lsl #0x2] + mov r10, #0x0 + beq _020B0AC8 + mov r8, #0x6 +_020B0A94: + mov r0, r6 + mov r1, r4 + mov r2, r8 + blx r9 + add r0, r10, #0x1 + add r2, r4, #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r10, r1, lsr #0x10 + cmp r10, r5 + mov r4, r0, lsr #0x10 + add r6, r6, #0x8 + blo _020B0A94 +_020B0AC8: + ldrh r2, [r7, #0xc] + ldrh r1, [r7, #0xe] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B0AEC + ldrh r0, [r7, #0xa] + cmp r0, r2 + movls r3, #0x1 +_020B0AEC: + cmp r3, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0xa] + add r4, r2, #0x100 + ldrh r1, [r7, #0xc] + mov r2, r5, lsl #0x15 + ldr r3, _020B0BAC ; =UNK_0210655C + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + add r9, r4, r5, lsl #0x5 + ldr r5, [r3, r0, lsl #0x2] + movs r8, r1, lsr #0x10 + mov r7, r2, lsr #0x10 + mov r6, #0x0 + ldmeqia sp!, {r4-r10,pc} + mov r4, #0x2 +_020B0B40: + mov r2, r4 + add r0, r9, #0x6 + add r1, r7, #0x6 + blx r5 + mov r2, r4 + add r0, r9, #0xe + add r1, r7, #0xe + blx r5 + mov r2, r4 + add r0, r9, #0x16 + add r1, r7, #0x16 + blx r5 + add r0, r9, #0x1e + add r1, r7, #0x1e + mov r2, r4 + blx r5 + add r0, r7, #0x20 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + add r9, r9, #0x20 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B0B40 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B0BA8: .word UNK_021CCDA0 +_020B0BAC: .word UNK_0210655C + + arm_func_start FUN_020B0BB0 +FUN_020B0BB0: ; 0x020B0BB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov lr, #0x0 + add r2, r12, #0x1 + cmp r3, r2 + bgt _020B0BDC + ldrh r2, [r0, #0xa] + cmp r2, r12 + movls lr, #0x1 +_020B0BDC: + cmp lr, #0x0 + subne r2, r12, r3 + addne r2, r2, #0x1 + movne r2, r2, lsl #0x10 + movne r2, r2, lsr #0x10 + moveq r2, #0x0 + cmp r2, #0x1 + movcs r2, #0x1 + movcc r2, #0x0 + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldreq r0, _020B0C74 ; =0x0000FFFE + ldmeqia sp!, {pc} + ldr lr, [r0, #0x0] + ldr r3, _020B0C78 ; =UNK_021CCDA0 + mov r2, #0x540 + mla r12, lr, r2, r3 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0xe] + add r12, r12, #0x100 + mov r3, r3, asr #0x4 + add r12, r12, r2, lsl #0x5 + strh r3, [r12, #0x6] + ldr r3, [r1, #0x4] + mov r3, r3, asr #0x4 + strh r3, [r12, #0xe] + ldr r3, [r1, #0x8] + mov r3, r3, asr #0x4 + strh r3, [r12, #0x16] + ldr r1, [r1, #0xc] + mov r1, r1, asr #0x4 + strh r1, [r12, #0x1e] + ldrh r1, [r0, #0xe] + add r1, r1, #0x1 + strh r1, [r0, #0xe] + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B0C74: .word 0x0000FFFE +_020B0C78: .word UNK_021CCDA0 + + arm_func_start FUN_020B0C7C +FUN_020B0C7C: ; 0x020B0C7C + stmdb sp!, {r4,lr} + ldrh r12, [r0, #0x6] + ldrh r4, [r0, #0x8] + mov lr, #0x0 + add r3, r12, #0x1 + cmp r4, r3 + bgt _020B0CA4 + ldrh r3, [r0, #0x4] + cmp r3, r12 + movls lr, #0x1 +_020B0CA4: + cmp lr, #0x0 + subne r3, r12, r4 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, #0x1 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0D48 + ldr r4, [r0, #0x0] + ldr ip, _020B0D50 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, r4, r3, r12 + ldrh r3, [r0, #0x8] + add r4, r12, #0x100 + ldrh r12, [r1, #0x0] + mov lr, r3, lsl #0x3 + add r3, r4, r3, lsl #0x3 + strh r12, [r4, lr] + ldrh lr, [r1, #0x2] + ldr ip, _020B0D54 ; =0x0000FFFE + strh lr, [r3, #0x2] + ldrh r1, [r1, #0x4] + cmp r2, r12 + strh r1, [r3, #0x4] + beq _020B0D34 + ldr r1, [r3, #0x0] + mov r12, r1, lsl #0x16 + mov r12, r12, lsr #0x1e + ands r12, r12, #0x1 + bicne r12, r1, #0x3e000000 + andne r1, r2, #0x1f + orrne r1, r12, r1, lsl #0x19 + strne r1, [r3, #0x0] +_020B0D34: + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020B0D48: + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020B0D50: .word UNK_021CCDA0 +_020B0D54: .word 0x0000FFFE + + arm_func_start FUN_020B0D58 +FUN_020B0D58: ; 0x020B0D58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh lr, [r0, #0x6] + ldrh r12, [r0, #0x8] + mov r4, #0x0 + add r3, lr, #0x1 + cmp r12, r3 + bgt _020B0D84 + ldrh r3, [r0, #0x4] + cmp r3, lr + movls r4, #0x1 +_020B0D84: + cmp r4, #0x0 + subne r3, lr, r12 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, r2 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0E24 + ldr lr, [r0, #0x0] + ldr ip, _020B0E30 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, lr, r3, r12 + ldrh r3, [r0, #0x8] + add r12, r12, #0x100 + cmp r2, #0x0 + add r4, r12, r3, lsl #0x3 + mov r5, #0x0 + ble _020B0E18 + add r3, r0, #0x8 +_020B0DDC: + ldrh lr, [r1, #0x0] + mov r0, r5, lsl #0x3 + add r12, r4, r5, lsl #0x3 + strh lr, [r4, r0] + ldrh r0, [r1, #0x2] + add r5, r5, #0x1 + cmp r5, r2 + strh r0, [r12, #0x2] + ldrh r0, [r1, #0x4] + add r1, r1, #0x8 + strh r0, [r12, #0x4] + ldrh r0, [r3, #0x0] + add r0, r0, #0x1 + strh r0, [r3, #0x0] + blt _020B0DDC +_020B0E18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020B0E24: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0E30: .word UNK_021CCDA0 + + arm_func_start FUN_020B0E34 +FUN_020B0E34: ; 0x020B0E34 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x1c] + ldr r6, _020B0FB4 ; =UNK_021CCDA0 + mov r4, #0x540 + mla r4, r5, r4, r6 + mov lr, r1 + sub r1, r2, #0x1 + add r1, lr, r1 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + add r7, r4, lr, lsl #0x1 + add r2, r4, r12, lsl #0x1 + mov r6, r0 + mov r5, r3 + cmp r7, r2 + mov r3, lr, lsl #0x1 + bhi _020B0E9C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0E80: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0EA0 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0E80 +_020B0E9C: + mov r0, #0x1 +_020B0EA0: + cmp r0, #0x0 + beq _020B0EE0 + ldr r0, _020B0FBC ; =UNK_021CCD9C + sub r2, r12, lr + ldrh r7, [r0, #0x0] + add r1, r4, r3 + mov r2, r2, lsl #0x1 + add r3, r7, #0x1 + strh r3, [r0, #0x0] + strh r7, [r6, #0x10] + strh lr, [r6, #0x4] + strh r12, [r6, #0x6] + strh lr, [r6, #0x8] + ldrh r0, [r6, #0x10] + bl MIi_CpuClear16 + b _020B0EEC +_020B0EE0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0EEC: + ldrh r0, [sp, #0x18] + add r4, r4, #0x500 + cmp r0, #0x0 + bne _020B0F18 + mov r0, #0x20 + strh r0, [r6, #0xa] + mov r0, #0x0 + strh r0, [r6, #0xc] + ldrh r0, [r6, #0xa] + strh r0, [r6, #0xe] + b _020B0F98 +_020B0F18: + sub r0, r0, #0x1 + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + add r7, r4, r5, lsl #0x1 + add r2, r4, r12, lsl #0x1 + cmp r7, r2 + mov r3, r5, lsl #0x1 + bhi _020B0F5C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0F40: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0F60 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0F40 +_020B0F5C: + mov r0, #0x1 +_020B0F60: + cmp r0, #0x0 + beq _020B0F8C + strh r5, [r6, #0xa] + strh r12, [r6, #0xc] + strh r5, [r6, #0xe] + ldrh r0, [r6, #0x10] + sub r2, r12, r5 + add r1, r4, r3 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + b _020B0F98 +_020B0F8C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0F98: + mov r1, #0x0 + ldr r0, [sp, #0x1c] + str r1, [r6, #0x14] + str r0, [r6, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B0FB4: .word UNK_021CCDA0 +_020B0FB8: .word 0x0000FFFF +_020B0FBC: .word UNK_021CCD9C + + arm_func_start FUN_020B0FC0 +FUN_020B0FC0: ; 0x020B0FC0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B1060 ; =UNK_021CCEA0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1064 ; =UNK_021CD3E0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1068 ; =UNK_021CD920 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1070 ; =UNK_021CCDA0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1074 ; =UNK_021CD2E0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1078 ; =UNK_021CD820 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B107C ; =UNK_021CD2A0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1080 ; =UNK_021CD7E0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1084 ; =UNK_021CDD20 + mov r2, #0x40 + bl MIi_CpuClear16 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B1060: .word UNK_021CCEA0 +_020B1064: .word UNK_021CD3E0 +_020B1068: .word UNK_021CD920 +_020B106C: .word 0x0000FFFF +_020B1070: .word UNK_021CCDA0 +_020B1074: .word UNK_021CD2E0 +_020B1078: .word UNK_021CD820 +_020B107C: .word UNK_021CD2A0 +_020B1080: .word UNK_021CD7E0 +_020B1084: .word UNK_021CDD20 + + arm_func_start FUN_020B1088 +FUN_020B1088: ; 0x020B1088 + ldr ip, _020B1094 ; =MIi_CpuCopy16 + add r1, r1, #0x7000000 + bx r12 + .balign 4 +_020B1094: .word MIi_CpuCopy16 + + arm_func_start FUN_020B1098 +FUN_020B1098: ; 0x020B1098 + ldr r3, _020B10A8 ; =0x07000400 + ldr ip, _020B10AC ; =MIi_CpuCopy16 + add r1, r1, r3 + bx r12 + .balign 4 +_020B10A8: .word 0x07000400 +_020B10AC: .word MIi_CpuCopy16 + + arm_func_start FUN_020B10B0 +FUN_020B10B0: ; 0x020B10B0 + mov r1, r1, lsl #0x1 + ldrh r0, [r0, r1] + bx lr + + arm_func_start FUN_020B10BC +FUN_020B10BC: ; 0x020B10BC + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10C4 +FUN_020B10C4: + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10CC +FUN_020B10CC: + mov r2, #0x0 + mvn r1, #0x0 +_020B10D4: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B10D4 + bx lr + + arm_func_start FUN_020B10E8 +FUN_020B10E8: ; 0x020B10E8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + cmp r0, #0x3 + ldr r0, [sp, #0x28] + moveq r7, #0x20 + str r0, [sp, #0x28] + ldrh r0, [r9, #0x0] + movne r7, #0x200 + mov r11, r2 + mov r8, r3 + str r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _020B1210 +_020B112C: + ldr r1, [r9, #0x4] + mov r0, r6, lsl #0x1 + ldrh r2, [r1, r0] + ldr r0, [r10, #0xc] + ldr r1, [r10, #0x8] + mla r5, r7, r2, r11 + mla r4, r7, r6, r0 + bl DC_FlushRange + cmp r8, #0x0 + beq _020B11E0 + cmp r8, #0x1 + beq _020B1168 + cmp r8, #0x2 + beq _020B11A4 + b _020B11F8 +_020B1168: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B1190 + bl GX_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B11F8 +_020B1190: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJPltt + b _020B11F8 +_020B11A4: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B11CC + bl GXS_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B11F8 +_020B11CC: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJPltt + b _020B11F8 +_020B11E0: + bl GX_BeginLoadTexPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B11F8: + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _020B112C +_020B1210: + ldr r0, [sp, #0x28] + ldr r2, [r10, #0x0] + mov r1, r0 + str r2, [r1, #0x0] + ldr r4, [r10, #0x4] + mov r3, r0 + mov r1, r8 + mov r2, r11 + str r4, [r3, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B1240 +FUN_020B1240: ; 0x020B1240 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r5, [r9, #0xc] + ldr r4, [r9, #0x8] + mov r8, r1 + mov r7, r2 + mov r0, r5 + mov r1, r4 + mov r6, r3 + bl DC_FlushRange + cmp r7, #0x0 + beq _020B1300 + cmp r7, #0x1 + beq _020B1288 + cmp r7, #0x2 + beq _020B12C4 + b _020B1318 +_020B1288: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12B0 + bl GX_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B1318 +_020B12B0: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJPltt + b _020B1318 +_020B12C4: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12EC + bl GXS_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B1318 +_020B12EC: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJPltt + b _020B1318 +_020B1300: + bl GX_BeginLoadTexPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B1318: + ldr r1, [r9, #0x0] + mov r0, r6 + str r1, [r6, #0x0] + ldr r3, [r9, #0x4] + mov r1, r7 + mov r2, r8 + str r3, [r6, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B1340 +FUN_020B1340: ; 0x020B1340 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + mov r5, r2 + mov r4, r3 + bl DC_FlushRange + cmp r5, #0x0 + ldr r0, [r7, #0x8] + beq _020B13B8 + cmp r5, #0x1 + beq _020B1384 + cmp r5, #0x2 + beq _020B13A0 + b _020B13B8 +_020B1384: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1520 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B13B8 +_020B13A0: + ldr r3, _020B1524 ; =0x04001000 + ldr r1, _020B1520 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B13B8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B14D8 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1408 + cmp r0, #0x10 + bge _020B1434 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1444 +_020B13E4: + b _020B1444 +_020B13E8: + b _020B1414 +_020B13EC: + b _020B141C +_020B13F0: + b _020B1444 +_020B13F4: + b _020B1424 +_020B13F8: + b _020B1444 +_020B13FC: + b _020B1444 +_020B1400: + b _020B1444 +_020B1404: + b _020B142C +_020B1408: + cmp r0, #0x20 + beq _020B143C + b _020B1444 +_020B1414: + mov r0, #0x0 + b _020B1448 +_020B141C: + mov r0, #0x1 + b _020B1448 +_020B1424: + mov r0, #0x2 + b _020B1448 +_020B142C: + mov r0, #0x3 + b _020B1448 +_020B1434: + mov r0, #0x4 + b _020B1448 +_020B143C: + mov r0, #0x5 + b _020B1448 +_020B1444: + mov r0, #0x0 +_020B1448: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1490 + cmp r0, #0x10 + bge _020B14BC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B14CC +_020B146C: + b _020B14CC +_020B1470: + b _020B149C +_020B1474: + b _020B14A4 +_020B1478: + b _020B14CC +_020B147C: + b _020B14AC +_020B1480: + b _020B14CC +_020B1484: + b _020B14CC +_020B1488: + b _020B14CC +_020B148C: + b _020B14B4 +_020B1490: + cmp r0, #0x20 + beq _020B14C4 + b _020B14CC +_020B149C: + mov r0, #0x0 + b _020B14D0 +_020B14A4: + mov r0, #0x1 + b _020B14D0 +_020B14AC: + mov r0, #0x2 + b _020B14D0 +_020B14B4: + mov r0, #0x3 + b _020B14D0 +_020B14BC: + mov r0, #0x4 + b _020B14D0 +_020B14C4: + mov r0, #0x5 + b _020B14D0 +_020B14CC: + mov r0, #0x0 +_020B14D0: + str r0, [r4, #0x10] + b _020B14E8 +_020B14D8: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B14E8: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1520: .word 0xFFCFFFEF +_020B1524: .word 0x04001000 + + arm_func_start FUN_020B1528 +FUN_020B1528: ; 0x020B1528 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B1590 + cmp r5, #0x1 + beq _020B155C + cmp r5, #0x2 + beq _020B1578 + b _020B1590 +_020B155C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1760 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B1590 +_020B1578: + ldr r3, _020B1764 ; =0x04001000 + ldr r1, _020B1760 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B1590: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B15B8 + cmp r5, #0x1 + beq _020B15D4 + cmp r5, #0x2 + beq _020B15E8 + b _020B15F8 +_020B15B8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B15F8 +_020B15D4: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B15F8 +_020B15E8: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B15F8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1718 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1648 + cmp r0, #0x10 + bge _020B1674 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1684 +_020B1624: + b _020B1684 +_020B1628: + b _020B1654 +_020B162C: + b _020B165C +_020B1630: + b _020B1684 +_020B1634: + b _020B1664 +_020B1638: + b _020B1684 +_020B163C: + b _020B1684 +_020B1640: + b _020B1684 +_020B1644: + b _020B166C +_020B1648: + cmp r0, #0x20 + beq _020B167C + b _020B1684 +_020B1654: + mov r0, #0x0 + b _020B1688 +_020B165C: + mov r0, #0x1 + b _020B1688 +_020B1664: + mov r0, #0x2 + b _020B1688 +_020B166C: + mov r0, #0x3 + b _020B1688 +_020B1674: + mov r0, #0x4 + b _020B1688 +_020B167C: + mov r0, #0x5 + b _020B1688 +_020B1684: + mov r0, #0x0 +_020B1688: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B16D0 + cmp r0, #0x10 + bge _020B16FC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B170C +_020B16AC: + b _020B170C +_020B16B0: + b _020B16DC +_020B16B4: + b _020B16E4 +_020B16B8: + b _020B170C +_020B16BC: + b _020B16EC +_020B16C0: + b _020B170C +_020B16C4: + b _020B170C +_020B16C8: + b _020B170C +_020B16CC: + b _020B16F4 +_020B16D0: + cmp r0, #0x20 + beq _020B1704 + b _020B170C +_020B16DC: + mov r0, #0x0 + b _020B1710 +_020B16E4: + mov r0, #0x1 + b _020B1710 +_020B16EC: + mov r0, #0x2 + b _020B1710 +_020B16F4: + mov r0, #0x3 + b _020B1710 +_020B16FC: + mov r0, #0x4 + b _020B1710 +_020B1704: + mov r0, #0x5 + b _020B1710 +_020B170C: + mov r0, #0x0 +_020B1710: + str r0, [r4, #0x10] + b _020B1728 +_020B1718: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1728: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1760: .word 0xFFCFFFEF +_020B1764: .word 0x04001000 + + arm_func_start FUN_020B1768 +FUN_020B1768: ; 0x020B1768 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B17D0 + cmp r5, #0x1 + beq _020B179C + cmp r5, #0x2 + beq _020B17B8 + b _020B17D0 +_020B179C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B19A0 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B17D0 +_020B17B8: + ldr r3, _020B19A4 ; =0x04001000 + ldr r1, _020B19A0 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B17D0: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B17F8 + cmp r5, #0x1 + beq _020B1814 + cmp r5, #0x2 + beq _020B1828 + b _020B1838 +_020B17F8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B1838 +_020B1814: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B1838 +_020B1828: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B1838: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1958 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1888 + cmp r0, #0x10 + bge _020B18B4 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B18C4 +_020B1864: + b _020B18C4 +_020B1868: + b _020B1894 +_020B186C: + b _020B189C +_020B1870: + b _020B18C4 +_020B1874: + b _020B18A4 +_020B1878: + b _020B18C4 +_020B187C: + b _020B18C4 +_020B1880: + b _020B18C4 +_020B1884: + b _020B18AC +_020B1888: + cmp r0, #0x20 + beq _020B18BC + b _020B18C4 +_020B1894: + mov r0, #0x0 + b _020B18C8 +_020B189C: + mov r0, #0x1 + b _020B18C8 +_020B18A4: + mov r0, #0x2 + b _020B18C8 +_020B18AC: + mov r0, #0x3 + b _020B18C8 +_020B18B4: + mov r0, #0x4 + b _020B18C8 +_020B18BC: + mov r0, #0x5 + b _020B18C8 +_020B18C4: + mov r0, #0x0 +_020B18C8: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1910 + cmp r0, #0x10 + bge _020B193C + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B194C +_020B18EC: + b _020B194C +_020B18F0: + b _020B191C +_020B18F4: + b _020B1924 +_020B18F8: + b _020B194C +_020B18FC: + b _020B192C +_020B1900: + b _020B194C +_020B1904: + b _020B194C +_020B1908: + b _020B194C +_020B190C: + b _020B1934 +_020B1910: + cmp r0, #0x20 + beq _020B1944 + b _020B194C +_020B191C: + mov r0, #0x0 + b _020B1950 +_020B1924: + mov r0, #0x1 + b _020B1950 +_020B192C: + mov r0, #0x2 + b _020B1950 +_020B1934: + mov r0, #0x3 + b _020B1950 +_020B193C: + mov r0, #0x4 + b _020B1950 +_020B1944: + mov r0, #0x5 + b _020B1950 +_020B194C: + mov r0, #0x0 +_020B1950: + str r0, [r4, #0x10] + b _020B1968 +_020B1958: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1968: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B19A0: .word 0xFFCFFFEF +_020B19A4: .word 0x04001000 + + arm_func_start FUN_020B19A8 +FUN_020B19A8: + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x8] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B19C4 +FUN_020B19C4: ; 0x020B19C4 + add r0, r0, r1, lsl #0x2 + ldr r0, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19D0 +FUN_020B19D0: ; 0x020B19D0 + add r0, r0, r1, lsl #0x2 + str r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19DC +FUN_020B19DC: ; 0x020B19DC + mov r3, #0x0 + mvn r2, #0x0 +_020B19E4: + add r1, r0, r3, lsl #0x2 + add r3, r3, #0x1 + str r2, [r1, #0x8] + cmp r3, #0x3 + blt _020B19E4 + bx lr + + arm_func_start FUN_020B19FC +FUN_020B19FC: + ldr r1, [r0, r1, lsl #0x2] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B1A14 +FUN_020B1A14: ; 0x020B1A14 + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A1C +FUN_020B1A1C: ; 0x020B1A1C + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A24 +FUN_020B1A24: ; 0x020B1A24 + mov r2, #0x0 + mvn r1, #0x0 +_020B1A2C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B1A2C + bx lr + + arm_func_start FUN_020B1A40 +FUN_020B1A40: ; 0x020B1A40 + stmdb sp!, {r4,lr} + mov r4, r0 + add r1, r4, #0x4 + mov r0, #0x0 + mov r2, #0x18 + bl MIi_CpuClear16 + mov r0, #0x1000 + str r0, [r4, #0x4] + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1A68 +FUN_020B1A68: + ldr ip, _020B1A74 ; =FUN_020B1A40 + str r1, [r0, #0x0] + bx r12 + .balign 4 +_020B1A74: .word FUN_020B1A40 + + arm_func_start FUN_020B1A78 +FUN_020B1A78: ; 0x020B1A78 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x2 + streqh r3, [r0, #0x12] + streq r1, [r0, #0x4] + streq r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B1A98 +FUN_020B1A98: ; 0x020B1A98 + ldr r2, [r0, #0x0] + cmp r2, #0x1 + ldreqh r2, [r0, #0x12] + orreq r2, r2, #0x4 + streqh r2, [r0, #0x12] + streqh r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B1AB4 +FUN_020B1AB4: ; 0x020B1AB4 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x8 + streqh r3, [r0, #0x12] + streqh r1, [r0, #0xc] + streqh r2, [r0, #0xe] + bx lr + + arm_func_start FUN_020B1AD4 +FUN_020B1AD4: ; 0x020B1AD4 + mov r2, #0x0 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + ldr ip, _020B1AF4 ; =FUN_020B1A68 + add r0, r0, #0xc + bx r12 + .balign 4 +_020B1AF4: .word FUN_020B1A68 + + arm_func_start FUN_020B1AF8 +FUN_020B1AF8: ; 0x020B1AF8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldrh r5, [r2, #0x0] + ldr r4, [sp, #0x60] + ldr r10, [sp, #0x58] + str r4, [sp, #0x60] + cmp r1, r5 + movcs r1, r5 + mov r4, #0x0 + cmp r1, #0x0 + str r4, [sp, #0x0] + bls _020B1E7C + ldrh r4, [sp, #0x5c] + mov r4, r4, lsl #0x19 + str r4, [sp, #0x4] + ldr r4, [sp, #0x0] + str r4, [sp, #0x14] + mov r4, #0x100 + str r4, [sp, #0xc] + mov r4, #0x300 + str r4, [sp, #0x8] + mov r4, #0x1 + str r4, [sp, #0x10] +_020B1B54: + ldr r5, [sp, #0x0] + mov r6, #0x6 + mul r6, r5, r6 + ldr r8, [r2, #0x4] + ldr r4, [sp, #0x0] + add r7, r0, r5, lsl #0x3 + ldrh r5, [r8, r6] + mov r4, r4, lsl #0x3 + add r9, r8, r6 + strh r5, [r0, r4] + ldrh r4, [r9, #0x2] + cmp r3, #0x0 + strh r4, [r7, #0x2] + ldrh r4, [r9, #0x4] + strh r4, [r7, #0x4] + bne _020B1B9C + cmp r10, #0x0 + beq _020B1E60 +_020B1B9C: + ldr r5, [r7, #0x0] + ldr r4, _020B1E88 ; =0x01FF0000 + and r4, r5, r4 + mov r4, r4, lsr #0x10 + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0xff + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x20] + ldr r4, [r7, #0x0] + and r4, r4, #0xff + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0x7f + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x24] + cmp r3, #0x0 + beq _020B1E00 + ldr r5, [r7, #0x0] + and r6, r5, #0x300 + cmp r6, #0x100 + beq _020B1C1C + cmp r6, #0x300 + beq _020B1C1C + and r4, r5, #0x30000000 + orr r6, r6, r4 +_020B1C1C: + cmp r6, #0x300 + bne _020B1C70 + ldr r4, _020B1E8C ; =0xC000C000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + and r5, r5, r4 + and r4, r5, #0xc000 + mov r6, r4, asr #0xe + and r4, r5, #0xc0000000 + mov r4, r4, lsr #0x1e + mov r4, r4, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r4, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r5, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + add r5, r5, r9, lsl #0xb + str r5, [sp, #0x20] + ldrh r4, [r4, r6] + ldr r5, [sp, #0x24] + add r4, r5, r4, lsl #0xb + str r4, [sp, #0x24] +_020B1C70: + ldr r4, [sp, #0x60] + ldr r5, [r3, #0x8] + cmp r4, #0x0 + ldrne r8, [sp, #0x8] + add r4, sp, #0x20 + ldreq r8, [sp, #0xc] + mov r6, r4 + cmp r8, #0x300 + ldreq r9, [sp, #0x10] + mov r12, #0x1000 + ldrne r9, [sp, #0x14] + cmp r4, r4 + ldr r4, [sp, #0x24] + addeq r6, sp, #0x28 + smull r11, r4, r5, r4 + adds r5, r11, r12 + adc r11, r4, #0x0 + ldr r4, [r3, #0x0] + ldr lr, [sp, #0x20] + smlal r5, r11, r4, lr + mov r4, r5, lsr #0xc + orr r4, r4, r11, lsl #0x14 + str r4, [r6, #0x0] + ldr r4, [r3, #0xc] + ldr r5, [sp, #0x24] + ldr lr, [r3, #0x4] + smull r11, r5, r4, r5 + adds r11, r11, r12 + adc r4, r5, #0x0 + add r5, sp, #0x28 + cmp r6, r5 + ldr r5, [sp, #0x20] + smlal r11, r4, lr, r5 + mov r5, r11, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, #0x4] + ldreq r5, [sp, #0x28] + ldreq r4, [sp, #0x2c] + streq r5, [sp, #0x20] + streq r4, [sp, #0x24] + cmp r8, #0x100 + beq _020B1D38 + cmp r8, #0x300 + beq _020B1D38 + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r4, r4, r8 + str r4, [r7, #0x0] + b _020B1D54 +_020B1D38: + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r5, r4, r8 + ldr r4, [sp, #0x4] + orr r4, r4, r5 + str r4, [r7, #0x0] +_020B1D54: + ldr r6, [r7, #0x0] + ldr r5, _020B1E8C ; =0xC000C000 + cmp r9, #0x0 + and r8, r6, r5 + and r5, r8, #0xc000 + mov r6, r5, asr #0xe + and r5, r8, #0xc0000000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + mov r5, r5, lsr #0x1e + mov r5, r5, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r5, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r4, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + mov r11, r9, asr #0x1 + ldrh r5, [r5, r6] + mov r8, r11, lsl #0xc + ldr r6, [r3, #0x0] + rsb r12, r8, #0x0 + mov r9, r5, asr #0x1 + mla r12, r6, r11, r12 + ldr r5, [r3, #0x8] + mla r6, r5, r9, r12 + add r6, r4, r6 + str r6, [sp, #0x20] + ldr r12, [r3, #0x4] + mov r5, r9, lsl #0xc + str r12, [sp, #0x1c] + ldr r12, [r3, #0xc] + rsb lr, r5, #0x0 + str r12, [sp, #0x18] + ldr r12, [sp, #0x1c] + ldr r4, [sp, #0x24] + mla r11, r12, r11, lr + ldr r12, [sp, #0x18] + subne r6, r6, r8 + mla r9, r12, r9, r11 + add r4, r4, r9 + str r4, [sp, #0x24] + subne r4, r4, r5 + strne r6, [sp, #0x20] + strne r4, [sp, #0x24] +_020B1E00: + cmp r10, #0x0 + beq _020B1E28 + ldr r6, [sp, #0x20] + ldr r4, [r10, #0x0] + ldr r5, [sp, #0x24] + add r4, r6, r4 + str r4, [sp, #0x20] + ldr r4, [r10, #0x4] + add r4, r5, r4 + str r4, [sp, #0x24] +_020B1E28: + ldr r4, [sp, #0x20] + ldr r6, [r7, #0x0] + add r5, r4, #0x800 + ldr r4, _020B1E9C ; =0x000001FF + and r4, r4, r5, asr #0xc + ldr r5, _020B1EA0 ; =0xFE00FF00 + and r6, r6, r5 + ldr r5, [sp, #0x24] + add r5, r5, #0x800 + mov r5, r5, asr #0xc + and r5, r5, #0xff + orr r5, r6, r5 + orr r4, r5, r4, lsl #0x10 + str r4, [r7, #0x0] +_020B1E60: + ldr r4, [sp, #0x0] + add r4, r4, #0x1 + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + str r4, [sp, #0x0] + cmp r4, r1 + blo _020B1B54 +_020B1E7C: + mov r0, r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B1E88: .word 0x01FF0000 +_020B1E8C: .word 0xC000C000 +_020B1E90: .word UNK_020FF8AC +_020B1E94: .word UNK_020FF894 +_020B1E98: .word 0xC1FFFCFF +_020B1E9C: .word 0x000001FF +_020B1EA0: .word 0xFE00FF00 + + arm_func_start FUN_020B1EA4 +FUN_020B1EA4: ; 0x020B1EA4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0518 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EC4 +FUN_020B1EC4: ; 0x020B1EC4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0534 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EE4 +FUN_020B1EE4: ; 0x020B1EE4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0438 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EFC +FUN_020B1EFC: ; 0x020B1EFC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r4, r2 + ldr r2, [r4, #0xc] + mov r5, r1 + ldr r1, [r2, #0x0] + ldr r2, [sp, #0x34] + str r1, [sp, #0x0] + ldr r1, [sp, #0x38] + str r2, [sp, #0x4] + mov r6, r3 + mov r7, r0 + ldr r12, [sp, #0x3c] + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r6 + str r12, [sp, #0xc] + bl FUN_020B45F0 + str r6, [r7, #0x34] + str r4, [r7, #0x30] + add r0, r7, #0x38 + mov r1, #0x1 + str r6, [r7, #0x34] + bl FUN_020B1A68 + mov r0, r7 + bl FUN_020B04C0 + mov r0, r7 + mov r1, r5 + bl FUN_020B1EE4 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B1F80 +FUN_020B1F80: ; 0x020B1F80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + str r2, [r5, #0x30] + mvn r2, #0x0 + add r0, r5, #0x38 + mov r1, #0x1 + str r2, [r5, #0x34] + bl FUN_020B1A68 + mov r0, r5 + bl FUN_020B04C0 + mov r0, r5 + mov r1, r4 + bl FUN_020B1EE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B1FC4 +FUN_020B1FC4: ; 0x020B1FC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldrh r1, [r1, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl FUN_020B06E0 + mov r4, r0 + ldr r7, [r5, #0x30] + ldrh r1, [r4, #0x0] + mov r0, r7 + bl FUN_020AFE8C + str r0, [r5, #0x2c] + ldr r1, [r5, #0x18] + add r0, r5, #0x38 + ldr r2, [r1, #0x4] + mov r1, #0x1 + and r6, r2, #0xff + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2068 + cmp r6, #0x2 + bne _020B203C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r5, #0x38 + bl FUN_020B1AB4 + b _020B2068 +_020B203C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x38 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r5, #0x38 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r5, #0x38 + bl FUN_020B1AB4 +_020B2068: + ldr r2, [r7, #0xc] + cmp r2, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r5, #0x34] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldrh r1, [r4, #0x0] + ldr r2, [r2, #0x4] + ldr r0, [r5, #0x34] + add r3, r2, r1, lsl #0x3 + ldr r1, [r2, r1, lsl #0x3] + ldr r2, [r3, #0x4] + bl FUN_020B4400 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B20C8 +FUN_020B20C8: ; 0x020B20C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r6, #0x0 + str r6, [r0, #0x38] + ldr r7, [sp, #0x30] + str r6, [r0, #0x30] + mov r10, r1 + str r7, [r0, #0x34] + str r0, [sp, #0x0] + movs r8, r3 + mov r9, r2 + str r10, [r0, #0x3c] + ldr r11, [sp, #0x34] + beq _020B215C + mov r0, #0x1 + str r6, [sp, #0x8] + str r0, [sp, #0x4] +_020B210C: + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, [sp, #0x4] + add r0, r10, r4 + bl FUN_020B1AD4 + mov r0, #0x54 + mla r5, r6, r0, r9 + ldr r1, [sp, #0x8] + mov r0, r7 + str r5, [r10, r4] + bl FUN_020AFC04 + mov r1, r0 + mov r0, r5 + mov r2, r11 + bl FUN_020B1F80 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B210C +_020B215C: + ldr r0, [sp, #0x0] + bl FUN_020B04C0 + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x0] + add r0, r0, #0x44 + mov r1, #0x1 + str r3, [r2, #0x40] + bl FUN_020B1A68 + ldr r0, [sp, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2c] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B2194 +FUN_020B2194: ; 0x020B2194 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0518 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r7 + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B2234 + cmp r5, #0x2 + bne _020B2208 + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B2234 +_020B2208: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B2234: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B224C +FUN_020B224C: ; 0x020B224C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x0] + mov r6, r1 + ldrh r5, [r2, #0x4] + bl FUN_020B0534 + cmp r0, #0x0 + beq _020B2318 + ldrh r1, [r4, #0x2c] + mov r0, r4 + add r1, r1, r5 + strh r1, [r4, #0x2c] + bl FUN_020B06E0 + mov r5, r0 + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x40] + bl FUN_020AFF34 + ldr r1, [r4, #0x18] + mov r7, r0 + ldr r1, [r1, #0x4] + add r0, r4, #0x44 + and r6, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2300 + cmp r6, #0x2 + bne _020B22D4 + ldrsh r1, [r5, #0x4] + ldrsh r2, [r5, #0x6] + add r0, r4, #0x44 + bl FUN_020B1AB4 + b _020B2300 +_020B22D4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r4, #0x44 + bl FUN_020B1A78 + ldrh r1, [r5, #0x2] + add r0, r4, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #0xe] + add r0, r4, #0x44 + bl FUN_020B1AB4 +_020B2300: + ldrh r2, [r4, #0x2c] + mov r1, r7 + add r0, r4, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B2318: + mov r1, r6 + add r0, r4, #0x30 + bl FUN_020B232C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B232C +FUN_020B232C: ; 0x020B232C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r0, [r7, #0x8] + mov r6, r1 + cmp r0, #0x1 + bne _020B238C + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x2] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x58 +_020B2360: + mla r0, r5, r8, r4 + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x2] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2360 + ldmia sp!, {r4-r8,pc} +_020B238C: + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x28 +_020B23A8: + mul r0, r5, r8 + ldr r0, [r4, r0] + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B23A8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B23D8 +FUN_020B23D8: ; 0x020B23D8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrh r0, [r5, #0x0] + mov r4, #0x0 + mov r6, r4 + cmp r0, #0x0 + bls _020B2424 +_020B23F4: + mov r0, r5 + mov r1, r6 + bl FUN_020AFF34 + ldrh r0, [r0, #0x0] + ldrh r1, [r5, #0x0] + cmp r0, r4 + movhi r4, r0 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020B23F4 +_020B2424: + mov r0, r4 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B242C +FUN_020B242C: ; 0x020B242C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0438 + mov r1, #0x0 + mov r0, r7 + strh r1, [r7, #0x2c] + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B24C8 + cmp r5, #0x2 + bne _020B249C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B24C8 +_020B249C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B24C8: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B24E0 +FUN_020B24E0: ; 0x020B24E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r1 + str r0, [sp, #0x0] + str r10, [r0, #0x0] + ldr r0, [r0, #0x8] + mov r9, r2 + cmp r0, #0x1 + bne _020B2654 + ldrh r1, [r10, #0x2] + ldr r0, [sp, #0x0] + mov r4, #0x0 + ldr r8, [r0, #0xc] + cmp r1, #0x0 + bls _020B2544 + mov r3, r4 + mov r0, #0x58 +_020B2524: + mla r1, r4, r0, r8 + str r3, [r1, #0x54] + add r1, r4, #0x1 + mov r1, r1, lsl #0x10 + ldrh r2, [r10, #0x2] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020B2524 +_020B2544: + ldrh r0, [r10, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + str r5, [sp, #0x4] + mov r11, #0x1 +_020B2560: + ldr r0, [r10, #0x4] + mov r1, #0x58 + add r7, r0, r5, lsl #0x3 + ldrh r0, [r7, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + mla r6, r0, r1, r8 + ldr r0, [r6, #0x54] + cmp r0, #0x0 + bne _020B2634 + ldr r0, [sp, #0x0] + ldrh r1, [r7, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020AFC04 + mov r4, r0 + mov r0, r6 + mov r1, r4 + bl FUN_020B1EE4 + str r11, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2630 + ldrh r1, [r4, #0x0] + ldr r7, [sp, #0x4] + mov r3, r7 + cmp r1, #0x0 + bls _020B25F0 + ldr r2, [r4, #0xc] +_020B25D8: + add r0, r2, r3, lsl #0x3 + ldrh r0, [r0, #0x4] + add r3, r3, #0x1 + cmp r3, r1 + add r7, r7, r0 + blo _020B25D8 +_020B25F0: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B261C + mov r0, r9 + mov r1, r7 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2630 +_020B261C: + cmp r9, r7 + movcc r7, r9 + mov r0, r6 + mov r1, r7, lsl #0xc + bl FUN_020B1EC4 +_020B2630: + str r11, [r6, #0x54] +_020B2634: + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2560 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} +_020B2654: + ldrh r1, [r10, #0x0] + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + ldr r11, [r0, #0xc] + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_020B267C: + mov r0, #0x28 + mul r2, r4, r0 + ldr r3, [r10, #0x4] + mov r0, r4, lsl #0x3 + ldrh r1, [r3, r0] + ldr r0, [sp, #0x0] + ldr r6, [r11, r2] + ldr r0, [r0, #0x4] + add r7, r3, r4, lsl #0x3 + bl FUN_020AFC04 + mov r5, r0 + mov r0, r6 + mov r1, r5 + bl FUN_020B1EE4 + ldr r0, [sp, #0x8] + str r0, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2740 + ldrh r1, [r5, #0x0] + ldr r8, [sp, #0xc] + mov r0, r8 + cmp r1, #0x0 + bls _020B2700 + ldr r3, [r5, #0xc] +_020B26E4: + add r1, r3, r0, lsl #0x3 + ldrh r2, [r1, #0x4] + add r0, r0, #0x1 + ldrh r1, [r5, #0x0] + add r8, r8, r2 + cmp r0, r1 + blo _020B26E4 +_020B2700: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B272C + mov r0, r9 + mov r1, r8 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2740 +_020B272C: + cmp r9, r8 + movcc r8, r9 + mov r0, r6 + mov r1, r8, lsl #0xc + bl FUN_020B1EC4 +_020B2740: + mov r0, #0x28 + mla r3, r4, r0, r11 + ldr r0, [sp, #0x8] + str r0, [r3, #0x8] + ldrsh r1, [r7, #0x2] + ldrsh r2, [r7, #0x4] + add r0, r3, #0xc + bl FUN_020B1AB4 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B267C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start thunk_FUN_020b5040 +thunk_FUN_020b5040: ; 0x020B2780 + ldr ip, _020B2788 ; =FUN_020B5040 + bx r12 + .balign 4 +_020B2788: .word FUN_020B5040 + + arm_func_start FUN_020B278C +FUN_020B278C: + ldr r0, [r0, #0x78] + bx lr + + arm_func_start FUN_020B2794 +FUN_020B2794: ; 0x020B2794 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr r2, _020B2894 ; =UNK_021CDD70 + mov lr, #0x0 + ldr r12, [r2, #0x0] + ldr r3, _020B2898 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x0] + str r1, [sp, #0xc] + mla r1, r12, r2, r3 + rsb r3, r0, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x8] + str lr, [sp, #0x10] + str lr, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B289C ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B28A0 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2824 + ldr r1, _020B28A4 ; =UNK_02106570 + ldr r0, _020B28A8 ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B2828 +_020B2824: + mov r0, #0x0 +_020B2828: + cmp r0, #0x0 + ldreq r1, _020B2894 ; =UNK_021CDD70 + ldreq r0, _020B28A4 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B28AC ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B288C +_020B2860: + b _020B2870 +_020B2864: + b _020B288C +_020B2868: + b _020B2870 +_020B286C: + b _020B2870 +_020B2870: + ldr r0, _020B28B0 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B288C: + add sp, sp, #0x1c + ldmia sp!, {pc} + .balign 4 +_020B2894: .word UNK_021CDD70 +_020B2898: .word UNK_021CDEF4 +_020B289C: .word UNK_021CE1F4 +_020B28A0: .word UNK_021CDD68 +_020B28A4: .word UNK_02106570 +_020B28A8: .word 0x0000FFFE +_020B28AC: .word UNK_021CDDF4 +_020B28B0: .word UNK_021CDD64 + + arm_func_start FUN_020B28B4 +FUN_020B28B4: ; 0x020B28B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r2, _020B29E8 ; =UNK_021CDD70 + mov r12, #0x0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r2, _020B29EC ; =UNK_021CDEF4 + mov r1, #0x18 + mla r1, r3, r1, r2 + mov r5, r0 + add r0, sp, #0x0 + mov r2, r1 + str r5, [sp, #0x0] + str r12, [sp, #0x4] + str r12, [sp, #0x8] + str r4, [sp, #0xc] + str r12, [sp, #0x10] + str r12, [sp, #0x14] + bl FUN_020B423C + mov r0, r5 + bl FX_Inv + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, r4 + str r1, [sp, #0x4] + str r1, [sp, #0x8] + bl FX_Inv + mov r3, #0x0 + ldr r1, _020B29E8 ; =UNK_021CDD70 + str r0, [sp, #0xc] + ldr r2, [r1, #0x0] + ldr r1, _020B29F0 ; =UNK_021CE1F4 + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B29F4 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2978 + ldr r1, _020B29F8 ; =UNK_02106570 + ldr r0, _020B29FC ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B297C +_020B2978: + mov r0, #0x0 +_020B297C: + cmp r0, #0x0 + ldreq r1, _020B29E8 ; =UNK_021CDD70 + ldreq r0, _020B29F8 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B29E8 ; =UNK_021CDD70 + ldr r1, _020B2A00 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B29E0 +_020B29B4: + b _020B29C4 +_020B29B8: + b _020B29E0 +_020B29BC: + b _020B29C4 +_020B29C0: + b _020B29C4 +_020B29C4: + ldr r0, _020B2A04 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B29E0: + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B29E8: .word UNK_021CDD70 +_020B29EC: .word UNK_021CDEF4 +_020B29F0: .word UNK_021CE1F4 +_020B29F4: .word UNK_021CDD68 +_020B29F8: .word UNK_02106570 +_020B29FC: .word 0x0000FFFE +_020B2A00: .word UNK_021CDDF4 +_020B2A04: .word UNK_021CDD64 + + arm_func_start FUN_020B2A08 +FUN_020B2A08: ; 0x020B2A08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r3, _020B2AEC ; =UNK_021CDD68 + mov r4, r2 + ldr r2, [r3, #0x0] + cmp r2, #0x0 + beq _020B2A6C + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov r3, #0x18 + ldr r2, [r2, #0x0] + ldr lr, _020B2AF4 ; =UNK_021CDF04 + mul r5, r2, r3 + ldr r3, [lr, r5] + ldr ip, _020B2AF8 ; =UNK_021CDF08 + add r0, r3, r0 + str r0, [lr, r5] + ldr r0, [r12, r5] + ldr r3, _020B2AFC ; =UNK_021CDD74 + add r0, r0, r1 + str r0, [r12, r5] + ldr r0, [r3, r2, lsl #0x2] + add sp, sp, #0x1c + add r0, r0, r4 + str r0, [r3, r2, lsl #0x2] + ldmia sp!, {r4-r5,pc} +_020B2A6C: + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov lr, #0x1000 + ldr r12, [r2, #0x0] + ldr r3, _020B2B00 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x14] + mla r1, r12, r2, r3 + mov r3, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x0 + mov r2, r1 + str lr, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r1, _020B2B04 ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r2, _020B2AFC ; =UNK_021CDD74 + ldr r1, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + add r0, r0, r4 + str r0, [r2, r1, lsl #0x2] + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B2AEC: .word UNK_021CDD68 +_020B2AF0: .word UNK_021CDD70 +_020B2AF4: .word UNK_021CDF04 +_020B2AF8: .word UNK_021CDF08 +_020B2AFC: .word UNK_021CDD74 +_020B2B00: .word UNK_021CDEF4 +_020B2B04: .word UNK_021CE1F4 + + arm_func_start FUN_020B2B08 +FUN_020B2B08: ; 0x020B2B08 + ldr r0, _020B2B4C ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movle r0, #0x1 + movgt r0, #0x0 + cmp r0, #0x0 + bxne lr + ldr r1, _020B2B4C ; =UNK_021CDD70 + ldr r0, _020B2B50 ; =UNK_02106570 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0x0] + sub r3, r3, #0x1 + str r3, [r1, #0x0] + cmp r2, r3 + ldrgt r1, _020B2B54 ; =0x0000FFFE + strgth r1, [r0, #0x0] + bx lr + .balign 4 +_020B2B4C: .word UNK_021CDD70 +_020B2B50: .word UNK_02106570 +_020B2B54: .word 0x0000FFFE + + arm_func_start FUN_020B2B58 +FUN_020B2B58: ; 0x020B2B58 + stmdb sp!, {r4-r10,lr} + ldr r0, _020B2D74 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + ands r0, r0, #0x1 + bne _020B2CA4 + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r1, [r0, #0x0] + mov r0, r1, lsl #0x10 + add r5, r1, #0x1 + cmp r5, #0x20 + mov r4, r0, lsr #0x10 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + beq _020B2C44 + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2BE4 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r8, r3, r0 + ldr r6, _020B2D84 ; =UNK_021CDF04 + mul r7, r5, r0 + ldr r2, [r6, r8] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r6, r7] + ldr r2, [r3, r8] + str r0, [r1, r5, lsl #0x2] + str r2, [r3, r7] + b _020B2C3C +_020B2BE4: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r7, _020B2D80 ; =UNK_021CDD74 + mul lr, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r12, r5, r0 + ldr r8, _020B2D90 ; =UNK_021CE1F4 + add r10, r1, lr + ldr r6, [r7, r2, lsl #0x2] + add r9, r1, r12 + ldmia r10!, {r0-r3} + stmia r9!, {r0-r3} + ldmia r10, {r0-r1} + str r6, [r7, r5, lsl #0x2] + add r7, r8, lr + stmia r9, {r0-r1} + add r6, r8, r12 + ldmia r7!, {r0-r3} + stmia r6!, {r0-r3} + ldmia r7, {r0-r1} + stmia r6, {r0-r1} +_020B2C3C: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r5, [r0, #0x0] +_020B2C44: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r2, _020B2D94 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r5, r4, lsl #0x3 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r4, r2, r4, lsl #0x3 + mov r6, r3, lsl #0x3 + ldrh r1, [r2, r5] + ldrh r0, [r4, #0x2] + add r3, r2, r3, lsl #0x3 + strh r1, [r2, r6] + strh r0, [r3, #0x2] + ldrh r2, [r4, #0x4] + ldrh r0, [r4, #0x6] + ldr r1, _020B2D98 ; =UNK_021CDDF8 + strh r2, [r3, #0x4] + strh r0, [r3, #0x6] + ldrh r0, [r1, r5] + cmp r0, #0x1 + moveq r0, #0x2 + streqh r0, [r1, r6] + strneh r0, [r1, r6] + ldmia sp!, {r4-r10,pc} +_020B2CA4: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + add r4, r0, #0x1 + cmp r4, #0x20 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2D10 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r7, r3, r0 + ldr r5, _020B2D84 ; =UNK_021CDF04 + mul r6, r4, r0 + ldr r2, [r5, r7] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r5, r6] + ldr r2, [r3, r7] + str r0, [r1, r4, lsl #0x2] + str r2, [r3, r6] + b _020B2D68 +_020B2D10: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr ip, _020B2D80 ; =UNK_021CDD74 + mul r9, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r8, r4, r0 + ldr lr, _020B2D90 ; =UNK_021CE1F4 + add r6, r1, r9 + ldr r5, [r12, r2, lsl #0x2] + add r7, r1, r8 + ldmia r6!, {r0-r3} + stmia r7!, {r0-r3} + ldmia r6, {r0-r1} + add r6, lr, r9 + stmia r7, {r0-r1} + add lr, lr, r8 + ldmia r6!, {r0-r3} + stmia lr!, {r0-r3} + ldmia r6, {r0-r1} + stmia lr, {r0-r1} + str r5, [r12, r4, lsl #0x2] +_020B2D68: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r4, [r0, #0x0] + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B2D74: .word UNK_021CDD6C +_020B2D78: .word UNK_021CDD70 +_020B2D7C: .word UNK_021CDD68 +_020B2D80: .word UNK_021CDD74 +_020B2D84: .word UNK_021CDF04 +_020B2D88: .word UNK_021CDF08 +_020B2D8C: .word UNK_021CDEF4 +_020B2D90: .word UNK_021CE1F4 +_020B2D94: .word UNK_021CDDF4 +_020B2D98: .word UNK_021CDDF8 + + arm_func_start FUN_020B2D9C +FUN_020B2D9C: ; 0x020B2D9C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldrh r0, [r4, #0x56] + cmp r0, #0x0 + bne _020B2DBC + add r0, r4, #0x30 + bl FUN_020B2E78 + ldmia sp!, {r4-r6,pc} +_020B2DBC: + bl FUN_020B2B58 + ldrh r0, [r4, #0x56] + ands r0, r0, #0x8 + beq _020B2E0C + ldr r0, _020B2E70 ; =UNK_021CDD6C + ldrsh r6, [r4, #0x52] + ldr r0, [r0, #0x0] + ldrsh r5, [r4, #0x50] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B2E70 ; =UNK_021CDD6C + rsbne r5, r5, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r6, r6, #0x0 + mov r0, r5, lsl #0xc + mov r1, r6, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B2E0C: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x4 + beq _020B2E40 + ldrh r0, [r4, #0x54] + ldr r2, _020B2E74 ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B2E40: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x2 + beq _020B2E5C + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x4c] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B2E5C: + add r0, r4, #0x30 + bl FUN_020B2E78 + mov r0, #0x1 + bl FUN_020B2B08 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B2E70: .word UNK_021CDD6C +_020B2E74: .word UNK_020FFA38 + + arm_func_start FUN_020B2E78 +FUN_020B2E78: ; 0x020B2E78 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020B309C + ldr r0, [r5, #0x0] + mov r2, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bls _020B2ED0 + ldr r3, _020B3174 ; =UNK_021CE8F4 + mov r4, r2 +_020B2EAC: + add r0, r3, r2, lsl #0x2 + str r4, [r0, #0x4] + ldr r0, [r5, #0x0] + add r2, r2, #0x1 + ldrh r1, [r0, #0x2] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + cmp r2, r1 + blo _020B2EAC +_020B2ED0: + ldr r0, _020B3178 ; =UNK_021CDD6C + mov r6, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _020B3174 ; =UNK_021CE8F4 + str r6, [r0, #0x404] + ldr r0, [r1, #0x80] + cmp r0, #0x0 + beq _020B2FD8 + bl FUN_020B4948 + str r0, [sp, #0x0] + mov r0, r6 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B2FC0 + mov r11, r7 +_020B2F28: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + mov r2, r11 + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mov r0, #0x58 + mla r0, r8, r0, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2F28 +_020B2FC0: + mov r0, #0x0 + bl FUN_020B497C + ldr r0, [sp, #0x0] + bl FUN_020B4958 + bl FUN_020B4968 + b _020B3088 +_020B2FD8: + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B3088 + str r7, [sp, #0x4] + mov r11, #0x58 +_020B2FF4: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + ldr r2, [sp, #0x4] + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mla r0, r8, r11, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2FF4 +_020B3088: + ldr r0, _020B3174 ; =UNK_021CE8F4 + mov r1, #0x0 + str r1, [r0, #0x404] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B309C: + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r7, [r5, #0xc] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + cmp r0, #0x0 + beq _020B312C + bl FUN_020B4948 + mov r6, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bls _020B3110 + mov r8, #0x28 +_020B30EC: + mla r0, r4, r8, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B30EC +_020B3110: + mov r0, #0x0 + bl FUN_020B497C + mov r0, r6 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B312C: + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0xc + ldmlsia sp!, {r4-r11,pc} + mov r6, #0x28 +_020B3148: + mla r0, r4, r6, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B3148 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3174: .word UNK_021CE8F4 +_020B3178: .word UNK_021CDD6C + + arm_func_start FUN_020B317C +FUN_020B317C: ; 0x020B317C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B31EC ; =UNK_021CDD6C + mov r5, r0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x80] + cmp r1, #0x0 + beq _020B31E0 + bl FUN_020B4948 + mov r4, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B31EC ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + mov r0, r5 + bl FUN_020B3554 + mov r0, #0x0 + bl FUN_020B497C + mov r0, r4 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B31E0: + bl FUN_020B3554 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B31EC: .word UNK_021CDD6C + + arm_func_start FUN_020B31F0 +FUN_020B31F0: ; 0x020B31F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B3260 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020B3264 ; =UNK_021CDD6C + str r2, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r3, [r2, #0x7c] + cmp r3, #0x0 + beq _020B324C + ands r0, r3, #0x1 + ldrne r0, _020B3268 ; =UNK_021CDD68 + movne r1, #0x0 + strne r1, [r0, #0x0] + ands r0, r3, #0x2 + beq _020B323C + mov r0, #0x0 + str r0, [r2, #0x74] + bl FUN_020B4DA0 +_020B323C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x7c] +_020B324C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B3260: .word 0x04000448 +_020B3264: .word UNK_021CDD6C +_020B3268: .word UNK_021CDD68 + + arm_func_start FUN_020B326C +FUN_020B326C: ; 0x020B326C + stmdb sp!, {r4-r8,lr} + ldr r5, _020B330C ; =UNK_021CDD60 + ldr r3, _020B3310 ; =UNK_021CDD6C + ldrh r6, [r5, #0x0] + ldr r2, _020B3314 ; =UNK_021CDD70 + mov r4, #0x0 + ldr r7, _020B3318 ; =0x0000FFFE + ldr r1, _020B331C ; =UNK_02106570 + str r0, [r3, #0x0] + str r4, [r2, #0x0] + strh r7, [r1, #0x0] + cmp r6, #0x0 + ble _020B32D0 + ldr r8, _020B3320 ; =UNK_021CE4F4 + mvn r7, #0x0 + mov r6, #0x10 +_020B32AC: + mov r0, r7 + mov r2, r6 + add r1, r8, #0x10 + bl MIi_CpuClearFast + ldrh r0, [r5, #0x0] + add r4, r4, #0x1 + add r8, r8, #0x20 + cmp r4, r0 + blt _020B32AC +_020B32D0: + ldr r4, _020B330C ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3324 ; =UNK_021CDD64 + ldr r1, _020B3328 ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r1, _020B332C ; =0x04000444 + mov r2, #0x0 + ldr r0, _020B3330 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bl FUN_020B4178 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B330C: .word UNK_021CDD60 +_020B3310: .word UNK_021CDD6C +_020B3314: .word UNK_021CDD70 +_020B3318: .word 0x0000FFFE +_020B331C: .word UNK_02106570 +_020B3320: .word UNK_021CE4F4 +_020B3324: .word UNK_021CDD64 +_020B3328: .word UNK_021CDDF4 +_020B332C: .word 0x04000444 +_020B3330: .word 0x04000454 + + arm_func_start FUN_020B3334 +FUN_020B3334: ; 0x020B3334 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x48 + bl MIi_CpuClear16 + mov r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x3 + ldr r1, _020B3380 ; =FUN_020B3EE0 + str r0, [r4, #0x14] + ldr r0, _020B3384 ; =FUN_020B3E48 + str r1, [r4, #0x18] + ldr r1, _020B3388 ; =FUN_020B3C40 + str r0, [r4, #0x1c] + ldr r0, _020B338C ; =FUN_020B3B90 + str r1, [r4, #0x20] + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020B3380: .word FUN_020B3EE0 +_020B3384: .word FUN_020B3E48 +_020B3388: .word FUN_020B3C40 +_020B338C: .word FUN_020B3B90 + + arm_func_start FUN_020B3390 +FUN_020B3390: ; 0x020B3390 + ldr r2, [r0, #0x70] + str r2, [r1, #0x30] + str r1, [r0, #0x70] + bx lr + + arm_func_start FUN_020B33A0 +FUN_020B33A0: ; 0x020B33A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl FUN_020B504C + mov r7, #0x0 + str r7, [r4, #0x70] + str r7, [r4, #0x74] + str r7, [r4, #0x78] + str r7, [r4, #0x7c] + str r7, [r4, #0x80] + str r7, [r4, #0x84] + strh r7, [r4, #0x88] + strh r7, [r4, #0x8a] + str r7, [r4, #0x8c] + str r7, [r4, #0x90] + ldr r1, _020B3454 ; =UNK_021CDD70 + strh r7, [r4, #0x94] + ldr r2, _020B3458 ; =0x0000FFFE + ldr r0, _020B345C ; =UNK_02106570 + ldr r6, _020B3460 ; =UNK_021CE4F4 + str r7, [r1, #0x0] + strh r2, [r0, #0x0] + mvn r5, #0x0 + mov r4, #0x10 +_020B3400: + mov r0, r5 + mov r2, r4 + add r1, r6, #0x10 + bl MIi_CpuClearFast + add r7, r7, #0x1 + cmp r7, #0x20 + add r6, r6, #0x20 + blt _020B3400 + ldr ip, _020B3464 ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3468 ; =UNK_021CDD64 + ldr r1, _020B346C ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r12, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B3470 ; =UNK_021CDD68 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B3454: .word UNK_021CDD70 +_020B3458: .word 0x0000FFFE +_020B345C: .word UNK_02106570 +_020B3460: .word UNK_021CE4F4 +_020B3464: .word UNK_021CDD60 +_020B3468: .word UNK_021CDD64 +_020B346C: .word UNK_021CDDF4 +_020B3470: .word UNK_021CDD68 + + arm_func_start FUN_020B3474 +FUN_020B3474: ; 0x020B3474 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r4, [r5, #0x0] + bl FUN_020B2B58 + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x8 + beq _020B34E4 + ldr r0, _020B354C ; =UNK_021CDD6C + ldrsh r7, [r5, #0x1a] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x18] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B354C ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B34E4: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x4 + beq _020B3518 + ldrh r0, [r5, #0x1c] + ldr r2, _020B3550 ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3518: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x2 + beq _020B3534 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3534: + mov r0, r4 + bl FUN_020B3554 + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B354C: .word UNK_021CDD6C +_020B3550: .word UNK_020FFA38 + + arm_func_start FUN_020B3554 +FUN_020B3554: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x4a] + ldr r4, [r5, #0x2c] + cmp r0, #0x0 + bne _020B35C0 + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B35B0 + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35B0: + mov r0, r4 + bl FUN_020B36C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35C0: + bl FUN_020B2B58 + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x8 + beq _020B3610 + ldr r0, _020B36B8 ; =UNK_021CDD6C + ldrsh r7, [r5, #0x46] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x44] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B36B8 ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B3610: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x4 + beq _020B3644 + ldrh r0, [r5, #0x48] + ldr r2, _020B36BC ; =UNK_020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3644: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x2 + beq _020B3660 + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x40] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3660: + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B369C + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + b _020B36A4 +_020B369C: + mov r0, r4 + bl FUN_020B36C0 +_020B36A4: + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B36B4: .word UNK_02106574 +_020B36B8: .word UNK_021CDD6C +_020B36BC: .word UNK_020FFA38 + + arm_func_start FUN_020B36C0 +FUN_020B36C0: ; 0x020B36C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r5, _020B3B54 ; =UNK_021CDD6C + mov r10, r0 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x7c] + str r0, [sp, #0x0] + ldr r9, [r0, #0x70] + ands r0, r1, #0x2 + beq _020B38EC + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3840 + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3720 + ldr r2, _020B3B5C ; =UNK_02106570 + ldr r0, _020B3B60 ; =0x0000FFFE + ldrh r2, [r2, #0x0] + cmp r2, r0 + movne r0, #0x1 + bne _020B3724 +_020B3720: + mov r0, #0x0 +_020B3724: + cmp r0, #0x0 + beq _020B37AC + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r1, [r0, #0x404] + cmp r1, #0x0 + beq _020B3788 + ldrh r1, [r0, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + ldr r1, [r0, r1, lsl #0x2] + cmp r1, #0x0 + bne _020B37AC + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r2, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r1, _020B3B64 ; =UNK_021CE8F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r3, [r2, r0] + ldr r4, _020B3B74 ; =UNK_021CE4F4 + ldrh r2, [r1, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + add r1, r4, r3, lsl #0x5 + str r1, [r0, r2, lsl #0x2] + b _020B37AC +_020B3788: + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r2, _020B3B74 ; =UNK_021CE4F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r0, [r1, r0] + add r1, r2, r0, lsl #0x5 +_020B37AC: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r3, _020B3B78 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r3 + beq _020B37FC + ldr r2, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r2, #0x0] + ldr r3, _020B3B7C ; =UNK_021CDF04 + mul r4, r2, r0 + ldr r2, _020B3B80 ; =UNK_021CDF08 + ldr r3, [r3, r4] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r2, r4] + str r3, [r0, #0x10] + str r2, [r0, #0x14] +_020B37FC: + bl FUN_020B4FAC + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B3830 + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3830: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3840: + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r2, _020B3B78 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r2 + beq _020B38A8 + ldr r1, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r1, [r1, #0x0] + ldr r2, _020B3B7C ; =UNK_021CDF04 + mul r3, r1, r0 + ldr r1, _020B3B80 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r1, [r1, r3] + str r2, [r0, #0x10] + str r1, [r0, #0x14] +_020B38A8: + bl FUN_020B4FC4 + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B38DC + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38DC: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38EC: + cmp r9, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11,pc} + ldr r4, _020B3B6C ; =UNK_021CDD70 + ldr fp, _020B3B78 ; =UNK_021CDEF4 + mov r7, #0x0 + mov r6, #0x1 +_020B3908: + ldr r0, [r9, #0x10] + cmp r0, #0x0 + beq _020B3B40 + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3A8C + ldr r8, [r5, #0x0] + mov r1, r9 + str r9, [r8, #0x74] + mov r0, r8 + bl FUN_020B4F9C + ldr r1, [r9, #0x28] + ldr r2, [r9, #0x2c] + mov r0, r8 + bl FUN_020B5034 + mov r0, r8 + bl FUN_020B4E0C + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, r7 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3978 + ldr r0, _020B3B5C ; =UNK_02106570 + ldrh r2, [r0, #0x0] + ldr r0, _020B3B60 ; =0x0000FFFE + cmp r2, r0 + movne r0, r6 + bne _020B397C +_020B3978: + mov r0, r7 +_020B397C: + cmp r0, #0x0 + beq _020B3A04 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, [r0, #0x404] + cmp r0, #0x0 + beq _020B39E4 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldrh r1, [r0, #0x0] + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020B3A04 + bl FUN_020B4010 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r2, [r4, #0x0] + ldrh r1, [r0, #0x0] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r3, [r0, r2] + ldr r0, _020B3B64 ; =UNK_021CE8F4 + add r2, r0, r1, lsl #0x2 + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r3, lsl #0x5 + str r1, [r2, #0x4] + b _020B3A04 +_020B39E4: + bl FUN_020B4010 + ldr r0, [r4, #0x0] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r1, [r0, r1] + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r1, lsl #0x5 +_020B3A04: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r11 + beq _020B3A44 + ldr r2, [r4, #0x0] + mov r0, #0x18 + mla r8, r2, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r3, [r8, #0x10] + mov r2, r0 + str r3, [r2, #0x10] + ldr r3, [r8, #0x14] + str r3, [r2, #0x14] +_020B3A44: + bl FUN_020B4FAC + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3A74 + mov r0, r10 + bl FUN_020B4BF4 + b _020B3A7C +_020B3A74: + mov r0, r10 + bl FUN_020B4CDC +_020B3A7C: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 + b _020B3B40 +_020B3A8C: + ldr r8, [r5, #0x0] + mov r1, r9 + mov r0, r8 + str r9, [r8, #0x74] + bl FUN_020B4F9C + mov r0, r8 + bl FUN_020B4E0C + ldr r2, [r4, #0x0] + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r1, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r11 + beq _020B3AFC + ldr r1, [r4, #0x0] + mov r0, #0x18 + mla r3, r1, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r3, #0x10] + mov r1, r0 + str r2, [r1, #0x10] + ldr r2, [r3, #0x14] + str r2, [r1, #0x14] +_020B3AFC: + bl FUN_020B4FC4 + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3B2C + mov r0, r10 + bl FUN_020B4BF4 + b _020B3B34 +_020B3B2C: + mov r0, r10 + bl FUN_020B4CDC +_020B3B34: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 +_020B3B40: + ldr r9, [r9, #0x30] + cmp r9, #0x0 + bne _020B3908 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3B54: .word UNK_021CDD6C +_020B3B58: .word UNK_021CDD68 +_020B3B5C: .word UNK_02106570 +_020B3B60: .word 0x0000FFFE +_020B3B64: .word UNK_021CE8F4 +_020B3B68: .word UNK_021CE8F8 +_020B3B6C: .word UNK_021CDD70 +_020B3B70: .word UNK_021CDDF4 +_020B3B74: .word UNK_021CE4F4 +_020B3B78: .word UNK_021CDEF4 +_020B3B7C: .word UNK_021CDF04 +_020B3B80: .word UNK_021CDF08 +_020B3B84: .word UNK_02106578 +_020B3B88: .word UNK_02106574 +_020B3B8C: .word UNK_021CDD74 + + arm_func_start FUN_020B3B90 +FUN_020B3B90: ; 0x020B3B90 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r0, _020B3C24 ; =UNK_021CDD6C + mov r12, r1 + ldr r0, [r0, #0x0] + mov r3, r2 + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x44] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3C28 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3C2C ; =UNK_021CDD70 + ldreq r4, _020B3C30 ; =UNK_021CDEF4 + ldreq lr, [r2, #0x0] + moveq r2, #0x18 + mlaeq r6, lr, r2, r4 + beq _020B3C0C + ldr lr, _020B3C2C ; =UNK_021CDD70 + mov r2, #0x18 + ldr lr, [lr, #0x0] + ldr r4, _020B3C34 ; =UNK_021CDF04 + mul r5, lr, r2 + ldr r2, _020B3C38 ; =UNK_021CDF08 + ldr r4, [r4, r5] + ldr r6, _020B3C3C ; =UNK_02106578 + ldr r2, [r2, r5] + str r4, [r6, #0x10] + str r2, [r6, #0x14] +_020B3C0C: + str r6, [sp, #0x0] + ldr lr, [r1, #0x44] + mov r2, r12 + blx lr + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3C24: .word UNK_021CDD6C +_020B3C28: .word UNK_021CDD68 +_020B3C2C: .word UNK_021CDD70 +_020B3C30: .word UNK_021CDEF4 +_020B3C34: .word UNK_021CDF04 +_020B3C38: .word UNK_021CDF08 +_020B3C3C: .word UNK_02106578 + + arm_func_start FUN_020B3C40 +FUN_020B3C40: ; 0x020B3C40 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020B3E2C ; =UNK_021CDD6C + add r4, r0, #0x38 + ldr r0, [r3, #0x0] + mov r6, r1 + mov r5, r2 + bl FUN_020B278C + cmp r0, #0x0 + beq _020B3C90 + ldrh r1, [r4, #0x4] + and r1, r1, #0xf000 + mov r1, r1, lsl #0x4 + mov r1, r1, lsr #0x10 + bl FUN_020B10B0 + ldr r1, [r4, #0x4] + and r0, r0, #0xf + bic r1, r1, #0xf000 + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3C90: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + cmp r0, #0x0 + beq _020B3DA4 + ldr r0, [r1, #0x84] + ands r0, r0, #0x1 + beq _020B3CC8 + ldrh r0, [r1, #0x88] + ldr r1, [r4, #0x4] + bic r1, r1, #0xc00 + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0xa + str r0, [r4, #0x4] +_020B3CC8: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x2 + beq _020B3CF4 + ldrh r0, [r1, #0x8a] + ldr r1, [r4, #0x4] + bic r1, r1, #0xf000 + and r0, r0, #0xf + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3CF4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x10 + beq _020B3D2C + ldr r2, [r4, #0x4] + ldrh r0, [r1, #0x94] + mov r1, r2, lsl #0x10 + bic r2, r2, #0xf000 + add r0, r0, r1, lsr #0x1c + and r0, r0, #0xf + and r0, r0, #0xf + orr r0, r2, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3D2C: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x4 + beq _020B3D60 + ldr r0, [r1, #0x90] + cmp r0, #0x0 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x1000 + strne r0, [r4, #0x0] + ldreq r0, [r4, #0x0] + biceq r0, r0, #0x1000 + streq r0, [r4, #0x0] +_020B3D60: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x8 + beq _020B3DA4 + ldr r0, [r4, #0x0] + ldrh r2, [r4, #0x4] + ldr r1, [r1, #0x8c] + bic r0, r0, #0xc00 + orr r0, r0, r1, lsl #0xa + str r0, [r4, #0x0] + ldrh r0, [r4, #0x4] + and r1, r2, #0xf000 + mov r1, r1, asr #0xc + bic r0, r0, #0xf000 + orr r0, r0, r1, lsl #0xc + strh r0, [r4, #0x4] +_020B3DA4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x40] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3E30 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3E34 ; =UNK_021CDD70 + ldreq r4, _020B3E38 ; =UNK_021CDEF4 + ldreq r3, [r2, #0x0] + moveq r2, #0x18 + mlaeq r4, r3, r2, r4 + beq _020B3E10 + ldr r3, _020B3E34 ; =UNK_021CDD70 + mov r2, #0x18 + ldr r4, [r3, #0x0] + ldr r3, _020B3E3C ; =UNK_021CDF04 + mul r12, r4, r2 + ldr r2, _020B3E40 ; =UNK_021CDF08 + ldr r3, [r3, r12] + ldr r4, _020B3E44 ; =UNK_02106578 + ldr r2, [r2, r12] + str r3, [r4, #0x10] + str r2, [r4, #0x14] +_020B3E10: + str r4, [sp, #0x0] + ldr r4, [r1, #0x40] + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3E2C: .word UNK_021CDD6C +_020B3E30: .word UNK_021CDD68 +_020B3E34: .word UNK_021CDD70 +_020B3E38: .word UNK_021CDEF4 +_020B3E3C: .word UNK_021CDF04 +_020B3E40: .word UNK_021CDF08 +_020B3E44: .word UNK_02106578 + + arm_func_start FUN_020B3E48 +FUN_020B3E48: ; 0x020B3E48 + stmdb sp!, {r4,lr} + ldr r0, _020B3EC4 ; =UNK_021CDD6C + mov r2, r1 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r3, [r1, #0x3c] + cmp r3, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020B3EC8 ; =UNK_021CDD68 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + ldreq r3, _020B3ECC ; =UNK_021CDD70 + ldreq lr, _020B3ED0 ; =UNK_021CDEF4 + ldreq r12, [r3, #0x0] + moveq r3, #0x18 + mlaeq r3, r12, r3, lr + beq _020B3EB8 + ldr ip, _020B3ECC ; =UNK_021CDD70 + mov r3, #0x18 + ldr r12, [r12, #0x0] + ldr lr, _020B3ED4 ; =UNK_021CDF04 + mul r4, r12, r3 + ldr ip, _020B3ED8 ; =UNK_021CDF08 + ldr lr, [lr, r4] + ldr r3, _020B3EDC ; =UNK_02106578 + ldr r12, [r12, r4] + str lr, [r3, #0x10] + str r12, [r3, #0x14] +_020B3EB8: + ldr r12, [r1, #0x3c] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020B3EC4: .word UNK_021CDD6C +_020B3EC8: .word UNK_021CDD68 +_020B3ECC: .word UNK_021CDD70 +_020B3ED0: .word UNK_021CDEF4 +_020B3ED4: .word UNK_021CDF04 +_020B3ED8: .word UNK_021CDF08 +_020B3EDC: .word UNK_02106578 + + arm_func_start FUN_020B3EE0 +FUN_020B3EE0: ; 0x020B3EE0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B3FF4 ; =UNK_021CDD6C + mov r6, r0 + ldr r0, [r2, #0x0] + mov r5, r1 + ldr r4, [r0, #0x74] + ldr r0, [r4, #0x34] + cmp r0, #0x0 + beq _020B3F7C + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r1, _020B4000 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r1, r2, r0, r1 + beq _020B3F54 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r3, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r2, [r1, r3] + ldr r1, _020B400C ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r1, #0x10] + str r0, [r1, #0x14] +_020B3F54: + ldr r3, [r4, #0x34] + mov r0, r5 + mov r2, r4 + blx r3 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r6, #0x30] + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r6, #0x30] +_020B3F7C: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r2, _020B4000 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r3, r1, r0, r2 + beq _020B3FD8 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r6, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r1, [r1, r6] + ldr r3, _020B400C ; =UNK_02106578 + ldr r0, [r0, r6] + str r1, [r3, #0x10] + str r0, [r3, #0x14] +_020B3FD8: + ldr r0, _020B3FF4 ; =UNK_021CDD6C + ldr r6, [r4, #0x38] + ldr r0, [r0, #0x0] + mov r1, r4 + mov r2, r5 + blx r6 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3FF4: .word UNK_021CDD6C +_020B3FF8: .word UNK_021CDD68 +_020B3FFC: .word UNK_021CDD70 +_020B4000: .word UNK_021CDEF4 +_020B4004: .word UNK_021CDF04 +_020B4008: .word UNK_021CDF08 +_020B400C: .word UNK_02106578 + + arm_func_start FUN_020B4010 +FUN_020B4010: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4158 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r0, lsl #0x10 + add r3, r1, r0, lsr #0xd + ldrh r0, [r3, #0x4] + cmp r0, #0x1 + beq _020B4044 + cmp r0, #0x2 + movne r2, #0x0 +_020B4044: + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B415C ; =UNK_021CDD60 + mov r2, #0x10 + ldrh r4, [r0, #0x0] + cmp r4, #0x1f + addcc r1, r4, #0x1 + strcch r1, [r0, #0x0] + ldr r0, _020B4160 ; =UNK_021CE4F4 + ldrh r5, [r3, #0x2] + add r0, r0, r4, lsl #0x5 + add r1, r0, #0x10 + mvn r0, #0x0 + strh r4, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4164 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsl #0x10 + cmp r2, #0x0 + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r1, r1, lsr #0xd + ldrh r1, [r3, r1] + ldr r3, _020B4160 ; =UNK_021CE4F4 + moveq r2, #0x18 + add r1, r3, r1, lsl #0x5 + ldreq r3, _020B4168 ; =UNK_021CE1F4 + mlaeq r12, r0, r2, r3 + beq _020B40E4 + mov r2, #0x18 + mul r3, r0, r2 + ldr r2, _020B416C ; =UNK_021CDF04 + ldr r0, _020B4170 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr ip, _020B4174 ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r12, #0x10] + str r0, [r12, #0x14] +_020B40E4: + ldr r2, [r12, #0x0] + ldr r0, _020B4154 ; =UNK_021CDD70 + str r2, [r1, #0x0] + ldr r2, [r12, #0x4] + str r2, [r1, #0x4] + ldr r2, [r12, #0x8] + str r2, [r1, #0x8] + ldr r2, [r12, #0xc] + str r2, [r1, #0xc] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + movs lr, r0, lsr #0x10 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r5,pc} + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r0, #0x3 +_020B4124: + add r2, r3, lr, lsl #0x3 + ldrh r1, [r2, #0x2] + mov r12, lr, lsl #0x3 + cmp r5, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + strh r0, [r2, #0x4] + strh r4, [r3, r12] + subs lr, lr, #0x1 + bpl _020B4124 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4154: .word UNK_021CDD70 +_020B4158: .word UNK_021CDDF4 +_020B415C: .word UNK_021CDD60 +_020B4160: .word UNK_021CE4F4 +_020B4164: .word UNK_021CDD68 +_020B4168: .word UNK_021CE1F4 +_020B416C: .word UNK_021CDF04 +_020B4170: .word UNK_021CDF08 +_020B4174: .word UNK_02106578 + + arm_func_start FUN_020B4178 +FUN_020B4178: ; 0x020B4178 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4220 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B41B8 + ldr r1, _020B4224 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r12, [r1, #0x0] + ldr r1, _020B4228 ; =UNK_021CDF04 + mul r3, r12, r0 + mov r2, #0x0 + ldr r0, _020B422C ; =UNK_021CDF08 + str r2, [r1, r3] + str r2, [r0, r3] + b _020B420C +_020B41B8: + ldr r0, _020B4224 ; =UNK_021CDD70 + mov lr, #0x18 + ldr r1, [r0, #0x0] + ldr r4, _020B4230 ; =UNK_021CDEF4 + mul r3, r1, lr + mov r2, #0x1000 + str r2, [r4, r3] + add r5, r4, r3 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r2, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + ldr r12, [r0, #0x0] + ldr r4, _020B4234 ; =UNK_021CE1F4 + ldmia r5!, {r0-r3} + mla lr, r12, lr, r4 + stmia lr!, {r0-r3} + ldmia r5, {r0-r1} + stmia lr, {r0-r1} +_020B420C: + ldr r0, _020B4238 ; =UNK_021CDD74 + mov r1, #0x0 + str r1, [r0, r12, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4220: .word UNK_021CDD68 +_020B4224: .word UNK_021CDD70 +_020B4228: .word UNK_021CDF04 +_020B422C: .word UNK_021CDF08 +_020B4230: .word UNK_021CDEF4 +_020B4234: .word UNK_021CE1F4 +_020B4238: .word UNK_021CDD74 + + arm_func_start FUN_020B423C +FUN_020B423C: ; 0x020B423C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + ldr r4, [r0, #0x4] + ldr r3, [r1, #0x8] + mov r12, r2 + smull r6, r5, r4, r3 + ldr r4, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r5, r4, r3 + mov r3, r6, lsr #0xc + addeq r2, sp, #0x0 + orr r3, r3, r5, lsl #0x14 + str r3, [r2, #0x0] + ldr r4, [r0, #0x4] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x0] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + add lr, sp, #0x0 + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + cmp r2, lr + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x8] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x10] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + ldr r4, [r1, #0x10] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + add r3, r4, r3 + str r3, [r2, #0x10] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x10] + ldr r0, [r1, #0x4] + smull r6, r3, r4, r3 + smlal r6, r3, r5, r0 + mov r0, r6, lsr #0xc + ldr r1, [r1, #0x14] + orr r0, r0, r3, lsl #0x14 + add r0, r1, r0 + str r0, [r2, #0x14] + ldmeqia lr!, {r0-r3} + stmeqia r12!, {r0-r3} + ldmeqia lr, {r0-r1} + stmeqia r12, {r0-r1} + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B4358 +FUN_020B4358: ; 0x020B4358 + stmdb sp!, {r4,lr} + ldr r2, _020B43A0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r4, r0, r1, r2 + mov r0, r4 + bl FUN_020B10CC + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + .balign 4 +_020B43A0: .word UNK_021CED04 + + arm_func_start FUN_020B43A4 +FUN_020B43A4: ; 0x020B43A4 + ldr r1, _020B43F8 ; =UNK_021CED00 + mov r0, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bls _020B43F0 + ldr r1, _020B43FC ; =UNK_021CED04 + ldr r2, [r1, #0x0] + mov r12, r2 +_020B43C4: + ldr r1, [r12, #0x1c] + cmp r1, #0x1 + movne r1, #0x30 + mlane r1, r0, r1, r2 + movne r2, #0x1 + strne r2, [r1, #0x1c] + bxne lr + add r0, r0, #0x1 + cmp r0, r3 + add r12, r12, #0x30 + blo _020B43C4 +_020B43F0: + mvn r0, #0x0 + bx lr + .balign 4 +_020B43F8: .word UNK_021CED00 +_020B43FC: .word UNK_021CED04 + + arm_func_start FUN_020B4400 +FUN_020B4400: ; 0x020B4400 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + bl FUN_020B469C + mvn r1, #0x0 + str r1, [r0, #0x24] + str r5, [r0, #0x28] + str r4, [r0, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B442C +FUN_020B442C: ; 0x020B442C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + ldr r0, [sp, #0x0] + mov r5, #0x1 + str r0, [sp, #0x4] + mov r11, r0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] +_020B4468: + ldr r0, _020B455C ; =UNK_021CED04 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r8, r1, r0 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B4528 + ldr r9, [sp, #0x8] + mov r0, r9 + cmp r0, #0x3 + bge _020B4520 + add r4, r8, #0x24 +_020B4498: + mov r6, r5, lsl r9 + mov r1, r11 + ldr r0, [r8, #0x24] + ands r0, r0, r6 + beq _020B44B8 + ldr r0, [r8, #0x20] + ands r0, r0, r6 + movne r1, r5 +_020B44B8: + cmp r1, #0x0 + beq _020B4514 + ldr r0, _020B4560 ; =UNK_020FF8C4 + cmp r9, #0x0 + ldr r7, [r0, r9, lsl #0x2] + ldreq r10, [r8, #0x14] + mov r0, r8 + mov r1, r9 + ldrne r10, [r8, #0x10] + bl FUN_020B10BC + mov r1, r0 + mov r0, r7 + ldr r7, _020B4564 ; =UNK_021CECFC + ldr r2, [r8, #0x28] + ldr r3, [r8, #0x2c] + ldr r7, [r7, #0x0] + add r2, r10, r2 + blx r7 + cmp r0, #0x0 + ldrne r1, [r4, #0x0] + mvnne r0, r6 + andne r0, r1, r0 + strne r0, [r4, #0x0] +_020B4514: + add r9, r9, #0x1 + cmp r9, #0x3 + blt _020B4498 +_020B4520: + ldr r0, [sp, #0xc] + str r0, [r8, #0x20] +_020B4528: + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, r1 + ldr r0, [sp, #0x4] + add r0, r0, #0x30 + str r0, [sp, #0x4] + blo _020B4468 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B4558: .word UNK_021CED00 +_020B455C: .word UNK_021CED04 +_020B4560: .word UNK_020FF8C4 +_020B4564: .word UNK_021CECFC + + arm_func_start FUN_020B4568 +FUN_020B4568: ; 0x020B4568 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B45E4 ; =UNK_021CECFC + movs r6, r1 + ldr r1, _020B45E8 ; =UNK_021CED00 + ldr r3, _020B45EC ; =UNK_021CED04 + mov r7, r0 + str r2, [r12, #0x0] + mov r5, #0x0 + addeq sp, sp, #0x4 + str r7, [r3, #0x0] + str r6, [r1, #0x0] + ldmeqia sp!, {r4-r7,pc} + mov r4, r5 +_020B45A0: + mov r0, r7 + bl FUN_020B10CC + str r4, [r7, #0xc] + str r4, [r7, #0x10] + str r4, [r7, #0x14] + str r4, [r7, #0x18] + str r4, [r7, #0x1c] + str r4, [r7, #0x20] + str r4, [r7, #0x24] + str r4, [r7, #0x28] + add r5, r5, #0x1 + str r4, [r7, #0x2c] + cmp r5, r6 + add r7, r7, #0x30 + blo _020B45A0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B45E4: .word UNK_021CECFC +_020B45E8: .word UNK_021CED00 +_020B45EC: .word UNK_021CED04 + + arm_func_start FUN_020B45F0 +FUN_020B45F0: ; 0x020B45F0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B4698 ; =UNK_021CED04 + mov r4, #0x30 + ldr r12, [r12, #0x0] + mov r7, r1 + mla r4, r0, r4, r12 + mov r0, r4 + mov r6, r2 + mov r5, r3 + bl FUN_020B10CC + mvn r0, #0x0 + cmp r7, r0 + beq _020B4638 + mov r0, r4 + mov r2, r7 + mov r1, #0x0 + bl FUN_020B10C4 +_020B4638: + mvn r0, #0x0 + cmp r6, r0 + beq _020B4654 + mov r0, r4 + mov r2, r6 + mov r1, #0x1 + bl FUN_020B10C4 +_020B4654: + mvn r0, #0x0 + cmp r5, r0 + beq _020B4670 + mov r0, r4 + mov r2, r5 + mov r1, #0x2 + bl FUN_020B10C4 +_020B4670: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0xc] + ldr r1, [sp, #0x20] + str r0, [r4, #0x10] + ldr r0, [sp, #0x24] + str r1, [r4, #0x14] + str r0, [r4, #0x18] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4698: .word UNK_021CED04 + + arm_func_start FUN_020B469C +FUN_020B469C: ; 0x020B469C + ldr r2, _020B46B0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r0, r1, r0, r2 + bx lr + .balign 4 +_020B46B0: .word UNK_021CED04 + + arm_func_start FUN_020B46B4 +FUN_020B46B4: ; 0x020B46B4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + add r12, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r7, r3 + mov r6, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + mov r0, r7 + str r12, [sp, #0x0] + bl FUN_020B498C + ldr r2, [r7, #0x0] + and r1, r2, #0x300 + cmp r1, #0x100 + beq _020B4708 + cmp r1, #0x300 + beq _020B4708 + and r0, r2, #0x30000000 + orr r1, r1, r0 +_020B4708: + cmp r1, #0x300 + bne _020B478C + ldr r0, _020B4914 ; =0xC000C000 + ldr r1, _020B4918 ; =UNK_021CED08 + and r0, r2, r0 + and r2, r0, #0xc0000000 + mov r12, r2, lsr #0x1e + and r0, r0, #0xc000 + mov lr, r0, asr #0xe + ldr r3, _020B491C ; =UNK_020FF8AC + ldr r0, [r1, #0x0] + ldr r2, _020B4920 ; =UNK_020FF894 + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + mov r12, r12, lsl #0x1 + add r1, r2, lr, lsl #0x3 + add r3, r3, lr, lsl #0x3 + ldrh r2, [r12, r3] + ldrh r1, [r12, r1] + ldrne r0, [r0, #0x0] + mov r2, r2, asr #0x1 + addne r3, r0, r4, lsl #0xc + mov r1, r1, asr #0x1 + add r0, r5, r1 + add r2, r6, r2 + ldr r1, _020B4928 ; =0x04000470 + mov r2, r2, lsl #0xc + str r2, [r1, #0x0] + mov r0, r0, lsl #0xc + moveq r3, r4, lsl #0xc + str r0, [r1, #0x0] + str r3, [r1, #0x0] + b _020B47C0 +_020B478C: + ldr r0, _020B4918 ; =UNK_021CED08 + ldr r1, _020B4928 ; =0x04000470 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + ldrne r0, [r0, #0x0] + addne r2, r0, r4, lsl #0xc + mov r0, r6, lsl #0xc + str r0, [r1, #0x0] + mov r0, r5, lsl #0xc + moveq r2, r4, lsl #0xc + str r0, [r1, #0x0] + str r2, [r1, #0x0] +_020B47C0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, _020B492C ; =0x0400046C + mov r0, r0, lsl #0xc + str r0, [r2, #0x0] + mov r0, r1, lsl #0xc + str r0, [r2, #0x0] + mov r1, #0x1000 + str r1, [r2, #0x0] + ldr r0, _020B4930 ; =0x04000500 + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x10] + mov r0, r0, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r2, r2, r0, lsl #0x10 + ldr r1, _020B4934 ; =0x04000488 + ldr r0, _020B4938 ; =0x04000490 + str r2, [r1, #0x0] + mov r2, #0x10000 + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r3, r4, r2, lsl #0x10 + ldr r2, _020B493C ; =0x00010040 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x40 + str r2, [r0, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _020B4940 ; =0x04000504 + ldr r0, _020B4918 ; =UNK_021CED08 + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r7,pc} + ldr r1, _020B4924 ; =UNK_021CED10 + ldr r0, _020B4944 ; =UNK_02106590 + ldr r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r2, r0 + str r0, [r1, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4914: .word 0xC000C000 +_020B4918: .word UNK_021CED08 +_020B491C: .word UNK_020FF8AC +_020B4920: .word UNK_020FF894 +_020B4924: .word UNK_021CED10 +_020B4928: .word 0x04000470 +_020B492C: .word 0x0400046C +_020B4930: .word 0x04000500 +_020B4934: .word 0x04000488 +_020B4938: .word 0x04000490 +_020B493C: .word 0x00010040 +_020B4940: .word 0x04000504 +_020B4944: .word UNK_02106590 + + arm_func_start FUN_020B4948 +FUN_020B4948: + ldr r0, _020B4954 ; =UNK_02106590 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020B4954: .word UNK_02106590 + + arm_func_start FUN_020B4958 +FUN_020B4958: + ldr r1, _020B4964 ; =UNK_02106590 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4964: .word UNK_02106590 + + arm_func_start FUN_020B4968 +FUN_020B4968: ; 0x020B4968 + ldr r0, _020B4978 ; =UNK_021CED10 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4978: .word UNK_021CED10 + + arm_func_start FUN_020B497C +FUN_020B497C: + ldr r1, _020B4988 ; =UNK_021CED08 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4988: .word UNK_021CED08 + + arm_func_start FUN_020B498C +FUN_020B498C: ; 0x020B498C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r4, [r6, #0x0] + ldr r0, _020B4BCC ; =0xC000C000 + ldr r5, [r6, #0x4] + and r4, r4, r0 + and r0, r4, #0xc0000000 + and r4, r4, #0xc000 + mov lr, r0, lsr #0x1e + ldr r0, _020B4BD0 ; =UNK_020FF8AC + mov r12, r4, asr #0xe + ldr r8, _020B4BD4 ; =UNK_020FF894 + mov r4, lr, lsl #0x1 + add r0, r0, r12, lsl #0x3 + ldrh r9, [r4, r0] + ldr r0, [sp, #0x28] + mov r5, r5, lsl #0x16 + mov r5, r5, lsr #0x16 + mov r7, r5, lsl #0x10 + str r9, [r0, #0x10] + add r5, r8, r12, lsl #0x3 + ldrh r8, [r4, r5] + mov r5, r1 + mov r4, r3 + str r8, [r0, #0x14] + ldr r1, [r5, #0x14] + mov r7, r7, lsr #0x10 + cmp r1, #0x0 + bne _020B4A74 + ldr r1, [r5, #0x8] + mov r2, r2, lsr #0x3 + orr r1, r2, r1, lsl #0x1a + ldr r2, [r5, #0x0] + orr r1, r1, #0x40000000 + ldr r3, [r5, #0x4] + orr r1, r1, r2, lsl #0x14 + orr r2, r1, r3, lsl #0x17 + ldr r8, [r5, #0x10] + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r8, lsl #0x1d + str r2, [r1, #0x0] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x0] + cmp r1, #0x4 + moveq r1, r7, lsl #0xf + moveq r7, r1, lsr #0x10 + ldr r1, _020B4BDC ; =UNK_020FF8D8 + ldr r1, [r1, r2, lsl #0x2] + sub r1, r1, #0x1 + and r1, r7, r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + mov r1, r7, asr r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x4] + b _020B4AE0 +_020B4A74: + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + mov r12, r12, lsl #0x10 + add r1, r1, #0x5 + ldr r3, [r5, #0x8] + mov lr, lr, lsl #0x10 + ldr sb, _020B4BE0 ; =UNK_020FF8F8 + mov r12, r12, lsr #0x10 + ldr r8, _020B4BE4 ; =UNK_020FF928 + add r1, r2, r7, lsl r1 + mov r2, r3, lsl #0x1a + orr r3, r2, r1, lsr #0x3 + mov r7, lr, lsr #0x10 + add r2, r9, r12, lsl #0x4 + add r1, r8, r12, lsl #0x4 + ldr r2, [r2, r7, lsl #0x2] + orr r3, r3, #0x40000000 + ldr r1, [r1, r7, lsl #0x2] + orr r2, r3, r2, lsl #0x14 + ldr r3, [r5, #0x10] + orr r2, r2, r1, lsl #0x17 + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r3, lsl #0x1d + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020B4AE0: + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x10] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0x8] + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x14] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0xc] + ldr r1, [r6, #0x0] + mov r2, r1, lsl #0x2 + mov r1, r1, lsl #0x3 + movs r3, r1, lsr #0x1f + mov r12, r2, lsr #0x1f + ldrne r2, [r0, #0x0] + ldrne r1, [r0, #0x8] + strne r1, [r0, #0x0] + strne r2, [r0, #0x8] + cmp r12, #0x0 + ldrne r2, [r0, #0x4] + ldrne r1, [r0, #0xc] + strne r1, [r0, #0x4] + ldr r1, _020B4BE8 ; =UNK_021CED0C + strne r2, [r0, #0xc] + ldr r7, [r1, #0x0] + cmp r7, #0x0 + beq _020B4B60 + str r3, [sp, #0x0] + add r1, r0, #0x4 + add r2, r0, #0x8 + add r3, r0, #0xc + str r12, [sp, #0x4] + blx r7 +_020B4B60: + ldr r0, [r6, #0x4] + ldr r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x1c + mov r3, r1, lsl #0x12 + ldr r1, [r5, #0xc] + mov r0, r0, lsl #0x10 + ldr r2, _020B4BEC ; =UNK_020FF8D0 + mov r3, r3, lsr #0x1f + cmp r1, #0x0 + mov r0, r0, lsr #0x10 + ldr r1, [r2, r3, lsl #0x2] + movne r0, r0, lsl #0x9 + bne _020B4BA4 + cmp r1, #0x4 + moveq r0, #0x0 + movne r0, r0, lsl #0x5 +_020B4BA4: + cmp r1, #0x2 + moveq r2, #0x1 + movne r2, #0x0 + add r1, r4, r0 + rsb r0, r2, #0x4 + mov r1, r1, lsr r0 + ldr r0, _020B4BF0 ; =0x040004AC + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B4BCC: .word 0xC000C000 +_020B4BD0: .word UNK_020FF8AC +_020B4BD4: .word UNK_020FF894 +_020B4BD8: .word 0x040004A8 +_020B4BDC: .word UNK_020FF8D8 +_020B4BE0: .word UNK_020FF8F8 +_020B4BE4: .word UNK_020FF928 +_020B4BE8: .word UNK_021CED0C +_020B4BEC: .word UNK_020FF8D0 +_020B4BF0: .word 0x040004AC + + arm_func_start FUN_020B4BF4 +FUN_020B4BF4: ; 0x020B4BF4 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B4CD8 ; =UNK_021CED14 + mov r6, r0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r5, [r3, #0x0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r3, #0x30] + ldr r3, [r5, #0x18] + cmp r3, #0x0 + beq _020B4C38 + ldr r0, [r2, #0x0] + mov r1, r6 + blx r3 +_020B4C38: + ldr r0, _020B4CD8 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4CB8 + mvn r0, #0x0 + cmp r4, r0 + beq _020B4C7C + mov r0, r4 + ldr r4, [r5, #0x14] + bl FUN_020B469C + mov r3, #0x1 + mvn r1, r3, lsl r4 + ldr r2, [r0, #0x20] + and r1, r2, r1 + orr r1, r1, r3, lsl r4 + str r1, [r0, #0x20] +_020B4C7C: + ldr r0, [r5, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4CB8 +_020B4C8C: + b _020B4C9C +_020B4C90: + b _020B4CAC +_020B4C94: + b _020B4CAC +_020B4C98: + b _020B4CB8 +_020B4C9C: + mov r0, r5 + mov r1, r6 + bl FUN_020B5090 + b _020B4CB8 +_020B4CAC: + mov r0, r5 + mov r1, r6 + bl FUN_020B53B4 +_020B4CB8: + ldr r2, [r5, #0x1c] + cmp r2, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B4CD8 ; =UNK_021CED14 + mov r1, r6 + ldr r0, [r0, #0x0] + blx r2 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B4CD8: .word UNK_021CED14 + + arm_func_start FUN_020B4CDC +FUN_020B4CDC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B4D9C ; =UNK_021CED14 + mov r5, r0 + ldr r2, [r1, #0x0] + ldr r4, [r2, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, #0x1 + str r0, [r2, #0x30] + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _020B4D24 + ldr r0, [r1, #0x0] + mov r1, r5 + blx r2 +_020B4D24: + ldr r0, _020B4D9C ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4D74 + ldr r0, [r4, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4D74 +_020B4D48: + b _020B4D58 +_020B4D4C: + b _020B4D68 +_020B4D50: + b _020B4D68 +_020B4D54: + b _020B4D74 +_020B4D58: + mov r0, r4 + mov r1, r5 + bl FUN_020B5090 + b _020B4D74 +_020B4D68: + mov r0, r4 + mov r1, r5 + bl FUN_020B53B4 +_020B4D74: + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B4D9C ; =UNK_021CED14 + mov r1, r5 + ldr r0, [r0, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4D9C: .word UNK_021CED14 + + arm_func_start FUN_020B4DA0 +FUN_020B4DA0: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =UNK_021CED14 + ldr r3, [r0, #0x0] + ldr r1, [r3, #0x0] + ldr r1, [r1, #0x14] + cmp r1, #0x0 + bne _020B4DD8 + ldr r2, _020B4E04 ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4E08 ; =0x04000448 + str r1, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + b _020B4DF0 +_020B4DD8: + mov r2, #0x0 + str r2, [r3, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x2c] + ldr r0, [r0, #0x0] + str r2, [r0, #0x28] +_020B4DF0: + ldr r0, _020B4E00 ; =UNK_021CED14 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4E00: .word UNK_021CED14 +_020B4E04: .word 0x04000440 +_020B4E08: .word 0x04000448 + + arm_func_start FUN_020B4E0C +FUN_020B4E0C: ; 0x020B4E0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020B4F28 ; =UNK_021CED14 + mov r4, r0 + str r4, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r5, [r0, #0x14] + cmp r5, #0x0 + bne _020B4ED8 + ldr lr, _020B4F2C ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4F30 ; =0x04000444 + str r1, [lr, #0x0] + str r1, [r0, #0x0] + ldr r12, [r4, #0x0] + ldr r0, _020B4F34 ; =0x04000470 + ldr r3, [r12, #0x0] + ldr r12, [r12, #0x4] + rsb r3, r3, #0x0 + str r3, [r0, #0x0] + rsb r3, r12, #0x0 + str r3, [r0, #0x0] + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [lr, #0x0] + ldr r0, [r2, #0x0] + ldr r5, [r0, #0x8] + mov r0, r5 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4E98 + mov r0, r5 + mov r1, #0x0 + bl FUN_020B1A14 +_020B4E98: + ldr r1, _020B4F28 ; =UNK_021CED14 + str r0, [r4, #0x14] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r5, [r0, #0xc] + mov r0, r5 + bl FUN_020B19A8 + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4ECC + mov r0, r5 + mov r1, #0x0 + bl FUN_020B19C4 +_020B4ECC: + add sp, sp, #0x4 + str r0, [r4, #0x18] + ldmia sp!, {r4-r5,pc} +_020B4ED8: + ldr r4, [r4, #0x8] + mov r1, r5 + mov r0, r4 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r1, #0x0 + beq _020B4F14 + mov r0, r4 + mov r1, r5 + bl FUN_020B1A14 + ldr r1, [r4, #0x20] + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + add r1, r1, #0x5 + mov r1, r0, lsr r1 +_020B4F14: + ldr r0, _020B4F28 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4F28: .word UNK_021CED14 +_020B4F2C: .word 0x04000440 +_020B4F30: .word 0x04000444 +_020B4F34: .word 0x04000470 + + arm_func_start FUN_020B4F38 +FUN_020B4F38: ; 0x020B4F38 + cmp r1, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x1 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x1 + streq r1, [r0, #0x24] + cmp r2, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x2 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x2 + streq r1, [r0, #0x24] + bx lr + + arm_func_start FUN_020B4F74 +FUN_020B4F74: + ldr r0, [r0, #0x24] + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F88 +FUN_020B4F88: + ldr r0, [r0, #0x24] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F9C +FUN_020B4F9C: ; 0x020B4F9C + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020B4FA4 +FUN_020B4FA4: ; 0x020B4FA4 + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020B4FAC +FUN_020B4FAC: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =UNK_021CED14 + ldr r2, [r2, #0x0] + str r0, [r2, #0x2c] + str r1, [r2, #0x28] + bx lr + .balign 4 +_020B4FC0: .word UNK_021CED14 + + arm_func_start FUN_020B4FC4 +FUN_020B4FC4: ; 0x020B4FC4 + ldr r1, _020B5028 ; =UNK_021CED14 + mov r3, #0x0 + ldr r12, [r1, #0x0] + mov r1, #0x1000 + str r0, [r12, #0x2c] + ldr r2, [r0, #0x0] + str r2, [r12, #0x40] + ldr r2, [r0, #0x4] + str r2, [r12, #0x44] + str r3, [r12, #0x48] + ldr r2, [r0, #0x8] + str r2, [r12, #0x4c] + ldr r2, [r0, #0xc] + str r2, [r12, #0x50] + str r3, [r12, #0x54] + str r3, [r12, #0x58] + str r3, [r12, #0x5c] + str r1, [r12, #0x60] + ldr r1, [r0, #0x10] + str r1, [r12, #0x64] + ldr r0, [r0, #0x14] + str r0, [r12, #0x68] + ldr r0, [r12, #0x34] + str r0, [r12, #0x6c] + bx lr + .balign 4 +_020B5028: .word UNK_021CED14 + + arm_func_start FUN_020B502C +FUN_020B502C: ; 0x020B502C + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B5034 +FUN_020B5034: ; 0x020B5034 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + + arm_func_start FUN_020B5040 +FUN_020B5040: ; 0x020B5040 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + + arm_func_start FUN_020B504C +FUN_020B504C: ; 0x020B504C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x70 + bl MIi_CpuClear16 + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x2 + str r0, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x30] + str r1, [r4, #0x28] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B5090 +FUN_020B5090: ; 0x020B5090 + stmdb sp!, {r4-r10,lr} + ldr r5, _020B5158 ; =UNK_021CED14 + mov r9, r1 + ldrh r1, [r9, #0x0] + ldr r2, [r5, #0x0] + mov r10, r0 + add r7, r2, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + ldmlsia sp!, {r4-r10,pc} + mov r6, #0x1 + mov r4, #0x6 +_020B50C0: + mul r1, r8, r4 + ldr r0, [r5, #0x0] + str r6, [r0, #0x30] + ldr r2, [r9, #0x4] + ldrh r0, [r2, r1] + add r1, r2, r1 + strh r0, [r7, #0x0] + ldrh r0, [r1, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r1, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B5108 + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B5108: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5120 + mov r0, r7 + bl FUN_020B515C +_020B5120: + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B513C + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B513C: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r9, #0x0] + mov r8, r0, lsr #0x10 + cmp r8, r1 + blo _020B50C0 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5158: .word UNK_021CED14 + + arm_func_start FUN_020B515C +FUN_020B515C: ; 0x020B515C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r1, _020B53A4 ; =UNK_021CED14 + mov r7, r0 + ldr r0, [r1, #0x0] + add r0, r0, #0x40 + bl G3_LoadMtx43 + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B533C + ldr r2, [r7, #0x0] + ldr r1, _020B53A8 ; =0xC000C000 + and r4, r2, r1 + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B51F4 + ldr r0, [r7, #0x0] + and r2, r4, #0xc000 + mov r0, r0, lsl #0x7 + mov r3, r0, lsr #0x17 + and r1, r4, #0xc0000000 + mov r1, r1, lsr #0x1e + ldr r0, _020B53AC ; =UNK_020FF8AC + mov r2, r2, asr #0xe + mov r1, r1, lsl #0x1 + add r0, r0, r2, lsl #0x3 + cmp r3, #0xff + ldrh r1, [r1, r0] + orrgt r0, r3, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r3, r0, asr #0x10 + add r0, r3, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + b _020B5218 +_020B51F4: + ldr r0, [r7, #0x0] + mov r0, r0, lsl #0x7 + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 +_020B5218: + ldr r0, _020B53A4 ; =UNK_021CED14 + mov r1, r1, lsl #0x10 + ldr r0, [r0, #0x0] + mov r6, r1, asr #0x10 + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B527C + and r1, r4, #0xc000 + and r0, r4, #0xc0000000 + ldrb r4, [r7, #0x0] + ldr r2, _020B53B0 ; =UNK_020FF894 + mov r0, r0, lsr #0x1e + mov r3, r1, asr #0xe + mov r1, r0, lsl #0x1 + add r0, r2, r3, lsl #0x3 + cmp r4, #0x7f + ldrh r1, [r1, r0] + orrgt r0, r4, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r4, r0, asr #0x10 + add r0, r4, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + b _020B5298 +_020B527C: + ldrb r0, [r7, #0x0] + cmp r0, #0x7f + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_020B5298: + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + mov r5, r1, lsl #0x3 + bl FUN_020B4F88 + ldr r2, [r7, #0x0] + ldr r1, _020B53A4 ; =UNK_021CED14 + eor r5, r0, r5, lsr #0x1f + ldr r0, [r1, #0x0] + mov r8, r2, lsl #0x2 + bl FUN_020B4F74 + ldr r2, [r7, #0x0] + eor r1, r0, r8, lsr #0x1f + bic r0, r2, #0x10000000 + str r0, [r7, #0x0] + ldr r2, [r7, #0x0] + ldr r3, _020B53A4 ; =UNK_021CED14 + orr r2, r2, r5, lsl #0x1c + str r2, [r7, #0x0] + ldr r2, [r7, #0x0] + mov r0, r6 + bic r2, r2, #0x20000000 + str r2, [r7, #0x0] + ldr r5, [r7, #0x0] + mov r2, r4, lsl #0x10 + orr r1, r5, r1, lsl #0x1d + str r1, [r7, #0x0] + ldr r5, [r3, #0x0] + mov r1, r2, asr #0x10 + ldr r4, [r5, #0x8] + mov r3, r7 + add r2, r4, #0xc + str r2, [sp, #0x0] + ldr r4, [r5, #0x14] + mvn r2, #0x0 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} +_020B533C: + ldr r2, _020B53A4 ; =UNK_021CED14 + ldr r0, [r7, #0x0] + ldr r5, [r2, #0x0] + mov r0, r0, lsl #0x7 + ldr r4, [r5, #0x8] + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + ldrb r1, [r7, #0x0] + add r4, r4, #0xc + movgt r0, r0, asr #0x10 + str r4, [sp, #0x0] + ldr r4, [r5, #0x14] + cmp r1, #0x7f + orrgt r1, r1, #0xff00 + movgt r1, r1, lsl #0x10 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + movgt r1, r1, asr #0x10 + mov r3, r7 + mvn r2, #0x0 + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B53A4: .word UNK_021CED14 +_020B53A8: .word 0xC000C000 +_020B53AC: .word UNK_020FF8AC +_020B53B0: .word UNK_020FF894 + + arm_func_start FUN_020B53B4 +FUN_020B53B4: ; 0x020B53B4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r2, _020B57B0 ; =UNK_021CED14 + mov r10, r0 + ldr r0, [r2, #0x0] + mov r11, r1 + ldr r9, [r0, #0x2c] + ldr r1, _020B57B0 ; =UNK_021CED14 + cmp r9, #0x0 + ldreq sb, _020B57B4 ; =UNK_020FF958 + ldr r3, [r1, #0x0] + ldr r4, [r9, #0x10] + str r4, [sp, #0x18] + ldr r2, [r9, #0x14] + str r2, [sp, #0x1c] + ldr r1, [r10, #0x0] + sub r1, r4, r1 + str r1, [sp, #0x18] + ldr r1, [r10, #0x4] + sub r1, r2, r1 + str r1, [sp, #0x1c] + ldr r2, [r3, #0x24] + ldr r1, [r3, #0x10] + cmp r2, #0x0 + str r1, [sp, #0x4] + bne _020B5430 + ldr r1, [r3, #0x28] + cmp r1, #0x0 + movne r1, #0x1 + strne r1, [sp, #0x0] + bne _020B5438 +_020B5430: + mov r1, #0x0 + str r1, [sp, #0x0] +_020B5438: + ldrh r1, [r11, #0x0] + add r7, r0, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + addls sp, sp, #0x44 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + ldr r4, _020B57B0 ; =UNK_021CED14 + str r8, [sp, #0x14] + str r0, [sp, #0xc] +_020B5460: + ldr r2, [r4, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x6 + str r0, [r2, #0x30] + mul r0, r8, r1 + ldr r1, [r11, #0x4] + add r2, r1, r0 + ldrh r0, [r1, r0] + strh r0, [r7, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r2, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B54B0 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B54B0: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5790 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0x4] + cmp r0, #0x0 + mov r0, #0x400 + rsb r0, r0, #0x0 + and r2, r1, r0 + ldr r0, [sp, #0x4] + mov r1, r1, lsl #0x16 + add r1, r0, r1, lsr #0x16 + ldr r0, _020B57B8 ; =0x000003FF + and r0, r1, r0 + orr r0, r2, r0 + str r0, [r7, #0x4] + beq _020B5600 + ldr r0, [r10, #0x14] + ldr lr, [r4, #0x0] + sub r1, r0, #0x1 + ldr r0, [r7, #0x0] + ldr r6, [lr, #0x28] + mov r2, r0, lsl #0x2 + mov r2, r2, lsr #0x1f + mov r2, r2, lsl #0x1 + mov r0, r0, lsl #0x3 + orr r5, r2, r0, lsr #0x1f + add r0, r6, r5, lsl #0x2 + add r0, r0, r1, lsl #0x1 + ldrh r1, [r0, #0x10] + ldr r0, _020B57BC ; =0x0000FFFF + str r1, [sp, #0x8] + cmp r1, r0 + bne _020B55CC + cmp r5, #0x0 + bne _020B5558 + ldr r1, [lr, #0x20] + mov r0, r6 + blx r1 + str r0, [sp, #0x8] + b _020B55B4 +_020B5558: + ands r0, r5, #0x1 + add r12, sp, #0x30 + ldmia r6, {r0-r3} + stmia r12, {r0-r3} + beq _020B5584 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + rsb r1, r1, #0x0 + str r1, [sp, #0x30] + rsb r0, r0, #0x0 + str r0, [sp, #0x34] +_020B5584: + ands r0, r5, #0x2 + beq _020B55A4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + rsb r1, r1, #0x0 + str r1, [sp, #0x38] + rsb r0, r0, #0x0 + str r0, [sp, #0x3c] +_020B55A4: + ldr r1, [lr, #0x20] + add r0, sp, #0x30 + blx r1 + str r0, [sp, #0x8] +_020B55B4: + ldr r1, [r10, #0x14] + add r0, r6, r5, lsl #0x2 + sub r1, r1, #0x1 + add r1, r0, r1, lsl #0x1 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x10] +_020B55CC: + ldr r1, [r9, #0x0] + add r0, sp, #0x20 + str r1, [sp, #0x20] + ldr r2, [r9, #0x4] + mov r1, r7 + str r2, [sp, #0x24] + ldr r3, [r9, #0x8] + add r2, sp, #0x18 + str r3, [sp, #0x28] + ldr r3, [r9, #0xc] + str r3, [sp, #0x2c] + bl FUN_020B57D8 + b _020B5750 +_020B5600: + ldr r0, _020B57C0 ; =0x0000FFFE + str r0, [sp, #0x8] + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B5714 + ldr r2, [r7, #0x0] + ldr r1, _020B57C4 ; =0xC000C000 + mov r6, r2, lsl #0x3 + and r5, r2, r1 + bl FUN_020B4F88 + ldr r1, [r7, #0x0] + eor r6, r0, r6, lsr #0x1f + mov r1, r1, lsl #0x2 + ldr r0, [r4, #0x0] + str r1, [sp, #0x10] + bl FUN_020B4F74 + ldr r1, [sp, #0x10] + eor r0, r0, r1, lsr #0x1f + ldr r1, [r7, #0x0] + bic r1, r1, #0x10000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r1, r1, r6, lsl #0x1c + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + bic r1, r1, #0x20000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r0, r1, r0, lsl #0x1d + str r0, [r7, #0x0] + ldr r0, [r4, #0x0] + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B56D4 + and r1, r5, #0xc000 + mov r2, r1, asr #0xe + ldr r1, _020B57C8 ; =UNK_020FF8AC + and r3, r5, #0xc0000000 + mov r3, r3, lsr #0x1e + add r2, r1, r2, lsl #0x3 + mov r3, r3, lsl #0x1 + ldr r0, [r7, #0x0] + ldr r1, _020B57CC ; =0xFE00FFFF + ldrh r2, [r3, r2] + and r1, r0, r1 + mov r0, r0, lsl #0x7 + add r0, r2, r0, lsr #0x17 + rsb r2, r0, #0x0 + ldr r0, _020B57D0 ; =0x000001FF + and r0, r2, r0 + orr r0, r1, r0, lsl #0x10 + str r0, [r7, #0x0] +_020B56D4: + ldr r0, [r4, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B5714 + and r1, r5, #0xc000 + mov r3, r1, asr #0xe + and r1, r5, #0xc0000000 + mov r1, r1, lsr #0x1e + mov r2, r1, lsl #0x1 + ldr r1, _020B57D4 ; =UNK_020FF894 + ldrb r0, [r7, #0x0] + add r1, r1, r3, lsl #0x3 + ldrh r1, [r2, r1] + add r0, r0, r1 + rsb r0, r0, #0x0 + strb r0, [r7, #0x0] +_020B5714: + ldr r2, [r7, #0x0] + ldr r0, _020B57CC ; =0xFE00FFFF + ldr r1, [sp, #0x18] + and r0, r2, r0 + mov r2, r2, lsl #0x7 + mov r2, r2, lsr #0x17 + add r2, r2, r1, asr #0xc + ldr r1, _020B57D0 ; =0x000001FF + and r1, r2, r1 + orr r0, r0, r1, lsl #0x10 + str r0, [r7, #0x0] + ldrb r1, [r7, #0x0] + ldr r0, [sp, #0x1c] + add r0, r1, r0, asr #0xc + strb r0, [r7, #0x0] +_020B5750: + ldr r3, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x1c] + mov r0, r7 + blx r3 + cmp r0, #0x1 + addne sp, sp, #0x44 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B5790 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B5790: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + ldrh r0, [r11, #0x0] + cmp r8, r0 + blo _020B5460 + add sp, sp, #0x44 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B57B0: .word UNK_021CED14 +_020B57B4: .word UNK_020FF958 +_020B57B8: .word 0x000003FF +_020B57BC: .word 0x0000FFFF +_020B57C0: .word 0x0000FFFE +_020B57C4: .word 0xC000C000 +_020B57C8: .word UNK_020FF8AC +_020B57CC: .word 0xFE00FFFF +_020B57D0: .word 0x000001FF +_020B57D4: .word UNK_020FF894 + + arm_func_start FUN_020B57D8 +FUN_020B57D8: ; 0x020B57D8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r4, [r1, #0x0] + ldr r3, _020B5A9C ; =0x01FF0000 + and r3, r4, r3 + mov r3, r3, lsr #0x10 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0xff + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x0] + ldr r3, [r1, #0x0] + and r3, r3, #0xff + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0x7f + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x4] + ldr r5, [r1, #0x0] + and r4, r5, #0x300 + cmp r4, #0x100 + beq _020B5858 + cmp r4, #0x300 + beq _020B5858 + and r3, r5, #0x30000000 + orr r4, r4, r3 +_020B5858: + cmp r4, #0x300 + bne _020B58AC + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r5, r3 + and r5, r3, #0xc0000000 + and r3, r3, #0xc000 + mov r6, r5, lsr #0x1e + mov r5, r3, asr #0xe + ldr r3, _020B5AA8 ; =UNK_020FF894 + mov r6, r6, lsl #0x1 + add r4, r4, r5, lsl #0x3 + add r3, r3, r5, lsl #0x3 + ldrh r5, [r6, r4] + ldr r7, [sp, #0x0] + ldrh r3, [r6, r3] + ldr r4, [sp, #0x4] + add r5, r7, r5, lsl #0xb + add r3, r4, r3, lsl #0xb + str r5, [sp, #0x0] + str r3, [sp, #0x4] +_020B58AC: + ldr r5, [r0, #0x8] + ldr r4, [sp, #0x4] + add r3, sp, #0x0 + smull r8, r7, r5, r4 + cmp r3, r3 + ldr r6, [r0, #0x0] + mov r4, #0x1000 + addeq r3, sp, #0x8 + adds r8, r8, r4 + ldr r5, [sp, #0x0] + adc r7, r7, #0x0 + smlal r8, r7, r6, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r3, #0x0] + ldr r7, [r0, #0xc] + ldr r6, [sp, #0x4] + ldr r5, [r0, #0x4] + smull r8, r6, r7, r6 + adds r7, r8, r4 + ldr r4, [sp, #0x0] + adc r6, r6, #0x0 + smlal r7, r6, r5, r4 + mov r5, r7, lsr #0xc + add r4, sp, #0x8 + orr r5, r5, r6, lsl #0x14 + str r5, [r3, #0x4] + cmp r3, r4 + ldreq r3, [sp, #0xc] + ldreq r4, [sp, #0x8] + streq r3, [sp, #0x4] + ldr r3, _020B5AAC ; =UNK_021CED14 + streq r4, [sp, #0x0] + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x4] + cmp r3, #0x0 + beq _020B597C + cmp r3, #0x2 + moveq r5, #0x300 + movne r5, #0x100 + cmp r5, #0x100 + ldreq r4, [r1, #0x0] + ldreq r3, _020B5AB0 ; =0xC1FFFCFF + andeq r3, r4, r3 + orreq r3, r3, r5 + streq r3, [r1, #0x0] + beq _020B597C + ldr r4, [r1, #0x0] + ldr r3, _020B5AB0 ; =0xC1FFFCFF + and r3, r4, r3 + orr r3, r3, r5 + str r3, [r1, #0x0] +_020B597C: + ldr r6, [r1, #0x0] + and r5, r6, #0x300 + cmp r5, #0x100 + beq _020B599C + cmp r5, #0x300 + beq _020B599C + and r3, r6, #0x30000000 + orr r5, r5, r3 +_020B599C: + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r6, r3 + and r6, r3, #0xc0000000 + and r3, r3, #0xc000 + mov lr, r3, asr #0xe + mov r6, r6, lsr #0x1e + mov r3, r6, lsl #0x1 + add r4, r4, lr, lsl #0x3 + ldrh r4, [r3, r4] + ldr r6, [r0, #0x0] + ldr r8, _020B5AA8 ; =UNK_020FF894 + mov r12, r4, asr #0x1 + mov r4, r12, lsl #0xc + rsb r7, r4, #0x0 + mla r7, r6, r12, r7 + add lr, r8, lr, lsl #0x3 + ldrh r3, [r3, lr] + ldr r6, [r0, #0x8] + ldr lr, [sp, #0x0] + mov r3, r3, asr #0x1 + mla r7, r6, r3, r7 + add r6, lr, r7 + str r6, [sp, #0x0] + mov lr, r3, lsl #0xc + ldr r6, [r0, #0x4] + rsb r7, lr, #0x0 + mla r7, r6, r12, r7 + ldr r0, [r0, #0xc] + ldr r6, [sp, #0x4] + mla r3, r0, r3, r7 + add r0, r6, r3 + str r0, [sp, #0x4] + cmp r5, #0x300 + moveq r0, #0x1 + movne r0, #0x0 + cmp r0, #0x0 + beq _020B5A4C + ldr r3, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r3, r3, r4 + sub r0, r0, lr + str r3, [sp, #0x0] + str r0, [sp, #0x4] +_020B5A4C: + ldr r4, [sp, #0x0] + ldr r0, [r2, #0x0] + ldr r3, [sp, #0x4] + add r5, r4, r0 + str r5, [sp, #0x0] + ldr r2, [r2, #0x4] + ldr r0, _020B5AB4 ; =0x000001FF + add r2, r3, r2 + str r2, [sp, #0x4] + mov r3, r2, asr #0xc + ldr r4, [r1, #0x0] + ldr r2, _020B5AB8 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r4, r2 + and r4, r0, r5, asr #0xc + orr r0, r2, r3 + orr r0, r0, r4, lsl #0x10 + str r0, [r1, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B5A9C: .word 0x01FF0000 +_020B5AA0: .word 0xC000C000 +_020B5AA4: .word UNK_020FF8AC +_020B5AA8: .word UNK_020FF894 +_020B5AAC: .word UNK_021CED14 +_020B5AB0: .word 0xC1FFFCFF +_020B5AB4: .word 0x000001FF +_020B5AB8: .word 0xFE00FF00 + + arm_func_start FUN_020B5ABC +FUN_020B5ABC: ; 0x020B5ABC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + add r5, sp, #0x0 + mov r4, #0x0 + str r4, [r5, #0x0] + str r4, [r5, #0x4] + mov r8, r2 + ldr r2, [sp, #0x28] + mov r5, r0 + mov r9, r1 + mov r4, r3 + cmp r2, #0x0 + mov r7, #0x1 + beq _020B5B24 + add r6, sp, #0x28 +_020B5AF8: + mov r0, r9 + mov r1, r8 + mov r3, r6 + bl FUN_020B5BC8 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x28] + cmp r0, r1 + strgt r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r2, #0x0 + bne _020B5AF8 +_020B5B24: + ldr r0, [r9, #0x0] + sub r2, r7, #0x1 + ldrsb r1, [r0, #0x1] + ldr r0, [sp, #0x0] + add r1, r4, r1 + mul r1, r2, r1 + sub r1, r1, r4 + str r1, [sp, #0x4] + str r0, [r5, #0x0] + str r1, [r5, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B5B54 +FUN_020B5B54: ; 0x020B5B54 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + str r2, [sp, #0x0] + add r3, sp, #0x4 + mov r2, #0x0 + str r2, [r3, #0x0] + mov r8, r0 + str r2, [r3, #0x4] + ldr r7, [r8, #0x4] + add r0, sp, #0x0 + mov r5, r1 + mov r4, #0x1 + blx r7 + cmp r0, #0x0 + beq _020B5BAC + add r6, sp, #0x0 +_020B5B94: + cmp r0, #0xa + mov r0, r6 + addeq r4, r4, #0x1 + blx r7 + cmp r0, #0x0 + bne _020B5B94 +_020B5BAC: + ldr r0, [r8, #0x0] + ldrsb r0, [r0, #0x1] + add r0, r5, r0 + mul r0, r4, r0 + sub r0, r0, r5 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B5BC8 +FUN_020B5BC8: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + str r2, [sp, #0x0] + ldr r4, [r8, #0x4] + add r0, sp, #0x0 + mov r7, r1 + mov r6, r3 + mov r5, #0x0 + blx r4 + movs r1, r0 + beq _020B5C58 + ldr sb, _020B5C84 ; =0x0000FFFF + add r10, sp, #0x0 +_020B5C00: + cmp r1, #0xa + beq _020B5C58 + mov r0, r8 + bl FUN_020B5CE4 + mov r1, r0 + cmp r1, r9 + ldreq r0, [r8, #0x0] + ldreqh r1, [r0, #0x2] + mov r0, r8 + bl FUN_020B5C88 + ldrh r1, [r8, #0x8] + cmp r1, #0x0 + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreqsb r0, [r0, #0x2] + add r1, r7, r0 + mov r0, r10 + add r5, r5, r1 + blx r4 + movs r1, r0 + bne _020B5C00 +_020B5C58: + cmp r6, #0x0 + beq _020B5C70 + cmp r1, #0xa + ldreq r0, [sp, #0x0] + movne r0, #0x0 + str r0, [r6, #0x0] +_020B5C70: + cmp r5, #0x0 + subgt r5, r5, r7 + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5C84: .word 0x0000FFFF + + arm_func_start FUN_020B5C88 +FUN_020B5C88: ; 0x020B5C88 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + ldr lr, [r3, #0xc] + cmp lr, #0x0 + beq _020B5CD8 +_020B5CA0: + ldrh r12, [lr, #0x0] + cmp r12, r1 + bhi _020B5CCC + ldrh r2, [lr, #0x2] + cmp r1, r2 + ldrlsh r2, [r0, #0xa] + addls r3, lr, #0x8 + subls r0, r1, r12 + mlals r0, r2, r0, r3 + addls sp, sp, #0x4 + ldmlsia sp!, {pc} +_020B5CCC: + ldr lr, [lr, #0x4] + cmp lr, #0x0 + bne _020B5CA0 +_020B5CD8: + add r0, r3, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B5CE4 +FUN_020B5CE4: ; 0x020B5CE4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020B5D2C +_020B5CFC: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhi _020B5D20 + ldrh r2, [r0, #0x2] + cmp r1, r2 + bhi _020B5D20 + bl FUN_020B5D7C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020B5D20: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _020B5CFC +_020B5D2C: + ldr r0, _020B5D38 ; =0x0000FFFF + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5D38: .word 0x0000FFFF + + arm_func_start FUN_020B5D3C +FUN_020B5D3C: ; 0x020B5D3C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r4 + bl FUN_020B7558 + sub r0, r0, #0x1 + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x0 + movne r1, #0x2 + moveq r1, #0x3 + ldr r0, _020B5D78 ; =FUN_020B7718 + strh r1, [r4, #0xa] + str r0, [r4, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020B5D78: .word FUN_020B7718 + + arm_func_start FUN_020B5D7C +FUN_020B5D7C: ; 0x020B5D7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r3, [r0, #0x4] + ldr r2, _020B5E4C ; =0x0000FFFF + cmp r3, #0x0 + beq _020B5DA8 + cmp r3, #0x1 + beq _020B5DC4 + cmp r3, #0x2 + beq _020B5DD8 + b _020B5E40 +_020B5DA8: + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #0xc] + sub r0, r1, r2 + add r0, r3, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + b _020B5E40 +_020B5DC4: + ldrh r2, [r0, #0x0] + sub r1, r1, r2 + add r0, r0, r1, lsl #0x1 + ldrh r2, [r0, #0xc] + b _020B5E40 +_020B5DD8: + ldrh r3, [r0, #0xc] + add r0, r0, #0xc + add r0, r0, #0x2 + sub r3, r3, #0x1 + add lr, r0, r3, lsl #0x2 + cmp r0, lr + bhi _020B5E40 +_020B5DF4: + sub r12, lr, r0 + mov r3, r12, asr #0x1 + add r3, r12, r3, lsr #0x1e + mov r3, r3, asr #0x2 + add r3, r3, r3, lsr #0x1f + mov r12, r3, asr #0x1 + mov r3, r12, lsl #0x2 + ldrh r3, [r0, r3] + add r12, r0, r12, lsl #0x2 + cmp r3, r1 + addcc r0, r12, #0x4 + blo _020B5E38 + cmp r1, r3 + subcc lr, r12, #0x4 + blo _020B5E38 + ldrh r2, [r12, #0x2] + b _020B5E40 +_020B5E38: + cmp r0, lr + bls _020B5DF4 +_020B5E40: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5E4C: .word 0x0000FFFF + + arm_func_start FUN_020B5E50 +FUN_020B5E50: ; 0x020B5E50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r7, r0 + mov r0, r1 + cmp r0, #0x8 + ldr r0, [sp, #0x60] + str r1, [sp, #0x10] + str r0, [sp, #0x60] + ldr r0, [sp, #0x6c] + str r2, [sp, #0x14] + str r0, [sp, #0x6c] + ldrlt r0, [sp, #0x10] + mov r11, r3 + ldr r6, [sp, #0x64] + ldr r5, [sp, #0x68] + movge r2, #0x3 + clzlt r0, r0 + rsblt r2, r0, #0x1f + ldr r0, [sp, #0x14] + cmp r0, #0x8 + ldrlt r0, [sp, #0x14] + movge r1, #0x3 + clzlt r0, r0 + rsblt r1, r0, #0x1f + ldr r0, _020B6170 ; =UNK_020FF970 + mvn r3, #0x0 + add r1, r0, r1, lsl #0x3 + add r0, r1, r2, lsl #0x1 + ldrb r4, [r1, r2, lsl #0x1] + ldrb r1, [r0, #0x1] + ldr r2, [sp, #0x14] + cmp r6, #0x0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x10] + and r1, r1, r3, lsl r4 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x18] + and r1, r2, r3, lsl r1 + str r1, [sp, #0x20] + moveq r1, #0x1 + streq r1, [sp, #0x24] + movne r1, #0x2 + strne r1, [sp, #0x24] + mov r1, #0x0 + str r1, [sp, #0x28] + bl FUN_020B704C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r10, r1, asr r4 + ldr r1, [sp, #0x18] + mov r1, r2, asr r1 + str r1, [sp, #0x2c] + ldr r1, [sp, #0x24] + mov r2, r1, lsl r4 + ldr r1, [sp, #0x18] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x6c] + mov r9, r2, asr r1 + mov r1, #0x0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + b _020B5FE8 +_020B5F48: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x18] + ldr r8, [sp, #0x34] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x60] + add lr, r1, r2, lsl #0x3 + b _020B5FD4 +_020B5F64: + mov r1, r8, lsl r4 + add r2, r11, r1, lsl #0x3 + ldr r1, _020B6174 ; =0x000001FF + ldr r3, [r7, #0x0] + and r12, r2, r1 + ldr r1, _020B6178 ; =0xFE00FF00 + and r2, lr, #0xff + and r1, r3, r1 + orr r1, r1, r2 + orr r1, r1, r12, lsl #0x10 + str r1, [r7, #0x0] + ldr r3, [r7, #0x0] + ldr r1, _020B617C ; =0x3FFF3FFF + mov r2, #0x400 + and r1, r3, r1 + orr r1, r1, r0 + str r1, [r7, #0x0] + rsb r1, r2, #0x0 + ldrh r2, [r7, #0x4] + add r8, r8, #0x1 + and r1, r2, r1 + orr r1, r1, r5 + strh r1, [r7, #0x4] + ldr r1, [r7, #0x0] + add r5, r5, r9 + bic r1, r1, #0x2000 + orr r1, r1, r6, lsl #0xd + str r1, [r7], #0x8 +_020B5FD4: + cmp r8, r10 + blt _020B5F64 + ldr r1, [sp, #0x30] + add r1, r1, #0x1 + str r1, [sp, #0x30] +_020B5FE8: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x2c] + cmp r2, r1 + blt _020B5F48 + ldr r0, [sp, #0x28] + mla r0, r10, r1, r0 + str r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6078 + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r6, [sp, #0x4] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + str r5, [sp, #0x8] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r3, r11, r1, lsl #0x3 + mov r0, r7 + mov r1, r4 + bl FUN_020B5E50 + ldr r1, [sp, #0x24] + add r7, r7, r0, lsl #0x3 + mul r2, r1, r4 + ldr r1, [sp, #0x20] + mul r2, r1, r2 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6078: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B60F0 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + mov r3, r11 + add r0, r1, r0, lsl #0x3 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + str r5, [sp, #0x8] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + mov r0, r7 + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + mov r2, r4 + bl FUN_020B5E50 + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + add r7, r7, r0, lsl #0x3 + mul r1, r2, r1 + mul r2, r4, r1 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B60F0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r0, r1, r0, lsl #0x3 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + sub r1, r2, r1 + ldr r2, [sp, #0x20] + str r6, [sp, #0x4] + sub r2, r3, r2 + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x6c] + str r5, [sp, #0x8] + mov r0, r7 + add r3, r11, r3, lsl #0x3 + str r4, [sp, #0xc] + bl FUN_020B5E50 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6164: + ldr r0, [sp, #0x28] + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B6170: .word UNK_020FF970 +_020B6174: .word 0x000001FF +_020B6178: .word 0xFE00FF00 +_020B617C: .word 0x3FFF3FFF + + arm_func_start FUN_020B6180 +FUN_020B6180: ; 0x020B6180 + stmdb sp!, {r4-r6,lr} + mov r3, r0, lsr #0x3 + mov r6, r1, lsr #0x3 + mul r12, r3, r6 + and r2, r0, #0x4 + and lr, r0, #0x2 + and r0, r0, #0x1 + add r4, r0, lr, lsr #0x1 + mov r5, r2, lsr #0x2 + and r0, r1, #0x4 + add lr, r12, #0x0 + add r12, r5, r4, lsl #0x1 + mla r12, r6, r12, lr + and lr, r1, #0x2 + and r1, r1, #0x1 + add lr, r1, lr, lsr #0x1 + mov r1, r0, lsr #0x2 + add r1, r1, lr, lsl #0x1 + mla r12, r3, r1, r12 + add r1, r4, r2, lsr #0x2 + add r0, lr, r0, lsr #0x2 + mla r0, r1, r0, r12 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B61DC +FUN_020B61DC: ; 0x020B61DC + stmdb sp!, {r4-r8,lr} + ldr r12, [sp, #0x1c] + ldr r8, [sp, #0x18] + mov r12, r12, lsl #0x1c + mov r4, r12, lsr #0x10 + mov r6, #0x0 + cmp r2, #0x0 + ldmleia sp!, {r4-r8,pc} + mov lr, r3, lsl #0x1 + mov r12, r6 +_020B6204: + mov r5, r0 + mov r7, r12 + cmp r1, #0x0 + ble _020B622C +_020B6214: + orr r3, r4, r8 + add r7, r7, #0x1 + cmp r7, r1 + add r8, r8, #0x1 + strh r3, [r5], #0x2 + blt _020B6214 +_020B622C: + add r6, r6, #0x1 + cmp r6, r2 + add r0, r0, lr + blt _020B6204 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B6240 +FUN_020B6240: ; 0x020B6240 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x24] + ldr lr, [sp, #0x20] + cmp r5, #0x20 + ldr r12, [sp, #0x28] + bgt _020B6280 + mla r4, r5, lr, r3 + ldr lr, [sp, #0x2c] + str r12, [sp, #0x0] + mov r3, r5 + add r0, r0, r4, lsl #0x1 + str lr, [sp, #0x4] + bl FUN_020B61DC + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} +_020B6280: + ldr r4, [sp, #0x2c] + add r7, lr, r2 + mov r2, r4, lsl #0x1c + cmp lr, r7 + add r8, r3, r1 + mov r4, r2, lsr #0x10 + addge sp, sp, #0x8 + ldmgeia sp!, {r4-r8,pc} +_020B62A0: + cmp lr, #0x20 + movlt r1, lr + addge r1, lr, #0x20 + mov r6, r3 + cmp r3, r8 + add r5, r0, r1, lsl #0x6 + bge _020B62E4 +_020B62BC: + cmp r6, #0x20 + movlt r1, r6 + addge r1, r6, #0x3e0 + orr r2, r4, r12 + mov r1, r1, lsl #0x1 + add r6, r6, #0x1 + strh r2, [r5, r1] + cmp r6, r8 + add r12, r12, #0x1 + blt _020B62BC +_020B62E4: + add lr, lr, #0x1 + cmp lr, r7 + blt _020B62A0 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B62F8 +FUN_020B62F8: ; 0x020B62F8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + cmp r2, #0x8 + movlt r4, r2 + movge r12, #0x3 + clzlt r4, r4 + rsblt r12, r4, #0x1f + cmp r3, #0x8 + movlt r4, r3 + movge r6, #0x3 + clzlt r4, r4 + rsblt r6, r4, #0x1f + ldr r4, _020B6378 ; =UNK_020FF970 + ldr r5, [sp, #0x28] + add r4, r4, r6, lsl #0x3 + ldrb r6, [r4, r12, lsl #0x1] + add r12, r4, r12, lsl #0x1 + ldr r4, _020B637C ; =FUN_020B6908 + strb r6, [sp, #0x14] + ldrb r6, [r12, #0x1] + ldr lr, _020B6380 ; =FUN_020B68AC + ldr ip, _020B6384 ; =FUN_020B64C0 + strb r6, [sp, #0x15] + str r5, [sp, #0x0] + str r4, [sp, #0x4] + str lr, [sp, #0x8] + str r12, [sp, #0xc] + ldr r12, [sp, #0x14] + str r12, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x18 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B6378: .word UNK_020FF970 +_020B637C: .word FUN_020B6908 +_020B6380: .word FUN_020B68AC +_020B6384: .word FUN_020B64C0 + + arm_func_start FUN_020B6388 +FUN_020B6388: ; 0x020B6388 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, _020B63C0 ; =FUN_020B6B10 + str lr, [sp, #0x0] + ldr lr, _020B63C4 ; =FUN_020B68AC + str r12, [sp, #0x4] + ldr ip, _020B63C8 ; =FUN_020B66D4 + str lr, [sp, #0x8] + str r12, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B63C0: .word FUN_020B6B10 +_020B63C4: .word FUN_020B68AC +_020B63C8: .word FUN_020B66D4 + + arm_func_start FUN_020B63CC +FUN_020B63CC: ; 0x020B63CC + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrh r1, [sp, #0x2c] + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl FUN_020B5CE4 + ldr r1, _020B6484 ; =0x0000FFFF + mov r4, r0 + cmp r4, r1 + ldreq r0, [r7, #0x0] + ldreqh r4, [r0, #0x2] + mov r0, r7 + mov r1, r4 + bl FUN_020B5C88 + str r0, [sp, #0x8] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x8] + add r1, sp, #0x8 + ldrh r3, [r0, #0x2] + add r12, r0, #0x8 + mov r0, r8 + mla r3, r4, r3, r12 + str r3, [sp, #0xc] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r4, [r8, #0x14] + ldrsb r2, [r1, #0x0] + mov r1, r7 + mov r3, r5 + add r2, r6, r2 + blx r4 + ldrh r0, [r7, #0x8] + cmp r0, #0x0 + ldrne r0, [sp, #0x8] + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreq r0, [sp, #0x8] + ldreqsb r0, [r0, #0x2] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B6484: .word 0x0000FFFF + + arm_func_start FUN_020B6488 +FUN_020B6488: ; 0x020B6488 + str r2, [r0, #0x4] + ldr r2, [sp, #0x0] + str r3, [r0, #0x8] + strb r2, [r0, #0xc] + ldr r2, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [sp, #0x8] + str r2, [r0, #0x14] + ldr r2, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r2, [r0, #0x1c] + str r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B64C0 +FUN_020B64C0: ; 0x020B64C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x44] + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x78] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x1c] + ldr r2, [sp, #0x7c] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x20] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B6528 + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B6528: + bic r1, r10, #0x7 + str r1, [sp, #0x30] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x10] + bic r1, r1, #0x7 + str r1, [sp, #0x14] + ldr r1, [sp, #0x44] + str r2, [sp, #0x4c] + mov r3, r1, lsl #0x6 + mov r2, r3, asr #0x2 + ldr r1, [sp, #0x20] + add r3, r3, r2, lsr #0x1d + ldr r2, [sp, #0x1c] + add r6, r1, #0x7 + add r2, r2, #0x7 + bic r5, r2, #0x7 + bic r2, r6, #0x7 + ldr r1, [sp, #0x30] + str r2, [sp, #0x24] + mov r2, r3, asr #0x3 + str r2, [sp, #0x48] + mov r4, r1, asr #0x2 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x14] + add r2, r2, r4, lsr #0x1d + mov r2, r2, asr #0x3 + str r2, [sp, #0x2c] + ldr r2, [sp, #0x14] + mov r1, r1, asr #0x2 + add r1, r2, r1, lsr #0x1d + mov r6, r1, asr #0x3 + ldr r1, [sp, #0x24] + cmp r2, r1 + ldr r1, [r0, #0x4] + str r1, [sp, #0x40] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x0] + str r1, [sp, #0x3c] + str r0, [sp, #0x28] + ldrb r0, [sp, #0x4c] + str r0, [sp, #0x38] + ldrb r0, [sp, #0x4d] + str r0, [sp, #0x34] + addge sp, sp, #0x54 + ldmgeia sp!, {r4-r11,pc} + mov r4, #0x0 + mov r11, #0x8 +_020B65E4: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x2c] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + movge r9, r4 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r11 + sub r0, r0, r9 + str r0, [sp, #0x18] + ldr r0, [sp, #0x30] + cmp r0, r5 + mov r8, r0 + bge _020B66B0 +_020B6630: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x40] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x3c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + bl FUN_020B7068 + ldr r2, [sp, #0x1c] + cmp r8, r10 + sublt r1, r10, r8 + sub r2, r2, r8 + movge r1, r4 + cmp r2, #0x8 + movgt r2, r11 + sub r3, r2, r1 + ldr r2, [sp, #0x18] + ldr r12, [sp, #0x48] + str r2, [sp, #0x0] + ldr r2, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x44] + str r2, [sp, #0x8] + ldr r2, [sp, #0x28] + mla r0, r12, r0, r2 + mov r2, r9 + bl FUN_020B6F18 + add r8, r8, #0x8 + add r7, r7, #0x1 + cmp r8, r5 + blt _020B6630 +_020B66B0: + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r1, r0, #0x8 + ldr r0, [sp, #0x24] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B65E4 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B66D4 +FUN_020B66D4: ; 0x020B66D4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x2c] + ldr r1, [sp, #0x2c] + ldr r4, [sp, #0x60] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x18] + ldr r2, [sp, #0x64] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x1c] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B673C + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B673C: + ldr r1, [sp, #0x10] + bic r1, r1, #0x7 + mov r2, r1, asr #0x2 + str r1, [sp, #0x14] + add r1, r1, r2, lsr #0x1d + ldr r2, [r0, #0x10] + mov r3, r1, asr #0x3 + mul r1, r3, r2 + bic r3, r10, #0x7 + str r3, [sp, #0x28] + ldr r3, [sp, #0x2c] + mov r6, r3, lsl #0x6 + ldr r3, [sp, #0x28] + mov r4, r6, asr #0x2 + mov r5, r3, asr #0x2 + add r5, r3, r5, lsr #0x1d + add r4, r6, r4, lsr #0x1d + mov r3, r4, asr #0x3 + str r3, [sp, #0x30] + ldr r3, [sp, #0x1c] + add r1, r1, r5, asr #0x3 + add r4, r3, #0x7 + ldr r3, [r0, #0x0] + ldr r0, [sp, #0x18] + add r5, r0, #0x7 + ldr r0, [sp, #0x30] + bic r7, r5, #0x7 + mla r1, r0, r1, r3 + bic r0, r4, #0x7 + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r1, [sp, #0x24] + mul r0, r2, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + cmp r1, r0 + addge sp, sp, #0x3c + ldmgeia sp!, {r4-r11,pc} + mov r5, #0x0 + mov r4, #0x8 +_020B67E0: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x24] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + movge r9, r5 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r4 + sub r11, r0, r9 + ldr r0, [sp, #0x28] + cmp r0, r7 + mov r8, r0 + bge _020B687C +_020B6828: + ldr r0, [sp, #0x18] + cmp r8, r10 + sublt r1, r10, r8 + sub r0, r0, r8 + movge r1, r5 + cmp r0, #0x8 + movgt r0, r4 + sub r3, r0, r1 + ldr r0, [sp, #0xc] + str r11, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + mov r2, r9 + str r0, [sp, #0x8] + mov r0, r6 + bl FUN_020B6F18 + ldr r0, [sp, #0x30] + add r8, r8, #0x8 + add r6, r6, r0 + cmp r8, r7 + blt _020B6828 +_020B687C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r1, r0, #0x8 + ldr r0, [sp, #0x20] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B67E0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B68AC +FUN_020B68AC: ; 0x020B68AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldrb r2, [r3, #0xc] + ldr r12, [r3, #0x4] + cmp r2, #0x4 + orreq r0, r1, r1, lsl #0x4 + orreq r0, r0, r0, lsl #0x8 + orreq r1, r0, r0, lsl #0x10 + orrne r0, r1, r1, lsl #0x8 + orrne r1, r0, r0, lsl #0x10 + ldr r0, [r3, #0x8] + mov r2, r2, lsl #0x6 + mul lr, r12, r0 + mov r0, r2, asr #0x2 + add r0, r2, r0, lsr #0x1d + mov r2, r0, asr #0x3 + mov r0, r1 + mul r2, lr, r2 + ldr r1, [r3, #0x0] + bl MIi_CpuClearFast + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B6908 +FUN_020B6908: ; 0x020B6908 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r7, [sp, #0x74] + ldrb r5, [r0, #0xc] + ldr r6, [r1, #0x0] + ldr r4, [r7, #0x0] + ldr r9, [r6, #0x8] + mov r8, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r8, asr #0x2 + add r5, r8, r5, lsr #0x1d + ldrb r9, [r9, #0x1] + ldr r8, [r0, #0x4] + ldr r6, [r0, #0x8] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r4, #0x0 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} + adds r3, r2, r4 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r2, [sp, #0xc] + adds r2, r2, r9 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r10, [sp, #0x8] + add r3, r3, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + strle r10, [sp, #0x10] + movgt r10, r10, lsr #0x3 + strgt r10, [sp, #0x10] + ldr r10, [sp, #0xc] + add r2, r2, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + mov r11, r2, lsr #0x3 + mov r3, r3, lsr #0x3 + movgt r10, r10, lsr #0x3 + cmp r3, r8 + movcs r3, r8 + cmp r11, r6 + ldr r2, [sp, #0x10] + movcs r11, r6 + subs r8, r3, r2 + addmi sp, sp, #0x4c + sub r3, r11, r10 + ldmmiia sp!, {r4-r11,pc} + cmp r3, #0x0 + addlt sp, sp, #0x4c + ldmltia sp!, {r4-r11,pc} + ldr r2, [sp, #0x8] + ldr r6, [r0, #0x0] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r11, [sp, #0x8] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0xc] + sub r8, r11, r8, lsl #0x3 + ldr r11, [sp, #0xc] + ldr r2, [sp, #0x70] + sub r3, r11, r3, lsl #0x3 + str r3, [sp, #0x14] + ldr r3, [r7, #0x4] + sub r2, r2, #0x1 + str r3, [sp, #0x28] + str r2, [sp, #0x48] + str r9, [sp, #0x38] + str r4, [sp, #0x34] + ldr r4, [r1, #0x0] + ldr r2, [sp, #0x14] + mov r3, r11 + cmp r3, r2 + ldr r2, [r4, #0x8] + ldrb r3, [r2, #0x6] + str r3, [sp, #0x40] + ldrb r2, [r0, #0xc] + str r2, [sp, #0x44] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + ldrb r1, [r1, #0x0] + mul r1, r3, r1 + str r1, [sp, #0x3c] + ldr r1, [r0, #0x10] + str r1, [sp, #0x20] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x8] + ldrb r11, [sp, #0x20] + ldrb r4, [sp, #0x21] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + addle sp, sp, #0x4c + ldmleia sp!, {r4-r11,pc} +_020B6A90: + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [sp, #0x8] + cmp r0, r8 + mov r9, r0 + ble _020B6AEC +_020B6AAC: + ldr r2, [sp, #0x1c] + str r11, [sp, #0x0] + ldr r3, [sp, #0x18] + mov r0, r7 + mov r1, r10 + str r4, [sp, #0x4] + bl FUN_020B7068 + mla r1, r0, r5, r6 + add r0, sp, #0x24 + str r9, [sp, #0x2c] + str r1, [sp, #0x24] + bl FUN_020B6CAC + sub r9, r9, #0x8 + add r7, r7, #0x1 + cmp r9, r8 + bgt _020B6AAC +_020B6AEC: + ldr r0, [sp, #0xc] + add r10, r10, #0x1 + sub r1, r0, #0x8 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + bgt _020B6A90 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6B10 +FUN_020B6B10: ; 0x020B6B10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + ldr r4, [sp, #0x54] + ldrb r5, [r0, #0xc] + str r4, [sp, #0x54] + ldr r4, [r4, #0x0] + ldr r6, [r1, #0x0] + mov r7, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r7, asr #0x2 + add r5, r7, r5, lsr #0x1d + cmp r4, #0x0 + ldr r6, [r6, #0x8] + mov r9, r3 + ldr r8, [r0, #0x4] + ldr r7, [r0, #0x8] + mov r10, r2 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x2c + ldr lr, [r0, #0x0] + ldrb r3, [r6, #0x1] + ldmeqia sp!, {r4-r11,pc} + adds r6, r10, r4 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + adds r2, r9, r3 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + cmp r10, #0x0 + movle r11, #0x0 + add r6, r6, #0x7 + movgt r11, r10, lsr #0x3 + cmp r9, #0x0 + movle r12, #0x0 + add r2, r2, #0x7 + mov r6, r6, lsr #0x3 + movgt r12, r9, lsr #0x3 + cmp r6, r8 + movcs r6, r8 + mov r2, r2, lsr #0x3 + cmp r2, r7 + movcs r2, r7 + subs r7, r6, r11 + addmi sp, sp, #0x2c + sub r2, r2, r12 + ldmmiia sp!, {r4-r11,pc} + cmp r2, #0x0 + addlt sp, sp, #0x2c + ldmltia sp!, {r4-r11,pc} + ldr r6, [r0, #0x10] + cmp r10, #0x0 + sub r8, r6, r7 + mul r8, r5, r8 + mla r11, r6, r12, r11 + andge r10, r10, #0x7 + str r8, [sp, #0x0] + ldr r8, [sp, #0x54] + mla r6, r5, r11, lr + ldr r12, [r8, #0x4] + ldr r11, [sp, #0x50] + cmp r9, #0x0 + sub r8, r11, #0x1 + andge r9, r9, #0x7 + sub r11, r9, r2, lsl #0x3 + str r12, [sp, #0x8] + str r4, [sp, #0x14] + str r8, [sp, #0x28] + str r3, [sp, #0x18] + ldr r3, [r1, #0x0] + cmp r9, r11 + ldr r2, [r3, #0x8] + sub r7, r10, r7, lsl #0x3 + ldrb r2, [r2, #0x6] + str r2, [sp, #0x20] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x24] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r0, [r0, #0x0] + mul r0, r2, r0 + str r0, [sp, #0x1c] + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,pc} + add r4, sp, #0x4 +_020B6C60: + mov r8, r10 + str r9, [sp, #0x10] + cmp r10, r7 + ble _020B6C90 +_020B6C70: + mov r0, r4 + str r6, [sp, #0x4] + str r8, [sp, #0xc] + bl FUN_020B6CAC + sub r8, r8, #0x8 + cmp r8, r7 + add r6, r6, r5 + bgt _020B6C70 +_020B6C90: + ldr r0, [sp, #0x0] + sub r9, r9, #0x8 + cmp r9, r11 + add r6, r6, r0 + bgt _020B6C60 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6CAC +FUN_020B6CAC: ; 0x020B6CAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldr r5, [r0, #0x8] + ldr r4, [r0, #0xc] + cmp r5, #0x0 + strge r5, [sp, #0x0] + movlt r1, #0x0 + strlt r1, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r4, #0x0 + add r10, r5, r1 + ldr r1, [r0, #0x14] + movge r2, r4 + movlt r2, #0x0 + cmp r10, #0x8 + add r3, r4, r1 + movge r10, #0x8 + cmp r3, #0x8 + movge r3, #0x8 + cmp r4, #0x0 + movgt r4, #0x0 + cmp r5, #0x0 + ldr r8, [r0, #0x20] + movgt r5, #0x0 + rsb r1, r4, #0x0 + mul r7, r10, r8 + ldr r6, [r0, #0x1c] + rsb r4, r5, #0x0 + mul r9, r6, r4 + ldr r4, [r0, #0x18] + mov r10, r7 + str r4, [sp, #0x8] + ldr r4, [sp, #0x0] + cmp r8, #0x4 + mul r5, r4, r8 + ldr r4, [sp, #0x8] + str r5, [sp, #0x0] + mla r11, r1, r4, r9 + ldr r1, [r0, #0x4] + str r1, [sp, #0x4] + bne _020B6E24 + ldr r1, [r0, #0x0] + ldr r7, [r0, #0x24] + add r0, r1, r2, lsl #0x2 + str r0, [sp, #0xc] + add r0, r1, r3, lsl #0x2 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + add r9, sp, #0x24 + mov r4, #0xf + str r0, [sp, #0x1c] +_020B6D88: + ldr r0, [sp, #0xc] + mov r1, r11, lsr #0x1f + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x4] + rsb r2, r1, r11, lsl #0x1d + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + add r1, r1, r2, ror #0x1d + strb r0, [sp, #0x28] + strb r0, [sp, #0x29] + mov r0, r9 + bl FUN_020B76B0 + ldr r8, [sp, #0x0] + mov r0, r8 + cmp r0, r10 + bhs _020B6DF8 +_020B6DCC: + mov r0, r9 + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + mvnne r1, r4, lsl r8 + addne r0, r7, r0 + andne r1, r5, r1 + orrne r5, r1, r0, lsl r8 + add r8, r8, #0x4 + cmp r8, r10 + blo _020B6DCC +_020B6DF8: + ldr r0, [sp, #0xc] + add r1, r0, #0x4 + str r5, [r0, #0x0] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6D88 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020B6E24: + ldr r1, [r0, #0x0] + ldr r9, [r0, #0x24] + add r0, r1, r2, lsl #0x3 + str r0, [sp, #0x14] + add r0, r1, r3, lsl #0x3 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + mov r4, #0xff + str r0, [sp, #0x20] +_020B6E58: + mov r1, r11, lsr #0x1f + rsb r0, r1, r11, lsl #0x1d + add r1, r1, r0, ror #0x1d + ldr r0, [sp, #0x14] + ldr r8, [r0, #0x0] + ldr r7, [r0, #0x4] + ldr r0, [sp, #0x4] + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + strb r0, [sp, #0x30] + strb r0, [sp, #0x31] + add r0, sp, #0x2c + bl FUN_020B76B0 + ldr r0, [sp, #0x0] + cmp r0, r10 + mov r5, r0 + bhs _020B6EE8 +_020B6EA0: + add r0, sp, #0x2c + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + beq _020B6EDC + cmp r5, #0x20 + mvncc r1, r4, lsl r5 + addcc r0, r9, r0 + andcc r1, r8, r1 + orrcc r8, r1, r0, lsl r5 + subcs r2, r5, #0x20 + mvncs r1, r4, lsl r2 + addcs r0, r9, r0 + andcs r1, r7, r1 + orrcs r7, r1, r0, lsl r2 +_020B6EDC: + add r5, r5, #0x8 + cmp r5, r10 + blo _020B6EA0 +_020B6EE8: + ldr r0, [sp, #0x14] + str r8, [r0, #0x0] + add r1, r0, #0x8 + str r7, [r0, #0x4] + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6E58 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6F18 +FUN_020B6F18: ; 0x020B6F18 + stmdb sp!, {r4-r6,lr} + mov lr, r0 + cmp r3, #0x8 + ldr r0, [sp, #0x14] + bne _020B6F4C + ldr r4, [sp, #0x10] + cmp r4, #0x8 + bne _020B6F4C + ldr r2, [sp, #0x18] + mov r1, lr + mov r2, r2, lsl #0x3 + bl MIi_CpuClearFast + ldmia sp!, {r4-r6,pc} +_020B6F4C: + ldr r4, [sp, #0x18] + cmp r4, #0x4 + bne _020B6FAC + mov r5, r1, lsl #0x2 + add r4, r5, r3, lsl #0x2 + mvn r3, #0x0 + rsb r4, r4, #0x20 + mov r3, r3, lsr r5 + add r1, r4, r1, lsl #0x2 + mov r3, r3, lsl r1 + ldr r1, [sp, #0x10] + add r5, lr, r2, lsl #0x2 + add r2, r5, r1, lsl #0x2 + and r6, r0, r3, lsr r4 + cmp r5, r2 + mvn r1, r3, lsr r4 + ldmcsia sp!, {r4-r6,pc} +_020B6F90: + ldr r0, [r5, #0x0] + and r0, r0, r1 + orr r0, r6, r0 + str r0, [r5], #0x4 + cmp r5, r2 + blo _020B6F90 + ldmia sp!, {r4-r6,pc} +_020B6FAC: + mov r12, r1, lsl #0x3 + add r1, r12, r3, lsl #0x3 + rsb r1, r1, #0x40 + mvn r3, #0x0 + cmp r1, #0x20 + mov r5, r3, lsr r12 + subcs r4, r1, #0x20 + addcs r3, r12, r4 + movcs r3, r5, lsl r3 + movcs r3, r3, lsr r4 + movcc r3, r5, lsl r12 + mvn r4, #0x0 + add r5, lr, r2, lsl #0x3 + cmp r12, #0x20 + mov r4, r4, lsl r1 + subcs r12, r12, #0x20 + addcs r1, r12, r1 + movcs r1, r4, lsr r1 + movcs r6, r1, lsl r12 + movcc r6, r4, lsr r1 + ldr r1, [sp, #0x10] + and lr, r0, r3 + add r4, r5, r1, lsl #0x3 + cmp r5, r4 + and r12, r0, r6 + mvn r2, r3 + mvn r1, r6 + ldmcsia sp!, {r4-r6,pc} +_020B701C: + ldr r0, [r5, #0x0] + and r0, r0, r2 + orr r0, lr, r0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + and r0, r0, r1 + orr r0, r12, r0 + str r0, [r5, #0x4] + add r5, r5, #0x8 + cmp r5, r4 + blo _020B701C + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B704C +FUN_020B704C: ; 0x020B704C + ldrb r3, [r0, #0x1] + ldr r2, _020B7064 ; =UNK_020FF990 + ldrb r1, [r0, #0x0] + add r0, r2, r3, lsl #0x4 + ldr r0, [r0, r1, lsl #0x2] + bx lr + .balign 4 +_020B7064: .word UNK_020FF990 + + arm_func_start FUN_020B7068 +FUN_020B7068: ; 0x020B7068 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr fp, _020B7164 ; =UNK_020FF970 + mov r9, #0x0 + mov r10, #0x3 + mvn r7, #0x0 +_020B7080: + ldr r4, [sp, #0x2c] + ldr r6, [sp, #0x28] + and r12, r3, r7, lsl r4 + cmp r12, r1 + mov r8, r7, lsl r6 + mov r5, r7, lsl r4 + and lr, r2, r7, lsl r6 + bhi _020B70D0 + mla r9, r2, r12, r9 + cmp lr, r0 + movhi r2, lr + subhi r1, r1, r12 + subhi r3, r3, r12 + bhi _020B7118 + sub r3, r3, r12 + mla r9, lr, r3, r9 + sub r0, r0, lr + sub r1, r1, r12 + sub r2, r2, lr + b _020B7118 +_020B70D0: + cmp lr, r0 + mlals r9, lr, r12, r9 + mvn r3, r5 + movls r3, r12 + subls r0, r0, lr + subls r2, r2, lr + bls _020B7118 + and r2, r1, r5 + mla r5, lr, r2, r9 + and r2, r0, r8 + and r1, r1, r3 + add r2, r5, r2, lsl r4 + mvn r3, r8 + add r1, r2, r1, lsl r6 + and r0, r0, r3 + add sp, sp, #0x4 + add r0, r1, r0 + ldmia sp!, {r4-r11,pc} +_020B7118: + cmp r2, #0x8 + movlt r4, r2 + movge r5, r10 + clzlt r4, r4 + rsblt r5, r4, #0x1f + cmp r3, #0x8 + movge r4, r10 + movlt r4, r3 + clzlt r4, r4 + rsblt r4, r4, #0x1f + add r4, r11, r4, lsl #0x3 + add r6, r4, r5, lsl #0x1 + ldrb r5, [r4, r5, lsl #0x1] + ldrb r4, [r6, #0x1] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + b _020B7080 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7164: .word UNK_020FF970 + + arm_func_start FUN_020B7168 +FUN_020B7168: ; 0x020B7168 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r12, [sp, #0x28] + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + ands r0, r12, #0x100 + beq _020B71AC + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r1, [sp, #0x20] + sub r0, r1, r0 + add r5, r5, r0 + b _020B71E4 +_020B71AC: + ands r0, r12, #0x80 + beq _020B71E4 + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r2, [sp, #0x20] + add r1, r0, #0x1 + add r0, r2, #0x1 + add r0, r0, r0, lsr #0x1f + mov r2, r0, asr #0x1 + add r0, r1, r1, lsr #0x1f + sub r0, r2, r0, asr #0x1 + add r5, r5, r0 +_020B71E4: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [sp, #0x0] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x8] + bl FUN_020B72C4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7218 +FUN_020B7218: ; 0x020B7218 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + ldr r4, [sp, #0x34] + mov r8, r0 + str r4, [sp, #0x0] + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x30] + ldr r1, [r8, #0x4] + ldr r2, [r8, #0x8] + ldr r3, [r8, #0xc] + add r0, sp, #0xc + bl FUN_020B5ABC + ands r0, r4, #0x10 + ldrne r0, [sp, #0xc] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r7, r7, r0, asr #0x1 + bne _020B7274 + ands r0, r4, #0x20 + ldrne r0, [sp, #0xc] + subne r7, r7, r0 +_020B7274: + ands r0, r4, #0x2 + ldrne r0, [sp, #0x10] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r6, r6, r0, asr #0x1 + bne _020B7298 + ands r0, r4, #0x4 + ldrne r0, [sp, #0x10] + subne r6, r6, r0 +_020B7298: + str r5, [sp, #0x0] + ldr r0, [sp, #0x34] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_020B72C4 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B72C4 +FUN_020B72C4: ; 0x020B72C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r4, [r10, #0x4] + ldr r0, [sp, #0x40] + ldr r4, [r4, #0x0] + ldr r5, [r10, #0xc] + ldrsb r4, [r4, #0x1] + cmp r0, #0x0 + mov r9, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + mov r8, r2 + str r0, [sp, #0x38] + mov r7, r3 + add r6, r5, r4 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,pc} + add r0, r7, #0x1 + ldr r1, [sp, #0x3c] + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + and r5, r1, #0x800 + and r11, r1, #0x400 + str r0, [sp, #0x8] + mov r4, #0x0 +_020B732C: + mov r1, r9 + cmp r5, #0x0 + beq _020B7358 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + sub r0, r7, r0 + add r1, r9, r0 + b _020B7388 +_020B7358: + cmp r11, #0x0 + beq _020B7388 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + add r0, r0, #0x1 + add r1, r0, r0, lsr #0x1f + ldr r0, [sp, #0x8] + sub r0, r0, r1, asr #0x1 + add r1, r9, r0 +_020B7388: + ldr r2, [sp, #0xc] + add r3, sp, #0xc + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r3, [sp, #0x38] + mov r0, r10 + mov r2, r8 + bl FUN_020B73C0 + ldr r0, [sp, #0xc] + add r8, r8, r6 + cmp r0, #0x0 + bne _020B732C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B73C0 +FUN_020B73C0: ; 0x020B73C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + ldr r6, [r10, #0x8] + ldr r5, [r10, #0x4] + ldr r4, [sp, #0x30] + add r0, sp, #0x8 + str r4, [sp, #0x8] + ldr r4, [r5, #0x4] + mov r9, r1 + mov r8, r2 + mov r7, r3 + blx r4 + cmp r0, #0x0 + beq _020B743C + add r11, sp, #0x8 +_020B7400: + cmp r0, #0xa + beq _020B743C + str r7, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r10, #0x0] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl FUN_020B63CC + add r1, r9, r0 + mov r0, r11 + add r9, r1, r6 + blx r4 + cmp r0, #0x0 + bne _020B7400 +_020B743C: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + cmp r0, #0xa + ldreq r1, [sp, #0x8] + ldr r0, [sp, #0x34] + movne r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7468 +FUN_020B7468: ; 0x020B7468 + stmdb sp!, {r4-r6,lr} + ldrh r2, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov r1, #0x0 + add r2, r0, r2 + cmp r3, #0x0 + ldmleia sp!, {r4-r6,pc} + ldr r3, _020B7548 ; =0x46494E46 + ldr ip, _020B754C ; =0x43574448 + ldr r4, _020B7550 ; =0x434D4150 + ldr lr, _020B7554 ; =0x43474C50 +_020B7494: + ldr r5, [r2, #0x0] + cmp r5, r4 + bhi _020B74B0 + cmp r5, r4 + bhs _020B7518 + cmp r5, lr + b _020B752C +_020B74B0: + cmp r5, r12 + bhi _020B74C4 + cmp r5, r12 + beq _020B7500 + b _020B752C +_020B74C4: + cmp r5, r3 + bne _020B752C + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + add r5, r5, r0 + str r5, [r6, #0x8] + ldr r5, [r6, #0xc] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0xc] + ldr r5, [r6, #0x10] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x10] + b _020B752C +_020B7500: + add r6, r2, #0x8 + ldr r5, [r6, #0x4] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x4] + b _020B752C +_020B7518: + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x8] +_020B752C: + ldrh r5, [r0, #0xe] + ldr r6, [r2, #0x4] + add r1, r1, #0x1 + cmp r1, r5 + add r2, r2, r6 + blt _020B7494 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B7548: .word 0x46494E46 +_020B754C: .word 0x43574448 +_020B7550: .word 0x434D4150 +_020B7554: .word 0x43474C50 + + arm_func_start FUN_020B7558 +FUN_020B7558: ; 0x020B7558 + stmdb sp!, {r4-r6,lr} + movs r6, r0 + mov r5, r1 + beq _020B75C8 + cmp r6, #0x0 + beq _020B7584 + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7588 +_020B7584: + mov r0, #0x0 +_020B7588: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B75CC + cmp r6, #0x0 + beq _020B75B4 + ldrh r0, [r6, #0x6] + cmp r0, #0x100 + movcs r0, #0x1 + bhs _020B75B8 +_020B75B4: + mov r0, #0x0 +_020B75B8: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B75CC +_020B75C8: + mov r0, #0x0 +_020B75CC: + cmp r0, #0x0 + movne r4, #0x0 + bne _020B7654 + cmp r6, #0x0 + beq _020B7640 + cmp r6, #0x0 + beq _020B75FC + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7600 +_020B75FC: + mov r0, #0x0 +_020B7600: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B7644 + cmp r6, #0x0 + beq _020B762C + ldrh r0, [r6, #0x6] + cmp r0, #0x1 + movcs r0, #0x1 + bhs _020B7630 +_020B762C: + mov r0, #0x0 +_020B7630: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B7644 +_020B7640: + mov r0, #0x0 +_020B7644: + cmp r0, #0x0 + movne r4, #0x1 + bne _020B7654 + bl OS_Terminate +_020B7654: + mov r0, r6 + bl FUN_020B7468 + ldr r1, _020B76AC ; =0x46494E46 + mov r0, r6 + bl FUN_020B01F8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r6,pc} + add r0, r0, #0x8 + str r0, [r5, #0x0] + cmp r4, #0x0 + beq _020B76A0 + ldr r2, [r5, #0x0] + mov r1, #0x0 + ldrsb r0, [r2, #0x6] + strb r0, [r2, #0x7] + ldr r0, [r5, #0x0] + strb r1, [r0, #0x6] +_020B76A0: + add r0, r4, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B76A8: .word 0x4E465452 +_020B76AC: .word 0x46494E46 + + arm_func_start FUN_020B76B0 +FUN_020B76B0: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsb r2, [r0, #0x4] + ldrb r12, [r0, #0x5] + mov r4, r1 + cmp r2, r4 + subge r1, r2, r4 + movge r5, r12, lsr r1 + strgeb r1, [r0, #0x4] + bge _020B7704 + ldr r3, [r0, #0x0] + sub r1, r4, r2 + add r2, r3, #0x1 + str r2, [r0, #0x0] + ldrb r2, [r3, #0x0] + mov r5, r12, lsl r1 + strb r2, [r0, #0x5] + mov r2, #0x8 + strb r2, [r0, #0x4] + bl FUN_020B76B0 + orr r5, r0, r5 +_020B7704: + rsb r0, r4, #0x8 + mov r1, #0xff + and r0, r5, r1, asr r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7718 +FUN_020B7718: ; 0x020B7718 + ldr r1, [r0, #0x0] + ldrh r2, [r1], #0x2 + str r1, [r0, #0x0] + mov r0, r2 + bx lr + + arm_func_start FUN_020B772C +FUN_020B772C: ; 0x020B772C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r0, [r6, #0x9] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + add r4, r6, #0x8 +_020B7750: + ldrh r0, [r6, #0xe] + ldrh r1, [r4, r0] + add r0, r4, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r7, r6, r0 + mov r0, r7 + bl FUN_020B79A4 + mov r0, r7 + bl FUN_020B780C + ldrb r0, [r6, #0x9] + add r5, r5, #0x1 + cmp r5, r0 + blo _020B7750 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7790 +FUN_020B7790: ; 0x020B7790 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrb r0, [r8, #0x9] + mov r7, r1 + mov r5, #0x1 + cmp r0, #0x0 + mov r6, #0x0 + bls _020B7800 + add r4, r8, #0x8 +_020B77B8: + ldrh r0, [r8, #0xe] + mov r1, r7 + ldrh r2, [r4, r0] + add r0, r4, r0 + mla r0, r2, r6, r0 + ldr r0, [r0, #0x4] + add r9, r8, r0 + mov r0, r9 + bl FUN_020B7A04 + and r5, r5, r0 + mov r0, r9 + mov r1, r7 + bl FUN_020B7864 + ldrb r1, [r8, #0x9] + add r6, r6, #0x1 + and r5, r5, r0 + cmp r6, r1 + blo _020B77B8 +_020B7800: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B780C +FUN_020B780C: ; 0x020B780C + ldr r2, [r0, #0x8] + mov r1, #0x0 + add r2, r0, r2 + ldrh r0, [r2, #0x2] + add r12, r2, r0 + ldrb r0, [r12, #0x1] + cmp r0, #0x0 + bxls lr +_020B782C: + ldrh r2, [r12, #0x6] + ldrh r0, [r12, r2] + add r2, r12, r2 + add r2, r2, #0x4 + mla r3, r0, r1, r2 + ldrb r0, [r3, #0x3] + add r1, r1, #0x1 + ands r2, r0, #0x1 + bicne r0, r0, #0x1 + strneb r0, [r3, #0x3] + ldrb r0, [r12, #0x1] + cmp r1, r0 + blo _020B782C + bx lr + + arm_func_start FUN_020B7864 +FUN_020B7864: ; 0x020B7864 + stmdb sp!, {r4-r10,lr} + ldr r2, [r0, #0x8] + mov r10, r1 + add r9, r0, r2 + ldrh r0, [r9, #0x2] + mov r6, #0x1 + mov r7, #0x0 + add r8, r9, r0 + ldrb r0, [r8, #0x1] + cmp r0, #0x0 + bls _020B7908 + mov r5, r7 + mov r4, r7 +_020B7898: + ldrh r1, [r8, #0x6] + ldrh r0, [r10, #0x34] + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r0, r10, r0 + add r1, r2, r1 + add r1, r1, r5 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B78F0 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B78F4 + mov r0, r9 + mov r2, r10 + bl FUN_020B7910 + b _020B78F4 +_020B78F0: + mov r6, r4 +_020B78F4: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r5, r5, #0x10 + cmp r7, r0 + blo _020B7898 +_020B7908: + mov r0, r6 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020B7910 +FUN_020B7910: + stmdb sp!, {r4-r6,lr} + ldrh r5, [r1, #0x0] + ldr r2, [r2, #0x2c] + ldrh r4, [r3, #0x2] + mov r2, r2, lsl #0x10 + add r12, r0, r5 + mov r5, r2, lsr #0x10 + ands r2, r4, #0x1 + ldrh r4, [r3, #0x0] + moveq r3, r5, lsl #0xf + moveq r5, r3, lsr #0x10 + moveq r2, r4, lsl #0xf + moveq r4, r2, lsr #0x10 + ldrb r3, [r1, #0x2] + mov r2, #0x0 + cmp r3, #0x0 + bls _020B7994 + add r3, r4, r5 + mov r3, r3, lsl #0x10 + add r6, r0, #0x4 + mov r4, r3, lsr #0x10 +_020B7964: + ldrh r5, [r0, #0xa] + ldrb r3, [r12, r2] + add r2, r2, #0x1 + ldrh lr, [r6, r5] + add r5, r6, r5 + mla r3, lr, r3, r5 + ldr r3, [r3, #0x4] + add r3, r0, r3 + strh r4, [r3, #0x1c] + ldrb r3, [r1, #0x2] + cmp r2, r3 + blo _020B7964 +_020B7994: + ldrb r0, [r1, #0x3] + orr r0, r0, #0x1 + strb r0, [r1, #0x3] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B79A4 +FUN_020B79A4: ; 0x020B79A4 + stmdb sp!, {r4-r6,lr} + ldr r2, [r0, #0x8] + mov r4, #0x0 + ldrh r1, [r0, r2] + add r6, r0, r2 + add r5, r6, r1 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020B79C8: + ldrh r1, [r5, #0x6] + ldrh r0, [r5, r1] + add r1, r5, r1 + add r1, r1, #0x4 + mla r1, r0, r4, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + beq _020B79F0 + mov r0, r6 + bl FUN_020B7AB8 +_020B79F0: + ldrb r0, [r5, #0x1] + add r4, r4, #0x1 + cmp r4, r0 + blo _020B79C8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B7A04 +FUN_020B7A04: ; 0x020B7A04 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + mov r10, r1 + ldrh r1, [r0, r2] + add r9, r0, r2 + mov r11, #0x1 + add r8, r9, r1 + ldrb r0, [r8, #0x1] + mov r7, #0x0 + cmp r0, #0x0 + bls _020B7AAC + mov r6, r7 + mov r4, r7 + add r5, r10, #0x3c +_020B7A40: + ldrh r1, [r8, #0x6] + mov r0, r5 + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B7A94 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B7A98 + mov r0, r9 + mov r2, r10 + bl FUN_020B7B40 + b _020B7A98 +_020B7A94: + mov r11, r4 +_020B7A98: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020B7A40 +_020B7AAC: + mov r0, r11 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7AB8 +FUN_020B7AB8: ; 0x020B7AB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r1, #0x0] + ldrb r2, [r1, #0x2] + mov r3, #0x0 + add r12, r0, r4 + cmp r2, #0x0 + bls _020B7B28 + add r2, r0, #0x4 + mov r5, #0x1000 + ldr lr, _020B7B3C ; =0xC00F0000 +_020B7AE4: + ldrh r7, [r0, #0xa] + ldrb r4, [r12, r3] + add r3, r3, #0x1 + ldrh r6, [r2, r7] + add r7, r2, r7 + mla r4, r6, r4, r7 + ldr r4, [r4, #0x4] + add r6, r0, r4 + ldr r4, [r6, #0x14] + and r4, r4, lr + str r4, [r6, #0x14] + str r5, [r6, #0x24] + ldr r4, [r6, #0x24] + str r4, [r6, #0x28] + ldrb r4, [r1, #0x2] + cmp r3, r4 + blo _020B7AE4 +_020B7B28: + ldrb r0, [r1, #0x3] + bic r0, r0, #0x1 + strb r0, [r1, #0x3] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B7B3C: .word 0xC00F0000 + + arm_func_start FUN_020B7B40 +FUN_020B7B40: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r1 + mov r9, r3 + ldr r1, [r9, #0x0] + mov r10, r0 + and r0, r1, #0x1c000000 + cmp r0, #0x14000000 + ldrh r3, [r11, #0x0] + ldrne r1, [r2, #0x8] + mov r8, #0x0 + add r0, r10, r3 + str r0, [sp, #0x4] + ldrne r0, _020B7C50 ; =0x0000FFFF + andne r0, r1, r0 + strne r0, [sp, #0x0] + ldreq r1, [r2, #0x18] + ldreq r0, _020B7C50 ; =0x0000FFFF + andeq r0, r1, r0 + streq r0, [sp, #0x0] + ldrb r0, [r11, #0x2] + cmp r0, #0x0 + bls _020B7C3C + mov r4, #0x1000 + add r5, r10, #0x4 +_020B7BA4: + ldrh r6, [r10, #0xa] + ldr r0, [sp, #0x4] + ldr r1, [r9, #0x0] + ldrb r2, [r0, r8] + ldrh r3, [r5, r6] + ldr r0, [sp, #0x0] + add r6, r5, r6 + add r0, r1, r0 + mla r1, r3, r2, r6 + ldr r1, [r1, #0x4] + add r6, r10, r1 + ldr r1, [r6, #0x14] + orr r0, r1, r0 + str r0, [r6, #0x14] + ldr r3, [r9, #0x4] + ldr r0, _020B7C54 ; =0x000007FF + ldrh r1, [r6, #0x20] + and r2, r3, r0 + and r7, r0, r3, lsr #0xb + cmp r2, r1 + moveq r0, r4 + beq _020B7C08 + mov r0, r2, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C08: + str r0, [r6, #0x24] + ldrh r1, [r6, #0x22] + cmp r7, r1 + moveq r0, r4 + beq _020B7C28 + mov r0, r7, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C28: + str r0, [r6, #0x28] + ldrb r0, [r11, #0x2] + add r8, r8, #0x1 + cmp r8, r0 + blo _020B7BA4 +_020B7C3C: + ldrb r0, [r11, #0x3] + orr r0, r0, #0x1 + strb r0, [r11, #0x3] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7C50: .word 0x0000FFFF +_020B7C54: .word 0x000007FF + + arm_func_start FUN_020B7C58 +FUN_020B7C58: ; 0x020B7C58 + ldrh r2, [r0, #0x32] + mov r1, #0x0 + bic r2, r2, #0x1 + strh r2, [r0, #0x32] + ldr r2, [r0, #0x2c] + str r1, [r0, #0x2c] + mov r0, r2 + bx lr + + arm_func_start FUN_020B7C78 +FUN_020B7C78: ; 0x020B7C78 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + beq _020B7C90 + bl GX_BeginLoadTexPltt +_020B7C90: + ldrh r2, [r5, #0x30] + ldr r0, [r5, #0x38] + ldr r3, [r5, #0x2c] + ldr r1, _020B7CD8 ; =0x0000FFFF + add r0, r5, r0 + and r1, r3, r1 + mov r1, r1, lsl #0x3 + mov r2, r2, lsl #0x3 + bl GX_LoadTexPltt + ldrh r0, [r5, #0x32] + cmp r4, #0x0 + addeq sp, sp, #0x4 + orr r0, r0, #0x1 + strh r0, [r5, #0x32] + ldmeqia sp!, {r4-r5,pc} + bl GX_EndLoadTexPltt + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B7CD8: .word 0x0000FFFF + + arm_func_start FUN_020B7CDC +FUN_020B7CDC: ; 0x020B7CDC + str r1, [r0, #0x2c] + bx lr + + arm_func_start FUN_020B7CE4 +FUN_020B7CE4: ; 0x020B7CE4 + ldrh r0, [r0, #0x30] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7CF0 +FUN_020B7CF0: ; 0x020B7CF0 + ldrh r12, [r0, #0x10] + mov r3, #0x0 + bic r12, r12, #0x1 + strh r12, [r0, #0x10] + ldrh r12, [r0, #0x20] + bic r12, r12, #0x1 + strh r12, [r0, #0x20] + ldr r12, [r0, #0x8] + str r12, [r1, #0x0] + str r3, [r0, #0x8] + ldr r1, [r0, #0x18] + str r1, [r2, #0x0] + str r3, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7D28 +FUN_020B7D28: ; 0x020B7D28 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r8, r1 + mov r9, r0 + beq _020B7D40 + bl GX_BeginLoadTex +_020B7D40: + ldrh r0, [r9, #0xc] + movs r2, r0, lsl #0x3 + beq _020B7D74 + ldr r1, [r9, #0x8] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x14] + and r1, r1, r0 + add r0, r9, r3 + mov r1, r1, lsl #0x3 + bl GX_LoadTex + ldrh r0, [r9, #0x10] + orr r0, r0, #0x1 + strh r0, [r9, #0x10] +_020B7D74: + ldrh r0, [r9, #0x1c] + movs r7, r0, lsl #0x3 + beq _020B7DDC + ldr r1, [r9, #0x18] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x24] + and r4, r1, r0 + mov r5, r4, lsl #0x3 + ldr r6, [r9, #0x28] + mov r1, r5 + mov r2, r7 + add r0, r9, r3 + add r6, r9, r6 + bl GX_LoadTex + ldr r0, _020B7DF8 ; =0x0001FFFF + and r1, r5, #0x40000 + and r0, r0, r4, lsl #0x3 + mov r0, r0, lsr #0x1 + add r2, r0, #0x20000 + mov r0, r6 + add r1, r2, r1, lsr #0x2 + mov r2, r7, lsr #0x1 + bl GX_LoadTex + ldrh r0, [r9, #0x20] + orr r0, r0, #0x1 + strh r0, [r9, #0x20] +_020B7DDC: + cmp r8, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + bl GX_EndLoadTex + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B7DF4: .word 0x0000FFFF +_020B7DF8: .word 0x0001FFFF + + arm_func_start FUN_020B7DFC +FUN_020B7DFC: ; 0x020B7DFC + cmp r1, #0x0 + strne r1, [r0, #0x8] + cmp r2, #0x0 + strne r2, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7E10 +FUN_020B7E10: ; 0x020B7E10 + ldrh r0, [r0, #0x1c] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E1C +FUN_020B7E1C: ; 0x020B7E1C + ldrh r0, [r0, #0xc] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E28 +FUN_020B7E28: ; 0x020B7E28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x8 + mov r4, r1 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7E88 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7E74: + ldr r0, [r5, #0x0] + orr r0, r0, #0x10 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7E88 +FUN_020B7E88: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r2, r1 + bne _020B7EB8 + ldr r3, [r2, #0x10] + mov r2, #0x0 + str r3, [r0, #0x0] + str r2, [r1, #0x10] + mov r0, #0x1 + bx lr +_020B7EB8: + ldr r3, [r2, #0x10] + cmp r3, #0x0 + beq _020B7EF4 +_020B7EC4: + cmp r3, r1 + bne _020B7EE4 + ldr r1, [r3, #0x10] + mov r0, #0x0 + str r1, [r2, #0x10] + str r0, [r3, #0x10] + mov r0, #0x1 + bx lr +_020B7EE4: + mov r2, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B7EC4 +_020B7EF4: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B7EFC +FUN_020B7EFC: ; 0x020B7EFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r2, [r4, #0x8] + mov r5, r0 + ldrb r0, [r2, #0x0] + cmp r0, #0x4a + beq _020B7F50 + cmp r0, #0x4d + beq _020B7F34 + cmp r0, #0x56 + beq _020B7F6C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F34: + add r0, r5, #0x3c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F50: + add r0, r5, #0x44 + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F6C: + add r0, r5, #0x4c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7F88 +FUN_020B7F88: ; 0x020B7F88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020B7FA4: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020B7FE4 +_020B7FB4: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020B7FB4 +_020B7FE4: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020B7FA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7FF8 +FUN_020B7FF8: ; 0x020B7FF8 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + streq r1, [r0, #0x0] + bxeq lr + ldr r3, [r12, #0x10] + cmp r3, #0x0 + bne _020B8058 + ldrb r3, [r12, #0x18] + ldrb r2, [r1, #0x18] + cmp r3, r2 + bls _020B8050 + ldr r2, [r1, #0x10] + mov r3, r1 + cmp r2, #0x0 + beq _020B8044 +_020B8034: + ldr r3, [r3, #0x10] + ldr r2, [r3, #0x10] + cmp r2, #0x0 + bne _020B8034 +_020B8044: + str r12, [r3, #0x10] + str r1, [r0, #0x0] + bx lr +_020B8050: + str r1, [r12, #0x10] + bx lr +_020B8058: + cmp r3, #0x0 + beq _020B80AC + ldrb r2, [r1, #0x18] +_020B8064: + ldrb r0, [r3, #0x18] + cmp r0, r2 + blo _020B809C + ldr r0, [r1, #0x10] + mov r2, r1 + cmp r0, #0x0 + beq _020B8090 +_020B8080: + ldr r2, [r2, #0x10] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + bne _020B8080 +_020B8090: + str r1, [r12, #0x10] + str r3, [r2, #0x10] + bx lr +_020B809C: + mov r12, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B8064 +_020B80AC: + str r1, [r12, #0x10] + bx lr + + arm_func_start FUN_020B80B4 +FUN_020B80B4: ; 0x020B80B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x54 + bl MIi_CpuClear32 + ldr r0, _020B8104 ; =UNK_021065B4 + ldr r1, _020B8108 ; =UNK_021065B0 + ldr r2, [r0, #0x0] + ldr r0, _020B810C ; =UNK_021065AC + str r2, [r5, #0xc] + ldr r1, [r1, #0x0] + str r1, [r5, #0x14] + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B8104: .word UNK_021065B4 +_020B8108: .word UNK_021065B0 +_020B810C: .word UNK_021065AC + + arm_func_start FUN_020B8110 +FUN_020B8110: ; 0x020B8110 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x8] + str r12, [r0, #0x10] + mov r4, #0x7f + strb r4, [r0, #0x18] + mov r4, #0x1000 + str r4, [r0, #0x4] + ldr lr, _020B81A4 ; =UNK_02106594 + str r3, [r0, #0x14] + ldr r6, [lr, #0x0] + cmp r6, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + ldrb r7, [r1, #0x0] + ldr r4, _020B81A8 ; =UNK_021065B8 +_020B8158: + ldrb r3, [r4, r12, lsl #0x3] + mov r5, r12, lsl #0x3 + cmp r7, r3 + bne _020B8190 + add r3, r4, r5 + ldrh lr, [r1, #0x2] + ldrh r3, [r3, #0x2] + cmp lr, r3 + bne _020B8190 + ldr r3, _020B81AC ; =UNK_021065BC + ldr r3, [r3, r5] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B8190: + add r12, r12, #0x1 + cmp r12, r6 + blo _020B8158 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B81A4: .word UNK_02106594 +_020B81A8: .word UNK_021065B8 +_020B81AC: .word UNK_021065BC + + arm_func_start FUN_020B81B0 +FUN_020B81B0: ; 0x020B81B0 + ldrb r0, [r0, #0x0] + cmp r0, #0x4a + beq _020B81E4 + cmp r0, #0x4d + beq _020B81D0 + cmp r0, #0x56 + beq _020B81E4 + b _020B81F8 +_020B81D0: + ldrb r0, [r1, #0x18] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81E4: + ldrb r0, [r1, #0x17] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81F8: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B8200 +FUN_020B8200: ; 0x020B8200 + cmp r0, #0x0 + ldrne ip, _020B8260 ; =UNK_021CED18 + ldrne r12, [r12, #0xa0] + andne r12, r12, #0xff + strne r12, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x8 + andne r0, r0, #0xff + strne r0, [r1, #0x0] + cmp r2, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x10 + andne r0, r0, #0xff + strne r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x18 + andne r0, r0, #0xff + strne r0, [r3, #0x0] + bx lr + .balign 4 +_020B8260: .word UNK_021CED18 + + arm_func_start FUN_020B8264 +FUN_020B8264: ; 0x020B8264 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B8290 + bl FUN_020B82E4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B8290: + ldr r0, _020B82A0 ; =UNK_021CEE78 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B829C: .word UNK_021CED18 +_020B82A0: .word UNK_021CEE78 + + arm_func_start FUN_020B82A4 +FUN_020B82A4: ; 0x020B82A4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B82D0 + bl FUN_020B82E4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B82D0: + ldr r0, _020B82E0 ; =UNK_021CEE48 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B82DC: .word UNK_021CED18 +_020B82E0: .word UNK_021CEE48 + + arm_func_start FUN_020B82E4 +FUN_020B82E4: ; 0x020B82E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8330 ; =UNK_021CEDD4 + ldr r1, _020B8334 ; =UNK_021CED64 + ldr r2, _020B8338 ; =UNK_021CEE48 + bl MTX_Concat43 + ldr r3, _020B833C ; =UNK_021CED18 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r2, [r3, #0xf4] + mov r1, r0 + str r2, [sp, #0x0] + ldr r2, [r3, #0xec] + ldr r3, [r3, #0xf0] + bl MTX_ScaleApply43 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r1, _020B8340 ; =UNK_021CEE78 + bl MTX_Inverse43 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8330: .word UNK_021CEDD4 +_020B8334: .word UNK_021CED64 +_020B8338: .word UNK_021CEE48 +_020B833C: .word UNK_021CED18 +_020B8340: .word UNK_021CEE78 + + arm_func_start FUN_020B8344 +FUN_020B8344: ; 0x020B8344 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x8 + bne _020B8378 + ldr r0, _020B8388 ; =UNK_021CED64 + ldr r1, _020B838C ; =UNK_021CEE18 + bl MTX_Inverse43 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x8 + str r1, [r0, #0xfc] +_020B8378: + ldr r0, _020B838C ; =UNK_021CEE18 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8384: .word UNK_021CED18 +_020B8388: .word UNK_021CED64 +_020B838C: .word UNK_021CEE18 + + arm_func_start FUN_020B8390 +FUN_020B8390: ; 0x020B8390 + orr r0, r0, r1, lsl #0x4 + + arm_func_start FUN_020B8394 +FUN_020B8394: ; 0x020B8394 + ldr r1, [sp, #0x4] + orr r0, r0, r2, lsl #0x6 + orr r0, r1, r0 + ldr r2, [sp, #0x0] + orr r1, r0, r3, lsl #0x18 + ldr r0, _020B83B8 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x9c] + bx lr + .balign 4 +_020B83B8: .word UNK_021CED18 + + arm_func_start FUN_020B83BC +FUN_020B83BC: ; 0x020B83BC + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B83DC ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x98] + bx lr + .balign 4 +_020B83DC: .word UNK_021CED18 + + arm_func_start FUN_020B83E0 +FUN_020B83E0: ; 0x020B83E0 + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B8400 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x94] + bx lr + .balign 4 +_020B8400: .word UNK_021CED18 + + arm_func_start FUN_020B8404 +FUN_020B8404: ; 0x020B8404 + ldr r2, _020B8414 ; =UNK_021CEDC0 + orr r1, r1, r0, lsl #0x1e + str r1, [r2, r0, lsl #0x2] + bx lr + .balign 4 +_020B8414: .word UNK_021CEDC0 + + arm_func_start FUN_020B8418 +FUN_020B8418: ; 0x020B8418 + stmdb sp!, {r4,lr} + ldr ip, _020B8444 ; =0x000003FF + ldr lr, _020B8448 ; =UNK_021CED98 + and r4, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + orr r1, r4, r1, lsl #0xa + orr r1, r1, r2, lsl #0x14 + orr r1, r1, r0, lsl #0x1e + str r1, [lr, r0, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020B8444: .word 0x000003FF +_020B8448: .word UNK_021CED98 + + arm_func_start FUN_020B844C +FUN_020B844C: ; 0x020B844C + ldr r3, _020B846C ; =UNK_021CEE04 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8470 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B846C: .word UNK_021CEE04 +_020B8470: .word UNK_021CED18 + + arm_func_start FUN_020B8474 +FUN_020B8474: ; 0x020B8474 + ldr r3, _020B8494 ; =UNK_021CEDF8 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8498 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B8494: .word UNK_021CEDF8 +_020B8498: .word UNK_021CED18 + + arm_func_start FUN_020B849C +FUN_020B849C: ; 0x020B849C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B84D4 ; =UNK_021CED18 + mov r2, #0x3e + ldr r0, [r1], #0x4 + bl FUN_020BB1C0 + ldr r0, _020B84D4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0x1 + str r1, [r0, #0xfc] + bic r1, r1, #0x2 + str r1, [r0, #0xfc] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B84D4: .word UNK_021CED18 + + arm_func_start FUN_020B84D8 +FUN_020B84D8: ; 0x020B84D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r8, _020B85F4 ; =0x17101610 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r5, _020B85FC ; =0x32323232 + ldr r4, _020B8600 ; =0x60293130 + ldr r3, _020B8604 ; =0x33333333 + ldr r2, _020B8608 ; =0x002A1B19 + mov r7, #0x0 + mov r6, #0x2 + ldr r0, _020B860C ; =UNK_021CED64 + str r8, [r1, #0x0] + str r7, [r1, #0x4] + str r6, [r1, #0x48] + str r5, [r1, #0x7c] + str r4, [r1, #0x90] + str r3, [r1, #0xa4] + str r2, [r1, #0xb8] + bl MTX_Identity43_ + ldr r0, _020B8610 ; =UNK_021CED20 + bl MTX_Identity44_ + mov r2, r7 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r7, _020B8614 ; =0x4210C210 + ldr r0, _020B8618 ; =0x40000200 + ldr lr, _020B861C ; =0x2D8B62D8 + ldr sb, _020B8620 ; =0x800001FF + ldr r8, _020B8624 ; =0xC0080000 + ldr r6, _020B8628 ; =0x001F008F + ldr r5, _020B862C ; =0xBFFF0000 + ldr r4, _020B8630 ; =0x00007FFF + ldr ip, _020B8634 ; =0x800003E0 + ldr r3, _020B8638 ; =0xC0007C00 + str r0, [r1, #0x84] + str lr, [r1, #0x80] + mov lr, #0x4000001f + ldr r0, _020B863C ; =UNK_021CEDD4 + str r9, [r1, #0x88] + str r8, [r1, #0x8c] + str r7, [r1, #0x94] + str r7, [r1, #0x98] + str r6, [r1, #0x9c] + str r5, [r1, #0xa0] + str r4, [r1, #0xa8] + str lr, [r1, #0xac] + str r12, [r1, #0xb0] + str r3, [r1, #0xb4] + str r2, [r1, #0xe0] + str r2, [r1, #0xe4] + str r2, [r1, #0xe8] + bl MTX_Identity33_ + mov r3, #0x1000 + ldr r0, _020B85F8 ; =UNK_021CED18 + mov r2, #0x0 + rsb r1, r3, #0x0 + str r3, [r0, #0xec] + str r3, [r0, #0xf0] + str r3, [r0, #0xf4] + str r2, [r0, #0xf8] + str r2, [r0, #0xfc] + str r2, [r0, #0x248] + str r2, [r0, #0x244] + str r2, [r0, #0x240] + str r2, [r0, #0x254] + str r2, [r0, #0x24c] + str r3, [r0, #0x250] + str r2, [r0, #0x25c] + str r2, [r0, #0x258] + str r1, [r0, #0x260] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B85F4: .word 0x17101610 +_020B85F8: .word UNK_021CED18 +_020B85FC: .word 0x32323232 +_020B8600: .word 0x60293130 +_020B8604: .word 0x33333333 +_020B8608: .word 0x002A1B19 +_020B860C: .word UNK_021CED64 +_020B8610: .word UNK_021CED20 +_020B8614: .word 0x4210C210 +_020B8618: .word 0x40000200 +_020B861C: .word 0x2D8B62D8 +_020B8620: .word 0x800001FF +_020B8624: .word 0xC0080000 +_020B8628: .word 0x001F008F +_020B862C: .word 0xBFFF0000 +_020B8630: .word 0x00007FFF +_020B8634: .word 0x800003E0 +_020B8638: .word 0xC0007C00 +_020B863C: .word UNK_021CEDD4 + + arm_func_start FUN_020B8640 +FUN_020B8640: ; 0x020B8640 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r0 + mov r0, #0x0 + mov r6, r1 + str r0, [r7, #0x0] + add r4, sp, #0x0 + mov r5, r2, lsl #0x1 + mov r8, #0x1 +_020B8664: + add r1, r5, r6 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B869C + ldr r3, [r6, #0xc] + mov r0, r4 + mov r1, r6 + and r2, r2, #0xff + blx r3 + ldr r2, [r7, #0x0] + ldr r1, [sp, #0x0] + mov r0, r8 + orr r1, r2, r1 + str r1, [r7, #0x0] +_020B869C: + ldr r6, [r6, #0x10] + cmp r6, #0x0 + bne _020B8664 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B86B0 +FUN_020B86B0: ; 0x020B86B0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r9, r1 + ldr r3, [r9, #0x10] + mov r10, r0 + mov r8, r2 + cmp r3, #0x0 + bne _020B8704 + add r2, r9, r8, lsl #0x1 + ldrh r4, [r2, #0x1a] + and r2, r4, #0x300 + cmp r2, #0x100 + addne sp, sp, #0x5c + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r9, #0xc] + and r2, r4, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B8704: + mov r7, #0x0 + mov r3, r7 + mov r4, r9 + mov r2, r8, lsl #0x1 +_020B8714: + add r0, r2, r4 + ldrh r0, [r0, #0x1a] + and r0, r0, #0x300 + cmp r0, #0x100 + ldreq r0, [r4, #0x4] + moveq r1, r4 + ldr r4, [r4, #0x10] + addeq r7, r7, r0 + addeq r3, r3, #0x1 + cmp r4, #0x0 + bne _020B8714 + cmp r7, #0x0 + addeq sp, sp, #0x5c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + cmp r3, #0x1 + bne _020B877C + add r0, r1, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + ldr r3, [r1, #0xc] + mov r0, r10 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B877C: + mov r1, r10 + mov r0, #0x0 + mov r2, #0x58 + bl MIi_CpuClearFast + mvn r0, #0x0 + str r0, [r10, #0x0] + add r5, sp, #0x0 + add r4, sp, #0x4 + add r11, sp, #0x10 +_020B87A0: + add r0, r9, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + and r0, r2, #0x300 + cmp r0, #0x100 + bne _020B8948 + ldr r0, [r9, #0x4] + cmp r0, #0x0 + ble _020B8948 + ldr r3, [r9, #0xc] + mov r0, r5 + mov r1, r9 + and r2, r2, #0xff + blx r3 + cmp r7, #0x1000 + ldreq r6, [r9, #0x4] + beq _020B87F0 + ldr r0, [r9, #0x4] + mov r1, r7 + bl FX_Div + mov r6, r0 +_020B87F0: + ldr r3, [sp, #0x0] + mov r1, r4 + mov r2, r6 + add r0, r10, #0x4 + and r3, r3, #0x1 + bl FUN_020B8998 + ldr r1, [sp, #0x0] + add r0, r10, #0x10 + and r3, r1, #0x8 + mov r1, r11 + mov r2, r6 + bl FUN_020B8998 + ldr r3, [sp, #0x0] + add r0, r10, #0x1c + add r1, sp, #0x1c + mov r2, r6 + and r3, r3, #0x10 + bl FUN_020B8998 + ldr r0, [sp, #0x0] + ands r0, r0, #0x4 + bne _020B8898 + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x4c] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x4c] + ldr r0, [sp, #0x50] + ldr r2, [r10, #0x50] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x50] + ldr r0, [sp, #0x54] + ldr r2, [r10, #0x54] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x54] +_020B8898: + ldr r0, [sp, #0x0] + ands r0, r0, #0x2 + bne _020B8920 + ldr r0, [sp, #0x28] + ldr r1, [r10, #0x28] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x28] + ldr r0, [sp, #0x2c] + ldr r1, [r10, #0x2c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x2c] + ldr r0, [sp, #0x30] + ldr r1, [r10, #0x30] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x30] + ldr r0, [sp, #0x34] + ldr r1, [r10, #0x34] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x34] + ldr r0, [sp, #0x38] + ldr r1, [r10, #0x38] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x38] + ldr r0, [sp, #0x3c] + ldr r1, [r10, #0x3c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x3c] + b _020B8938 +_020B8920: + ldr r0, [r10, #0x28] + add r0, r0, r6 + str r0, [r10, #0x28] + ldr r0, [r10, #0x38] + add r0, r0, r6 + str r0, [r10, #0x38] +_020B8938: + ldr r1, [r10, #0x0] + ldr r0, [sp, #0x0] + and r0, r1, r0 + str r0, [r10, #0x0] +_020B8948: + ldr r9, [r9, #0x10] + cmp r9, #0x0 + bne _020B87A0 + add r0, r10, #0x28 + add r1, r10, #0x34 + add r2, r10, #0x40 + bl VEC_CrossProduct + add r0, r10, #0x28 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + add r1, r10, #0x28 + add r2, r10, #0x34 + bl VEC_CrossProduct + mov r0, #0x1 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B8998 +FUN_020B8998: + cmp r3, #0x0 + beq _020B89C8 + ldr r1, [r0, #0x0] + add r1, r1, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r2 + str r1, [r0, #0x8] + bx lr +_020B89C8: + ldr r3, [r1, #0x0] + ldr r12, [r0, #0x0] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x0] + ldr r3, [r1, #0x4] + ldr r12, [r0, #0x4] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x4] + ldr r1, [r1, #0x8] + ldr r3, [r0, #0x8] + mul r1, r2, r1 + add r1, r3, r1, asr #0xc + str r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020B8A08 +FUN_020B8A08: ; 0x020B8A08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r0, #0x0 + mov r4, r2, lsl #0x1 + mov r7, #0x1 +_020B8A24: + add r1, r4, r5 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B8A4C + ldr r3, [r5, #0xc] + mov r0, r6 + mov r1, r5 + and r2, r2, #0xff + blx r3 + mov r0, r7 +_020B8A4C: + ldr r5, [r5, #0x10] + cmp r5, #0x0 + bne _020B8A24 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B8A60 +FUN_020B8A60: ; 0x020B8A60 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x80 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020B8DB4 + ands r0, r1, #0x1 + beq _020B8DB4 + add r0, sp, #0x10 + mov r1, #0x0 + bl FUN_020BB824 + mov r0, #0x1e + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x13 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r2, [r5, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0xc0000000 + beq _020B8AF0 + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r3, _020B8DC8 ; =UNK_02106630 + ldr r0, [r2, #0x10] + ldr r1, _020B8DCC ; =UNK_02106634 + orr r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8AF0: + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B8B3C + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8B40 +_020B8B3C: + mov r0, #0x0 +_020B8B40: + cmp r0, #0x0 + bne _020B8B84 + ldr r0, [r5, #0xb0] + ldr r1, _020B8DD0 ; =UNK_02106660 + ldrh r6, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + mov r0, #0x16 + rsb r2, r6, #0x0 + mov lr, r3, lsl #0xf + mov r12, r2, lsl #0xf + mov r3, r6, lsl #0xf + mov r2, #0x10 + str lr, [r1, #0x0] + str r12, [r1, #0x14] + str lr, [r1, #0x30] + str r3, [r1, #0x34] + bl FUN_020BB1C0 +_020B8B84: + cmp r4, #0x2 + bne _020B8BC0 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8BC4 +_020B8BC0: + mov r0, #0x0 +_020B8BC4: + cmp r0, #0x0 + bne _020B8C28 + ldr r12, [r5, #0xd8] + ldr r0, [r5, #0x0] + ldrh r2, [r12, #0xa] + add r3, r12, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8C28 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8C28: + cmp r4, #0x3 + movne r0, #0x0 + bne _020B8C54 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x8] + and r0, r0, #0x40 +_020B8C54: + cmp r0, #0x0 + bne _020B8D84 + ldr r0, _020B8DD4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B8CA0 + ldr r1, _020B8DD8 ; =UNK_021CEDF8 + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + ldr r1, _020B8DDC ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CA0: + ands r0, r1, #0x2 + beq _020B8CBC + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CBC: + bl FUN_020B8344 + mov r1, r0 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 +_020B8CE0: + bl FUN_020BB394 + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020B8DE4 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020B8DE8 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add r4, sp, #0x40 +_020B8D04: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B8D04 + ldr r1, _020B8DEC ; =0x04000448 + mov r2, #0x1 + str r2, [r1, #0x0] + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x3 + str r2, [r0, #0x0] + add r1, sp, #0x40 + mov r0, #0x16 + mov r2, #0x10 + bl FUN_020BB1C0 + ldr r1, [sp, #0x70] + ldr r0, [sp, #0x74] + mov r2, r1, asr #0x4 + mov r1, r0, asr #0x4 + mov r0, r2, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8D84: + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + mov r3, #0x1e + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 +_020B8DB4: + ldr r0, [r5, #0x0] + add r0, r0, #0x3 + str r0, [r5, #0x0] + add sp, sp, #0x80 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B8DC8: .word UNK_02106630 +_020B8DCC: .word UNK_02106634 +_020B8DD0: .word UNK_02106660 +_020B8DD4: .word UNK_021CED18 +_020B8DD8: .word UNK_021CEDF8 +_020B8DDC: .word UNK_021CEDD4 +_020B8DE0: .word 0x04000440 +_020B8DE4: .word 0x04000444 +_020B8DE8: .word 0x04000454 +_020B8DEC: .word 0x04000448 + + arm_func_start FUN_020B8DF0 +FUN_020B8DF0: ; 0x020B8DF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r7, r0 + ldr r1, [r7, #0x8] + ands r0, r1, #0x200 + bne _020B90E8 + ands r0, r1, #0x1 + beq _020B90E8 + ldr r2, [r7, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0x80000000 + beq _020B8E5C + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r3, _020B90FC ; =UNK_02106638 + ldr r0, [r2, #0x10] + ldr r1, _020B9100 ; =UNK_0210663C + orr r0, r0, #0x80000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8E5C: + mov r0, #0x3 + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x10 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + moveq r6, #0x0 + cmp r6, #0x1 + bne _020B8EC0 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8EC4 +_020B8EC0: + mov r0, #0x0 +_020B8EC4: + cmp r0, #0x0 + bne _020B8F3C + ldr r0, [r7, #0xb0] + add r1, sp, #0x38 + ldrh r4, [r0, #0x2e] + ldrh r5, [r0, #0x2c] + mov r3, #0x10000 + rsb r0, r4, #0x0 + mov r12, r0, lsl #0xf + mov lr, r5, lsl #0xf + mov r0, #0x1b + mov r2, #0x3 + str lr, [sp, #0x38] + str r12, [sp, #0x3c] + str r3, [sp, #0x40] + bl FUN_020BB1C0 + mov r0, r5, lsl #0x13 + mov r1, r4, lsl #0x13 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8F3C: + cmp r6, #0x2 + bne _020B8F78 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8F7C +_020B8F78: + mov r0, #0x0 +_020B8F7C: + cmp r0, #0x0 + bne _020B8FE0 + ldr r4, [r7, #0xd8] + ldr r0, [r7, #0x0] + ldrh r2, [r4, #0xa] + add r3, r4, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8FE0 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8FE0: + cmp r6, #0x3 + movne r0, #0x0 + bne _020B900C + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x8] + and r0, r0, #0x40 +_020B900C: + cmp r0, #0x0 + bne _020B90D0 + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x0 + bl FUN_020BB824 + mov r3, #0x3 + add r1, sp, #0xc + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 + ldr r0, _020B9104 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9094 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + ldr r1, _020B910C ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B9094: + ands r0, r1, #0x2 + beq _020B90C0 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B90C0: + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020B90D0: + mov r3, #0x2 + add r1, sp, #0x10 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020B90E8: + ldr r0, [r7, #0x0] + add r0, r0, #0x3 + str r0, [r7, #0x0] + add sp, sp, #0x44 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B90FC: .word UNK_02106638 +_020B9100: .word UNK_0210663C +_020B9104: .word UNK_021CED18 +_020B9108: .word UNK_021CED64 +_020B910C: .word UNK_021CEDD4 + + arm_func_start FUN_020B9110 +FUN_020B9110: ; 0x020B9110 + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r2, [r4, #0x8] + ands r0, r2, #0x100 + bne _020B9164 + ands r0, r2, #0x200 + bne _020B9164 + cmp r1, #0x0 + ldreq r0, [r4, #0xe0] + add r1, sp, #0x0 + streq r0, [sp, #0x8] + streq r0, [sp, #0x4] + streq r0, [sp, #0x0] + ldrne r0, [r4, #0xe4] + mov r2, #0x3 + strne r0, [sp, #0x8] + strne r0, [sp, #0x4] + strne r0, [sp, #0x0] + mov r0, #0x1b + bl FUN_020BB1C0 +_020B9164: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B9178 +FUN_020B9178: ; 0x020B9178 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B91CC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r1, r0, #0x40 + b _020B91D0 +_020B91CC: + mov r1, #0x0 +_020B91D0: + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020B9228 + cmp r1, #0x0 + bne _020B9228 + ldr r0, [r5, #0x0] + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x2] + ldrb lr, [r0, #0x3] + ldrb r2, [r0, #0x5] + ldrb r1, [r0, #0x6] + orr r3, r12, r3, lsl #0x8 + ldrb r6, [r0, #0x4] + orr r12, r3, lr, lsl #0x10 + ldrb r3, [r0, #0x7] + orr r1, r2, r1, lsl #0x8 + orr r6, r12, r6, lsl #0x18 + ldrb r2, [r0, #0x8] + orr r1, r1, r3, lsl #0x10 + add r0, r0, r6 + orr r1, r1, r2, lsl #0x18 + bl FUN_020BB2B0 +_020B9228: + cmp r4, #0x3 + bne _020B9248 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 +_020B9248: + ldr r0, [r5, #0x0] + add r0, r0, #0x9 + str r0, [r5, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B9258 +FUN_020B9258: ; 0x020B9258 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x8c + ldr r1, [r0, #0x4] + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x4] + ldrb r2, [r4, #0x2] + ldr r3, [r6, #0x10] + mov r10, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x8] + add r3, r6, r3 + add r1, sp, #0x34 + mov r0, r10 + mov r2, #0x54 + mov r9, r10 + str r3, [sp, #0x4] + add r8, r4, #0x3 + bl MIi_CpuClearFast + bl FUN_020BB394 + ldr r0, _020B98AC ; =0x04000440 + mov r7, r10 + str r7, [r0, #0x0] + mov r0, #0x1 + ldr r2, _020B98B0 ; =0x0400044C + ldr r1, _020B98B4 ; =0x04000454 + str r0, [r2, #0x0] + str r0, [sp, #0x10] + str r7, [r1, #0x0] + mov r1, #0x2 + ldr r0, _020B98AC ; =0x04000440 + str r1, [sp, #0x14] + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _020B96CC +_020B92E4: + ldrb r4, [r8, #0x1] + mov r0, #0x64 + ldr r3, _020B98B8 ; =UNK_021D0380 + mul r0, r4, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r1, r4, lsr #0x5 + add r0, r0, r1, lsl #0x2 + ldr r1, [sp, #0x10] + and r2, r4, #0x1f + mov r1, r1, lsl r2 + ldr r11, [r0, #0xcc] + ldr r2, [sp, #0xc] + ands r11, r1, r11 + add r6, r3, r2 + bne _020B9358 + ldr r3, [r0, #0xcc] + mov r2, #0x54 + orr r1, r3, r1 + str r1, [r0, #0xcc] + ldr r0, [sp, #0x4] + ldr r1, _020B98BC ; =0x04000450 + mla r0, r4, r2, r0 + ldrb r2, [r8, #0x0] + str r2, [r1, #0x0] + ldr r2, [sp, #0x10] + ldr r1, _020B98AC ; =0x04000440 + str r2, [r1, #0x0] + bl G3_MultMtx43 +_020B9358: + cmp r7, #0x0 + beq _020B9500 + ldr r2, [sp, #0x6c] + ldr r1, [r5, #0x0] + str r2, [sp, #0x18] + ldr r2, [sp, #0x70] + mov r0, r1, asr #0x1f + str r2, [sp, #0x1c] + ldr r2, [sp, #0x74] + ldr r12, [sp, #0x64] + str r2, [sp, #0x20] + ldr r2, [sp, #0x78] + ldr lr, [sp, #0x68] + str r2, [sp, #0x24] + ldr r2, [sp, #0x7c] + str r2, [sp, #0x28] + ldr r2, [sp, #0x80] + str r2, [sp, #0x2c] + ldr r2, [sp, #0x84] + str r2, [sp, #0x30] + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r12, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, lr, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x18] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x6c] + ldr r1, [r5, #0xc] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x1c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x70] + ldr r1, [r5, #0x10] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x20] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x74] + ldr r1, [r5, #0x14] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x24] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x78] + ldr r1, [r5, #0x18] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x28] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x7c] + ldr r1, [r5, #0x1c] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x2c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x80] + ldr r1, [r5, #0x20] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x30] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x84] +_020B9500: + cmp r11, #0x0 + bne _020B9538 +_020B9508: + mov r0, r6 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9508 + ldr r1, [sp, #0x14] + ldr r0, _020B98AC ; =0x04000440 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x54 + mla r0, r4, r1, r0 + add r0, r0, #0x30 + bl G3_MultMtx33 +_020B9538: + ldrb r1, [r8, #0x2] + ldr r2, [sp, #0x34] + ldr r0, [r6, #0x0] + mov r10, r1, lsl #0x4 + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x34] + mov r9, r10, asr #0x1f + ldr r2, [sp, #0x38] + ldr r0, [r6, #0x4] + ldr r3, [sp, #0x3c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x38] + ldr r0, [r6, #0x8] + ldr r2, [sp, #0x40] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x3c] + ldr r0, [r6, #0x10] + ldr r3, [sp, #0x44] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x40] + ldr r0, [r6, #0x14] + ldr r2, [sp, #0x48] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x44] + ldr r0, [r6, #0x18] + ldr r3, [sp, #0x4c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x48] + ldr r0, [r6, #0x20] + ldr r2, [sp, #0x50] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x4c] + ldr r0, [r6, #0x24] + ldr r3, [sp, #0x54] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x50] + ldr r0, [r6, #0x28] + ldr r2, [sp, #0x58] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x54] + ldr r0, [r6, #0x30] + ldr r3, [sp, #0x5c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x58] + ldr r0, [r6, #0x34] + ldr r2, [sp, #0x60] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x5c] + ldr r0, [r6, #0x38] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x60] + cmp r11, #0x0 + ldr r1, _020B98C0 ; =UNK_021D03C0 + ldr r0, [sp, #0xc] + add r5, r1, r0 + add r8, r8, #0x3 + bne _020B96BC +_020B96AC: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020B96AC +_020B96BC: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + cmp r7, r0 + blo _020B92E4 +_020B96CC: + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x64] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x68] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + ldr r4, [sp, #0x6c] + umull r0, r2, r10, r1 + mov r3, r0, lsr #0xc + mov r0, r1, asr #0x1f + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + orr r3, r3, r2, lsl #0x14 + adds r0, r4, r3 + str r0, [sp, #0x6c] + ldr r7, [r5, #0xc] + ldr r12, [sp, #0x70] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r6, r12, r6 + str r6, [sp, #0x70] + ldr r7, [r5, #0x10] + ldr r4, [sp, #0x74] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r4, r4, r6 + str r4, [sp, #0x74] + ldr r6, [r5, #0x14] + ldr r3, [sp, #0x78] + mov r4, r6, asr #0x1f + umull r8, r7, r10, r6 + mla r7, r10, r4, r7 + mla r7, r9, r6, r7 + mov r4, r8, lsr #0xc + orr r4, r4, r7, lsl #0x14 + adds r3, r3, r4 + str r3, [sp, #0x78] + ldr r4, [r5, #0x18] + ldr r2, [sp, #0x7c] + mov r3, r4, asr #0x1f + umull r7, r6, r10, r4 + mla r6, r10, r3, r6 + mla r6, r9, r4, r6 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + adds r2, r2, r3 + str r2, [sp, #0x7c] + ldr r3, [r5, #0x1c] + ldr r1, [sp, #0x80] + mov r2, r3, asr #0x1f + umull r6, r4, r10, r3 + mla r4, r10, r2, r4 + mla r4, r9, r3, r4 + mov r2, r6, lsr #0xc + orr r2, r2, r4, lsl #0x14 + adds r1, r1, r2 + str r1, [sp, #0x80] + ldr r2, [r5, #0x20] + ldr lr, [sp, #0x84] + mov r1, r2, asr #0x1f + umull r4, r3, r10, r2 + mla r3, r10, r1, r3 + mla r3, r9, r2, r3 + mov r1, r4, lsr #0xc + orr r1, r1, r3, lsl #0x14 + adds r1, lr, r1 + add r0, sp, #0x64 + str r1, [sp, #0x84] + bl G3_LoadMtx43 + ldr r1, _020B98AC ; =0x04000440 + mov r2, #0x1 + add r0, sp, #0x34 + str r2, [r1, #0x0] + bl G3_LoadMtx43 + ldr r3, _020B98AC ; =0x04000440 + mov r0, #0x0 + str r0, [r3, #0x0] + ldr r1, _020B98BC ; =0x04000450 + mov r2, #0x1 + mov r0, #0x2 + str r2, [r1, #0x0] + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020B98B0 ; =0x0400044C + ldrb r2, [r1, #0x1] + mov r1, #0x3 + str r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x2] + add r0, r0, #0x1 + mla r1, r0, r1, r2 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x8c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B98AC: .word 0x04000440 +_020B98B0: .word 0x0400044C +_020B98B4: .word 0x04000454 +_020B98B8: .word UNK_021D0380 +_020B98BC: .word 0x04000450 +_020B98C0: .word UNK_021D03C0 + + arm_func_start FUN_020B98C4 +FUN_020B98C4: ; 0x020B98C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xcc + mov r10, r0 + ldr r2, [r10, #0x8] + mov r9, r1 + ands r0, r2, #0x200 + mov r7, #0x2 + ldr r6, _020B9C28 ; =UNK_02106718 + ldr fp, _020B9C2C ; =UNK_02106724 + ldr r5, _020B9C30 ; =UNK_021066F4 + beq _020B992C + cmp r9, #0x40 + beq _020B9900 + cmp r9, #0x60 + bne _020B9904 +_020B9900: + add r7, r7, #0x1 +_020B9904: + cmp r9, #0x20 + beq _020B9914 + cmp r9, #0x60 + bne _020B9918 +_020B9914: + add r7, r7, #0x1 +_020B9918: + ldr r0, [r10, #0x0] + add sp, sp, #0xcc + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020B992C: + cmp r9, #0x40 + beq _020B993C + cmp r9, #0x60 + bne _020B9974 +_020B993C: + add r7, r7, #0x1 + ands r0, r2, #0x100 + bne _020B9974 + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9974: + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020B99C0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r1, r0, #0x40 + b _020B99C4 +_020B99C0: + mov r1, #0x0 +_020B99C4: + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9BA4 + cmp r1, #0x0 + bne _020B9BA4 + bl FUN_020BB394 + ldr r2, _020B9C34 ; =0x00151110 + ldr r1, _020B9C38 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r4, sp, #0x8 +_020B99F8: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B99F8 + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9A38 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9A5C +_020B9A38: + ands r0, r1, #0x2 + beq _020B9A5C + ldr r0, _020B9C40 ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9A5C: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r6, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r6, #0x4] + ldr r1, [sp, #0x40] + str r1, [r6, #0x8] + bl VEC_Mag + str r0, [r11, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r11, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + str r0, [r11, #0x8] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _020B9AB0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _020B9AD4 +_020B9AB0: + add r0, sp, #0x18 + add r1, r5, #0xc + bl VEC_Normalize + ldr r0, [r5, #0x14] + rsb r0, r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x10] + str r0, [r5, #0x20] + b _020B9AF4 +_020B9AD4: + add r0, sp, #0x28 + add r1, r5, #0x18 + bl VEC_Normalize + ldr r0, [r5, #0x1c] + rsb r0, r0, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x20] + str r0, [r5, #0x10] +_020B9AF4: + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9B48 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B48: + ands r0, r1, #0x2 + beq _020B9B94 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B94: + ldr r0, _020B9C50 ; =UNK_021066E8 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9BA4: + cmp r8, #0x3 + movne r0, #0x0 + bne _020B9BD0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020B9BD0: + cmp r9, #0x20 + beq _020B9BE0 + cmp r9, #0x60 + bne _020B9C14 +_020B9BE0: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020B9C14 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9C14 + ldr r0, [r10, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9C14: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0xcc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B9C28: .word UNK_02106718 +_020B9C2C: .word UNK_02106724 +_020B9C30: .word UNK_021066F4 +_020B9C34: .word 0x00151110 +_020B9C38: .word 0x04000400 +_020B9C3C: .word UNK_021CED18 +_020B9C40: .word UNK_021CED64 +_020B9C44: .word 0x00171012 +_020B9C48: .word UNK_021066EC +_020B9C4C: .word 0x00001B19 +_020B9C50: .word UNK_021066E8 + + arm_func_start FUN_020B9C54 +FUN_020B9C54: ; 0x020B9C54 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0xc8 + mov r9, r0 + ldr r2, [r9, #0x8] + mov r8, r1 + ands r0, r2, #0x200 + mov r6, #0x2 + ldr r5, _020B9F58 ; =UNK_021066D0 + ldr r4, _020B9F5C ; =UNK_021066DC + beq _020B9CB8 + cmp r8, #0x40 + beq _020B9C8C + cmp r8, #0x60 + bne _020B9C90 +_020B9C8C: + add r6, r6, #0x1 +_020B9C90: + cmp r8, #0x20 + beq _020B9CA0 + cmp r8, #0x60 + bne _020B9CA4 +_020B9CA0: + add r6, r6, #0x1 +_020B9CA4: + ldr r0, [r9, #0x0] + add sp, sp, #0xc8 + add r0, r0, r6 + str r0, [r9, #0x0] + ldmia sp!, {r4-r10,pc} +_020B9CB8: + cmp r8, #0x40 + beq _020B9CC8 + cmp r8, #0x60 + bne _020B9D00 +_020B9CC8: + add r6, r6, #0x1 + ands r0, r2, #0x100 + bne _020B9D00 + cmp r8, #0x40 + ldreq r0, [r9, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r9, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9D00: + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + moveq r7, #0x0 + cmp r7, #0x1 + bne _020B9D4C + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + ldr r0, [r9, #0x8] + moveq r7, #0x0 + and r1, r0, #0x40 + b _020B9D50 +_020B9D4C: + mov r1, #0x0 +_020B9D50: + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9ED4 + cmp r1, #0x0 + bne _020B9ED4 + bl FUN_020BB394 + ldr r2, _020B9F60 ; =0x00151110 + ldr r1, _020B9F64 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r10, sp, #0x8 +_020B9D84: + mov r0, r10 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9D84 + ldr r0, _020B9F68 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9DC4 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9DE8 +_020B9DC4: + ands r0, r1, #0x2 + beq _020B9DE8 + ldr r0, _020B9F6C ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9DE8: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r5, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r5, #0x4] + ldr r1, [sp, #0x40] + str r1, [r5, #0x8] + bl VEC_Mag + str r0, [r4, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r4, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + ldr r1, _020B9F68 ; =UNK_021CED18 + str r0, [r4, #0x8] + ldr r1, [r1, #0xfc] + ands r0, r1, #0x1 + beq _020B9E78 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9E78: + ands r0, r1, #0x2 + beq _020B9EC4 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9EC4: + ldr r0, _020B9F80 ; =UNK_021066A0 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9ED4: + cmp r7, #0x3 + movne r0, #0x0 + bne _020B9F00 + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x8] + and r0, r0, #0x40 +_020B9F00: + cmp r8, #0x20 + beq _020B9F10 + cmp r8, #0x60 + bne _020B9F44 +_020B9F10: + cmp r0, #0x0 + add r6, r6, #0x1 + bne _020B9F44 + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9F44 + ldr r0, [r9, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9F44: + ldr r0, [r9, #0x0] + add r0, r0, r6 + str r0, [r9, #0x0] + add sp, sp, #0xc8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B9F58: .word UNK_021066D0 +_020B9F5C: .word UNK_021066DC +_020B9F60: .word 0x00151110 +_020B9F64: .word 0x04000400 +_020B9F68: .word UNK_021CED18 +_020B9F6C: .word UNK_021CED64 +_020B9F70: .word 0x00171012 +_020B9F74: .word UNK_021066A4 +_020B9F78: .word 0x00001B19 +_020B9F7C: .word UNK_021066AC +_020B9F80: .word UNK_021066A0 + + arm_func_start FUN_020B9F84 +FUN_020B9F84: ; 0x020B9F84 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + ldrb r4, [r0, #0x1] + mov r7, #0x4 + strb r4, [r10, #0xae] + ldr r0, [r10, #0x8] + orr r0, r0, #0x10 + str r0, [r10, #0x8] + ldr r1, [r10, #0x8] + ands r0, r1, #0x400 + beq _020BA01C + cmp r9, #0x40 + beq _020B9FCC + cmp r9, #0x60 + bne _020B9FD0 +_020B9FCC: + add r7, r7, #0x1 +_020B9FD0: + cmp r9, #0x20 + beq _020B9FE0 + cmp r9, #0x60 + bne _020BA008 +_020B9FE0: + add r7, r7, #0x1 + ands r0, r1, #0x100 + bne _020BA008 + ldr r0, [r10, #0x0] + add r1, sp, #0x8 + ldrb r3, [r0, #0x4] + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 +_020BA008: + ldr r0, [r10, #0x0] + add sp, sp, #0x14 + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020BA01C: + cmp r9, #0x40 + beq _020BA02C + cmp r9, #0x60 + bne _020BA068 +_020BA02C: + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r7, r7, #0x1 + ldreqb r0, [r0, #0x4] + streq r0, [sp, #0xc] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x5] + strne r0, [sp, #0xc] + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA068 + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BA068: + add r0, r10, #0x12c + str r0, [r10, #0xb4] + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020BA0BC + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA0C0 +_020BA0BC: + mov r0, #0x0 +_020BA0C0: + cmp r0, #0x0 + bne _020BA2CC + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x34] + cmp r1, #0x0 + beq _020BA0F4 + mov r0, #0x58 + mla r6, r4, r0, r1 + ldr r0, [r10, #0x8] + ands r0, r0, #0x80 + moveq r0, #0x1 + movne r0, #0x0 + b _020BA0FC +_020BA0F4: + add r6, r10, #0x12c + mov r0, #0x0 +_020BA0FC: + cmp r0, #0x0 + bne _020BA2C8 + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020BA134 + ldr r3, [r0, #0x14] + mov r0, r6 + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BA2C8 +_020BA134: + ldr r2, [r10, #0xd4] + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r1, [r0, #0x4] + ldrh r0, [r2, r1] + add r4, r2, r1 + add r5, r4, #0x4 + ands r0, r0, #0x1 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x4 + strne r0, [r6, #0x0] + bne _020BA188 + ldr r0, [r5, #0x0] + str r0, [r6, #0x4c] + ldr r0, [r5, #0x4] + str r0, [r6, #0x50] + ldr r0, [r5, #0x8] + add r5, r5, #0xc + str r0, [r6, #0x54] +_020BA188: + ldrh r1, [r4, #0x0] + ands r0, r1, #0x2 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x2 + strne r0, [r6, #0x0] + bne _020BA2B0 + ands r0, r1, #0x8 + beq _020BA264 + and r1, r1, #0xf0 + mov r11, r1, asr #0x4 + ldrsh r1, [r5, #0x0] + add r0, r6, #0x28 + str r1, [sp, #0x0] + ldrsh r1, [r5, #0x2] + str r1, [sp, #0x4] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r6, r11, lsl #0x2 + add r5, r5, #0x4 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + str r2, [r1, #0x28] + ldr r0, _020BA3B4 ; =UNK_020FF9F0 + ldr r1, _020BA3B8 ; =UNK_020FF9F1 + ldrb r0, [r0, r11, lsl #0x2] + add r2, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r2, #0x28] + ldrb r0, [r1, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldrne r0, [sp, #0x4] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x4] + ldr r0, _020BA3BC ; =UNK_020FF9F2 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldrne r0, [sp, #0x0] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x0] + ldr r0, _020BA3C0 ; =UNK_020FF9F3 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r1, #0x28] + b _020BA2B0 +_020BA264: + ldrsh r0, [r4, #0x2] + str r0, [r6, #0x28] + ldrsh r0, [r5, #0x0] + str r0, [r6, #0x2c] + ldrsh r0, [r5, #0x2] + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x4] + str r0, [r6, #0x34] + ldrsh r0, [r5, #0x6] + str r0, [r6, #0x38] + ldrsh r0, [r5, #0x8] + str r0, [r6, #0x3c] + ldrsh r0, [r5, #0xa] + str r0, [r6, #0x40] + ldrsh r0, [r5, #0xc] + str r0, [r6, #0x44] + ldrsh r0, [r5, #0xe] + add r5, r5, #0x10 + str r0, [r6, #0x48] +_020BA2B0: + ldrh r3, [r4, #0x0] + ldr r2, [r10, #0x0] + ldr r4, [r10, #0xe8] + mov r0, r6 + mov r1, r5 + blx r4 +_020BA2C8: + str r6, [r10, #0xb4] +_020BA2CC: + cmp r8, #0x2 + bne _020BA308 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA30C +_020BA308: + mov r0, #0x0 +_020BA30C: + cmp r0, #0x0 + bne _020BA32C + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA32C + ldr r0, [r10, #0xb4] + ldr r1, [r10, #0xec] + blx r1 +_020BA32C: + mov r0, #0x0 + str r0, [r10, #0xb4] + cmp r8, #0x3 + bne _020BA35C + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020BA35C: + cmp r9, #0x20 + beq _020BA36C + cmp r9, #0x60 + bne _020BA3A0 +_020BA36C: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020BA3A0 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA3A0 + ldr r0, [r10, #0x0] + add r1, sp, #0x10 + ldrb r3, [r0, #0x4] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020BA3A0: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BA3B4: .word UNK_020FF9F0 +_020BA3B8: .word UNK_020FF9F1 +_020BA3BC: .word UNK_020FF9F2 +_020BA3C0: .word UNK_020FF9F3 + + arm_func_start FUN_020BA3C4 +FUN_020BA3C4: ; 0x020BA3C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r3, [r4, #0x8] + ands r2, r3, #0x200 + bne _020BA420 + ands r2, r3, #0x1 + beq _020BA420 + ands r2, r3, #0x2 + bne _020BA420 + ldr r5, [r4, #0xdc] + ldr r3, [r4, #0x0] + ldrh r2, [r5, #0x6] + ldrb r3, [r3, #0x1] + ldr ip, _020BA434 ; =UNK_02106650 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r5, r2] + add r2, r5, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA420: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BA434: .word UNK_02106650 + + arm_func_start FUN_020BA438 +FUN_020BA438: ; 0x020BA438 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x20] + mov r5, r2 + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BA490 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + ldr r0, [r6, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BA494 +_020BA490: + mov r0, #0x0 +_020BA494: + cmp r0, #0x0 + bne _020BA4B8 + ldr r0, [r6, #0x8] + ands r0, r0, #0x100 + bne _020BA4B8 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + add r0, r5, r0 + bl FUN_020BB2B0 +_020BA4B8: + cmp r4, #0x2 + bne _020BA4E8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 +_020BA4E8: + cmp r4, #0x3 + ldmneia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BA50C +FUN_020BA50C: ; 0x020BA50C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r5, [r4, #0x8] + ands r0, r5, #0x200 + bne _020BA578 + ldr r2, [r4, #0x0] + ands r0, r5, #0x1 + ldrb r3, [r2, #0x1] + bne _020BA544 + ands r0, r5, #0x8 + beq _020BA544 + ldrb r0, [r4, #0xad] + cmp r3, r0 + beq _020BA578 +_020BA544: + ldr r6, [r4, #0xd8] + ldr ip, _020BA588 ; =UNK_02106640 + ldrh r2, [r6, #0xa] + add r5, r6, #0x4 + mov r0, r4 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r6, r2] + add r2, r6, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA578: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BA588: .word UNK_02106640 + + arm_func_start FUN_020BA58C +FUN_020BA58C: ; 0x020BA58C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x20 + mov r8, r0 + mov r6, r3 + strb r6, [r8, #0xad] + ldr r3, [r8, #0x8] + add r0, r8, #0xf4 + orr r3, r3, #0x8 + str r3, [r8, #0x8] + str r0, [r8, #0xb0] + ldr r0, [r8, #0x1c] + mov r4, r1 + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + mov r7, r2 + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BA608 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA60C +_020BA608: + mov r0, #0x0 +_020BA60C: + cmp r0, #0x0 + bne _020BA8C0 + ldr r0, [r8, #0x4] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _020BA638 + ldr r1, [r8, #0x8] + ands r1, r1, #0x80 + moveq r1, #0x38 + mlaeq r4, r6, r1, r0 + beq _020BA8BC +_020BA638: + cmp r4, #0x20 + beq _020BA648 + cmp r4, #0x40 + bne _020BA684 +_020BA648: + mov r1, r6, lsr #0x5 + add r1, r8, r1, lsl #0x2 + and r2, r6, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xbc] + ands r1, r2, r1 + beq _020BA684 + cmp r0, #0x0 + movne r1, #0x38 + mlane r4, r6, r1, r0 + ldreq r1, _020BA9D8 ; =UNK_021CEF80 + moveq r0, #0x38 + mlaeq r4, r6, r0, r1 + b _020BA8BC +_020BA684: + cmp r0, #0x0 + beq _020BA6BC + add r4, r8, #0xbc + mov r3, r6, lsr #0x5 + ldr r2, [r4, r3, lsl #0x2] + and r0, r6, #0x1f + mov r1, #0x1 + orr r0, r2, r1, lsl r0 + str r0, [r4, r3, lsl #0x2] + ldr r1, [r8, #0x4] + mov r0, #0x38 + ldr r1, [r1, #0x38] + mla r4, r6, r0, r1 + b _020BA6F0 +_020BA6BC: + cmp r4, #0x40 + addne r4, r8, #0xf4 + bne _020BA6F0 + add lr, r8, #0xbc + mov r12, r6, lsr #0x5 + ldr r1, _020BA9D8 ; =UNK_021CEF80 + ldr r4, [lr, r12, lsl #0x2] + mov r0, #0x38 + and r2, r6, #0x1f + mov r3, #0x1 + orr r2, r4, r3, lsl r2 + mla r4, r6, r0, r1 + str r2, [lr, r12, lsl #0x2] +_020BA6F0: + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r3, [r8, #0xd8] + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r6, r0 + ldr r0, [r0, #0x4] + ldr r1, _020BA9DC ; =UNK_021CED18 + add r0, r3, r0 + ldrh r0, [r0, #0x1e] + ands r0, r0, #0x20 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x20 + strne r0, [r4, #0x0] + ldrh r2, [r7, #0x1e] + ldr r0, _020BA9E0 ; =UNK_020FF9D0 + ldr r12, [r1, #0x94] + mov r2, r2, asr #0x6 + and r2, r2, #0x7 + ldr lr, [r0, r2, lsl #0x2] + ldr r2, [r7, #0x4] + mvn r3, lr + and r3, r12, r3 + and r2, r2, lr + orr r2, r3, r2 + str r2, [r4, #0x4] + ldrh r12, [r7, #0x1e] + ldr r3, [r1, #0x98] + ldr r2, [r7, #0x8] + mov r12, r12, asr #0x9 + and r12, r12, #0x7 + ldr r12, [r0, r12, lsl #0x2] + mvn r0, r12 + and r3, r3, r0 + and r0, r2, r12 + orr r0, r3, r0 + str r0, [r4, #0x8] + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + ldr r2, [r1, #0x9c] + mvn r1, r3 + and r1, r2, r1 + and r0, r0, r3 + orr r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x14] + str r0, [r4, #0x10] + ldrh r0, [r7, #0x1c] + str r0, [r4, #0x14] + ldrh r1, [r7, #0x1e] + ands r0, r1, #0x1 + beq _020BA850 + ands r1, r1, #0x2 + ldrne r1, [r4, #0x0] + add r0, r7, #0x2c + orrne r1, r1, #0x1 + strne r1, [r4, #0x0] + bne _020BA7F4 + ldr r1, [r0, #0x0] + str r1, [r4, #0x18] + ldr r1, [r0, #0x4] + add r0, r0, #0x8 + str r1, [r4, #0x1c] +_020BA7F4: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x4 + ldrne r1, [r4, #0x0] + orrne r1, r1, #0x2 + strne r1, [r4, #0x0] + bne _020BA820 + ldrsh r1, [r0, #0x0] + strh r1, [r4, #0x20] + ldrsh r1, [r0, #0x2] + add r0, r0, #0x4 + strh r1, [r4, #0x22] +_020BA820: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x8 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x24] + ldreq r0, [r0, #0x4] + streq r0, [r4, #0x28] + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x4 + strne r0, [r4, #0x0] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] +_020BA850: + ldr r0, [r8, #0x4] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _020BA890 + mov r2, r6, lsr #0x5 + add r2, r0, r2, lsl #0x2 + and r3, r6, #0x1f + mov r12, #0x1 + mov r3, r12, lsl r3 + ldr r2, [r2, #0x3c] + ands r2, r3, r2 + beq _020BA890 + ldr r3, [r0, #0xc] + mov r0, r4 + mov r2, r6 + blx r3 +_020BA890: + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA8BC + ldrh r0, [r7, #0x20] + strh r0, [r4, #0x2c] + ldrh r0, [r7, #0x22] + strh r0, [r4, #0x2e] + ldr r0, [r7, #0x24] + str r0, [r4, #0x30] + ldr r0, [r7, #0x28] + str r0, [r4, #0x34] +_020BA8BC: + str r4, [r8, #0xb0] +_020BA8C0: + cmp r5, #0x2 + bne _020BA8FC + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA900 +_020BA8FC: + mov r0, #0x0 +_020BA900: + cmp r0, #0x0 + bne _020BA9AC + ldr r4, [r8, #0xb0] + ldr r1, [r4, #0xc] + ands r0, r1, #0x1f0000 + beq _020BA9A0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + strne r0, [r4, #0xc] + ldr r0, [r8, #0x8] + bic r0, r0, #0x2 + str r0, [r8, #0x8] + ldr r0, [r8, #0x8] + ands r0, r0, #0x100 + bne _020BA9AC + ldr r0, _020BA9E4 ; =0x00293130 + ldr r3, _020BA9E8 ; =0x00002B2A + str r0, [sp, #0x0] + ldr r2, [r4, #0x4] + add r1, sp, #0x4 + str r2, [sp, #0x4] + ldr r6, [r4, #0x8] + mov r2, #0x6 + str r6, [sp, #0x8] + ldr r6, [r4, #0xc] + str r6, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r4, #0x10] + str r3, [sp, #0x14] + ldr r3, [r4, #0x14] + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA9AC + ldr r1, [r8, #0xf0] + mov r0, r4 + blx r1 + b _020BA9AC +_020BA9A0: + ldr r0, [r8, #0x8] + orr r0, r0, #0x2 + str r0, [r8, #0x8] +_020BA9AC: + cmp r5, #0x3 + addne sp, sp, #0x20 + ldmneia sp!, {r4-r8,pc} + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + add sp, sp, #0x20 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BA9D8: .word UNK_021CEF80 +_020BA9DC: .word UNK_021CED18 +_020BA9E0: .word UNK_020FF9D0 +_020BA9E4: .word 0x00293130 +_020BA9E8: .word 0x00002B2A + + arm_func_start FUN_020BA9EC +FUN_020BA9EC: ; 0x020BA9EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020BAAAC + ands r0, r1, #0x1 + beq _020BAAAC + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BAA58 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BAA5C +_020BAA58: + mov r0, #0x0 +_020BAA5C: + cmp r0, #0x0 + bne _020BAA8C + ldr r0, [r5, #0x0] + ldrb r0, [r0, #0x1] + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020BAA8C + add r1, sp, #0x0 + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BAA8C: + cmp r4, #0x3 + bne _020BAAAC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 +_020BAAAC: + ldr r0, [r5, #0x0] + add r0, r0, #0x2 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BAAC0 +FUN_020BAAC0: ; 0x020BAAC0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x8] + ands r0, r0, #0x200 + bne _020BAC38 + ldr r1, [r6, #0x0] + add r0, r6, #0x184 + ldrb r1, [r1, #0x1] + strb r1, [r6, #0xac] + ldr r1, [r6, #0x8] + ldrb r4, [r6, #0xac] + orr r1, r1, #0x4 + str r1, [r6, #0x8] + str r0, [r6, #0xb8] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BAB44 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BAB48 +_020BAB44: + mov r0, #0x0 +_020BAB48: + cmp r0, #0x0 + bne _020BABAC + ldr r12, [r6, #0x4] + ldr r1, [r12, #0x18] + cmp r1, #0x0 + beq _020BAB98 + mov r0, r4, lsr #0x5 + add r0, r12, r0, lsl #0x2 + and r2, r4, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x4c] + ands r0, r2, r0 + beq _020BAB98 + ldr r0, [r6, #0xb8] + ldr r3, [r12, #0x1c] + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BABAC +_020BAB98: + ldr r1, [r6, #0x0] + ldr r0, [r6, #0xb8] + ldrb r1, [r1, #0x2] + and r1, r1, #0x1 + str r1, [r0, #0x0] +_020BABAC: + cmp r5, #0x2 + bne _020BABE8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BABEC +_020BABE8: + mov r0, #0x0 +_020BABEC: + cmp r0, #0x0 + bne _020BAC18 + ldr r0, [r6, #0xb8] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, [r6, #0x8] + orrne r0, r0, #0x1 + strne r0, [r6, #0x8] + ldreq r0, [r6, #0x8] + biceq r0, r0, #0x1 + streq r0, [r6, #0x8] +_020BAC18: + cmp r5, #0x3 + bne _020BAC38 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 +_020BAC38: + ldr r0, [r6, #0x0] + add r0, r0, #0x3 + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BAC48 +FUN_020BAC48: ; 0x020BAC48 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAC60 + blx r1 +_020BAC60: + ldr r0, [r4, #0x8] + orr r0, r0, #0x20 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC70 +FUN_020BAC70: ; 0x020BAC70 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020BAC88 + blx r1 +_020BAC88: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC98 +FUN_020BAC98: ; 0x020BAC98 + stmdb sp!, {r4,lr} + sub sp, sp, #0x188 + mov r4, r0 + ldr r0, [r4, #0x0] + and r0, r0, #0x10 + cmp r0, #0x10 + bne _020BAD2C + add r1, r4, #0x3c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x44 + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x4c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020BACF8 + add r0, r4, #0x3c + bl FUN_020BAD74 +_020BACF8: + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAD0C + add r0, r4, #0x44 + bl FUN_020BAD74 +_020BAD0C: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _020BAD20 + add r0, r4, #0x4c + bl FUN_020BAD74 +_020BAD20: + ldr r0, [r4, #0x0] + bic r0, r0, #0x10 + str r0, [r4, #0x0] +_020BAD2C: + ldr r2, _020BAD70 ; =UNK_021CEF7C + ldr r0, [r2, #0x0] + cmp r0, #0x0 + beq _020BAD4C + mov r1, r4 + bl FUN_020BADE4 + add sp, sp, #0x188 + ldmia sp!, {r4,pc} +_020BAD4C: + add r0, sp, #0x0 + mov r1, r4 + str r0, [r2, #0x0] + bl FUN_020BADE4 + ldr r0, _020BAD70 ; =UNK_021CEF7C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x188 + ldmia sp!, {r4,pc} + .balign 4 +_020BAD70: .word UNK_021CEF7C + + arm_func_start FUN_020BAD74 +FUN_020BAD74: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020BAD90: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020BADD0 +_020BADA0: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020BADA0 +_020BADD0: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020BAD90 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BADE4 +FUN_020BADE4: ; 0x020BADE4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x188 + bl MIi_CpuClearFast + mov r0, #0x1 + str r0, [r5, #0xc4] + str r0, [r5, #0x8] + ldr r0, [r4, #0x30] + ldr r2, _020BAF60 ; =UNK_02106614 + cmp r0, #0x0 + strne r0, [r5, #0x0] + ldreq r1, [r4, #0x4] + ldreq r0, [r1, #0x4] + addeq r0, r1, r0 + streq r0, [r5, #0x0] + str r4, [r5, #0x4] + ldr r0, [r4, #0x4] + ldr r1, _020BAF64 ; =UNK_02106608 + add r0, r0, #0x40 + str r0, [r5, #0xd4] + ldr r12, [r4, #0x4] + ldr r0, _020BAF68 ; =UNK_02106620 + ldr r3, [r12, #0x8] + add r3, r12, r3 + str r3, [r5, #0xd8] + ldr r12, [r4, #0x4] + ldr r3, [r12, #0xc] + add r3, r12, r3 + str r3, [r5, #0xdc] + ldr r3, [r4, #0x4] + ldrb r3, [r3, #0x15] + ldr r2, [r2, r3, lsl #0x2] + str r2, [r5, #0xe8] + ldr r2, [r4, #0x4] + ldrb r2, [r2, #0x15] + ldr r1, [r1, r2, lsl #0x2] + str r1, [r5, #0xec] + ldr r1, [r4, #0x4] + ldrb r1, [r1, #0x16] + ldr r0, [r0, r1, lsl #0x2] + str r0, [r5, #0xf0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x1c] + str r0, [r5, #0xe0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x20] + str r0, [r5, #0xe4] + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _020BAEE0 + ldrb r0, [r4, #0x24] + cmp r0, #0x20 + bhs _020BAEE0 + add r0, r5, r0, lsl #0x2 + str r1, [r0, #0xc] + ldrb r0, [r4, #0x24] + ldrb r1, [r4, #0x25] + add r0, r5, r0 + strb r1, [r0, #0x8c] +_020BAEE0: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x80 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x100 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x200 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x8 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x400 + strne r0, [r5, #0x8] + ldr r1, [r4, #0x28] + cmp r1, #0x0 + beq _020BAF44 + mov r0, r5 + blx r1 +_020BAF44: + mov r0, r5 + bl FUN_020BAF6C + ldr r0, [r4, #0x0] + bic r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BAF60: .word UNK_02106614 +_020BAF64: .word UNK_02106608 +_020BAF68: .word UNK_02106620 + + arm_func_start FUN_020BAF6C +FUN_020BAF6C: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r6, _020BAFB4 ; =UNK_02106730 + add r4, r5, #0x8 +_020BAF7C: + ldr r1, [r4, #0x0] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r4, #0x0] + ldr r1, [r5, #0x0] + ldrb r3, [r1, #0x0] + and r1, r3, #0x1f + ldr r2, [r6, r1, lsl #0x2] + and r1, r3, #0xe0 + blx r2 + ldr r0, [r5, #0x8] + ands r0, r0, #0x20 + beq _020BAF7C + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BAFB4: .word UNK_02106730 + + arm_func_start FUN_020BAFB8 +FUN_020BAFB8: ; 0x020BAFB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x6c + mov r6, r0 + ldr r12, [r6, #0x1c] + mov r4, r1 + mov r5, r2 + mov r7, r3 + cmp r12, #0x1000 + beq _020BAFF8 + add r1, sp, #0x54 + mov r0, #0x1b + mov r2, #0x3 + str r12, [sp, #0x54] + str r12, [sp, #0x58] + str r12, [sp, #0x5c] + bl FUN_020BB1C0 +_020BAFF8: + cmp r7, #0x0 + beq _020BB150 + ldr r0, [r6, #0x8] + add r3, r6, r0 + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r0, [r0, #0x4] + add r4, r3, r0 + ldr r0, [r4, #0xc] + ands r0, r0, #0x1f0000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + ldr r0, _020BB1B4 ; =0x00293130 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + ldr r1, [r4, #0xc] + str r1, [sp, #0xc] + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + ldr r1, _020BB1B8 ; =0x00002B2A + strne r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [r4, #0x14] + ldr r0, [sp, #0x0] + str r2, [sp, #0x14] + ldrh r3, [r4, #0x1c] + add r1, sp, #0x4 + mov r2, #0x6 + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x1 + beq _020BB150 + ldrb r12, [r6, #0x16] + mov r3, #0x8 + ldr r1, _020BB1BC ; =UNK_02106620 + str r3, [sp, #0x1c] + ldrh r2, [r4, #0x20] + add r0, r4, #0x2c + ldr r1, [r1, r12, lsl #0x2] + strh r2, [sp, #0x48] + ldrh r2, [r4, #0x22] + strh r2, [sp, #0x4a] + ldr r2, [r4, #0x24] + str r2, [sp, #0x4c] + ldr r2, [r4, #0x28] + str r2, [sp, #0x50] + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x2 + orrne r2, r3, #0x1 + strne r2, [sp, #0x1c] + bne _020BB0F8 + ldr r2, [r0, #0x0] + str r2, [sp, #0x34] + ldr r2, [r0, #0x4] + add r0, r0, #0x8 + str r2, [sp, #0x38] +_020BB0F8: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x4 + ldrne r2, [sp, #0x1c] + orrne r2, r2, #0x2 + strne r2, [sp, #0x1c] + bne _020BB124 + ldrsh r2, [r0, #0x0] + strh r2, [sp, #0x3c] + ldrsh r2, [r0, #0x2] + add r0, r0, #0x4 + strh r2, [sp, #0x3e] +_020BB124: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x8 + ldreq r2, [r0, #0x0] + streq r2, [sp, #0x40] + ldreq r0, [r0, #0x4] + streq r0, [sp, #0x44] + ldrne r0, [sp, #0x1c] + orrne r0, r0, #0x4 + strne r0, [sp, #0x1c] + add r0, sp, #0x1c + blx r1 +_020BB150: + ldr r0, [r6, #0xc] + add r2, r6, r0 + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r2, r2, r0 + ldr r0, [r2, #0x8] + ldr r1, [r2, #0xc] + add r0, r2, r0 + bl FUN_020BB2B0 + ldr r3, [r6, #0x20] + cmp r3, #0x1000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + add r1, sp, #0x60 + mov r0, #0x1b + mov r2, #0x3 + str r3, [sp, #0x60] + str r3, [sp, #0x64] + str r3, [sp, #0x68] + bl FUN_020BB1C0 + add sp, sp, #0x6c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BB1B4: .word 0x00293130 +_020BB1B8: .word 0x00002B2A +_020BB1BC: .word UNK_02106620 + + arm_func_start FUN_020BB1C0 +FUN_020BB1C0: + stmdb sp!, {r4-r6,lr} + ldr r3, _020BB2A4 ; =UNK_021D1C80 + mov r6, r0 + ldr r12, [r3, #0x0] + mov r5, r1 + mov r4, r2 + cmp r12, #0x0 + beq _020BB278 + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB24C + ldr r2, [r12, #0x0] + add r0, r2, #0x1 + add r1, r0, r4 + cmp r1, #0xc0 + bhi _020BB24C + str r0, [r12, #0x0] + ldr r0, [r3, #0x0] + cmp r4, #0x0 + add r0, r0, r2, lsl #0x2 + str r6, [r0, #0x4] + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r3, #0x0] + mov r0, r5 + ldr r1, [r2], #0x4 + add r1, r2, r1, lsl #0x2 + mov r2, r4, lsl #0x2 + bl MIi_CpuCopyFast + ldr r0, _020BB2A4 ; =UNK_021D1C80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, r0, r4 + str r0, [r1, #0x0] + ldmia sp!, {r4-r6,pc} +_020BB24C: + ldr r0, [r12, #0x0] + cmp r0, #0x0 + beq _020BB260 + bl FUN_020BB394 + b _020BB28C +_020BB260: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C + b _020BB28C +_020BB278: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C +_020BB28C: + ldr r1, _020BB2AC ; =0x04000400 + mov r0, r5 + mov r2, r4, lsl #0x2 + str r6, [r1, #0x0] + bl MIi_CpuSend32 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB2A4: .word UNK_021D1C80 +_020BB2A8: .word UNK_021D1C84 +_020BB2AC: .word 0x04000400 + + arm_func_start FUN_020BB2B0 +FUN_020BB2B0: ; 0x020BB2B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + cmp r4, #0x100 + blo _020BB2DC + ldr r1, _020BB360 ; =GXi_DmaId + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020BB2F8 +_020BB2DC: + mov r2, r4, lsr #0x2 + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + sub r2, r2, #0x1 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB2F8: + bl FUN_020BB394 + ldr r0, _020BB364 ; =UNK_021D1C88 + ldr r1, _020BB368 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + cmp r0, #0x0 + beq _020BB33C + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsyncFast + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB33C: + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsync + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BB360: .word GXi_DmaId +_020BB364: .word UNK_021D1C88 +_020BB368: .word UNK_021D1C84 +_020BB36C: .word FUN_020BB370 + + arm_func_start FUN_020BB370 +FUN_020BB370: ; 0x020BB370 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BB37C +FUN_020BB37C: ; 0x020BB37C + ldr r0, _020BB390 ; =UNK_021D1C84 +_020BB380: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _020BB380 + bx lr + .balign 4 +_020BB390: .word UNK_021D1C84 + + arm_func_start FUN_020BB394 +FUN_020BB394: ; 0x020BB394 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020BB3FC ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB3B0 + bl FUN_020BB37C +_020BB3B0: + ldr r0, _020BB400 ; =UNK_021D1C80 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x0] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r1, _020BB404 ; =0x04000400 + add r0, r0, #0x4 + mov r2, r2, lsl #0x2 + bl MIi_CpuSend32 + ldr r0, _020BB400 ; =UNK_021D1C80 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB3FC: .word UNK_021D1C84 +_020BB400: .word UNK_021D1C80 +_020BB404: .word 0x04000400 + + arm_func_start FUN_020BB408 +FUN_020BB408: ; 0x020BB408 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + mov r5, r1 + mov r4, r2 + ldr r6, _020BB594 ; =UNK_021CED20 + ldr r1, _020BB598 ; =UNK_021CED64 + add r2, sp, #0x10 + bl MTX_MultVec43 + ldr r1, [sp, #0x14] + ldr r0, [r6, #0x1c] + ldr r2, [sp, #0x10] + smull r8, r7, r1, r0 + ldr r0, [r6, #0xc] + ldr r3, [sp, #0x18] + smlal r8, r7, r2, r0 + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + smlal r8, r7, r3, r1 + mov r1, r8, lsr #0xc + orr r1, r1, r7, lsl #0x14 + add r0, r1, r0 + bl FX_InvAsync + ldr r2, [sp, #0x14] + ldr r1, [r6, #0x10] + ldr r0, [r6, #0x14] + smull lr, r8, r2, r1 + smull r12, r9, r2, r0 + ldr r1, [sp, #0x10] + ldr r3, [r6, #0x0] + ldr r0, [sp, #0x18] + smlal lr, r8, r1, r3 + ldr r7, [r6, #0x20] + ldr r2, [r6, #0x30] + smlal lr, r8, r0, r7 + mov r3, lr, lsr #0xc + orr r3, r3, r8, lsl #0x14 + add r7, r3, r2 + ldr r3, [r6, #0x4] + ldr r8, [r6, #0x24] + smlal r12, r9, r1, r3 + smlal r12, r9, r0, r8 + mov r0, r12, lsr #0xc + ldr r2, [r6, #0x34] + orr r0, r0, r9, lsl #0x14 + add r6, r0, r2 + bl FX_GetDivResultFx64c + mov r2, r7, asr #0x1f + umull r9, lr, r0, r7 + mla lr, r0, r2, lr + mov r3, #0x80000000 + mla lr, r1, r7, lr + adds r9, r9, r3 + adc r2, lr, #0x0 + add r2, r2, #0x1000 + add r2, r2, r2, lsr #0x1f + mov r7, r2, asr #0x1 + umull lr, r2, r0, r6 + mov r12, r6, asr #0x1f + mla r2, r0, r12, r2 + mla r2, r1, r6, r2 + adds r3, lr, r3 + adc r0, r2, #0x0 + add r0, r0, #0x1000 + add r0, r0, r0, lsr #0x1f + mov r8, #0x0 + mov r6, r0, asr #0x1 + cmp r7, #0x0 + blt _020BB530 + cmp r6, #0x0 + blt _020BB530 + cmp r7, #0x1000 + bgt _020BB530 + cmp r6, #0x1000 + ble _020BB534 +_020BB530: + mvn r8, #0x0 +_020BB534: + add r0, sp, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0xc + bl FUN_020B8200 + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r12, [sp, #0xc] + sub r0, r0, r2 + mul r0, r7, r0 + add r1, r0, #0x800 + ldr r3, [sp, #0x4] + add r1, r2, r1, asr #0xc + sub r0, r12, r3 + mul r0, r6, r0 + str r1, [r5, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x800 + rsb r1, r1, #0xbf + sub r1, r1, r0, asr #0xc + mov r0, r8 + str r1, [r4, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BB594: .word UNK_021CED20 +_020BB598: .word UNK_021CED64 + + arm_func_start FUN_020BB59C +FUN_020BB59C: ; 0x020BB59C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldr r0, _020BB7C8 ; =0x30415642 + cmp r1, r0 + bhi _020BB5F4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7CC ; =0x30414D42 + cmp r1, r0 + bhi _020BB5E4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7D0 ; =0x30414342 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5E4: + ldr r0, _020BB7D4 ; =0x30415442 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5F4: + ldr r0, _020BB7D8 ; =0x30505442 + cmp r1, r0 + bhi _020BB618 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + beq _020BB624 + b _020BB7BC +_020BB618: + ldr r0, _020BB7E0 ; =0x30585442 + cmp r1, r0 + bne _020BB7BC +_020BB624: + mov r11, #0x1 + mov r0, r5 + mov r9, r11 + mov r8, r11 + bl FUN_020BC0FC + movs r4, r0 + beq _020BB77C + bl FUN_020B7E1C + mov r7, r0 + mov r0, r4 + bl FUN_020B7E10 + mov r6, r0 + mov r0, r4 + bl FUN_020B7CE4 + mov r10, r0 + cmp r7, #0x0 + beq _020BB68C + ldr r0, _020BB7E4 ; =UNK_021064B8 + mov r1, #0x0 + ldr r3, [r0, #0x0] + mov r0, r7 + mov r2, r1 + blx r3 + movs r7, r0 + moveq r11, #0x0 + b _020BB690 +_020BB68C: + mov r7, #0x0 +_020BB690: + cmp r6, #0x0 + beq _020BB6BC + ldr r1, _020BB7E4 ; =UNK_021064B8 + mov r0, r6 + ldr r3, [r1, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + movs r6, r0 + moveq r9, #0x0 + b _020BB6C0 +_020BB6BC: + mov r6, #0x0 +_020BB6C0: + cmp r10, #0x0 + beq _020BB6F0 + ldr r1, _020BB7E8 ; =UNK_021064C0 + ldrh r2, [r4, #0x20] + ldr r3, [r1, #0x0] + mov r0, r10 + and r1, r2, #0x8000 + mov r2, #0x0 + blx r3 + movs r10, r0 + moveq r8, #0x0 + b _020BB6F4 +_020BB6F0: + mov r10, #0x0 +_020BB6F4: + cmp r11, #0x0 + beq _020BB70C + cmp r9, #0x0 + beq _020BB70C + cmp r8, #0x0 + bne _020BB748 +_020BB70C: + ldr r1, _020BB7EC ; =UNK_021064C4 + mov r0, r10 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020BB748: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl FUN_020B7DFC + mov r0, r4 + mov r1, r10 + bl FUN_020B7CDC + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7D28 + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7C78 +_020BB77C: + ldr r1, [r5, #0x0] + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + bne _020BB7A4 + mov r0, r5 + bl FUN_020BC13C + cmp r4, #0x0 + beq _020BB7A4 + mov r1, r4 + bl FUN_020B7790 +_020BB7A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7B0: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BB7C8: .word 0x30415642 +_020BB7CC: .word 0x30414D42 +_020BB7D0: .word 0x30414342 +_020BB7D4: .word 0x30415442 +_020BB7D8: .word 0x30505442 +_020BB7DC: .word 0x30444D42 +_020BB7E0: .word 0x30585442 +_020BB7E4: .word UNK_021064B8 +_020BB7E8: .word UNK_021064C0 +_020BB7EC: .word UNK_021064C4 +_020BB7F0: .word UNK_021064BC + + arm_func_start FUN_020BB7F4 +FUN_020BB7F4: ; 0x020BB7F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_Init + bl FUN_020B84D8 + ldr r1, _020BB820 ; =0x04000600 + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB820: .word 0x04000600 + + arm_func_start FUN_020BB824 +FUN_020BB824: ; 0x020BB824 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r5, r1 + bl FUN_020BB394 + ldr r0, _020BB8B4 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020BB8B8 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020BB8BC ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + cmp r6, #0x0 + beq _020BB87C + add r4, sp, #0x0 +_020BB860: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020BB860 + add r0, sp, #0x0 + mov r1, r6 + bl MTX_Copy44To43_ +_020BB87C: + cmp r5, #0x0 + beq _020BB894 +_020BB884: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020BB884 +_020BB894: + ldr r1, _020BB8C0 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020BB8B4 ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB8B4: .word 0x04000440 +_020BB8B8: .word 0x04000444 +_020BB8BC: .word 0x04000454 +_020BB8C0: .word 0x04000448 + + arm_func_start thunk_FUN_020ae84c +thunk_FUN_020ae84c: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =FUN_020AE84C + bx r12 + .balign 4 +_020BB8CC: .word FUN_020AE84C + + arm_func_start FUN_020BB8D0 +FUN_020BB8D0: ; 0x020BB8D0 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl FUN_020B81B0 + mov r1, r0 + mov r0, r4 + bl FUN_020AE868 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BB8F4 +FUN_020BB8F4: ; 0x020BB8F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB910: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBC74 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB910 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB934 +FUN_020BB934: ; 0x020BB934 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB950: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCB8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB950 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB974 +FUN_020BB974: ; 0x020BB974 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB990: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCFC + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB990 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9B4 +FUN_020BB9B4: ; 0x020BB9B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB9D0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD40 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB9D0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9F4 +FUN_020BB9F4: ; 0x020BB9F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD84 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA34 +FUN_020BBA34: ; 0x020BBA34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBDC8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA74 +FUN_020BBA74: ; 0x020BBA74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE0C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAB4 +FUN_020BBAB4: ; 0x020BBAB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBAD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE50 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBAD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAF4 +FUN_020BBAF4: ; 0x020BBAF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE94 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB34 +FUN_020BBB34: ; 0x020BBB34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBED8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB74 +FUN_020BBB74: ; 0x020BBB74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF1C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBB4 +FUN_020BBBB4: ; 0x020BBBB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBBD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF60 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBBD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBF4 +FUN_020BBBF4: ; 0x020BBBF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFA4 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC34 +FUN_020BBC34: ; 0x020BBC34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFE8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC74 +FUN_020BBC74: ; 0x020BBC74 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x800 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x800 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCB8 +FUN_020BBCB8: ; 0x020BBCB8 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x1000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x1000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCFC +FUN_020BBCFC: ; 0x020BBCFC + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x2000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x2000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD40 +FUN_020BBD40: ; 0x020BBD40 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x4000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x4000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD84 +FUN_020BBD84: ; 0x020BBD84 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x8000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x8000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBDC8 +FUN_020BBDC8: ; 0x020BBDC8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x1f0000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE0C +FUN_020BBE0C: ; 0x020BBE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x3f000000 + orr r0, r0, r2, lsl #0x18 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE50 +FUN_020BBE50: ; 0x020BBE50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xc0 + orr r0, r0, r2, lsl #0x6 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE94 +FUN_020BBE94: ; 0x020BBE94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x30 + orr r0, r0, r2, lsl #0x4 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBED8 +FUN_020BBED8: ; 0x020BBED8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xf + orr r0, r0, r2 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBF1C +FUN_020BBF1C: ; 0x020BBF1C + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBF5C ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x8] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020BBF5C: .word 0x8000FFFF + + arm_func_start FUN_020BBF60 +FUN_020BBF60: ; 0x020BBF60 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x8] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BBFA4 +FUN_020BBFA4: ; 0x020BBFA4 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBFE4 ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x4] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020BBFE4: .word 0x8000FFFF + + arm_func_start FUN_020BBFE8 +FUN_020BBFE8: ; 0x020BBFE8 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x4] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BC02C +FUN_020BC02C: ; 0x020BC02C + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC050: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrne r5, [r6, #0x10] + orrne r5, r5, r2 + strne r5, [r6, #0x10] + ldreq r5, [r6, #0x10] + andeq r5, r5, r3 + streq r5, [r6, #0x10] + cmp lr, r4 + blo _020BC050 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC094 +FUN_020BC094: ; 0x020BC094 + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC0B8: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrneh r5, [r6, #0x1e] + orrne r5, r5, r2 + strneh r5, [r6, #0x1e] + ldreqh r5, [r6, #0x1e] + andeq r5, r5, r3 + streqh r5, [r6, #0x1e] + cmp lr, r4 + blo _020BC0B8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC0FC +FUN_020BC0FC: ; 0x020BC0FC + ldrh r2, [r0, #0xc] + ldrh r1, [r0, #0xe] + add r3, r0, r2 + cmp r1, #0x1 + bne _020BC12C + ldr r2, [r0, #0x0] + ldr r1, _020BC138 ; =0x30585442 + cmp r2, r1 + ldreq r1, [r3, #0x0] + addeq r0, r0, r1 + movne r0, #0x0 + bx lr +_020BC12C: + ldr r1, [r3, #0x4] + add r0, r0, r1 + bx lr + .balign 4 +_020BC138: .word 0x30585442 + + arm_func_start FUN_020BC13C +FUN_020BC13C: + ldrh r1, [r0, #0xc] + ldr r1, [r0, r1] + add r0, r0, r1 + bx lr + + arm_func_start FUN_020BC14C +FUN_020BC14C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC1E4 + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC294 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC190: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC1CC + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC1CC + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC1CC + ldr r5, [r7, #0xc] + cmp r5, r2 + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r7,pc} +_020BC1CC: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC190 + b _020BC294 +_020BC1E4: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC294 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC238 +_020BC208: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC208 +_020BC238: + ldrh r4, [r0, #0x6] + ldr r3, [r1, #0x0] + add r12, r0, r4 + ldrh r4, [r12, #0x2] + ldrb r0, [r2, #0x3] + add r4, r12, r4 + ldr r2, [r4, r0, lsl #0x4] + add r4, r4, r0, lsl #0x4 + cmp r2, r3 + bne _020BC294 + ldr r3, [r4, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bne _020BC294 + ldr r3, [r4, #0x8] + ldr r2, [r1, #0x8] + cmp r3, r2 + bne _020BC294 + ldr r2, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BC294: + mvn r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC2A0 +FUN_020BC2A0: ; 0x020BC2A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC34C + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC404 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC2E4: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC334 + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC334 + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC334 + ldr r5, [r7, #0xc] + cmp r5, r2 + bne _020BC334 + ldrh r2, [r0, #0x6] + add sp, sp, #0x4 + ldrh r1, [r0, r2] + add r0, r0, r2 + add r0, r0, #0x4 + mla r0, r1, r4, r0 + ldmia sp!, {r4-r7,pc} +_020BC334: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC2E4 + b _020BC404 +_020BC34C: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC404 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC3A0 +_020BC370: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC370 +_020BC3A0: + ldrh r4, [r0, #0x6] + ldrb r2, [r2, #0x3] + ldr r3, [r1, #0x0] + add r0, r0, r4 + ldrh r4, [r0, #0x2] + add r12, r0, r4 + ldr r4, [r12, r2, lsl #0x4] + add r12, r12, r2, lsl #0x4 + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x4] + ldr r3, [r1, #0x4] + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x8] + ldr r3, [r1, #0x8] + cmp r4, r3 + bne _020BC404 + ldr r3, [r12, #0xc] + ldr r1, [r1, #0xc] + cmp r3, r1 + ldreqh r1, [r0], #0x4 + addeq sp, sp, #0x4 + mlaeq r0, r1, r2, r0 + ldmeqia sp!, {r4-r7,pc} +_020BC404: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC410 +FUN_020BC410: ; 0x020BC410 + ldrh r3, [r0, #0x12] + add r0, r0, #0xc + ldrh r2, [r0, r3] + add r0, r0, r3 + add r0, r0, #0x4 + mla r0, r2, r1, r0 + bx lr + + arm_func_start FUN_020BC42C +FUN_020BC42C: ; 0x020BC42C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl FUN_020BC410 + ldrsh r1, [r0, #0x4] + ldrh r3, [r0, #0x6] + mul r2, r1, r4 + add r3, r5, r3 + mov r2, r2, lsr #0xc + b _020BC45C +_020BC458: + sub r2, r2, #0x1 +_020BC45C: + cmp r2, #0x0 + beq _020BC474 + mov r1, r2, lsl #0x2 + ldrh r1, [r3, r1] + cmp r1, r4 + bhs _020BC458 +_020BC474: + ldrh r1, [r0, #0x0] + b _020BC480 +_020BC47C: + add r2, r2, #0x1 +_020BC480: + add r0, r2, #0x1 + cmp r0, r1 + bhs _020BC49C + add r0, r3, r2, lsl #0x2 + ldrh r0, [r0, #0x4] + cmp r0, r4 + bls _020BC47C +_020BC49C: + add r0, r3, r2, lsl #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BC4A8 +FUN_020BC4A8: ; 0x020BC4A8 + ldrh r2, [r0, #0xa] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4B8 +FUN_020BC4B8: ; 0x020BC4B8 + ldrh r2, [r0, #0x8] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4C8 +FUN_020BC4C8: ; 0x020BC4C8 + ldrh r2, [r0, #0xc] + ldr r2, [r0, r2] + add r12, r0, r2 + ldrh r2, [r12, #0xe] + add r3, r12, #0x8 + ldrh r0, [r3, r2] + add r2, r3, r2 + add r2, r2, #0x4 + mul r1, r0, r1 + adds r0, r2, r1 + ldrne r0, [r0, #0x0] + addne r0, r12, r0 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020BC500 +FUN_020BC500: + stmdb sp!, {r4,lr} + ands r4, r3, #0x8000 + beq _020BC5E0 + mov r2, #0x0 + str r2, [r0, #0x20] + ldr r4, [r0, #0x20] + ldr r2, _020BC684 ; =0x00007FFF + str r4, [r0, #0x1c] + ldr r4, [r0, #0x1c] + and r3, r3, r2 + str r4, [r0, #0x18] + ldr r4, [r0, #0x18] + mov r2, #0x3 + str r4, [r0, #0x14] + ldr r4, [r0, #0x14] + mul r2, r3, r2 + str r4, [r0, #0x10] + ldr r4, [r0, #0x10] + mov r3, r2, lsl #0x1 + str r4, [r0, #0xc] + ldr r4, [r0, #0xc] + add r2, r1, r2, lsl #0x1 + str r4, [r0, #0x8] + ldr r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r4, [r0, #0x4] + str r4, [r0, #0x0] + ldrsh r4, [r1, r3] + ldrsh r12, [r2, #0x2] + ldrsh r3, [r2, #0x4] + and r1, r4, #0xf + ands r4, r4, #0x10 + movne lr, #0x1000 + rsbne lr, lr, #0x0 + moveq lr, #0x1000 + str lr, [r0, r1, lsl #0x2] + ldr r4, _020BC688 ; =UNK_020FFA14 + ldr lr, _020BC68C ; =UNK_020FFA15 + ldrb r4, [r4, r1, lsl #0x2] + str r12, [r0, r4, lsl #0x2] + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh lr, [r2, #0x0] + ands lr, lr, #0x20 + ldr lr, _020BC690 ; =UNK_020FFA16 + rsbne r3, r3, #0x0 + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh r2, [r2, #0x0] + ands r2, r2, #0x40 + ldr r2, _020BC694 ; =UNK_020FFA17 + rsbne r12, r12, #0x0 + ldrb r1, [r2, r1, lsl #0x2] + str r12, [r0, r1, lsl #0x2] + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020BC5E0: + ldr r1, _020BC684 ; =0x00007FFF + mov r12, #0x5 + and r1, r3, r1 + mul r3, r1, r12 + add r1, r2, r3, lsl #0x1 + ldrsh lr, [r1, #0x8] + mov r12, r3, lsl #0x1 + mov r3, lr, asr #0x3 + str r3, [r0, #0x10] + ldrsh r12, [r2, r12] + and r2, lr, #0x7 + mov r2, r2, lsl #0x10 + mov r3, r12, asr #0x3 + str r3, [r0, #0x0] + ldrsh r3, [r1, #0x2] + and r12, r12, #0x7 + orr lr, r12, r2, asr #0xd + mov r2, r3, asr #0x3 + str r2, [r0, #0x4] + ldrsh r12, [r1, #0x4] + mov r2, lr, lsl #0x10 + and lr, r3, #0x7 + mov r3, r12, asr #0x3 + str r3, [r0, #0x8] + ldrsh r3, [r1, #0x6] + orr r1, lr, r2, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r12, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r3, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r3, asr #0x3 + mov r1, r1, lsl #0x13 + str r2, [r0, #0xc] + mov r1, r1, asr #0x13 + str r1, [r0, #0x14] + mov r0, #0x1 + ldmia sp!, {r4,pc} + .balign 4 +_020BC684: .word 0x00007FFF +_020BC688: .word UNK_020FFA14 +_020BC68C: .word UNK_020FFA15 +_020BC690: .word UNK_020FFA16 +_020BC694: .word UNK_020FFA17 + + arm_func_start FUN_020BC698 +FUN_020BC698: ; 0x020BC698 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x48 + ldrh r4, [r3, #0x4] + ldr r5, [r3, #0xc] + ldr r8, [r3, #0x10] + ldr r7, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + mov r6, r0 + cmp r12, r4 + add r5, r3, r5 + add r4, r3, r8 + add r8, r3, r7 + ldr r7, [r2, #0x0] + bne _020BC780 + ands r0, r7, #0xc0000000 + beq _020BC6F0 + ands r0, r7, #0x40000000 + andne r0, r12, #0x1 + addne r12, r0, r12, lsr #0x1 + andeq r0, r12, #0x3 + addeq r12, r0, r12, lsr #0x2 +_020BC6F0: + ldr r0, [r3, #0x8] + ands r0, r0, #0x2 + movne r7, #0x0 + bne _020BC7F4 + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x48 + ldmeqia sp!, {r4-r10,pc} + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x48 + str r0, [r6, #0x20] + ldmia sp!, {r4-r10,pc} +_020BC780: + ands r0, r7, #0xc0000000 + beq _020BC7F0 + ldr r0, _020BC9C4 ; =0x1FFF0000 + ands r2, r7, #0x40000000 + and r0, r7, r0 + mov r0, r0, lsr #0x10 + beq _020BC7C4 + cmp r12, r0 + movcs r12, r0, lsr #0x1 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9C8 ; =0x00001FFF + mov r12, r12, lsr #0x1 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x2 + b _020BC800 +_020BC7C4: + cmp r12, r0 + andcs r0, r12, #0x3 + addcs r12, r0, r12, lsr #0x2 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9CC ; =0x00003FFF + mov r12, r12, lsr #0x2 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x4 + b _020BC800 +_020BC7F0: + add r7, r12, #0x1 +_020BC7F4: + ldr r0, _020BC9D0 ; =0x00000FFF + mov r9, #0x1 + and r10, r1, r0 +_020BC800: + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + mov r1, r7, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [sp, #0x24] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x28] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [sp, #0x2c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x8] + ldr r3, [sp, #0xc] + ldr r1, [sp, #0x30] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x34] + orr r7, r7, r0 + sub r0, r1, r2 + mul r1, r2, r9 + mul r0, r10, r0 + add r0, r1, r0, asr #0xc + str r0, [r6, #0x10] + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x38] + mul r1, r2, r9 + sub r0, r0, r2 + mul r0, r10, r0 + add r2, r1, r0, asr #0xc + mov r0, r6 + mov r1, r6 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BC968 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x3c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [sp, #0x40] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x1c] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x44] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r2, r2, r1, asr #0xc + add r0, r6, #0x18 + mov r1, r0 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} +_020BC968: + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020BC9C4: .word 0x1FFF0000 +_020BC9C8: .word 0x00001FFF +_020BC9CC: .word 0x00003FFF +_020BC9D0: .word 0x00000FFF + + arm_func_start FUN_020BC9D4 +FUN_020BC9D4: ; 0x020BC9D4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + ldr r12, [r2, #0x0] + ldr r2, [r2, #0x4] + mov r6, r0 + mov r0, r1, asr #0xc + add r5, r3, r5 + add r4, r3, r4 + add r8, r3, r2 + ands r1, r12, #0xc0000000 + beq _020BCD40 + ldr r1, _020BCDC0 ; =0x1FFF0000 + ands r2, r12, #0x40000000 + and r1, r12, r1 + mov r2, r1, lsr #0x10 + beq _020BCA44 + ands r1, r0, #0x1 + beq _020BCA3C + cmp r0, r2 + movhi r0, r2, lsr #0x1 + addhi r0, r0, #0x1 + bhi _020BCD40 + mov r7, r0, lsr #0x1 + b _020BCBE8 +_020BCA3C: + mov r0, r0, lsr #0x1 + b _020BCD40 +_020BCA44: + ands r1, r0, #0x3 + beq _020BCBE0 + cmp r0, r2 + addhi r0, r1, r2, lsr #0x2 + bhi _020BCD40 + ands r1, r0, #0x1 + beq _020BCBD8 + ands r1, r0, #0x2 + movne r9, r0, lsr #0x2 + addne r0, r9, #0x1 + moveq r0, r0, lsr #0x2 + addeq r9, r0, #0x1 + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r7, #0x0 + bl FUN_020BC500 + mov r1, r9, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r7, r0 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [r6, #0x0] + mov r2, #0x3 + mla r3, r1, r2, r3 + str r3, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [r6, #0x4] + orr r7, r7, r0 + mla r0, r1, r2, r3 + str r0, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r6, #0x8] + mov r0, r6 + mla r3, r1, r2, r3 + str r3, [r6, #0x8] + ldr r4, [sp, #0xc] + ldr r3, [r6, #0xc] + mov r1, r6 + mla r4, r3, r2, r4 + str r4, [r6, #0xc] + ldr r4, [sp, #0x10] + ldr r3, [r6, #0x10] + mla r4, r3, r2, r4 + str r4, [r6, #0x10] + ldr r4, [sp, #0x14] + ldr r3, [r6, #0x14] + mla r2, r3, r2, r4 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCB7C + ldr r1, [sp, #0x18] + ldr r0, [r6, #0x18] + mov r2, #0x3 + mla r1, r0, r2, r1 + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [r6, #0x1c] + add r0, r6, #0x18 + mla r3, r1, r2, r3 + str r3, [r6, #0x1c] + ldr r4, [sp, #0x20] + ldr r3, [r6, #0x20] + mov r1, r0 + mla r2, r3, r2, r4 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCB7C: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCBD8: + mov r7, r0, lsr #0x2 + b _020BCBE8 +_020BCBE0: + mov r0, r0, lsr #0x2 + b _020BCD40 +_020BCBE8: + mov r0, r7, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + add r1, r8, r7, lsl #0x1 + ldrh r3, [r1, #0x2] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r2, [r6, #0x0] + ldr r1, [sp, #0x24] + orr r7, r7, r0 + add r0, r2, r1 + str r0, [r6, #0x0] + ldr r2, [r6, #0x4] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r6, #0x4] + ldr r3, [r6, #0x8] + ldr r2, [sp, #0x2c] + mov r1, r6 + add r2, r3, r2 + str r2, [r6, #0x8] + ldr r3, [r6, #0xc] + ldr r2, [sp, #0x30] + add r2, r3, r2 + str r2, [r6, #0xc] + ldr r3, [r6, #0x10] + ldr r2, [sp, #0x34] + add r2, r3, r2 + str r2, [r6, #0x10] + ldr r3, [r6, #0x14] + ldr r2, [sp, #0x38] + add r2, r3, r2 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCCE4 + ldr r2, [r6, #0x18] + ldr r1, [sp, #0x3c] + add r0, r6, #0x18 + add r1, r2, r1 + str r1, [r6, #0x18] + ldr r3, [r6, #0x1c] + ldr r2, [sp, #0x40] + mov r1, r0 + add r2, r3, r2 + str r2, [r6, #0x1c] + ldr r3, [r6, #0x20] + ldr r2, [sp, #0x44] + add r2, r3, r2 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCCE4: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCD40: + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r9,pc} + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BCDC0: .word 0x1FFF0000 + + arm_func_start FUN_020BCDC4 +FUN_020BCDC4: ; 0x020BCDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1, asr #0xc + sub r4, r4, #0x1 + cmp r5, r4 + add r6, r3, r6 + ldr r2, [r2, #0x0] + bne _020BCE58 + ands r4, r2, #0xc0000000 + beq _020BCE08 + ands r4, r2, #0x40000000 + andne r4, r5, #0x1 + addne r5, r4, r5, lsr #0x1 + andeq r4, r5, #0x3 + addeq r5, r4, r5, lsr #0x2 +_020BCE08: + ldr r3, [r3, #0x8] + ands r3, r3, #0x2 + movne r4, #0x0 + bne _020BCED4 + ands r1, r2, #0x20000000 + ldreq r2, [r6, r5, lsl #0x3] + addeq r1, r6, r5, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r7,pc} + mov r1, r5, lsl #0x2 + ldrsh r2, [r6, r1] + add r1, r6, r5, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r7,pc} +_020BCE58: + ands r3, r2, #0xc0000000 + beq _020BCED0 + ldr r3, _020BCF60 ; =0x1FFF0000 + ands r4, r2, #0x40000000 + and r3, r2, r3 + mov r3, r3, lsr #0x10 + beq _020BCEA0 + cmp r5, r3 + movcs r5, r3, lsr #0x1 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF64 ; =0x00001FFF + mov r5, r5, lsr #0x1 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x2 + mov r3, #0x1 + b _020BCEE4 +_020BCEA0: + cmp r5, r3 + andcs r3, r5, #0x3 + addcs r5, r3, r5, lsr #0x2 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF68 ; =0x00003FFF + mov r5, r5, lsr #0x2 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x4 + mov r3, #0x2 + b _020BCEE4 +_020BCED0: + add r4, r5, #0x1 +_020BCED4: + ldr r3, _020BCF6C ; =0x00000FFF + mov r12, #0x1 + and lr, r1, r3 + mov r3, #0x0 +_020BCEE4: + ands r1, r2, #0x20000000 + beq _020BCF10 + mov r2, r5, lsl #0x2 + add r1, r6, r5, lsl #0x2 + mov r5, r4, lsl #0x2 + add r4, r6, r4, lsl #0x2 + ldrsh r2, [r6, r2] + ldrsh r1, [r1, #0x2] + ldrsh r5, [r6, r5] + ldrsh r4, [r4, #0x2] + b _020BCF28 +_020BCF10: + add r1, r6, r5, lsl #0x3 + add r7, r6, r4, lsl #0x3 + ldr r2, [r6, r5, lsl #0x3] + ldr r1, [r1, #0x4] + ldr r5, [r6, r4, lsl #0x3] + ldr r4, [r7, #0x4] +_020BCF28: + sub r5, r5, r2 + sub r4, r4, r1 + mul r6, r2, r12 + mul r2, lr, r5 + add r2, r6, r2, asr #0xc + mov r5, r2, asr r3 + mul r2, r1, r12 + mul r1, lr, r4 + add r1, r2, r1, asr #0xc + mov r1, r1, asr r3 + str r5, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BCF60: .word 0x1FFF0000 +_020BCF64: .word 0x00001FFF +_020BCF68: .word 0x00003FFF +_020BCF6C: .word 0x00000FFF + + arm_func_start FUN_020BCF70 +FUN_020BCF70: ; 0x020BCF70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x4] + ldr r12, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r4 + ands r2, r12, #0xc0000000 + beq _020BD0D0 + ldr r2, _020BD184 ; =0x1FFF0000 + ands r4, r12, #0x40000000 + and r2, r12, r2 + mov r4, r2, lsr #0x10 + beq _020BCFCC + ands r2, r1, #0x1 + beq _020BCFC4 + cmp r1, r4 + movhi r1, r4, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD0D0 + mov r2, r1, lsr #0x1 + b _020BD110 +_020BCFC4: + mov r1, r1, lsr #0x1 + b _020BD0D0 +_020BCFCC: + ands r2, r1, #0x3 + beq _020BD0CC + cmp r1, r4 + addhi r1, r2, r4, lsr #0x2 + bhi _020BD0D0 + ands r2, r1, #0x1 + beq _020BD0C4 + ands r2, r1, #0x2 + movne r1, r1, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r1, lsr #0x2 + addeq r1, r2, #0x1 + ands r4, r12, #0x20000000 + beq _020BD04C + mov r5, r2, lsl #0x2 + mov r4, r1, lsl #0x2 + ldrsh r12, [r3, r5] + ldrsh r5, [r3, r4] + add r2, r3, r2, lsl #0x2 + add r4, r12, r12, lsl #0x1 + add r4, r5, r4 + mov r4, r4, asr #0x2 + str r4, [r0, #0x0] + add r1, r3, r1, lsl #0x2 + ldrsh r3, [r2, #0x2] + ldrsh r2, [r1, #0x2] + add sp, sp, #0x4 + add r1, r3, r3, lsl #0x1 + add r1, r2, r1 + mov r1, r1, asr #0x2 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD04C: + ldr r5, [r3, r2, lsl #0x3] + ldr r4, [r3, r1, lsl #0x3] + mov r12, r5, asr #0x1f + mov r12, r12, lsl #0x1 + mov lr, r5, lsl #0x1 + orr r12, r12, r5, lsr #0x1f + adds lr, lr, r5 + adc r12, r12, r5, asr #0x1f + adds lr, lr, r4 + adc r12, r12, r4, asr #0x1f + mov lr, lr, lsr #0x2 + orr lr, lr, r12, lsl #0x1e + str lr, [r0, #0x0] + add r2, r3, r2, lsl #0x3 + ldr r12, [r2, #0x4] + add r1, r3, r1, lsl #0x3 + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + ldr r1, [r1, #0x4] + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BD0C4: + mov r2, r1, lsr #0x2 + b _020BD110 +_020BD0CC: + mov r1, r1, lsr #0x2 +_020BD0D0: + ands r2, r12, #0x20000000 + ldreq r2, [r3, r1, lsl #0x3] + addeq r1, r3, r1, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r5,pc} + mov r2, r1, lsl #0x2 + ldrsh r2, [r3, r2] + add r1, r3, r1, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD110: + ands r1, r12, #0x20000000 + beq _020BD150 + mov r1, r2, lsl #0x2 + add r12, r3, r2, lsl #0x2 + ldrsh r2, [r3, r1] + ldrsh r1, [r12, #0x4] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldrsh r2, [r12, #0x2] + ldrsh r1, [r12, #0x6] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD150: + add r12, r3, r2, lsl #0x3 + ldr r2, [r3, r2, lsl #0x3] + ldr r1, [r12, #0x8] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldr r2, [r12, #0x4] + ldr r1, [r12, #0xc] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD184: .word 0x1FFF0000 + + arm_func_start FUN_020BD188 +FUN_020BD188: ; 0x020BD188 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr lr, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + cmp r12, r4 + add r4, r3, lr + ldr lr, [r2, #0x0] + bne _020BD230 + ands r2, lr, #0xc0000000 + beq _020BD1CC + ands r2, lr, #0x40000000 + andne r2, r12, #0x1 + addne r12, r2, r12, lsr #0x1 + andeq r2, r12, #0x3 + addeq r12, r2, r12, lsr #0x2 +_020BD1CC: + ldr r2, [r3, #0x8] + ands r2, r2, #0x2 + beq _020BD210 + ldr r2, _020BD2E8 ; =0x00000FFF + ands r3, lr, #0x20000000 + and r3, r1, r2 + movne r1, r12, lsl #0x1 + ldrnesh r2, [r4, r1] + ldrnesh r1, [r4, #0x0] + add sp, sp, #0x4 + ldreq r2, [r4, r12, lsl #0x2] + ldreq r1, [r4, #0x0] + sub r1, r1, r2 + mul r1, r3, r1 + add r1, r2, r1, asr #0xc + str r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD210: + ands r1, lr, #0x20000000 + movne r1, r12, lsl #0x1 + ldrnesh r1, [r4, r1] + add sp, sp, #0x4 + strne r1, [r0, #0x0] + ldreq r1, [r4, r12, lsl #0x2] + streq r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD230: + ands r2, lr, #0xc0000000 + beq _020BD298 + ldr r2, _020BD2EC ; =0x1FFF0000 + ands r3, lr, #0x40000000 + and r2, lr, r2 + mov r2, r2, lsr #0x10 + beq _020BD270 + cmp r12, r2 + movcs r12, r2, lsr #0x1 + bhs _020BD298 + ldr r2, _020BD2F0 ; =0x00001FFF + mov r12, r12, lsr #0x1 + and r5, r1, r2 + mov r2, #0x2 + mov r1, #0x1 + b _020BD2A8 +_020BD270: + cmp r12, r2 + andcs r2, r12, #0x3 + addcs r12, r2, r12, lsr #0x2 + bhs _020BD298 + ldr r2, _020BD2F4 ; =0x00003FFF + mov r12, r12, lsr #0x2 + and r5, r1, r2 + mov r2, #0x4 + mov r1, #0x2 + b _020BD2A8 +_020BD298: + ldr r3, _020BD2E8 ; =0x00000FFF + mov r2, #0x1 + and r5, r1, r3 + mov r1, #0x0 +_020BD2A8: + ands r3, lr, #0x20000000 + addne r3, r4, r12, lsl #0x1 + movne lr, r12, lsl #0x1 + ldrnesh r12, [r4, lr] + ldrnesh r3, [r3, #0x2] + addeq r3, r4, r12, lsl #0x2 + ldreq r12, [r4, r12, lsl #0x2] + ldreq r3, [r3, #0x4] + mul r4, r12, r2 + sub r3, r3, r12 + mul r2, r5, r3 + add r2, r4, r2, asr #0xc + mov r1, r2, asr r1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD2E8: .word 0x00000FFF +_020BD2EC: .word 0x1FFF0000 +_020BD2F0: .word 0x00001FFF +_020BD2F4: .word 0x00003FFF + + arm_func_start FUN_020BD2F8 +FUN_020BD2F8: ; 0x020BD2F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r2, #0x4] + ldr r2, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r12 + ands r12, r2, #0xc0000000 + beq _020BD44C + ldr ip, _020BD46C ; =0x1FFF0000 + ands lr, r2, #0x40000000 + and r12, r2, r12 + mov lr, r12, lsr #0x10 + beq _020BD354 + ands r12, r1, #0x1 + beq _020BD34C + cmp r1, lr + movhi r1, lr, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD44C + mov r12, r1, lsr #0x1 + b _020BD400 +_020BD34C: + mov r1, r1, lsr #0x1 + b _020BD44C +_020BD354: + ands r12, r1, #0x3 + beq _020BD3F8 + cmp r1, lr + addhi r1, r12, lr, lsr #0x2 + bhi _020BD44C + ands r12, r1, #0x1 + beq _020BD3F0 + ands r12, r1, #0x2 + movne lr, r1, lsr #0x2 + addne r12, lr, #0x1 + moveq r12, r1, lsr #0x2 + addeq lr, r12, #0x1 + ands r1, r2, #0x20000000 + beq _020BD3B4 + mov r2, r12, lsl #0x1 + mov r1, lr, lsl #0x1 + ldrsh r12, [r3, r2] + ldrsh r2, [r3, r1] + mov r1, #0x3 + add sp, sp, #0x4 + smlabb r1, r12, r1, r2 + mov r1, r1, asr #0x2 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD3B4: + ldr r12, [r3, r12, lsl #0x2] + ldr r1, [r3, lr, lsl #0x2] + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD3F0: + mov r12, r1, lsr #0x2 + b _020BD400 +_020BD3F8: + mov r1, r1, lsr #0x2 + b _020BD44C +_020BD400: + ands r1, r2, #0x20000000 + beq _020BD42C + mov r2, r12, lsl #0x1 + add r1, r3, r12, lsl #0x1 + ldrsh r2, [r3, r2] + ldrsh r1, [r1, #0x2] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD42C: + add r1, r3, r12, lsl #0x2 + ldr r2, [r3, r12, lsl #0x2] + ldr r1, [r1, #0x4] + mov r2, r2, asr #0x1 + add r1, r2, r1, asr #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD44C: + ands r2, r2, #0x20000000 + movne r1, r1, lsl #0x1 + ldrnesh r1, [r3, r1] + strne r1, [r0, #0x0] + ldreq r1, [r3, r1, lsl #0x2] + streq r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BD46C: .word 0x1FFF0000 + + arm_func_start FUN_020BD470 +FUN_020BD470: ; 0x020BD470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r9, r0 + add r0, r9, r1, lsl #0x1 + ldrh r0, [r0, #0x14] + mov r7, r3 + mov r8, r2 + ldr r5, [r9, r0] + add r1, r9, r0 + ands r0, r5, #0x1 + movne r0, #0x7 + strne r0, [r7, #0x0] + bne _020BD814 + ldr r0, _020BD848 ; =0x00000FFF + add r4, r1, #0x4 + ands r0, r8, r0 + beq _020BD4C4 + ldr r0, [r9, #0x8] + ands r0, r0, #0x1 + movne r6, #0x1 + bne _020BD4C8 +_020BD4C4: + mov r6, #0x0 +_020BD4C8: + mov r0, #0x0 + str r0, [r7, #0x0] + ands r0, r5, #0x6 + bne _020BD5C0 + ands r0, r5, #0x8 + bne _020BD51C + cmp r6, #0x0 + beq _020BD500 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD188 + b _020BD514 +_020BD500: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD2F8 +_020BD514: + add r4, r4, #0x8 + b _020BD524 +_020BD51C: + ldr r0, [r4], #0x4 + str r0, [r7, #0x4c] +_020BD524: + ands r0, r5, #0x10 + bne _020BD568 + cmp r6, #0x0 + beq _020BD54C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD188 + b _020BD560 +_020BD54C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD2F8 +_020BD560: + add r4, r4, #0x8 + b _020BD570 +_020BD568: + ldr r0, [r4], #0x4 + str r0, [r7, #0x50] +_020BD570: + ands r0, r5, #0x20 + bne _020BD5B4 + cmp r6, #0x0 + beq _020BD598 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD188 + b _020BD5AC +_020BD598: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD2F8 +_020BD5AC: + add r4, r4, #0x8 + b _020BD5DC +_020BD5B4: + ldr r0, [r4], #0x4 + str r0, [r7, #0x54] + b _020BD5DC +_020BD5C0: + ands r0, r5, #0x2 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x4 + strne r0, [r7, #0x0] + bne _020BD5DC + mov r0, r7 + bl FUN_020BDA08 +_020BD5DC: + ands r0, r5, #0xc0 + bne _020BD6A8 + ands r0, r5, #0x100 + bne _020BD628 + cmp r6, #0x0 + beq _020BD60C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC698 + b _020BD620 +_020BD60C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC9D4 +_020BD620: + add r4, r4, #0x8 + b _020BD6C4 +_020BD628: + ldr r1, [r9, #0xc] + ldr r2, [r9, #0x10] + ldr r3, [r4, #0x0] + add r0, r7, #0x28 + add r1, r9, r1 + add r2, r9, r2 + bl FUN_020BC500 + cmp r0, #0x0 + beq _020BD6A0 + ldr r12, [r7, #0x3c] + ldr r0, [r7, #0x2c] + ldr r3, [r7, #0x28] + ldr r11, [r7, #0x38] + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x34] + mul r10, r0, r12 + mul lr, r1, r11 + sub r10, r10, lr + mov r10, r10, asr #0xc + mul lr, r1, r2 + mul r1, r3, r12 + sub r1, lr, r1 + mul r11, r3, r11 + mul r2, r0, r2 + sub r0, r11, r2 + str r10, [r7, #0x40] + mov r1, r1, asr #0xc + str r1, [r7, #0x44] + mov r0, r0, asr #0xc + str r0, [r7, #0x48] +_020BD6A0: + add r4, r4, #0x4 + b _020BD6C4 +_020BD6A8: + ands r0, r5, #0x40 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x2 + strne r0, [r7, #0x0] + bne _020BD6C4 + mov r0, r7 + bl FUN_020BD850 +_020BD6C4: + ands r0, r5, #0x600 + bne _020BD7F0 + ands r0, r5, #0x800 + bne _020BD71C + cmp r6, #0x0 + beq _020BD6F4 + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCDC4 + b _020BD708 +_020BD6F4: + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCF70 +_020BD708: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r1, [sp, #0x18] + str r0, [sp, #0x24] + b _020BD72C +_020BD71C: + ldr r0, [r4, #0x0] + str r0, [sp, #0x18] + ldr r0, [r4, #0x4] + str r0, [sp, #0x24] +_020BD72C: + ands r0, r5, #0x1000 + bne _020BD77C + cmp r6, #0x0 + beq _020BD754 + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCDC4 + b _020BD768 +_020BD754: + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCF70 +_020BD768: + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x1c] + str r0, [sp, #0x28] + b _020BD78C +_020BD77C: + ldr r0, [r4, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x28] +_020BD78C: + ands r0, r5, #0x2000 + bne _020BD7DC + cmp r6, #0x0 + beq _020BD7B4 + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCDC4 + b _020BD7C8 +_020BD7B4: + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCF70 +_020BD7C8: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7DC: + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + ldr r0, [r4, #0x14] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7F0: + ands r0, r5, #0x200 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x1 + strne r0, [r7, #0x0] + bne _020BD814 + mov r0, r7 + bl FUN_020BD9A4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020BD814: + ldr r0, [r7, #0x0] + add r1, sp, #0x18 + ands r0, r0, #0x1 + ldr r0, _020BD84C ; =UNK_021CEF7C + movne r3, #0x4 + ldr r4, [r0, #0x0] + moveq r3, #0x0 + ldr r2, [r4, #0x0] + ldr r4, [r4, #0xe8] + mov r0, r7 + blx r4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BD848: .word 0x00000FFF +_020BD84C: .word UNK_021CEF7C + + arm_func_start FUN_020BD850 +FUN_020BD850: ; 0x020BD850 + stmdb sp!, {r4-r8,lr} + ldr r1, _020BD990 ; =UNK_021CEF7C + mov r8, r0 + ldr r0, [r1, #0x0] + ldr r3, [r0, #0xd4] + ldr r0, [r0, #0x0] + ldrh r2, [r3, #0x6] + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + ldrh r2, [r3, r0] + add r4, r3, r0 + add r1, r4, #0x4 + ands r0, r2, #0x1 + addeq r1, r1, #0xc + ands r0, r2, #0x2 + bne _020BD980 + ands r0, r2, #0x8 + beq _020BD934 + and r2, r2, #0xf0 + add r0, r8, #0x28 + mov r5, r2, asr #0x4 + ldrsh r7, [r1, #0x0] + ldrsh r6, [r1, #0x2] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r8, r5, lsl #0x2 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + ldr r0, _020BD994 ; =UNK_020FFA14 + str r2, [r1, #0x28] + ldrb r1, [r0, r5, lsl #0x2] + ldr r0, _020BD998 ; =UNK_020FFA15 + add r1, r8, r1, lsl #0x2 + str r7, [r1, #0x28] + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldr r0, _020BD99C ; =UNK_020FFA16 + rsbne r6, r6, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldr r0, _020BD9A0 ; =UNK_020FFA17 + rsbne r7, r7, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r7, [r0, #0x28] + ldmia sp!, {r4-r8,pc} +_020BD934: + ldrsh r0, [r4, #0x2] + str r0, [r8, #0x28] + ldrsh r0, [r1, #0x0] + str r0, [r8, #0x2c] + ldrsh r0, [r1, #0x2] + str r0, [r8, #0x30] + ldrsh r0, [r1, #0x4] + str r0, [r8, #0x34] + ldrsh r0, [r1, #0x6] + str r0, [r8, #0x38] + ldrsh r0, [r1, #0x8] + str r0, [r8, #0x3c] + ldrsh r0, [r1, #0xa] + str r0, [r8, #0x40] + ldrsh r0, [r1, #0xc] + str r0, [r8, #0x44] + ldrsh r0, [r1, #0xe] + str r0, [r8, #0x48] + ldmia sp!, {r4-r8,pc} +_020BD980: + ldr r0, [r8, #0x0] + orr r0, r0, #0x2 + str r0, [r8, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BD990: .word UNK_021CEF7C +_020BD994: .word UNK_020FFA14 +_020BD998: .word UNK_020FFA15 +_020BD99C: .word UNK_020FFA16 +_020BD9A0: .word UNK_020FFA17 + + arm_func_start FUN_020BD9A4 +FUN_020BD9A4: ; 0x020BD9A4 + stmdb sp!, {r4,lr} + ldr r1, _020BDA04 ; =UNK_021CEF7C + ldr r12, [r1, #0x0] + ldr r4, [r12, #0xd4] + ldr r2, [r12, #0x0] + ldrh lr, [r4, #0x6] + ldrb r1, [r2, #0x1] + ldrh r3, [r4, lr] + add lr, r4, lr + mla r1, r3, r1, lr + ldr r1, [r1, #0x4] + ldrh r3, [r4, r1] + add r1, r4, r1 + add r1, r1, #0x4 + ands lr, r3, #0x1 + addeq r1, r1, #0xc + ands lr, r3, #0x2 + bne _020BD9F8 + ands lr, r3, #0x8 + addne r1, r1, #0x4 + addeq r1, r1, #0x10 +_020BD9F8: + ldr r12, [r12, #0xe8] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020BDA04: .word UNK_021CEF7C + + arm_func_start FUN_020BDA08 +FUN_020BDA08: ; 0x020BDA08 + ldr r1, _020BDA6C ; =UNK_021CEF7C + ldr r1, [r1, #0x0] + ldr r12, [r1, #0xd4] + ldr r1, [r1, #0x0] + ldrh r3, [r12, #0x6] + ldrb r1, [r1, #0x1] + ldrh r2, [r12, r3] + add r3, r12, r3 + mla r1, r2, r1, r3 + ldr r2, [r1, #0x4] + ldrh r1, [r12, r2] + add r2, r12, r2 + ands r1, r1, #0x1 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x4 + strne r1, [r0, #0x0] + bxne lr + ldr r1, [r2, #0x4] + add r2, r2, #0x4 + str r1, [r0, #0x4c] + ldr r1, [r2, #0x4] + str r1, [r0, #0x50] + ldr r1, [r2, #0x8] + str r1, [r0, #0x54] + bx lr + .balign 4 +_020BDA6C: .word UNK_021CEF7C + + arm_func_start FUN_020BDA70 +FUN_020BDA70: ; 0x020BDA70 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r1, #0x8] + ldr r12, [r1, #0x0] + ldrh r1, [r0, #0x4] + mov r1, r1, lsl #0xc + cmp r12, r1 + subge r12, r1, #0x1 + bge _020BDAA0 + cmp r12, #0x0 + movlt r12, #0x0 +_020BDAA0: + mov r1, r2 + mov r2, r12 + bl FUN_020BD470 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BDAB4 +FUN_020BDAB4: ; 0x020BDAB4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _020BDB3C ; =UNK_0210659C + str r4, [r5, #0x8] + ldr r0, [r0, #0x0] + add r1, r5, #0x1a + str r0, [r5, #0xc] + ldrb r2, [r2, #0x17] + mov r0, #0x0 + strb r2, [r5, #0x19] + ldrb r2, [r5, #0x19] + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrh r0, [r4, #0x6] + add r2, r4, #0x14 + mov r3, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020BDB08: + mov r0, r3, lsl #0x1 + ldrh r1, [r2, r0] + add r0, r5, r3, lsl #0x1 + add r3, r3, #0x1 + ldr r1, [r4, r1] + mov r1, r1, lsr #0x18 + orr r1, r1, #0x100 + strh r1, [r0, #0x1a] + ldrh r0, [r4, #0x6] + cmp r3, r0 + blo _020BDB08 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BDB3C: .word UNK_0210659C + + arm_func_start FUN_020BDB40 +FUN_020BDB40: ; 0x020BDB40 + stmdb sp!, {r4-r8,lr} + ldr r7, [r1, #0x8] + mov r2, r2, lsl #0x10 + ldrh r4, [r7, #0xe] + add r5, r7, #0x8 + ldr r6, [r1, #0x0] + ldrh r3, [r5, r4] + mov r1, r2, lsr #0x10 + add r2, r5, r4 + mul r4, r3, r1 + add r3, r2, #0x4 + mov r6, r6, asr #0xc + mov r8, r0 + ldr r1, [r3, r4] + mov r0, r7 + mov r2, r6 + add r5, r3, r4 + bl FUN_020BDDAC + mov r4, r0 + ldr r1, [r5, #0x4] + mov r0, r7 + mov r2, r6 + bl FUN_020BDDAC + ldr r1, [r8, #0x4] + mov r2, r6 + and r1, r1, #0x8000 + orr r1, r1, r4 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0x4] + mov r0, r7 + ldr r1, [r5, #0xc] + bl FUN_020BDDAC + mov r4, r0 + mov r0, r7 + ldr r1, [r5, #0x8] + mov r2, r6 + bl FUN_020BDDAC + mov r2, r6 + ldr r1, [r8, #0x8] + and r1, r1, #0x8000 + orr r0, r1, r0 + orr r0, r0, r4, lsl #0x10 + str r0, [r8, #0x8] + mov r0, r7 + ldr r1, [r5, #0x10] + bl FUN_020BDCB8 + ldr r1, [r8, #0xc] + bic r1, r1, #0x1f0000 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0xc] + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020BDC0C +FUN_020BDC0C: ; 0x020BDC0C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BDCB4 ; =UNK_021065A8 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDC6C: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDC6C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BDCB4: .word UNK_021065A8 + + arm_func_start FUN_020BDCB8 +FUN_020BDCB8: ; 0x020BDCB8 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + movne r0, r0, lsr #0x10 + bxne lr + ldr r3, _020BDDA4 ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + ldreqb r0, [r0, r2] + bxeq lr + ldr r3, _020BDDA8 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDD30 + ands r1, r2, #0x1 + beq _020BDD28 + cmp r2, r3 + addhi r0, r0, r3, lsr #0x1 + ldrhib r0, [r0, #0x1] + bxhi lr + add r1, r0, r2, lsr #0x1 + ldrb r2, [r0, r2, lsr #0x1] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD28: + ldrb r0, [r0, r2, lsr #0x1] + bx lr +_020BDD30: + ands r1, r2, #0x3 + beq _020BDD9C + cmp r2, r3 + addhi r0, r0, r3, lsr #0x2 + ldrhib r0, [r1, r0] + bxhi lr + ands r1, r2, #0x1 + beq _020BDD80 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + ldrb r2, [r0, r2] + ldrb r1, [r0, r1] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x10 + bx lr +_020BDD80: + add r1, r0, r2, lsr #0x2 + ldrb r2, [r0, r2, lsr #0x2] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD9C: + ldrb r0, [r0, r2, lsr #0x2] + bx lr + .balign 4 +_020BDDA4: .word 0x0000FFFF +_020BDDA8: .word 0x1FFF0000 + + arm_func_start FUN_020BDDAC +FUN_020BDDAC: ; 0x020BDDAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + addne sp, sp, #0x4 + movne r0, r0, lsr #0x10 + ldmneia sp!, {pc} + ldr r3, _020BDF2C ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + moveq r1, r2, lsl #0x1 + addeq sp, sp, #0x4 + ldreqh r0, [r0, r1] + ldmeqia sp!, {pc} + ldr r3, _020BDF30 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDE34 + ands r1, r2, #0x1 + beq _020BDE24 + cmp r2, r3 + bichi r1, r3, #0x1 + addhi r0, r0, r1 + addhi sp, sp, #0x4 + ldrhih r0, [r0, #0x2] + ldmhiia sp!, {pc} + mov r1, r2, lsr #0x1 + b _020BDEE0 +_020BDE24: + bic r1, r2, #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDE34: + ands r1, r2, #0x3 + beq _020BDECC + cmp r2, r3 + movhi r2, r3, lsr #0x2 + movhi r1, r1, lsl #0x1 + addhi r0, r0, r2, lsl #0x1 + addhi sp, sp, #0x4 + ldrhih r0, [r1, r0] + ldmhiia sp!, {pc} + ands r1, r2, #0x1 + beq _020BDEC4 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + mov r2, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + ldrh r12, [r0, r2] + ldrh lr, [r0, r1] + ldr r0, _020BDF34 ; =0x00007C1F + and r3, r12, #0x3e0 + and r2, lr, #0x3e0 + mov r1, #0x3 + mla r2, r3, r1, r2 + and r12, r12, r0 + and r3, lr, r0 + mla r1, r12, r1, r3 + mov r2, r2, lsr #0x2 + and r1, r0, r1, lsr #0x2 + and r0, r2, #0x3e0 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + add sp, sp, #0x4 + mov r0, r0, lsr #0x10 + ldmia sp!, {pc} +_020BDEC4: + mov r1, r2, lsr #0x2 + b _020BDEE0 +_020BDECC: + mov r1, r2, lsr #0x2 + mov r1, r1, lsl #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDEE0: + mov r2, r1, lsl #0x1 + add r1, r0, r1, lsl #0x1 + ldrh r3, [r0, r2] + ldrh r12, [r1, #0x2] + ldr r0, _020BDF34 ; =0x00007C1F + and r2, r3, #0x3e0 + and r1, r12, #0x3e0 + add r1, r2, r1 + mov r1, r1, lsr #0x1 + and r3, r3, r0 + and r2, r12, r0 + add r2, r3, r2 + and r2, r0, r2, lsr #0x1 + and r0, r1, #0x3e0 + orr r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BDF2C: .word 0x0000FFFF +_020BDF30: .word 0x1FFF0000 +_020BDF34: .word 0x00007C1F + + arm_func_start FUN_020BDF38 +FUN_020BDF38: ; 0x020BDF38 + stmdb sp!, {r4,lr} + ldr r12, [r1, #0x0] + mov r4, r0 + mov r2, r2, lsl #0x10 + ldr r0, [r1, #0x8] + mov r1, r2, lsr #0x10 + mov r3, r4 + mov r2, r12, asr #0xc + bl FUN_020BE030 + ldr r0, [r4, #0x10] + bic r0, r0, #0xc0000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + orr r0, r0, #0x40000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BDF84 +FUN_020BDF84: ; 0x020BDF84 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE02C ; =UNK_021065A0 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDFE4: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDFE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE02C: .word UNK_021065A0 + + arm_func_start FUN_020BE030 +FUN_020BE030: ; 0x020BE030 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrh r4, [r8, #0xe] + add r5, r8, #0x8 + mov r6, r3 + ldrh r3, [r5, r4] + add r4, r5, r4 + add r4, r4, #0x4 + mla r5, r3, r1, r4 + mov r7, r2 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + mov r3, r7 + ldr r4, [r6, #0x0] + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x20] + mov r0, r8 + ldr r2, [r5, #0x24] + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x0 + bne _020BE09C + cmp r0, #0x0 + orreq r4, r4, #0x4 + beq _020BE0A8 +_020BE09C: + str r9, [r6, #0x24] + str r0, [r6, #0x28] + bic r4, r4, #0x4 +_020BE0A8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r8 + mov r3, r7 + bl FUN_020BE12C + cmp r0, #0x10000000 + strneh r0, [r6, #0x20] + movne r0, r0, lsr #0x10 + strneh r0, [r6, #0x22] + orreq r4, r4, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r0, r8 + mov r3, r7 + bicne r4, r4, #0x2 + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r0, r8 + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x1000 + bne _020BE114 + cmp r0, #0x1000 + orreq r4, r4, #0x1 + beq _020BE120 +_020BE114: + str r9, [r6, #0x18] + str r0, [r6, #0x1c] + bic r4, r4, #0x1 +_020BE120: + str r4, [r6, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020BE12C +FUN_020BE12C: ; 0x020BE12C + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE1F8 + ldr r2, _020BE234 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r2, r1, r2 + beq _020BE17C + ands r1, r3, #0x1 + beq _020BE174 + cmp r3, r2 + movhi r1, r2, lsr #0x1 + addhi r3, r1, #0x1 + bhi _020BE1F8 + mov r2, r3, lsr #0x1 + b _020BE200 +_020BE174: + mov r3, r3, lsr #0x1 + b _020BE1F8 +_020BE17C: + ands r1, r3, #0x3 + beq _020BE1F4 + cmp r3, r2 + addhi r3, r1, r2, lsr #0x2 + bhi _020BE1F8 + ands r1, r3, #0x1 + beq _020BE1EC + ands r1, r3, #0x2 + movne r1, r3, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r3, lsr #0x2 + addeq r1, r2, #0x1 + mov r12, r2, lsl #0x2 + add r3, r0, r2, lsl #0x2 + mov r2, r1, lsl #0x2 + add r1, r0, r1, lsl #0x2 + ldrsh r12, [r0, r12] + ldrsh r2, [r0, r2] + mov r0, #0x3 + ldrsh r3, [r3, #0x2] + ldrsh r1, [r1, #0x2] + mla r2, r12, r0, r2 + mla r1, r3, r0, r1 + ldr r0, _020BE234 ; =0x0000FFFF + mov r1, r1, asr #0x2 + and r0, r0, r2, asr #0x2 + orr r0, r0, r1, lsl #0x10 + bx lr +_020BE1EC: + mov r2, r3, lsr #0x2 + b _020BE200 +_020BE1F4: + mov r3, r3, lsr #0x2 +_020BE1F8: + ldr r0, [r0, r3, lsl #0x2] + bx lr +_020BE200: + add r1, r0, r2, lsl #0x2 + mov r2, r2, lsl #0x2 + ldrsh r12, [r0, r2] + ldrsh r3, [r1, #0x4] + ldrsh r2, [r1, #0x2] + ldrsh r1, [r1, #0x6] + ldr r0, _020BE234 ; =0x0000FFFF + add r3, r12, r3 + add r1, r2, r1 + and r2, r0, r3, asr #0x1 + mov r0, r1, asr #0x1 + orr r0, r2, r0, lsl #0x10 + bx lr + .balign 4 +_020BE234: .word 0x0000FFFF + + arm_func_start FUN_020BE238 +FUN_020BE238: + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE2F0 + ldr r2, _020BE330 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r12, r1, r2 + beq _020BE288 + ands r2, r3, #0x1 + beq _020BE280 + cmp r3, r12 + movhi r2, r12, lsr #0x1 + addhi r3, r2, #0x1 + bhi _020BE2F0 + mov r3, r3, lsr #0x1 + b _020BE304 +_020BE280: + mov r3, r3, lsr #0x1 + b _020BE2F0 +_020BE288: + ands r2, r3, #0x3 + beq _020BE2EC + cmp r3, r12 + addhi r3, r2, r12, lsr #0x2 + bhi _020BE2F0 + ands r2, r3, #0x1 + beq _020BE2E4 + ands r2, r3, #0x2 + movne r3, r3, lsr #0x2 + addne r2, r3, #0x1 + moveq r2, r3, lsr #0x2 + addeq r3, r2, #0x1 + ands r1, r1, #0x10000000 + movne r2, r2, lsl #0x1 + movne r1, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r1, [r0, r1] + ldreq r2, [r0, r2, lsl #0x2] + ldreq r1, [r0, r3, lsl #0x2] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, asr #0x2 + bx lr +_020BE2E4: + mov r3, r3, lsr #0x2 + b _020BE304 +_020BE2EC: + mov r3, r3, lsr #0x2 +_020BE2F0: + ands r1, r1, #0x10000000 + movne r1, r3, lsl #0x1 + ldrnesh r0, [r0, r1] + ldreq r0, [r0, r3, lsl #0x2] + bx lr +_020BE304: + ands r1, r1, #0x10000000 + movne r2, r3, lsl #0x1 + addne r1, r0, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r0, [r1, #0x2] + addeq r1, r0, r3, lsl #0x2 + ldreq r2, [r0, r3, lsl #0x2] + ldreq r0, [r1, #0x4] + add r0, r2, r0 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020BE330: .word 0x0000FFFF + + arm_func_start FUN_020BE334 +FUN_020BE334: ; 0x020BE334 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r3, [r6, #0x0] + ldr r5, [r6, #0x8] + mov r1, r2, lsl #0x10 + mov r2, r3, lsl #0x4 + mov r7, r0 + mov r0, r5 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020BC42C + mov r4, r0 + ldrb r1, [r4, #0x2] + mov r0, r5 + bl FUN_020BC4B8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE408 + ldrb r1, [r4, #0x3] + cmp r1, #0xff + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r5 + bl FUN_020BC4A8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE3B4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE3B4 +FUN_020BE3B4: ; 0x020BE3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x34] + mov r4, r2 + add r0, r5, r0 + bl FUN_020BC2A0 + ldr r1, [r5, #0x2c] + ldrh r2, [r0, #0x2] + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + ands r1, r2, #0x1 + ldrh r0, [r0, #0x0] + moveq r1, r3, lsl #0xf + moveq r3, r1, lsr #0x10 + moveq r0, r0, lsl #0xf + moveq r0, r0, lsr #0x10 + add r0, r0, r3 + str r0, [r4, #0x14] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BE408 +FUN_020BE408: ; 0x020BE408 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x3c + mov r4, r2 + bl FUN_020BC2A0 + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + and r1, r1, #0x1c000000 + cmp r1, #0x14000000 + ldrne r2, [r5, #0x8] + ldrne r1, _020BE4E0 ; =0x0000FFFF + andne r5, r2, r1 + ldreq r2, [r5, #0x18] + ldreq r1, _020BE4E0 ; =0x0000FFFF + andeq r5, r2, r1 + ldr r1, _020BE4E4 ; =0xC00F0000 + ldr r2, _020BE4E8 ; =0x000007FF + and r1, r3, r1 + str r1, [r4, #0x10] + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + add r1, r1, r5 + orr r1, r3, r1 + str r1, [r4, #0x10] + ldr r3, [r0, #0x4] + ldr r1, _020BE4EC ; =0x003FF800 + and r3, r3, r2 + strh r3, [r4, #0x2c] + ldr r3, [r0, #0x4] + and r1, r3, r1 + mov r1, r1, lsr #0xb + strh r1, [r4, #0x2e] + ldr r3, [r0, #0x4] + ldrh r1, [r4, #0x2c] + and r0, r3, r2 + and r5, r2, r3, lsr #0xb + cmp r0, r1 + moveq r0, #0x1000 + beq _020BE4B4 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4B4: + str r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + cmp r5, r1 + moveq r0, #0x1000 + beq _020BE4D4 + mov r0, r5, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4D4: + str r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BE4E0: .word 0x0000FFFF +_020BE4E4: .word 0xC00F0000 +_020BE4E8: .word 0x000007FF +_020BE4EC: .word 0x003FF800 + + arm_func_start FUN_020BE4F0 +FUN_020BE4F0: ; 0x020BE4F0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE59C ; =UNK_021065A4 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + str r8, [r9, #0x8] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0xd] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0xc + add r4, r4, #0x4 +_020BE554: + ldrh r1, [r8, #0x12] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0xd] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BE554 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE59C: .word UNK_021065A4 + + arm_func_start FUN_020BE5A0 +FUN_020BE5A0: ; 0x020BE5A0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x8] + ldr r3, [r1, #0x0] + ldrh r1, [lr, #0x6] + mov r12, r3, asr #0xc + mov r3, #0x1 + mla r2, r12, r1, r2 + mov r1, r2, lsr #0x5 + add r1, lr, r1, lsl #0x2 + ldr r1, [r1, #0xc] + and r2, r2, #0x1f + and r1, r1, r3, lsl r2 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BE5E0 +FUN_020BE5E0: ; 0x020BE5E0 + ldr r3, _020BE628 ; =UNK_02106598 + mov r12, #0x0 + ldr r3, [r3, #0x0] + str r3, [r0, #0xc] + ldrb r2, [r2, #0x17] + strb r2, [r0, #0x19] + str r1, [r0, #0x8] + ldrb r1, [r0, #0x19] + cmp r1, #0x0 + bxls lr +_020BE608: + orr r2, r12, #0x100 + add r1, r0, r12, lsl #0x1 + strh r2, [r1, #0x1a] + ldrb r1, [r0, #0x19] + add r12, r12, #0x1 + cmp r12, r1 + blo _020BE608 + bx lr + .balign 4 +_020BE628: .word UNK_02106598 + + arm_func_start FUN_020BE62C +FUN_020BE62C: ; 0x020BE62C + ands r2, r3, #0x4 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x1 + strne r1, [r0, #0x0] + bne _020BE658 + + arm_func_start FUN_020BE640 +FUN_020BE640: ; 0x020BE640 + ldr r2, [r1, #0x0] + str r2, [r0, #0x4] + ldr r2, [r1, #0x4] + str r2, [r0, #0x8] + ldr r1, [r1, #0x8] + str r1, [r0, #0xc] +_020BE658: + ldr r1, [r0, #0x0] + orr r1, r1, #0x18 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BE668 +FUN_020BE668: ; 0x020BE668 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x0] + ands r0, r1, #0x4 + bne _020BE6AC + ands r0, r1, #0x2 + bne _020BE698 + add r1, r4, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BE6C4 +_020BE698: + add r1, r4, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + b _020BE6C4 +_020BE6AC: + ands r0, r1, #0x2 + bne _020BE6C4 + add r1, r4, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020BE6C4: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldmneia sp!, {r4,pc} + add r1, r4, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BE6E4 +FUN_020BE6E4: ; 0x020BE6E4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BE820 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BE824 ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BE828 ; =UNK_021067B0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BE7B4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BE7B4: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BE804 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BE804: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BE820: .word 0x00101610 +_020BE824: .word 0x00101810 +_020BE828: .word UNK_021067B0 + + arm_func_start FUN_020BE82C +FUN_020BE82C: ; 0x020BE82C + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BE850 +FUN_020BE850: ; 0x020BE850 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + str r12, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r3, [r1, #0x2e] + mov r1, r2, lsl #0x1 + rsb r1, r1, #0x0 + add r1, r1, #0x2000 + mul r1, r3, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BE894 +FUN_020BE894: ; 0x020BE894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2c] + add r0, r1, r0 + rsb r0, r0, #0x0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x30] + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + sub r0, r1, r0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE954 +FUN_020BE954: ; 0x020BE954 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r0, r7, r6 + ldrh r3, [r9, #0x2c] + ldr r2, [r9, #0x18] + sub r0, r2, r0 + mul r0, r3, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x30] + ldrh r2, [r9, #0x2e] + ldr r0, [r9, #0x1c] + sub r0, r1, r0 + add r0, r0, #0x2000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BEA3C +FUN_020BEA3C: ; 0x020BEA3C + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldrh r2, [r1, #0x2c] + ldr r3, [r1, #0x24] + mul r2, r3, r2 + rsb r2, r2, #0x0 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BEA84 +FUN_020BEA84: ; 0x020BEA84 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r4, [r1, #0x18] + ldr r3, [r1, #0x24] + ldrh lr, [r1, #0x2c] + smull r12, r3, r4, r3 + mov r4, r12, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + rsb r3, r4, #0x0 + mul r3, lr, r3 + str r3, [r0, #0x30] + ldr r4, [r1, #0x1c] + ldr r12, [r1, #0x28] + mov r3, r4, lsl #0x1 + smull lr, r12, r4, r12 + rsb r4, r3, #0x0 + mov r3, lr, lsr #0x8 + ldrh lr, [r1, #0x2e] + add r1, r4, #0x2000 + orr r3, r3, r12, lsl #0x18 + mul r4, lr, r1 + mul r1, lr, r3 + add r1, r1, r4, lsl #0x3 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BEB00 +FUN_020BEB00: ; 0x020BEB00 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2c] + ldr r0, [r5, #0x24] + add r1, r2, r1 + rsb r1, r1, #0x0 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + sub r0, r0, r1, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2e] + ldr r0, [r5, #0x28] + sub r1, r2, r1 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + add r0, r0, r1, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BEBD8 +FUN_020BEBD8: ; 0x020BEBD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r2, r7, r6 + ldr r5, [r9, #0x18] + ldrh r0, [r9, #0x2c] + sub r3, r5, r2 + ldr r2, [r9, #0x24] + mul r4, r0, r3 + smull r3, r2, r5, r2 + mov r4, r4, lsl #0x3 + mov r3, r3, lsr #0x8 + orr r3, r3, r2, lsl #0x18 + mul r2, r0, r3 + sub r0, r4, r2 + str r0, [r10, #0x30] + ldr r4, [r9, #0x1c] + ldrh r3, [r9, #0x2e] + sub r0, r1, r4 + add r0, r0, #0x2000 + mul r2, r3, r0 + ldr r0, [r9, #0x28] + smull r1, r0, r4, r0 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + mul r0, r3, r1 + add r0, r0, r2, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BECEC +FUN_020BECEC: ; 0x020BECEC + stmdb sp!, {r4-r8,lr} + mov r12, r0 + ands r0, r3, #0x4 + ldrb r3, [r2, #0x3] + beq _020BED40 + ldr r1, [r12, #0x0] + ands r0, r3, #0x2 + orr r0, r1, #0x1 + str r0, [r12, #0x0] + beq _020BEDB8 + ldr r0, _020BEE2C ; =UNK_021CEF7C + ldrb r7, [r2, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r6, r0, #0xc4 + mov r5, r7, lsr #0x5 + ldr r4, [r6, r5, lsl #0x2] + and r0, r7, #0x1f + orr r0, r4, r1, lsl r0 + str r0, [r6, r5, lsl #0x2] + b _020BEDB8 +_020BED40: + ldr r4, [r1, #0x0] + ands r0, r3, #0x2 + str r4, [r12, #0x4] + ldr r0, [r1, #0x4] + str r0, [r12, #0x8] + ldr r0, [r1, #0x8] + str r0, [r12, #0xc] + beq _020BEDB8 + ldr lr, _020BEE2C ; =UNK_021CEF7C + ldrb r0, [r2, #0x1] + ldr r4, [lr, #0x0] + mov lr, #0x18 + add r8, r4, #0xc4 + mov r7, r0, lsr #0x5 + and r4, r0, #0x1f + mov r5, #0x1 + mvn r4, r5, lsl r4 + ldr r6, [r8, r7, lsl #0x2] + mul r5, r0, lr + and r0, r6, r4 + str r0, [r8, r7, lsl #0x2] + ldr r4, [r1, #0xc] + ldr r0, _020BEE30 ; =UNK_021CFD8C + ldr lr, _020BEE34 ; =UNK_021CFD90 + str r4, [r0, r5] + ldr r4, [r1, #0x10] + ldr r0, _020BEE38 ; =UNK_021CFD94 + str r4, [lr, r5] + ldr r1, [r1, #0x14] + str r1, [r0, r5] +_020BEDB8: + ands r0, r3, #0x1 + beq _020BEE1C + ldrb r0, [r2, #0x2] + ldr r2, [r12, #0x0] + ldr r1, _020BEE2C ; =UNK_021CEF7C + orr r2, r2, #0x20 + str r2, [r12, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r2, r1, lsl #0x2 + and r2, r0, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + ldrne r0, [r12, #0x0] + orrne r0, r0, #0x8 + strne r0, [r12, #0x0] + bne _020BEE1C + ldr r2, _020BEE30 ; =UNK_021CFD8C + mov r1, #0x18 + mla r1, r0, r1, r2 + add r3, r12, #0x10 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} +_020BEE1C: + ldr r0, [r12, #0x0] + orr r0, r0, #0x10 + str r0, [r12, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BEE2C: .word UNK_021CEF7C +_020BEE30: .word UNK_021CFD8C +_020BEE34: .word UNK_021CFD90 +_020BEE38: .word UNK_021CFD94 + + arm_func_start FUN_020BEE3C +FUN_020BEE3C: ; 0x020BEE3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + mov r4, #0x0 + ands r0, r1, #0x4 + moveq r4, #0x1 + ands r0, r1, #0x20 + beq _020BEE94 + ands r0, r1, #0x8 + bne _020BEE94 + cmp r4, #0x0 + beq _020BEE84 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + mov r4, #0x0 +_020BEE84: + add r1, r5, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEE94: + ldr r0, [r5, #0x0] + ands r0, r0, #0x2 + bne _020BEED0 + cmp r4, #0x0 + beq _020BEEBC + add r1, r5, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BEEE8 +_020BEEBC: + add r1, r5, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BEEE8 +_020BEED0: + cmp r4, #0x0 + beq _020BEEE8 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEEE8: + ldr r0, [r5, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r1, r5, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BEF10 +FUN_020BEF10: ; 0x020BEF10 + stmdb sp!, {lr} + sub sp, sp, #0x3c + ldr r1, [r0, #0x0] + mov r3, #0x0 + ands r1, r1, #0x8 + ldrne r1, _020BF0CC ; =0x00101710 + mov r2, #0x3 + strne r1, [sp, #0x0] + ldreq r1, _020BF0D0 ; =0x00101910 + str r3, [sp, #0x34] + streq r1, [sp, #0x0] + mov r1, #0x2 + str r1, [sp, #0x38] + str r3, [sp, #0x28] + str r3, [sp, #0x24] + str r3, [sp, #0x20] + str r3, [sp, #0x1c] + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [r0, #0x0] + ands r1, r2, #0x4 + beq _020BEFA0 + str r3, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r1, [r0, #0x0] + ands r1, r1, #0x1 + movne r1, #0x1000 + strne r1, [sp, #0x8] + strne r1, [sp, #0x18] + ldreq r1, [r0, #0x18] + streq r1, [sp, #0x8] + ldreq r1, [r0, #0x1c] + streq r1, [sp, #0x18] + b _020BF040 +_020BEFA0: + ands r1, r2, #0x1 + beq _020BEFE8 + ldr r2, [r0, #0x24] + ldrh r1, [r0, #0x2c] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r1, r2, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x28] + ldrh r1, [r0, #0x2e] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r3, r2, r1 + mov r1, #0x1000 + str r3, [sp, #0x30] + str r1, [sp, #0x8] + str r1, [sp, #0x18] + b _020BF040 +_020BEFE8: + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x24] + ldrh r12, [r0, #0x2c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x28] + ldrh r12, [r0, #0x2e] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x30] + ldr r1, [r0, #0x18] + str r1, [sp, #0x8] + ldr r1, [r0, #0x1c] + str r1, [sp, #0x18] +_020BF040: + ldr r12, [r0, #0x30] + cmp r12, #0x1000 + beq _020BF078 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x2c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x8] + ldr r2, [r0, #0x30] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x2c] +_020BF078: + ldr r12, [r0, #0x34] + cmp r12, #0x1000 + beq _020BF0B0 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x30] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x18] + ldr r0, [r0, #0x34] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [sp, #0x30] +_020BF0B0: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0xe + bl FUN_020BB1C0 + add sp, sp, #0x3c + ldmia sp!, {pc} + .balign 4 +_020BF0CC: .word 0x00101710 +_020BF0D0: .word 0x00101910 + + arm_func_start FUN_020BF0D4 +FUN_020BF0D4: ; 0x020BF0D4 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + ands r0, r3, #0x4 + ldrb r4, [r2, #0x1] + ldrb r0, [r2, #0x2] + beq _020BF174 + ldr r2, [r5, #0x0] + ldr r1, _020BF2E0 ; =UNK_021CEF7C + orr r2, r2, #0x1 + str r2, [r5, #0x0] + ldr r3, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r3, r1, lsl #0x2 + and r2, r0, #0x1f + mov r6, #0x1 + mov r2, r6, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + beq _020BF148 + add r3, r3, #0xc4 + mov r2, r4, lsr #0x5 + ldr r1, [r3, r2, lsl #0x2] + and r0, r4, #0x1f + orr r0, r1, r6, lsl r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF148: + ldr r1, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mla r6, r0, r2, r1 + mla r1, r4, r2, r1 + mov r0, r6 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, r5, #0x10 + mov r2, #0x18 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} +_020BF174: + ldr r3, [r1, #0x0] + ldr r2, _020BF2E0 ; =UNK_021CEF7C + str r3, [r5, #0x4] + ldr r3, [r1, #0x4] + mov r7, r0, lsr #0x5 + str r3, [r5, #0x8] + ldr r3, [r1, #0x8] + and r8, r0, #0x1f + str r3, [r5, #0xc] + ldr r6, [r2, #0x0] + mov r3, #0x1 + add r2, r6, r7, lsl #0x2 + mov r7, r3, lsl r8 + ldr r2, [r2, #0xc4] + ands r2, r7, r2 + beq _020BF200 + ldr r3, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mov r0, r1 + mla r1, r4, r2, r3 + bl MIi_CpuCopy32 + ldr r0, _020BF2E0 ; =UNK_021CEF7C + mov r2, r4, lsr #0x5 + ldr r1, [r0, #0x0] + and r0, r4, #0x1f + add r3, r1, #0xc4 + mov r1, #0x1 + mvn r0, r1, lsl r0 + ldr r1, [r3, r2, lsl #0x2] + and r0, r1, r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF200: + mov r2, #0x18 + mul r12, r0, r2 + and r7, r4, #0x1f + ldr r0, _020BF2E4 ; =UNK_021CFD80 + add r6, r6, #0xc4 + mov lr, r4, lsr #0x5 + mvn r7, r3, lsl r7 + ldr r8, [r6, lr, lsl #0x2] + mul r3, r4, r2 + and r4, r8, r7 + str r4, [r6, lr, lsl #0x2] + ldr r7, [r1, #0x0] + ldr r4, [r0, r12] + ldr r6, _020BF2E8 ; =UNK_021CFD84 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r0, r3] + ldr r8, [r1, #0x4] + ldr r4, [r6, r12] + ldr r7, _020BF2EC ; =UNK_021CFD88 + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r6, r3] + ldr r8, [r1, #0x8] + ldr r4, [r7, r12] + ldr r6, _020BF2F0 ; =UNK_021CFD8C + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r7, r3] + ldr r7, [r1, #0xc] + ldr r4, [r6, r12] + ldr lr, _020BF2F4 ; =UNK_021CFD90 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r6, r3] + ldr r7, [r1, #0x10] + ldr r4, [lr, r12] + ldr r6, _020BF2F8 ; =UNK_021CFD94 + smull r8, r4, r7, r4 + add r0, r0, r12 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [lr, r3] + ldr lr, [r1, #0x14] + ldr r4, [r6, r12] + add r1, r5, #0x10 + smull r5, r4, lr, r4 + mov r5, r5, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, r3] + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BF2E0: .word UNK_021CEF7C +_020BF2E4: .word UNK_021CFD80 +_020BF2E8: .word UNK_021CFD84 +_020BF2EC: .word UNK_021CFD88 +_020BF2F0: .word UNK_021CFD8C +_020BF2F4: .word UNK_021CFD90 +_020BF2F8: .word UNK_021CFD94 + + arm_func_start FUN_020BF2FC +FUN_020BF2FC: ; 0x020BF2FC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r0, [r6, #0x0] + mov r5, #0x0 + ands r4, r0, #0x18 + bne _020BF328 + add r1, r6, #0x1c + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF328: + ldr r0, [r6, #0x0] + ands r0, r0, #0x4 + bne _020BF398 + cmp r4, #0x0 + movne r5, #0x1 + bne _020BF398 + ldr r2, [r6, #0x4c] + ldr r0, [r6, #0x10] + add r1, sp, #0x0 + smull r3, r0, r2, r0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x0] + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x14] + mov r0, #0x1c + smull r12, r2, r3, r2 + mov r3, r12, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x4] + ldr r12, [r6, #0x54] + ldr r3, [r6, #0x18] + mov r2, #0x3 + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + str r12, [sp, #0x8] + bl FUN_020BB1C0 +_020BF398: + ldr r0, [r6, #0x0] + ands r0, r0, #0x2 + bne _020BF3D4 + cmp r5, #0x0 + beq _020BF3C0 + add r1, r6, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BF3EC +_020BF3C0: + add r1, r6, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BF3EC +_020BF3D4: + cmp r5, #0x0 + beq _020BF3EC + add r1, r6, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF3EC: + cmp r4, #0x0 + bne _020BF404 + add r1, r6, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF404: + ldr r0, [r6, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x10 + ldmneia sp!, {r4-r6,pc} + add r1, r6, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF42C +FUN_020BF42C: ; 0x020BF42C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BF568 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BF56C ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BF570 ; =UNK_021067D0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BF4FC + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BF4FC: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BF54C + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BF54C: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BF568: .word 0x00101610 +_020BF56C: .word 0x00101810 +_020BF570: .word UNK_021067D0 + + arm_func_start FUN_020BF574 +FUN_020BF574: ; 0x020BF574 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BF598 +FUN_020BF598: ; 0x020BF598 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + ldr r3, [r1, #0x18] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x1000 + mul r2, r3, r2 + mov r2, r2, lsl #0x3 + str r2, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r1, [r1, #0x2e] + rsb r2, r2, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF5E8 +FUN_020BF5E8: ; 0x020BF5E8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + ldrsh r4, [r5, #0x22] + rsb r0, r2, #0x0 + rsb r1, r1, #0x0 + mov r0, r0, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r1, r1, lsl #0xb + smull r7, lr, r4, r0 + smull r12, r4, r3, r1 + subs r7, r7, r12 + sbc r3, lr, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF6C8 +FUN_020BF6C8: ; 0x020BF6C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r3, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + rsb r0, r3, #0x0 + rsb r1, r1, #0x0 + mov r2, r1, lsl #0xb + mov r11, r0, lsl #0xb + smull r1, r0, r7, r11 + smull r8, r7, r5, r2 + smlal r8, r7, r4, r11 + mov r4, r8, lsr #0x8 + orr r4, r4, r7, lsl #0x18 + smull r5, r2, r6, r2 + subs r1, r1, r5 + sbc r0, r0, r2 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + add r0, r1, r3, lsl #0xf + str r0, [r10, #0x30] + ldrh r0, [r9, #0x2e] + add r0, r4, r0, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BF7C8 +FUN_020BF7C8: ; 0x020BF7C8 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r1, #0x24] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x0 + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF810 +FUN_020BF810: ; 0x020BF810 + stmdb sp!, {r4-r6,lr} + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + ldrh r5, [r1, #0x2c] + ldr r12, [r1, #0x24] + ldrh r2, [r1, #0x2e] + mul lr, r12, r5 + rsb r12, r5, #0x0 + mov r12, r12, lsl #0xb + ldr r4, [r1, #0x18] + sub r12, r12, lr + smull lr, r12, r4, r12 + ldr r6, [r1, #0x28] + mov r4, lr, lsr #0x8 + orr r4, r4, r12, lsl #0x18 + add r4, r4, r5, lsl #0xf + str r4, [r0, #0x30] + mul r4, r6, r2 + rsb r5, r2, #0x0 + ldr r2, [r1, #0x1c] + add r4, r4, r5, lsl #0xb + smull lr, r12, r2, r4 + mov r2, lr, lsr #0x8 + ldrh r1, [r1, #0x2e] + orr r2, r2, r12, lsl #0x18 + add r1, r2, r1, lsl #0xf + str r1, [r0, #0x34] + str r3, [r0, #0x10] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF894 +FUN_020BF894: ; 0x020BF894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r7, [r5, #0x2e] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x24] + rsb r4, r2, #0x0 + mul r3, r1, r7 + rsb r1, r7, #0x0 + add r1, r3, r1, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r7, r4, lsl #0xb + mul r4, r0, r2 + sub r0, r7, r4 + ldrsh lr, [r5, #0x22] + smull r12, r4, r3, r1 + smull r7, r3, lr, r0 + subs r7, r7, r12 + sbc r3, r3, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF988 +FUN_020BF988: ; 0x020BF988 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r1, [r9, #0x2c] + ldrh r8, [r9, #0x2e] + ldr r2, [r9, #0x28] + rsb r0, r1, #0x0 + mul r3, r2, r8 + rsb r2, r8, #0x0 + add r8, r3, r2, lsl #0xb + mov r0, r0, lsl #0xb + smull r3, r2, r5, r8 + smull r8, r5, r6, r8 + ldr r11, [r9, #0x24] + mul r12, r11, r1 + sub r0, r0, r12 + smlal r3, r2, r4, r0 + smull r4, r0, r7, r0 + subs r4, r4, r8 + sbc r0, r0, r5 + mov r4, r4, lsr #0x8 + orr r4, r4, r0, lsl #0x18 + add r0, r4, r1, lsl #0xf + str r0, [r10, #0x30] + ldrh r1, [r9, #0x2e] + mov r0, r3, lsr #0x8 + orr r0, r0, r2, lsl #0x18 + add r0, r0, r1, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFA9C +FUN_020BFA9C: ; 0x020BFA9C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r3, #0x3 + ands r0, r0, #0x8 + ldrne r0, _020BFC1C ; =0x00101610 + mov r2, #0x2 + strne r0, [sp, #0x0] + ldreq r0, _020BFC20 ; =0x00101810 + mov r1, #0x1000 + streq r0, [sp, #0x0] + mov r0, #0x0 + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x2c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + strne r1, [r4, #0x1c] + ldrne r0, [r4, #0x1c] + strne r0, [r4, #0x18] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + movne r0, #0x1000 + strneh r0, [r4, #0x22] + movne r0, #0x0 + strneh r0, [r4, #0x20] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x28] + ldrne r0, [r4, #0x28] + strne r0, [r4, #0x24] + ldr r1, [r4, #0x0] + ldr r0, _020BFC24 ; =UNK_021067F0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BFBB0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BFBB0: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BFC00 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BFC00: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BFC1C: .word 0x00101610 +_020BFC20: .word 0x00101810 +_020BFC24: .word UNK_021067F0 + + arm_func_start FUN_020BFC28 +FUN_020BFC28: ; 0x020BFC28 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BFC4C +FUN_020BFC4C: ; 0x020BFC4C + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + str r3, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x1c] + rsb r2, r2, #0x0 + sub r1, r1, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r3, [r0, #0x10] + bx lr + + arm_func_start FUN_020BFC8C +FUN_020BFC8C: ; 0x020BFC8C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r1, [r5, #0x2c] + ldrsh r0, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrh r1, [r5, #0x2e] + ldrsh r0, [r5, #0x22] + rsb r1, r1, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFD38 +FUN_020BFD38: ; 0x020BFD38 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r3, [r9, #0x22] + ldr r0, [r9, #0x18] + ldrsh r7, [r9, #0x20] + ldr r5, [r9, #0x1c] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r10, #0x0] + smull r2, r1, r5, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r7 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + str r4, [r10, #0x14] + bl FX_GetDivResult + smull r2, r1, r5, r7 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + mov r1, r11 + bl FX_DivAsync + sub r0, r4, #0x1000 + ldrh r1, [r9, #0x2c] + mul r2, r1, r6 + mov r1, r2, lsl #0x4 + str r1, [r10, #0x30] + ldrh r1, [r9, #0x2e] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFE0C +FUN_020BFE0C: ; 0x020BFE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov lr, #0x0 + str lr, [r0, #0x4] + ldr r2, [r1, #0x24] + ldrh r3, [r1, #0x2c] + rsb r2, r2, #0x0 + ldr r12, [r1, #0x28] + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r1, [r1, #0x2e] + rsb r2, r12, #0x0 + rsb r1, r1, #0x0 + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str lr, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BFE68 +FUN_020BFE68: ; 0x020BFE68 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r12, [r1, #0x24] + ldr r3, [r1, #0x18] + ldr r4, [r1, #0x28] + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + ldrh lr, [r1, #0x2c] + rsb r3, r12, #0x0 + ldr r12, [r1, #0x1c] + rsb r4, r4, #0x0 + mul r3, lr, r3 + smull lr, r12, r4, r12 + mov r3, r3, lsl #0x4 + str r3, [r0, #0x30] + mov r4, lr, lsr #0xc + ldrh r3, [r1, #0x2e] + ldr r1, [r1, #0x1c] + orr r4, r4, r12, lsl #0x14 + add r1, r1, r4 + rsb r3, r3, #0x0 + sub r1, r1, #0x1000 + mul r1, r3, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BFEEC +FUN_020BFEEC: ; 0x020BFEEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh lr, [r5, #0x20] + ldr r4, [r5, #0x28] + ldrsh r0, [r5, #0x22] + ldr r12, [r5, #0x24] + smull r3, r2, r4, lr + smlal r3, r2, r12, r0 + smull r1, r0, r4, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r4, lr, r3 + smull r3, r2, r12, lr + subs r1, r3, r1 + sbc r0, r2, r0 + ldrh r2, [r5, #0x2c] + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + mul r0, r2, r4 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + add r0, r0, r1 + rsb r1, r2, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFFD4 +FUN_020BFFD4: ; 0x020BFFD4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrh r2, [r6, #0x2c] + ldrh r1, [r6, #0x2e] + mov r7, r0 + mov r10, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r10 + bl FX_DivAsync + ldrsh r3, [r6, #0x22] + ldr r0, [r6, #0x18] + ldrsh r9, [r6, #0x20] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + ldr r8, [r6, #0x1c] + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x0] + smull r2, r1, r8, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r1, lsl #0x14 + str r4, [r7, #0x14] + bl FX_GetDivResult + smull r2, r1, r8, r9 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x4] + mov r0, r10 + mov r1, r11 + bl FX_DivAsync + ldr lr, [r6, #0x1c] + ldrsh r2, [r6, #0x20] + ldr r8, [r6, #0x24] + ldr r0, [r6, #0x28] + smull r10, r9, r8, r2 + ldrh r1, [r6, #0x2c] + smull r3, r2, r0, r2 + ldrsh r12, [r6, #0x22] + str r1, [sp, #0x0] + mov r11, lr, asr #0x1f + smlal r3, r2, r8, r12 + smull r8, r12, r0, r12 + subs r8, r10, r8 + sbc r0, r9, r12 + mov r9, r8, lsr #0xc + mov r12, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r3, r2, asr #0xc + orr r12, r12, r2, lsl #0x14 + umull r10, r2, r9, lr + mla r2, r9, r11, r2 + mov r8, r0, asr #0xc + mla r2, r8, lr, r2 + ldr r1, [r6, #0x18] + mov r8, r10, lsr #0xc + orr r8, r8, r2, lsl #0x14 + add r2, r4, r8 + mov r0, r1, asr #0x1f + umull r8, r4, r12, r1 + mla r4, r12, r0, r4 + mla r4, r3, r1, r4 + mov r0, r8, lsr #0xc + orr r0, r0, r4, lsl #0x14 + sub r1, r5, r0 + ldr r0, [sp, #0x0] + sub r2, r2, #0x1000 + mul r1, r0, r1 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x30] + ldrh r0, [r6, #0x2e] + rsb r0, r0, #0x0 + mul r1, r0, r2 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x34] + bl FX_GetDivResult + rsb r1, r5, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C0130 +FUN_020C0130: ; 0x020C0130 + ldr ip, _020C0138 ; =FUN_020C187C + bx r12 + .balign 4 +_020C0138: .word FUN_020C187C + + arm_func_start FUN_020C013C +FUN_020C013C: ; 0x020C013C + stmdb sp!, {r4,lr} + bl FUN_020C18F8 + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0174 +FUN_020C0174: ; 0x020C0174 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020C0194 + mov r0, #0x40 + bl SND_SetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} +_020C0194: + bl SND_ResetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C01A0 +FUN_020C01A0: ; 0x020C01A0 + stmdb sp!, {r4,lr} + mov r4, #0x0 +_020C01A8: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020C01A8 + bl FUN_020C0BA0 + bl FUN_020C1D9C + bl FUN_020C3C88 + mov r0, #0x0 + bl SND_FlushCommand + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C01D0 +FUN_020C01D0: ; 0x020C01D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C0254 ; =UNK_021D1C94 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + mov r1, #0x1 + str r1, [r0, #0x0] + bl SND_Init + ldr ip, _020C0258 ; =FUN_020C013C + ldr r0, _020C025C ; =UNK_021D1C98 + mov r3, #0x0 + ldr r1, _020C0260 ; =UNK_021D1CA4 + ldr r2, _020C0264 ; =FUN_020C0130 + str r12, [r0, #0x0] + str r3, [r0, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x4] + bl PM_PrependPreSleepCallback + ldr r0, _020C0260 ; =UNK_021D1CA4 + bl PM_AppendPostSleepCallback + bl FUN_020C0270 + bl FUN_020C1E38 + bl FUN_020C0D20 + ldr r1, _020C0268 ; =UNK_021D1C8C + mvn r3, #0x0 + ldr r0, _020C026C ; =UNK_021D1C90 + mov r2, #0x1 + strb r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C0254: .word UNK_021D1C94 +_020C0258: .word FUN_020C013C +_020C025C: .word UNK_021D1C98 +_020C0260: .word UNK_021D1CA4 +_020C0264: .word FUN_020C0130 +_020C0268: .word UNK_021D1C8C +_020C026C: .word UNK_021D1C90 + + arm_func_start FUN_020C0270 +FUN_020C0270: ; 0x020C0270 + ldr r2, _020C0290 ; =UNK_021D1CB8 + mov r3, #0x0 + ldr r1, _020C0294 ; =UNK_021D1CB0 + ldr r0, _020C0298 ; =UNK_021D1CB4 + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + bx lr + .balign 4 +_020C0290: .word UNK_021D1CB8 +_020C0294: .word UNK_021D1CB0 +_020C0298: .word UNK_021D1CB4 + + arm_func_start FUN_020C029C +FUN_020C029C: ; 0x020C029C + ldr r1, _020C02B8 ; =UNK_021D1CB4 + mov r2, #0x1 + mvn r0, r2, lsl r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C02B8: .word UNK_021D1CB4 + + arm_func_start FUN_020C02BC +FUN_020C02BC: ; 0x020C02BC + ldr r0, _020C02FC ; =UNK_021D1CB4 + mov r3, #0x1 + ldr r2, [r0, #0x0] + mov r0, #0x0 +_020C02CC: + ands r1, r2, r3 + ldreq r1, _020C02FC ; =UNK_021D1CB4 + ldreq r2, [r1, #0x0] + orreq r2, r2, r3 + streq r2, [r1, #0x0] + bxeq lr + add r0, r0, #0x1 + cmp r0, #0x8 + mov r3, r3, lsl #0x1 + blt _020C02CC + mvn r0, #0x0 + bx lr + .balign 4 +_020C02FC: .word UNK_021D1CB4 + + arm_func_start FUN_020C0300 +FUN_020C0300: ; 0x020C0300 + ldr r1, _020C0318 ; =UNK_021D1CB0 + mvn r0, r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C0318: .word UNK_021D1CB0 + + arm_func_start FUN_020C031C +FUN_020C031C: + ldr r1, _020C033C ; =UNK_021D1CB0 + ldr r2, [r1, #0x0] + ands r3, r0, r2 + movne r0, #0x0 + orreq r0, r2, r0 + streq r0, [r1, #0x0] + moveq r0, #0x1 + bx lr + .balign 4 +_020C033C: .word UNK_021D1CB0 + + arm_func_start FUN_020C0340 +FUN_020C0340: + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,pc} + mov r1, #0x0 + bl SND_UnlockChannel + ldr r0, _020C036C ; =UNK_021D1CB8 + mvn r1, r4 + ldr r2, [r0, #0x0] + and r1, r2, r1 + str r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C036C: .word UNK_021D1CB8 + + arm_func_start FUN_020C0370 +FUN_020C0370: + stmdb sp!, {r4,lr} + movs r4, r0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + ldr r1, _020C03B4 ; =UNK_021D1CB8 + ldr r1, [r1, #0x0] + ands r1, r4, r1 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + mov r1, #0x0 + bl SND_LockChannel + ldr r1, _020C03B4 ; =UNK_021D1CB8 + mov r0, #0x1 + ldr r2, [r1, #0x0] + orr r2, r2, r4 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C03B4: .word UNK_021D1CB8 + + arm_func_start FUN_020C03B8 +FUN_020C03B8: ; 0x020C03B8 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020C03F8 + ldr r0, [r4, #0x10] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + mov r0, #0x1 + str r0, [r4, #0xc] +_020C03F8: + bl SND_GetChannelStatus + ldr r1, [r4, #0x0] + mov r2, #0x1 + mov r1, r2, lsl r1 + ands r0, r1, r0 + movne r0, r2 + moveq r0, #0x0 + streq r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C041C +FUN_020C041C: ; 0x020C041C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + bl SND_SetChannelPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C044C +FUN_020C044C: ; 0x020C044C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r2, [r5, #0x4] + ldr r0, _020C04D4 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + mov r2, r4 + mov r3, r4, asr #0x1f + bl _ll_udiv + mov r2, #0x0 + mov r3, r0 + mov r0, #0x10 + cmp r1, r2 + cmpeq r3, r0 + movcc r3, r0 + blo _020C04B8 + ldr r0, _020C04D8 ; =0x0000FFFF + cmp r1, r2 + cmpeq r3, r0 + movhi r3, r0 +_020C04B8: + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r0, r1, lsl r0 + mov r1, r3 + bl SND_SetChannelTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C04D4: .word 0xD87F8000 +_020C04D8: .word 0x0000FFFF + + arm_func_start FUN_020C04DC +FUN_020C04DC: ; 0x020C04DC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, #0x0 + bl SND_SetChannelVolume + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0510 +FUN_020C0510: ; 0x020C0510 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r1, #0x0 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StopTimer + mov r0, #0x0 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C054C +FUN_020C054C: ; 0x020C054C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + movs r8, r1 + mov r9, r0 + mov r7, r2 + mov r6, r3 + beq _020C0584 + cmp r8, #0x1 + ldreq r0, [sp, #0x3c] + ldreq r1, [sp, #0x38] + moveq r0, r0, asr #0x1 + moveq r5, r1, asr #0x1 + subeq r4, r0, r1, asr #0x1 + b _020C0598 +_020C0584: + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + mov r0, r0, asr #0x2 + mov r5, r1, asr #0x2 + sub r4, r0, r1, asr #0x2 +_020C0598: + ldr r2, [sp, #0x40] + ldr r0, _020C0668 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + ldr r2, [sp, #0x48] + mov r3, r2, asr #0x1f + bl _ll_udiv + mov r3, #0x0 + mov r2, #0x10 + cmp r1, r3 + cmpeq r0, r2 + movcc r0, r2 + blo _020C05E0 + ldr r2, _020C066C ; =0x0000FFFF + cmp r1, r3 + cmpeq r0, r2 + movhi r0, r2 +_020C05E0: + str r5, [sp, #0x0] + ldr r1, [sp, #0x44] + str r4, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + cmp r6, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x4c] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r9, #0x0] + moveq r3, #0x2 + mov r1, r8 + mov r2, r7 + bl SND_SetupChannelPcm + mov r1, #0x0 + ldr r0, [r9, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r9, #0x8] + mov r0, #0x0 + str r0, [r9, #0xc] + bl SND_GetCurrentCommandTag + str r0, [r9, #0x10] + ldr r1, [sp, #0x40] + mov r0, #0x1 + str r1, [r9, #0x4] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C0668: .word 0xD87F8000 +_020C066C: .word 0x0000FFFF + + arm_func_start FUN_020C0670 +FUN_020C0670: ; 0x020C0670 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr ip, _020C0684 ; =FUN_020C0340 + mov r0, r1, lsl r0 + bx r12 + .balign 4 +_020C0684: .word FUN_020C0340 + + arm_func_start FUN_020C0688 +FUN_020C0688: ; 0x020C0688 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + mov r0, r0, lsl r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x14 + mul r0, r4, r0 + ldr r2, _020C06C8 ; =UNK_021D1CBC + mov r1, #0x0 + str r4, [r2, r0] + add r0, r2, r0 + str r1, [r0, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020C06C8: .word UNK_021D1CBC + + arm_func_start FUN_020C06CC +FUN_020C06CC: ; 0x020C06CC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r4, [r6, #0x4] + mov r5, r1 + cmp r4, #0x0 + beq _020C06F8 + mov r0, r4 + mov r1, r6 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r6, #0x4] +_020C06F8: + ldr r0, _020C0728 ; =UNK_021D1E08 + mov r1, r6 + bl FUN_020ADAB0 + strb r5, [r6, #0x3d] + cmp r4, #0x0 + beq _020C071C + mov r0, r4 + mov r1, r6 + bl FUN_020C0910 +_020C071C: + mov r0, r6 + bl FUN_020C08B4 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0728: .word UNK_021D1E08 + + arm_func_start FUN_020C072C +FUN_020C072C: ; 0x020C072C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C2A7C + ldr r1, [r4, #0xc] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x8] + ldmneia sp!, {r4,pc} + ldr r1, [r4, #0x10] + ldr r2, _020C0778 ; =UNK_021D2254 + mov r0, #0x24 + mla r0, r1, r0, r2 + mov r1, r4 + add r0, r0, #0xc + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + .balign 4 +_020C0778: .word UNK_021D2254 + + arm_func_start FUN_020C077C +FUN_020C077C: ; 0x020C077C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + strne r0, [r4, #0x0] + ldr r5, [r4, #0x4] + mov r1, r4 + mov r0, r5 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020C07D8 + add r0, r5, #0xc + bl FUN_020ADBE8 + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r1, [r0, #0xc] + str r1, [r4, #0x8] +_020C07D8: + ldr r0, _020C0800 ; =UNK_021D1E08 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, _020C0804 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADBE8 + mov r0, #0x0 + strb r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0800: .word UNK_021D1E08 +_020C0804: .word UNK_021D1DFC + + arm_func_start FUN_020C0808 +FUN_020C0808: ; 0x020C0808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + bne _020C0850 + ldr r0, _020C0878 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + mov r4, r0 + ldrb r1, [r4, #0x3d] + cmp r5, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} + bl FUN_020C087C +_020C0850: + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADAB0 + mov r0, r4 + strb r5, [r4, #0x3d] + bl FUN_020C08B4 + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0874: .word UNK_021D1DFC +_020C0878: .word UNK_021D1E08 + + arm_func_start FUN_020C087C +FUN_020C087C: ; 0x020C087C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrb r0, [r4, #0x2c] + cmp r0, #0x2 + bne _020C089C + ldrb r0, [r4, #0x3c] + ldr r1, _020C08B0 ; =0xFFFFFD2D + bl SND_SetPlayerVolume +_020C089C: + ldrb r0, [r4, #0x3c] + bl SND_StopSeq + mov r0, r4 + bl FUN_020C077C + ldmia sp!, {r4,pc} + .balign 4 +_020C08B0: .word 0xFFFFFD2D + + arm_func_start FUN_020C08B4 +FUN_020C08B4: ; 0x020C08B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C090C ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C08F8 + ldr r4, _020C090C ; =UNK_021D1E08 +_020C08D8: + ldrb r2, [r5, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C08F8 + mov r0, r4 + bl FUN_020ADA98 + movs r1, r0 + bne _020C08D8 +_020C08F8: + ldr r0, _020C090C ; =UNK_021D1E08 + mov r2, r5 + bl FUN_020ADB18 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C090C: .word UNK_021D1E08 + + arm_func_start FUN_020C0910 +FUN_020C0910: ; 0x020C0910 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, #0x0 + mov r5, r0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C0950 +_020C0930: + ldrb r2, [r4, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C0950 + mov r0, r5 + bl FUN_020ADA98 + movs r1, r0 + bne _020C0930 +_020C0950: + mov r0, r5 + mov r2, r4 + bl FUN_020ADB18 + str r5, [r4, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0968 +FUN_020C0968: ; 0x020C0968 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x0 + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2f] + strh r0, [r4, #0x34] + strh r0, [r4, #0x3e] + mov r1, #0x7f + strb r1, [r4, #0x40] + add r0, r4, #0x1c + strb r1, [r4, #0x41] + bl FUN_020C3E6C + add r0, r4, #0x1c + mov r1, #0x7f00 + mov r2, #0x1 + bl FUN_020C3E40 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C09B0 +FUN_020C09B0: ; 0x020C09B0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C0A00 ; =UNK_021D2254 + mov r2, #0x24 + mla r5, r0, r2, r3 + mov r6, r1 + add r0, r5, #0xc + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r4 + add r0, r5, #0xc + bl FUN_020ADAB0 + str r6, [r4, #0xc] + str r4, [r6, #0x8] + ldr r0, [r4, #0x8] + bl FUN_020C29C0 + ldr r0, [r4, #0x8] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0A00: .word UNK_021D2254 + + arm_func_start FUN_020C0A04 +FUN_020C0A04: ; 0x020C0A04 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x2e] + cmp r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x3c] + bl SND_PauseSeq + strb r4, [r5, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0A40 +FUN_020C0A40: ; 0x020C0A40 + stmdb sp!, {r4,lr} + movs r4, r0 + mov r2, r1 + ldmeqia sp!, {r4,pc} + ldrb r1, [r4, #0x2c] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C0A6C + bl FUN_020C087C + ldmia sp!, {r4,pc} +_020C0A6C: + add r0, r4, #0x1c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, r4 + mov r1, #0x0 + bl FUN_020C06CC + mov r0, #0x2 + strb r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0A90 +FUN_020C0A90: ; 0x020C0A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3c] + ldr r4, [r5, #0x4] + bl SND_PrepareSeq + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + beq _020C0AC0 + ldrb r0, [r5, #0x3c] + ldr r1, _020C0AE4 ; =0x0000FFFF + bl SND_SetTrackAllocatableChannel +_020C0AC0: + mov r0, r5 + bl FUN_020C0968 + bl SND_GetCurrentCommandTag + str r0, [r5, #0x30] + mov r0, #0x1 + strb r0, [r5, #0x2f] + strb r0, [r5, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0AE4: .word 0x0000FFFF + + arm_func_start thunk_FUN_020c077c +thunk_FUN_020c077c: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =FUN_020C077C + bx r12 + .balign 4 +_020C0AF0: .word FUN_020C077C + + arm_func_start FUN_020C0AF4 +FUN_020C0AF4: ; 0x020C0AF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020C0B9C ; =UNK_021D2254 + mov r3, #0x24 + mov r4, r0 + ldr r5, [r4, #0x0] + mla r6, r1, r3, r12 + mov r7, r2 + cmp r5, #0x0 + beq _020C0B20 + bl FUN_020C0F68 +_020C0B20: + ldrh r1, [r6, #0x8] + ldr r0, [r6, #0x18] + cmp r1, r0 + blo _020C0B64 + mov r0, r6 + mov r1, #0x0 + bl FUN_020ADA98 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldrb r1, [r0, #0x3d] + cmp r7, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r7,pc} + bl FUN_020C087C +_020C0B64: + mov r0, r7 + bl FUN_020C0808 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r0, r6 + mov r1, r5 + bl FUN_020C0910 + str r4, [r5, #0x0] + mov r0, r5 + str r5, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C0B9C: .word UNK_021D2254 + + arm_func_start FUN_020C0BA0 +FUN_020C0BA0: ; 0x020C0BA0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + bl SND_GetPlayerStatus + str r0, [sp, #0x0] + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r10, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + mov r0, #0x8000 + rsb r0, r0, #0x0 + ldr r4, _020C0D18 ; =UNK_02103BAC + str r0, [sp, #0x4] + mov r5, #0x1 + mov r11, #0x0 +_020C0BE0: + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, r10 + bl FUN_020ADA98 + ldrb r1, [r10, #0x2d] + mov r9, r0 + cmp r1, #0x0 + bne _020C0C0C + ldr r0, [r10, #0x30] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + strneb r5, [r10, #0x2d] +_020C0C0C: + ldrb r0, [r10, #0x2d] + cmp r0, #0x0 + beq _020C0C38 + ldrb r0, [r10, #0x3c] + mov r1, r5, lsl r0 + ldr r0, [sp, #0x0] + ands r0, r0, r1 + bne _020C0C38 + mov r0, r10 + bl FUN_020C077C + b _020C0D00 +_020C0C38: + add r0, r10, #0x1c + bl FUN_020C3DF4 + ldr r0, [r10, #0x4] + ldrb r2, [r10, #0x41] + ldrb r1, [r10, #0x40] + ldrb r0, [r0, #0x20] + mov r3, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + add r0, r10, #0x1c + ldrsh r8, [r4, r3] + ldrsh r7, [r4, r2] + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r2, r0, lsl #0x1 + add r1, r7, r8 + mov r0, #0x8000 + ldrsh r2, [r4, r2] + add r1, r6, r1 + rsb r0, r0, #0x0 + add r6, r2, r1 + cmp r6, r0 + ldrlt r6, [sp, #0x4] + blt _020C0CA8 + ldr r0, _020C0D1C ; =0x00007FFF + cmp r6, r0 + movgt r6, r0 +_020C0CA8: + ldrsh r0, [r10, #0x3e] + cmp r6, r0 + beq _020C0CC4 + ldrb r0, [r10, #0x3c] + mov r1, r6 + bl SND_SetPlayerVolume + strh r6, [r10, #0x3e] +_020C0CC4: + ldrb r0, [r10, #0x2c] + cmp r0, #0x2 + bne _020C0CE8 + add r0, r10, #0x1c + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C0CE8 + mov r0, r10 + bl FUN_020C087C +_020C0CE8: + ldrb r0, [r10, #0x2f] + cmp r0, #0x0 + beq _020C0D00 + ldrb r0, [r10, #0x3c] + bl SND_StartPreparedSeq + strb r11, [r10, #0x2f] +_020C0D00: + mov r10, r9 + cmp r9, #0x0 + bne _020C0BE0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C0D14: .word UNK_021D1E08 +_020C0D18: .word UNK_02103BAC +_020C0D1C: .word 0x00007FFF + + arm_func_start FUN_020C0D20 +FUN_020C0D20: ; 0x020C0D20 + stmdb sp!, {r4-r10,lr} + ldr r0, _020C0DC4 ; =UNK_021D1E08 + mov r1, #0x14 + bl FUN_020ADC74 + ldr r0, _020C0DC8 ; =UNK_021D1DFC + mov r1, #0x14 + bl FUN_020ADC74 + ldr r6, _020C0DCC ; =UNK_021D1E14 + mov r7, #0x0 + ldr r4, _020C0DC8 ; =UNK_021D1DFC + mov r5, r7 +_020C0D4C: + strb r5, [r6, #0x2c] + mov r0, r4 + mov r1, r6 + strb r7, [r6, #0x3c] + bl FUN_020ADBE8 + add r7, r7, #0x1 + cmp r7, #0x10 + add r6, r6, #0x44 + blt _020C0D4C + ldr sl, _020C0DD0 ; =UNK_021D2254 + mov r9, #0x0 + mov r7, r9 + mov r4, r9 + mov r8, #0xc + mov r6, #0x7f + mov r5, #0x1 +_020C0D8C: + mov r0, r10 + mov r1, r8 + bl FUN_020ADC74 + mov r1, r7 + add r0, r10, #0xc + bl FUN_020ADC74 + strb r6, [r10, #0x20] + str r5, [r10, #0x18] + add r9, r9, #0x1 + str r4, [r10, #0x1c] + cmp r9, #0x20 + add r10, r10, #0x24 + blt _020C0D8C + ldmia sp!, {r4-r10,pc} + .balign 4 +_020C0DC4: .word UNK_021D1E08 +_020C0DC8: .word UNK_021D1DFC +_020C0DCC: .word UNK_021D1E14 +_020C0DD0: .word UNK_021D2254 + + arm_func_start FUN_020C0DD4 +FUN_020C0DD4: ; 0x020C0DD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x2d] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x3c] + bl SND_GetPlayerTickCounter + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0E14 +FUN_020C0E14: ; 0x020C0E14 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + mvneq r0, #0x0 + bxeq lr + ldrh r0, [r1, #0x34] + cmp r0, #0x1 + mvnne r0, #0x0 + ldreqh r0, [r1, #0x38] + bx lr + + arm_func_start FUN_020C0E38 +FUN_020C0E38: ; 0x020C0E38 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + bxeq lr + mov r3, #0x2 + strh r3, [r12, #0x34] + ldr r3, [r0, #0x0] + strh r1, [r3, #0x38] + ldr r0, [r0, #0x0] + strh r2, [r0, #0x3a] + bx lr + + arm_func_start FUN_020C0E60 +FUN_020C0E60: ; 0x020C0E60 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + movne r2, #0x1 + strneh r2, [r3, #0x34] + ldrne r0, [r0, #0x0] + strneh r1, [r0, #0x38] + bx lr + + arm_func_start FUN_020C0E7C +FUN_020C0E7C: ; 0x020C0E7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EA4 +FUN_020C0EA4: ; 0x020C0EA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPitch + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0ECC +FUN_020C0ECC: ; 0x020C0ECC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetPlayerChannelPriority + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EF4 +FUN_020C0EF4: ; 0x020C0EF4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r3, #0x2c] + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r0, r3, #0x1c + mov r1, r1, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0F30 +FUN_020C0F30: ; 0x020C0F30 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x40] + bx lr + + arm_func_start FUN_020C0F40 +FUN_020C0F40: ; 0x020C0F40 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x41] + bx lr + + arm_func_start FUN_020C0F50 +FUN_020C0F50: ; 0x020C0F50 + mov r1, #0x24 + mul r1, r0, r1 + ldr r0, _020C0F64 ; =UNK_021D225C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020C0F64: .word UNK_021D225C + + arm_func_start FUN_020C0F68 +FUN_020C0F68: ; 0x020C0F68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F80 +FUN_020C0F80: ; 0x020C0F80 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F8C +FUN_020C0F8C: ; 0x020C0F8C + ldr ip, _020C0F98 ; =FUN_020C0A04 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C0F98: .word FUN_020C0A04 + + arm_func_start FUN_020C0F9C +FUN_020C0F9C: ; 0x020C0F9C + stmdb sp!, {r4-r6,lr} + ldr r4, _020C0FD8 ; =UNK_021D1E14 + mov r6, r0 + mov r5, #0x0 +_020C0FAC: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C0FC4 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C0FC4: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FAC + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0FD8: .word UNK_021D1E14 + + arm_func_start FUN_020C0FDC +FUN_020C0FDC: ; 0x020C0FDC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C103C ; =UNK_021D1E14 + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020C0FF4: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C1024 + ldrh r0, [r4, #0x34] + cmp r0, #0x1 + bne _020C1024 + ldrh r0, [r4, #0x38] + cmp r0, r7 + bne _020C1024 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C1024: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C103C: .word UNK_021D1E14 + + arm_func_start FUN_020C1040 +FUN_020C1040: ; 0x020C1040 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _020C109C ; =UNK_021D2254 + mov r2, #0x24 + mla r4, r0, r2, r3 + ldr r5, _020C10A0 ; =UNK_021D1E14 + mov r7, r1 + mov r6, #0x0 +_020C1060: + ldrb r0, [r5, #0x2c] + cmp r0, #0x0 + beq _020C1084 + ldr r0, [r5, #0x4] + cmp r0, r4 + bne _020C1084 + mov r0, r5 + mov r1, r7 + bl FUN_020C0A40 +_020C1084: + add r6, r6, #0x1 + cmp r6, #0x10 + add r5, r5, #0x44 + blt _020C1060 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C109C: .word UNK_021D2254 +_020C10A0: .word UNK_021D1E14 + + arm_func_start FUN_020C10A4 +FUN_020C10A4: ; 0x020C10A4 + ldr ip, _020C10B0 ; =FUN_020C0A40 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C10B0: .word FUN_020C0A40 + + arm_func_start FUN_020C10B4 +FUN_020C10B4: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r2 + mov r6, r0 + mov r0, r1 + mov r3, #0x0 + ldr r2, _020C1140 ; =FUN_020C072C + add r1, r5, #0x14 + str r3, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r2, #0x0 + str r2, [r4, #0xc] + str r6, [r4, #0x10] + mov r1, r5 + add r0, r4, #0x14 + str r2, [r4, #0x8] + bl FUN_020C2A94 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020C1144 ; =UNK_021D2254 + mov r1, #0x24 + mla r2, r6, r1, r2 + str r0, [r4, #0x8] + mov r1, r4 + add r0, r2, #0xc + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C1140: .word FUN_020C072C +_020C1144: .word UNK_021D2254 + + arm_func_start FUN_020C1148 +FUN_020C1148: ; 0x020C1148 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C115C ; =UNK_021D2270 + str r1, [r0, r2] + bx lr + .balign 4 +_020C115C: .word UNK_021D2270 + + arm_func_start FUN_020C1160 +FUN_020C1160: ; 0x020C1160 + mov r2, #0x24 + mul r2, r0, r2 + mov r0, r1, lsl #0x10 + ldr r1, _020C117C ; =UNK_021D226C + mov r0, r0, lsr #0x10 + str r0, [r1, r2] + bx lr + .balign 4 +_020C117C: .word UNK_021D226C + + arm_func_start FUN_020C1180 +FUN_020C1180: ; 0x020C1180 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C1194 ; =UNK_021D2274 + strb r1, [r0, r2] + bx lr + .balign 4 +_020C1194: .word UNK_021D2274 + + arm_func_start FUN_020C1198 +FUN_020C1198: ; 0x020C1198 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmeqia sp!, {r4-r6,pc} + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020C11E8 + mov r5, #0x1 +_020C11C0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r4 + mov r1, r5 + bl FUN_020C1254 + mov r0, r6 + bl OS_RestoreInterrupts + ldr r0, [r4, #0x38] + cmp r0, #0x0 + bne _020C11C0 +_020C11E8: + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C1208 +FUN_020C1208: ; 0x020C1208 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1e + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + ldr r2, [r0, #0x40] + mov r3, #0x1 + mov r1, #0x0 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x44] + mov r3, r1 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C1254 +FUN_020C1254: ; 0x020C1254 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl _u32_div_f + ldr r1, [r5, #0x48] + ldr r2, [r5, #0x38] + mov r3, r0 + mul lr, r3, r2 + cmp r1, #0x0 + mov r12, #0x0 + ble _020C12B8 + ldr r2, _020C1300 ; =UNK_021D2724 + ldr r0, _020C1304 ; =UNK_021D26E4 +_020C1294: + add r1, r5, r12 + ldrb r1, [r1, #0x4c] + ldr r1, [r2, r1, lsl #0x3] + add r1, r1, lr + str r1, [r0, r12, lsl #0x2] + ldr r1, [r5, #0x48] + add r12, r12, #0x1 + cmp r12, r1 + blt _020C1294 +_020C12B8: + ldr r0, [r5, #0x20] + ldr r2, _020C1304 ; =UNK_021D26E4 + str r0, [sp, #0x0] + ldr r12, [r5, #0x34] + mov r0, r4 + str r12, [sp, #0x4] + ldr r4, [r5, #0x30] + blx r4 + ldr r0, [r5, #0x38] + add r0, r0, #0x1 + str r0, [r5, #0x38] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x2c] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r5, #0x38] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1300: .word UNK_021D2724 +_020C1304: .word UNK_021D26E4 + + arm_func_start FUN_020C1308 +FUN_020C1308: ; 0x020C1308 + ldr ip, _020C1314 ; =FUN_020C1254 + mov r1, #0x1 + bx r12 + .balign 4 +_020C1314: .word FUN_020C1254 + + arm_func_start FUN_020C1318 +FUN_020C1318: ; 0x020C1318 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + bl FUN_020C029C + ldr r0, _020C1344 ; =UNK_021D26D8 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C1344: .word UNK_021D26D8 + + arm_func_start FUN_020C1348 +FUN_020C1348: ; 0x020C1348 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C13B4 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StopTimer + add r0, r4, #0x8 + bl PM_DeletePreSleepCallback + add r0, r4, #0x14 + bl PM_DeletePostSleepCallback + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc +_020C13B4: + mov r0, r4 + bl FUN_020C1318 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C13C4 +FUN_020C13C4: ; 0x020C13C4 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + str r1, [r7, #0x3c] + ldr r0, [r7, #0x48] + mov r5, #0x0 + cmp r0, #0x0 + ldmleia sp!, {r4-r8,pc} + ldr r4, _020C142C ; =UNK_021D2724 + mov r8, #0x1 +_020C13E8: + add r0, r7, r5 + ldrb r6, [r0, #0x4c] + ldr r1, [r7, #0x3c] + add r0, r4, r6, lsl #0x3 + ldr r0, [r0, #0x4] + add r0, r1, r0 + bl SND_CalcChannelVolume + mov r2, r0 + mov r0, r8, lsl r6 + and r1, r2, #0xff + mov r2, r2, asr #0x8 + bl SND_SetChannelVolume + ldr r0, [r7, #0x48] + add r5, r5, #0x1 + cmp r5, r0 + blt _020C13E8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020C142C: .word UNK_021D2724 + + arm_func_start FUN_020C1430 +FUN_020C1430: ; 0x020C1430 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020C1348 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C1458 +FUN_020C1458: ; 0x020C1458 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmneia sp!, {r4,pc} + add r0, r4, #0x8 + bl PM_PrependPreSleepCallback + add r0, r4, #0x14 + bl PM_AppendPostSleepCallback + ldr r0, [r4, #0x24] + orr r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C14AC +FUN_020C14AC: ; 0x020C14AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + mov r10, r0 + ldr r4, [r10, #0x24] + mov r9, r1 + mov r1, r4, lsl #0x1f + movs r1, r1, asr #0x1f + ldr r1, [sp, #0x4c] + str r2, [sp, #0x18] + mov r4, r3 + str r1, [sp, #0x4c] + beq _020C14E0 + bl FUN_020C1430 +_020C14E0: + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x48] + mov r0, r0, lsl #0x5 + mul r1, r2, r0 + mov r0, r4 + bl _u32_div_f + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x48] + mul r1, r0, r1 + mov r0, r1, lsl #0x5 + str r0, [r10, #0x28] + ldr r0, [r10, #0x28] + cmp r9, #0x1 + moveq r0, r0, lsr #0x1 + mul r0, r2, r0 + ldr r1, [sp, #0x4c] + bl _u32_div_f + str r0, [sp, #0x1c] + bl FUN_020C02BC + str r0, [r10, #0x40] + ldr r0, [r10, #0x40] + cmp r0, #0x0 + addlt sp, sp, #0x24 + movlt r0, #0x0 + ldmltia sp!, {r4-r11,pc} + ldr r0, [r10, #0x48] + mov r8, #0x0 + cmp r0, #0x0 + ble _020C15D4 + ldr r0, [sp, #0x48] + mov r7, r0, lsl #0x5 + ldr r6, _020C1668 ; =UNK_021D2724 + mov r5, r8 + mov r4, #0x7f + mov r11, #0x40 + mov r0, #0x1 + str r0, [sp, #0x20] +_020C1574: + ldr r2, [r10, #0x28] + ldr r1, [sp, #0x18] + add r0, r10, r8 + mla r1, r2, r8, r1 + ldrb r0, [r0, #0x4c] + ldr r3, [sp, #0x20] + str r1, [r6, r0, lsl #0x3] + add r1, r6, r0, lsl #0x3 + str r5, [r1, #0x4] + str r5, [sp, #0x0] + ldr r2, [r10, #0x28] + mov r1, r9 + mov r2, r2, lsr #0x2 + str r2, [sp, #0x4] + str r4, [sp, #0x8] + str r5, [sp, #0xc] + str r7, [sp, #0x10] + str r11, [sp, #0x14] + ldr r2, [r6, r0, lsl #0x3] + bl SND_SetupChannelPcm + ldr r0, [r10, #0x48] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C1574 +_020C15D4: + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [r10, #0x40] + ldr r3, _020C166C ; =FUN_020C1308 + mov r2, r1 + bl SND_SetupAlarm + ldr r0, _020C1670 ; =UNK_021D26D8 + mov r1, r10 + bl FUN_020ADBE8 + ldr r0, [sp, #0x4c] + str r9, [r10, #0x20] + str r0, [r10, #0x2c] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + str r1, [r10, #0x30] + str r0, [r10, #0x34] + mov r0, #0x0 + str r0, [r10, #0x38] + str r0, [r10, #0x3c] + ldr r0, [r10, #0x24] + bic r0, r0, #0x1 + orr r0, r0, #0x1 + str r0, [r10, #0x24] + bl OS_DisableInterrupts + mov r4, r0 + mov r2, #0x1 + mov r0, r10 + mov r1, #0x0 + str r2, [r10, #0x2c] + bl FUN_020C1254 + ldr r1, [sp, #0x4c] + mov r0, r4 + str r1, [r10, #0x2c] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1668: .word UNK_021D2724 +_020C166C: .word FUN_020C1308 +_020C1670: .word UNK_021D26D8 + + arm_func_start FUN_020C1674 +FUN_020C1674: ; 0x020C1674 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C0340 + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C169C +FUN_020C169C: ; 0x020C169C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, #0x0 + mov r6, r0 + mov r12, r4 + cmp r5, #0x0 + ble _020C16DC + mov r1, #0x1 +_020C16BC: + ldrb r3, [r2, r12] + add r0, r6, r12 + strb r3, [r0, #0x4c] + ldrb r0, [r2, r12] + add r12, r12, #0x1 + cmp r12, r5 + orr r4, r4, r1, lsl r0 + blt _020C16BC +_020C16DC: + mov r0, r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + strne r5, [r6, #0x48] + strne r4, [r6, #0x44] + movne r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C16FC +FUN_020C16FC: ; 0x020C16FC + stmdb sp!, {r4,lr} + ldr r1, _020C176C ; =UNK_021D26D4 + mov r4, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020C172C + ldr r0, _020C1770 ; =UNK_021D26D8 + mov r1, #0x0 + bl FUN_020ADC74 + ldr r0, _020C176C ; =UNK_021D26D4 + mov r1, #0x1 + str r1, [r0, #0x0] +_020C172C: + ldr r1, _020C1774 ; =FUN_020C1208 + ldr r0, _020C1778 ; =FUN_020C1198 + str r1, [r4, #0x8] + str r4, [r4, #0xc] + str r0, [r4, #0x14] + str r4, [r4, #0x18] + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C176C: .word UNK_021D26D4 +_020C1770: .word UNK_021D26D8 +_020C1774: .word FUN_020C1208 +_020C1778: .word FUN_020C1198 + + arm_func_start FUN_020C177C +FUN_020C177C: ; 0x020C177C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x18] + ldr r0, [r7, #0x1c] + ldr r1, _020C186C ; =UNK_021D27A4 + mul r0, r4, r0 + ldr r3, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r1, #0x0] + add r6, r3, r0 + cmp r1, #0x0 + add r5, r2, r0 + beq _020C180C + ldr r2, _020C1870 ; =UNK_021D27A8 + mov r1, #0x14 + ldr r2, [r2, #0x0] + ldr r3, _020C1874 ; =UNK_021D2820 + mul r1, r2, r1 + str r7, [r3, r1] + add r1, r3, r1 + str r4, [r1, #0x4] + str r0, [r1, #0x8] + str r6, [r1, #0xc] + ldr r0, _020C1878 ; =UNK_021D27AC + mov r2, #0x0 + str r5, [r1, #0x10] + bl OS_SendMessage + ldr r0, _020C1870 ; =UNK_021D27A8 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + movge r1, #0x0 + strge r1, [r0, #0x0] + b _020C1844 +_020C180C: + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + mov r0, r5 + mov r1, r4 + bl DC_InvalidateRange + ldr r1, [r7, #0x38] + mov r0, r6 + str r1, [sp, #0x0] + ldr r3, [r7, #0x8] + ldr r6, [r7, #0x34] + mov r1, r5 + mov r2, r4 + blx r6 +_020C1844: + ldr r0, [r7, #0x1c] + add r0, r0, #0x1 + str r0, [r7, #0x1c] + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x30] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r7, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C186C: .word UNK_021D27A4 +_020C1870: .word UNK_021D27A8 +_020C1874: .word UNK_021D2820 +_020C1878: .word UNK_021D27AC + + arm_func_start FUN_020C187C +FUN_020C187C: ; 0x020C187C + stmdb sp!, {r4,lr} + ldr r4, _020C18F4 ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + bl MIi_CpuClear32 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + mov r0, #0x0 + bl MIi_CpuClear32 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + movlt r2, #0x0 + bl SND_StartTimer + ldmia sp!, {r4,pc} + .balign 4 +_020C18F4: .word UNK_021D27CC + + arm_func_start FUN_020C18F8 +FUN_020C18F8: + stmdb sp!, {r4,lr} + ldr r3, _020C194C ; =UNK_021D27CC + ldr r0, [r3, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [r3, #0x2c] + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r3, #0x24] + ldr r1, [r3, #0x28] + movlt r2, #0x0 + mov r3, #0x0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + .balign 4 +_020C194C: .word UNK_021D27CC + + arm_func_start FUN_020C1950 +FUN_020C1950: ; 0x020C1950 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C1A3C ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r7, #0x1 + movlt r7, #0x0 + cmp r7, #0x0 + movne r0, #0x1 + movne r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + moveq r2, #0x0 + bl SND_StopTimer + cmp r7, #0x0 + beq _020C19DC + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc + ldr r6, _020C1A40 ; =UNK_021D27AC + mov r5, #0x0 +_020C19C4: + mov r0, r6 + mov r1, r5 + mov r2, r5 + bl OS_ReceiveMessage + cmp r0, #0x0 + bne _020C19C4 +_020C19DC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020C19EC + bl FUN_020C0300 +_020C19EC: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020C19FC + bl FUN_020C0340 +_020C19FC: + cmp r7, #0x0 + beq _020C1A0C + ldr r0, [r4, #0x2c] + bl FUN_020C029C +_020C1A0C: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _020C1A2C + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_SetOutputSelector +_020C1A2C: + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1A3C: .word UNK_021D27CC +_020C1A40: .word UNK_021D27AC + + arm_func_start FUN_020C1A44 +FUN_020C1A44: ; 0x020C1A44 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r10, r3 + str r0, [sp, #0x18] + str r2, [sp, #0x20] + mov r2, #0x0 + str r1, [sp, #0x1c] + mov r0, r1 + mov r1, r10 + ldr r9, [sp, #0x6c] + ldr r8, [sp, #0x74] + str r2, [sp, #0x2c] + mvn r6, #0x0 + ldr r4, _020C1D90 ; =UNK_021D27CC + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r1, r10 + bl DC_FlushRange + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x70] + cmp r0, #0x1 + moveq r7, #0x1 + ldr r0, _020C1D94 ; =0x00FFB0FF + movne r7, #0x0 + bl _s32_div_f + ldr r1, [sp, #0x84] + mov r11, r0 + cmp r1, #0x0 + beq _020C1B00 + add r1, r11, #0x10 + bic r11, r1, #0x1f + mov r2, r11, asr #0x5 + mov r0, r10 + cmp r7, #0x0 + ldr r1, [sp, #0x80] + moveq r0, r10, lsr #0x1 + str r2, [sp, #0x34] + bl _u32_div_f + ldr r1, [sp, #0x34] + mov r5, #0x20 + mul r0, r1, r0 + str r0, [sp, #0x30] + cmp r7, #0x0 + ldr r0, [sp, #0x34] + moveq r5, r5, lsr #0x1 + mul r0, r5, r0 + mov r5, r0 +_020C1B00: + cmp r7, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x28] + moveq r0, #0x1 + streq r0, [sp, #0x28] + cmp r7, #0x0 + movne r0, #0x1 + strne r0, [sp, #0x24] + moveq r0, #0x0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x18] + cmp r0, #0x2 + movne r0, #0xa + strne r0, [sp, #0x2c] + ldr r0, [sp, #0x84] + cmp r0, #0x0 + beq _020C1B58 + bl FUN_020C02BC + movs r6, r0 + addmi sp, sp, #0x3c + movmi r0, #0x0 + ldmmiia sp!, {r4-r11,pc} +_020C1B58: + mov r0, #0x3 + bl FUN_020C031C + cmp r0, #0x0 + bne _020C1B84 + cmp r6, #0x0 + blt _020C1B78 + mov r0, r6 + bl FUN_020C029C +_020C1B78: + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1B84: + mov r0, #0xa + bl FUN_020C0370 + cmp r0, #0x0 + bne _020C1BB8 + cmp r6, #0x0 + blt _020C1BA4 + mov r0, r6 + bl FUN_020C029C +_020C1BA4: + mov r0, #0x3 + bl FUN_020C0300 + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1BB8: + mov r0, #0x0 + mov r7, r10, lsr #0x2 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x78] + str r11, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x1c] + moveq r3, #0x2 + mov r0, #0x1 + bl SND_SetupChannelPcm + ldr r1, [sp, #0x64] + str r9, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x1c] + mov r0, #0x0 + mov r3, r7 + bl SND_SetupCapture + mov r0, #0x0 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r2, [sp, #0x7c] + str r11, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + moveq r3, #0x2 + mov r0, #0x3 + bl SND_SetupChannelPcm + ldr r2, [sp, #0x64] + str r9, [sp, #0x0] + str r2, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x20] + mov r3, r7 + mov r0, #0x1 + bl SND_SetupCapture + cmp r6, #0x0 + blt _020C1CA8 + ldr r2, [sp, #0x30] + ldr r3, _020C1D98 ; =FUN_020C177C + mov r1, r2 + mov r0, r6 + add r1, r1, r5 + str r4, [sp, #0x0] + bl SND_SetupAlarm +_020C1CA8: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020C1CC8 + mov r0, #0x1 + mov r2, r0 + mov r3, r0 + mov r1, #0x2 + bl SND_SetOutputSelector +_020C1CC8: + cmp r6, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r6 + ldr r0, [sp, #0x2c] + movlt r2, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x80] + str r0, [r4, #0x4] + mov r0, #0xa + str r0, [r4, #0x20] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x24] + mov r0, #0x3 + str r0, [r4, #0x28] + ldr r0, [sp, #0x60] + str r6, [r4, #0x2c] + str r0, [r4, #0x8] + ldr r0, [sp, #0x1c] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + mov r0, r10 + str r10, [r4, #0x14] + bl _u32_div_f + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r0, [sp, #0x80] + ldr r1, [sp, #0x84] + str r0, [r4, #0x30] + ldr r0, [sp, #0x88] + str r1, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0x3c + str r8, [r4, #0x50] + bl FUN_020C3E6C + add r0, r4, #0x3c + mov r1, r8, lsl #0x8 + mov r2, #0x1 + bl FUN_020C3E40 + mov r0, #0x0 + str r0, [r4, #0x4c] + mov r0, #0x1 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1D90: .word UNK_021D27CC +_020C1D94: .word 0x00FFB0FF +_020C1D98: .word FUN_020C177C + + arm_func_start FUN_020C1D9C +FUN_020C1D9C: ; 0x020C1D9C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020C1E34 ; =UNK_021D27CC + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r4, r5, #0x3c + mov r0, r4 + bl FUN_020C3DF4 + ldr r0, [r5, #0x4c] + cmp r0, #0x0 + beq _020C1DFC + mov r0, r4 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C1DFC + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020C1DFC: + mov r0, r4 + bl FUN_020C3E0C + ldr r1, [r5, #0x50] + mov r4, r0, asr #0x8 + cmp r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x24] + mov r1, r4 + mov r2, #0x0 + bl SND_SetChannelVolume + str r4, [r5, #0x50] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1E34: .word UNK_021D27CC + + arm_func_start FUN_020C1E38 +FUN_020C1E38: ; 0x020C1E38 + ldr r1, _020C1E50 ; =UNK_021D27A4 + mov r2, #0x0 + ldr r0, _020C1E54 ; =UNK_021D27CC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020C1E50: .word UNK_021D27A4 +_020C1E54: .word UNK_021D27CC + + arm_func_start FUN_020C1E58 +FUN_020C1E58: ; 0x020C1E58 + ldr r0, _020C1E64 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C1E64: .word UNK_021D27CC + + arm_func_start FUN_020C1E68 +FUN_020C1E68: ; 0x020C1E68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C1EA0 ; =UNK_021D27CC + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1EA0: .word UNK_021D27CC + + arm_func_start FUN_020C1EA4 +FUN_020C1EA4: ; 0x020C1EA4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1E68 + ldr r0, _020C1F50 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + mov r1, #0x7f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x40] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x44] + str r2, [sp, #0x20] + ldr r12, [sp, #0x48] + str r1, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r12, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1F50: .word UNK_021D27CC + + arm_func_start FUN_020C1F54 +FUN_020C1F54: ; 0x020C1F54 + stmdb sp!, {r4,lr} + ldr r4, _020C1FA0 ; =UNK_021D27CC + mov r2, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x4] + cmp r0, #0x0 + ldmneia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C1F88 + bl FUN_020C1950 + ldmia sp!, {r4,pc} +_020C1F88: + add r0, r4, #0x3c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, #0x1 + str r0, [r4, #0x4c] + ldmia sp!, {r4,pc} + .balign 4 +_020C1FA0: .word UNK_021D27CC + + arm_func_start FUN_020C1FA4 +FUN_020C1FA4: ; 0x020C1FA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C1FEC ; =UNK_021D27CC + mov r12, r0 + ldr r0, [r3, #0x0] + mov r2, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r3, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + add r0, r3, #0x3c + mov r1, r12, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1FEC: .word UNK_021D27CC + + arm_func_start FUN_020C1FF0 +FUN_020C1FF0: ; 0x020C1FF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r0, #0x0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1F54 + ldr r0, _020C2098 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x40] + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + mov r1, #0x7f + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r0, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2098: .word UNK_021D27CC + + arm_func_start FUN_020C209C +FUN_020C209C: ; 0x020C209C + mov r0, #0x0 + str r0, [r2, #0x88] + bx lr + + arm_func_start FUN_020C20A8 +FUN_020C20A8: ; 0x020C20A8 + mov r0, #0x0 + str r0, [r2, #0x84] + bx lr + + arm_func_start FUN_020C20B4 +FUN_020C20B4: ; 0x020C20B4 + mov r0, #0x0 + str r0, [r2, #0x8c] + bx lr + + arm_func_start FUN_020C20C0 +FUN_020C20C0: ; 0x020C20C0 + ldr r2, _020C20D8 ; =UNK_021D28C0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x84] + add r0, r2, r0, lsl #0x4 + str r1, [r0, #0x14] + bx lr + .balign 4 +_020C20D8: .word UNK_021D28C0 + + arm_func_start FUN_020C20DC +FUN_020C20DC: + ldr r1, _020C2100 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x14] + bx lr + .balign 4 +_020C2100: .word UNK_021D28C0 + + arm_func_start FUN_020C2104 +FUN_020C2104: + stmdb sp!, {r4-r6,lr} + ldr r4, _020C2178 ; =UNK_021D28C0 + mov r5, r2 + ldr r4, [r4, #0x0] + mov r6, r1 + ldr r2, [r4, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r6,pc} + add r1, r2, #0xc + add r1, r1, r0, lsl #0x4 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x0] + sub r0, r0, r3 + cmp r5, r0 + movhi r5, r0 + add r0, r4, #0x34 + add r1, r1, r3 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + mov r2, r5 + add r0, r4, #0x34 + bl FS_ReadFile + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2178: .word UNK_021D28C0 + + arm_func_start FUN_020C217C +FUN_020C217C: ; 0x020C217C + ldr r1, _020C21A0 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x10] + bx lr + .balign 4 +_020C21A0: .word UNK_021D28C0 + + arm_func_start FUN_020C21A4 +FUN_020C21A4: ; 0x020C21A4 + ldr r1, _020C2204 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x1c] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2204: .word UNK_021D28C0 + + arm_func_start FUN_020C2208 +FUN_020C2208: ; 0x020C2208 + ldr r1, _020C2268 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x18] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2268: .word UNK_021D28C0 + + arm_func_start FUN_020C226C +FUN_020C226C: + ldr r1, _020C22CC ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C22CC: .word UNK_021D28C0 + + arm_func_start FUN_020C22D0 +FUN_020C22D0: ; 0x020C22D0 + ldr r1, _020C2330 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x10] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2330: .word UNK_021D28C0 + + arm_func_start FUN_020C2334 +FUN_020C2334: + ldr r1, _020C2394 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0xc] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2394: .word UNK_021D28C0 + + arm_func_start FUN_020C2398 +FUN_020C2398: + ldr r1, _020C23F8 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x8] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C23F8: .word UNK_021D28C0 + + arm_func_start FUN_020C23FC +FUN_020C23FC: ; 0x020C23FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C2398 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r0, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C241C +FUN_020C241C: ; 0x020C241C + ldr r0, _020C2428 ; =UNK_021D28C0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C2428: .word UNK_021D28C0 + + arm_func_start FUN_020C242C +FUN_020C242C: ; 0x020C242C + ldr r1, _020C2440 ; =UNK_021D28C0 + ldr r2, [r1, #0x0] + str r0, [r1, #0x0] + mov r0, r2 + bx lr + .balign 4 +_020C2440: .word UNK_021D28C0 + + arm_func_start FUN_020C2444 +FUN_020C2444: ; 0x020C2444 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl MIi_CpuCopy32 + ldr r0, [r5, #0x18] + mov r12, #0x0 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x8c] + ldr r0, [r5, #0x20] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x84] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x88] + ldr r2, [r5, #0x84] + ldr r0, [r2, #0x8] + cmp r0, #0x0 + bls _020C24F0 + mov r3, r12 + mov r1, r12 +_020C24BC: + add r2, r2, #0xc + ldr r0, [r2, r3] + add r2, r2, r3 + cmp r0, #0x0 + moveq r0, r1 + addne r0, r4, r0 + str r0, [r2, #0x8] + ldr r2, [r5, #0x84] + add r12, r12, #0x1 + ldr r0, [r2, #0x8] + add r3, r3, #0x10 + cmp r12, r0 + blo _020C24BC +_020C24F0: + mov r1, #0x0 + ldr r0, _020C2508 ; =UNK_021D28C0 + str r1, [r5, #0x30] + str r5, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C2508: .word UNK_021D28C0 + + arm_func_start FUN_020C250C +FUN_020C250C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + mov r5, r1 + mov r1, #0x0 + mov r4, r2 + mov r2, r1 + add r0, r6, #0x34 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + add r0, r6, #0x34 + mov r2, #0x30 + bl FS_ReadFile + cmp r0, #0x30 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r5, #0x0 + beq _020C26E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x1c] + ldr r2, _020C26EC ; =FUN_020C20B4 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x8c] + ldr r0, [r6, #0x8c] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x18] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8c] + ldr r2, [r6, #0x1c] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x1c] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x24] + ldr r2, _020C26F0 ; =FUN_020C20A8 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x84] + ldr r0, [r6, #0x84] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x20] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x84] + ldr r2, [r6, #0x24] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x24] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r4, #0x0 + beq _020C26E0 + ldr r1, [r6, #0x14] + cmp r1, #0x0 + beq _020C26E0 + mov r4, #0x0 + ldr r2, _020C26F4 ; =FUN_020C209C + mov r0, r5 + mov r3, r6 + str r4, [sp, #0x0] + bl FUN_020C2958 + str r0, [r6, #0x88] + ldr r0, [r6, #0x88] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x10] + add r0, r6, #0x34 + mov r2, r4 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x88] + ldr r2, [r6, #0x14] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x14] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, r4 + ldmneia sp!, {r4-r6,pc} +_020C26E0: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C26EC: .word FUN_020C20B4 +_020C26F0: .word FUN_020C20A8 +_020C26F4: .word FUN_020C209C + + arm_func_start FUN_020C26F8 +FUN_020C26F8: ; 0x020C26F8 + ; r0: &sSoundDataBuffer + ; r1: char* filename + ; r2: (&sSoundDataBuffer)->unk_0090 + ; r3: 0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r12, #0x0 + str r12, [r6, #0x8c] + str r12, [r6, #0x84] + add r0, r6, #0x7c + mov r5, r2 + mov r4, r3 + str r12, [r6, #0x88] + bl FS_ConvertPathToFileID + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r6, #0x34 + bl FS_InitFile + add r1, r6, #0x7c + add r0, r6, #0x34 + ldmia r1, {r1-r2} + bl FS_OpenFileFast + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r3, #0x1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r3, [r6, #0x30] + bl FUN_020C250C + cmp r0, #0x0 + ldrne r0, _020C2770 ; =UNK_021D28C0 + strne r6, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2770: .word UNK_021D28C0 + + arm_func_start FUN_020C2774 +FUN_020C2774: ; 0x020C2774 + stmdb sp!, {r4,lr} + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2794 +FUN_020C2794: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x0] + mov r1, #0x14 + mov r2, #0x4 + bl FUN_020AE638 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + bl FUN_020C2818 + mov r1, r4 + add r0, r5, #0x4 + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C27DC +FUN_020C27DC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x4 + mov r1, #0xc + bl FUN_020ADC74 + mov r0, r5 + str r4, [r5, #0x0] + bl FUN_020C2794 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2818 +FUN_020C2818: ; 0x020C2818 + ldr ip, _020C2824 ; =FUN_020ADC74 + mov r1, #0x0 + bx r12 + .balign 4 +_020C2824: .word FUN_020ADC74 + + arm_func_start FUN_020C2828 +FUN_020C2828: ; 0x020C2828 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + movs r9, r1 + mov r10, r0 + mov r6, r7 + bne _020C2850 + bl FUN_020C29C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020C2850: + ldrh r0, [r10, #0xc] + cmp r9, r0 + bge _020C28D8 + mov r11, r7 + add r5, r10, #0x4 + mov r4, #0x1 +_020C2868: + mov r0, r5 + mov r1, r11 + bl FUN_020ADA84 + mov r1, r7 + mov r8, r0 + bl FUN_020ADA84 + movs r7, r0 + beq _020C28C0 +_020C2888: + ldr r12, [r7, #0xc] + cmp r12, #0x0 + beq _020C28AC + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + add r0, r7, #0x20 + blx r12 + mov r6, r4 +_020C28AC: + mov r0, r8 + mov r1, r7 + bl FUN_020ADA84 + movs r7, r0 + bne _020C2888 +_020C28C0: + mov r0, r5 + mov r1, r8 + bl FUN_020ADAB0 + ldrh r0, [r10, #0xc] + cmp r9, r0 + blt _020C2868 +_020C28D8: + ldr r0, [r10, #0x0] + mov r1, r9 + bl FUN_020AE554 + cmp r6, #0x0 + beq _020C28F0 + bl FUN_020C2774 +_020C28F0: + ldrh r1, [r10, #0xc] + ldr r0, [r10, #0x0] + bl FUN_020AE5B0 + mov r0, r10 + bl FUN_020C2794 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C290C +FUN_020C290C: ; 0x020C290C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r1, [r4, #0xc] + ldr r0, [r4, #0x0] + bl FUN_020AE5B0 + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020C2794 + cmp r0, #0x0 + ldrneh r0, [r4, #0xc] + subne r0, r0, #0x1 + ldmneia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020AE554 + mvn r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2958 +FUN_020C2958: ; 0x020C2958 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r8, r0 + add r0, r7, #0x1f + bic r1, r0, #0x1f + mov r6, r2 + ldr r0, [r8, #0x0] + add r1, r1, #0x20 + mov r2, #0x20 + mov r5, r3 + bl FUN_020AE638 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + add r0, r8, #0x4 + mov r1, #0x0 + bl FUN_020ADA84 + str r7, [r4, #0x8] + str r6, [r4, #0xc] + ldr r2, [sp, #0x18] + str r5, [r4, #0x10] + mov r1, r4 + str r2, [r4, #0x14] + bl FUN_020ADBE8 + add r0, r4, #0x20 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C29C0 +FUN_020C29C0: + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r5, #0x0 + mov r1, r5 + add r0, r8, #0x4 + bl FUN_020ADA84 + movs r7, r0 + beq _020C2A58 + add r9, r8, #0x4 + mov r10, #0x1 + mov r4, r5 +_020C29EC: + mov r0, r7 + mov r1, r4 + bl FUN_020ADA84 + movs r6, r0 + beq _020C2A38 +_020C2A00: + ldr r12, [r6, #0xc] + cmp r12, #0x0 + beq _020C2A24 + ldr r1, [r6, #0x8] + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r6, #0x20 + blx r12 + mov r5, r10 +_020C2A24: + mov r0, r7 + mov r1, r6 + bl FUN_020ADA84 + movs r6, r0 + bne _020C2A00 +_020C2A38: + mov r0, r9 + mov r1, r7 + bl FUN_020ADAB0 + mov r0, r9 + mov r1, r4 + bl FUN_020ADA84 + movs r7, r0 + bne _020C29EC +_020C2A58: + ldr r0, [r8, #0x0] + mov r1, #0x3 + bl FUN_020AE600 + cmp r5, #0x0 + beq _020C2A70 + bl FUN_020C2774 +_020C2A70: + mov r0, r8 + bl FUN_020C2794 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2A7C +FUN_020C2A7C: ; 0x020C2A7C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020C29C0 + ldr r0, [r4, #0x0] + bl thunk_FUN_020adc8c_2 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2A94 +FUN_020C2A94: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + add r2, r0, #0x3 + add r0, r0, r1 + bic r5, r2, #0x3 + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r5,pc} + sub r1, r0, r5 + cmp r1, #0x10 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + add r0, r5, #0x10 + sub r1, r1, #0x10 + mov r2, #0x0 + bl FUN_020AE684 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + mov r1, r4 + bl FUN_020C27DC + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r5,pc} + mov r0, r4 + bl thunk_FUN_020adc8c_2 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2B1C +FUN_020C2B1C: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x20 + mov r8, r0 + add r0, sp, #0x8 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x40] + bl SND_GetFirstInstDataPos + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + cmp r7, #0x0 + add r2, sp, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + add r1, sp, #0x10 + mov r0, r7 + bl SND_GetNextInstData + cmp r0, #0x0 + beq _020C2BD4 + add r10, sp, #0x10 + add r9, sp, #0x0 +_020C2B80: + ldrb r0, [sp, #0x10] + cmp r0, #0x1 + bne _020C2BBC + ldrh r0, [sp, #0x14] + cmp r6, r0 + bne _020C2BBC + ldrh r1, [sp, #0x12] + mov r0, r8 + mov r2, r5 + mov r3, r4 + bl FUN_020C2BE0 + cmp r0, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2BBC: + mov r0, r7 + mov r1, r10 + mov r2, r9 + bl SND_GetNextInstData + cmp r0, #0x0 + bne _020C2B80 +_020C2BD4: + mov r0, #0x1 + add sp, sp, #0x20 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2BE0 +FUN_020C2BE0: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_GetWaveDataAddress + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r9,pc} + mov r0, r7 + bl SND_GetWaveDataCount + ldr r1, [r7, #0x38] + sub r0, r0, #0x1 + add r1, r1, r6 + add r1, r7, r1, lsl #0x2 + cmp r6, r0 + ldrcc r0, [r1, #0x40] + ldr r8, [r1, #0x3c] + ldrcs r0, [r7, #0x8] + cmp r4, #0x0 + sub r9, r0, r8 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + ldr r2, _020C2CBC ; =FUN_020C2CC0 + mov r0, r4 + mov r3, r7 + add r1, r9, #0x20 + str r6, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r5 + mov r1, r4 + mov r2, r9 + mov r3, r8 + bl FUN_020C2104 + cmp r9, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r4 + mov r1, r9 + bl DC_StoreRange + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl SND_SetWaveDataAddress + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2CBC: .word FUN_020C2CC0 + + arm_func_start FUN_020C2CC0 +FUN_020C2CC0: ; 0x020C2CC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r7, r0 + mov r4, r3 + mov r6, r1 + mov r0, r5 + mov r1, r4 + bl SND_GetWaveDataAddress + cmp r7, r0 + bne _020C2CFC + mov r0, r5 + mov r1, r4 + mov r2, #0x0 + bl SND_SetWaveDataAddress +_020C2CFC: + mov r0, r7 + add r1, r7, r6 + bl SND_InvalidateWaveData + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2D10 +FUN_020C2D10: ; 0x020C2D10 + stmdb sp!, {r4,lr} + mov r1, r2 + mov r4, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r4 + bl SND_DestroyWaveArc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2D30 +FUN_020C2D30: ; 0x020C2D30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateWaveData + mov r0, r5 + bl SND_DestroyWaveArc + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2D68 +FUN_020C2D68: ; 0x020C2D68 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateBankData + mov r0, r5 + bl SND_DestroyBank + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DA0 +FUN_020C2DA0: ; 0x020C2DA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateSeqData + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DD0 +FUN_020C2DD0: ; 0x020C2DD0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r1 + mov r7, r0 + mov r6, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl FUN_020C242C + mov r5, r0 + mov r0, r6 + bl FUN_020C20DC + cmp r7, r0 + bne _020C2E1C + mov r0, r6 + mov r1, #0x0 + bl FUN_020C20C0 +_020C2E1C: + mov r0, r5 + bl FUN_020C242C + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2E34 +FUN_020C2E34: ; 0x020C2E34 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl FUN_020C20DC + movs r6, r0 + bne _020C2F40 + ldr r1, _020C2F4C ; =UNK_021D28C4 + mov r0, r9 + mov r2, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + cmp r0, #0x3c + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r0, _020C2F4C ; =UNK_021D28C4 + cmp r8, #0x0 + ldr r0, [r0, #0x38] + addeq sp, sp, #0x4 + mov r4, r0, lsl #0x2 + mov r0, r4, lsl #0x1 + add r5, r0, #0x3c + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + cmp r7, #0x0 + moveq r3, #0x0 + beq _020C2EB0 + bl FUN_020C241C + mov r3, r0 +_020C2EB0: + ldr r2, _020C2F50 ; =FUN_020C2D10 + mov r0, r8 + add r1, r5, #0x20 + str r9, [sp, #0x0] + bl FUN_020C2958 + movs r6, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r9 + mov r1, r6 + add r2, r4, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + add r1, r4, #0x3c + cmp r0, r1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r1, [r6, #0x38] + add r0, r6, #0x3c + mov r2, r4 + add r1, r0, r1, lsl #0x2 + bl MI_CpuCopy8 + mov r2, r4 + add r0, r6, #0x3c + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + bl DC_StoreRange + cmp r7, #0x0 + beq _020C2F40 + mov r0, r9 + mov r1, r6 + bl FUN_020C20C0 +_020C2F40: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2F4C: .word UNK_021D28C4 +_020C2F50: .word FUN_020C2D10 + + arm_func_start FUN_020C2F54 +FUN_020C2F54: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C2FBC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C2F88 + bl FUN_020C241C + mov r2, r0 +_020C2F88: + ldr r1, _020C2FC8 ; =FUN_020C2D30 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C2FBC + cmp r4, #0x0 + beq _020C2FBC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C2FBC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2FC8: .word FUN_020C2D30 + + arm_func_start FUN_020C2FCC +FUN_020C2FCC: ; 0x020C2FCC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3034 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3000 + bl FUN_020C241C + mov r2, r0 +_020C3000: + ldr r1, _020C3040 ; =FUN_020C2D68 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3034 + cmp r4, #0x0 + beq _020C3034 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3034: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3040: .word FUN_020C2D68 + + arm_func_start FUN_020C3044 +FUN_020C3044: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C30AC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3078 + bl FUN_020C241C + mov r2, r0 +_020C3078: + ldr r1, _020C30B8 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C30AC + cmp r4, #0x0 + beq _020C30AC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C30AC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C30B8: .word FUN_020C2DA0 + + arm_func_start FUN_020C30BC +FUN_020C30BC: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3124 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C30F0 + bl FUN_020C241C + mov r2, r0 +_020C30F0: + ldr r1, _020C3130 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3124 + cmp r4, #0x0 + beq _020C3124 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3124: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3130: .word FUN_020C2DA0 + + arm_func_start FUN_020C3134 +FUN_020C3134: ; 0x020C3134 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, r3 + bl FUN_020C217C + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r2, r7 + mov r3, r6 + add r1, r5, #0x20 + str r4, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl FUN_020C2104 + cmp r5, r0 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} + mov r0, r4 + mov r1, r5 + bl DC_StoreRange + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C31D4 +FUN_020C31D4: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C226C + cmp r0, #0x0 + moveq r0, #0x5 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x4 + beq _020C324C + ldrb r1, [r0, #0x3] + ands r1, r1, #0x1 + beq _020C3224 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2E34 + b _020C323C +_020C3224: + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2F54 +_020C323C: + cmp r0, #0x0 + bne _020C325C + mov r0, #0x9 + ldmia sp!, {r4-r6,pc} +_020C324C: + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x8 + bl FUN_020C20DC +_020C325C: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3270 +FUN_020C3270: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r1 + mov r9, r2 + mov r11, r3 + bl FUN_020C22D0 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x4 + ldmeqia sp!, {r4-r11,pc} + ands r0, r10, #0x2 + beq _020C32C4 + ldr r0, [r8, #0x0] + mov r1, r9 + mov r2, r11 + bl FUN_020C2FCC + movs r7, r0 + bne _020C32D0 + add sp, sp, #0xc + mov r0, #0x8 + ldmia sp!, {r4-r11,pc} +_020C32C4: + ldr r0, [r8, #0x0] + bl FUN_020C20DC + mov r7, r0 +_020C32D0: + and r5, r10, #0x4 + mov r6, #0x0 +_020C32D8: + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + ldr r1, _020C33B4 ; =0x0000FFFF + cmp r0, r1 + beq _020C3390 + bl FUN_020C226C + movs r4, r0 + addeq sp, sp, #0xc + moveq r0, #0x5 + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x4 + str r0, [sp, #0x0] + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + mov r1, r10 + mov r2, r9 + mov r3, r11 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} + ldrb r0, [r4, #0x3] + ands r0, r0, #0x1 + beq _020C3370 + cmp r5, #0x0 + beq _020C3370 + str r9, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + mov r3, r1, lsl #0x8 + mov r1, r7 + mov r2, r6 + mov r3, r3, lsr #0x8 + bl FUN_020C2B1C + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x9 + ldmeqia sp!, {r4-r11,pc} +_020C3370: + cmp r7, #0x0 + beq _020C3390 + ldr r2, [sp, #0x4] + cmp r2, #0x0 + beq _020C3390 + mov r0, r7 + mov r1, r6 + bl SND_AssignWaveArc +_020C3390: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _020C32D8 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + strne r7, [r0, #0x0] + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C33B4: .word 0x0000FFFF + + arm_func_start FUN_020C33B8 +FUN_020C33B8: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2334 + cmp r0, #0x0 + moveq r0, #0x3 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x8 + beq _020C3400 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r2, r4 + bl FUN_020C3044 + cmp r0, #0x0 + bne _020C3408 + mov r0, #0x7 + ldmia sp!, {r4-r6,pc} +_020C3400: + ldr r0, [r0, #0x0] + bl FUN_020C20DC +_020C3408: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C341C +FUN_020C341C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020C2398 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl FUN_020C3270 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,pc} + ands r0, r7, #0x1 + beq _020C3498 + ldr r0, [r4, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020C30BC + cmp r0, #0x0 + bne _020C34A0 + add sp, sp, #0x4 + mov r0, #0x6 + ldmia sp!, {r4-r7,pc} +_020C3498: + ldr r0, [r4, #0x0] + bl FUN_020C20DC +_020C34A0: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C34B8 +FUN_020C34B8: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r1 + bl FUN_020C21A4 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ldr r0, [r8, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + bls _020C35D4 + add r6, r8, #0x4 + str r7, [sp, #0x4] + mov r11, r7 + mov r10, r7 + mov r5, r7 + mov r4, #0x1 +_020C3500: + ldrb r0, [r6, #0x0] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C35C0 +_020C3510: + b _020C3520 +_020C3514: + b _020C3570 +_020C3518: + b _020C3598 +_020C351C: + b _020C3548 +_020C3520: + str r5, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C341C + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3548: + str r10, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C33B8 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3570: + str r11, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3598: + ldr r0, [sp, #0x4] + mov r2, r9 + str r0, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r3, r4 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C35C0: + ldr r0, [r8, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + add r6, r6, #0x8 + blo _020C3500 +_020C35D4: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C35E0 +FUN_020C35E0: ; 0x020C35E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C360C +FUN_020C360C: ; 0x020C360C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C31D4 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3640 +FUN_020C3640: ; 0x020C3640 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3674 +FUN_020C3674: ; 0x020C3674 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36A8 +FUN_020C36A8: ; 0x020C36A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C34B8 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36C8 +FUN_020C36C8: ; 0x020C36C8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r2 + mov r2, r3 + ldr r6, [sp, #0x20] + mov r4, r0 + mov r8, r1 + bl FUN_020C0AF4 + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r5 + bl FUN_020C09B0 + add r12, sp, #0x4 + mov r2, r0 + mov r0, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C373C + mov r0, r5 + bl thunk_FUN_020c077c + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C373C: + ldr r12, [sp, #0x24] + ldr r2, [r6, #0x0] + ldr r1, [r12, #0x18] + ldr r3, [sp, #0x4] + mov r0, r5 + add r1, r12, r1 + bl FUN_020C0A90 + ldrb r1, [r6, #0x6] + mov r0, r4 + bl FUN_020C0F30 + ldrb r1, [r6, #0x7] + mov r0, r4 + bl FUN_020C0ECC + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r4 + bl FUN_020C0E38 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C378C +FUN_020C378C: ; 0x020C378C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r8, r2 + mov r2, r3 + ldr r5, [sp, #0x28] + mov r6, r0 + mov r7, r1 + bl FUN_020C0AF4 + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r7 + mov r1, r4 + bl FUN_020C09B0 + mov r7, r0 + add r12, sp, #0x8 + mov r0, r8 + mov r2, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C3804 + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C3804: + ldr r0, [sp, #0x2c] + add r12, sp, #0x4 + mov r2, r7 + mov r1, #0x1 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + beq _020C383C + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C383C: + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r2, #0x18] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x0 + bl FUN_020C0A90 + ldrb r1, [r5, #0x6] + mov r0, r6 + bl FUN_020C0F30 + ldrb r1, [r5, #0x7] + mov r0, r6 + bl FUN_020C0ECC + ldr r1, [sp, #0x2c] + mov r0, r6 + bl FUN_020C0E60 + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3888 +FUN_020C3888: ; 0x020C3888 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl FUN_020C2334 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldr r0, [r0, #0x0] + bl FUN_020C20DC + movs r4, r0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r1, r5 + bl FUN_020C3D9C + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r7 + bl FUN_020C36C8 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3910 +FUN_020C3910: ; 0x020C3910 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [sp, #0x20] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + cmp r4, #0x0 + ldrltb r4, [r0, #0x8] + cmp r5, #0x0 + ldrlth r5, [r0, #0x4] + cmp r6, #0x0 + ldrltb r6, [r0, #0x9] + ldr r12, [sp, #0x20] + mov r2, r5 + str r0, [sp, #0x0] + mov r0, r7 + mov r1, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3980 +FUN_020C3980: ; 0x020C3980 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r5 + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C39CC +FUN_020C39CC: ; 0x020C39CC + stmdb sp!, {r4-r8,lr} + mov r6, r0 + bl FUN_020C241C + mov r5, #0x0 + mov r7, r5 +_020C39E0: + mov r0, r5 + bl FUN_020C2208 + movs r4, r0 + beq _020C3A58 + ldrb r1, [r4, #0x0] + mov r0, r5 + bl FUN_020C1160 + ldrh r1, [r4, #0x2] + mov r0, r5 + bl FUN_020C1148 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020C3A58 + cmp r6, #0x0 + beq _020C3A58 + ldrb r0, [r4, #0x0] + mov r8, r7 + cmp r0, #0x0 + ble _020C3A58 +_020C3A2C: + ldr r2, [r4, #0x4] + mov r0, r5 + mov r1, r6 + bl FUN_020C10B4 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldrb r0, [r4, #0x0] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C3A2C +_020C3A58: + add r5, r5, #0x1 + cmp r5, #0x20 + blt _020C39E0 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3A6C +FUN_020C3A6C: ; 0x020C3A6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020C3A9C ; =UNK_021D2904 + mov r1, r5 + bl FUN_020ADBE8 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C3A9C: .word UNK_021D2904 + + arm_func_start FUN_020C3AA0 +FUN_020C3AA0: ; 0x020C3AA0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + mov r1, #0x0 + bl FUN_020ADA98 + movs r5, r0 + beq _020C3B04 +_020C3AC8: + mov r0, r8 + mov r1, r5 + bl FUN_020ADA98 + ldr r1, [r5, #0x8] + mov r4, r0 + cmp r1, r7 + bne _020C3AF8 + mov r0, r8 + mov r1, r5 + bl FUN_020ADAB0 + mov r0, r5 + bl FUN_020C3A6C +_020C3AF8: + mov r5, r4 + cmp r4, #0x0 + bne _020C3AC8 +_020C3B04: + mov r0, r6 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3B10 +FUN_020C3B10: ; 0x020C3B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + sub r1, r1, #0x1 + str r1, [r0, #0x120] + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1674 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3B4C +FUN_020C3B4C: ; 0x020C3B4C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x110] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + bl FUN_020C3B10 + ldr r1, [r4, #0x164] + mov r0, r4 + blx r1 + ldr r0, _020C3BA8 ; =UNK_021D2DF0 + mov r1, r4 + bl FUN_020C3AA0 + ldr r0, _020C3BAC ; =UNK_021D2900 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020C3B9C + mov r1, r4 + add r0, r0, #0x4e0 + bl FUN_020C3AA0 +_020C3B9C: + mov r0, r4 + bl FUN_020C3C4C + ldmia sp!, {r4,pc} + .balign 4 +_020C3BA8: .word UNK_021D2DF0 +_020C3BAC: .word UNK_021D2900 + + arm_func_start FUN_020C3BB0 +FUN_020C3BB0: ; 0x020C3BB0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_LockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020C3BDC + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_LockMutex +_020C3BDC: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3BF4 + mov r0, r4 + bl FUN_020C1430 +_020C3BF4: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3C10 + ldr r1, [r4, #0x16c] + mov r0, r4 + blx r1 +_020C3C10: + mov r0, r4 + bl FUN_020C3B4C + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_UnlockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_UnlockMutex + ldmia sp!, {r4,pc} + .balign 4 +_020C3C40: .word UNK_021D2DD8 +_020C3C44: .word UNK_021D2900 +_020C3C48: .word 0x000004C8 + + arm_func_start FUN_020C3C4C +FUN_020C3C4C: ; 0x020C3C4C + ldr r2, [r0, #0x14c] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x14c] + ldr r1, [r0, #0x110] + bic r1, r1, #0x1 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x4 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x2 + str r1, [r0, #0x110] + bx lr + + arm_func_start FUN_020C3C88 +FUN_020C3C88: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, _020C3D94 ; =UNK_021D2DFC + mov r7, #0x0 + ldr r4, _020C3D98 ; =UNK_02103BAC +_020C3C9C: + ldr r1, [r5, #0x110] + mov r0, r1, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3D7C + ldr r0, [r5, #0x114] + cmp r0, #0x0 + bne _020C3CC4 + mov r0, r5 + bl FUN_020C3BB0 + b _020C3D7C +_020C3CC4: + mov r0, r1, lsl #0x1d + movs r0, r0, asr #0x1f + beq _020C3CFC + ldr r0, [r5, #0x118] + cmp r0, #0x0 + beq _020C3CFC + mov r0, r5 + bl FUN_020C1458 + ldr r0, [r5, #0x110] + orr r0, r0, #0x2 + str r0, [r5, #0x110] + ldr r0, [r5, #0x110] + bic r0, r0, #0x4 + str r0, [r5, #0x110] +_020C3CFC: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DF4 + ldr r1, [r5, #0x154] + add r0, r5, #0xe8 + mov r1, r1, lsl #0x1 + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0x1 + ldrsh r1, [r4, r0] + ldr r0, [r5, #0x158] + add r6, r1, r6 + cmp r6, r0 + beq _020C3D54 + mov r0, r5 + mov r1, r6 + bl FUN_020C13C4 + str r6, [r5, #0x158] +_020C3D54: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1c + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C3D7C + mov r0, r5 + bl FUN_020C3BB0 +_020C3D7C: + add r7, r7, #0x1 + cmp r7, #0x4 + add r5, r5, #0x170 + blt _020C3C9C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3D94: .word UNK_021D2DFC +_020C3D98: .word UNK_02103BAC + + arm_func_start FUN_020C3D9C +FUN_020C3D9C: + cmp r1, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r2, [r0, #0x1c] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + mov r2, #0xc + mul r2, r1, r2 + add r3, r0, #0x20 + ldr r1, [r3, r2] + mvn r0, #0x0 + cmp r1, r0 + add r0, r3, r2 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020C3DDC +FUN_020C3DDC: + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + cmp r1, r0 + movge r0, #0x1 + movlt r0, #0x0 + bx lr + + arm_func_start FUN_020C3DF4 +FUN_020C3DF4: ; 0x020C3DF4 + ldr r2, [r0, #0x8] + ldr r1, [r0, #0xc] + cmp r2, r1 + addlt r1, r2, #0x1 + strlt r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020C3E0C +FUN_020C3E0C: + stmdb sp!, {r4,lr} + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x8] + cmp r2, r1 + ldrge r0, [r0, #0x4] + ldmgeia sp!, {r4,pc} + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x4] + sub r0, r0, r4 + mul r0, r2, r0 + bl _s32_div_f + add r0, r4, r0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C3E40 +FUN_020C3E40: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_020C3E0C + str r0, [r6, #0x0] + str r5, [r6, #0x4] + str r4, [r6, #0xc] + mov r0, #0x0 + str r0, [r6, #0x8] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3E6C +FUN_020C3E6C: ; 0x020C3E6C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0xc] + ldr r1, [r0, #0xc] + str r1, [r0, #0x8] + bx lr diff --git a/arm9/global.inc b/arm9/global.inc index 07ea6384..4f495f81 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5530,9 +5530,9 @@ .extern WCM_CountApList .extern WCM_ClearApList .extern WCM_GetApEssid -.extern FUN_020A8BA4 -.extern FUN_020A8BB0 -.extern FUN_020A8BBC +.extern MD5Final +.extern MD5Update +.extern MD5Init .extern FUN_020AA760 .extern FUN_020AA770 .extern FUN_020AA7A0 @@ -5545,10 +5545,10 @@ .extern FUN_020ACC84 .extern FUN_020ACD54 .extern FUN_020AD144 -.extern FUN_020AD834 -.extern FUN_020AD8A8 -.extern FUN_020AD904 -.extern FUN_020AD93C +.extern VCT_HandleData +.extern VCT_Main +.extern VCT_Cleanup +.extern VCT_Init .extern FUN_020ADA84 .extern FUN_020ADA98 .extern FUN_020ADAB0 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 835a8975..98bffb4c 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -26272,14 +26272,14 @@ MOD04_021EF794: ; 0x021EF794 add r0, sp, #0x10 mov r5, r1 mov r4, r2 - bl FUN_020A8BBC + bl MD5Init add r0, sp, #0x10 mov r1, r6 mov r2, r5 - bl FUN_020A8BB0 + bl MD5Update add r0, sp, #0 add r1, sp, #0x10 - bl FUN_020A8BA4 + bl MD5Final add r0, sp, #0 mov r1, r4 bl MOD04_021EF7E0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index 56664ef1..7c6a31fc 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -2673,7 +2673,7 @@ _021D8976: ldr r0, _021D8A3C ; =0x0220FBC8 str r4, [r0, #0xc] str r5, [r0, #0x10] - bl FUN_020AD8A8 + bl VCT_Main ldr r4, _021D8A3C ; =0x0220FBC8 ldr r0, _021D8A44 ; =0x0000411A ldr r1, [r4, #8] @@ -2682,7 +2682,7 @@ _021D8976: add r6, r0, #0 add r5, r0, #0 _021D898E: - bl FUN_020AD8A8 + bl VCT_Main ldr r0, [r4, #8] sub r0, r0, r6 str r0, [r4, #8] @@ -2791,7 +2791,7 @@ MOD04_021D8A54: ; 0x021D8A54 _021D8A62: lsl r0, r0, #0x18 lsr r0, r0, #0x18 - bl FUN_020AD834 + bl VCT_HandleData cmp r0, #0 beq _021D8A72 mov r0, #1 @@ -2946,7 +2946,7 @@ _021D8ACA: lsl r0, r0, #6 str r0, [sp, #0x28] add r0, sp, #0x14 - bl FUN_020AD93C + bl VCT_Init cmp r0, #0 ldr r0, _021D8BCC ; =0x0220FBC8 add r2, r5, #0 @@ -3058,7 +3058,7 @@ MOD04_021D8C6C: ; 0x021D8C6C ldr r0, _021D8CC4 ; =0x00003504 add r0, r1, r0 bl FUN_020C1674 - bl FUN_020AD904 + bl VCT_Cleanup ldr r1, _021D8CBC ; =0x0220FBC8 mov r0, #0x35 ldr r2, [r1, #4] -- cgit v1.2.3 From 8e08eaa6e8cbf31ff27fd319278f824b68320e4c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 May 2020 12:46:29 -0400 Subject: Implement calcrom --- .travis.yml | 7 ++- .travis/calcrom/.gitignore | 1 + .travis/calcrom/Makefile | 17 +++++++ .travis/calcrom/calcrom.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++ .travis/calcrom/webhook.sh | 17 +++++++ CMakeLists.txt | 3 ++ 6 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 .travis/calcrom/.gitignore create mode 100644 .travis/calcrom/Makefile create mode 100644 .travis/calcrom/calcrom.cpp create mode 100644 .travis/calcrom/webhook.sh diff --git a/.travis.yml b/.travis.yml index bf0c9a04..681bddc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,9 @@ dist: bionic sudo: false language: c +env: + global: + - LM_LICENSE_FILE="$TRAVIS_BUILD_DIR/tools/mwccarm/license.dat" addons: apt: packages: @@ -24,8 +27,10 @@ install: - mv NITRO\ SDK\ v3.0/include/nitro/specfiles/ARM9-TS.lcf.template arm9 script: - - export LM_LICENSE_FILE="$(pwd)/tools/mwccarm/license.dat" - make notifications: email: false + +after_success: + - .travis/calcrom/webhook.sh diff --git a/.travis/calcrom/.gitignore b/.travis/calcrom/.gitignore new file mode 100644 index 00000000..a2e06b56 --- /dev/null +++ b/.travis/calcrom/.gitignore @@ -0,0 +1 @@ +calcrom diff --git a/.travis/calcrom/Makefile b/.travis/calcrom/Makefile new file mode 100644 index 00000000..e3b6ff50 --- /dev/null +++ b/.travis/calcrom/Makefile @@ -0,0 +1,17 @@ +CXX := g++ +CXXFLAGS := -O3 -std=c++11 + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +TARGET := calcrom$(EXE) + +.PHONY: all + +all: $(TARGET) + +$(TARGET): calcrom.cpp + $(CXX) $(CXXFLAGS) -o $@ $^ diff --git a/.travis/calcrom/calcrom.cpp b/.travis/calcrom/calcrom.cpp new file mode 100644 index 00000000..13a95b29 --- /dev/null +++ b/.travis/calcrom/calcrom.cpp @@ -0,0 +1,107 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +struct Glob : public vector { + glob_t glob_result; +public: + void glob(string const & pattern) { + clear(); + int result = ::glob(pattern.c_str(), GLOB_TILDE | GLOB_BRACE, NULL, &glob_result); + if (result) { + stringstream ss; + ss << "Glob::glob(" << pattern << ") failed with error " << result << endl; + throw runtime_error(ss.str()); + } + assign(glob_result.gl_pathv, glob_result.gl_pathv + glob_result.gl_pathc); + } + Glob(string const & pattern) { + glob(pattern); + }; + void operator~() { + globfree(&glob_result); + } +}; + +int main() +{ + fstream elf; + Elf32_Ehdr ehdr; + Elf32_Shdr shdr_buf; + vector shdr(0); + + // Accumulate sizes + // src asm + // data _____|_____ + // text | + unsigned sizes[2][2] = {{0, 0}, {0, 0}}; + char * shstrtab = NULL; + size_t shstrsz = 0; + for (char const * & fname : Glob("../../arm9/{src,asm,lib/{src,asm},modules/*/{src,asm}}/*.{c,s,cpp}")) + { + string fname_s(fname); + string ext = fname_s.substr(fname_s.rfind('.'), 4); + bool is_asm = ext == ".s"; + fname_s = fname_s.replace(fname_s.find("arm9"), 4, "arm9/build"); + fname_s = fname_s.replace(fname_s.rfind('.'), 4, ".o"); + elf.open(fname_s, ios_base::in | ios_base::binary); + elf.read((char *)&ehdr, sizeof(ehdr)); + if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) { + elf.close(); + stringstream ss; + ss << "Error validating " << fname_s << " as an ELF file" << endl; + throw runtime_error(ss.str()); + } + // Read ELF sections + elf.seekg(ehdr.e_shoff); + shdr.resize(ehdr.e_shnum); + elf.read((char *)shdr.data(), ehdr.e_shnum * ehdr.e_shentsize); + // Read .shstrtab + if (shstrsz < shdr[ehdr.e_shstrndx].sh_size) { + shstrtab = (char *)realloc(shstrtab, shdr[ehdr.e_shstrndx].sh_size); + shstrsz = shdr[ehdr.e_shstrndx].sh_size; + } + elf.seekg(shdr[ehdr.e_shstrndx].sh_offset); + elf.read(shstrtab, shdr[ehdr.e_shstrndx].sh_size); + elf.close(); + for (Elf32_Shdr & hdr : shdr) { + string shname = shstrtab + hdr.sh_name; + bool is_text = (shname == ".text" || shname == ".init"); + bool is_data = (shname == ".data" || shname == ".rodata" || shname == ".sdata"); + size_t size = hdr.sh_size + (hdr.sh_size & 3 ? 4 - (hdr.sh_size & 3) : 0); + if (is_text || is_data) + { + sizes[is_text][is_asm] += size; + } + } + } + free(shstrtab); + + cout << "Analysis of ARM9 binary:" << endl; + // Report code + unsigned total_text = sizes[1][0] + sizes[1][1]; + double total_text_d = total_text; + double src_text_d = sizes[1][0]; + double asm_text_d = sizes[1][1]; + cout << total_text << " total bytes of code" << endl; + cout << " " << sizes[1][0] << " bytes of code in src (" << (src_text_d / total_text_d * 100.0) << "%)" << endl; + cout << " " << sizes[1][1] << " bytes of code in asm (" << (asm_text_d / total_text_d * 100.0) << "%)" << endl; + cout << endl; + // Report data + unsigned total_data = sizes[0][0] + sizes[0][1]; + double total_data_d = total_data; + double src_data_d = sizes[0][0]; + double asm_data_d = sizes[0][1]; + cout << total_data << " total bytes of data" << endl; + cout << " " << sizes[0][0] << " bytes of data in src (" << (src_data_d / total_data_d * 100.0) << "%)" << endl; + cout << " " << sizes[0][1] << " bytes of data in asm (" << (asm_data_d / total_data_d * 100.0) << "%)" << endl; + // Let vectors fall to gc + return 0; +} diff --git a/.travis/calcrom/webhook.sh b/.travis/calcrom/webhook.sh new file mode 100644 index 00000000..cb467cf0 --- /dev/null +++ b/.travis/calcrom/webhook.sh @@ -0,0 +1,17 @@ +#!/bin/bash -ex + +# Only run this script if it's the master branch build. +if [[ "$TRAVIS_BRANCH" != "master" || "$TRAVIS_PULL_REQUEST" != "false" ]]; then + exit 0 +fi + +build_name=$1 +map_file=$(dirname "$0")/../../arm9/build/arm9.elf.xMAP +if [ ! -f $map_file ]; then + echo "$map_file does not exist!" + exit 1 +fi + +make -C $(dirname "$0") +output=$($(dirname "$0")/calcrom | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g') +curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL diff --git a/CMakeLists.txt b/CMakeLists.txt index f2537aad..3eb28627 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,3 +9,6 @@ file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp") add_executable(PokeDiamond ${SOURCES}) target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include) + +add_executable(calcrom scratch.cpp) +target_include_directories(calcrom PRIVATE /usr/local/include) -- cgit v1.2.3 From 28f58ab0ae5bbb8b36668d8db56ec395177c80c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 May 2020 13:07:45 -0400 Subject: Ensure calcrom is executed from the correct directory --- .travis/calcrom/webhook.sh | 6 ++++-- CMakeLists.txt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis/calcrom/webhook.sh b/.travis/calcrom/webhook.sh index cb467cf0..fc02eef1 100644 --- a/.travis/calcrom/webhook.sh +++ b/.travis/calcrom/webhook.sh @@ -12,6 +12,8 @@ if [ ! -f $map_file ]; then exit 1 fi -make -C $(dirname "$0") -output=$($(dirname "$0")/calcrom | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g') +pushd $(dirname "$0") +make +output=$(./calcrom | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g') curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL +popd diff --git a/CMakeLists.txt b/CMakeLists.txt index 3eb28627..60be15bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,5 +10,5 @@ file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp") add_executable(PokeDiamond ${SOURCES}) target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include) -add_executable(calcrom scratch.cpp) +add_executable(calcrom .travis/calcrom/calcrom.cpp) target_include_directories(calcrom PRIVATE /usr/local/include) -- cgit v1.2.3 From 7a89e3397b920c7ba78a02c310e87d1acf6b203e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 May 2020 14:08:05 -0400 Subject: No need for the helper method in calcrom.cpp --- .travis/calcrom/calcrom.cpp | 6 +----- CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.travis/calcrom/calcrom.cpp b/.travis/calcrom/calcrom.cpp index 13a95b29..3f48511b 100644 --- a/.travis/calcrom/calcrom.cpp +++ b/.travis/calcrom/calcrom.cpp @@ -12,8 +12,7 @@ using namespace std; struct Glob : public vector { glob_t glob_result; public: - void glob(string const & pattern) { - clear(); + Glob(string const & pattern) { int result = ::glob(pattern.c_str(), GLOB_TILDE | GLOB_BRACE, NULL, &glob_result); if (result) { stringstream ss; @@ -21,9 +20,6 @@ public: throw runtime_error(ss.str()); } assign(glob_result.gl_pathv, glob_result.gl_pathv + glob_result.gl_pathc); - } - Glob(string const & pattern) { - glob(pattern); }; void operator~() { globfree(&glob_result); diff --git a/CMakeLists.txt b/CMakeLists.txt index 60be15bc..aac9651e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required (VERSION 2.8.11) project(PokeDiamond) +set(CMAKE_CXX_STANDARD 11) # TODO: Add commands -- cgit v1.2.3 From afbc33d68cd773c273bfbf744c7485d427f03e2e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 May 2020 14:22:17 -0400 Subject: Bikeshedding update of calcrom.cpp; sign calcrom.cpp --- .travis/calcrom/calcrom.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.travis/calcrom/calcrom.cpp b/.travis/calcrom/calcrom.cpp index 3f48511b..8b43e010 100644 --- a/.travis/calcrom/calcrom.cpp +++ b/.travis/calcrom/calcrom.cpp @@ -1,3 +1,19 @@ +/* + * CALCROM.CPP + * © PikalaxALT 2020 + * + * Simple C++ executable to measure the completion rate of Pokémon Diamond + * reverse engineering (decompilation). + * + * Requirements: + * - Must have C++11 compliant compiler. + * - MacOS X: Must provide elf.h on the include (-I) path. + * - Must be placed in ".travis/calcrom/". + * + * Changelog: + * - 1.0 (26 May 2020): Initial implementation + */ + #include #include #include @@ -13,10 +29,10 @@ struct Glob : public vector { glob_t glob_result; public: Glob(string const & pattern) { - int result = ::glob(pattern.c_str(), GLOB_TILDE | GLOB_BRACE, NULL, &glob_result); + int result = glob(pattern.c_str(), GLOB_TILDE | GLOB_BRACE, NULL, &glob_result); if (result) { stringstream ss; - ss << "Glob::glob(" << pattern << ") failed with error " << result << endl; + ss << "Glob(" << pattern << ") failed with error " << result << endl; throw runtime_error(ss.str()); } assign(glob_result.gl_pathv, glob_result.gl_pathv + glob_result.gl_pathc); @@ -30,8 +46,7 @@ int main() { fstream elf; Elf32_Ehdr ehdr; - Elf32_Shdr shdr_buf; - vector shdr(0); + vector shdr; // Accumulate sizes // src asm @@ -59,6 +74,7 @@ int main() elf.seekg(ehdr.e_shoff); shdr.resize(ehdr.e_shnum); elf.read((char *)shdr.data(), ehdr.e_shnum * ehdr.e_shentsize); + // Read .shstrtab if (shstrsz < shdr[ehdr.e_shstrndx].sh_size) { shstrtab = (char *)realloc(shstrtab, shdr[ehdr.e_shstrndx].sh_size); @@ -67,6 +83,8 @@ int main() elf.seekg(shdr[ehdr.e_shstrndx].sh_offset); elf.read(shstrtab, shdr[ehdr.e_shstrndx].sh_size); elf.close(); + + // Analyze sections for (Elf32_Shdr & hdr : shdr) { string shname = shstrtab + hdr.sh_name; bool is_text = (shname == ".text" || shname == ".init"); -- cgit v1.2.3 From 01388739e46f6e073da45702038f83681fcae711 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 May 2020 16:03:05 -0400 Subject: Remove spurious labels in libc.s --- arm9/asm/libc.s | 228 -------------------------------------------------------- 1 file changed, 228 deletions(-) diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s index 0e0b51c1..9012e8e8 100644 --- a/arm9/asm/libc.s +++ b/arm9/asm/libc.s @@ -630,7 +630,6 @@ __exit: ; 0x020DE1BC stmdb sp!, {r3-r5,lr} ldr r0, _020DE2CC ; =UNK_021D70D0 bl OS_TryLockMutex -_020DE1C8: ; 0x020DE1C8 cmp r0, #0x0 bne _020DE1F4 ldr r0, _020DE2D0 ; =OSi_ThreadInfo @@ -746,7 +745,6 @@ _020DE31C: cmp r1, #0x1 bne _020DE35C bl fflush -_020DE354: ; 0x020DE354 cmp r0, #0x0 movne r4, r9 _020DE35C: @@ -780,7 +778,6 @@ _020DE3A8: movs r1, r1, lsr #0x1d beq _020DE3C4 bl fflush -_020DE3BC: ; 0x020DE3BC cmp r0, #0x0 movne r4, r9 _020DE3C4: @@ -870,7 +867,6 @@ __load_buffer: strne r1, [r6, #0x0] cmp r0, #0x0 ldmneia sp!, {r4-r6,pc} -_020DE4C8: ; 0x020DE4C8 ldr r1, [r4, #0x18] ldr r0, [r4, #0x28] add r0, r1, r0 @@ -915,7 +911,6 @@ _020DE538: strne r1, [r4, #0x0] cmp r0, #0x0 ldmneia sp!, {r3-r5,pc} -_020DE564: ; 0x020DE564 ldr r1, [r5, #0x18] ldr r0, [r5, #0x28] add r0, r1, r0 @@ -923,7 +918,6 @@ _020DE564: ; 0x020DE564 _020DE574: mov r0, r5 bl __prep_buffer -_020DE57C: ; 0x020DE57C mov r0, #0x0 ldmia sp!, {r3-r5,pc} @@ -943,7 +937,6 @@ fread: ; 0x020DE584 add r0, r5, r4 mov r8, r2 bl OS_TryLockMutex -_020DE5BC: ; 0x020DE5BC cmp r0, #0x0 bne _020DE5E8 ldr r0, _020DE684 ; =OSi_ThreadInfo @@ -1014,7 +1007,6 @@ __fread: ; 0x020DE690 mov r1, #0x0 mov r4, r2 bl fwide -_020DE6B4: ; 0x020DE6B4 cmp r0, #0x0 bne _020DE6C8 mov r0, r7 @@ -1075,7 +1067,6 @@ _020DE778: tst r0, #0x1 beq _020DE7B0 bl __flush_line_buffered_output_files -_020DE790: ; 0x020DE790 cmp r0, #0x0 beq _020DE7B0 mov r0, #0x1 @@ -1154,7 +1145,6 @@ _020DE890: mov r1, r10 mov r2, r10 bl __load_buffer -_020DE8AC: ; 0x020DE8AC cmp r0, #0x0 beq _020DE8E4 cmp r0, #0x1 @@ -1205,7 +1195,6 @@ _020DE938: mov r2, #0x1 str r4, [r7, #0x20] bl __load_buffer -_020DE968: ; 0x020DE968 cmp r0, #0x0 beq _020DE9A4 cmp r0, #0x1 @@ -1229,7 +1218,6 @@ _020DE9A4: str r10, [r7, #0x20] add r5, r5, r1 bl __prep_buffer -_020DE9BC: ; 0x020DE9BC mov r0, #0x0 str r0, [r7, #0x28] _020DE9C4: @@ -1250,7 +1238,6 @@ __fwrite: mov r1, #0x0 mov r4, r2 bl fwide -_020DE9FC: ; 0x020DE9FC cmp r0, #0x0 bne _020DEA10 mov r0, r9 @@ -1373,7 +1360,6 @@ _020DEBB4: mov r0, r9 mov r1, #0x0 bl __flush_buffer -_020DEBC0: ; 0x020DEBC0 cmp r0, #0x0 beq _020DEBDC mov r0, #0x1 @@ -1401,7 +1387,6 @@ _020DEBF0: mov r0, r9 str r2, [r9, #0x24] bl __flush_buffer -_020DEC24: ; 0x020DEC24 cmp r0, #0x0 ldreq r0, [sp, #0x4] addeq r6, r6, r0 @@ -1415,7 +1400,6 @@ _020DEC44: mov r0, r9 str r7, [r9, #0x20] bl __prep_buffer -_020DEC54: ; 0x020DEC54 mov r0, #0x0 str r0, [r9, #0x28] _020DEC5C: @@ -1437,13 +1421,11 @@ fclose: ; 0x020DEC88 movs r5, r0 mvneq r0, #0x0 ldmeqia sp!, {r3-r5,pc} -_020DEC98: ; 0x020DEC98 ldr r1, [r5, #0x4] mov r1, r1, lsl #0x16 movs r1, r1, lsr #0x1d moveq r0, #0x0 ldmeqia sp!, {r3-r5,pc} -_020DECAC: ; 0x020DECAC bl fflush mov r4, r0 ldr r0, [r5, #0x0] @@ -1459,7 +1441,6 @@ _020DECAC: ; 0x020DECAC movs r1, r1, lsr #0x1f subne r0, r2, #0x1 ldmneia sp!, {r3-r5,pc} -_020DECE8: ; 0x020DECE8 cmp r4, #0x0 cmpeq r0, #0x0 movne r2, #0x1 @@ -1490,7 +1471,6 @@ _020DED34: cmp r0, #0x1 moveq r0, #0x0 ldmeqia sp!, {r4,pc} -_020DED48: ; 0x020DED48 ldr r0, [r4, #0x8] mov r1, r0, lsl #0x1d mov r1, r1, lsr #0x1d @@ -1517,7 +1497,6 @@ _020DEDA0: mov r0, r4 mov r1, #0x0 bl __flush_buffer -_020DEDAC: ; 0x020DEDAC cmp r0, #0x0 mov r0, #0x0 beq _020DEDCC @@ -1593,7 +1572,6 @@ _020DEE98: ldr r5, _020DEF6C ; =UNK_021D70D0 add r0, r5, r4 bl OS_TryLockMutex -_020DEEAC: ; 0x020DEEAC cmp r0, #0x0 bne _020DEED8 ldr r0, _020DEF70 ; =OSi_ThreadInfo @@ -1681,7 +1659,6 @@ _020DEFC8: bne _020DF018 mov r1, #0x0 bl __flush_buffer -_020DEFE4: ; 0x020DEFE4 cmp r0, #0x0 beq _020DF018 mov r0, #0x1 @@ -1812,7 +1789,6 @@ _020DF1A4: ldr r5, _020DF280 ; =UNK_021D70D0 add r0, r5, r4 bl OS_TryLockMutex -_020DF1B8: ; 0x020DF1B8 cmp r0, #0x0 bne _020DF1E4 ldr r0, _020DF284 ; =OSi_ThreadInfo @@ -1881,7 +1857,6 @@ rewind: ; 0x020DF290 mov r2, r1 strb r1, [r4, #0xd] bl fseek -_020DF2A8: ; 0x020DF2A8 mov r0, #0x0 strb r0, [r4, #0xd] ldmia sp!, {r4,pc} @@ -1955,7 +1930,6 @@ _020DF368: mov r1, r7 mov r2, r5 bl mbtowc -_020DF384: ; 0x020DF384 cmp r0, #0x0 add r8, r8, #0x2 addgt r7, r7, r0 @@ -1985,7 +1959,6 @@ wcstombs: mov r7, #0x0 moveq r0, #0x0 ldmeqia sp!, {r3-r9,pc} -_020DF3E0: ; 0x020DF3E0 add r6, sp, #0x0 _020DF3E4: ldrh r1, [r9, #0x0] @@ -2416,19 +2389,12 @@ _020DF920: subs r0, r3, #0x41 addpl pc, pc, r0, lsl #0x2 b _020DFB68 -_020DF94C: ; 0x020DF94C b _020DFA5C -_020DF950: ; 0x020DF950 b _020DFB68 -_020DF954: ; 0x020DF954 b _020DFB68 -_020DF958: ; 0x020DF958 b _020DFB68 -_020DF95C: ; 0x020DF95C b _020DFAA4 -_020DF960: ; 0x020DF960 b _020DFA24 -_020DF964: ; 0x020DF964 b _020DFA94 _020DF968: cmp r3, #0x58 @@ -3325,7 +3291,6 @@ _020E05C0: ldrb lr, [r0, #0x4] cmp r1, lr ldmgeia sp!, {r4,pc} -_020E05CC: ; 0x020E05CC add r12, r0, #0x5 add r2, r12, r1 add r2, r2, #0x1 @@ -3991,19 +3956,12 @@ _020E0ED4: subs r0, r1, #0x41 addpl pc, pc, r0, lsl #0x2 b _020E0F28 -_020E0F0C: ; 0x020E0F0C b _020E12A4 -_020E0F10: ; 0x020E0F10 b _020E148C -_020E0F14: ; 0x020E0F14 b _020E148C -_020E0F18: ; 0x020E0F18 b _020E148C -_020E0F1C: ; 0x020E0F1C b _020E123C -_020E0F20: ; 0x020E0F20 b _020E123C -_020E0F24: ; 0x020E0F24 b _020E123C _020E0F28: cmp r1, #0x25 @@ -4019,41 +3977,23 @@ _020E0F40: subs r0, r1, #0x64 addpl pc, pc, r0, lsl #0x2 b _020E0F9C -_020E0F54: ; 0x020E0F54 b _020E0FC0 -_020E0F58: ; 0x020E0F58 b _020E123C -_020E0F5C: ; 0x020E0F5C b _020E123C -_020E0F60: ; 0x020E0F60 b _020E123C -_020E0F64: ; 0x020E0F64 b _020E148C -_020E0F68: ; 0x020E0F68 b _020E0FC0 -_020E0F6C: ; 0x020E0F6C b _020E148C -_020E0F70: ; 0x020E0F70 b _020E148C -_020E0F74: ; 0x020E0F74 b _020E148C -_020E0F78: ; 0x020E0F78 b _020E148C -_020E0F7C: ; 0x020E0F7C b _020E13CC -_020E0F80: ; 0x020E0F80 b _020E1100 -_020E0F84: ; 0x020E0F84 b _020E148C -_020E0F88: ; 0x020E0F88 b _020E148C -_020E0F8C: ; 0x020E0F8C b _020E148C -_020E0F90: ; 0x020E0F90 b _020E130C -_020E0F94: ; 0x020E0F94 b _020E148C -_020E0F98: ; 0x020E0F98 b _020E1100 _020E0F9C: cmp r1, #0x63 @@ -4313,7 +4253,6 @@ _020E130C: cmp r1, #0x0 ldreq r1, _020E163C ; =UNK_02106DD8 bl wcstombs -_020E133C: ; 0x020E133C cmp r0, #0x0 blt _020E148C add r7, sp, #0x2c @@ -4346,7 +4285,6 @@ _020E1390: mov r2, r6 mov r1, #0x0 bl memchr -_020E13B0: ; 0x020E13B0 cmp r0, #0x0 subne r6, r0, r7 b _020E14D8 @@ -4554,7 +4492,6 @@ __FileWrite: ; 0x020E1644 mov r1, #0x1 mov r4, r2 bl __fwrite -_020E1660: ; 0x020E1660 cmp r4, r0 movne r5, #0x0 mov r0, r5 @@ -4587,7 +4524,6 @@ printf: ; 0x020E16B4 ldr r0, _020E17B4 ; =UNK_02106AA4 mvn r1, #0x0 bl fwide -_020E16C8: ; 0x020E16C8 cmp r0, #0x0 mvnge r0, #0x0 ldmgeia sp!, {r4,lr} @@ -4595,7 +4531,6 @@ _020E16C8: ; 0x020E16C8 bxge lr ldr r0, _020E17B8 ; =UNK_021D7118 bl OS_TryLockMutex -_020E16E4: ; 0x020E16E4 cmp r0, #0x0 bne _020E1710 ldr r0, _020E17BC ; =OSi_ThreadInfo @@ -4673,17 +4608,14 @@ vsnprintf: ; 0x020E17CC str r4, [sp, #0x4] str r12, [sp, #0x8] bl __pformatter -_020E17F8: ; 0x020E17F8 cmp r5, #0x0 addeq sp, sp, #0xc ldmeqia sp!, {r4-r5,pc} -_020E1804: ; 0x020E1804 cmp r0, r4 movcc r1, #0x0 addcc sp, sp, #0xc strccb r1, [r5, r0] ldmccia sp!, {r4-r5,pc} -_020E1818: ; 0x020E1818 cmp r4, #0x0 addne r1, r5, r4 movne r2, #0x0 @@ -4731,7 +4663,6 @@ qsort: ; 0x020E1888 mov r7, r3 addcc sp, sp, #0x10 ldmccia sp!, {r3-r11,pc} -_020E18AC: ; 0x020E18AC mov r0, r9, lsr #0x1 add r11, r0, #0x1 sub r0, r11, #0x1 @@ -4774,7 +4705,6 @@ _020E1934: cmp r9, #0x1 addeq sp, sp, #0x10 ldmeqia sp!, {r3-r11,pc} -_020E1944: ; 0x020E1944 ldr r0, [sp, #0x8] sub r0, r0, r8 str r0, [sp, #0x8] @@ -4820,7 +4750,6 @@ _020E19D8: cmp r9, r4, lsl #0x1 bhs _020E196C b _020E18E0 -_020E19E4: ; 0x020E19E4 add sp, sp, #0x10 ldmia sp!, {r3-r11,pc} @@ -5014,19 +4943,12 @@ _020E1C3C: subs r1, r0, #0x41 addpl pc, pc, r1, lsl #0x2 b _020E1EF0 -_020E1C68: ; 0x020E1C68 b _020E1D1C -_020E1C6C: ; 0x020E1C6C b _020E1EF0 -_020E1C70: ; 0x020E1C70 b _020E1EF0 -_020E1C74: ; 0x020E1C74 b _020E1EF0 -_020E1C78: ; 0x020E1C78 b _020E1D1C -_020E1C7C: ; 0x020E1C7C b _020E1D1C -_020E1C80: ; 0x020E1C80 b _020E1D1C _020E1C84: cmp r0, #0x58 @@ -5410,19 +5332,12 @@ _020E2158: subs r0, r1, #0x41 addpl pc, pc, r0, lsl #0x2 b _020E2198 -_020E217C: ; 0x020E217C b _020E2600 -_020E2180: ; 0x020E2180 b _020E2C3C -_020E2184: ; 0x020E2184 b _020E2C3C -_020E2188: ; 0x020E2188 b _020E2C3C -_020E218C: ; 0x020E218C b _020E2600 -_020E2190: ; 0x020E2190 b _020E2600 -_020E2194: ; 0x020E2194 b _020E2600 _020E2198: cmp r1, #0x25 @@ -5438,49 +5353,27 @@ _020E21B0: subs r0, r1, #0x63 addpl pc, pc, r0, lsl #0x2 b _020E221C -_020E21C4: ; 0x020E21C4 b _020E26C4 -_020E21C8: ; 0x020E21C8 b _020E2230 -_020E21CC: ; 0x020E21CC b _020E2600 -_020E21D0: ; 0x020E21D0 b _020E2600 -_020E21D4: ; 0x020E21D4 b _020E2600 -_020E21D8: ; 0x020E21D8 b _020E2C3C -_020E21DC: ; 0x020E21DC b _020E2238 -_020E21E0: ; 0x020E21E0 b _020E2C3C -_020E21E4: ; 0x020E21E4 b _020E2C3C -_020E21E8: ; 0x020E21E8 b _020E2C3C -_020E21EC: ; 0x020E21EC b _020E2C3C -_020E21F0: ; 0x020E21F0 b _020E2BC8 -_020E21F4: ; 0x020E21F4 b _020E242C -_020E21F8: ; 0x020E21F8 b _020E2C3C -_020E21FC: ; 0x020E21FC b _020E2C3C -_020E2200: ; 0x020E2200 b _020E2C3C -_020E2204: ; 0x020E2204 b _020E2908 -_020E2208: ; 0x020E2208 b _020E2C3C -_020E220C: ; 0x020E220C b _020E2434 -_020E2210: ; 0x020E2210 b _020E2C3C -_020E2214: ; 0x020E2214 b _020E2C3C -_020E2218: ; 0x020E2218 b _020E243C _020E221C: cmp r1, #0x61 @@ -5814,7 +5707,6 @@ _020E261C: ldr r0, _020E2C78 ; =UNK_02106B78 ldr r0, [r0, #0x0] bl _f2d -_020E2660: ; 0x020E2660 b _020E2668 _020E2664: add r4, r4, r2 @@ -5831,7 +5723,6 @@ _020E2668: b _020E26A0 _020E2690: bl _d2f -_020E2694: ; 0x020E2694 str r0, [r5, #0x0] b _020E26A0 _020E269C: @@ -6371,7 +6262,6 @@ _020E2D94: _020E2D9C: ldr r0, _020E2E98 ; =UNK_021D7178 bl OS_TryLockMutex -_020E2DA4: ; 0x020E2DA4 cmp r0, #0x0 bne _020E2DD0 ldr r0, _020E2E9C ; =OSi_ThreadInfo @@ -6472,7 +6362,6 @@ strcpy: ; 0x020E2EC8 strb r3, [r0, #0x0] cmp r3, #0x0 ldmeqia sp!, {r3-r5,pc} -_020E2EF8: ; 0x020E2EF8 rsbs r4, r4, #0x3 beq _020E2F18 _020E2F00: @@ -6480,7 +6369,6 @@ _020E2F00: cmp r3, #0x0 strb r3, [r2, #0x1]! ldmeqia sp!, {r3-r5,pc} -_020E2F10: ; 0x020E2F10 subs r4, r4, #0x1 bne _020E2F00 _020E2F18: @@ -6535,7 +6423,6 @@ _020E2FA0: bne _020E2FD4 subs r2, r2, #0x1 ldmeqia sp!, {r3,pc} -_020E2FC0: ; 0x020E2FC0 mov r1, #0x0 _020E2FC4: strb r1, [lr], #0x1 @@ -6598,7 +6485,6 @@ strcmp: ; 0x020E3060 subs r3, r2, r3 movne r0, r3 ldmneia sp!, {r4,pc} -_020E3078: ; 0x020E3078 and r4, r0, #0x3 and r3, r1, #0x3 cmp r3, r4 @@ -6608,7 +6494,6 @@ _020E3078: ; 0x020E3078 cmp r2, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4,pc} -_020E309C: ; 0x020E309C rsbs r4, r4, #0x3 beq _020E30CC _020E30A4: @@ -6617,11 +6502,9 @@ _020E30A4: subs r2, r3, r2 movne r0, r2 ldmneia sp!, {r4,pc} -_020E30B8: ; 0x020E30B8 cmp r3, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4,pc} -_020E30C4: ; 0x020E30C4 subs r4, r4, #0x1 bne _020E30A4 _020E30CC: @@ -6667,7 +6550,6 @@ _020E3148: subs r2, r3, r2 movne r0, r2 ldmneia sp!, {r4,pc} -_020E315C: ; 0x020E315C cmp r3, #0x0 bne _020E3148 mov r0, #0x0 @@ -6777,7 +6659,6 @@ strstr: ; 0x020E32A4 ldrneb r2, [r1, #0x0] cmpne r2, #0x0 ldmeqia sp!, {r4,pc} -_020E32B8: ; 0x020E32B8 ldrb r3, [r0, #0x0] add r4, r0, #0x1 cmp r3, #0x0 @@ -6888,23 +6769,14 @@ _020E3418: cmp r5, #0x0 addge pc, pc, r5, lsl #0x2 b _020E4104 -_020E3444: ; 0x020E3444 b _020E4104 -_020E3448: ; 0x020E3448 b _020E34D4 -_020E344C: ; 0x020E344C b _020E38B8 -_020E3450: ; 0x020E3450 b _020E4104 -_020E3454: ; 0x020E3454 b _020E3968 -_020E3458: ; 0x020E3458 b _020E4104 -_020E345C: ; 0x020E345C b _020E4104 -_020E3460: ; 0x020E3460 b _020E4104 -_020E3464: ; 0x020E3464 b _020E3990 _020E3468: cmp r5, #0x10 @@ -7219,7 +7091,6 @@ _020E3854: mov r3, r1 mov r1, r0 bl _dsub -_020E3884: ; 0x020E3884 b _020E388C _020E3888: bl nan @@ -7533,23 +7404,14 @@ _020E3C98: cmp r10, #0x0 addge pc, pc, r10, lsl #0x2 b _020E4104 -_020E3CB8: ; 0x020E3CB8 b _020E4104 -_020E3CBC: ; 0x020E3CBC b _020E3D0C -_020E3CC0: ; 0x020E3CC0 b _020E3D5C -_020E3CC4: ; 0x020E3CC4 b _020E4104 -_020E3CC8: ; 0x020E3CC8 b _020E3D84 -_020E3CCC: ; 0x020E3CCC b _020E4104 -_020E3CD0: ; 0x020E3CD0 b _020E4104 -_020E3CD4: ; 0x020E3CD4 b _020E4104 -_020E3CD8: ; 0x020E3CD8 b _020E3E94 _020E3CDC: cmp r10, #0x10 @@ -7951,14 +7813,12 @@ _020E423C: addne sp, sp, #0xa8 movne r1, r0 ldmneia sp!, {r3-r11,pc} -_020E4264: ; 0x020E4264 ldr r0, [sp, #0x28] cmp r0, #0x0 ldreq r1, _020E4310 ; =UNK_02106B7C addeq sp, sp, #0xa8 ldmeqia r1, {r0-r1} ldmeqia sp!, {r3-r11,pc} -_020E427C: ; 0x020E427C ldr r1, _020E4310 ; =UNK_02106B7C mov r0, #0x0 ldmia r1, {r2-r3} @@ -8289,23 +8149,14 @@ _020E4710: cmp r4, #0x0 addge pc, pc, r4, lsl #0x2 b _020E49C8 -_020E4724: ; 0x020E4724 b _020E49C8 -_020E4728: ; 0x020E4728 b _020E4754 -_020E472C: ; 0x020E472C b _020E4800 -_020E4730: ; 0x020E4730 b _020E49C8 -_020E4734: ; 0x020E4734 b _020E483C -_020E4738: ; 0x020E4738 b _020E49C8 -_020E473C: ; 0x020E473C b _020E49C8 -_020E4740: ; 0x020E4740 b _020E49C8 -_020E4744: ; 0x020E4744 b _020E487C _020E4748: cmp r4, #0x10 @@ -8594,23 +8445,14 @@ _020E4B0C: cmp r4, #0x0 addge pc, pc, r4, lsl #0x2 b _020E4E08 -_020E4B20: ; 0x020E4B20 b _020E4E08 -_020E4B24: ; 0x020E4B24 b _020E4B50 -_020E4B28: ; 0x020E4B28 b _020E4BFC -_020E4B2C: ; 0x020E4B2C b _020E4E08 -_020E4B30: ; 0x020E4B30 b _020E4C38 -_020E4B34: ; 0x020E4B34 b _020E4E08 -_020E4B38: ; 0x020E4B38 b _020E4E08 -_020E4B3C: ; 0x020E4B3C b _020E4E08 -_020E4B40: ; 0x020E4B40 b _020E4C78 _020E4B44: cmp r4, #0x10 @@ -8873,7 +8715,6 @@ strtoul: ; 0x020E4E80 sub r1, lr, #0x80000001 str r12, [sp, #0x8] bl __strtoul -_020E4EC8: ; 0x020E4EC8 cmp r4, #0x0 ldrne r1, [sp, #0x1c] addne r1, r5, r1 @@ -8917,7 +8758,6 @@ strtold2: ; 0x020E4F18 sub r1, lr, #0x80000001 str r12, [sp, #0x8] bl __strtoul -_020E4F60: ; 0x020E4F60 cmp r4, #0x0 ldrne r1, [sp, #0x1c] addne r1, r5, r1 @@ -9265,19 +9105,12 @@ _020E53A8: subs r0, r3, #0x41 addpl pc, pc, r0, lsl #0x2 b _020E55EC -_020E53D4: ; 0x020E53D4 b _020E54E0 -_020E53D8: ; 0x020E53D8 b _020E55EC -_020E53DC: ; 0x020E53DC b _020E55EC -_020E53E0: ; 0x020E53E0 b _020E55EC -_020E53E4: ; 0x020E53E4 b _020E5528 -_020E53E8: ; 0x020E53E8 b _020E54A8 -_020E53EC: ; 0x020E53EC b _020E5518 _020E53F0: cmp r3, #0x58 @@ -10097,7 +9930,6 @@ _020E5F0C: ldrb lr, [r0, #0x4] cmp r1, lr ldmgeia sp!, {r4,pc} -_020E5F18: ; 0x020E5F18 add r12, r0, #0x5 add r2, r12, r1 add r2, r2, #0x1 @@ -10690,19 +10522,12 @@ _020E6710: subs r0, r1, #0x41 addpl pc, pc, r0, lsl #0x2 b _020E6768 -_020E674C: ; 0x020E674C b _020E6AEC -_020E6750: ; 0x020E6750 b _020E6D90 -_020E6754: ; 0x020E6754 b _020E6D90 -_020E6758: ; 0x020E6758 b _020E6D90 -_020E675C: ; 0x020E675C b _020E6A7C -_020E6760: ; 0x020E6760 b _020E6A7C -_020E6764: ; 0x020E6764 b _020E6A7C _020E6768: cmp r1, #0x25 @@ -10718,41 +10543,23 @@ _020E6780: subs r0, r1, #0x64 addpl pc, pc, r0, lsl #0x2 b _020E67DC -_020E6794: ; 0x020E6794 b _020E6804 -_020E6798: ; 0x020E6798 b _020E6A7C -_020E679C: ; 0x020E679C b _020E6A7C -_020E67A0: ; 0x020E67A0 b _020E6A7C -_020E67A4: ; 0x020E67A4 b _020E6D90 -_020E67A8: ; 0x020E67A8 b _020E6804 -_020E67AC: ; 0x020E67AC b _020E6D90 -_020E67B0: ; 0x020E67B0 b _020E6D90 -_020E67B4: ; 0x020E67B4 b _020E6D90 -_020E67B8: ; 0x020E67B8 b _020E6D90 -_020E67BC: ; 0x020E67BC b _020E6C98 -_020E67C0: ; 0x020E67C0 b _020E6940 -_020E67C4: ; 0x020E67C4 b _020E6D90 -_020E67C8: ; 0x020E67C8 b _020E6D90 -_020E67CC: ; 0x020E67CC b _020E6D90 -_020E67D0: ; 0x020E67D0 b _020E6B5C -_020E67D4: ; 0x020E67D4 b _020E6D90 -_020E67D8: ; 0x020E67D8 b _020E6940 _020E67DC: cmp r1, #0x63 @@ -11034,7 +10841,6 @@ _020E6BB0: mov r2, r7 mov r1, #0x0 bl wmemchr -_020E6BD0: ; 0x020E6BD0 cmp r0, #0x0 beq _020E6DDC sub r0, r0, r6 @@ -11074,7 +10880,6 @@ _020E6C40: mov r2, r6 mov r1, #0x0 bl memchr -_020E6C60: ; 0x020E6C60 cmp r0, #0x0 subne r6, r0, r5 b _020E6C78 @@ -11340,11 +11145,9 @@ vswprintf: ; 0x020E6FAC str r4, [sp, #0x4] str r12, [sp, #0x8] bl __wpformatter -_020E6FD8: ; 0x020E6FD8 cmp r0, #0x0 addlt sp, sp, #0xc ldmltia sp!, {r4-r5,pc} -_020E6FE4: ; 0x020E6FE4 cmp r0, r4 bhs _020E7000 mov r1, r0, lsl #0x1 @@ -12061,7 +11864,6 @@ _020E7794: mov r2, r4 mov r3, r10 bl _dadd -_020E7A6C: ; 0x020E7A6C mov r0, #0x0 ldr r3, _020E76B0 ; =0x40080000 mov r2, r0 @@ -12109,7 +11911,6 @@ _020E7A6C: ; 0x020E7A6C mov r2, r9 mov r3, r11 bl _dadd -_020E7B28: ; 0x020E7B28 mov r0, #0x0 mov r2, r4 mov r3, r10 @@ -12860,7 +12661,6 @@ _020E85EC: _020E8620: strb r1, [r12], #-0x1 b _020E85EC -_020E8628: ; 0x020E8628 bx lr arm_func_start __rounddec @@ -12870,16 +12670,13 @@ __rounddec: ; 0x020E862C mov r5, r0 cmp r4, #0x0 ldmleia sp!, {r3-r5,pc} -_020E8640: ; 0x020E8640 ldrb r2, [r5, #0x4] cmp r4, r2 ldmgeia sp!, {r3-r5,pc} -_020E864C: ; 0x020E864C bl __must_round strb r4, [r5, #0x4] cmp r0, #0x0 ldmltia sp!, {r3-r5,pc} -_020E865C: ; 0x020E865C mov r0, r5 mov r1, r4 bl __dorounddecup @@ -13027,12 +12824,10 @@ _020E8850: addcs sp, sp, #0x40 strb r3, [r0, #0x4] ldmcsia sp!, {r3-r11,pc} -_020E8860: ; 0x020E8860 ldrb r1, [r6, #0x0] cmp r1, #0x5 addcc sp, sp, #0x40 ldmccia sp!, {r3-r11,pc} -_020E8870: ; 0x020E8870 bne _020E88A8 add r2, r6, #0x1 cmp r2, r7 @@ -13081,10 +12876,8 @@ _020E88F8: ldrsb r2, [r1, #0x0] cmp r2, #0x0 ldmeqia sp!, {r3,pc} -_020E8908: ; 0x020E8908 cmp r2, #0x5 ldmltia sp!, {r3,pc} -_020E8910: ; 0x020E8910 bgt _020E894C ldrsb r2, [r1, #0x1] add r1, r1, #0x1 @@ -13348,7 +13141,6 @@ _020E8BE4: tst r4, #0x1 addeq sp, sp, #0x4c ldmeqia sp!, {r4-r5,pc} -_020E8C14: ; 0x020E8C14 add r3, sp, #0x0 mov r12, r5 mov r2, #0x9 @@ -13444,7 +13236,6 @@ _020E8D4C: cmp r3, r2 movne r0, #0x0 ldmneia sp!, {r4,pc} -_020E8D68: ; 0x020E8D68 add r12, r12, #0x1 cmp r12, lr blt _020E8D4C @@ -13460,7 +13251,6 @@ _020E8D88: cmp r1, #0x0 movne r0, #0x0 ldmneia sp!, {r4,pc} -_020E8D9C: ; 0x020E8D9C ldrb r1, [r0, #0x4] add r12, r12, #0x1 cmp r12, r1 @@ -13488,7 +13278,6 @@ _020E8DE0: cmp r2, #0x0 moveq r0, #0x0 ldmeqia sp!, {r3-r5,pc} -_020E8DF0: ; 0x020E8DF0 ldrsh r3, [r1, #0x2] ldrsh r2, [r0, #0x2] cmp r2, r3 @@ -13509,11 +13298,9 @@ _020E8E20: cmp r2, r3 movcc r0, #0x1 ldmccia sp!, {r3-r5,pc} -_020E8E3C: ; 0x020E8E3C cmp r3, r2 movcc r0, #0x0 ldmccia sp!, {r3-r5,pc} -_020E8E48: ; 0x020E8E48 add r12, r12, #0x1 cmp r12, lr blt _020E8E20 @@ -13528,7 +13315,6 @@ _020E8E64: cmp r0, #0x0 movne r0, #0x1 ldmneia sp!, {r3-r5,pc} -_020E8E78: ; 0x020E8E78 ldrb r0, [r1, #0x4] add r12, r12, #0x1 cmp r12, r0 @@ -13560,7 +13346,6 @@ _020E8EA8: ldrb r1, [r2, #0x5] cmp r1, #0x0 ldmeqia sp!, {r3-r7,pc} -_020E8EDC: ; 0x020E8EDC ldrb r7, [r0, #0x4] ldrb r3, [r2, #0x4] ldrsh r4, [r0, #0x2] @@ -13748,7 +13533,6 @@ __num2dec_internal: mov r0, r8 mov r1, r6 bl __signbitf -_020E9160: ; 0x020E9160 cmp r0, #0x0 movne r1, #0x1 moveq r1, #0x0 @@ -13851,7 +13635,6 @@ __num2dec_internal2: ; 0x020E92C0 ldrb r0, [r4, #0x5] cmp r0, #0x9 ldmhiia sp!, {r3-r5,pc} -_020E92E0: ; 0x020E92E0 cmp r5, #0x20 movgt r5, #0x20 mov r0, r4 @@ -14002,7 +13785,6 @@ _020E94C8: add r0, sp, #0xb0 add r1, sp, #0xd6 bl __less_dec -_020E94FC: ; 0x020E94FC cmp r0, #0x0 beq _020E9538 ldrsb r0, [r4, #0x0] @@ -14061,7 +13843,6 @@ _020E9594: mov r0, r4 mov r1, r9 bl _dadd -_020E95D4: ; 0x020E95D4 cmp r6, #0x0 mov r6, r0 mov r10, r1 @@ -14135,13 +13916,11 @@ _020E96C0: add r0, sp, #0x8a add r1, sp, #0xd6 bl __equals_dec -_020E96E4: ; 0x020E96E4 cmp r0, #0x0 bne _020E9934 add r0, sp, #0x8a add r1, sp, #0xd6 bl __less_dec -_020E96F8: ; 0x020E96F8 cmp r0, #0x0 movne r5, #0x1 ldr r1, [sp, #0x8] @@ -14174,13 +13953,11 @@ _020E975C: ldr r2, [sp, #0x4] add r0, sp, #0x64 bl __num2dec_internal -_020E976C: ; 0x020E976C cmp r5, #0x0 beq _020E9788 add r0, sp, #0x64 add r1, sp, #0xd6 bl __less_dec -_020E9780: ; 0x020E9780 cmp r0, #0x0 beq _020E98AC _020E9788: @@ -14189,7 +13966,6 @@ _020E9788: add r0, sp, #0xd6 add r1, sp, #0x64 bl __less_dec -_020E979C: ; 0x020E979C cmp r0, #0x0 bne _020E9864 add r3, sp, #0x8a @@ -14275,7 +14051,6 @@ _020E98AC: add r0, sp, #0x3e add r1, sp, #0x18 bl __equals_dec -_020E98D8: ; 0x020E98D8 cmp r0, #0x0 beq _020E9910 ldr r1, [sp, #0x8] @@ -14294,7 +14069,6 @@ _020E9910: add r0, sp, #0x3e add r1, sp, #0x18 bl __less_dec -_020E991C: ; 0x020E991C cmp r0, #0x0 bne _020E9934 ldr r1, [sp, #0x0] @@ -14448,10 +14222,8 @@ _020E9B0C: cmp r12, r2 mvncc r0, #0x0 ldmccia sp!, {r3,pc} -_020E9B1C: ; 0x020E9B1C movhi r0, #0x1 ldmhiia sp!, {r3,pc} -_020E9B24: ; 0x020E9B24 cmp r12, #0x0 bne _020E9AD8 mov r0, #0x0 -- cgit v1.2.3