From 8ca0620393b8f591450c88396b0e5939875e6285 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 4 May 2020 17:59:41 -0400 Subject: Dism module 15 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 19 + arm9/modules/15/asm/module_15.s | 8753 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 8786 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/15/asm/module_15.s (limited to 'arm9') diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 27b64b23..7f8c3d74 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -25,7 +25,7 @@ MEMORY { MODULE_12 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_13 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_14 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_15 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_15 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_16 (RWX) : ORIGIN=0, LENGTH=0 MODULE_17 (RWX) : ORIGIN=0, LENGTH=0 MODULE_18 (RWX) : ORIGIN=0, LENGTH=0 @@ -551,7 +551,19 @@ SECTIONS { module_14.o (.bss) } >> MODULE_14 - OVERLAY_FILE(15, 0x233400, FILE_237400.o) + .MODULE.15 : AT (0x233400) + { + module_15.o (.text) + module_15.o (.sdata) + module_15.o (.data) + } > MODULE_15 + + .MODULE.15.bss : + { + module_15.o (.sbss) + module_15.o (.bss) + } >> MODULE_15 + OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o) OVERLAY_FILE(17, 0x260200, FILE_264200.o) OVERLAY_FILE(18, 0x267200, FILE_26B200.o) diff --git a/arm9/global.inc b/arm9/global.inc index 4d3d2812..b86d7345 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4979,6 +4979,25 @@ .extern FS_RegisterArchiveName .extern FS_SetArchiveProc .extern FS_UnloadArchiveTables +.extern FUN_0200D06C +.extern FUN_02013870 +.extern FUN_02013974 +.extern FUN_020139B0 +.extern FUN_02013A58 +.extern FUN_02021E8C +.extern FUN_0208540C +.extern FUN_02085424 +.extern FUN_02085428 +.extern FUN_0208545C +.extern FUN_020854A0 +.extern FUN_02088F0C +.extern FUN_02088F4C +.extern FUN_020892C4 +.extern FUN_020892CC +.extern FUN_020892EC +.extern FUN_02089300 +.extern FUN_02089310 +.extern FUN_02089338 .extern FUN_02095324 .extern FUN_02095330 .extern FUN_02095AE0 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s new file mode 100644 index 00000000..bd9eb99a --- /dev/null +++ b/arm9/modules/15/asm/module_15.s @@ -0,0 +1,8753 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD15_021D74E0 +MOD15_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D74F2 + cmp r1, #1 + beq _021D752A + b _021D7552 +_021D74F2: + mov r1, #0 + mov r0, #0x3e + add r2, r1, #0 + bl FUN_0200433C + mov r2, #2 + mov r0, #3 + mov r1, #0x22 + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0xa + mov r0, #3 + mov r1, #0x23 + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + bl MOD15_021D7628 + ldr r0, [r0, #0x14] + mov r1, #0 + bl MOD15_021D8900 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7552 +_021D752A: + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7552 + ldr r0, [r4, #4] + cmp r0, #2 + bne _021D7548 + ldr r0, [r4, #0x14] + bl MOD15_021D9538 + b _021D754A +_021D7548: + mov r0, #0 +_021D754A: + add r4, #0x64 + strb r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7552: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D7558 +MOD15_021D7558: ; 0x021D7558 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _021D7594 ; =0x021C48B8 + ldr r1, [r0, #0x48] + strh r1, [r4, #0x30] + ldr r1, [r0, #0x44] + strh r1, [r4, #0x32] + ldr r0, [r0, #0x4c] + strh r0, [r4, #0x34] + ldr r0, [r4, #0x40] + bl FUN_02022144 + ldr r2, [r4, #0x2c] + cmp r2, #0 + beq _021D7586 + add r0, r4, #0 + add r4, #0x28 + add r1, r4, #0 + blx r2 + mov r0, #0 + pop {r4, pc} +_021D7586: + add r1, r4, #0 + ldr r2, [r4, #0x20] + add r0, r4, #0 + add r1, #0x1c + blx r2 + pop {r4, pc} + nop +_021D7594: .word 0x021C48B8 + + thumb_func_start MOD15_021D7598 +MOD15_021D7598: ; 0x021D7598 + push {r4, lr} + add r4, r2, #0 + cmp r1, #3 + bhi _021D7600 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75AC: ; jump table + .short _021D75B4 - _021D75AC - 2 ; case 0 + .short _021D75D4 - _021D75AC - 2 ; case 1 + .short _021D75F6 - _021D75AC - 2 ; case 2 + .short _021D75D4 - _021D75AC - 2 ; case 3 +_021D75B4: + str r0, [r4, #0x38] + cmp r0, #2 + beq _021D75C0 + cmp r0, #3 + beq _021D75CA + pop {r4, pc} +_021D75C0: + ldr r0, [r4, #0x14] + mov r1, #0x19 + bl MOD15_021D8900 + pop {r4, pc} +_021D75CA: + ldr r0, [r4, #0x14] + mov r1, #0x1a + bl MOD15_021D8900 + pop {r4, pc} +_021D75D4: + cmp r0, #2 + beq _021D75DE + cmp r0, #3 + beq _021D75E8 + b _021D75F0 +_021D75DE: + ldr r0, [r4, #0x14] + mov r1, #0x1b + bl MOD15_021D8900 + b _021D75F0 +_021D75E8: + ldr r0, [r4, #0x14] + mov r1, #0x1c + bl MOD15_021D8900 +_021D75F0: + mov r0, #4 + str r0, [r4, #0x38] + pop {r4, pc} +_021D75F6: + sub r1, r0, #2 + cmp r1, #1 + bhi _021D7604 + str r0, [r4, #0x38] + pop {r4, pc} +_021D7600: + mov r0, #4 + str r0, [r4, #0x38] +_021D7604: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D7608 +MOD15_021D7608: ; 0x021D7608 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + add r1, r4, #0 + bl MOD15_021D7774 + mov r0, #0x22 + bl FUN_020168D0 + mov r0, #0x23 + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D7628 +MOD15_021D7628: ; 0x021D7628 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x68 + mov r2, #0x22 + bl FUN_02006268 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4] + bl FUN_0208540C + str r0, [r4, #4] + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4] + add r1, #0x10 + add r2, #8 + bl FUN_02085428 + ldr r0, [r4, #4] + cmp r0, #2 + bne _021D7664 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x60 + add r1, #8 + bl MOD15_021D76C4 +_021D7664: + ldr r1, [r4] + mov r0, #0x22 + bl FUN_02088F0C + str r0, [r4, #0x18] + ldr r1, [r4, #0x18] + add r0, r4, #0 + bl MOD15_021D87F8 + str r0, [r4, #0x14] + mov r0, #0x22 + str r0, [sp] + ldr r0, _021D76B4 ; =0x021DB880 + ldr r2, _021D76B8 ; =MOD15_021D7598 + mov r1, #5 + add r3, r4, #0 + bl FUN_020220C4 + str r0, [r4, #0x40] + mov r1, #0 + str r1, [r4, #0x44] + add r0, r4, #0 + str r1, [r4, #0x48] + add r0, #0x65 + strb r1, [r0] + str r1, [r4, #0x2c] + ldr r0, _021D76BC ; =MOD15_021D779C + str r1, [r4, #0x28] + str r0, [r4, #0x20] + add r0, r4, #0 + str r1, [r4, #0x1c] + add r0, #0x4e + strh r1, [r0] + ldr r1, _021D76C0 ; =MOD15_021D83BC + add r0, r4, #0 + bl MOD15_021D83AC + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D76B4: .word 0x021DB880 +_021D76B8: .word MOD15_021D7598 +_021D76BC: .word MOD15_021D779C +_021D76C0: .word MOD15_021D83BC + + thumb_func_start MOD15_021D76C4 +MOD15_021D76C4: ; 0x021D76C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02013920 + strh r0, [r5] + mov r0, #0 + ldrsh r0, [r5, r0] + bl FUN_02013974 + strb r0, [r5, #3] + add r0, r4, #0 + bl FUN_02013924 + strb r0, [r5, #2] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D76E8 +MOD15_021D76E8: ; 0x021D76E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #2 + add r4, r1, #0 + ldrsb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, #2] + ldrsb r1, [r5, r0] + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r1, r0 + blt _021D771C + mov r1, #0 + strb r1, [r5, #2] + ldrsh r0, [r5, r1] + add r0, r0, #1 + strh r0, [r5] + ldrsh r0, [r5, r1] + cmp r0, #5 + blt _021D7712 + strh r1, [r5] +_021D7712: + mov r0, #0 + ldrsh r0, [r5, r0] + bl FUN_02013974 + strb r0, [r5, #3] +_021D771C: + mov r1, #0 + mov r2, #2 + ldrsh r1, [r5, r1] + ldrsb r2, [r5, r2] + add r0, r4, #0 + bl FUN_02013980 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D772C +MOD15_021D772C: ; 0x021D772C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #2 + add r4, r1, #0 + ldrsb r1, [r5, r0] + sub r1, r1, #1 + strb r1, [r5, #2] + ldrsb r0, [r5, r0] + cmp r0, #0 + bge _021D7764 + mov r0, #0 + ldrsh r1, [r5, r0] + sub r1, r1, #1 + strh r1, [r5] + ldrsh r0, [r5, r0] + cmp r0, #0 + bge _021D7752 + mov r0, #4 + strh r0, [r5] +_021D7752: + mov r0, #0 + ldrsh r0, [r5, r0] + bl FUN_02013974 + strb r0, [r5, #3] + mov r0, #3 + ldrsb r0, [r5, r0] + sub r0, r0, #1 + strb r0, [r5, #2] +_021D7764: + mov r1, #0 + mov r2, #2 + ldrsh r1, [r5, r1] + ldrsb r2, [r5, r2] + add r0, r4, #0 + bl FUN_02013980 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D7774 +MOD15_021D7774: ; 0x021D7774 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x40] + add r4, r1, #0 + bl FUN_0202212C + ldr r0, [r5, #0x14] + bl MOD15_021D8888 + ldr r0, [r5, #0x18] + bl FUN_02088F4C + add r0, r4, #0 + bl FUN_0200627C + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D7794 +MOD15_021D7794: ; 0x021D7794 + str r1, [r0, #0x20] + mov r1, #0 + str r1, [r0, #0x1c] + bx lr + + thumb_func_start MOD15_021D779C +MOD15_021D779C: ; 0x021D779C + push {r3, lr} + ldr r2, [r0, #4] + lsl r3, r2, #2 + ldr r2, _021D77AC ; =0x021DB874 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_021D77AC: .word 0x021DB874 + + thumb_func_start MOD15_021D77B0 +MOD15_021D77B0: ; 0x021D77B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D77C6 + cmp r0, #1 + beq _021D7850 + cmp r0, #2 + beq _021D7864 + b _021D7876 +_021D77C6: + ldr r1, [r5, #0x38] + cmp r1, #0 + bne _021D77D6 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + bne _021D77EC +_021D77D6: + cmp r1, #1 + bne _021D77E4 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #1 + bne _021D77EC +_021D77E4: + ldrh r0, [r5, #0x30] + mov r1, #4 + tst r1, r0 + beq _021D77F6 +_021D77EC: + ldr r1, _021D787C ; =MOD15_021D8698 + add r0, r5, #0 + bl MOD15_021D83AC + b _021D7876 +_021D77F6: + mov r1, #0x88 + tst r1, r0 + beq _021D7818 + ldr r0, _021D7880 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #4 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r4] + b _021D7876 +_021D7818: + mov r1, #2 + tst r1, r0 + beq _021D782E + ldr r0, _021D7880 ; =0x000005DC + bl FUN_020054C8 + ldr r1, _021D7884 ; =MOD15_021D851C + add r0, r5, #0 + bl MOD15_021D83AC + b _021D7876 +_021D782E: + mov r1, #1 + tst r0, r1 + beq _021D7876 + ldr r0, _021D7880 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #6 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r4] + b _021D7876 +_021D7850: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7876 + ldr r1, _021D7888 ; =MOD15_021D7BC8 + add r0, r5, #0 + bl MOD15_021D7794 + b _021D7876 +_021D7864: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7876 + ldr r1, _021D788C ; =MOD15_021D7D00 + add r0, r5, #0 + bl MOD15_021D7794 +_021D7876: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D787C: .word MOD15_021D8698 +_021D7880: .word 0x000005DC +_021D7884: .word MOD15_021D851C +_021D7888: .word MOD15_021D7BC8 +_021D788C: .word MOD15_021D7D00 + + thumb_func_start MOD15_021D7890 +MOD15_021D7890: ; 0x021D7890 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D78A6 + cmp r0, #1 + beq _021D7980 + cmp r0, #2 + beq _021D7994 + b _021D79A6 +_021D78A6: + ldr r1, [r5, #0x38] + cmp r1, #0 + bne _021D78B6 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + bne _021D78CC +_021D78B6: + cmp r1, #1 + bne _021D78C4 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #1 + bne _021D78CC +_021D78C4: + ldrh r0, [r5, #0x30] + mov r1, #4 + tst r1, r0 + beq _021D78D6 +_021D78CC: + ldr r1, _021D79AC ; =MOD15_021D8698 + add r0, r5, #0 + bl MOD15_021D83AC + b _021D79A6 +_021D78D6: + mov r1, #0x88 + tst r1, r0 + beq _021D78F8 + ldr r0, _021D79B0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #4 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r4] + b _021D79A6 +_021D78F8: + mov r1, #0x20 + tst r1, r0 + beq _021D7920 + add r0, r5, #0 + add r0, #0x4e + ldrh r0, [r0] + cmp r0, #0 + beq _021D79A6 + ldr r0, _021D79B0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x4e + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #0xc + bl MOD15_021D8900 + b _021D79A6 +_021D7920: + mov r1, #0x10 + tst r1, r0 + beq _021D7948 + add r0, r5, #0 + add r0, #0x4e + ldrh r0, [r0] + cmp r0, #0 + bne _021D79A6 + ldr r0, _021D79B0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #1 + add r0, #0x4e + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #0xc + bl MOD15_021D8900 + b _021D79A6 +_021D7948: + mov r1, #2 + tst r1, r0 + beq _021D795E + ldr r0, _021D79B0 ; =0x000005DC + bl FUN_020054C8 + ldr r1, _021D79B4 ; =MOD15_021D851C + add r0, r5, #0 + bl MOD15_021D83AC + b _021D79A6 +_021D795E: + mov r1, #1 + tst r0, r1 + beq _021D79A6 + ldr r0, _021D79B0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #6 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r4] + b _021D79A6 +_021D7980: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D79A6 + ldr r1, _021D79B8 ; =MOD15_021D7BC8 + add r0, r5, #0 + bl MOD15_021D7794 + b _021D79A6 +_021D7994: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D79A6 + ldr r1, _021D79BC ; =MOD15_021D7D00 + add r0, r5, #0 + bl MOD15_021D7794 +_021D79A6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D79AC: .word MOD15_021D8698 +_021D79B0: .word 0x000005DC +_021D79B4: .word MOD15_021D851C +_021D79B8: .word MOD15_021D7BC8 +_021D79BC: .word MOD15_021D7D00 + + thumb_func_start MOD15_021D79C0 +MOD15_021D79C0: ; 0x021D79C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #4 + bhi _021D7A3C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D79D8: ; jump table + .short _021D79E2 - _021D79D8 - 2 ; case 0 + .short _021D79F2 - _021D79D8 - 2 ; case 1 + .short _021D7B76 - _021D79D8 - 2 ; case 2 + .short _021D7B88 - _021D79D8 - 2 ; case 3 + .short _021D7B9C - _021D79D8 - 2 ; case 4 +_021D79E2: + ldr r0, [r4, #0x14] + bl MOD15_021D9538 + add r1, r4, #0 + add r1, #0x64 + strb r0, [r1] + mov r0, #1 + str r0, [r5] +_021D79F2: + ldr r1, [r4, #0x38] + cmp r1, #0 + bne _021D7A02 + add r0, r4, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + bne _021D7A18 +_021D7A02: + cmp r1, #1 + bne _021D7A10 + add r0, r4, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #1 + bne _021D7A18 +_021D7A10: + ldrh r0, [r4, #0x30] + mov r1, #4 + tst r1, r0 + beq _021D7A22 +_021D7A18: + ldr r1, _021D7BB4 ; =MOD15_021D8698 + add r0, r4, #0 + bl MOD15_021D83AC + b _021D7BAE +_021D7A22: + mov r1, #0x40 + tst r1, r0 + beq _021D7A5C + add r0, r4, #0 + add r0, #0x64 + ldrb r0, [r0] + cmp r0, #0 + beq _021D7A3C + add r0, r4, #0 + add r0, #0x4e + ldrh r0, [r0] + cmp r0, #0 + bne _021D7A3E +_021D7A3C: + b _021D7BAE +_021D7A3E: + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x4e + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x4e + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #0xc + bl MOD15_021D8900 + b _021D7BAE +_021D7A5C: + mov r1, #0x80 + tst r0, r1 + beq _021D7AAC + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x64 + ldrb r2, [r0] + cmp r2, #0 + beq _021D7A96 + add r0, r4, #0 + add r0, #0x4e + ldrh r1, [r0] + sub r0, r2, #1 + cmp r1, r0 + bge _021D7A96 + add r0, r4, #0 + add r0, #0x4e + ldrh r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x4e + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #0xc + bl MOD15_021D8900 + b _021D7AAC +_021D7A96: + add r0, r4, #0 + mov r1, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #4 + bl MOD15_021D8900 + mov r0, #3 + str r0, [r5] + b _021D7BAE +_021D7AAC: + ldrh r1, [r4, #0x30] + mov r0, #8 + tst r0, r1 + bne _021D7AC6 + mov r0, #1 + add r2, r1, #0 + and r2, r0 + beq _021D7AE2 + add r0, r4, #0 + add r0, #0x64 + ldrb r0, [r0] + cmp r0, #0 + bne _021D7AE2 +_021D7AC6: + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #4 + bl MOD15_021D8900 + mov r0, #3 + str r0, [r5] + b _021D7BAE +_021D7AE2: + ldrh r0, [r4, #0x34] + mov r3, #0x20 + tst r3, r0 + beq _021D7B12 + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x4e + strh r1, [r0] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x60 + add r1, #8 + bl MOD15_021D772C + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r5] + b _021D7BAE +_021D7B12: + mov r3, #0x10 + tst r0, r3 + beq _021D7B40 + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x4e + strh r1, [r0] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x60 + add r1, #8 + bl MOD15_021D76E8 + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r5] + b _021D7BAE +_021D7B40: + mov r0, #2 + tst r0, r1 + beq _021D7B56 + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + ldr r1, _021D7BBC ; =MOD15_021D851C + add r0, r4, #0 + bl MOD15_021D83AC + b _021D7BAE +_021D7B56: + cmp r2, #0 + beq _021D7BAE + ldr r0, _021D7BB8 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #6 + bl MOD15_021D8900 + mov r0, #4 + str r0, [r5] + b _021D7BAE +_021D7B76: + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D7BAE + mov r0, #0 + str r0, [r5] + b _021D7BAE +_021D7B88: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7BAE + ldr r1, _021D7BC0 ; =MOD15_021D7BC8 + add r0, r4, #0 + bl MOD15_021D7794 + b _021D7BAE +_021D7B9C: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7BAE + ldr r1, _021D7BC4 ; =MOD15_021D7D00 + add r0, r4, #0 + bl MOD15_021D7794 +_021D7BAE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D7BB4: .word MOD15_021D8698 +_021D7BB8: .word 0x000005DC +_021D7BBC: .word MOD15_021D851C +_021D7BC0: .word MOD15_021D7BC8 +_021D7BC4: .word MOD15_021D7D00 + + thumb_func_start MOD15_021D7BC8 +MOD15_021D7BC8: ; 0x021D7BC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bls _021D7BD6 + b _021D7CE8 +_021D7BD6: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7BE2: ; jump table + .short _021D7BEE - _021D7BE2 - 2 ; case 0 + .short _021D7CB8 - _021D7BE2 - 2 ; case 1 + .short _021D7CC4 - _021D7BE2 - 2 ; case 2 + .short _021D7CD0 - _021D7BE2 - 2 ; case 3 + .short _021D7CD0 - _021D7BE2 - 2 ; case 4 + .short _021D7CD6 - _021D7BE2 - 2 ; case 5 +_021D7BEE: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7CE8 + ldr r1, [r4, #0x38] + cmp r1, #0 + bne _021D7C08 + add r0, r4, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + bne _021D7C1E +_021D7C08: + cmp r1, #1 + bne _021D7C16 + add r0, r4, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #1 + bne _021D7C1E +_021D7C16: + ldrh r0, [r4, #0x30] + mov r1, #4 + tst r1, r0 + beq _021D7C28 +_021D7C1E: + ldr r1, _021D7CEC ; =MOD15_021D8698 + add r0, r4, #0 + bl MOD15_021D83AC + b _021D7CE8 +_021D7C28: + mov r1, #0x30 + tst r1, r0 + beq _021D7C4E + ldr r0, _021D7CF0 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x4c + ldrh r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #0xd + bl MOD15_021D8900 + b _021D7CE8 +_021D7C4E: + mov r1, #8 + tst r1, r0 + beq _021D7C6C + ldr r0, _021D7CF0 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x4c + strh r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #0xd + bl MOD15_021D8900 + b _021D7CE8 +_021D7C6C: + mov r1, #0x40 + tst r1, r0 + beq _021D7C86 + ldr r0, _021D7CF0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #5 + bl MOD15_021D8900 + mov r0, #5 + str r0, [r5] + b _021D7CE8 +_021D7C86: + mov r1, #1 + tst r1, r0 + beq _021D7CA6 + ldr r0, _021D7CF0 ; =0x000005DC + bl FUN_020054C8 + add r4, #0x4c + ldrh r0, [r4] + cmp r0, #0 + bne _021D7CA0 + mov r0, #1 + str r0, [r5] + b _021D7CE8 +_021D7CA0: + mov r0, #2 + str r0, [r5] + b _021D7CE8 +_021D7CA6: + mov r1, #2 + tst r0, r1 + beq _021D7CE8 + ldr r0, _021D7CF0 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + b _021D7CE8 +_021D7CB8: + mov r1, #3 + str r1, [r5] + ldr r1, _021D7CF4 ; =MOD15_021D83F0 + bl MOD15_021D83AC + b _021D7CE8 +_021D7CC4: + mov r1, #4 + str r1, [r5] + ldr r1, _021D7CF8 ; =MOD15_021D851C + bl MOD15_021D83AC + b _021D7CE8 +_021D7CD0: + mov r0, #0 + str r0, [r5] + b _021D7CE8 +_021D7CD6: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7CE8 + ldr r1, _021D7CFC ; =MOD15_021D779C + add r0, r4, #0 + bl MOD15_021D7794 +_021D7CE8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7CEC: .word MOD15_021D8698 +_021D7CF0: .word 0x000005DC +_021D7CF4: .word MOD15_021D83F0 +_021D7CF8: .word MOD15_021D851C +_021D7CFC: .word MOD15_021D779C + + thumb_func_start MOD15_021D7D00 +MOD15_021D7D00: ; 0x021D7D00 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D7D18 + cmp r0, #1 + beq _021D7E0C + cmp r0, #2 + bne _021D7D16 + b _021D7E20 +_021D7D16: + b _021D7E30 +_021D7D18: + ldr r0, [r5, #0x14] + mov r1, #0xf + bl MOD15_021D8970 + cmp r0, #0 + bne _021D7D26 + b _021D7E30 +_021D7D26: + ldr r1, [r5, #0x38] + cmp r1, #0 + bne _021D7D36 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + bne _021D7D4C +_021D7D36: + cmp r1, #1 + bne _021D7D44 + add r0, r5, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #1 + bne _021D7D4C +_021D7D44: + ldrh r0, [r5, #0x30] + mov r1, #4 + tst r1, r0 + beq _021D7D78 +_021D7D4C: + ldr r0, _021D7E34 ; =0x000005E4 + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0x65 + ldrb r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r5, #0 + add r0, #0x65 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #0x18 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r4] + b _021D7E30 +_021D7D78: + mov r1, #2 + tst r1, r0 + beq _021D7D96 + ldr r0, _021D7E38 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x14] + mov r1, #7 + bl MOD15_021D8900 + ldr r0, _021D7E3C ; =MOD15_021D779C + str r0, [r5, #0x24] + mov r0, #1 + str r0, [r4] + b _021D7E30 +_021D7D96: + mov r1, #1 + tst r0, r1 + beq _021D7DF2 + add r0, r5, #0 + add r0, #0x50 + ldrh r0, [r0] + cmp r0, #0xfe + bne _021D7DBE + ldr r0, _021D7E38 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x14] + mov r1, #7 + bl MOD15_021D8900 + ldr r0, _021D7E3C ; =MOD15_021D779C + str r0, [r5, #0x24] + mov r0, #1 + str r0, [r4] + b _021D7E30 +_021D7DBE: + add r0, r5, #0 + bl MOD15_021D7E48 + cmp r0, #0 + beq _021D7DEA + ldr r0, _021D7E38 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0x54 + add r1, r5, #0 + bl MOD15_021D7FE4 + ldr r0, _021D7E40 ; =MOD15_021D8044 + mov r1, #8 + str r0, [r5, #0x24] + ldr r0, [r5, #0x14] + bl MOD15_021D8900 + mov r0, #1 + str r0, [r4] + b _021D7E30 +_021D7DEA: + ldr r0, _021D7E44 ; =0x000005F2 + bl FUN_020054C8 + b _021D7E30 +_021D7DF2: + add r0, r5, #0 + bl MOD15_021D7E80 + cmp r0, #0 + beq _021D7E30 + ldr r0, _021D7E38 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x14] + mov r1, #0xe + bl MOD15_021D8900 + b _021D7E30 +_021D7E0C: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D7E30 + ldr r1, [r5, #0x24] + add r0, r5, #0 + bl MOD15_021D7794 + b _021D7E30 +_021D7E20: + ldr r0, [r5, #0x14] + mov r1, #0x18 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D7E30 + mov r0, #0 + str r0, [r4] +_021D7E30: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7E34: .word 0x000005E4 +_021D7E38: .word 0x000005DC +_021D7E3C: .word MOD15_021D779C +_021D7E40: .word MOD15_021D8044 +_021D7E44: .word 0x000005F2 + + thumb_func_start MOD15_021D7E48 +MOD15_021D7E48: ; 0x021D7E48 + push {r3, lr} + add r1, r0, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + ldr r0, [r1, #0x18] + bne _021D7E6A + add r1, #0x50 + ldrh r1, [r1] + bl FUN_020892C4 + cmp r0, #0 + beq _021D7E66 + mov r0, #1 + pop {r3, pc} +_021D7E66: + mov r0, #0 + pop {r3, pc} +_021D7E6A: + add r1, #0x50 + ldrh r1, [r1] + bl FUN_02089300 + cmp r0, #0 + beq _021D7E7A + mov r0, #1 + pop {r3, pc} +_021D7E7A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021D7E80 +MOD15_021D7E80: ; 0x021D7E80 + push {r3, lr} + add r1, r0, #0 + add r1, #0x65 + ldrb r1, [r1] + lsl r2, r1, #2 + ldr r1, _021D7E94 ; =0x021DB86C + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_021D7E94: .word 0x021DB86C + + thumb_func_start MOD15_021D7E98 +MOD15_021D7E98: ; 0x021D7E98 + push {r4, lr} + add r4, r0, #0 + add r0, #0x50 + ldrh r2, [r0] + add r1, r2, #0 + cmp r2, #0xfe + bne _021D7EA8 + mov r1, #0xc +_021D7EA8: + cmp r2, #0xfe + beq _021D7F04 + add r0, r4, #0 + add r0, #0x52 + strh r2, [r0] + ldrh r0, [r4, #0x34] + mov r2, #0x40 + tst r2, r0 + beq _021D7EC8 + ldr r0, _021D7F40 ; =0x021DB894 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7EC8: + mov r2, #0x80 + tst r2, r0 + beq _021D7EDC + ldr r0, _021D7F44 ; =0x021DB895 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7EDC: + mov r2, #0x20 + tst r2, r0 + beq _021D7EF0 + ldr r0, _021D7F48 ; =0x021DB896 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7EF0: + mov r2, #0x10 + tst r0, r2 + beq _021D7F3C + ldr r0, _021D7F4C ; =0x021DB897 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7F04: + ldrh r1, [r4, #0x34] + mov r0, #0x40 + tst r0, r1 + beq _021D7F22 + add r0, r4, #0 + add r0, #0x52 + ldrh r0, [r0] + mov r1, #3 + bl _s32_div_f + add r1, #9 + add r4, #0x50 + strh r1, [r4] + mov r0, #1 + pop {r4, pc} +_021D7F22: + mov r0, #0x80 + tst r0, r1 + beq _021D7F3C + add r0, r4, #0 + add r0, #0x52 + ldrh r0, [r0] + mov r1, #3 + bl _s32_div_f + add r4, #0x50 + strh r1, [r4] + mov r0, #1 + pop {r4, pc} +_021D7F3C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7F40: .word 0x021DB894 +_021D7F44: .word 0x021DB895 +_021D7F48: .word 0x021DB896 +_021D7F4C: .word 0x021DB897 + + thumb_func_start MOD15_021D7F50 +MOD15_021D7F50: ; 0x021D7F50 + push {r4, lr} + add r4, r0, #0 + add r0, #0x50 + ldrh r0, [r0] + cmp r0, #0xfe + beq _021D7FAE + ldrh r1, [r4, #0x34] + mov r3, #0x40 + mov r2, #0xff + tst r3, r1 + beq _021D7F6E + bl MOD15_021DB7C4 + add r2, r0, #0 + b _021D7F96 +_021D7F6E: + mov r3, #0x80 + tst r3, r1 + beq _021D7F7C + bl MOD15_021DB7E0 + add r2, r0, #0 + b _021D7F96 +_021D7F7C: + mov r3, #0x10 + tst r3, r1 + beq _021D7F8A + bl MOD15_021DB818 + add r2, r0, #0 + b _021D7F96 +_021D7F8A: + mov r3, #0x20 + tst r1, r3 + beq _021D7F96 + bl MOD15_021DB7FC + add r2, r0, #0 +_021D7F96: + cmp r2, #0xff + beq _021D7FE0 + add r0, r4, #0 + add r0, #0x50 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x52 + strh r1, [r0] + add r4, #0x50 + strh r2, [r4] + mov r0, #1 + pop {r4, pc} +_021D7FAE: + ldrh r1, [r4, #0x34] + mov r0, #0x40 + tst r0, r1 + beq _021D7FC8 + add r0, r4, #0 + add r0, #0x52 + ldrh r0, [r0] + bl MOD15_021DB850 + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7FC8: + mov r0, #0x80 + tst r0, r1 + beq _021D7FE0 + add r0, r4, #0 + add r0, #0x52 + ldrh r0, [r0] + bl MOD15_021DB834 + add r4, #0x50 + strh r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D7FE0: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD15_021D7FE4 +MOD15_021D7FE4: ; 0x021D7FE4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + strh r0, [r4] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r1, #0 + bl MOD15_021D8744 + strh r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + ldrh r2, [r4, #4] + cmp r2, #0xa + bls _021D8016 + add r1, r2, #0 + sub r1, #0xa + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + mov r0, #1 + and r0, r2 + add r0, r1, r0 + strh r0, [r4, #2] + pop {r4, pc} +_021D8016: + strh r0, [r4, #2] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D801C +MOD15_021D801C: ; 0x021D801C + ldrb r1, [r0, #6] + ldrb r0, [r0, #7] + lsl r0, r0, #1 + add r0, r1, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D8028 +MOD15_021D8028: ; 0x021D8028 + push {r4, lr} + add r4, r0, #0 + bl MOD15_021D801C + ldrh r1, [r4] + lsl r1, r1, #1 + add r0, r1, r0 + pop {r4, pc} + + thumb_func_start MOD15_021D8038 +MOD15_021D8038: ; 0x021D8038 + ldr r0, [r0, #8] + bx lr + + thumb_func_start MOD15_021D803C +MOD15_021D803C: ; 0x021D803C + ldrh r0, [r0] + bx lr + + thumb_func_start MOD15_021D8040 +MOD15_021D8040: ; 0x021D8040 + ldrh r0, [r0, #2] + bx lr + + thumb_func_start MOD15_021D8044 +MOD15_021D8044: ; 0x021D8044 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #3 + bls _021D8052 + b _021D81B4 +_021D8052: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D805E: ; jump table + .short _021D8066 - _021D805E - 2 ; case 0 + .short _021D8172 - _021D805E - 2 ; case 1 + .short _021D8184 - _021D805E - 2 ; case 2 + .short _021D819E - _021D805E - 2 ; case 3 +_021D8066: + ldr r0, [r4, #0x38] + cmp r0, #0 + bne _021D8076 + add r1, r4, #0 + add r1, #0x65 + ldrb r1, [r1] + cmp r1, #0 + bne _021D808C +_021D8076: + cmp r0, #1 + bne _021D8084 + add r1, r4, #0 + add r1, #0x65 + ldrb r1, [r1] + cmp r1, #1 + bne _021D808C +_021D8084: + ldrh r2, [r4, #0x30] + mov r1, #4 + tst r1, r2 + beq _021D80BC +_021D808C: + ldr r0, _021D81B8 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x65 + ldrb r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0x65 + strb r1, [r0] + ldr r0, [r4, #0x14] + mov r1, #9 + bl MOD15_021D8900 + ldr r0, _021D81BC ; =MOD15_021D7D00 + str r0, [r4, #0x24] + mov r0, #3 + str r0, [r5] + b _021D81B4 +_021D80BC: + cmp r0, #2 + bne _021D80CA + add r0, r4, #0 + add r0, #0x54 + bl MOD15_021D82A8 + b _021D80E2 +_021D80CA: + cmp r0, #3 + bne _021D80D8 + add r0, r4, #0 + add r0, #0x54 + bl MOD15_021D82D0 + b _021D80E2 +_021D80D8: + ldrh r1, [r4, #0x34] + add r0, r4, #0 + add r0, #0x54 + bl MOD15_021D81C8 +_021D80E2: + cmp r0, #1 + beq _021D80F0 + cmp r0, #2 + beq _021D8102 + cmp r0, #3 + beq _021D8118 + b _021D812E +_021D80F0: + ldr r0, _021D81C0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0xf + bl MOD15_021D8900 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8102: + ldr r0, _021D81C0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x10 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r5] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8118: + ldr r0, _021D81C0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x10 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r5] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D812E: + ldrh r1, [r4, #0x30] + mov r0, #2 + tst r0, r1 + beq _021D814E + ldr r0, _021D81C0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #9 + bl MOD15_021D8900 + ldr r0, _021D81BC ; =MOD15_021D7D00 + str r0, [r4, #0x24] + mov r0, #3 + str r0, [r5] + b _021D81B4 +_021D814E: + mov r0, #1 + tst r0, r1 + beq _021D81B4 + ldr r0, _021D81C0 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD15_021D8310 + ldr r0, _021D81C4 ; =MOD15_021D779C + mov r1, #0xa + str r0, [r4, #0x24] + ldr r0, [r4, #0x14] + bl MOD15_021D8900 + mov r0, #3 + str r0, [r5] + b _021D81B4 +_021D8172: + ldr r0, [r4, #0x14] + mov r1, #0x10 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D81B4 + mov r0, #0 + str r0, [r5] + b _021D81B4 +_021D8184: + ldr r0, [r4, #0x14] + mov r1, #0x10 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D81B4 + ldr r0, [r4, #0x14] + mov r1, #0xf + bl MOD15_021D8900 + mov r0, #0 + str r0, [r5] + b _021D81B4 +_021D819E: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D81B4 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD15_021D7794 + mov r0, #0 + str r0, [r5] +_021D81B4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D81B8: .word 0x000005E4 +_021D81BC: .word MOD15_021D7D00 +_021D81C0: .word 0x000005DC +_021D81C4: .word MOD15_021D779C + + thumb_func_start MOD15_021D81C8 +MOD15_021D81C8: ; 0x021D81C8 + push {r3, r4, r5, lr} + mov r2, #0x80 + add r4, r0, #0 + tst r2, r1 + beq _021D8232 + ldrb r1, [r4, #7] + cmp r1, #4 + bhs _021D8206 + add r1, r1, #1 + strb r1, [r4, #7] + bl MOD15_021D8028 + ldrh r1, [r4, #4] + cmp r0, r1 + bhs _021D81EA + mov r0, #1 + pop {r3, r4, r5, pc} +_021D81EA: + cmp r0, r1 + bne _021D81FC + mov r1, #1 + tst r0, r1 + beq _021D81FC + mov r0, #0 + strb r0, [r4, #6] + add r0, r1, #0 + pop {r3, r4, r5, pc} +_021D81FC: + ldrb r0, [r4, #7] + sub r0, r0, #1 + strb r0, [r4, #7] + mov r0, #4 + pop {r3, r4, r5, pc} +_021D8206: + ldrh r2, [r4] + ldrh r1, [r4, #2] + cmp r2, r1 + bhs _021D822E + mov r1, #1 + str r1, [r4, #8] + ldrh r1, [r4] + add r1, r1, #1 + strh r1, [r4] + bl MOD15_021D8028 + ldrh r1, [r4, #4] + cmp r0, r1 + bhs _021D8226 + mov r0, #2 + pop {r3, r4, r5, pc} +_021D8226: + mov r0, #0 + strb r0, [r4, #6] + mov r0, #3 + pop {r3, r4, r5, pc} +_021D822E: + mov r0, #4 + pop {r3, r4, r5, pc} +_021D8232: + mov r5, #0x40 + add r2, r1, #0 + tst r2, r5 + beq _021D8260 + ldrb r0, [r4, #7] + cmp r0, #0 + beq _021D8248 + sub r0, r0, #1 + strb r0, [r4, #7] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8248: + ldrh r0, [r4] + cmp r0, #0 + beq _021D825C + sub r5, #0x41 + str r5, [r4, #8] + ldrh r0, [r4] + sub r0, r0, #1 + strh r0, [r4] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D825C: + mov r0, #4 + pop {r3, r4, r5, pc} +_021D8260: + mov r3, #0x30 + add r2, r1, #0 + tst r2, r3 + beq _021D828A + ldrb r2, [r4, #6] + mov r1, #1 + eor r1, r2 + strb r1, [r4, #6] + bl MOD15_021D8028 + ldrh r1, [r4, #4] + cmp r0, r1 + bhs _021D827E + mov r0, #1 + pop {r3, r4, r5, pc} +_021D827E: + ldrb r1, [r4, #6] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #6] + mov r0, #4 + pop {r3, r4, r5, pc} +_021D828A: + lsl r2, r5, #3 + tst r2, r1 + beq _021D8296 + bl MOD15_021D82A8 + pop {r3, r4, r5, pc} +_021D8296: + add r3, #0xd0 + tst r1, r3 + beq _021D82A2 + bl MOD15_021D82D0 + pop {r3, r4, r5, pc} +_021D82A2: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D82A8 +MOD15_021D82A8: ; 0x021D82A8 + ldrh r1, [r0] + cmp r1, #0 + beq _021D82CA + cmp r1, #5 + blo _021D82BE + sub r1, r1, #5 + strh r1, [r0] + mov r1, #4 + mvn r1, r1 + str r1, [r0, #8] + b _021D82C6 +_021D82BE: + neg r1, r1 + str r1, [r0, #8] + mov r1, #0 + strh r1, [r0] +_021D82C6: + mov r0, #2 + bx lr +_021D82CA: + mov r0, #4 + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D82D0 +MOD15_021D82D0: ; 0x021D82D0 + push {r4, lr} + add r4, r0, #0 + ldrh r2, [r4, #2] + ldrh r1, [r4] + cmp r1, r2 + bhs _021D830C + add r0, r1, #5 + cmp r0, r2 + bgt _021D82EC + mov r0, #5 + str r0, [r4, #8] + ldrh r0, [r4] + add r0, r0, #5 + b _021D82F2 +_021D82EC: + sub r0, r2, r1 + str r0, [r4, #8] + ldrh r0, [r4, #2] +_021D82F2: + strh r0, [r4] + add r0, r4, #0 + bl MOD15_021D8028 + ldrh r1, [r4, #4] + cmp r0, r1 + bhs _021D8304 + mov r0, #2 + pop {r4, pc} +_021D8304: + mov r0, #0 + strb r0, [r4, #6] + mov r0, #3 + pop {r4, pc} +_021D830C: + mov r0, #4 + pop {r4, pc} + + thumb_func_start MOD15_021D8310 +MOD15_021D8310: ; 0x021D8310 + push {r4, lr} + add r4, r0, #0 + add r0, #0x54 + bl MOD15_021D8028 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + ldr r0, [r4, #0x18] + bne _021D8334 + add r1, r4, #0 + add r1, #0x50 + ldrh r1, [r1] + bl FUN_020892EC + b _021D833E +_021D8334: + add r1, r4, #0 + add r1, #0x50 + ldrh r1, [r1] + bl FUN_02089338 +_021D833E: + add r2, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D8350 + cmp r0, #1 + beq _021D8354 + cmp r0, #2 + beq _021D8362 + b _021D8370 +_021D8350: + strh r2, [r4, #0x10] + b _021D8370 +_021D8354: + add r0, r4, #0 + add r0, #0x4e + ldrh r0, [r0] + lsl r0, r0, #1 + add r0, r4, r0 + strh r2, [r0, #0x10] + b _021D8370 +_021D8362: + add r1, r4, #0 + add r1, #0x4e + ldrh r1, [r1] + add r0, r4, #0 + add r0, #8 + bl FUN_02013998 +_021D8370: + add r0, r4, #0 + bl MOD15_021D85EC + pop {r4, pc} + + thumb_func_start MOD15_021D8378 +MOD15_021D8378: ; 0x021D8378 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021D8388 + cmp r1, #1 + beq _021D8398 + b _021D83A6 +_021D8388: + ldr r0, [r0, #0x14] + mov r1, #1 + bl MOD15_021D8900 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D83A6 +_021D8398: + ldr r0, [r0, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D83A6 + mov r0, #1 + pop {r4, pc} +_021D83A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D83AC +MOD15_021D83AC: ; 0x021D83AC + str r1, [r0, #0x2c] + mov r1, #0 + str r1, [r0, #0x28] + bx lr + + thumb_func_start MOD15_021D83B4 +MOD15_021D83B4: ; 0x021D83B4 + mov r1, #0 + str r1, [r0, #0x2c] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D83BC +MOD15_021D83BC: ; 0x021D83BC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D83CE + cmp r0, #1 + beq _021D83DE + pop {r3, r4, r5, pc} +_021D83CE: + ldr r0, [r5, #0x14] + mov r1, #2 + bl MOD15_021D8900 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D83DE: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D83EE + add r0, r5, #0 + bl MOD15_021D83B4 +_021D83EE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D83F0 +MOD15_021D83F0: ; 0x021D83F0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bls _021D83FE + b _021D850C +_021D83FE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D840A: ; jump table + .short _021D8412 - _021D840A - 2 ; case 0 + .short _021D8460 - _021D840A - 2 ; case 1 + .short _021D84E6 - _021D840A - 2 ; case 2 + .short _021D84FC - _021D840A - 2 ; case 3 +_021D8412: + bl MOD15_021D85D0 + cmp r0, #0 + bne _021D8424 + ldr r0, [r4] + bl FUN_02085424 + cmp r0, #0 + beq _021D8456 +_021D8424: + add r0, r4, #0 + bl MOD15_021D85EC + cmp r0, #0 + beq _021D8448 + add r0, r4, #0 + add r0, #0x66 + mov r1, #1 + mov r2, #0 + bl MOD15_021D8634 + ldr r0, [r4, #0x14] + mov r1, #0x12 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8448: + ldr r0, [r4, #0x14] + mov r1, #0x14 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8456: + ldr r1, _021D8510 ; =MOD15_021D851C + add r0, r4, #0 + bl MOD15_021D83AC + pop {r3, r4, r5, pc} +_021D8460: + ldr r0, [r4, #0x14] + mov r1, #0x15 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D850C + ldrh r1, [r4, #0x30] + add r0, r4, #0 + add r0, #0x66 + bl MOD15_021D863C + add r0, r0, #3 + cmp r0, #4 + bhi _021D850C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8488: ; jump table + .short _021D8492 - _021D8488 - 2 ; case 0 + .short _021D84A2 - _021D8488 - 2 ; case 1 + .short _021D850C - _021D8488 - 2 ; case 2 + .short _021D84B6 - _021D8488 - 2 ; case 3 + .short _021D84A2 - _021D8488 - 2 ; case 4 +_021D8492: + ldr r0, _021D8514 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x15 + bl MOD15_021D8900 + pop {r3, r4, r5, pc} +_021D84A2: + ldr r0, _021D8514 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x16 + bl MOD15_021D8900 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D84B6: + ldr r0, _021D8514 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #4] + cmp r0, #2 + bne _021D84CA + add r0, r4, #0 + add r0, #8 + bl FUN_020139B0 +_021D84CA: + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4] + add r1, #0x10 + add r2, #8 + bl FUN_020854A0 + ldr r1, _021D8518 ; =MOD15_021D8378 + add r0, r4, #0 + bl MOD15_021D7794 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D84E6: + ldrh r1, [r4, #0x30] + mov r0, #0xf3 + tst r0, r1 + beq _021D850C + ldr r0, [r4, #0x14] + mov r1, #0x11 + bl MOD15_021D8900 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D84FC: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D850C + add r0, r4, #0 + bl MOD15_021D83B4 +_021D850C: + pop {r3, r4, r5, pc} + nop +_021D8510: .word MOD15_021D851C +_021D8514: .word 0x000005DC +_021D8518: .word MOD15_021D8378 + + thumb_func_start MOD15_021D851C +MOD15_021D851C: ; 0x021D851C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021D8532 + cmp r0, #1 + beq _021D854C + cmp r0, #2 + beq _021D85B6 + pop {r3, r4, r5, pc} +_021D8532: + add r0, r4, #0 + mov r1, #1 + add r0, #0x66 + add r2, r1, #0 + bl MOD15_021D8634 + ldr r0, [r4, #0x14] + mov r1, #0x13 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D854C: + ldr r0, [r4, #0x14] + mov r1, #0x15 + bl MOD15_021D8970 + cmp r0, #0 + beq _021D85C6 + ldrh r1, [r4, #0x30] + add r0, r4, #0 + add r0, #0x66 + bl MOD15_021D863C + add r0, r0, #3 + cmp r0, #4 + bhi _021D85C6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8574: ; jump table + .short _021D857E - _021D8574 - 2 ; case 0 + .short _021D858E - _021D8574 - 2 ; case 1 + .short _021D85C6 - _021D8574 - 2 ; case 2 + .short _021D85A2 - _021D8574 - 2 ; case 3 + .short _021D858E - _021D8574 - 2 ; case 4 +_021D857E: + ldr r0, _021D85C8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x15 + bl MOD15_021D8900 + pop {r3, r4, r5, pc} +_021D858E: + ldr r0, _021D85C8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x14] + mov r1, #0x16 + bl MOD15_021D8900 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85A2: + ldr r0, _021D85C8 ; =0x000005DC + bl FUN_020054C8 + ldr r1, _021D85CC ; =MOD15_021D8378 + add r0, r4, #0 + bl MOD15_021D7794 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85B6: + ldr r0, [r4, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D85C6 + add r0, r4, #0 + bl MOD15_021D83B4 +_021D85C6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D85C8: .word 0x000005DC +_021D85CC: .word MOD15_021D8378 + + thumb_func_start MOD15_021D85D0 +MOD15_021D85D0: ; 0x021D85D0 + push {r3, lr} + add r2, r0, #0 + add r1, r2, #0 + ldr r0, [r2] + add r1, #0x10 + add r2, #8 + bl FUN_0208545C + cmp r0, #0 + bne _021D85E8 + mov r0, #1 + pop {r3, pc} +_021D85E8: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD15_021D85EC +MOD15_021D85EC: ; 0x021D85EC + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + beq _021D85FE + cmp r1, #1 + beq _021D860E + cmp r1, #2 + beq _021D8624 + b _021D862C +_021D85FE: + ldrh r1, [r0, #0x10] + ldr r0, _021D8630 ; =0x0000FFFF + cmp r1, r0 + beq _021D860A + mov r0, #1 + pop {r3, pc} +_021D860A: + mov r0, #0 + pop {r3, pc} +_021D860E: + ldrh r2, [r0, #0x10] + ldr r1, _021D8630 ; =0x0000FFFF + cmp r2, r1 + beq _021D8620 + ldrh r0, [r0, #0x12] + cmp r0, r1 + beq _021D8620 + mov r0, #1 + pop {r3, pc} +_021D8620: + mov r0, #0 + pop {r3, pc} +_021D8624: + add r0, #8 + bl FUN_02013870 + pop {r3, pc} +_021D862C: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021D8630: .word 0x0000FFFF + + thumb_func_start MOD15_021D8634 +MOD15_021D8634: ; 0x021D8634 + strb r2, [r0] + strb r1, [r0, #1] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D863C +MOD15_021D863C: ; 0x021D863C + mov r2, #0x40 + add r3, r1, #0 + tst r3, r2 + beq _021D865A + ldrb r1, [r0] + cmp r1, #0 + bne _021D8650 + sub r2, #0x44 + add r0, r2, #0 + bx lr +_021D8650: + sub r1, r1, #1 + sub r2, #0x43 + strb r1, [r0] + add r0, r2, #0 + bx lr +_021D865A: + mov r2, #0x80 + add r3, r1, #0 + tst r3, r2 + beq _021D867A + ldrb r3, [r0] + ldrb r1, [r0, #1] + cmp r3, r1 + bne _021D8670 + sub r2, #0x84 + add r0, r2, #0 + bx lr +_021D8670: + add r1, r3, #1 + sub r2, #0x83 + strb r1, [r0] + add r0, r2, #0 + bx lr +_021D867A: + mov r2, #1 + tst r2, r1 + beq _021D8684 + ldrb r0, [r0] + bx lr +_021D8684: + mov r0, #2 + tst r1, r0 + beq _021D868E + sub r0, r0, #4 + bx lr +_021D868E: + sub r0, r0, #3 + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D8694 +MOD15_021D8694: ; 0x021D8694 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD15_021D8698 +MOD15_021D8698: ; 0x021D8698 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D86AA + cmp r0, #1 + beq _021D86CE + pop {r3, r4, r5, pc} +_021D86AA: + ldr r0, _021D86E0 ; =0x000005E4 + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0x65 + ldrb r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r5, #0 + add r0, #0x65 + strb r1, [r0] + ldr r0, [r5, #0x14] + mov r1, #0x17 + bl MOD15_021D8900 + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D86CE: + ldr r0, [r5, #0x14] + bl MOD15_021D8958 + cmp r0, #0 + beq _021D86DE + add r0, r5, #0 + bl MOD15_021D83B4 +_021D86DE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86E0: .word 0x000005E4 + + thumb_func_start MOD15_021D86E4 +MOD15_021D86E4: ; 0x021D86E4 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD15_021D86E8 +MOD15_021D86E8: ; 0x021D86E8 + ldr r3, _021D86F0 ; =0x02085411 + ldr r0, [r0] + bx r3 + nop +_021D86F0: .word 0x02085411 + + thumb_func_start MOD15_021D86F4 +MOD15_021D86F4: ; 0x021D86F4 + add r0, #0x65 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D86FC +MOD15_021D86FC: ; 0x021D86FC + ldr r3, _021D8704 ; =0x02013921 + add r0, #8 + bx r3 + nop +_021D8704: .word 0x02013921 + + thumb_func_start MOD15_021D8708 +MOD15_021D8708: ; 0x021D8708 + push {r3, lr} + ldr r2, [r0, #4] + cmp r2, #2 + bne _021D8718 + add r0, #8 + bl FUN_02013918 + pop {r3, pc} +_021D8718: + lsl r1, r1, #1 + add r0, r0, r1 + ldrh r0, [r0, #0x10] + pop {r3, pc} + + thumb_func_start MOD15_021D8720 +MOD15_021D8720: ; 0x021D8720 + ldr r3, _021D8728 ; =0x02013841 + add r0, #8 + bx r3 + nop +_021D8728: .word 0x02013841 + + thumb_func_start MOD15_021D872C +MOD15_021D872C: ; 0x021D872C + add r0, #0x4e + ldrh r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D8734 +MOD15_021D8734: ; 0x021D8734 + add r0, #0x4c + ldrh r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D873C +MOD15_021D873C: ; 0x021D873C + add r0, #0x50 + ldrh r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D8744 +MOD15_021D8744: ; 0x021D8744 + push {r3, lr} + add r1, r0, #0 + add r0, #0x65 + ldrb r0, [r0] + cmp r0, #0 + ldr r0, [r1, #0x18] + bne _021D875C + add r1, #0x50 + ldrh r1, [r1] + bl FUN_020892C4 + pop {r3, pc} +_021D875C: + add r1, #0x50 + ldrh r1, [r1] + bl FUN_02089300 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8768 +MOD15_021D8768: ; 0x021D8768 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x65 + ldrb r0, [r0] + add r4, r1, #0 + add r3, r2, #0 + cmp r0, #0 + ldr r0, [r5, #0x18] + bne _021D8786 + add r5, #0x50 + ldrh r1, [r5] + add r2, r4, #0 + bl FUN_020892CC + pop {r3, r4, r5, pc} +_021D8786: + add r5, #0x50 + ldrh r1, [r5] + add r2, r4, #0 + bl FUN_02089310 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8794 +MOD15_021D8794: ; 0x021D8794 + ldr r3, _021D879C ; =MOD15_021D801C + add r0, #0x54 + bx r3 + nop +_021D879C: .word MOD15_021D801C + + thumb_func_start MOD15_021D87A0 +MOD15_021D87A0: ; 0x021D87A0 + ldr r3, _021D87A8 ; =MOD15_021D8038 + add r0, #0x54 + bx r3 + nop +_021D87A8: .word MOD15_021D8038 + + thumb_func_start MOD15_021D87AC +MOD15_021D87AC: ; 0x021D87AC + push {r3, lr} + add r0, #0x54 + bl MOD15_021D803C + cmp r0, #0 + beq _021D87BC + mov r0, #1 + pop {r3, pc} +_021D87BC: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD15_021D87C0 +MOD15_021D87C0: ; 0x021D87C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x54 + bl MOD15_021D803C + add r5, #0x54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD15_021D8040 + cmp r4, r0 + bge _021D87DC + mov r0, #1 + pop {r3, r4, r5, pc} +_021D87DC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D87E0 +MOD15_021D87E0: ; 0x021D87E0 + ldr r3, _021D87E8 ; =0x02085415 + ldr r0, [r0] + bx r3 + nop +_021D87E8: .word 0x02085415 + + thumb_func_start MOD15_021D87EC +MOD15_021D87EC: ; 0x021D87EC + ldr r3, _021D87F4 ; =MOD15_021D8694 + add r0, #0x66 + bx r3 + nop +_021D87F4: .word MOD15_021D8694 + + thumb_func_start MOD15_021D87F8 +MOD15_021D87F8: ; 0x021D87F8 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + mov r1, #0x7d + add r5, r0, #0 + mov r0, #0x23 + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8878 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + str r5, [r4, #0x18] + str r6, [r4, #0x1c] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x23 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0x28 + mov r2, #0x23 + bl FUN_02008C9C + str r0, [r4, #0x24] + mov r0, #0x23 + bl FUN_02016B94 + str r0, [r4, #0x20] + ldr r0, _021D8880 ; =MOD15_021D88D8 + add r1, r4, #0 + mov r2, #2 + bl FUN_0200CA44 + str r0, [r4] + ldr r0, _021D8884 ; =MOD15_021D88DC + add r1, r4, #0 + mov r2, #1 + bl MOD15_021D88D0 + mov r1, #0 + str r0, [r4, #4] + add r2, r4, #0 + add r0, r1, #0 +_021D886E: + add r1, r1, #1 + str r0, [r2, #8] + add r2, r2, #4 + cmp r1, #4 + blt _021D886E +_021D8878: + add r0, r4, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D8880: .word MOD15_021D88D8 +_021D8884: .word MOD15_021D88DC + + thumb_func_start MOD15_021D8888 +MOD15_021D8888: ; 0x021D8888 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _021D88CE + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r4, #0 + add r5, r6, #0 +_021D889A: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D88A4 + bl FUN_0200CAB4 +_021D88A4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D889A + ldr r0, [r6] + bl FUN_0200CAB4 + ldr r0, [r6, #4] + bl FUN_0200CAB4 + bl FUN_02009FA0 + ldr r0, [r6, #0x24] + bl FUN_0201FD58 + ldr r0, [r6, #0x20] + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_02016A18 +_021D88CE: + pop {r4, r5, r6, pc} + + thumb_func_start MOD15_021D88D0 +MOD15_021D88D0: ; 0x021D88D0 + ldr r3, _021D88D4 ; =0x0200CA61 + bx r3 + .align 2, 0 +_021D88D4: .word 0x0200CA61 + + thumb_func_start MOD15_021D88D8 +MOD15_021D88D8: ; 0x021D88D8 + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D88DC +MOD15_021D88DC: ; 0x021D88DC + push {r3, lr} + ldr r0, [r1, #0x24] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021D88F8 ; =0x027E0000 + ldr r1, _021D88FC ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D88F8: .word 0x027E0000 +_021D88FC: .word 0x00003FF8 + + thumb_func_start MOD15_021D8900 +MOD15_021D8900: ; 0x021D8900 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #0x1d + bhs _021D894E + mov r0, #0x23 + mov r1, #0x18 + bl FUN_02016998 + add r1, r0, #0 + beq _021D8952 + mov r4, #0 + str r4, [r1, #0x14] + str r6, [r1, #0xc] + str r5, [r1] + ldr r0, [r5, #0x18] + add r2, r5, #0 + str r0, [r1, #4] + ldr r0, [r5, #0x1c] + str r0, [r1, #8] +_021D8928: + ldr r0, [r2, #8] + cmp r0, #0 + bne _021D8944 + ldr r0, _021D8954 ; =0x021DB98C + lsl r2, r6, #2 + ldr r0, [r0, r2] + mov r2, #1 + str r4, [r1, #0x10] + bl FUN_0200CA44 + lsl r1, r4, #2 + add r1, r5, r1 + str r0, [r1, #8] + pop {r4, r5, r6, pc} +_021D8944: + add r4, r4, #1 + add r2, r2, #4 + cmp r4, #4 + blt _021D8928 + pop {r4, r5, r6, pc} +_021D894E: + bl ErrorHandling +_021D8952: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8954: .word 0x021DB98C + + thumb_func_start MOD15_021D8958 +MOD15_021D8958: ; 0x021D8958 + mov r2, #0 +_021D895A: + ldr r1, [r0, #8] + cmp r1, #0 + beq _021D8964 + mov r0, #0 + bx lr +_021D8964: + add r2, r2, #1 + add r0, r0, #4 + cmp r2, #4 + blt _021D895A + mov r0, #1 + bx lr + + thumb_func_start MOD15_021D8970 +MOD15_021D8970: ; 0x021D8970 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021D8978: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D898C + bl FUN_0201B6C8 + ldr r0, [r0, #0xc] + cmp r0, r6 + bne _021D898C + mov r0, #0 + pop {r4, r5, r6, pc} +_021D898C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D8978 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD15_021D8998 +MOD15_021D8998: ; 0x021D8998 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #8] + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #2 + mov r2, #0 + add r0, r1, r0 + str r2, [r0, #8] + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D89C0 +MOD15_021D89C0: ; 0x021D89C0 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _021D8AA4 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _021D8AA8 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r2, [r1] + ldr r3, _021D8AAC ; =0xFFCFFFEF + add r5, r2, #0 + ldr r2, _021D8AB0 ; =0x00100010 + and r5, r3 + orr r2, r5 + str r2, [r1] + ldr r1, [r0] + add r2, r1, #0 + and r2, r3 + mov r1, #0x10 + orr r1, r2 + str r1, [r0] + add r0, r4, #0 + bl MOD15_021D8C30 + add r0, r4, #0 + bl MOD15_021D8AB4 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl MOD15_021D95E8 + mov r1, #0x1e + ldr r2, [r4] + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + ldr r0, [r0, r1] + bl MOD15_021D9694 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl MOD15_021D9FA0 + mov r1, #0x79 + ldr r2, [r4] + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + ldr r0, [r0, r1] + bl MOD15_021D9FD4 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl MOD15_021DA18C + mov r1, #0x7a + ldr r2, [r4] + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + ldr r0, [r0, r1] + bl MOD15_021DA1D0 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl MOD15_021DA828 + mov r1, #0x7b + ldr r2, [r4] + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + ldr r0, [r0, r1] + bl MOD15_021DA8E8 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl MOD15_021DAE68 + mov r1, #0x1f + ldr r2, [r4] + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + ldr r0, [r0, r1] + bl MOD15_021DAEB4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl GX_DispOn + add r0, r4, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8AA4: .word 0xFFFFE0FF +_021D8AA8: .word 0x04001000 +_021D8AAC: .word 0xFFCFFFEF +_021D8AB0: .word 0x00100010 + + thumb_func_start MOD15_021D8AB4 +MOD15_021D8AB4: ; 0x021D8AB4 + push {r3, r4, lr} + sub sp, #0x14 + ldr r4, [r0] + mov r0, #0x66 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B19DC + mov r0, #0x6b + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B19DC + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020B1A24 + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + str r0, [sp, #0x10] + mov r0, #0x4c + mov r1, #9 + bl FUN_02006AE4 + mov r0, #0x23 + str r0, [sp] + mov r0, #0x66 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r1, #7 + mov r0, #0x23 + lsl r3, r1, #6 + str r0, [sp] + mov r0, #0x4c + mov r2, #1 + add r3, r4, r3 + bl FUN_02006C30 + mov r3, #0x1d + lsl r3, r3, #4 + str r0, [r4, r3] + mov r0, #0x23 + sub r3, #8 + str r0, [sp] + mov r0, #0x4c + mov r1, #8 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006C5C + mov r1, #0x76 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + sub r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #4 + str r2, [r4, r0] + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8B58 +MOD15_021D8B58: ; 0x021D8B58 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + ldr r0, [r6, #0x14] + ldr r7, [r6] + cmp r0, #0 + beq _021D8B6E + cmp r0, #1 + beq _021D8B90 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021D8B6E: + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x23 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r6, #0x14] + add sp, #0xc + add r0, r0, #1 + str r0, [r6, #0x14] + pop {r4, r5, r6, r7, pc} +_021D8B90: + bl FUN_0200E308 + cmp r0, #0 + beq _021D8C2A + mov r0, #0x1e + ldr r1, [r6] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD15_021D9634 + mov r0, #0x79 + ldr r1, [r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD15_021D9FBC + mov r0, #0x7a + ldr r1, [r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD15_021DA1B8 + mov r0, #0x7b + ldr r1, [r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD15_021DA8A4 + mov r0, #0x1f + ldr r1, [r6] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD15_021DAEA4 + mov r4, #0 + add r5, r7, #0 +_021D8BD8: + mov r0, #0x1d + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D8BE6 + bl FUN_02016A18 +_021D8BE6: + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D8BF4 + bl FUN_02016A18 +_021D8BF4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021D8BD8 + ldr r0, [r7, #0x20] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r7, #0x20] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r7, #0x20] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r7, #0x20] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r7, #0x20] + mov r1, #4 + bl FUN_020178A0 + add r0, r6, #0 + bl MOD15_021D8998 +_021D8C2A: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8C30 +MOD15_021D8C30: ; 0x021D8C30 + push {r4, lr} + ldr r2, _021D8C94 ; =0x04000304 + ldr r4, [r0] + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021D8C98 ; =0x021DB964 + bl FUN_0201E66C + ldr r0, _021D8C9C ; =0x021DB8C8 + bl FUN_02016BBC + mov r1, #0 + ldr r0, [r4, #0x20] + ldr r2, _021D8CA0 ; =0x021DB910 + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x20] + ldr r2, _021D8CA4 ; =0x021DB8D8 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x20] + ldr r2, _021D8CA8 ; =0x021DB948 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x20] + ldr r2, _021D8CAC ; =0x021DB8F4 + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x20] + ldr r2, _021D8CB0 ; =0x021DB92C + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + pop {r4, pc} + nop +_021D8C94: .word 0x04000304 +_021D8C98: .word 0x021DB964 +_021D8C9C: .word 0x021DB8C8 +_021D8CA0: .word 0x021DB910 +_021D8CA4: .word 0x021DB8D8 +_021D8CA8: .word 0x021DB948 +_021D8CAC: .word 0x021DB8F4 +_021D8CB0: .word 0x021DB92C + + thumb_func_start MOD15_021D8CB4 +MOD15_021D8CB4: ; 0x021D8CB4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D8CC6 + cmp r0, #1 + beq _021D8CE6 + b _021D8CF8 +_021D8CC6: + mov r0, #5 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x23 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x14] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x14] + pop {r3, r4, pc} +_021D8CE6: + bl FUN_0200E308 + cmp r0, #0 + beq _021D8CFE + ldr r0, [r4, #0x14] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x14] + pop {r3, r4, pc} +_021D8CF8: + add r0, r4, #0 + bl MOD15_021D8998 +_021D8CFE: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8D04 +MOD15_021D8D04: ; 0x021D8D04 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x1e + ldr r4, [r5] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9964 + ldr r0, [r5, #4] + bl MOD15_021D872C + add r1, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9E3C + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8D30 +MOD15_021D8D30: ; 0x021D8D30 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x1e + ldr r4, [r5] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021D9DD8 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DEC + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DA10C + ldr r0, [r4, #0x18] + bl MOD15_021D8734 + add r1, r0, #0 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA124 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8D74 +MOD15_021D8D74: ; 0x021D8D74 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x79 + ldr r4, [r5] + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DA10C + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9E0C + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021D9DD8 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D8DA4 +MOD15_021D8DA4: ; 0x021D8DA4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #0 + beq _021D8DB6 + cmp r0, #1 + beq _021D8DDC + pop {r3, r4, r5, pc} +_021D8DB6: + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DC0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DEC + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA638 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8DDC: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA650 + cmp r0, #0 + beq _021D8E18 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA164 + ldr r0, [r4, #0x18] + bl MOD15_021D873C + add r1, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA5B4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DA588 + add r0, r5, #0 + bl MOD15_021D8998 +_021D8E18: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D8E1C +MOD15_021D8E1C: ; 0x021D8E1C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #0 + beq _021D8E32 + cmp r0, #1 + beq _021D8E44 + cmp r0, #2 + beq _021D8E56 + pop {r3, r4, r5, pc} +_021D8E32: + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB2D0 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8E44: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7E8 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8E56: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA81C + cmp r0, #0 + beq _021D8E82 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB358 + cmp r0, #0 + beq _021D8E82 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7C4 + add r0, r5, #0 + bl MOD15_021D8998 +_021D8E82: + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D8E84 +MOD15_021D8E84: ; 0x021D8E84 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #3 + bhi _021D8F26 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E9C: ; jump table + .short _021D8EA4 - _021D8E9C - 2 ; case 0 + .short _021D8EB6 - _021D8E9C - 2 ; case 1 + .short _021D8ED4 - _021D8E9C - 2 ; case 2 + .short _021D8EF4 - _021D8E9C - 2 ; case 3 +_021D8EA4: + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB2D0 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8EB6: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DA588 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7E8 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8ED4: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA81C + cmp r0, #0 + beq _021D8F26 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7C4 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8EF4: + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB358 + cmp r0, #0 + beq _021D8F26 + ldr r0, [r4, #0x18] + bl MOD15_021D873C + add r1, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA5B4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DA588 + add r0, r5, #0 + bl MOD15_021D8998 +_021D8F26: + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D8F28 +MOD15_021D8F28: ; 0x021D8F28 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #0 + beq _021D8F3A + cmp r0, #1 + beq _021D8F62 + pop {r3, r4, r5, pc} +_021D8F3A: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA178 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DA588 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA6A0 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8F62: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA6C4 + cmp r0, #0 + beq _021D8F8A + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9E0C + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DCC + add r0, r5, #0 + bl MOD15_021D8998 +_021D8F8A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D8F8C +MOD15_021D8F8C: ; 0x021D8F8C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #0 + beq _021D8FA2 + cmp r0, #1 + beq _021D8FCA + cmp r0, #2 + beq _021D8FEA + pop {r3, r4, r5, pc} +_021D8FA2: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA9D4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DA588 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA744 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8FCA: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA760 + cmp r0, #0 + beq _021D9028 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAA24 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D8FEA: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAAD0 + cmp r0, #0 + beq _021D9028 + ldr r0, [r4, #0x18] + bl MOD15_021D8794 + add r1, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DABC0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DAB80 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DB4E8 + add r0, r5, #0 + bl MOD15_021D8998 +_021D9028: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D902C +MOD15_021D902C: ; 0x021D902C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #4 + bhi _021D90FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9044: ; jump table + .short _021D904E - _021D9044 - 2 ; case 0 + .short _021D9060 - _021D9044 - 2 ; case 1 + .short _021D908A - _021D9044 - 2 ; case 2 + .short _021D90AA - _021D9044 - 2 ; case 3 + .short _021D90BC - _021D9044 - 2 ; case 4 +_021D904E: + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB2D0 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D9060: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DAB80 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DB4E8 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAAF4 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D908A: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAB18 + cmp r0, #0 + beq _021D90FC + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7C4 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D90AA: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA77C + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D90BC: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7B8 + cmp r0, #0 + beq _021D90FC + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021DB358 + cmp r0, #0 + beq _021D90FC + ldr r0, [r4, #0x18] + bl MOD15_021D873C + add r1, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA5B4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DA588 + add r0, r5, #0 + bl MOD15_021D8998 +_021D90FC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9100 +MOD15_021D9100: ; 0x021D9100 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #3 + bhi _021D91DC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9118: ; jump table + .short _021D9120 - _021D9118 - 2 ; case 0 + .short _021D9154 - _021D9118 - 2 ; case 1 + .short _021D917E - _021D9118 - 2 ; case 2 + .short _021D919E - _021D9118 - 2 ; case 3 +_021D9120: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA178 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DAB80 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DB4E8 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAAF4 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D9154: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAB18 + cmp r0, #0 + beq _021D91DC + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA710 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA77C + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D917E: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7B8 + cmp r0, #0 + beq _021D91DC + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA720 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D919E: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA738 + cmp r0, #0 + beq _021D91DC + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9964 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021D9DD8 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9E0C + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DCC + add r0, r5, #0 + bl MOD15_021D8998 +_021D91DC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D91E0 +MOD15_021D91E0: ; 0x021D91E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #3 + bhi _021D92B4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D91F8: ; jump table + .short _021D9200 - _021D91F8 - 2 ; case 0 + .short _021D9234 - _021D91F8 - 2 ; case 1 + .short _021D925E - _021D91F8 - 2 ; case 2 + .short _021D927E - _021D91F8 - 2 ; case 3 +_021D9200: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA178 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DAB80 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021DB4E8 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAAF4 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D9234: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DAB18 + cmp r0, #0 + beq _021D92B4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA710 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA77C + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D925E: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA7B8 + cmp r0, #0 + beq _021D92B4 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA720 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D927E: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA738 + cmp r0, #0 + beq _021D92B4 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9964 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021D9DD8 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DA10C + add r0, r5, #0 + bl MOD15_021D8998 +_021D92B4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D92B8 +MOD15_021D92B8: ; 0x021D92B8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5] + ldr r0, [r4, #0x18] + bl MOD15_021D872C + add r1, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9E3C + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D92D8 +MOD15_021D92D8: ; 0x021D92D8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5] + ldr r0, [r4, #0x18] + bl MOD15_021D8734 + add r1, r0, #0 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA124 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D92F8 +MOD15_021D92F8: ; 0x021D92F8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5] + ldr r0, [r4, #0x18] + bl MOD15_021D873C + add r1, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA5B4 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D9318 +MOD15_021D9318: ; 0x021D9318 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5] + ldr r0, [r4, #0x18] + bl MOD15_021D8794 + add r1, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DABC0 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D9338 +MOD15_021D9338: ; 0x021D9338 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x14] + ldr r4, [r5] + cmp r0, #0 + beq _021D934A + cmp r0, #1 + beq _021D9364 + pop {r3, r4, r5, pc} +_021D934A: + ldr r0, [r4, #0x18] + bl MOD15_021D87A0 + add r1, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DABFC + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + pop {r3, r4, r5, pc} +_021D9364: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DACB8 + cmp r0, #0 + beq _021D9384 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD15_021DB4E8 + add r0, r5, #0 + bl MOD15_021D8998 +_021D9384: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9388 +MOD15_021D9388: ; 0x021D9388 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1e + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD15_021D9CB4 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D93A4 +MOD15_021D93A4: ; 0x021D93A4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x1e + ldr r4, [r5] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD15_021D9CB4 + ldr r0, [r5, #4] + bl MOD15_021D87EC + add r1, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9ECC + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA118 + cmp r0, #0 + beq _021D93E2 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA0F4 + b _021D93EC +_021D93E2: + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DC0 +_021D93EC: + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D93F4 +MOD15_021D93F4: ; 0x021D93F4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x1e + ldr r4, [r5] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD15_021D9CB4 + ldr r0, [r5, #4] + bl MOD15_021D87EC + add r1, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9ECC + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA118 + cmp r0, #0 + beq _021D9432 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA0F4 + b _021D943C +_021D9432: + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DC0 +_021D943C: + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D9444 +MOD15_021D9444: ; 0x021D9444 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1e + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl MOD15_021D9CB4 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9460 +MOD15_021D9460: ; 0x021D9460 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #4] + ldr r4, [r5] + bl MOD15_021D87EC + add r1, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9F58 + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D9480 +MOD15_021D9480: ; 0x021D9480 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x1e + ldr r4, [r5] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD15_021D9CB4 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9F88 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA118 + cmp r0, #0 + beq _021D94B6 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD15_021DA100 + b _021D94C0 +_021D94B6: + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD15_021D9DCC +_021D94C0: + add r0, r5, #0 + bl MOD15_021D8998 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D94C8 +MOD15_021D94C8: ; 0x021D94C8 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1f + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + mov r2, #1 + bl MOD15_021DB520 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + + thumb_func_start MOD15_021D94E4 +MOD15_021D94E4: ; 0x021D94E4 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1f + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + add r2, r1, #0 + bl MOD15_021DB520 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + + thumb_func_start MOD15_021D9500 +MOD15_021D9500: ; 0x021D9500 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1f + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl MOD15_021DB520 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + + thumb_func_start MOD15_021D951C +MOD15_021D951C: ; 0x021D951C + push {r4, lr} + add r4, r1, #0 + mov r0, #0x1f + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + mov r2, #0 + bl MOD15_021DB520 + add r0, r4, #0 + bl MOD15_021D8998 + pop {r4, pc} + + thumb_func_start MOD15_021D9538 +MOD15_021D9538: ; 0x021D9538 + mov r1, #0x1e + lsl r1, r1, #4 + ldr r3, _021D9544 ; =MOD15_021D9CB0 + ldr r0, [r0, r1] + bx r3 + nop +_021D9544: .word MOD15_021D9CB0 + + thumb_func_start MOD15_021D9548 +MOD15_021D9548: ; 0x021D9548 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start MOD15_021D954C +MOD15_021D954C: ; 0x021D954C + ldr r0, [r0, #0x24] + bx lr + + thumb_func_start MOD15_021D9550 +MOD15_021D9550: ; 0x021D9550 + push {r3, r4, r5, r6} + mov r4, #0x15 + lsl r4, r4, #4 + mov r5, #0x24 + add r6, r0, r4 + mul r5, r2 + add r5, r6, r5 + str r5, [r1] + add r5, r4, #0 + add r5, #0x48 + add r6, r0, r5 + mov r5, #0x14 + mul r5, r2 + lsl r2, r2, #2 + add r5, r6, r5 + add r2, r0, r2 + add r0, r4, #0 + str r5, [r1, #8] + add r0, #0x70 + ldr r0, [r2, r0] + add r4, #0x78 + str r0, [r1, #0xc] + ldr r0, [r2, r4] + str r0, [r1, #0x10] + add r0, r1, #0 + add r0, #0x20 + strb r3, [r0] + mov r0, #0 + str r0, [r1, #4] + str r0, [r1, #0x14] + str r0, [r1, #0x18] + str r0, [r1, #0x1c] + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD15_021D9594 +MOD15_021D9594: ; 0x021D9594 + push {r3, r4, r5, lr} + sub sp, #0x20 + ldr r0, [r0, #0x24] + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x34] + str r0, [sp, #0x18] + mov r0, #0x23 + str r0, [sp, #0x1c] + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, sp, #0 + bl FUN_0201FF84 + add r5, r0, #0 + add r0, r4, #0 + bl OS_RestoreInterrupts + cmp r5, #0 + beq _021D95E0 + add r0, r5, #0 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021D95E0: + add r0, r5, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D95E8 +MOD15_021D95E8: ; 0x021D95E8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x1b + add r5, r0, #0 + mov r0, #0x23 + lsl r1, r1, #4 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + mov r0, #0 + str r0, [r4, #0x3c] + str r0, [r4, #0x40] + str r0, [r4, #0x44] + mov r0, #0x80 + mov r1, #0x23 + bl FUN_020219F4 + str r0, [r4, #0x4c] + ldr r2, _021D9630 ; =0x00000182 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x23 + bl FUN_0200A86C + str r0, [r4, #0x48] + mov r0, #0x23 + bl FUN_02013690 + str r0, [r4, #0x50] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9630: .word 0x00000182 + + thumb_func_start MOD15_021D9634 +MOD15_021D9634: ; 0x021D9634 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021D9642 + bl FUN_020136C0 +_021D9642: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021D964C + bl FUN_0201FFC8 +_021D964C: + ldr r0, [r4, #0x40] + cmp r0, #0 + beq _021D9656 + bl FUN_0201FFC8 +_021D9656: + ldr r0, [r4, #0x44] + cmp r0, #0 + beq _021D9660 + bl FUN_0201FFC8 +_021D9660: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021D966A + bl FUN_0200A8B8 +_021D966A: + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021D9674 + bl FUN_02021A20 +_021D9674: + add r0, r4, #0 + add r0, #0xc + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x1c + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x2c + bl FUN_02019178 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD15_021D9694 +MOD15_021D9694: ; 0x021D9694 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + bl MOD15_021D9548 + add r6, r0, #0 + add r0, r5, #0 + bl MOD15_021D97E4 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + add r2, r6, #0 + add r3, r1, #0 + bl FUN_020068C8 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + add r2, r6, #0 + bl FUN_0200687C + lsr r4, r0, #5 + mov r0, #1 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + lsl r0, r4, #0x10 + add r1, r5, #0 + str r2, [sp, #0xc] + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, #0xc + mov r3, #3 + bl FUN_02019064 + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + add r1, r5, #0 + str r3, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x6c + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, #0x1c + mov r2, #0 + bl FUN_02019064 + mov r0, #0xf + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0xa2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r5, #0 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, #0x2c + mov r2, #0 + mov r3, #0x17 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0xc2 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x26 + add r2, r6, #0 + add r3, r1, #0 + bl FUN_0200687C + add r0, r4, #0 + add r0, #0xc2 + str r0, [r5, #0x60] + mov r0, #0x20 + str r0, [sp] + mov r0, #0x23 + mov r3, #7 + str r0, [sp, #4] + mov r0, #0x26 + mov r1, #0x18 + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006930 + ldr r0, [r5, #4] + bl MOD15_021D87E0 + lsl r0, r0, #0x18 + add r2, r4, #0 + lsr r0, r0, #0x18 + add r2, #0xcb + str r0, [sp] + mov r0, #0x23 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r5, #0 + add r4, #0xcb + add r0, #0x1c + add r1, r4, #0 + mov r2, #0xf + bl FUN_0200D06C + add r0, r5, #0 + add r0, #0xc + bl FUN_02019270 + add r0, r5, #0 + add r0, #0x1c + bl FUN_02019270 + add r0, r5, #0 + bl MOD15_021D9868 + add r0, r5, #0 + bl MOD15_021D9964 + add r0, r5, #0 + mov r1, #0 + bl MOD15_021D9CB4 + add r0, r5, #0 + bl MOD15_021D98C0 + add r0, r6, #0 + mov r1, #0 + bl FUN_02017CD0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD15_021D97E4 +MOD15_021D97E4: ; 0x021D97E4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #7 + lsl r0, r0, #6 + str r0, [sp] + mov r0, #0x23 + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #6 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0x4c + mov r1, #6 + add r2, sp, #8 + mov r3, #0x23 + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #8] + add r1, r5, #0 + mov r2, #5 + ldr r0, [r0, #0xc] + add r1, #0x70 + lsl r2, r2, #6 + bl MIi_CpuCopy16 + add r5, #0x70 + mov r1, #5 + add r0, r5, #0 + lsl r1, r1, #6 + bl DC_FlushRange + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD15_021D9834 +MOD15_021D9834: ; 0x021D9834 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #2 + bne _021D985A + ldr r0, [r4, #4] + bl MOD15_021D86FC + add r0, r0, #1 + add r4, #0x70 + lsl r0, r0, #5 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x20 + bl GX_LoadBGPltt + pop {r4, pc} +_021D985A: + add r4, #0x70 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl GX_LoadBGPltt + pop {r4, pc} + + thumb_func_start MOD15_021D9868 +MOD15_021D9868: ; 0x021D9868 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #0 + beq _021D9880 + cmp r0, #1 + beq _021D9896 + cmp r0, #2 + beq _021D98BA + pop {r4, pc} +_021D9880: + add r0, r4, #0 + mov r1, #0x68 + add r0, #0x54 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x10 + add r0, #0x56 + strh r1, [r0] + mov r0, #1 + str r0, [r4, #0x5c] + pop {r4, pc} +_021D9896: + add r0, r4, #0 + mov r1, #0x30 + add r0, #0x54 + strh r1, [r0] + add r0, r4, #0 + mov r2, #0x10 + add r0, #0x56 + strh r2, [r0] + add r0, r4, #0 + mov r1, #0xa0 + add r0, #0x58 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x5a + strh r2, [r0] + mov r0, #2 + str r0, [r4, #0x5c] + pop {r4, pc} +_021D98BA: + mov r0, #0 + str r0, [r4, #0x5c] + pop {r4, pc} + + thumb_func_start MOD15_021D98C0 +MOD15_021D98C0: ; 0x021D98C0 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r0, #0 + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021D98D8 + add r0, r4, #0 + add r0, #0x54 + add r1, sp, #8 + bl MOD15_021D9C1C + b _021D98E2 +_021D98D8: + mov r1, #0x80 + add r0, sp, #8 + strh r1, [r0] + mov r1, #0x18 + strh r1, [r0, #2] +_021D98E2: + mov r2, #0 + ldr r0, [r4] + add r1, sp, #0xc + add r3, r2, #0 + bl MOD15_021D9550 + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + add r5, sp, #8 + mov r3, #2 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r0, [r4] + add r1, sp, #0xc + bl MOD15_021D9594 + str r0, [r4, #0x3c] + add r0, r4, #0 + mov r1, #1 + bl MOD15_021D9E98 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0xc + mov r2, #6 + mov r3, #0x18 + bl MOD15_021D9594 + mov r1, #0xd + str r0, [r4, #0x40] + bl FUN_02020130 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0xc + mov r2, #0xfa + mov r3, #0x18 + bl MOD15_021D9594 + str r0, [r4, #0x44] + mov r1, #0xc + bl FUN_02020130 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #2 + beq _021D995E + ldr r0, [r4, #0x44] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_020200A0 +_021D995E: + add sp, #0x30 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9964 +MOD15_021D9964: ; 0x021D9964 + push {r4, lr} + add r4, r0, #0 + bl MOD15_021D9834 + add r0, r4, #0 + add r0, #0xc + mov r1, #0xd + bl FUN_02019620 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #0 + beq _021D998A + cmp r0, #1 + beq _021D99B0 + cmp r0, #2 + beq _021D99FA + b _021D9A02 +_021D998A: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xc + add r1, #0x54 + bl MOD15_021D9C30 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD15_021D8708 + add r1, r4, #0 + add r2, r4, #0 + add r3, r0, #0 + add r0, r4, #0 + add r1, #0xc + add r2, #0x54 + bl MOD15_021D9C58 + b _021D9A02 +_021D99B0: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xc + add r1, #0x54 + bl MOD15_021D9C30 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xc + add r1, #0x58 + bl MOD15_021D9C30 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD15_021D8708 + add r1, r4, #0 + add r2, r4, #0 + add r3, r0, #0 + add r0, r4, #0 + add r1, #0xc + add r2, #0x54 + bl MOD15_021D9C58 + ldr r0, [r4, #4] + mov r1, #1 + bl MOD15_021D8708 + add r1, r4, #0 + add r2, r4, #0 + add r3, r0, #0 + add r0, r4, #0 + add r1, #0xc + add r2, #0x58 + bl MOD15_021D9C58 + b _021D9A02 +_021D99FA: + add r0, r4, #0 + bl MOD15_021D9A0C + str r0, [r4, #0x5c] +_021D9A02: + add r4, #0xc + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + + thumb_func_start MOD15_021D9A0C +MOD15_021D9A0C: ; 0x021D9A0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x10] + ldr r0, [r0, #4] + mov r1, #0x23 + bl MOD15_021D8720 + mov r4, #0 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, #0x64 + str r4, [sp, #0x18] + add r5, r4, #0 + bl MOD15_021D9B04 + ldr r7, [sp, #0x10] + add r0, r7, #0 + str r0, [sp, #0x24] + add r0, #0xc + str r0, [sp, #0x24] + add r0, r7, #0 + add r6, r7, #0 + str r0, [sp, #0x20] + add r0, #0x64 + add r6, #0x54 + str r0, [sp, #0x20] +_021D9A46: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + bl MOD15_021D9B3C + cmp r0, #3 + bhi _021D9ADE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9A5E: ; jump table + .short _021D9A66 - _021D9A5E - 2 ; case 0 + .short _021D9A8E - _021D9A5E - 2 ; case 1 + .short _021D9AD4 - _021D9A5E - 2 ; case 2 + .short _021D9ADA - _021D9A5E - 2 ; case 3 +_021D9A66: + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9AFC ; =0x0003040D + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + mov r1, #1 + add r3, r5, #0 + bl FUN_0201BDE0 + ldr r1, [sp, #0x1c] + mov r0, #1 + mov r2, #0 + bl FUN_02002E14 + add r5, r5, r0 + b _021D9ADE +_021D9A8E: + add r1, r5, #0 + add r0, r7, #0 + add r1, #0x32 + add r0, #0x54 + strh r1, [r0] + add r1, r4, #0 + add r0, r7, #0 + add r1, #8 + add r0, #0x56 + strh r1, [r0] + ldr r0, [sp, #0x24] + add r1, r6, #0 + bl MOD15_021D9C30 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r0, [r0, #4] + bl MOD15_021D8708 + add r3, r0, #0 + ldr r0, _021D9B00 ; =0x0000FFFF + cmp r3, r0 + beq _021D9AC6 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x24] + add r2, r6, #0 + bl MOD15_021D9C58 +_021D9AC6: + ldr r0, [sp, #0x18] + add r7, r7, #4 + add r0, r0, #1 + add r6, r6, #4 + str r0, [sp, #0x18] + add r5, #0x64 + b _021D9ADE +_021D9AD4: + add r4, #0x10 + mov r5, #0 + b _021D9ADE +_021D9ADA: + mov r0, #0 + str r0, [sp, #0x14] +_021D9ADE: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _021D9A46 + ldr r0, [sp, #0x10] + add r0, #0x64 + str r0, [sp, #0x10] + bl MOD15_021D9B30 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x18] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9AFC: .word 0x0003040D +_021D9B00: .word 0x0000FFFF + + thumb_func_start MOD15_021D9B04 +MOD15_021D9B04: ; 0x021D9B04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #4] + mov r1, #0x23 + bl MOD15_021D8720 + str r0, [r4] + bl FUN_02021F2C + str r0, [r4, #4] + ldrh r1, [r0] + ldr r0, _021D9B2C ; =0x0000FFFE + cmp r1, r0 + bne _021D9B26 + mov r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021D9B26: + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_021D9B2C: .word 0x0000FFFE + + thumb_func_start MOD15_021D9B30 +MOD15_021D9B30: ; 0x021D9B30 + ldr r3, _021D9B38 ; =0x02021A21 + ldr r0, [r0] + bx r3 + nop +_021D9B38: .word 0x02021A21 + + thumb_func_start MOD15_021D9B3C +MOD15_021D9B3C: ; 0x021D9B3C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + str r1, [sp] + mov ip, r0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _021D9BCC + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9B58: ; jump table + .short _021D9B60 - _021D9B58 - 2 ; case 0 + .short _021D9BB6 - _021D9B58 - 2 ; case 1 + .short _021D9BC2 - _021D9B58 - 2 ; case 2 + .short _021D9BCC - _021D9B58 - 2 ; case 3 +_021D9B60: + cmp r0, #0 + bne _021D9B9C + ldr r6, _021D9C04 ; =0x0000FFFE + mov r3, #0xe + mov r0, #1 + mov r1, #3 + mov r2, #2 + add r7, r6, #1 + lsl r3, r3, #0xc +_021D9B72: + ldr r5, [r4, #4] + ldrh r5, [r5] + cmp r5, r3 + beq _021D9B84 + cmp r5, r6 + beq _021D9B8C + cmp r5, r7 + beq _021D9B88 + b _021D9B90 +_021D9B84: + str r2, [r4, #8] + b _021D9B96 +_021D9B88: + str r1, [r4, #8] + b _021D9B96 +_021D9B8C: + str r0, [r4, #8] + b _021D9B96 +_021D9B90: + ldr r5, [r4, #4] + add r5, r5, #2 + str r5, [r4, #4] +_021D9B96: + ldr r5, [r4, #8] + cmp r5, #0 + beq _021D9B72 +_021D9B9C: + ldr r3, [r4, #4] + mov r2, ip + sub r3, r3, r2 + lsr r2, r3, #0x1f + add r2, r3, r2 + asr r2, r2, #1 + ldr r0, [sp] + mov r1, ip + add r2, r2, #1 + bl FUN_02021E8C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9BB6: + mov r0, ip + bl FUN_0201B8B8 + str r0, [r4, #4] + mov r0, #1 + b _021D9BD0 +_021D9BC2: + mov r0, ip + add r0, r0, #2 + str r0, [r4, #4] + mov r0, #2 + b _021D9BD0 +_021D9BCC: + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_021D9BD0: + ldr r1, [r4, #4] + ldrh r2, [r1] + mov r1, #0xe + lsl r1, r1, #0xc + cmp r2, r1 + beq _021D9BEA + ldr r1, _021D9C04 ; =0x0000FFFE + cmp r2, r1 + beq _021D9BF6 + add r1, r1, #1 + cmp r2, r1 + beq _021D9BF0 + b _021D9BFC +_021D9BEA: + mov r1, #2 + str r1, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_021D9BF0: + mov r1, #3 + str r1, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_021D9BF6: + mov r1, #1 + str r1, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_021D9BFC: + mov r1, #0 + str r1, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9C04: .word 0x0000FFFE + + thumb_func_start MOD15_021D9C08 +MOD15_021D9C08: ; 0x021D9C08 + mov r2, #0 + ldrsh r2, [r0, r2] + sub r2, #0x30 + strh r2, [r1] + mov r2, #2 + ldrsh r0, [r0, r2] + sub r0, #8 + strh r0, [r1, #2] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D9C1C +MOD15_021D9C1C: ; 0x021D9C1C + mov r2, #0 + ldrsh r2, [r0, r2] + add r2, #0x18 + strh r2, [r1] + mov r2, #2 + ldrsh r0, [r0, r2] + add r0, #8 + strh r0, [r1, #2] + bx lr + .align 2, 0 + + thumb_func_start MOD15_021D9C30 +MOD15_021D9C30: ; 0x021D9C30 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, r1, #0 + add r1, sp, #8 + bl MOD15_021D9C08 + mov r0, #0x60 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r3, sp, #8 + ldrh r2, [r3] + ldrh r3, [r3, #2] + add r0, r4, #0 + mov r1, #0xe + bl FUN_020196F4 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD15_021D9C58 +MOD15_021D9C58: ; 0x021D9C58 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, _021D9CA8 ; =0x0000FFFF + add r6, r3, #0 + add r4, r1, #0 + cmp r6, r0 + beq _021D9CA2 + add r0, r2, #0 + add r1, sp, #0x10 + bl MOD15_021D9C08 + ldr r1, [r5, #0x4c] + add r0, r6, #0 + bl FUN_02013A58 + ldr r1, [r5, #0x4c] + mov r0, #1 + mov r2, #0 + bl FUN_02002E14 + add r3, sp, #0x10 + mov r0, #2 + ldrsh r0, [r3, r0] + mov r6, #0 + mov r1, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9CAC ; =0x0005060E + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrsh r3, [r3, r6] + ldr r2, [r5, #0x4c] + add r0, r4, #0 + bl FUN_0201BDE0 +_021D9CA2: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D9CA8: .word 0x0000FFFF +_021D9CAC: .word 0x0005060E + + thumb_func_start MOD15_021D9CB0 +MOD15_021D9CB0: ; 0x021D9CB0 + ldr r0, [r0, #0x5c] + bx lr + + thumb_func_start MOD15_021D9CB4 +MOD15_021D9CB4: ; 0x021D9CB4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r0, #0 + add r5, r1, #0 + add r0, #0x1c + mov r1, #9 + bl FUN_02019620 + cmp r5, #3 + bhi _021D9DB0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9CD4: ; jump table + .short _021D9CDC - _021D9CD4 - 2 ; case 0 + .short _021D9D66 - _021D9CD4 - 2 ; case 1 + .short _021D9D40 - _021D9CD4 - 2 ; case 2 + .short _021D9D8C - _021D9CD4 - 2 ; case 3 +_021D9CDC: + mov r0, #2 + mov r1, #0x3c + mov r2, #0 + bl FUN_0200AA90 + add r5, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + mov r1, #0 + bl FUN_020219F4 + mov r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_0200AEE0 + ldr r0, [r4, #4] + bl MOD15_021D86E8 + add r1, r0, #0 + ldr r0, [r4, #0x48] + ldr r2, [r4, #0x4c] + bl FUN_0200A8E0 + ldr r2, [r4, #0x4c] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9DBC ; =0x00010209 + mov r1, #1 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x1c + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200AB18 + b _021D9DB0 +_021D9D40: + ldr r0, [r4, #0x48] + ldr r2, [r4, #0x4c] + mov r1, #6 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9DBC ; =0x00010209 + mov r1, #1 + str r0, [sp, #8] + str r3, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x4c] + add r0, #0x1c + bl FUN_0201BDE0 + b _021D9DB0 +_021D9D66: + ldr r0, [r4, #0x48] + ldr r2, [r4, #0x4c] + mov r1, #7 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9DBC ; =0x00010209 + mov r1, #1 + str r0, [sp, #8] + str r3, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x4c] + add r0, #0x1c + bl FUN_0201BDE0 + b _021D9DB0 +_021D9D8C: + ldr r0, [r4, #0x48] + ldr r2, [r4, #0x4c] + mov r1, #8 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9DBC ; =0x00010209 + mov r1, #1 + str r0, [sp, #8] + str r3, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x4c] + add r0, #0x1c + bl FUN_0201BDE0 +_021D9DB0: + add r4, #0x1c + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9DBC: .word 0x00010209 + + thumb_func_start MOD15_021D9DC0 +MOD15_021D9DC0: ; 0x021D9DC0 + ldr r3, _021D9DC8 ; =MOD15_021D9E98 + mov r1, #0 + bx r3 + nop +_021D9DC8: .word MOD15_021D9E98 + + thumb_func_start MOD15_021D9DCC +MOD15_021D9DCC: ; 0x021D9DCC + ldr r3, _021D9DD4 ; =MOD15_021D9E98 + mov r1, #1 + bx r3 + nop +_021D9DD4: .word MOD15_021D9E98 + + thumb_func_start MOD15_021D9DD8 +MOD15_021D9DD8: ; 0x021D9DD8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #1 + bl MOD15_021D9E98 + pop {r4, pc} + + thumb_func_start MOD15_021D9DEC +MOD15_021D9DEC: ; 0x021D9DEC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #2 + bne _021D9E0A + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x44] + mov r1, #0 + bl FUN_020200A0 +_021D9E0A: + pop {r4, pc} + + thumb_func_start MOD15_021D9E0C +MOD15_021D9E0C: ; 0x021D9E0C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86E4 + cmp r0, #2 + bne _021D9E3A + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x44] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x40] + mov r1, #0xd + bl FUN_02020130 + ldr r0, [r4, #0x44] + mov r1, #0xc + bl FUN_02020130 +_021D9E3A: + pop {r4, pc} + + thumb_func_start MOD15_021D9E3C +MOD15_021D9E3C: ; 0x021D9E3C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021D9E6C + add r2, r4, #0 + lsl r0, r1, #2 + add r2, #0x54 + add r0, r2, r0 + add r1, sp, #0 + bl MOD15_021D9C1C + add r1, sp, #0 + mov r2, #0 + ldrsh r0, [r1, r2] + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #0xc + str r0, [sp, #8] + str r2, [sp, #0xc] + b _021D9E84 +_021D9E6C: + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r4, #0x3c] + add r1, sp, #4 + bl FUN_02020044 +_021D9E84: + ldr r0, [r4, #0x3c] + add r1, sp, #4 + bl FUN_02020044 + add r0, r4, #0 + mov r1, #1 + bl MOD15_021D9E98 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD15_021D9E98 +MOD15_021D9E98: ; 0x021D9E98 + push {r3, lr} + ldr r2, [r0, #0x5c] + cmp r2, #0 + beq _021D9EB6 + cmp r1, #0 + ldr r0, [r0, #0x3c] + beq _021D9EAE + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} +_021D9EAE: + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021D9EB6: + cmp r1, #0 + ldr r0, [r0, #0x3c] + beq _021D9EC4 + mov r1, #0xe + bl FUN_02020130 + pop {r3, pc} +_021D9EC4: + mov r1, #0xf + bl FUN_02020130 + pop {r3, pc} + + thumb_func_start MOD15_021D9ECC +MOD15_021D9ECC: ; 0x021D9ECC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x2c + mov r1, #9 + bl FUN_02019620 + ldr r0, [r5, #0x48] + ldr r2, [r5, #0x4c] + mov r1, #9 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9F54 ; =0x00010209 + mov r3, #0xe + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + ldr r2, [r5, #0x4c] + add r0, #0x2c + bl FUN_0201BDE0 + ldr r0, [r5, #0x48] + ldr r2, [r5, #0x4c] + mov r1, #0xa + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9F54 ; =0x00010209 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + ldr r2, [r5, #0x4c] + add r0, #0x2c + mov r3, #0xe + bl FUN_0201BDE0 + ldr r2, [r5, #0x60] + add r0, r5, #0 + lsl r2, r2, #0x10 + add r0, #0x2c + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #0xe + bl FUN_0200CCA4 + add r1, r5, #0 + ldr r0, [r5, #0x50] + add r1, #0x2c + mov r2, #0 + lsl r3, r4, #4 + bl FUN_020136F8 + add r5, #0x2c + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D9F54: .word 0x00010209 + + thumb_func_start MOD15_021D9F58 +MOD15_021D9F58: ; 0x021D9F58 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xe + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0 + add r4, r1, #0 + add r0, #0x2c + mov r1, #9 + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, [r5, #0x50] + add r5, #0x2c + add r1, r5, #0 + mov r2, #0 + lsl r3, r4, #4 + bl FUN_020136F8 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021D9F88 +MOD15_021D9F88: ; 0x021D9F88 + push {r4, lr} + add r4, r0, #0 + add r0, #0x2c + mov r1, #0 + bl FUN_0200CCF8 + add r4, #0x2c + add r0, r4, #0 + bl FUN_02019570 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9FA0 +MOD15_021D9FA0: ; 0x021D9FA0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x23 + mov r1, #0x10 + add r6, r2, #0 + bl FUN_02016998 + str r5, [r0] + str r4, [r0, #4] + str r6, [r0, #8] + mov r1, #0 + str r1, [r0, #0xc] + pop {r4, r5, r6, pc} + + thumb_func_start MOD15_021D9FBC +MOD15_021D9FBC: ; 0x021D9FBC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021D9FCA + bl FUN_0201FFC8 +_021D9FCA: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021D9FD4 +MOD15_021D9FD4: ; 0x021D9FD4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + bl MOD15_021D9548 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + mov r1, #4 + add r2, r4, #0 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + mov r1, #5 + add r2, r4, #0 + mov r3, #3 + bl FUN_0200687C + ldr r1, _021DA03C ; =0x021DBA00 + add r0, r4, #0 + mov r2, #0 + bl MOD15_021DA044 + ldr r1, _021DA040 ; =0x021DBA08 + add r0, r4, #0 + mov r2, #1 + bl MOD15_021DA044 + add r0, r5, #0 + bl MOD15_021DA0B8 + add r0, r4, #0 + mov r1, #3 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA03C: .word 0x021DBA00 +_021DA040: .word 0x021DBA08 + + thumb_func_start MOD15_021DA044 +MOD15_021DA044: ; 0x021DA044 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r1, #0 + add r4, r2, #0 + add r1, sp, #0x10 + add r2, r5, #0 + bl FUN_02019150 + add r0, sp, #0x10 + bl FUN_02019270 + add r0, sp, #0x10 + mov r1, #0xe + bl FUN_02019620 + ldr r1, _021DA0B0 ; =0x00000183 + mov r0, #0x1a + add r2, r4, #0 + mov r3, #0x23 + bl FUN_0200A738 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r5, #3] + add r2, r4, #0 + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DA0B4 ; =0x0001020E + str r0, [sp, #8] + add r0, sp, #0x10 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x10 + bl FUN_02019548 + add r0, r4, #0 + bl FUN_02021A20 + add r0, sp, #0x10 + bl FUN_02019178 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_021DA0B0: .word 0x00000183 +_021DA0B4: .word 0x0001020E + + thumb_func_start MOD15_021DA0B8 +MOD15_021DA0B8: ; 0x021DA0B8 + push {r3, r4, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0 + mov r3, #3 + bl MOD15_021D9550 + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0x40 + mov r3, #0x38 + bl MOD15_021D9594 + str r0, [r4, #0xc] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x2c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA0F4 +MOD15_021DA0F4: ; 0x021DA0F4 + ldr r3, _021DA0FC ; =0x02020131 + ldr r0, [r0, #0xc] + mov r1, #3 + bx r3 + .align 2, 0 +_021DA0FC: .word 0x02020131 + + thumb_func_start MOD15_021DA100 +MOD15_021DA100: ; 0x021DA100 + ldr r3, _021DA108 ; =0x02020131 + ldr r0, [r0, #0xc] + mov r1, #2 + bx r3 + .align 2, 0 +_021DA108: .word 0x02020131 + + thumb_func_start MOD15_021DA10C +MOD15_021DA10C: ; 0x021DA10C + ldr r3, _021DA114 ; =0x020200A1 + ldr r0, [r0, #0xc] + bx r3 + nop +_021DA114: .word 0x020200A1 + + thumb_func_start MOD15_021DA118 +MOD15_021DA118: ; 0x021DA118 + ldr r3, _021DA120 ; =0x02020129 + ldr r0, [r0, #0xc] + bx r3 + nop +_021DA120: .word 0x02020129 + + thumb_func_start MOD15_021DA124 +MOD15_021DA124: ; 0x021DA124 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #8] + cmp r1, #0 + beq _021DA136 + cmp r1, #1 + beq _021DA144 +_021DA136: + mov r0, #1 + lsl r0, r0, #0x12 + str r0, [sp] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [sp, #4] + b _021DA150 +_021DA144: + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [sp, #4] +_021DA150: + ldr r0, [r4, #0xc] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD15_021DA164 +MOD15_021DA164: ; 0x021DA164 + push {r3, lr} + ldr r0, [r0] + bl MOD15_021D9548 + mov r1, #3 + add r2, r1, #0 + mov r3, #0x40 + bl FUN_020179E0 + pop {r3, pc} + + thumb_func_start MOD15_021DA178 +MOD15_021DA178: ; 0x021DA178 + push {r3, lr} + ldr r0, [r0] + bl MOD15_021D9548 + mov r1, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + pop {r3, pc} + + thumb_func_start MOD15_021DA18C +MOD15_021DA18C: ; 0x021DA18C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x23 + mov r1, #0x60 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + add r0, r5, #0 + bl MOD15_021D9548 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x18] + str r0, [r4, #0x5c] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD15_021DA1B8 +MOD15_021DA1B8: ; 0x021DA1B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021DA1C6 + bl FUN_0201FFC8 +_021DA1C6: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA1D0 +MOD15_021DA1D0: ; 0x021DA1D0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + bl MOD15_021D9548 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + mov r1, #2 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + mov r0, #0x4c + mov r1, #3 + add r2, r4, #0 + bl FUN_0200687C + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #5 + bl MOD15_021DA2AC + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD15_021DA3B4 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD15_021DA480 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + sub r3, r2, #4 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #2 + bl FUN_020179E0 + add r0, r5, #0 + bl MOD15_021DA54C + mov r1, #2 + add r2, r1, #0 + ldr r0, _021DA2A0 ; =0x04000050 + sub r2, #0xc + bl G2x_SetBlendBrightness_ + ldr r0, _021DA2A4 ; =0x04000048 + mov r2, #0x3f + ldrh r3, [r0] + mov r1, #0x1f + bic r3, r2 + orr r3, r1 + mov r1, #0x20 + orr r3, r1 + strh r3, [r0] + ldrh r3, [r0, #2] + bic r3, r2 + mov r2, #0x1d + orr r2, r3 + orr r2, r1 + strh r2, [r0, #2] + add r2, r0, #0 + mov r3, #0xff + sub r2, #8 + strh r3, [r2] + mov r2, #0xa0 + sub r0, r0, #4 + strh r2, [r0] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _021DA2A8 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #8 + orr r0, r2 + str r0, [r3] + add r0, r4, #0 + mov r1, #1 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021DA2A0: .word 0x04000050 +_021DA2A4: .word 0x04000048 +_021DA2A8: .word 0xFFFF1FFF + + thumb_func_start MOD15_021DA2AC +MOD15_021DA2AC: ; 0x021DA2AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r2, #0 + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r2, _021DA3A4 ; =0x00000181 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x23 + bl FUN_0200A86C + str r0, [sp, #0x20] + mov r0, #9 + mov r7, #1 + str r0, [sp, #0x24] + mov r4, #0 +_021DA2CC: + cmp r4, #0 + beq _021DA2E4 + add r0, r4, #0 + mov r1, #3 + bl _s32_div_f + cmp r1, #0 + bne _021DA2E4 + ldr r0, [sp, #0x24] + mov r7, #1 + add r0, r0, #3 + str r0, [sp, #0x24] +_021DA2E4: + ldr r0, [sp, #0x14] + add r1, r4, #0 + ldr r0, [r0, #8] + bl FUN_020892C4 + cmp r0, #0 + beq _021DA302 + ldr r0, [sp, #0x20] + add r1, r4, #0 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, _021DA3A8 ; =0x0001020F + str r0, [sp, #0x1c] + b _021DA310 +_021DA302: + ldr r0, [sp, #0x20] + mov r1, #0xc + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, _021DA3AC ; =0x0003040F + str r0, [sp, #0x1c] +_021DA310: + ldr r0, _021DA3B0 ; =0x000003EE + cmp r6, r0 + blo _021DA31A + bl ErrorHandling +_021DA31A: + ldr r0, [sp, #0x24] + lsl r3, r7, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + add r1, sp, #0x28 + mov r2, #1 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, sp, #0x28 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x48 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, sp, #0x28 + add r2, r5, #0 + bl FUN_0201BDE0 + add r0, sp, #0x28 + bl FUN_02019270 + add r0, sp, #0x28 + bl FUN_02019548 + add r0, r5, #0 + bl FUN_02021A20 + add r0, sp, #0x28 + bl FUN_02019178 + add r4, r4, #1 + add r6, #0x12 + add r7, #0xa + cmp r4, #0xc + blt _021DA2CC + ldr r0, [sp, #0x20] + bl FUN_0200A8B8 + add r0, r6, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA3A4: .word 0x00000181 +_021DA3A8: .word 0x0001020F +_021DA3AC: .word 0x0003040F +_021DA3B0: .word 0x000003EE + + thumb_func_start MOD15_021DA3B4 +MOD15_021DA3B4: ; 0x021DA3B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r1, #0 + mov r1, #0xce + add r6, r0, #0 + lsl r1, r1, #2 + add r0, r2, #0 + str r2, [sp, #0x14] + cmp r0, r1 + blo _021DA3CC + bl ErrorHandling +_021DA3CC: + mov r0, #0xa + str r0, [sp] + mov r0, #0x19 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, sp, #0x20 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r4, #0 + mov r2, #1 + mov r3, #0x22 + bl FUN_02019064 + mov r0, #4 + mov r1, #0x23 + bl FUN_020219F4 + add r4, r0, #0 + add r0, sp, #0x20 + mov r1, #0xf + bl FUN_02019620 + bl MOD15_021DB770 + add r7, r0, #0 + ldr r5, _021DA474 ; =0x00000000 + beq _021DA452 +_021DA40C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD15_021DB774 + add r0, r5, #0 + add r1, sp, #0x1c + add r2, sp, #0x18 + bl MOD15_021DB798 + ldr r0, [r6, #8] + add r1, r5, #0 + bl FUN_02089300 + cmp r0, #0 + beq _021DA42E + ldr r1, _021DA478 ; =0x0001020F + b _021DA430 +_021DA42E: + ldr r1, _021DA47C ; =0x0003040F +_021DA430: + ldr r0, [sp, #0x18] + add r2, r4, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r3, [sp, #0x1c] + add r0, sp, #0x20 + mov r1, #0 + add r3, r3, #3 + bl FUN_0201BDE0 + add r5, r5, #1 + cmp r5, r7 + blo _021DA40C +_021DA452: + add r0, sp, #0x20 + bl FUN_02019548 + add r0, sp, #0x20 + bl FUN_02019270 + add r0, r4, #0 + bl FUN_02021A20 + add r0, sp, #0x20 + bl FUN_02019178 + ldr r0, [sp, #0x14] + add r0, #0xc8 + str r0, [sp, #0x14] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA474: .word 0x00000000 +_021DA478: .word 0x0001020F +_021DA47C: .word 0x0003040F + + thumb_func_start MOD15_021DA480 +MOD15_021DA480: ; 0x021DA480 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r2, #0 + str r1, [sp, #0x14] + ldr r2, _021DA540 ; =0x00000181 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x23 + bl FUN_0200A86C + mov r1, #0xd + str r0, [sp, #0x20] + bl FUN_0200A914 + str r0, [sp, #0x1c] + mov r0, #0 + ldr r1, [sp, #0x1c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x40 + sub r0, r1, r0 + lsr r0, r0, #1 + ldr r4, _021DA544 ; =0x021DBA10 + str r0, [sp, #0x18] + mov r7, #0 + add r6, sp, #0x24 +_021DA4B6: + mov r0, #0x3f + lsl r0, r0, #4 + cmp r5, r0 + blo _021DA4C2 + bl ErrorHandling +_021DA4C2: + ldrh r0, [r4, #2] + add r1, r6, #0 + mov r2, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r6, #0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DA548 ; =0x0001020F + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r3, [sp, #0x18] + add r0, r6, #0 + mov r1, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02019270 + add r0, r6, #0 + bl FUN_02019548 + add r0, r6, #0 + bl FUN_02019178 + add r7, r7, #1 + add r5, #0x10 + add r4, r4, #4 + cmp r7, #2 + blo _021DA4B6 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_0200A8B8 + add r0, r5, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021DA540: .word 0x00000181 +_021DA544: .word 0x021DBA10 +_021DA548: .word 0x0001020F + + thumb_func_start MOD15_021DA54C +MOD15_021DA54C: ; 0x021DA54C + push {r3, r4, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0 + mov r3, #1 + bl MOD15_021D9550 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0x30 + mov r3, #0x36 + bl MOD15_021D9594 + str r0, [r4, #0x5c] + mov r1, #4 + bl FUN_02020130 + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x2c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA588 +MOD15_021DA588: ; 0x021DA588 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x5c] + add r4, r1, #0 + bl FUN_020200A0 + cmp r4, #0 + beq _021DA5B2 + ldr r0, [r5, #4] + bl MOD15_021D86F4 + cmp r0, #0 + ldr r0, [r5, #0x5c] + bne _021DA5AC + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DA5AC: + mov r1, #6 + bl FUN_02020130 +_021DA5B2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021DA5B4 +MOD15_021DA5B4: ; 0x021DA5B4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #4] + add r5, r1, #0 + bl MOD15_021D86F4 + mov r1, #0 + str r1, [sp, #0x10] + cmp r5, #0xfe + bne _021DA5D6 + mov r0, #0x84 + str r0, [sp, #8] + mov r0, #0x96 + str r0, [sp, #0xc] + mov r5, #0x10 + b _021DA616 +_021DA5D6: + cmp r0, #0 + bne _021DA5FE + add r0, r5, #0 + mov r1, #3 + bl _u32_div_f + mov r0, #0x50 + mul r0, r1 + add r0, #0x30 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + bl _u32_div_f + mov r1, #0x18 + mul r1, r0 + add r1, #0x36 + str r1, [sp, #0xc] + mov r5, #4 + b _021DA616 +_021DA5FE: + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD15_021DB798 + ldr r0, [sp, #4] + mov r5, #6 + add r0, #0x1a + str r0, [sp, #8] + ldr r0, [sp] + add r0, #0x3e + str r0, [sp, #0xc] +_021DA616: + ldr r0, [sp, #8] + add r1, sp, #8 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [sp, #0xc] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, [r4, #0x5c] + bl FUN_02020044 + ldr r0, [r4, #0x5c] + add r1, r5, #0 + bl FUN_02020130 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA638 +MOD15_021DA638: ; 0x021DA638 + push {r3, lr} + mov r3, #0 + str r3, [r0, #0x14] + mov r1, #0x10 + str r1, [sp] + mov r1, #2 + add r2, r1, #0 + add r0, #0x1c + sub r2, #0xc + bl MOD15_021DB6DC + pop {r3, pc} + + thumb_func_start MOD15_021DA650 +MOD15_021DA650: ; 0x021DA650 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DA662 + cmp r0, #1 + beq _021DA68C + b _021DA698 +_021DA662: + add r0, r4, #0 + add r0, #0x1c + bl MOD15_021DB71C + cmp r0, #0 + beq _021DA698 + mov r0, #0x18 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #1 + ldr r1, [r4, #0xc] + add r0, #0x3c + add r3, r2, #0 + bl MOD15_021DB564 + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + b _021DA698 +_021DA68C: + add r4, #0x3c + add r0, r4, #0 + bl MOD15_021DB5B8 + add sp, #8 + pop {r4, pc} +_021DA698: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA6A0 +MOD15_021DA6A0: ; 0x021DA6A0 + push {r3, lr} + sub sp, #8 + add r1, r0, #0 + mov r0, #0 + str r0, [r1, #0x14] + sub r0, #0x18 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r1, #0 + mov r2, #1 + ldr r1, [r1, #0xc] + add r0, #0x3c + add r3, r2, #0 + bl MOD15_021DB564 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD15_021DA6C4 +MOD15_021DA6C4: ; 0x021DA6C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DA6D6 + cmp r0, #1 + beq _021DA6FE + b _021DA70A +_021DA6D6: + add r0, r4, #0 + add r0, #0x3c + bl MOD15_021DB5B8 + cmp r0, #0 + beq _021DA70A + mov r0, #0x10 + mov r2, #0 + str r0, [sp] + add r0, r4, #0 + add r3, r2, #0 + add r0, #0x1c + mov r1, #2 + sub r3, #0xa + bl MOD15_021DB6DC + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + b _021DA70A +_021DA6FE: + add r4, #0x1c + add r0, r4, #0 + bl MOD15_021DB71C + add sp, #4 + pop {r3, r4, pc} +_021DA70A: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD15_021DA710 +MOD15_021DA710: ; 0x021DA710 + push {r3, lr} + ldr r0, [r0, #0xc] + mov r1, #1 + mov r2, #3 + mov r3, #2 + bl FUN_020179E0 + pop {r3, pc} + + thumb_func_start MOD15_021DA720 +MOD15_021DA720: ; 0x021DA720 + push {r3, lr} + mov r2, #0 + mov r1, #0x10 + add r3, r2, #0 + str r1, [sp] + add r0, #0x1c + mov r1, #2 + sub r3, #0xa + bl MOD15_021DB6DC + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA738 +MOD15_021DA738: ; 0x021DA738 + ldr r3, _021DA740 ; =MOD15_021DB71C + add r0, #0x1c + bx r3 + nop +_021DA740: .word MOD15_021DB71C + + thumb_func_start MOD15_021DA744 +MOD15_021DA744: ; 0x021DA744 + push {r3, lr} + sub sp, #8 + mov r1, #0 + str r1, [sp] + mov r1, #0xc + str r1, [sp, #4] + add r0, #0x1c + mov r1, #2 + mov r2, #0x3f + mov r3, #0x7c + bl MOD15_021DB648 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD15_021DA760 +MOD15_021DA760: ; 0x021DA760 + push {r3, lr} + add r0, #0x1c + bl MOD15_021DB678 + cmp r0, #0 + beq _021DA778 + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #1 + pop {r3, pc} +_021DA778: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD15_021DA77C +MOD15_021DA77C: ; 0x021DA77C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DA7B4 ; =0x04000050 + mov r1, #2 + mov r2, #0x3f + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #0x7c + str r0, [sp] + mov r0, #0xc + add r4, #0x1c + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #2 + mov r2, #0x3f + mov r3, #0 + bl MOD15_021DB648 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021DA7B4: .word 0x04000050 + + thumb_func_start MOD15_021DA7B8 +MOD15_021DA7B8: ; 0x021DA7B8 + ldr r3, _021DA7C0 ; =MOD15_021DB678 + add r0, #0x1c + bx r3 + nop +_021DA7C0: .word MOD15_021DB678 + + thumb_func_start MOD15_021DA7C4 +MOD15_021DA7C4: ; 0x021DA7C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86F4 + cmp r0, #0 + bne _021DA7D8 + mov r3, #3 + mvn r3, r3 + b _021DA7DA +_021DA7D8: + mov r3, #0xfc +_021DA7DA: + ldr r0, [r4, #0xc] + mov r1, #1 + mov r2, #0 + bl FUN_020179E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA7E8 +MOD15_021DA7E8: ; 0x021DA7E8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD15_021D86F4 + cmp r0, #0 + bne _021DA7FE + mov r0, #0xff + mvn r0, r0 + b _021DA802 +_021DA7FE: + mov r0, #1 + lsl r0, r0, #8 +_021DA802: + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x3c + mov r2, #1 + mov r3, #0 + bl MOD15_021DB564 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA81C +MOD15_021DA81C: ; 0x021DA81C + ldr r3, _021DA824 ; =MOD15_021DB5B8 + add r0, #0x3c + bx r3 + nop +_021DA824: .word MOD15_021DB5B8 + + thumb_func_start MOD15_021DA828 +MOD15_021DA828: ; 0x021DA828 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x23 + mov r1, #0x94 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + add r0, r5, #0 + bl MOD15_021D9548 + str r0, [r4, #0xc] + mov r0, #0x20 + mov r1, #0x23 + bl FUN_020219F4 + str r0, [r4, #0x3c] + mov r0, #0 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x10 + mov r2, #2 + mov r3, #4 + bl FUN_02019064 + mov r3, #0 + str r3, [sp] + mov r1, #0xc + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x20 + mov r2, #2 + bl FUN_02019064 + mov r0, #0 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA8A4 +MOD15_021DA8A4: ; 0x021DA8A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021DA8B2 + bl FUN_0201FFC8 +_021DA8B2: + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021DA8BC + bl FUN_0201FFC8 +_021DA8BC: + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _021DA8C6 + bl FUN_0201FFC8 +_021DA8C6: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021DA8D0 + bl FUN_02021A20 +_021DA8D0: + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD15_021DA8E8 +MOD15_021DA8E8: ; 0x021DA8E8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + bl MOD15_021D9548 + add r4, r0, #0 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x23 + bl FUN_02017F18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + add r0, r5, #0 + add r0, #0x10 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x10 + bl FUN_02019270 + add r0, r5, #0 + add r0, #0x10 + bl FUN_02019548 + add r0, r4, #0 + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD15_021DA950 + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA950 +MOD15_021DA950: ; 0x021DA950 + push {r3, r4, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0 + mov r3, #2 + bl MOD15_021D9550 + mov r0, #3 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0x48 + mov r3, #0x38 + bl MOD15_021D9594 + str r0, [r4, #0x30] + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_020200A0 + mov r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0xf0 + mov r3, #0x40 + bl MOD15_021D9594 + str r0, [r4, #0x34] + mov r1, #0xb + bl FUN_02020130 + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_020200A0 + mov r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #8 + mov r2, #0xf0 + mov r3, #0x90 + bl MOD15_021D9594 + str r0, [r4, #0x38] + mov r1, #0xa + bl FUN_02020130 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x2c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DA9D4 +MOD15_021DA9D4: ; 0x021DA9D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0x10 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #0 + bl MOD15_021DAD78 + ldr r0, [r6, #4] + bl MOD15_021D8744 + add r7, r0, #0 + cmp r7, #0xa + bls _021DA9F4 + mov r7, #0xa +_021DA9F4: + add r0, r6, #0 + add r0, #0x8c + mov r5, #0 + ldr r4, [r0] + cmp r7, #0 + bls _021DAA18 +_021DAA00: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD15_021DAD98 + mov r0, #1 + tst r0, r5 + beq _021DAA12 + add r4, #0x18 +_021DAA12: + add r5, r5, #1 + cmp r5, r7 + blo _021DAA00 +_021DAA18: + add r6, #0x10 + add r0, r6, #0 + bl FUN_02019548 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD15_021DAA24 +MOD15_021DAA24: ; 0x021DAA24 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DAABC ; =0x04000050 + mov r1, #4 + mov r2, #0x3f + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldr r1, _021DAAC0 ; =0x04000048 + ldr r0, _021DAAC4 ; =0xFFFFC0FF + ldrh r2, [r1] + mov r5, #0xff + and r2, r0 + mov r0, #0x1f + lsl r0, r0, #8 + orr r2, r0 + lsr r0, r1, #0xd + orr r0, r2 + strh r0, [r1] + add r0, r4, #0 + ldrb r2, [r1, #2] + add r0, #0x84 + strb r2, [r0] + add r0, r1, #0 + sub r0, #0x48 + mov r2, #0xe + ldr r3, [r0] + lsl r2, r2, #0xc + and r2, r3 + lsr r3, r2, #0xd + add r2, r4, #0 + add r2, #0x88 + str r3, [r2] + ldrh r3, [r1, #2] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x1b + orr r3, r2 + mov r2, #0x20 + orr r3, r2 + strh r3, [r1, #2] + sub r3, r1, #6 + strh r5, [r3] + ldr r3, _021DAAC8 ; =0x00002EB0 + sub r1, r1, #2 + strh r3, [r1] + ldr r3, [r0] + ldr r1, _021DAACC ; =0xFFFF1FFF + and r3, r1 + lsl r1, r2, #9 + orr r1, r3 + str r1, [r0] + add r0, r4, #0 + mov r3, #0 + add r0, #0x80 + str r3, [r0] + mov r0, #0x7c + str r0, [sp] + mov r0, #0xc + add r4, #0x40 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #4 + mov r2, #0x3f + bl MOD15_021DB648 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021DAABC: .word 0x04000050 +_021DAAC0: .word 0x04000048 +_021DAAC4: .word 0xFFFFC0FF +_021DAAC8: .word 0x00002EB0 +_021DAACC: .word 0xFFFF1FFF + + thumb_func_start MOD15_021DAAD0 +MOD15_021DAAD0: ; 0x021DAAD0 + push {r3, lr} + add r1, r0, #0 + add r1, #0x80 + ldr r1, [r1] + cmp r1, #0 + bne _021DAAEE + add r0, #0x40 + bl MOD15_021DB678 + cmp r0, #0 + beq _021DAAEA + mov r0, #1 + pop {r3, pc} +_021DAAEA: + mov r0, #0 + pop {r3, pc} +_021DAAEE: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021DAAF4 +MOD15_021DAAF4: ; 0x021DAAF4 + push {r3, lr} + sub sp, #8 + add r1, r0, #0 + mov r2, #0 + add r1, #0x80 + str r2, [r1] + str r2, [sp] + mov r1, #0xc + str r1, [sp, #4] + add r0, #0x40 + mov r1, #4 + mov r2, #0x3f + mov r3, #0x7c + bl MOD15_021DB648 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021DAB18 +MOD15_021DAB18: ; 0x021DAB18 + push {r4, lr} + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + bne _021DAB70 + add r0, r4, #0 + add r0, #0x40 + bl MOD15_021DB678 + cmp r0, #0 + beq _021DAB74 + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + ldr r0, _021DAB78 ; =0x0400004A + ldrh r2, [r0] + mov r0, #0x3f + bic r2, r0 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + lsl r1, r0, #0x1b + lsr r1, r1, #0x1b + lsl r0, r0, #0x1a + orr r1, r2 + lsr r0, r0, #0x1f + beq _021DAB56 + mov r0, #0x20 + orr r1, r0 +_021DAB56: + ldr r2, _021DAB78 ; =0x0400004A + ldr r0, _021DAB7C ; =0xFFFF1FFF + strh r1, [r2] + sub r2, #0x4a + ldr r1, [r2] + add r4, #0x88 + and r1, r0 + ldr r0, [r4] + lsl r0, r0, #0xd + orr r0, r1 + str r0, [r2] + mov r0, #1 + pop {r4, pc} +_021DAB70: + mov r0, #1 + pop {r4, pc} +_021DAB74: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DAB78: .word 0x0400004A +_021DAB7C: .word 0xFFFF1FFF + + thumb_func_start MOD15_021DAB80 +MOD15_021DAB80: ; 0x021DAB80 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x30] + add r4, r1, #0 + bl FUN_020200A0 + cmp r4, #0 + beq _021DABAE + ldr r0, [r5, #4] + bl MOD15_021D87AC + add r1, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_020200A0 + ldr r0, [r5, #4] + bl MOD15_021D87C0 + add r1, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_021DABAE: + ldr r0, [r5, #0x34] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021DABC0 +MOD15_021DABC0: ; 0x021DABC0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r2, r1, #0 + mov r0, #1 + and r2, r0 + mov r0, #0x70 + mul r0, r2 + add r0, #0x48 + lsl r0, r0, #0xc + str r0, [sp] + lsr r1, r1, #1 + mov r0, #0x18 + mul r0, r1 + add r0, #0x38 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0x30] + mov r1, #8 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DABFC +MOD15_021DABFC: ; 0x021DABFC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + add r4, r1, #0 + bl MOD15_021DACEC + add r0, r7, #0 + add r0, #0x90 + ldr r0, [r0] + lsl r6, r4, #1 + str r0, [sp, #0x10] + add r0, r0, r6 + str r0, [sp, #0x14] + mov r0, #0x18 + mul r0, r4 + str r0, [sp, #8] + add r0, r7, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp, #8] + add r1, r0, r1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x18] + cmp r4, #0 + bge _021DAC40 + ldr r0, [sp, #0x14] + add r5, r1, #0 + str r0, [sp, #0x10] + lsl r0, r4, #2 + neg r0, r0 + neg r6, r6 + str r0, [sp, #0xc] + b _021DAC60 +_021DAC40: + add r0, #0x78 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x10] + add r0, #0xa + str r0, [sp, #0x10] + ldr r0, [r7, #4] + bl MOD15_021D8744 + ldr r1, [sp, #0x10] + add r1, r6, r1 + cmp r1, r0 + bls _021DAC5C + sub r6, r6, #1 +_021DAC5C: + lsl r0, r4, #2 + str r0, [sp, #0xc] +_021DAC60: + mov r4, #0 + cmp r6, #0 + ble _021DAC84 +_021DAC66: + ldr r1, [sp, #0x10] + add r0, r7, #0 + add r1, r1, r4 + add r2, r5, #0 + bl MOD15_021DAD98 + mov r0, #1 + tst r0, r4 + beq _021DAC7E + add r5, #0x18 + lsl r0, r5, #0x18 + lsr r5, r0, #0x18 +_021DAC7E: + add r4, r4, #1 + cmp r4, r6 + blt _021DAC66 +_021DAC84: + add r1, r7, #0 + ldr r0, [sp, #0x18] + add r1, #0x8c + str r0, [r1] + add r1, r7, #0 + ldr r0, [sp, #0x14] + add r1, #0x90 + str r0, [r1] + add r0, r7, #0 + add r0, #0x10 + bl FUN_02019548 + ldr r0, [sp, #8] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r3, #1 + str r0, [sp, #4] + add r0, r7, #0 + ldr r1, [r7, #0xc] + add r0, #0x60 + bl MOD15_021DB564 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD15_021DACB8 +MOD15_021DACB8: ; 0x021DACB8 + push {r4, lr} + add r4, r0, #0 + add r0, #0x60 + bl MOD15_021DB5B8 + cmp r0, #0 + beq _021DACE6 + ldr r0, [r4, #4] + bl MOD15_021D87AC + add r1, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_020200A0 + ldr r0, [r4, #4] + bl MOD15_021D87C0 + add r1, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021DACE6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DACEC +MOD15_021DACEC: ; 0x021DACEC + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + cmp r1, #0 + ble _021DAD0C + add r0, #0x8c + ldr r0, [r0] + add r0, #0x78 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + mov r0, #0x18 + mul r0, r1 + add r0, r3, r0 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _021DAD1A +_021DAD0C: + add r0, #0x8c + ldr r4, [r0] + mov r0, #0x18 + mul r0, r1 + add r0, r4, r0 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 +_021DAD1A: + cmp r3, r4 + bge _021DAD3E + mov r0, #0xd0 + str r0, [sp] + sub r0, r4, r3 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0 + lsl r3, r3, #0x10 + add r5, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add sp, #8 + pop {r3, r4, r5, pc} +_021DAD3E: + mov r0, #0xd0 + str r0, [sp] + add r0, #0x30 + sub r0, r0, r3 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + lsl r3, r3, #0x10 + add r0, #0x10 + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xd0 + str r0, [sp] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + add r5, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD15_021DAD78 +MOD15_021DAD78: ; 0x021DAD78 + push {r3, lr} + add r1, r0, #0 + mov r2, #0x30 + add r1, #0x8c + str r2, [r1] + add r1, r0, #0 + mov r3, #0 + add r1, #0x90 + str r3, [r1] + ldr r0, [r0, #0xc] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD15_021DAD98 +MOD15_021DAD98: ; 0x021DAD98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r4, r2, #0 + ldr r0, [r5, #4] + ldr r2, [r5, #0x3c] + add r7, r1, #0 + bl MOD15_021D8768 + cmp r4, #0xf0 + bhi _021DADD4 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DAE64 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r3, #1 + add r4, r7, #0 + and r4, r3 + mov r3, #0x70 + ldr r2, [r5, #0x3c] + add r0, #0x10 + mul r3, r4 + bl FUN_0201BDE0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DADD4: + mov r0, #1 + lsl r0, r0, #8 + sub r6, r0, r4 + add r0, r5, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DAE64 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + ldr r2, [r5, #0x3c] + add r0, #0x20 + bl FUN_0201BDE0 + mov r2, #0 + mov r0, #1 + add r1, r7, #0 + and r1, r0 + add r7, r1, #0 + mov r0, #0x70 + mul r7, r0 + mov r0, #0x60 + str r0, [sp] + mov r1, #0x10 + str r1, [sp, #4] + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #8] + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + add r0, r5, #0 + ldr r1, [r5, #0x2c] + add r0, #0x10 + add r3, r2, #0 + bl FUN_02019658 + mov r1, #0x60 + lsl r2, r7, #0x10 + lsl r3, r6, #0x10 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + lsr r2, r2, #0x10 + str r2, [sp, #8] + mov r2, #0 + sub r0, r0, r6 + str r2, [sp, #0xc] + lsl r0, r0, #0x10 + str r1, [sp, #0x10] + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + add r0, r5, #0 + ldr r1, [r5, #0x2c] + add r0, #0x10 + lsr r3, r3, #0x10 + bl FUN_02019658 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAE64: .word 0x00010200 + + thumb_func_start MOD15_021DAE68 +MOD15_021DAE68: ; 0x021DAE68 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #5 + add r5, r0, #0 + mov r0, #0x23 + lsl r1, r1, #8 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + add r0, r5, #0 + bl MOD15_021D9548 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD15_021D954C + str r0, [r4, #0x10] + mov r1, #0 + str r1, [r4, #0x14] + ldr r0, _021DAEA0 ; =0x000004FC + str r1, [r4, #0x18] + str r1, [r4, r0] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAEA0: .word 0x000004FC + + thumb_func_start MOD15_021DAEA4 +MOD15_021DAEA4: ; 0x021DAEA4 + push {r4, lr} + add r4, r0, #0 + bl MOD15_021DB200 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD15_021DAEB4 +MOD15_021DAEB4: ; 0x021DAEB4 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x23 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #0x15 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x4c + mov r1, #0xb + mov r3, #4 + bl FUN_020068C8 + add r0, r4, #0 + bl MOD15_021DAFAC + add r0, r4, #0 + bl MOD15_021DAFF8 + ldr r0, [r4, #4] + bl MOD15_021D86F4 + cmp r0, #0 + bne _021DAF4A + mov r2, #0xb + ldr r0, _021DAFA4 ; =0x000001FA + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + add r0, r4, r0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + mov r2, #3 + ldr r0, [r4, #0xc] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018170 + mov r2, #0xb + mov r0, #0xa5 + lsl r0, r0, #2 + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + add r0, r4, r0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r4, #0xc] + mov r1, #4 + mov r2, #3 + mov r3, #0xe + bl FUN_02018170 + b _021DAF92 +_021DAF4A: + mov r2, #0xb + add r0, r4, #0 + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + add r0, #0x2c + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + mov r2, #3 + ldr r0, [r4, #0xc] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018170 + mov r2, #0xb + ldr r0, _021DAFA8 ; =0x00000462 + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + add r0, r4, r0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r4, #0xc] + mov r1, #4 + mov r2, #3 + mov r3, #0xe + bl FUN_02018170 +_021DAF92: + add r0, r4, #0 + bl MOD15_021DB154 + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_021DAFA4: .word 0x000001FA +_021DAFA8: .word 0x00000462 + + thumb_func_start MOD15_021DAFAC +MOD15_021DAFAC: ; 0x021DAFAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r4, _021DAFF4 ; =0x021DBA20 + mov r6, #0 + add r5, #0x2c +_021DAFB8: + mov r0, #0x23 + str r0, [sp] + ldrh r1, [r4] + mov r0, #0x4c + mov r2, #1 + add r3, sp, #4 + bl FUN_02006BDC + add r7, r0, #0 + beq _021DAFE6 + ldr r0, [sp, #4] + add r1, r5, #0 + add r0, #0xc + mov r2, #0x9a + bl MIi_CpuCopy16 + add r0, r5, #0 + mov r1, #0x9a + bl DC_FlushRange + add r0, r7, #0 + bl FUN_02016A18 +_021DAFE6: + add r6, r6, #1 + add r4, r4, #2 + add r5, #0x9a + cmp r6, #8 + blo _021DAFB8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAFF4: .word 0x021DBA20 + + thumb_func_start MOD15_021DAFF8 +MOD15_021DAFF8: ; 0x021DAFF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #2 + mov r1, #0 + bl FUN_02002C50 + ldr r1, _021DB0F8 ; =0x00000182 + mov r0, #0x1a + mov r2, #0xb + mov r3, #0x23 + bl FUN_0200A738 + str r0, [sp, #4] + ldr r1, _021DB0F8 ; =0x00000182 + mov r0, #0x1a + mov r2, #0xc + mov r3, #0x23 + bl FUN_0200A738 + add r7, r0, #0 + ldr r1, _021DB0F8 ; =0x00000182 + mov r0, #0x1a + mov r2, #0xd + mov r3, #0x23 + bl FUN_0200A738 + add r6, r0, #0 + ldr r1, _021DB0F8 ; =0x00000182 + mov r0, #0x1a + mov r2, #0xe + mov r3, #0x23 + bl FUN_0200A738 + add r4, r0, #0 + mov r0, #0x23 + str r0, [sp] + mov r0, #0x4c + mov r1, #0x14 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + str r0, [sp, #8] + cmp r0, #0 + beq _021DB0D4 + add r0, sp, #0x10 + bl FUN_0201901C + ldr r0, [r5, #0xc] + add r1, sp, #0xc + str r0, [sp, #0x10] + mov r0, #0xb + strb r0, [r1, #0xb] + mov r0, #0x39 + strb r0, [r1, #0xc] + ldrh r2, [r1, #0xe] + ldr r0, _021DB0FC ; =0xFFFF7FFF + mov r3, #0 + and r0, r2 + strh r0, [r1, #0xe] + ldr r0, [sp, #0xc] + ldr r2, [sp, #4] + ldr r0, [r0, #0x14] + str r0, [sp, #0x1c] + ldr r1, [r5, #0xc] + add r0, sp, #0x10 + bl MOD15_021DB100 + ldr r1, [r5, #0xc] + add r0, sp, #0x10 + add r2, r7, #0 + mov r3, #0x10 + bl MOD15_021DB100 + ldr r0, [sp, #0xc] + add r2, r6, #0 + ldr r1, [r0, #0x14] + mov r0, #0x9a + lsl r0, r0, #6 + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r1, [r5, #0xc] + add r0, sp, #0x10 + mov r3, #0 + bl MOD15_021DB100 + ldr r1, [r5, #0xc] + add r0, sp, #0x10 + add r2, r4, #0 + mov r3, #0x10 + bl MOD15_021DB100 + ldr r1, [sp, #0xc] + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl DC_FlushRange + ldr r3, [sp, #0xc] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0xc] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + ldr r0, [sp, #8] + bl FUN_02016A18 +_021DB0D4: + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #4] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #2 + bl FUN_02002CF8 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB0F8: .word 0x00000182 +_021DB0FC: .word 0xFFFF7FFF + + thumb_func_start MOD15_021DB100 +MOD15_021DB100: ; 0x021DB100 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r2, #0 + str r0, [sp, #0x10] + mov r0, #2 + add r1, r6, #0 + mov r2, #0 + add r7, r3, #0 + bl FUN_02002F08 + mov r1, #0x58 + sub r0, r1, r0 + lsr r0, r0, #1 + ldr r5, _021DB14C ; =0x021DBA18 + str r0, [sp, #0x14] + mov r4, #0 +_021DB120: + mov r0, #0 + ldrsh r0, [r5, r0] + ldr r3, [sp, #0x14] + mov r1, #2 + add r0, r7, r0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DB150 ; =0x00010203 + add r2, r6, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + bl FUN_0201BDE0 + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blo _021DB120 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB14C: .word 0x021DBA18 +_021DB150: .word 0x00010203 + + thumb_func_start MOD15_021DB154 +MOD15_021DB154: ; 0x021DB154 + push {r3, r4, lr} + sub sp, #0x4c + add r4, r0, #0 + add r0, sp, #0x38 + bl FUN_020B19DC + add r0, sp, #0x14 + bl FUN_020B1A24 + mov r0, #0x23 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #0x19 + mov r2, #2 + mov r3, #0 + bl FUN_02006A8C + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0x23 + str r0, [sp, #0xc] + add r0, sp, #0x14 + str r0, [sp, #0x10] + mov r0, #0x4c + mov r1, #0x18 + mov r2, #1 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0x1c + mov r1, #0x4c + mov r2, #0x16 + mov r3, #0x17 + bl MOD15_021DB224 + mov r0, #0xc0 + str r0, [sp] + mov r0, #0x38 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r3, r4, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, sp, #0x14 + add r2, sp, #0x38 + add r3, #0x1c + bl MOD15_021DB26C + str r0, [r4, #0x14] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xc0 + str r0, [sp] + mov r0, #0x88 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r3, r4, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, sp, #0x14 + add r2, sp, #0x38 + add r3, #0x1c + bl MOD15_021DB26C + mov r1, #2 + str r0, [r4, #0x18] + bl FUN_02020130 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x4c + pop {r3, r4, pc} + + thumb_func_start MOD15_021DB200 +MOD15_021DB200: ; 0x021DB200 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DB20E + bl FUN_0201FFC8 +_021DB20E: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DB218 + bl FUN_0201FFC8 +_021DB218: + add r4, #0x1c + add r0, r4, #0 + bl MOD15_021DB258 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DB224 +MOD15_021DB224: ; 0x021DB224 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x23 + add r6, r3, #0 + str r0, [sp] + add r1, r2, #0 + add r0, r4, #0 + mov r2, #1 + add r3, r5, #4 + bl FUN_02006C30 + str r0, [r5] + mov r0, #0x23 + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + mov r2, #1 + add r3, #0xc + bl FUN_02006C5C + str r0, [r5, #8] + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD15_021DB258 +MOD15_021DB258: ; 0x021DB258 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD15_021DB26C +MOD15_021DB26C: ; 0x021DB26C + push {r3, r4, lr} + sub sp, #0x44 + str r2, [sp, #0x28] + str r1, [sp, #0x20] + ldr r1, [r3, #4] + ldr r2, [sp, #0x58] + str r1, [sp, #0x2c] + ldr r1, [r3, #0xc] + str r1, [sp, #0x30] + add r1, sp, #0x40 + strb r2, [r1] + mov r1, #0 + str r1, [sp, #0x24] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + str r1, [sp, #0x3c] + ldr r0, [r0, #0x10] + str r0, [sp] + add r0, sp, #0x20 + str r0, [sp, #4] + ldr r0, [sp, #0x50] + str r1, [sp, #0x10] + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [sp, #0x54] + add r0, #0xc0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #0x23 + str r0, [sp, #0x1c] + add r0, sp, #0 + bl FUN_0201FF84 + add r4, r0, #0 + beq _021DB2CA + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021DB2CA: + add r0, r4, #0 + add sp, #0x44 + pop {r3, r4, pc} + + thumb_func_start MOD15_021DB2D0 +MOD15_021DB2D0: ; 0x021DB2D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x23 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021DB32C + ldr r0, [r5, #4] + bl MOD15_021D86F4 + str r5, [r4] + mov r1, #0 + str r1, [r4, #4] + strh r1, [r4, #8] + mov r1, #0xe + mul r1, r0 + ldr r0, _021DB334 ; =0x021DBA30 + mov r2, #1 + ldrh r0, [r0, r1] + strh r0, [r4, #0xa] + ldr r0, _021DB338 ; =0x021DBA32 + ldrh r0, [r0, r1] + strh r0, [r4, #0xc] + ldr r0, _021DB33C ; =0x021DBA34 + ldrh r0, [r0, r1] + strh r0, [r4, #0xe] + ldr r0, _021DB340 ; =0x021DBA36 + ldrh r0, [r0, r1] + strh r0, [r4, #0x10] + ldr r0, _021DB344 ; =0x021DBA38 + ldrh r0, [r0, r1] + strh r0, [r4, #0x12] + ldr r0, _021DB348 ; =0x021DBA3A + ldrh r0, [r0, r1] + strh r0, [r4, #0x14] + ldr r0, _021DB34C ; =0x021DBA3C + ldrh r0, [r0, r1] + add r1, r4, #0 + strh r0, [r4, #0x16] + ldr r0, _021DB350 ; =MOD15_021DB36C + bl FUN_0200CA44 + ldr r1, _021DB354 ; =0x000004FC + str r0, [r5, r1] + pop {r3, r4, r5, pc} +_021DB32C: + ldr r0, _021DB354 ; =0x000004FC + mov r1, #0 + str r1, [r5, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_021DB334: .word 0x021DBA30 +_021DB338: .word 0x021DBA32 +_021DB33C: .word 0x021DBA34 +_021DB340: .word 0x021DBA36 +_021DB344: .word 0x021DBA38 +_021DB348: .word 0x021DBA3A +_021DB34C: .word 0x021DBA3C +_021DB350: .word MOD15_021DB36C +_021DB354: .word 0x000004FC + + thumb_func_start MOD15_021DB358 +MOD15_021DB358: ; 0x021DB358 + ldr r1, _021DB368 ; =0x000004FC + ldr r0, [r0, r1] + cmp r0, #0 + bne _021DB364 + mov r0, #1 + bx lr +_021DB364: + mov r0, #0 + bx lr + .align 2, 0 +_021DB368: .word 0x000004FC + + thumb_func_start MOD15_021DB36C +MOD15_021DB36C: ; 0x021DB36C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #3 + bls _021DB37C + b _021DB4E0 +_021DB37C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB388: ; jump table + .short _021DB390 - _021DB388 - 2 ; case 0 + .short _021DB416 - _021DB388 - 2 ; case 1 + .short _021DB476 - _021DB388 - 2 ; case 2 + .short _021DB4CC - _021DB388 - 2 ; case 3 +_021DB390: + ldr r3, [r4] + mov r2, #0xb + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + ldrh r6, [r4, #0xa] + add r0, r3, #0 + mov r5, #0x9a + add r0, #0x2c + mul r5, r6 + add r0, r0, r5 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r2, [r4, #0xe] + ldrh r3, [r4, #0x10] + mov r1, #4 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + ldr r3, [r4] + mov r2, #0xb + add r0, r3, #0 + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + ldrh r6, [r4, #0x12] + mov r5, #0x9a + add r0, #0x2c + mul r5, r6 + add r0, r0, r5 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r2, [r4, #0x14] + ldrh r3, [r4, #0x16] + mov r1, #4 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + ldr r0, [r4] + mov r1, #4 + ldr r0, [r0, #0xc] + bl FUN_02017CD0 + ldrh r0, [r4, #0xa] + add sp, #0x1c + add r0, r0, #1 + strh r0, [r4, #0xa] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021DB416: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #2 + blo _021DB4E0 + ldr r3, [r4] + mov r2, #0xb + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + ldrh r6, [r4, #0xa] + add r0, r3, #0 + mov r5, #0x9a + add r0, #0x2c + mul r5, r6 + add r0, r0, r5 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r2, [r4, #0xe] + ldrh r3, [r4, #0x10] + mov r1, #4 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + ldr r0, [r4] + mov r1, #4 + ldr r0, [r0, #0xc] + bl FUN_02017CD0 + mov r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #0xa] + add sp, #0x1c + add r0, r0, #1 + strh r0, [r4, #0xa] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021DB476: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #4 + blo _021DB4E0 + ldr r3, [r4] + mov r2, #0xb + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + ldrh r6, [r4, #0xa] + add r0, r3, #0 + mov r5, #0x9a + add r0, #0x2c + mul r5, r6 + add r0, r0, r5 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r2, [r4, #0xe] + ldrh r3, [r4, #0x10] + mov r1, #4 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + ldr r0, [r4] + mov r1, #4 + ldr r0, [r0, #0xc] + bl FUN_02017CD0 + ldr r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021DB4CC: + ldr r1, [r4] + ldr r0, _021DB4E4 ; =0x000004FC + mov r2, #0 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_021DB4E0: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DB4E4: .word 0x000004FC + + thumb_func_start MOD15_021DB4E8 +MOD15_021DB4E8: ; 0x021DB4E8 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021DB50E + ldr r0, [r4, #4] + bl MOD15_021D87AC + add r1, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_020200A0 + ldr r0, [r4, #4] + bl MOD15_021D87C0 + add r1, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_020200A0 + pop {r4, pc} +_021DB50E: + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020200A0 + pop {r4, pc} + + thumb_func_start MOD15_021DB520 +MOD15_021DB520: ; 0x021DB520 + push {r3, lr} + cmp r1, #0 + beq _021DB52C + cmp r1, #1 + beq _021DB548 + pop {r3, pc} +_021DB52C: + cmp r2, #0 + beq _021DB53E + cmp r2, #1 + bne _021DB562 + ldr r0, [r0, #0x14] + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021DB53E: + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} +_021DB548: + cmp r2, #0 + beq _021DB55A + cmp r2, #1 + bne _021DB562 + ldr r0, [r0, #0x18] + mov r1, #3 + bl FUN_02020130 + pop {r3, pc} +_021DB55A: + ldr r0, [r0, #0x18] + mov r1, #2 + bl FUN_02020130 +_021DB562: + pop {r3, pc} + + thumb_func_start MOD15_021DB564 +MOD15_021DB564: ; 0x021DB564 + push {r4, lr} + add r4, r0, #0 + str r1, [r4] + str r2, [r4, #4] + cmp r3, #0 + bne _021DB57E + add r0, r1, #0 + add r1, r2, #0 + bl FUN_02017B48 + str r0, [r4, #0xc] + mov r0, #0 + b _021DB58A +_021DB57E: + add r0, r1, #0 + add r1, r2, #0 + bl FUN_02017B54 + str r0, [r4, #0xc] + mov r0, #3 +_021DB58A: + str r0, [r4, #8] + ldr r0, [sp, #8] + ldr r1, [r4, #0xc] + add r2, r1, r0 + ldr r1, _021DB5B4 ; =0x000001FF + lsl r0, r0, #0xc + and r1, r2 + str r1, [r4, #0x10] + ldr r1, [r4, #0xc] + lsl r1, r1, #0xc + str r1, [r4, #0xc] + ldr r1, [sp, #0xc] + bl _s32_div_f + str r0, [r4, #0x14] + ldr r0, [sp, #0xc] + strh r0, [r4, #0x18] + mov r0, #0 + strh r0, [r4, #0x1a] + pop {r4, pc} + nop +_021DB5B4: .word 0x000001FF + + thumb_func_start MOD15_021DB5B8 +MOD15_021DB5B8: ; 0x021DB5B8 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1a] + cmp r0, #0 + beq _021DB5CC + cmp r0, #1 + beq _021DB5E0 + cmp r0, #2 + beq _021DB5F6 + b _021DB5FA +_021DB5CC: + ldr r0, _021DB600 ; =MOD15_021DB604 + add r1, r4, #0 + mov r2, #0 + bl MOD15_021D88D0 + str r0, [r4, #0x1c] + ldrh r0, [r4, #0x1a] + add r0, r0, #1 + strh r0, [r4, #0x1a] + b _021DB5FA +_021DB5E0: + ldrh r0, [r4, #0x18] + cmp r0, #0 + bne _021DB5FA + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldrh r0, [r4, #0x1a] + add r0, r0, #1 + strh r0, [r4, #0x1a] + mov r0, #1 + pop {r4, pc} +_021DB5F6: + mov r0, #1 + pop {r4, pc} +_021DB5FA: + mov r0, #0 + pop {r4, pc} + nop +_021DB600: .word MOD15_021DB604 + + thumb_func_start MOD15_021DB604 +MOD15_021DB604: ; 0x021DB604 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #0x18] + cmp r0, #0 + beq _021DB632 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r3, r1, r0 + str r3, [r4, #0xc] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r4] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0x18] + sub r0, r0, #1 + strh r0, [r4, #0x18] + pop {r4, pc} +_021DB632: + ldr r1, [r4, #4] + ldr r2, [r4, #8] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r4] + ldr r3, [r4, #0x10] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_020179E0 + pop {r4, pc} + + thumb_func_start MOD15_021DB648 +MOD15_021DB648: ; 0x021DB648 + push {r4, lr} + add r4, r0, #0 + str r1, [r4] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + str r2, [r4, #4] + str r1, [r4, #0x14] + str r3, [r4, #8] + sub r0, r0, r3 + bl _s32_div_f + str r0, [r4, #0x10] + ldr r0, [sp, #8] + mov r2, #0 + str r0, [r4, #0xc] + ldr r0, _021DB674 ; =MOD15_021DB6A0 + add r1, r4, #0 + str r2, [r4, #0x18] + bl MOD15_021D88D0 + str r0, [r4, #0x1c] + pop {r4, pc} + .align 2, 0 +_021DB674: .word MOD15_021DB6A0 + + thumb_func_start MOD15_021DB678 +MOD15_021DB678: ; 0x021DB678 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _021DB698 + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021DB69C + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + mov r0, #1 + pop {r4, pc} +_021DB698: + mov r0, #1 + pop {r4, pc} +_021DB69C: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD15_021DB6A0 +MOD15_021DB6A0: ; 0x021DB6A0 + push {r3, lr} + add r2, r1, #0 + ldr r0, [r2, #0x14] + cmp r0, #0 + beq _021DB6BC + ldr r1, [r2, #8] + ldr r0, [r2, #0x10] + add r0, r1, r0 + str r0, [r2, #8] + asr r3, r0, #3 + ldr r0, [r2, #0x14] + sub r0, r0, #1 + str r0, [r2, #0x14] + b _021DB6C0 +_021DB6BC: + ldr r0, [r2, #0xc] + asr r3, r0, #3 +_021DB6C0: + cmp r3, #0x10 + ble _021DB6C6 + mov r3, #0x10 +_021DB6C6: + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021DB6D8 ; =0x04000050 + ldmia r2!, {r1, r2} + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_021DB6D8: .word 0x04000050 + + thumb_func_start MOD15_021DB6DC +MOD15_021DB6DC: ; 0x021DB6DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DB714 ; =0x04000050 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl G2x_SetBlendBrightness_ + ldr r1, [sp, #0x18] + str r4, [r5] + str r1, [r5, #0x14] + lsl r0, r6, #0xc + str r0, [r5, #8] + lsl r2, r7, #0xc + str r2, [r5, #0xc] + ldr r0, [r5, #8] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r5, #0x10] + mov r2, #0 + ldr r0, _021DB718 ; =MOD15_021DB744 + add r1, r5, #0 + str r2, [r5, #0x18] + bl MOD15_021D88D0 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB714: .word 0x04000050 +_021DB718: .word MOD15_021DB744 + + thumb_func_start MOD15_021DB71C +MOD15_021DB71C: ; 0x021DB71C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _021DB73C + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021DB740 + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + mov r0, #1 + pop {r4, pc} +_021DB73C: + mov r0, #1 + pop {r4, pc} +_021DB740: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD15_021DB744 +MOD15_021DB744: ; 0x021DB744 + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _021DB75C + ldr r2, [r1, #8] + ldr r0, [r1, #0x10] + add r0, r2, r0 + str r0, [r1, #8] + asr r2, r0, #0xc + ldr r0, [r1, #0x14] + sub r0, r0, #1 + str r0, [r1, #0x14] + b _021DB760 +_021DB75C: + ldr r0, [r1, #0xc] + asr r2, r0, #0xc +_021DB760: + ldr r3, _021DB768 ; =0x020C74B8 + ldr r0, _021DB76C ; =0x04000050 + ldr r1, [r1] + bx r3 + .align 2, 0 +_021DB768: .word 0x020C74B8 +_021DB76C: .word 0x04000050 + + thumb_func_start MOD15_021DB770 +MOD15_021DB770: ; 0x021DB770 + mov r0, #0x1b + bx lr + + thumb_func_start MOD15_021DB774 +MOD15_021DB774: ; 0x021DB774 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r4, #0x1b + blo _021DB782 + bl ErrorHandling +_021DB782: + mov r1, #0xa + ldr r2, _021DB794 ; =0x021DBA4C + mul r1, r4 + add r1, r2, r1 + add r0, r5, #0 + mov r2, #2 + bl FUN_02021E8C + pop {r3, r4, r5, pc} + .align 2, 0 +_021DB794: .word 0x021DBA4C + + thumb_func_start MOD15_021DB798 +MOD15_021DB798: ; 0x021DB798 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0x1b + blo _021DB7A8 + bl ErrorHandling +_021DB7A8: + mov r0, #0xa + add r1, r5, #0 + mul r1, r0 + ldr r0, _021DB7BC ; =0x021DBA4E + ldrb r0, [r0, r1] + str r0, [r4] + ldr r0, _021DB7C0 ; =0x021DBA4F + ldrb r0, [r0, r1] + str r0, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB7BC: .word 0x021DBA4E +_021DB7C0: .word 0x021DBA4F + + thumb_func_start MOD15_021DB7C4 +MOD15_021DB7C4: ; 0x021DB7C4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB7D0 + bl ErrorHandling +_021DB7D0: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB7DC ; =0x021DBA50 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB7DC: .word 0x021DBA50 + + thumb_func_start MOD15_021DB7E0 +MOD15_021DB7E0: ; 0x021DB7E0 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB7EC + bl ErrorHandling +_021DB7EC: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB7F8 ; =0x021DBA51 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB7F8: .word 0x021DBA51 + + thumb_func_start MOD15_021DB7FC +MOD15_021DB7FC: ; 0x021DB7FC + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB808 + bl ErrorHandling +_021DB808: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB814 ; =0x021DBA52 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB814: .word 0x021DBA52 + + thumb_func_start MOD15_021DB818 +MOD15_021DB818: ; 0x021DB818 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB824 + bl ErrorHandling +_021DB824: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB830 ; =0x021DBA53 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB830: .word 0x021DBA53 + + thumb_func_start MOD15_021DB834 +MOD15_021DB834: ; 0x021DB834 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB840 + bl ErrorHandling +_021DB840: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB84C ; =0x021DBA54 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB84C: .word 0x021DBA54 + + thumb_func_start MOD15_021DB850 +MOD15_021DB850: ; 0x021DB850 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x1b + blo _021DB85C + bl ErrorHandling +_021DB85C: + mov r0, #0xa + add r1, r4, #0 + mul r1, r0 + ldr r0, _021DB868 ; =0x021DBA55 + ldrb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021DB868: .word 0x021DBA55 + + .section .data + ; 0x021DB86C + .incbin "baserom.nds", 0x23B78C, 0x2F4 -- cgit v1.2.3