.include "asm/macros.inc" .include "global.inc" .section .text .balign 4, 0 thumb_func_start MOD81_02237E40 MOD81_02237E40: ; 0x02237E40 push {r4, r5, lr} sub sp, #0x14 add r5, r0, #0 bl FUN_0200E308 cmp r0, #0 bne _02237E50 b _02237FC8 _02237E50: mov r0, #3 mov r1, #0x39 lsl r2, r0, #0xf bl FUN_0201681C mov r0, #3 mov r1, #0x3a lsl r2, r0, #0xf bl FUN_0201681C bl MOD81_02238858 ldr r1, _02237FD0 ; =0x00000492 mov r0, #3 mov r2, #1 bl FUN_0200433C mov r1, #0x55 add r0, r5, #0 lsl r1, r1, #2 mov r2, #0x39 bl FUN_02006268 add r4, r0, #0 bne _02237E84 b _02237FC2 _02237E84: add r0, r5, #0 bl FUN_0200628C str r0, [r4] mov r0, #0 str r0, [r4, #4] mov r0, #0x39 bl FUN_02016B94 str r0, [r4, #8] mov r0, #0x19 lsl r0, r0, #4 mov r1, #0x39 bl FUN_020219F4 str r0, [r4, #0x14] ldr r2, _02237FD4 ; =0x00000137 mov r0, #0 mov r1, #0x1a mov r3, #0x39 bl FUN_0200A86C str r0, [r4, #0x10] mov r0, #0x39 bl FUN_0200AA80 str r0, [r4, #0xc] ldr r2, [r4] ldr r0, [r2, #0x10] cmp r0, #1 beq _02237ECC cmp r0, #2 beq _02237EFE cmp r0, #4 beq _02237F0A b _02237F22 _02237ECC: ldr r0, [r4, #0xc] ldr r2, [r2] mov r1, #0 bl FUN_0200ACF8 ldr r2, [r4] ldr r0, [r4, #0xc] ldr r2, [r2, #4] mov r1, #1 bl FUN_0200ACF8 ldr r2, [r4] ldr r0, [r4, #0xc] ldr r2, [r2, #8] mov r1, #2 bl FUN_0200ABC0 ldr r0, [r4] ldr r0, [r0, #4] bl MOD81_02237FE8 mov r1, #0x52 lsl r1, r1, #2 str r0, [r4, r1] b _02237F22 _02237EFE: ldr r0, [r4, #0xc] ldr r2, [r2] mov r1, #0 bl FUN_0200ACF8 b _02237F22 _02237F0A: ldr r0, [r4, #0xc] ldr r2, [r2, #4] mov r1, #1 bl FUN_0200ACF8 ldr r0, [r4] ldr r0, [r0, #4] bl MOD81_02237FE8 mov r1, #0x52 lsl r1, r1, #2 str r0, [r4, r1] _02237F22: bl FUN_020B0FC0 mov r0, #1 str r0, [sp] mov r0, #0x7f str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r3, #0x20 str r3, [sp, #0xc] mov r1, #0x39 str r1, [sp, #0x10] mov r1, #0x80 add r2, r0, #0 bl FUN_02009EAC add r1, r4, #0 mov r0, #0x40 add r1, #0x1c mov r2, #0x39 bl FUN_02008C9C str r0, [r4, #0x18] add r0, r4, #0 mov r2, #0x3a add r0, #0x1c mov r1, #0 lsl r2, r2, #0xe bl FUN_02008D24 ldr r0, [r4] mov r1, #5 ldr r0, [r0] mov r2, #0 bl FUN_020672BC mov r1, #0x53 lsl r1, r1, #2 strh r0, [r4, r1] ldr r0, [r4] mov r1, #5 ldr r0, [r0, #4] mov r2, #0 bl FUN_020672BC ldr r1, _02237FD8 ; =0x0000014E strh r0, [r4, r1] mov r0, #0 add r1, r1, #2 str r0, [r4, r1] add r1, r0, #0 bl FUN_02015F10 bl FUN_02015F1C bl FUN_0201E6D8 bl FUN_0201E740 mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _02237FDC ; =0xFFFFE0FF and r1, r0 str r1, [r2] ldr r2, _02237FE0 ; =0x04001000 ldr r1, [r2] and r0, r1 str r0, [r2] ldr r0, _02237FE4 ; =MOD81_022380F4 add r1, r4, #0 mov r2, #1 bl FUN_0200CA7C mov r1, #0x51 lsl r1, r1, #2 str r0, [r4, r1] mov r0, #0 add r1, #0xc str r0, [r4, r1] _02237FC2: add sp, #0x14 mov r0, #1 pop {r4, r5, pc} _02237FC8: mov r0, #0 add sp, #0x14 pop {r4, r5, pc} nop _02237FD0: .word 0x00000492 _02237FD4: .word 0x00000137 _02237FD8: .word 0x0000014E _02237FDC: .word 0xFFFFE0FF _02237FE0: .word 0x04001000 _02237FE4: .word MOD81_022380F4 thumb_func_end MOD81_02237E40 thumb_func_start MOD81_02237FE8 MOD81_02237FE8: ; 0x02237FE8 push {r3, lr} mov r1, #5 mov r2, #0 bl FUN_020672BC mov r1, #0x1c bl FUN_02068678 cmp r0, #0 bne _02238000 mov r0, #1 pop {r3, pc} _02238000: mov r0, #0 pop {r3, pc} thumb_func_end MOD81_02237FE8 thumb_func_start MOD81_02238004 MOD81_02238004: ; 0x02238004 push {r4, r5, r6, lr} add r5, r0, #0 bl OS_DisableInterrupts add r6, r0, #0 add r0, r5, #0 bl FUN_02006278 add r4, r0, #0 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0200CAB4 bl FUN_02033ED0 ldr r0, [r4, #0xc] bl FUN_0200AB18 ldr r0, [r4, #0x10] bl FUN_0200A8B8 ldr r0, [r4, #0x14] bl FUN_02021A20 ldr r0, [r4, #8] bl FUN_02016A18 ldr r0, [r4, #0x18] bl FUN_0201FD58 bl FUN_02009FA0 add r0, r5, #0 bl FUN_0200627C mov r0, #0x39 bl FUN_020168D0 mov r0, #0x3a bl FUN_020168D0 add r0, r6, #0 bl OS_RestoreInterrupts mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD81_02238004 thumb_func_start MOD81_02238064 MOD81_02238064: ; 0x02238064 push {r4, r5, r6, lr} add r5, r1, #0 bl FUN_02006278 add r4, r0, #0 ldr r3, [r4, #4] cmp r3, #7 bhs _022380E0 ldr r1, [r4] ldr r6, _022380E4 ; =0x0223CF90 lsl r2, r3, #4 ldr r1, [r1, #0x10] ldr r6, [r6, r2] tst r1, r6 beq _022380D0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] cmp r1, #0 bne _02238098 ldr r1, _022380E8 ; =0x0223CF84 ldr r1, [r1, r2] blx r1 mov r1, #0x15 lsl r1, r1, #4 str r0, [r4, r1] _02238098: ldr r2, [r4, #4] mov r0, #0x15 lsl r3, r2, #4 ldr r2, _022380EC ; =0x0223CF88 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, [r2, r3] add r1, r5, #0 blx r2 cmp r0, #0 beq _022380D8 ldr r1, [r4, #4] mov r0, #0x15 lsl r2, r1, #4 ldr r1, _022380F0 ; =0x0223CF8C lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [r1, r2] blx r1 mov r0, #0x15 mov r1, #0 lsl r0, r0, #4 str r1, [r4, r0] ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] str r1, [r5] b _022380D8 _022380D0: add r0, r3, #1 str r0, [r4, #4] mov r0, #0 str r0, [r5] _022380D8: bl MOD81_02238864 mov r0, #0 pop {r4, r5, r6, pc} _022380E0: mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 _022380E4: .word 0x0223CF90 _022380E8: .word 0x0223CF84 _022380EC: .word 0x0223CF88 _022380F0: .word 0x0223CF8C thumb_func_end MOD81_02238064 thumb_func_start MOD81_022380F4 MOD81_022380F4: ; 0x022380F4 push {r3, lr} ldr r0, [r1, #0x18] bl FUN_0201FDEC bl FUN_02009F80 ldr r3, _02238110 ; =0x027E0000 ldr r1, _02238114 ; =0x00003FF8 mov r0, #1 ldr r2, [r3, r1] orr r0, r2 str r0, [r3, r1] pop {r3, pc} nop _02238110: .word 0x027E0000 _02238114: .word 0x00003FF8 thumb_func_end MOD81_022380F4 thumb_func_start MOD81_02238118 MOD81_02238118: ; 0x02238118 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 mov r0, #0x39 add r6, r1, #0 add r1, r0, #0 add r1, #0xc7 bl FUN_02016998 add r4, r0, #0 ldr r0, _022381DC ; =0x00000000 str r0, [r5] beq _022381D4 mov r0, #0x5d mov r1, #6 add r2, sp, #4 mov r3, #0x39 bl FUN_02006C08 add r7, r0, #0 beq _02238152 mov r0, #0 add r1, r4, #0 mov r2, #0x60 bl MIi_CpuClear16 add r0, r7, #0 bl FUN_02016A18 _02238152: add r1, r4, #0 mov r0, #0 add r1, #0xec str r0, [r1] add r1, r4, #0 add r1, #0xe8 str r0, [r1] add r1, r4, #0 add r1, #0xf0 str r0, [r1] add r1, r4, #0 add r1, #0xf4 str r0, [r1] add r1, r4, #0 add r1, #0xe4 str r5, [r1] add r1, r4, #0 add r1, #0xf8 str r0, [r1] add r1, r4, #0 add r1, #0xfc str r6, [r1] add r3, r4, #0 add r2, r0, #0 _02238182: add r1, r3, #0 add r1, #0xc4 add r0, r0, #1 add r3, r3, #4 str r2, [r1] cmp r0, #8 blt _02238182 mov r0, #8 str r0, [sp] ldr r0, _022381E0 ; =0x04000050 mov r1, #4 mov r2, #0xc mov r3, #0x10 bl G2x_SetBlendAlpha_ mov r0, #8 str r0, [sp] ldr r0, _022381E4 ; =0x04001050 mov r1, #4 mov r2, #0xc mov r3, #0x10 bl G2x_SetBlendAlpha_ ldr r0, _022381E8 ; =MOD81_02238248 add r1, r4, #0 mov r2, #0x14 bl FUN_0200CA44 add r1, r4, #0 add r1, #0xc0 str r0, [r1] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] cmp r0, #0 beq _022381D4 add r0, r4, #0 add r0, #0xe4 ldr r0, [r0] mov r1, #1 str r1, [r0] _022381D4: add r0, r4, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _022381DC: .word 0x00000000 _022381E0: .word 0x04000050 _022381E4: .word 0x04001050 _022381E8: .word MOD81_02238248 thumb_func_end MOD81_02238118 thumb_func_start MOD81_022381EC MOD81_022381EC: ; 0x022381EC add r1, r0, #0 add r1, #0xe4 ldr r1, [r1] ldr r1, [r1] cmp r1, #1 bne _022381FE mov r1, #1 add r0, #0xe8 str r1, [r0] _022381FE: bx lr thumb_func_end MOD81_022381EC thumb_func_start MOD81_02238200 MOD81_02238200: ; 0x02238200 push {r4, r5, r6, lr} add r6, r0, #0 add r0, #0xe4 ldr r0, [r0] ldr r0, [r0] cmp r0, #1 bne _02238246 mov r4, #0 add r5, r6, #0 _02238212: add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 beq _02238224 add r0, r6, #0 add r1, r4, #0 bl MOD81_0223840C _02238224: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _02238212 add r0, r6, #0 add r0, #0xe4 ldr r0, [r0] mov r1, #0 str r1, [r0] add r0, r6, #0 add r0, #0xc0 ldr r0, [r0] bl FUN_0200CAB4 add r0, r6, #0 bl FUN_02016A18 _02238246: pop {r4, r5, r6, pc} thumb_func_end MOD81_02238200 thumb_func_start MOD81_02238248 MOD81_02238248: ; 0x02238248 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r0, #0xe8 ldr r0, [r0] cmp r0, #0 bne _022382C6 add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] cmp r0, #0 bgt _02238284 ldr r0, _0223832C ; =0x000006AE bl FUN_020054C8 add r0, r4, #0 mov r1, #0x1e add r0, #0xf0 str r1, [r0] add r0, r4, #0 bl MOD81_02238358 _02238284: add r0, r4, #0 add r0, #0xec ldr r0, [r0] cmp r0, #0 beq _02238328 bl GX_BeginLoadBGExtPltt bl GXS_BeginLoadBGExtPltt add r0, r4, #0 mov r1, #0x60 bl DC_FlushRange mov r1, #6 add r0, r4, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GX_LoadBGExtPltt mov r1, #6 add r0, r4, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GXS_LoadBGExtPltt bl GX_EndLoadBGExtPltt bl GXS_EndLoadBGExtPltt mov r0, #0 add r4, #0xec str r0, [r4] pop {r3, r4, r5, pc} _022382C6: add r0, r4, #0 add r0, #0xec ldr r0, [r0] cmp r0, #0 beq _02238308 bl GX_BeginLoadBGExtPltt bl GXS_BeginLoadBGExtPltt add r0, r4, #0 mov r1, #0x60 bl DC_FlushRange mov r1, #6 add r0, r4, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GX_LoadBGExtPltt mov r1, #6 add r0, r4, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GXS_LoadBGExtPltt bl GX_EndLoadBGExtPltt bl GXS_EndLoadBGExtPltt add r0, r4, #0 mov r1, #0 add r0, #0xec str r1, [r0] _02238308: add r0, r4, #0 add r0, #0xf4 ldr r0, [r0] cmp r0, #0 bne _02238328 add r0, r4, #0 add r0, #0xe4 ldr r0, [r0] mov r1, #0 str r1, [r0] add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 _02238328: pop {r3, r4, r5, pc} nop _0223832C: .word 0x000006AE thumb_func_end MOD81_02238248 thumb_func_start MOD81_02238330 MOD81_02238330: ; 0x02238330 push {r3, r4} cmp r1, #0 blt _02238340 cmp r1, #0x60 bge _02238340 mov r4, #0 lsl r1, r1, #1 strh r4, [r0, r1] _02238340: cmp r2, #0 blt _0223834C cmp r2, #0x60 bge _0223834C lsl r1, r2, #1 strh r3, [r0, r1] _0223834C: mov r1, #1 add r0, #0xec str r1, [r0] pop {r3, r4} bx lr .align 2, 0 thumb_func_end MOD81_02238330 thumb_func_start MOD81_02238358 MOD81_02238358: ; 0x02238358 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xf8 ldr r0, [r0] lsl r0, r0, #2 add r0, r5, r0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 bne _02238404 mov r0, #0x39 mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 beq _02238404 add r0, r5, #0 str r5, [r4] add r0, #0xfc ldr r0, [r0] cmp r0, #1 bne _0223838A mov r0, #0 mvn r0, r0 b _0223838C _0223838A: mov r0, #0xf _0223838C: str r0, [r4, #4] mov r0, #0 str r0, [r4, #0xc] mov r0, #2 str r0, [r4, #8] add r0, r5, #0 add r0, #0xf8 ldr r0, [r0] add r1, r4, #0 str r0, [r4, #0x10] add r0, r5, #0 add r0, #0xfc ldr r0, [r0] mov r2, #0xa str r0, [r4, #0x14] ldr r0, _02238408 ; =MOD81_0223843C bl FUN_0200CA44 add r1, r5, #0 add r1, #0xf8 ldr r1, [r1] lsl r1, r1, #2 add r1, r5, r1 add r1, #0xc4 str r0, [r1] add r0, r5, #0 add r0, #0xf8 ldr r0, [r0] lsl r0, r0, #2 add r0, r5, r0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 beq _022383FE add r0, r5, #0 add r0, #0xf4 ldr r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0xf4 str r1, [r0] add r0, r5, #0 add r0, #0xf8 ldr r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0xf8 str r1, [r0] add r0, r5, #0 add r0, #0xf8 ldr r0, [r0] cmp r0, #8 blt _02238404 mov r0, #0 add r5, #0xf8 str r0, [r5] pop {r3, r4, r5, pc} _022383FE: add r0, r4, #0 bl FUN_02016A18 _02238404: pop {r3, r4, r5, pc} nop _02238408: .word MOD81_0223843C thumb_func_end MOD81_02238358 thumb_func_start MOD81_0223840C MOD81_0223840C: ; 0x0223840C push {r4, r5, r6, lr} add r5, r0, #0 add r6, r5, #0 lsl r4, r1, #2 add r6, #0xc4 ldr r0, [r6, r4] cmp r0, #0 beq _0223843A bl FUN_0201B6C8 bl FUN_02016A18 ldr r0, [r6, r4] bl FUN_0200CAB4 mov r0, #0 str r0, [r6, r4] add r0, r5, #0 add r0, #0xf4 ldr r0, [r0] add r5, #0xf4 sub r0, r0, #1 str r0, [r5] _0223843A: pop {r4, r5, r6, pc} thumb_func_end MOD81_0223840C thumb_func_start MOD81_0223843C MOD81_0223843C: ; 0x0223843C push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0xc] add r1, r0, #1 str r1, [r4, #0xc] ldr r0, [r4, #8] cmp r1, r0 blt _022384A4 mov r3, #0 str r3, [r4, #0xc] ldr r0, [r4, #0x14] cmp r0, #1 bne _0223847C ldr r1, [r4, #4] ldr r0, [r4] add r2, r1, #1 cmp r2, #0xf blt _0223846E bl MOD81_02238330 ldr r0, [r4] ldr r1, [r4, #0x10] bl MOD81_0223840C pop {r4, pc} _0223846E: ldr r3, _022384A8 ; =0x00007FFF bl MOD81_02238330 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r4, pc} _0223847C: ldr r2, [r4, #4] ldr r0, [r4] cmp r2, #0 bge _02238496 add r1, r2, #0 add r2, r2, #1 bl MOD81_02238330 ldr r0, [r4] ldr r1, [r4, #0x10] bl MOD81_0223840C pop {r4, pc} _02238496: ldr r3, _022384A8 ; =0x00007FFF add r1, r2, #1 bl MOD81_02238330 ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] _022384A4: pop {r4, pc} nop _022384A8: .word 0x00007FFF thumb_func_end MOD81_0223843C thumb_func_start MOD81_022384AC MOD81_022384AC: ; 0x022384AC push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r0, [sp] add r6, r1, #0 mov r0, #0x39 mov r1, #0x24 add r7, r2, #0 str r3, [sp, #4] ldr r5, [sp, #0x28] bl FUN_02016998 add r4, r0, #0 ldr r0, _0223850C ; =0x00000001 str r0, [r5] beq _02238504 ldr r1, [sp] str r1, [r4] str r6, [r4, #8] ldr r1, [sp, #4] str r7, [r4, #0xc] str r1, [r4, #0x10] ldr r1, [sp, #0x20] str r1, [r4, #0x14] cmp r6, r7 bge _022384E0 mov r0, #0 _022384E0: str r0, [r4, #0x18] ldr r0, [sp, #0x24] mov r2, #0 str r0, [r4, #0x1c] str r5, [r4, #4] ldr r0, _02238510 ; =MOD81_02238514 add r1, r4, #0 str r2, [r5] bl FUN_0200CA60 str r0, [r4, #0x20] cmp r0, #0 bne _02238504 mov r0, #1 str r0, [r5] add r0, r4, #0 bl FUN_02016A18 _02238504: add r0, r4, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _0223850C: .word 0x00000001 _02238510: .word MOD81_02238514 thumb_func_end MOD81_022384AC thumb_func_start MOD81_02238514 MOD81_02238514: ; 0x02238514 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] ldr r1, [r4, #0x10] mul r1, r0 asr r2, r1, #0xc asr r1, r2, #4 lsr r1, r1, #0x1b add r1, r2, r1 asr r2, r1, #5 ldr r1, [r4, #0x18] cmp r1, #0 beq _02238536 cmp r1, #1 beq _0223854C b _02238560 _02238536: ldr r1, [r4, #0xc] add r0, r0, r2 cmp r0, r1 bge _02238542 str r0, [r4, #8] b _02238560 _02238542: str r1, [r4, #8] ldr r0, [r4, #4] mov r1, #1 str r1, [r0] b _02238560 _0223854C: ldr r1, [r4, #0xc] sub r0, r0, r2 cmp r0, r1 ble _02238558 str r0, [r4, #8] b _02238560 _02238558: str r1, [r4, #8] ldr r0, [r4, #4] mov r1, #1 str r1, [r0] _02238560: add r0, r4, #0 bl MOD81_02238588 ldr r0, [r4, #4] ldr r0, [r0] cmp r0, #0 beq _0223857C add r0, r4, #0 bl MOD81_02238898 add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} _0223857C: ldr r1, [r4, #0x10] ldr r0, [r4, #0x14] add r0, r1, r0 str r0, [r4, #0x10] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_02238514 thumb_func_start MOD81_02238588 MOD81_02238588: ; 0x02238588 push {r3, r4, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4, #8] add r2, sp, #4 str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] str r0, [sp, #0xc] ldr r0, [r4, #8] mov r3, #0x80 str r0, [sp, #0x10] ldr r0, [r4, #0x1c] lsl r1, r0, #2 ldr r0, _022385CC ; =0x0223CF6C ldr r0, [r0, r1] mov r1, #2 str r0, [sp] ldr r0, [r4] bl FUN_02017BD0 ldr r0, [r4, #0x1c] add r2, sp, #4 lsl r1, r0, #2 ldr r0, _022385CC ; =0x0223CF6C mov r3, #0x80 ldr r0, [r0, r1] mov r1, #6 str r0, [sp] ldr r0, [r4] bl FUN_02017BD0 add sp, #0x14 pop {r3, r4, pc} .align 2, 0 _022385CC: .word 0x0223CF6C thumb_func_end MOD81_02238588 thumb_func_start MOD81_022385D0 MOD81_022385D0: ; 0x022385D0 push {r4, r5, r6, r7, lr} sub sp, #0x44 add r5, r0, #0 ldr r0, [sp, #0x58] add r4, r1, #0 str r2, [sp, #0x14] str r3, [sp, #0x18] cmp r0, #0 beq _022385E8 mov r6, #0x19 lsl r6, r6, #8 b _022385EC _022385E8: mov r6, #0x32 lsl r6, r6, #6 _022385EC: mov r0, #0x39 add r1, r6, #0 bl FUN_020169D8 add r7, r0, #0 beq _02238690 ldr r3, _022386B8 ; =0x0223CF74 add r2, sp, #0x24 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} cmp r4, #0 ldr r0, [r5] bne _0223860E ldr r4, [r0] b _02238610 _0223860E: ldr r4, [r0, #4] _02238610: add r0, r4, #0 bl FUN_02066A6C str r0, [sp, #0x20] add r0, sp, #0x34 add r1, r4, #0 mov r2, #2 bl FUN_02068B70 mov r1, #0 add r0, r4, #0 add r2, r1, #0 bl FUN_020672BC str r0, [sp, #0x1c] add r0, r4, #0 mov r1, #5 mov r2, #0 bl FUN_020672BC lsl r0, r0, #0x10 ldr r1, [sp, #0x58] lsr r0, r0, #0x10 cmp r1, #0 beq _02238648 ldr r1, [sp, #0x2c] lsl r1, r1, #1 str r1, [sp, #0x2c] _02238648: ldr r1, [sp, #0x1c] str r7, [sp] str r1, [sp, #4] ldr r1, [sp, #0x58] mov r2, #0x39 str r1, [sp, #8] mov r1, #2 str r1, [sp, #0xc] str r0, [sp, #0x10] add r1, sp, #0x24 ldrh r0, [r1, #0x10] ldrh r1, [r1, #0x12] add r3, sp, #0x24 bl FUN_02012530 add r0, r7, #0 add r1, r6, #0 bl DC_FlushRange ldr r1, [sp, #0x14] mov r0, #0 str r0, [sp] lsl r1, r1, #0x18 ldr r0, [r5, #8] lsr r1, r1, #0x18 add r2, r7, #0 add r3, r6, #0 bl FUN_02017E14 ldr r1, [sp, #0x20] add r0, r4, #0 bl FUN_02066A94 add r0, r7, #0 bl FUN_02016A18 _02238690: ldr r0, [sp, #0x14] cmp r0, #4 blo _0223869A mov r2, #4 b _0223869C _0223869A: mov r2, #0 _0223869C: mov r0, #0x20 str r0, [sp] mov r0, #0x39 ldr r3, [sp, #0x18] str r0, [sp, #4] add r1, sp, #0x24 ldrh r0, [r1, #0x10] ldrh r1, [r1, #0x14] lsl r3, r3, #5 bl FUN_02006930 add sp, #0x44 pop {r4, r5, r6, r7, pc} nop _022386B8: .word 0x0223CF74 thumb_func_end MOD81_022385D0 thumb_func_start MOD81_022386BC MOD81_022386BC: ; 0x022386BC push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 add r4, r2, #0 add r6, r3, #0 cmp r1, #0 bne _022386CE mov r1, #0xc6 b _022386DE _022386CE: mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, #0 beq _022386DC mov r1, #0xc7 b _022386DE _022386DC: mov r1, #0xc6 _022386DE: mov r0, #0x39 str r0, [sp] mov r0, #7 mov r2, #0 add r3, sp, #0x1c bl FUN_02006BDC add r7, r0, #0 beq _02238746 mov r0, #0xa str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0x1c] ldr r2, [sp, #0x38] add r0, #0xc str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] str r0, [sp, #0x10] mov r0, #0x20 ldr r3, [sp, #0x3c] str r0, [sp, #0x14] str r0, [sp, #0x18] lsl r1, r4, #0x18 lsl r2, r2, #0x18 lsl r3, r3, #0x18 ldr r0, [r5, #8] lsr r1, r1, #0x18 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_02018170 mov r0, #0xa str r0, [sp] str r0, [sp, #4] lsl r0, r6, #0x18 ldr r2, [sp, #0x38] ldr r3, [sp, #0x3c] lsr r0, r0, #0x18 str r0, [sp, #8] lsl r1, r4, #0x18 lsl r2, r2, #0x18 lsl r3, r3, #0x18 ldr r0, [r5, #8] lsr r1, r1, #0x18 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_020186B4 add r0, r7, #0 bl FUN_02016A18 _02238746: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD81_022386BC thumb_func_start MOD81_0223874C MOD81_0223874C: ; 0x0223874C push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 mov r0, #0x3a add r3, r5, #0 str r0, [sp] add r1, r2, #0 add r0, r4, #0 mov r2, #1 add r3, #8 bl FUN_02006C30 str r0, [r5] mov r0, #0x3a 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, #4] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD81_0223874C thumb_func_start MOD81_02238784 MOD81_02238784: ; 0x02238784 push {r4, lr} add r4, r0, #0 ldr r0, [r4] cmp r0, #0 beq _02238796 bl FUN_02016A18 mov r0, #0 str r0, [r4] _02238796: ldr r0, [r4, #4] cmp r0, #0 beq _022387A4 bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] _022387A4: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_02238784 thumb_func_start MOD81_022387A8 MOD81_022387A8: ; 0x022387A8 str r2, [r0] str r3, [r0, #8] ldr r2, [r1, #8] str r2, [r0, #0xc] ldr r1, [r1, #0xc] ldr r2, [sp] str r1, [r0, #0x10] add r1, r0, #0 add r1, #0x20 strb r2, [r1] mov r1, #0 str r1, [r0, #4] str r1, [r0, #0x14] str r1, [r0, #0x18] str r1, [r0, #0x1c] bx lr thumb_func_end MOD81_022387A8 thumb_func_start MOD81_022387C8 MOD81_022387C8: ; 0x022387C8 push {r4, lr} sub sp, #0x20 ldr r0, [r0, #0x18] 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, #0x28] str r1, [sp, #4] str r0, [sp, #0x14] ldr r0, [sp, #0x2c] str r0, [sp, #0x18] mov r0, #0x39 str r0, [sp, #0x1c] add r0, sp, #0 bl FUN_0201FF84 add r4, r0, #0 beq _02238804 mov r1, #1 bl FUN_020200BC mov r1, #1 add r0, r4, #0 lsl r1, r1, #0xc bl FUN_020200D8 _02238804: add r0, r4, #0 add sp, #0x20 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_022387C8 thumb_func_start MOD81_0223880C MOD81_0223880C: ; 0x0223880C ldr r0, [r0, #8] bx lr thumb_func_end MOD81_0223880C thumb_func_start MOD81_02238810 MOD81_02238810: ; 0x02238810 ldr r0, [r0, #0xc] bx lr thumb_func_end MOD81_02238810 thumb_func_start MOD81_02238814 MOD81_02238814: ; 0x02238814 ldr r0, [r0, #0x10] bx lr thumb_func_end MOD81_02238814 thumb_func_start MOD81_02238818 MOD81_02238818: ; 0x02238818 ldr r0, [r0] ldr r0, [r0] bx lr .align 2, 0 thumb_func_end MOD81_02238818 thumb_func_start MOD81_02238820 MOD81_02238820: ; 0x02238820 ldr r0, [r0] ldr r0, [r0, #4] bx lr .align 2, 0 thumb_func_end MOD81_02238820 thumb_func_start MOD81_02238828 MOD81_02238828: ; 0x02238828 ldr r0, [r0] ldr r0, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD81_02238828 thumb_func_start MOD81_02238830 MOD81_02238830: ; 0x02238830 mov r1, #0x53 lsl r1, r1, #2 ldrh r0, [r0, r1] bx lr thumb_func_end MOD81_02238830 thumb_func_start MOD81_02238838 MOD81_02238838: ; 0x02238838 ldr r1, _02238840 ; =0x0000014E ldrh r0, [r0, r1] bx lr nop _02238840: .word 0x0000014E thumb_func_end MOD81_02238838 thumb_func_start MOD81_02238844 MOD81_02238844: ; 0x02238844 ldr r0, [r0] ldr r3, _0223884C ; =FUN_02025084 ldr r0, [r0, #0x14] bx r3 .align 2, 0 _0223884C: .word FUN_02025084 thumb_func_end MOD81_02238844 thumb_func_start MOD81_02238850 MOD81_02238850: ; 0x02238850 ldr r0, [r0] ldr r0, [r0, #0x10] bx lr .align 2, 0 thumb_func_end MOD81_02238850 thumb_func_start MOD81_02238858 MOD81_02238858: ; 0x02238858 ldr r0, _02238860 ; =0x0223D3C0 mov r1, #0 str r1, [r0] bx lr .align 2, 0 _02238860: .word 0x0223D3C0 thumb_func_end MOD81_02238858 thumb_func_start MOD81_02238864 MOD81_02238864: ; 0x02238864 push {r4, r5, r6, lr} ldr r6, _02238890 ; =0x0223D3C0 ldr r0, [r6] cmp r0, #0 beq _0223888C mov r4, #0 cmp r0, #0 ble _02238886 ldr r5, _02238894 ; =0x0223D3C4 _02238876: ldr r0, [r5] bl FUN_02016A18 ldr r0, [r6] add r4, r4, #1 add r5, r5, #4 cmp r4, r0 blt _02238876 _02238886: ldr r0, _02238890 ; =0x0223D3C0 mov r1, #0 str r1, [r0] _0223888C: pop {r4, r5, r6, pc} nop _02238890: .word 0x0223D3C0 _02238894: .word 0x0223D3C4 thumb_func_end MOD81_02238864 thumb_func_start MOD81_02238898 MOD81_02238898: ; 0x02238898 push {r4, lr} add r4, r0, #0 ldr r0, _022388B8 ; =0x0223D3C0 ldr r0, [r0] cmp r0, #0x20 blt _022388A8 bl ErrorHandling _022388A8: ldr r0, _022388B8 ; =0x0223D3C0 ldr r2, [r0] add r1, r2, #1 str r1, [r0] ldr r0, _022388BC ; =0x0223D3C4 lsl r1, r2, #2 str r4, [r0, r1] pop {r4, pc} .align 2, 0 _022388B8: .word 0x0223D3C0 _022388BC: .word 0x0223D3C4 thumb_func_end MOD81_02238898 thumb_func_start MOD81_022388C0 MOD81_022388C0: ; 0x022388C0 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 add r4, r1, #0 mov r0, #0x3a mov r1, #0x20 add r5, r2, #0 str r3, [sp] bl FUN_02016998 add r6, r0, #0 beq _02238906 ldr r3, [sp] add r1, r4, #0 add r2, r5, #0 bl MOD81_02238CA0 mov r1, #0x8c mov r0, #0x3a mul r1, r7 bl FUN_02016998 str r0, [r6, #0x18] mov r4, #0 str r7, [r6, #0x1c] cmp r7, #0 bls _02238906 add r5, r4, #0 _022388F6: ldr r0, [r6, #0x18] add r0, r0, r5 bl MOD81_02238A38 add r4, r4, #1 add r5, #0x8c cmp r4, r7 blo _022388F6 _02238906: add r0, r6, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD81_022388C0 thumb_func_start MOD81_0223890C MOD81_0223890C: ; 0x0223890C push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x1c] mov r6, #0 cmp r0, #0 bls _0223892C add r4, r6, #0 _0223891A: ldr r0, [r5, #0x18] add r0, r0, r4 bl MOD81_02238A6C ldr r0, [r5, #0x1c] add r6, r6, #1 add r4, #0x8c cmp r6, r0 blo _0223891A _0223892C: ldr r0, [r5, #0x18] bl FUN_02016A18 add r0, r5, #0 bl MOD81_02238D0C add r0, r5, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} thumb_func_end MOD81_0223890C thumb_func_start MOD81_02238940 MOD81_02238940: ; 0x02238940 push {r3, r4, r5, r6, lr} sub sp, #4 mov r1, #0 add r5, r0, #0 mov r0, #0x11 add r2, r1, #0 bl FUN_020BB1C0 bl FUN_0201EBA4 ldr r0, [r5, #0x1c] mov r6, #0 cmp r0, #0 bls _02238976 add r4, r6, #0 _0223895E: ldr r0, [r5, #0x18] add r0, r0, r4 ldr r1, [r0, #0x64] cmp r1, #0 beq _0223896C bl MOD81_02238988 _0223896C: ldr r0, [r5, #0x1c] add r6, r6, #1 add r4, #0x8c cmp r6, r0 blo _0223895E _02238976: mov r2, #1 mov r0, #0x12 add r1, sp, #0 str r2, [sp] bl FUN_020BB1C0 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD81_02238940 thumb_func_start MOD81_02238988 MOD81_02238988: ; 0x02238988 push {r4, lr} sub sp, #0x50 add r4, r0, #0 add r0, sp, #0x2c bl MTX_Identity33_ add r0, r4, #0 add r0, #0x80 ldrh r0, [r0] ldr r3, _02238A34 ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #8 bl MTX_RotX33_ add r1, sp, #0x2c add r0, sp, #8 add r2, r1, #0 bl MTX_Concat33 add r0, r4, #0 add r0, #0x82 ldrh r0, [r0] ldr r3, _02238A34 ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #8 bl MTX_RotY33_ add r1, sp, #0x2c add r0, sp, #8 add r2, r1, #0 bl MTX_Concat33 add r0, r4, #0 add r0, #0x84 ldrh r0, [r0] ldr r3, _02238A34 ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #8 bl MTX_RotZ33_ add r1, sp, #0x2c add r0, sp, #8 add r2, r1, #0 bl MTX_Concat33 add r0, r4, #0 add r0, #0x88 ldr r0, [r0] cmp r0, #0x1f beq _02238A20 str r0, [sp] mov r0, #0 add r1, r0, #0 add r2, r0, #0 add r3, r0, #0 str r0, [sp, #4] bl FUN_020B8390 _02238A20: add r1, r4, #0 add r0, r4, #4 add r4, #0x74 add r1, #0x68 add r2, sp, #0x2c add r3, r4, #0 bl FUN_0201B26C add sp, #0x50 pop {r4, pc} .align 2, 0 _02238A34: .word 0x020FFA38 thumb_func_end MOD81_02238988 thumb_func_start MOD81_02238A38 MOD81_02238A38: ; 0x02238A38 mov r1, #0 str r1, [r0, #0x64] add r2, r0, #0 str r1, [r0] add r2, #0x84 strh r1, [r2] mov r2, #0x84 ldrsh r3, [r0, r2] add r2, r0, #0 add r2, #0x82 strh r3, [r2] mov r2, #0x82 ldrsh r3, [r0, r2] add r2, r0, #0 add r2, #0x80 strh r3, [r2] mov r2, #1 lsl r2, r2, #0xc str r2, [r0, #0x7c] str r2, [r0, #0x78] str r2, [r0, #0x74] str r1, [r0, #0x70] str r1, [r0, #0x6c] str r1, [r0, #0x68] bx lr .align 2, 0 thumb_func_end MOD81_02238A38 thumb_func_start MOD81_02238A6C MOD81_02238A6C: ; 0x02238A6C push {r4, lr} add r4, r0, #0 ldr r0, [r4] cmp r0, #0 beq _02238A80 bl FUN_02016A18 mov r0, #0 str r0, [r4] str r0, [r4, #0x64] _02238A80: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_02238A6C thumb_func_start MOD81_02238A84 MOD81_02238A84: ; 0x02238A84 push {r3, r4, r5, r6, r7, lr} sub sp, #8 ldr r4, [r0, #0x18] add r6, r1, #0 mov r0, #0x8c mul r6, r0 add r7, r2, #0 mov r0, #1 str r0, [sp] str r3, [sp, #4] add r1, r3, #0 add r0, r7, #0 mov r2, #0 mov r3, #0x3a add r5, r4, r6 bl FUN_02006C98 str r0, [r4, r6] ldr r1, [sp, #4] add r0, r7, #0 bl LoadFromNARC_7 add r1, r0, #0 ldr r0, [r4, r6] bl DC_FlushRange ldr r0, [r4, r6] cmp r0, #0 beq _02238B02 bl FUN_020BC13C str r0, [r5, #0x58] ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] add r0, r0, r1 str r0, [r5, #0x5c] ldr r0, [r5] bl FUN_020BC0FC str r0, [r5, #0x60] bl FUN_0201B3C4 ldr r0, [r5] ldr r1, [r5, #0x60] bl FUN_0201B3A8 ldr r1, [r5, #0x5c] add r0, r5, #4 bl FUN_020B80B4 ldr r0, [sp, #0x20] mov r1, #0x1f str r0, [r5, #0x68] ldr r0, [sp, #0x24] str r0, [r5, #0x6c] ldr r0, [sp, #0x28] str r0, [r5, #0x70] add r0, r5, #0 add r0, #0x88 str r1, [r0] ldr r0, [sp, #0x2c] str r0, [r5, #0x64] _02238B02: add r0, r5, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD81_02238A84 thumb_func_start MOD81_02238B08 MOD81_02238B08: ; 0x02238B08 add r2, r0, #0 add r2, #0x68 add r3, r1, #0 ldmia r2!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r2] str r0, [r3] bx lr thumb_func_end MOD81_02238B08 thumb_func_start MOD81_02238B18 MOD81_02238B18: ; 0x02238B18 add r3, r1, #0 add r2, r0, #0 ldmia r3!, {r0, r1} add r2, #0x68 stmia r2!, {r0, r1} ldr r0, [r3] str r0, [r2] bx lr thumb_func_end MOD81_02238B18 thumb_func_start MOD81_02238B28 MOD81_02238B28: ; 0x02238B28 add r2, r0, #0 add r2, #0x80 ldrh r2, [r2] strh r2, [r1] add r2, r0, #0 add r2, #0x82 ldrh r2, [r2] add r0, #0x84 strh r2, [r1, #2] ldrh r0, [r0] strh r0, [r1, #4] bx lr thumb_func_end MOD81_02238B28 thumb_func_start MOD81_02238B40 MOD81_02238B40: ; 0x02238B40 ldrh r3, [r1] add r2, r0, #0 add r2, #0x80 strh r3, [r2] add r2, r0, #0 ldrh r3, [r1, #2] add r2, #0x82 add r0, #0x84 strh r3, [r2] ldrh r1, [r1, #4] strh r1, [r0] bx lr thumb_func_end MOD81_02238B40 thumb_func_start MOD81_02238B58 MOD81_02238B58: ; 0x02238B58 str r1, [r0, #0x64] bx lr thumb_func_end MOD81_02238B58 thumb_func_start MOD81_02238B5C MOD81_02238B5C: ; 0x02238B5C push {r3, lr} add r2, r0, #0 add r2, #0x88 str r1, [r2] cmp r1, #0x1f ldr r0, [r0, #0x5c] beq _02238B76 mov r2, #0x1f mov r1, #0 lsl r2, r2, #0x10 bl FUN_020BC02C pop {r3, pc} _02238B76: mov r2, #0x1f mov r1, #1 lsl r2, r2, #0x10 bl FUN_020BC02C pop {r3, pc} .align 2, 0 thumb_func_end MOD81_02238B5C thumb_func_start MOD81_02238B84 MOD81_02238B84: ; 0x02238B84 str r1, [r0, #0x74] str r1, [r0, #0x78] str r1, [r0, #0x7c] bx lr thumb_func_end MOD81_02238B84 thumb_func_start MOD81_02238B8C MOD81_02238B8C: ; 0x02238B8C push {r3, r4, lr} sub sp, #0x4c add r4, r0, #0 add r0, sp, #0x28 bl MTX_Identity33_ add r0, r4, #0 add r0, #0x80 ldrh r0, [r0] ldr r3, _02238C3C ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #4 bl MTX_RotX33_ add r1, sp, #0x28 add r0, sp, #4 add r2, r1, #0 bl MTX_Concat33 add r0, r4, #0 add r0, #0x82 ldrh r0, [r0] ldr r3, _02238C3C ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #4 bl MTX_RotY33_ add r1, sp, #0x28 add r0, sp, #4 add r2, r1, #0 bl MTX_Concat33 add r0, r4, #0 add r0, #0x84 ldrh r0, [r0] ldr r3, _02238C3C ; =0x020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] add r0, sp, #4 bl MTX_RotZ33_ add r1, sp, #0x28 add r0, sp, #4 add r2, r1, #0 bl MTX_Concat33 mov r1, #0 mov r0, #0x11 add r2, r1, #0 bl FUN_020BB1C0 bl FUN_0201EBA4 add r1, r4, #0 ldr r0, [r4, #0x5c] add r4, #0x74 add r1, #0x68 add r2, sp, #0x28 add r3, r4, #0 bl FUN_0201B6D0 add r4, r0, #0 mov r2, #1 mov r0, #0x12 add r1, sp, #0 str r2, [sp] bl FUN_020BB1C0 add r0, r4, #0 add sp, #0x4c pop {r3, r4, pc} .align 2, 0 _02238C3C: .word 0x020FFA38 thumb_func_end MOD81_02238B8C thumb_func_start MOD81_02238C40 MOD81_02238C40: ; 0x02238C40 push {r3, r4, lr} sub sp, #0xc add r2, r0, #0 add r4, r1, #0 ldr r1, [r2] add r0, sp, #0 bl FUN_0201F03C add r2, sp, #0 ldmia r2!, {r0, r1} stmia r4!, {r0, r1} ldr r0, [r2] str r0, [r4] add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD81_02238C40 thumb_func_start MOD81_02238C60 MOD81_02238C60: ; 0x02238C60 ldr r3, _02238C6C ; =FUN_0201EF90 add r2, r0, #0 add r0, r1, #0 ldr r1, [r2] bx r3 nop _02238C6C: .word FUN_0201EF90 thumb_func_end MOD81_02238C60 thumb_func_start MOD81_02238C70 MOD81_02238C70: ; 0x02238C70 ldr r3, _02238C7C ; =FUN_0201EFB4 add r2, r0, #0 add r0, r1, #0 ldr r1, [r2] bx r3 nop _02238C7C: .word FUN_0201EFB4 thumb_func_end MOD81_02238C70 thumb_func_start MOD81_02238C80 MOD81_02238C80: ; 0x02238C80 ldr r3, _02238C8C ; =FUN_0201EE2C add r2, r0, #0 add r0, r1, #0 ldr r1, [r2] bx r3 nop _02238C8C: .word FUN_0201EE2C thumb_func_end MOD81_02238C80 thumb_func_start MOD81_02238C90 MOD81_02238C90: ; 0x02238C90 ldr r3, _02238C9C ; =FUN_0201EEF0 add r2, r0, #0 add r0, r1, #0 ldr r1, [r2] bx r3 nop _02238C9C: .word FUN_0201EEF0 thumb_func_end MOD81_02238C90 thumb_func_start MOD81_02238CA0 MOD81_02238CA0: ; 0x02238CA0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 mov r0, #0x3a add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bl FUN_0201EB64 str r0, [r5] str r4, [r5, #4] str r6, [r5, #8] mov r1, #0x4b add r2, r5, #0 str r7, [r5, #0xc] mov r0, #0 strh r0, [r5, #0x10] strh r0, [r5, #0x12] strh r0, [r5, #0x14] str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r5] ldr r3, _02238D08 ; =0x00000FA4 str r0, [sp, #8] add r0, r5, #4 lsl r1, r1, #0xe add r2, #0x10 bl FUN_0201ECA8 mov r1, #0 mov r0, #1 lsl r0, r0, #0xc str r0, [sp, #0x10] str r1, [sp, #0xc] str r1, [sp, #0x14] ldr r1, [r5] add r0, sp, #0xc bl FUN_0201EC58 ldr r0, [r5] bl FUN_0201EB8C mov r1, #0xfa ldr r2, [r5] mov r0, #0 lsl r1, r1, #0xe bl FUN_0201EC94 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _02238D08: .word 0x00000FA4 thumb_func_end MOD81_02238CA0 thumb_func_start MOD81_02238D0C MOD81_02238D0C: ; 0x02238D0C ldr r3, _02238D14 ; =FUN_0201EB70 ldr r0, [r0] bx r3 nop _02238D14: .word FUN_0201EB70 thumb_func_end MOD81_02238D0C thumb_func_start MOD81_02238D18 MOD81_02238D18: ; 0x02238D18 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0x6c bl FUN_02016998 add r4, r0, #0 beq _02238D60 str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0x40] mov r0, #0x3a bl FUN_02006D98 str r0, [r4, #0xc] mov r0, #0 str r0, [r4, #0x10] mov r0, #0x4b lsl r0, r0, #2 mov r1, #0x3a bl FUN_020219F4 str r0, [r4, #0x54] mov r0, #0x4b lsl r0, r0, #2 mov r1, #0x3a bl FUN_020219F4 str r0, [r4, #0x58] mov r0, #0 str r0, [r4, #0x64] str r0, [r4, #0x68] _02238D60: add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD81_02238D18 thumb_func_start MOD81_02238D64 MOD81_02238D64: ; 0x02238D64 push {r4, lr} add r4, r0, #0 beq _02238DC2 bl MOD81_0223951C add r0, r4, #0 bl MOD81_022395E8 add r0, r4, #0 bl MOD81_02239498 ldr r0, [r4, #0x54] bl FUN_02021A20 ldr r0, [r4, #0x58] bl FUN_02021A20 ldr r0, [r4, #0x5c] bl MOD81_0223890C ldr r0, [r4, #0x40] mov r1, #1 bl FUN_020178A0 ldr r0, [r4, #0x40] mov r1, #2 bl FUN_020178A0 ldr r0, [r4, #0x40] mov r1, #6 bl FUN_020178A0 add r0, r4, #0 add r0, #0x44 bl FUN_02019178 ldr r0, [r4, #0x10] cmp r0, #0 beq _02238DB6 bl FUN_02007534 _02238DB6: ldr r0, [r4, #0xc] bl FUN_020072E8 add r0, r4, #0 bl FUN_02016A18 _02238DC2: pop {r4, pc} thumb_func_end MOD81_02238D64 thumb_func_start MOD81_02238DC4 MOD81_02238DC4: ; 0x02238DC4 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #4 bhs _02238DF2 lsl r3, r2, #2 ldr r2, _02238DF8 ; =0x0223CFFC add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _02238DE8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _02238DE8: add r0, r5, #0 bl MOD81_02238DFC mov r0, #0 pop {r3, r4, r5, pc} _02238DF2: mov r0, #1 pop {r3, r4, r5, pc} nop _02238DF8: .word 0x0223CFFC thumb_func_end MOD81_02238DC4 thumb_func_start MOD81_02238DFC MOD81_02238DFC: ; 0x02238DFC push {r3, r4, lr} sub sp, #4 add r4, r0, #0 bl G3X_ResetMtxStack mov r1, #0 mov r0, #0x11 add r2, r1, #0 bl FUN_020BB1C0 bl FUN_020BB394 bl FUN_020B02C8 ldr r0, [r4, #0xc] bl FUN_020081C4 ldr r0, [r4, #0xc] bl FUN_02006ED4 mov r2, #1 str r2, [sp] mov r0, #0x12 add r1, sp, #0 bl FUN_020BB1C0 ldr r0, [r4, #0x5c] bl MOD81_02238940 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD81_02238DFC thumb_func_start MOD81_02238E44 MOD81_02238E44: ; 0x02238E44 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 ldr r0, _02239040 ; =0x0223D054 bl FUN_0201E66C ldr r2, _02239044 ; =0x04000304 ldr r0, _02239048 ; =0xFFFF7FFF ldrh r1, [r2] and r0, r1 strh r0, [r2] ldr r0, _0223904C ; =0x0223D00C bl FUN_02016BBC ldr r0, [r4, #0x40] ldr r2, _02239050 ; =0x0223D01C mov r1, #1 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0x40] ldr r2, _02239054 ; =0x0223D038 mov r1, #2 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0x40] ldr r2, _02239054 ; =0x0223D038 mov r1, #6 mov r3, #0 bl FUN_02016C18 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r2, _02239058 ; =0x04000008 mov r0, #3 ldrh r3, [r2] mov r1, #1 bic r3, r0 add r0, r3, #0 orr r0, r1 strh r0, [r2] mov r2, #0 str r2, [sp] ldr r0, [r4, #0x40] add r3, r1, #0 bl FUN_02017F48 mov r2, #0 str r2, [sp] mov r0, #0x20 str r0, [sp, #4] str r0, [sp, #8] str r2, [sp, #0xc] ldr r0, [r4, #0x40] mov r1, #1 add r3, r2, #0 bl FUN_02018540 ldr r0, [r4] bl MOD81_02238844 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] ldr r0, [r4, #0x40] mov r1, #1 mov r2, #0x6d mov r3, #2 bl FUN_0200CD68 mov r0, #0x13 str r0, [sp] mov r0, #0x1b str r0, [sp, #4] mov r0, #4 add r1, r4, #0 str r0, [sp, #8] mov r2, #1 str r2, [sp, #0xc] str r2, [sp, #0x10] ldr r0, [r4, #0x40] add r1, #0x44 mov r3, #2 bl FUN_02019064 add r0, r4, #0 add r0, #0x44 mov r1, #0xf bl FUN_02019620 mov r3, #0x20 str r3, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0xe mov r1, #7 mov r2, #0 bl FUN_02006930 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x40] mov r0, #0x5d mov r1, #0x16 mov r3, #2 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x40] mov r0, #0x5d mov r1, #0x15 mov r3, #2 bl FUN_020068C8 mov r0, #0x20 str r0, [sp] mov r0, #0x3a mov r2, #0 str r0, [sp, #4] mov r0, #0x5d mov r1, #0x17 add r3, r2, #0 bl FUN_02006930 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x40] mov r0, #0x5d mov r1, #0x16 mov r3, #6 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x40] mov r0, #0x5d mov r1, #0x15 mov r3, #6 bl FUN_020068C8 mov r0, #0x20 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0x5d mov r1, #0x17 mov r2, #4 mov r3, #0 bl FUN_02006930 ldr r0, [r4, #0x40] mov r1, #1 bl FUN_02017CD0 add r0, r4, #0 bl MOD81_022392D8 mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 str r0, [r4, #0x5c] add r0, r4, #0 bl MOD81_022393A4 str r0, [r4, #0x10] mov r1, #0 mov r0, #0x6a str r1, [sp] lsl r0, r0, #0xa str r0, [sp, #4] ldr r0, _0223905C ; =0x00073800 mov r2, #0x5d str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0x5c] mov r3, #0x1b bl MOD81_02238A84 ldr r2, _02239060 ; =0x0223CFF4 str r0, [r4, #0x60] ldrh r3, [r2] add r0, sp, #0x14 add r1, sp, #0x14 strh r3, [r0] ldrh r3, [r2, #2] ldrh r2, [r2, #4] strh r3, [r0, #2] strh r2, [r0, #4] ldr r0, [r4, #0x60] bl MOD81_02238B40 mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C add r0, r4, #0 bl MOD81_022393F4 ldr r0, _02239064 ; =0x04000050 mov r1, #0 strh r1, [r0] bl FUN_02033E74 mov r0, #1 mov r1, #0x39 bl FUN_02033F04 mov r0, #0x10 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 add r2, r1, #0 add r3, r0, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0x1c pop {r3, r4, pc} .align 2, 0 _02239040: .word 0x0223D054 _02239044: .word 0x04000304 _02239048: .word 0xFFFF7FFF _0223904C: .word 0x0223D00C _02239050: .word 0x0223D01C _02239054: .word 0x0223D038 _02239058: .word 0x04000008 _0223905C: .word 0x00073800 _02239060: .word 0x0223CFF4 _02239064: .word 0x04000050 thumb_func_end MOD81_02238E44 thumb_func_start MOD81_02239068 MOD81_02239068: ; 0x02239068 push {r4, lr} add r4, r0, #0 ldr r0, [r1] cmp r0, #0 bne _0223908E bl FUN_0200E308 cmp r0, #0 beq _0223908E ldr r0, [r4, #0x28] mov r1, #1 bl FUN_02020130 ldr r0, [r4, #0x28] mov r1, #1 bl FUN_020200A0 mov r0, #1 pop {r4, pc} _0223908E: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_02239068 thumb_func_start MOD81_02239094 MOD81_02239094: ; 0x02239094 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r1, #0 add r4, r0, #0 ldr r0, [r5] cmp r0, #4 bhi _022390CE add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022390AE: ; jump table .short _022390B8 - _022390AE - 2 ; case 0 .short _022390C4 - _022390AE - 2 ; case 1 .short _02239138 - _022390AE - 2 ; case 2 .short _022391BE - _022390AE - 2 ; case 3 .short _022391DE - _022390AE - 2 ; case 4 _022390B8: mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022391EE _022390C4: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0xa bgt _022390D0 _022390CE: b _022391EE _022390D0: ldr r0, [r4] bl MOD81_02238814 str r0, [sp, #0xc] ldr r0, [r4] bl MOD81_02238810 add r7, r0, #0 ldr r0, [r4] bl MOD81_02238850 cmp r0, #1 bne _022390F0 mov r1, #0 mov r6, #2 b _022390F4 _022390F0: mov r1, #4 mov r6, #3 _022390F4: ldr r0, [sp, #0xc] ldr r2, [r4, #0x54] bl FUN_0200A8E0 ldr r1, [r4, #0x58] ldr r2, [r4, #0x54] add r0, r7, #0 bl FUN_0200B7B8 mov r3, #0 str r3, [sp] mov r0, #0xff str r0, [sp, #4] str r3, [sp, #8] add r0, r4, #0 ldr r2, [r4, #0x58] add r0, #0x44 mov r1, #1 bl FUN_0201BD84 add r0, r4, #0 add r0, #0x44 mov r1, #0x6d mov r2, #2 bl FUN_0200D06C add r0, r4, #0 add r0, #0x44 bl FUN_020191D0 mov r0, #0 str r0, [r4, #8] str r6, [r5] b _022391EE _02239138: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x3c ble _022391EE ldr r0, [r4] bl MOD81_02238814 add r6, r0, #0 ldr r0, [r4] bl MOD81_02238810 add r7, r0, #0 ldr r2, [r4, #0x54] add r0, r6, #0 mov r1, #1 bl FUN_0200A8E0 ldr r1, [r4, #0x58] ldr r2, [r4, #0x54] add r0, r7, #0 bl FUN_0200B7B8 ldr r0, [r4] bl MOD81_02238818 mov r1, #0x4c mov r2, #0 bl FUN_020672BC cmp r0, #0 bne _0223918A ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007314 ldr r0, [r4] bl MOD81_02238830 bl FUN_02005578 _0223918A: add r0, r4, #0 add r0, #0x44 mov r1, #0xf bl FUN_02019620 mov r3, #0 str r3, [sp] mov r0, #0xff str r0, [sp, #4] str r3, [sp, #8] add r0, r4, #0 ldr r2, [r4, #0x58] add r0, #0x44 mov r1, #1 bl FUN_0201BD84 add r0, r4, #0 add r0, #0x44 bl FUN_02019548 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022391EE _022391BE: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x3c ble _022391EE add r0, r4, #0 add r0, #0x44 mov r1, #0 bl FUN_0200D0E0 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022391EE _022391DE: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x14 ble _022391EE add sp, #0x10 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _022391EE: mov r0, #0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD81_02239094 thumb_func_start MOD81_022391F4 MOD81_022391F4: ; 0x022391F4 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 ldr r1, [r4] add r5, r0, #0 cmp r1, #4 bhi _022392CE add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0223920E: ; jump table .short _02239218 - _0223920E - 2 ; case 0 .short _02239232 - _0223920E - 2 ; case 1 .short _02239258 - _0223920E - 2 ; case 2 .short _02239284 - _0223920E - 2 ; case 3 .short _022392B6 - _0223920E - 2 ; case 4 _02239218: ldr r0, _022392D4 ; =0x000006A8 bl FUN_020054C8 add r0, r5, #0 mov r1, #0 mov r2, #0x10 mov r3, #0xc bl MOD81_022394BC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _022392CE _02239232: bl MOD81_0223950C cmp r0, #0 beq _022392CE ldr r0, [r5, #0x10] bl FUN_02007534 ldr r0, [r5, #0x2c] mov r1, #0 bl FUN_02020130 ldr r0, [r5, #0x2c] mov r1, #1 bl FUN_020200A0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _022392CE _02239258: ldr r0, [r5, #0x2c] bl FUN_02020388 cmp r0, #0 bne _022392CE ldr r0, [r5, #0x60] mov r1, #1 bl MOD81_02238B58 mov r1, #0x10 add r0, r5, #0 mov r2, #0 add r3, r1, #0 bl MOD81_022394BC add r0, r5, #0 bl MOD81_02239578 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _022392CE _02239284: bl MOD81_022395D4 cmp r0, #2 bge _02239296 add r0, r5, #0 bl MOD81_022395C4 cmp r0, #1 bne _022392CE _02239296: mov r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 add r1, r0, #0 add r2, r0, #0 add r3, r0, #0 bl FUN_0200E1D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _022392CE _022392B6: bl FUN_0200E308 cmp r0, #0 beq _022392CE add r0, r5, #0 bl MOD81_022395C4 cmp r0, #0 beq _022392CE add sp, #0xc mov r0, #1 pop {r4, r5, pc} _022392CE: mov r0, #0 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _022392D4: .word 0x000006A8 thumb_func_end MOD81_022391F4 thumb_func_start MOD81_022392D8 MOD81_022392D8: ; 0x022392D8 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _02239380 ; =0x04000060 ldr r2, _02239384 ; =0xFFFFCFFD ldrh r1, [r0] and r1, r2 strh r1, [r0] ldrh r3, [r0] add r1, r2, #2 and r3, r1 mov r1, #0x10 orr r1, r3 strh r1, [r0] ldrh r3, [r0] ldr r1, _02239388 ; =0x0000CFFB and r1, r3 strh r1, [r0] add r1, r2, #2 ldrh r3, [r0] lsr r2, r2, #0x11 and r3, r1 mov r1, #8 orr r1, r3 strh r1, [r0] mov r0, #0 add r1, r0, #0 mov r3, #0x3f str r0, [sp] bl G3X_SetClearColor ldr r1, _0223938C ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _02239390 ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 ldr r3, _02239394 ; =0x021064B8 mov r0, #1 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 ldr r3, _02239398 ; =0x021064C0 add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 mov r1, #0 mov r2, #1 blx r3 ldr r2, _0223939C ; =0x7FFF0000 add r6, r0, #0 and r2, r4 lsl r1, r4, #0x10 lsr r2, r2, #0x10 ldr r0, [r5, #0xc] lsr r1, r1, #0xd lsl r2, r2, #4 bl FUN_020081A8 ldr r2, _022393A0 ; =0xFFFF0000 lsl r1, r6, #0x10 and r2, r6 lsr r2, r2, #0x10 ldr r0, [r5, #0xc] lsr r1, r1, #0xd lsl r2, r2, #3 bl FUN_020081B4 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _02239380: .word 0x04000060 _02239384: .word 0xFFFFCFFD _02239388: .word 0x0000CFFB _0223938C: .word 0x04000540 _02239390: .word 0xBFFF0000 _02239394: .word 0x021064B8 _02239398: .word 0x021064C0 _0223939C: .word 0x7FFF0000 _022393A0: .word 0xFFFF0000 thumb_func_end MOD81_022392D8 thumb_func_start MOD81_022393A4 MOD81_022393A4: ; 0x022393A4 push {r3, r4, r5, lr} sub sp, #0x20 add r4, r0, #0 ldr r0, [r4] bl MOD81_02238818 add r5, r0, #0 add r0, sp, #0x10 add r1, r5, #0 mov r2, #2 bl FUN_02068B70 ldr r0, [r4] bl MOD81_02238830 add r1, r0, #0 add r0, r4, #0 add r0, #0x14 bl FUN_02069010 add r0, r5, #0 mov r1, #2 bl FUN_02068E1C add r3, r0, #0 mov r1, #0 str r1, [sp] add r0, r4, #0 str r1, [sp, #4] add r0, #0x14 str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0xc] add r3, #0x50 add r1, sp, #0x10 mov r2, #0x80 bl FUN_020073A0 add sp, #0x20 pop {r3, r4, r5, pc} thumb_func_end MOD81_022393A4 thumb_func_start MOD81_022393F4 MOD81_022393F4: ; 0x022393F4 push {r4, lr} sub sp, #0x70 add r4, r0, #0 add r0, #0x30 mov r1, #0x5d mov r2, #7 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c bl FUN_020B19DC add r0, sp, #0x38 bl FUN_020B1A24 mov r3, #0 str r3, [sp] mov r2, #1 str r2, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x38 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 bl FUN_02006AE4 mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c str r0, [sp, #4] mov r0, #0x5d mov r1, #0xa mov r2, #1 mov r3, #0 bl FUN_02006A8C mov r0, #2 add r1, r4, #0 str r0, [sp] add r0, sp, #0x14 add r1, #0x30 add r2, sp, #0x38 add r3, sp, #0x5c bl MOD81_022387A8 mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x64 bl MOD81_022387C8 str r0, [r4, #0x28] mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x5a bl MOD81_022387C8 str r0, [r4, #0x2c] mov r1, #1 bl FUN_02020238 ldr r0, [r4, #0x28] mov r1, #0 bl FUN_020200A0 ldr r0, [r4, #0x2c] mov r1, #0 bl FUN_020200A0 add sp, #0x70 pop {r4, pc} thumb_func_end MOD81_022393F4 thumb_func_start MOD81_02239498 MOD81_02239498: ; 0x02239498 push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _022394A0: ldr r0, [r5, #0x28] cmp r0, #0 beq _022394AA bl FUN_0201FFC8 _022394AA: add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _022394A0 add r6, #0x30 add r0, r6, #0 bl MOD81_02238784 pop {r4, r5, r6, pc} thumb_func_end MOD81_02239498 thumb_func_start MOD81_022394BC MOD81_022394BC: ; 0x022394BC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #0x3a mov r1, #0x14 str r2, [sp] add r7, r3, #0 bl FUN_02016998 add r4, r0, #0 beq _02239502 str r5, [r4] lsl r0, r6, #0xc str r0, [r4, #4] ldr r0, [sp] lsl r1, r0, #0xc str r1, [r4, #8] ldr r0, [r4, #4] sub r0, r1, r0 add r1, r7, #0 bl _s32_div_f str r0, [r4, #0xc] ldr r0, _02239504 ; =MOD81_0223953C str r7, [r4, #0x10] add r1, r4, #0 mov r2, #0 bl FUN_0200CA60 str r0, [r5, #0x64] ldr r0, _02239508 ; =0x04000050 mov r1, #1 add r2, r6, #0 bl G2x_SetBlendBrightness_ _02239502: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02239504: .word MOD81_0223953C _02239508: .word 0x04000050 thumb_func_end MOD81_022394BC thumb_func_start MOD81_0223950C MOD81_0223950C: ; 0x0223950C ldr r0, [r0, #0x64] cmp r0, #0 bne _02239516 mov r0, #1 bx lr _02239516: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD81_0223950C thumb_func_start MOD81_0223951C MOD81_0223951C: ; 0x0223951C push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x64] cmp r0, #0 beq _02239538 bl FUN_0201B6C8 bl MOD81_02238898 ldr r0, [r4, #0x64] bl FUN_0200CAB4 mov r0, #0 str r0, [r4, #0x64] _02239538: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223951C thumb_func_start MOD81_0223953C MOD81_0223953C: ; 0x0223953C push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0x10] sub r0, r0, #1 str r0, [r4, #0x10] cmp r0, #0 ble _0223955E ldr r1, [r4, #4] ldr r0, [r4, #0xc] add r2, r1, r0 str r2, [r4, #4] ldr r0, _02239574 ; =0x04000050 mov r1, #1 asr r2, r2, #0xc bl G2x_SetBlendBrightness_ pop {r4, pc} _0223955E: ldr r2, [r4, #8] ldr r0, _02239574 ; =0x04000050 mov r1, #1 asr r2, r2, #0xc bl G2x_SetBlendBrightness_ ldr r0, [r4] bl MOD81_0223951C pop {r4, pc} nop _02239574: .word 0x04000050 thumb_func_end MOD81_0223953C thumb_func_start MOD81_02239578 MOD81_02239578: ; 0x02239578 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0x30 bl FUN_02016998 add r4, r0, #0 beq _022395B8 str r5, [r4] ldr r0, [r5, #0x60] add r1, r4, #0 str r0, [r4, #4] add r1, #8 bl MOD81_02238B08 add r1, r4, #0 ldr r0, [r4, #4] add r1, #0x14 bl MOD81_02238B28 ldr r0, _022395BC ; =0x00002F60 mov r2, #0 str r0, [r4, #0x1c] str r2, [r4, #0x20] strh r2, [r4, #0x2c] str r2, [r4, #0x24] ldr r0, _022395C0 ; =MOD81_02239608 add r1, r4, #0 str r2, [r4, #0x28] bl FUN_0200CA44 str r0, [r5, #0x68] _022395B8: pop {r3, r4, r5, pc} nop _022395BC: .word 0x00002F60 _022395C0: .word MOD81_02239608 thumb_func_end MOD81_02239578 thumb_func_start MOD81_022395C4 MOD81_022395C4: ; 0x022395C4 ldr r0, [r0, #0x68] cmp r0, #0 bne _022395CE mov r0, #1 bx lr _022395CE: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD81_022395C4 thumb_func_start MOD81_022395D4 MOD81_022395D4: ; 0x022395D4 push {r3, lr} ldr r0, [r0, #0x68] cmp r0, #0 beq _022395E4 bl FUN_0201B6C8 ldr r0, [r0, #0x20] pop {r3, pc} _022395E4: mov r0, #0 pop {r3, pc} thumb_func_end MOD81_022395D4 thumb_func_start MOD81_022395E8 MOD81_022395E8: ; 0x022395E8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x68] cmp r0, #0 beq _02239604 bl FUN_0201B6C8 bl FUN_02016A18 ldr r0, [r4, #0x68] bl FUN_0200CAB4 mov r0, #0 str r0, [r4, #0x68] _02239604: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_022395E8 thumb_func_start MOD81_02239608 MOD81_02239608: ; 0x02239608 push {r3, r4, r5, lr} add r4, r1, #0 ldr r0, [r4, #0x24] cmp r0, #0 bne _0223967C ldr r1, [r4, #0xc] ldr r0, [r4, #0x1c] add r0, r1, r0 str r0, [r4, #0xc] ldr r1, [r4, #0x1c] cmp r1, #0 blt _0223962A mov r0, #0x1e lsl r0, r0, #6 sub r0, r1, r0 str r0, [r4, #0x1c] b _0223967C _0223962A: mov r0, #0x1e lsl r0, r0, #6 sub r0, r1, r0 str r0, [r4, #0x1c] ldr r1, [r4, #0xc] ldr r0, _022396E0 ; =0xFFFFC000 cmp r1, r0 bgt _0223967C str r0, [r4, #0xc] ldr r1, [r4, #0x1c] mov r0, #0x2c mul r0, r1 mov r1, #0x64 bl _s32_div_f neg r1, r0 mov r0, #0xfa lsl r0, r0, #4 str r1, [r4, #0x1c] cmp r1, r0 bge _02239658 mov r0, #1 str r0, [r4, #0x24] _02239658: ldr r0, _022396E4 ; =0x000005E6 bl FUN_020054C8 ldr r0, [r4, #0x20] add r0, r0, #1 str r0, [r4, #0x20] cmp r0, #1 beq _0223966E cmp r0, #3 beq _02239674 b _0223967C _0223966E: mov r0, #0xb0 strh r0, [r4, #0x2c] b _0223967C _02239674: mov r0, #0x2c ldrsh r0, [r4, r0] add r0, #0x50 strh r0, [r4, #0x2c] _0223967C: mov r0, #0x14 mov r2, #0x2c ldrsh r3, [r4, r0] ldrsh r0, [r4, r2] add r1, r4, #0 add r1, #0x14 add r0, r3, r0 strh r0, [r4, #0x14] mov r0, #0x18 ldrsh r3, [r4, r0] ldrsh r0, [r4, r2] sub r0, r3, r0 strh r0, [r4, #0x18] ldr r0, [r4, #4] bl MOD81_02238B40 mov r2, #0x2c ldrsh r3, [r4, r2] ldr r5, [r4, #8] add r1, r4, #0 lsl r0, r3, #2 add r0, r3, r0 add r0, r5, r0 str r0, [r4, #8] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r1, #8 lsl r0, r2, #2 add r0, r2, r0 add r0, r3, r0 str r0, [r4, #0x10] ldr r0, [r4, #4] bl MOD81_02238B18 ldr r0, [r4, #0x24] cmp r0, #0 beq _022396DE mov r0, #0x2c ldrsh r0, [r4, r0] sub r0, #0xe strh r0, [r4, #0x2c] ldr r0, [r4, #0x28] add r0, r0, #1 str r0, [r4, #0x28] cmp r0, #0x1e ble _022396DE ldr r0, [r4] bl MOD81_022395E8 _022396DE: pop {r3, r4, r5, pc} .align 2, 0 _022396E0: .word 0xFFFFC000 _022396E4: .word 0x000005E6 thumb_func_end MOD81_02239608 thumb_func_start MOD81_022396E8 MOD81_022396E8: ; 0x022396E8 push {r3, r4, r5, lr} mov r1, #0x5b add r5, r0, #0 mov r0, #0x3a lsl r1, r1, #2 bl FUN_02016998 add r4, r0, #0 beq _0223974A str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C add r1, r4, #0 add r1, #0xc0 str r0, [r1] add r0, r4, #0 mov r1, #0 add r0, #0xd4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xcc str r1, [r0] mov r0, #0x16 lsl r0, r0, #4 str r1, [r4, r0] add r0, r0, #4 str r1, [r4, r0] bl FUN_0201BA60 add r1, r4, #0 add r1, #0xbc str r0, [r1] add r0, r4, #0 mov r2, #0 add r0, #0xd0 str r2, [r0] mov r0, #0x5a lsl r0, r0, #2 str r2, [r4, r0] ldr r0, _02239750 ; =MOD81_02239F58 add r1, r4, #0 bl FUN_0200CA98 _0223974A: add r0, r4, #0 pop {r3, r4, r5, pc} nop _02239750: .word MOD81_02239F58 thumb_func_end MOD81_022396E8 thumb_func_start MOD81_02239754 MOD81_02239754: ; 0x02239754 push {r3, r4, r5, lr} add r5, r0, #0 bl OS_DisableInterrupts add r4, r0, #0 cmp r5, #0 beq _022397A0 add r0, r5, #0 bl MOD81_02239C94 add r0, r5, #0 bl MOD81_02239DF0 add r0, r5, #0 bl MOD81_02239F1C mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r5, r0] cmp r0, #0 beq _02239782 bl FUN_0200CAB4 _02239782: mov r0, #0x59 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, #0 beq _02239790 bl MOD81_0223A1FC _02239790: add r0, r5, #0 add r0, #0xbc ldr r0, [r0] bl FUN_0201BA1C add r0, r5, #0 bl FUN_02016A18 _022397A0: add r0, r4, #0 bl OS_RestoreInterrupts pop {r3, r4, r5, pc} thumb_func_end MOD81_02239754 thumb_func_start MOD81_022397A8 MOD81_022397A8: ; 0x022397A8 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #4 bhs _022397D6 lsl r3, r2, #2 ldr r2, _022397DC ; =0x0223D094 add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _022397CC ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _022397CC: add r0, r5, #0 bl MOD81_022397E0 mov r0, #0 pop {r3, r4, r5, pc} _022397D6: mov r0, #1 pop {r3, r4, r5, pc} nop _022397DC: .word 0x0223D094 thumb_func_end MOD81_022397A8 thumb_func_start MOD81_022397E0 MOD81_022397E0: ; 0x022397E0 push {r4, lr} add r4, r0, #0 add r0, #0xd4 ldr r0, [r0] cmp r0, #0 beq _02239800 bl G3X_ResetMtxStack add r4, #0xd4 ldr r0, [r4] bl MOD81_02238940 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 _02239800: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_022397E0 thumb_func_start MOD81_02239804 MOD81_02239804: ; 0x02239804 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 bl MOD81_022399FC add r0, r4, #0 bl MOD81_02239CDC add r0, r4, #0 bl MOD81_02239E00 mov r0, #8 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 add r2, r1, #0 add r3, r0, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD81_02239804 thumb_func_start MOD81_02239838 MOD81_02239838: ; 0x02239838 push {r4, lr} add r4, r1, #0 ldr r1, [r4] cmp r1, #0 beq _02239848 cmp r1, #1 beq _0223985E b _02239876 _02239848: bl FUN_0200E308 cmp r0, #0 beq _02239876 ldr r0, _0223987C ; =0x0223D444 mov r1, #0 str r1, [r0] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _02239876 _0223985E: ldr r1, _0223987C ; =0x0223D444 ldr r2, [r1] cmp r2, #0x1e bge _0223986A add r2, r2, #1 str r2, [r1] _0223986A: add r0, #0xd0 ldr r0, [r0] cmp r0, #0 beq _02239876 mov r0, #1 pop {r4, pc} _02239876: mov r0, #0 pop {r4, pc} nop _0223987C: .word 0x0223D444 thumb_func_end MOD81_02239838 thumb_func_start MOD81_02239880 MOD81_02239880: ; 0x02239880 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r5] add r4, r0, #0 cmp r1, #4 bhi _02239926 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02239898: ; jump table .short _022398A2 - _02239898 - 2 ; case 0 .short _022398AE - _02239898 - 2 ; case 1 .short _022398F2 - _02239898 - 2 ; case 2 .short _02239908 - _02239898 - 2 ; case 3 .short _0223991E - _02239898 - 2 ; case 4 _022398A2: mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _02239926 _022398AE: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #8 ble _02239926 add r0, r4, #0 add r0, #0xd8 ldr r0, [r0] mov r1, #0 mov r2, #0x1f mov r3, #0x18 bl MOD81_0223A228 add r0, r4, #0 bl MOD81_0223A2AC mov r1, #0x16 lsl r1, r1, #4 str r0, [r4, r1] add r0, r4, #0 add r0, #0xd8 ldr r0, [r0] mov r1, #0 bl MOD81_02238B5C add r4, #0xd8 ldr r0, [r4] mov r1, #1 bl MOD81_02238B58 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _02239926 _022398F2: mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD81_0223A658 cmp r0, #0 beq _02239926 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _02239926 _02239908: mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD81_0223A64C cmp r0, #0 beq _02239926 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _02239926 _0223991E: bl MOD81_02239F4C mov r0, #1 pop {r3, r4, r5, pc} _02239926: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_02239880 thumb_func_start MOD81_0223992C MOD81_0223992C: ; 0x0223992C push {r4, r5, lr} sub sp, #0xc add r5, r1, #0 ldr r1, [r5] add r4, r0, #0 cmp r1, #4 bhi _022399F2 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02239946: ; jump table .short _02239950 - _02239946 - 2 ; case 0 .short _02239966 - _02239946 - 2 ; case 1 .short _02239984 - _02239946 - 2 ; case 2 .short _022399A0 - _02239946 - 2 ; case 3 .short _022399E4 - _02239946 - 2 ; case 4 _02239950: mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD81_0223A664 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022399F2 _02239966: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #2 ble _022399F2 mov r0, #0 str r0, [r4, #8] add r4, #0xc4 ldr r0, [r4] bl MOD81_022381EC ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022399F2 _02239984: add r1, r4, #0 add r1, #0xc8 ldr r1, [r1] cmp r1, #0 bne _022399F2 mov r1, #0x59 lsl r1, r1, #2 add r1, r4, r1 bl MOD81_0223A104 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022399F2 _022399A0: ldr r0, [r4, #8] cmp r0, #0x28 bge _022399B6 add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x28 bne _022399B6 mov r0, #0x6b lsl r0, r0, #4 bl FUN_020054C8 _022399B6: mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD81_0223A64C cmp r0, #0 beq _022399F2 mov r0, #4 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 ldr r3, _022399F8 ; =0x00007FFF add r1, r0, #0 add r2, r0, #0 bl FUN_0200E1D0 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _022399F2 _022399E4: bl FUN_0200E308 cmp r0, #0 beq _022399F2 add sp, #0xc mov r0, #1 pop {r4, r5, pc} _022399F2: mov r0, #0 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _022399F8: .word 0x00007FFF thumb_func_end MOD81_0223992C thumb_func_start MOD81_022399FC MOD81_022399FC: ; 0x022399FC push {r3, r4, r5, lr} sub sp, #0x10 add r4, r0, #0 ldr r0, _02239C78 ; =0x0223D0EC bl FUN_0201E66C ldr r2, _02239C7C ; =0x04000304 ldr r0, _02239C80 ; =0xFFFF7FFF ldrh r1, [r2] and r0, r1 strh r0, [r2] ldr r0, _02239C84 ; =0x0223D084 bl FUN_02016BBC add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r2, _02239C88 ; =0x0223D0B4 mov r1, #2 mov r3, #1 bl FUN_02016C18 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r2, _02239C88 ; =0x0223D0B4 mov r1, #6 mov r3, #1 bl FUN_02016C18 bl OS_DisableInterrupts add r5, r0, #0 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r2, _02239C8C ; =0x0223D0D0 mov r1, #3 mov r3, #2 bl FUN_02016C18 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r2, _02239C8C ; =0x0223D0D0 mov r1, #7 mov r3, #2 bl FUN_02016C18 add r0, r5, #0 bl OS_RestoreInterrupts mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 mov r1, #2 ldr r2, [r2] mov r0, #0x5d add r3, r1, #0 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r1, #2 mov r3, #6 bl FUN_0200687C mov r1, #0 str r1, [sp] add r2, r4, #0 str r1, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r3, #2 bl FUN_020068C8 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r3, #6 bl FUN_020068C8 ldr r0, [r4] bl MOD81_02238828 add r5, r0, #0 mov r0, #0x20 str r0, [sp] mov r0, #0x3a mov r2, #0 str r0, [sp, #4] mov r0, #0x5d mov r1, #3 add r3, r2, #0 bl FUN_02006930 mov r0, #0x20 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0x5d mov r1, #3 mov r2, #4 mov r3, #0 bl FUN_02006930 ldr r0, _02239C90 ; =0x0223D07C lsl r1, r5, #1 ldrh r5, [r0, r1] mov r0, #0x20 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d mov r1, #3 mov r2, #0 add r3, r5, #0 bl FUN_02006948 mov r0, #0x20 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d mov r1, #3 mov r2, #4 add r3, r5, #0 bl FUN_02006948 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r1, #5 mov r3, #3 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r1, #5 mov r3, #7 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r1, #4 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, #0x3a add r2, r4, #0 str r0, [sp, #0xc] add r2, #0xc0 ldr r2, [r2] mov r0, #0x5d mov r1, #4 mov r3, #7 bl FUN_020068C8 mov r0, #0x3a mov r1, #0x60 bl FUN_02016998 add r5, r0, #0 beq _02239C02 mov r0, #0 add r1, r5, #0 mov r2, #0x60 bl MIi_CpuClear32 add r0, r5, #0 mov r1, #0x60 bl DC_FlushRange bl GX_BeginLoadBGExtPltt bl GXS_BeginLoadBGExtPltt mov r1, #6 add r0, r5, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GX_LoadBGExtPltt mov r1, #6 add r0, r5, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GXS_LoadBGExtPltt bl GX_EndLoadBGExtPltt bl GXS_EndLoadBGExtPltt add r0, r5, #0 bl FUN_02016A18 _02239C02: add r0, r4, #0 add r0, #0xc0 mov r3, #0xff ldr r0, [r0] mov r1, #6 mov r2, #3 mvn r3, r3 bl FUN_020179E0 mov r0, #7 mov r1, #0 bl FUN_0201797C mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C add r0, r4, #0 add r0, #0xc0 mov r1, #3 ldr r0, [r0] add r2, r1, #0 mov r3, #0 bl FUN_020179E0 add r0, r4, #0 add r0, #0xc8 mov r1, #1 bl MOD81_02238118 add r1, r4, #0 add r1, #0xc4 str r0, [r1] mov r0, #0x4a lsl r0, r0, #2 str r0, [sp] mov r0, #0 str r0, [sp, #4] add r0, r4, #0 add r0, #0xd0 str r0, [sp, #8] add r0, r4, #0 add r0, #0xc0 mov r1, #0x12 mov r2, #1 ldr r0, [r0] lsl r1, r1, #6 lsl r2, r2, #0xc mov r3, #1 bl MOD81_022384AC add r4, #0xcc str r0, [r4] add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _02239C78: .word 0x0223D0EC _02239C7C: .word 0x04000304 _02239C80: .word 0xFFFF7FFF _02239C84: .word 0x0223D084 _02239C88: .word 0x0223D0B4 _02239C8C: .word 0x0223D0D0 _02239C90: .word 0x0223D07C thumb_func_end MOD81_022399FC thumb_func_start MOD81_02239C94 MOD81_02239C94: ; 0x02239C94 push {r4, lr} add r4, r0, #0 add r0, #0xc8 ldr r0, [r0] cmp r0, #0 beq _02239CAA add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] bl MOD81_02238200 _02239CAA: add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] mov r1, #2 bl FUN_020178A0 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] mov r1, #6 bl FUN_020178A0 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] mov r1, #3 bl FUN_020178A0 add r4, #0xc0 ldr r0, [r4] mov r1, #7 bl FUN_020178A0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_02239C94 thumb_func_start MOD81_02239CDC MOD81_02239CDC: ; 0x02239CDC push {r4, lr} sub sp, #0x10 add r4, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _02239DBC ; =0x04000060 ldr r1, _02239DC0 ; =0xFFFFCFFD ldrh r2, [r0] and r2, r1 strh r2, [r0] ldrh r3, [r0] add r2, r1, #2 and r3, r2 mov r2, #0x10 orr r2, r3 strh r2, [r0] ldrh r3, [r0] ldr r2, _02239DC4 ; =0x0000CFFB and r2, r3 strh r2, [r0] add r2, r1, #2 ldrh r3, [r0] add r1, r1, #2 and r3, r2 mov r2, #8 orr r2, r3 strh r2, [r0] ldrh r2, [r0] and r2, r1 mov r1, #0x20 orr r1, r2 strh r1, [r0] ldr r0, _02239DC8 ; =0x0223D0A4 bl G3X_SetEdgeColorTable mov r1, #0 ldr r0, _02239DCC ; =0x000043FF ldr r2, _02239DD0 ; =0x00007FFF mov r3, #0x3f str r1, [sp] bl G3X_SetClearColor ldr r1, _02239DD4 ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _02239DD8 ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r1, _02239DDC ; =0x04000008 mov r0, #3 ldrh r2, [r1] bic r2, r0 strh r2, [r1] mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 add r1, r4, #0 add r1, #0xd4 str r0, [r1] mov r1, #0 ldr r0, _02239DE0 ; =0xFFFC8800 str r1, [sp] str r0, [sp, #4] str r1, [sp, #8] add r0, r4, #0 str r1, [sp, #0xc] add r0, #0xd4 ldr r0, [r0] mov r2, #0x5d mov r3, #0x1b bl MOD81_02238A84 add r1, r4, #0 add r1, #0xd8 str r0, [r1] ldr r1, _02239DE4 ; =0x0000EBE0 ldr r0, _02239DE8 ; =0x0223D444 strh r1, [r0, #4] mov r1, #0 strh r1, [r0, #6] strh r1, [r0, #8] add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] ldr r1, _02239DEC ; =0x0223D448 bl MOD81_02238C60 add r4, #0xd8 mov r1, #7 ldr r0, [r4] lsl r1, r1, #0xa bl MOD81_02238B84 add sp, #0x10 pop {r4, pc} .align 2, 0 _02239DBC: .word 0x04000060 _02239DC0: .word 0xFFFFCFFD _02239DC4: .word 0x0000CFFB _02239DC8: .word 0x0223D0A4 _02239DCC: .word 0x000043FF _02239DD0: .word 0x00007FFF _02239DD4: .word 0x04000540 _02239DD8: .word 0xBFFF0000 _02239DDC: .word 0x04000008 _02239DE0: .word 0xFFFC8800 _02239DE4: .word 0x0000EBE0 _02239DE8: .word 0x0223D444 _02239DEC: .word 0x0223D448 thumb_func_end MOD81_02239CDC thumb_func_start MOD81_02239DF0 MOD81_02239DF0: ; 0x02239DF0 push {r3, lr} add r0, #0xd4 ldr r0, [r0] cmp r0, #0 beq _02239DFE bl MOD81_0223890C _02239DFE: pop {r3, pc} thumb_func_end MOD81_02239DF0 thumb_func_start MOD81_02239E00 MOD81_02239E00: ; 0x02239E00 push {r4, r5, r6, r7, lr} sub sp, #0x74 add r7, r0, #0 add r0, #0xc mov r1, #0x5d mov r2, #0xb mov r3, #0xc bl MOD81_0223874C add r0, sp, #0x60 bl FUN_020B19DC add r0, sp, #0x3c bl FUN_020B1A24 mov r3, #0 str r3, [sp] mov r2, #1 str r2, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x3c str r0, [sp, #0x10] mov r0, #0x5d mov r1, #0xd bl FUN_02006AE4 mov r3, #0 str r3, [sp] mov r0, #2 str r0, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x3c str r0, [sp, #0x10] mov r0, #0x5d mov r1, #0xd mov r2, #1 bl FUN_02006AE4 mov r0, #0x3a str r0, [sp] add r0, sp, #0x60 str r0, [sp, #4] mov r0, #0x5d mov r1, #0xe mov r2, #1 mov r3, #0 bl FUN_02006A8C mov r0, #0x3a str r0, [sp] add r0, sp, #0x60 str r0, [sp, #4] mov r0, #0x5d mov r1, #0xe mov r2, #2 mov r3, #0 bl FUN_02006A8C mov r0, #1 add r1, r7, #0 str r0, [sp] add r0, sp, #0x18 add r1, #0xc add r2, sp, #0x3c add r3, sp, #0x60 bl MOD81_022387A8 ldr r0, _02239F18 ; =0x035947D1 bl FUN_0201BA1C mov r0, #0 str r0, [sp, #0x14] add r4, r7, #0 _02239E9A: bl FUN_0201BA60 mov r1, #0xe8 bl _u32_div_f add r6, r1, #0 add r6, #0xc bl FUN_0201BA60 mov r1, #0x71 lsl r1, r1, #2 bl _u32_div_f add r5, r1, #0 mov r0, #0 str r0, [sp] mov r0, #1 sub r5, #0x1c str r0, [sp, #4] ldr r0, [r7] add r1, sp, #0x18 add r2, r6, #0 add r3, r5, #0 bl MOD81_022387C8 str r0, [r4, #0x1c] mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] add r5, #0x38 ldr r0, [r7] add r1, sp, #0x18 add r2, r6, #0 add r3, r5, #0 bl MOD81_022387C8 str r0, [r4, #0x20] ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_02020130 ldr r0, [r4, #0x20] mov r1, #1 bl FUN_02020130 ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_020200A0 ldr r0, [r4, #0x20] mov r1, #0 bl FUN_020200A0 ldr r0, [sp, #0x14] add r4, #8 add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #0x14 blt _02239E9A add sp, #0x74 pop {r4, r5, r6, r7, pc} nop _02239F18: .word 0x035947D1 thumb_func_end MOD81_02239E00 thumb_func_start MOD81_02239F1C MOD81_02239F1C: ; 0x02239F1C push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _02239F24: ldr r0, [r5, #0x1c] cmp r0, #0 beq _02239F2E bl FUN_0201FFC8 _02239F2E: ldr r0, [r5, #0x20] cmp r0, #0 beq _02239F38 bl FUN_0201FFC8 _02239F38: add r4, r4, #1 add r5, #8 cmp r4, #0x14 blt _02239F24 add r6, #0xc add r0, r6, #0 bl MOD81_02238784 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD81_02239F1C thumb_func_start MOD81_02239F4C MOD81_02239F4C: ; 0x02239F4C mov r1, #0x5a mov r2, #1 lsl r1, r1, #2 str r2, [r0, r1] bx lr .align 2, 0 thumb_func_end MOD81_02239F4C thumb_func_start MOD81_02239F58 MOD81_02239F58: ; 0x02239F58 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x5a add r4, r1, #0 lsl r0, r0, #2 ldr r1, [r4, r0] cmp r1, #0 beq _02239FAC mov r1, #0 str r1, [r4, r0] add r0, r4, #0 add r0, #0xc0 mov r3, #0xff ldr r0, [r0] mov r1, #2 mov r2, #3 mvn r3, r3 bl FUN_020179E0 add r4, #0xc0 ldr r0, [r4] mov r1, #6 mov r2, #3 mov r3, #0 bl FUN_020179E0 mov r0, #3 mov r1, #0 bl FUN_0201797C mov r0, #7 mov r1, #1 bl FUN_0201797C ldr r2, _02239FB0 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] add r0, r5, #0 bl FUN_0200CAB4 _02239FAC: pop {r3, r4, r5, pc} nop _02239FB0: .word 0x04000304 thumb_func_end MOD81_02239F58 thumb_func_start MOD81_02239FB4 MOD81_02239FB4: ; 0x02239FB4 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r5, [r2, #4] add r0, r2, #0 str r1, [r0] mov r1, #0x52 mov r7, #0 lsl r1, r1, #2 str r7, [r0, r1] add r1, r1, #4 str r2, [sp] str r7, [r0, r1] add r4, r2, #0 add r6, r2, #0 _02239FD0: mov r0, #0 str r0, [r4, #8] ldr r0, [r5, #0x1c] bl FUN_0202011C add r2, r6, #0 add r3, r0, #0 ldmia r3!, {r0, r1} add r2, #0x58 stmia r2!, {r0, r1} ldr r0, [r3] add r7, r7, #1 str r0, [r2] add r4, r4, #4 add r5, #8 add r6, #0xc cmp r7, #0x14 blt _02239FD0 ldr r0, _0223A018 ; =MOD81_0223A01C ldr r1, [sp] mov r2, #0 bl FUN_0200CA44 ldr r1, [sp] ldr r1, [r1] str r0, [r1] ldr r0, [sp] ldr r0, [r0] ldr r0, [r0] cmp r0, #0 bne _0223A014 ldr r0, [sp] bl FUN_02016A18 _0223A014: pop {r3, r4, r5, r6, r7, pc} nop _0223A018: .word MOD81_0223A01C thumb_func_end MOD81_02239FB4 thumb_func_start MOD81_0223A01C MOD81_0223A01C: ; 0x0223A01C push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r1, #0 mov r1, #0x52 lsl r1, r1, #2 ldr r0, [r6, r1] add r0, r0, #1 str r0, [r6, r1] ldr r0, [r6, r1] cmp r0, #0xc ble _0223A050 mov r0, #0 str r0, [r6, r1] add r0, r1, #4 ldr r0, [r6, r0] cmp r0, #0x14 bge _0223A050 lsl r0, r0, #2 mov r2, #1 add r0, r6, r0 str r2, [r0, #8] add r0, r1, #4 ldr r0, [r6, r0] add r2, r0, #1 add r0, r1, #4 str r2, [r6, r0] _0223A050: mov r0, #0 add r7, r6, #0 str r0, [sp, #4] add r5, r6, #0 str r6, [sp] add r4, r0, #0 add r7, #0x58 _0223A05E: mov r1, #0x21 ldr r2, [r5, #0x5c] lsl r1, r1, #0xc add r2, r2, r1 mov r1, #0x6a add r0, r5, #0 lsl r1, r1, #0xe add r0, #0x5c str r2, [r5, #0x5c] cmp r2, r1 blt _0223A09E mov r1, #0x71 ldr r2, [r0] lsl r1, r1, #0xe sub r1, r2, r1 str r1, [r0] ldr r0, [sp] ldr r0, [r0, #8] cmp r0, #0 beq _0223A09E ldr r0, [r6, #4] mov r1, #1 add r0, r0, r4 ldr r0, [r0, #0x1c] bl FUN_020200A0 ldr r0, [r6, #4] mov r1, #1 add r0, r0, r4 ldr r0, [r0, #0x20] bl FUN_020200A0 _0223A09E: ldr r0, [r6, #4] add r1, r7, #0 add r0, r0, r4 ldr r0, [r0, #0x1c] bl FUN_02020044 add r2, r5, #0 add r2, #0x58 add r3, sp, #8 ldmia r2!, {r0, r1} mov ip, r3 stmia r3!, {r0, r1} ldr r0, [r2] str r0, [r3] mov r0, #0xe ldr r1, [sp, #0xc] lsl r0, r0, #0xe add r0, r1, r0 str r0, [sp, #0xc] ldr r0, [r6, #4] mov r1, ip add r0, r0, r4 ldr r0, [r0, #0x20] bl FUN_02020044 ldr r0, [sp] add r5, #0xc add r0, r0, #4 str r0, [sp] ldr r0, [sp, #4] add r4, #8 add r0, r0, #1 add r7, #0xc str r0, [sp, #4] cmp r0, #0x14 blt _0223A05E add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD81_0223A01C thumb_func_start MOD81_0223A0EC MOD81_0223A0EC: ; 0x0223A0EC push {r4, lr} add r4, r0, #0 beq _0223A102 bl FUN_0201B6C8 ldr r0, [r0] mov r1, #0 str r1, [r0] add r0, r4, #0 bl FUN_0200CAB4 _0223A102: pop {r4, pc} thumb_func_end MOD81_0223A0EC thumb_func_start MOD81_0223A104 MOD81_0223A104: ; 0x0223A104 push {r4, r5, r6, lr} add r5, r1, #0 mov r1, #0x17 add r6, r0, #0 mov r0, #0x3a lsl r1, r1, #4 bl FUN_02016998 add r4, r0, #0 beq _0223A170 str r6, [r4] add r6, #0xc0 mov r0, #0x55 ldr r1, [r6] lsl r0, r0, #2 str r1, [r4, r0] ldr r0, [r4, r0] mov r1, #2 bl FUN_02017B54 lsl r1, r0, #0xc mov r0, #0x56 lsl r0, r0, #2 str r1, [r4, r0] sub r0, r0, #4 ldr r0, [r4, r0] mov r1, #6 bl FUN_02017B54 mov r1, #0x57 lsl r0, r0, #0xc lsl r1, r1, #2 str r0, [r4, r1] mov r2, #0 add r0, r1, #4 str r2, [r4, r0] add r0, r1, #0 add r0, #8 str r2, [r4, r0] add r0, r1, #0 add r0, #0xc str r5, [r4, r0] add r1, #0x10 str r2, [r4, r1] ldr r0, _0223A174 ; =MOD81_0223A178 add r1, r4, #0 bl FUN_0200CA60 str r0, [r5] cmp r0, #0 bne _0223A170 add r0, r4, #0 bl FUN_02016A18 _0223A170: pop {r4, r5, r6, pc} nop _0223A174: .word MOD81_0223A178 thumb_func_end MOD81_0223A104 thumb_func_start MOD81_0223A178 MOD81_0223A178: ; 0x0223A178 push {r4, r5, r6, lr} mov r3, #0x59 add r4, r1, #0 lsl r3, r3, #2 mov r0, #2 ldr r1, [r4, r3] lsl r0, r0, #0x14 cmp r1, r0 bge _0223A1FA sub r0, r3, #4 ldr r1, [r4, r0] add r0, r3, #0 sub r0, #0x44 add r1, r1, r0 sub r0, r3, #4 str r1, [r4, r0] add r5, r3, #0 ldr r1, [r4, r3] ldr r0, [r4, r0] sub r5, #0xc add r0, r1, r0 str r0, [r4, r3] add r0, r3, #0 sub r0, #0x10 ldr r5, [r4, r5] ldr r3, [r4, r3] ldr r0, [r4, r0] sub r3, r5, r3 mov r1, #2 mov r2, #3 asr r3, r3, #0xc bl FUN_020179E0 mov r5, #0x55 lsl r5, r5, #2 add r3, r5, #0 ldr r0, [r4, r5] add r3, #8 add r5, #0x10 ldr r6, [r4, r3] ldr r3, [r4, r5] mov r1, #6 sub r3, r6, r3 mov r2, #3 asr r3, r3, #0xc bl FUN_020179E0 mov r1, #0x59 lsl r1, r1, #2 mov r0, #2 ldr r2, [r4, r1] lsl r0, r0, #0x12 cmp r2, r0 blt _0223A1FA add r0, r1, #0 add r0, #8 ldr r0, [r4, r0] cmp r0, #0 bne _0223A1FA add r1, #8 ldr r0, [r4] add r1, r4, r1 add r2, r4, #4 bl MOD81_02239FB4 _0223A1FA: pop {r4, r5, r6, pc} thumb_func_end MOD81_0223A178 thumb_func_start MOD81_0223A1FC MOD81_0223A1FC: ; 0x0223A1FC push {r3, r4, r5, lr} add r5, r0, #0 beq _0223A226 bl FUN_0201B6C8 add r4, r0, #0 mov r0, #0x5a lsl r0, r0, #2 ldr r1, [r4, r0] mov r2, #0 str r2, [r1] add r0, r0, #4 ldr r0, [r4, r0] bl MOD81_0223A0EC add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 _0223A226: pop {r3, r4, r5, pc} thumb_func_end MOD81_0223A1FC thumb_func_start MOD81_0223A228 MOD81_0223A228: ; 0x0223A228 push {r3, r4, r5, r6, r7, lr} str r0, [sp] add r5, r1, #0 mov r0, #0x3a mov r1, #0x14 add r7, r2, #0 add r6, r3, #0 bl FUN_02016998 add r4, r0, #0 beq _0223A268 lsl r0, r5, #0xc str r0, [r4] lsl r1, r7, #0xc str r1, [r4, #8] ldr r0, [r4] sub r0, r1, r0 add r1, r6, #0 bl _s32_div_f str r0, [r4, #4] ldr r0, [sp] str r6, [r4, #0xc] add r1, r5, #0 str r0, [r4, #0x10] bl MOD81_02238B5C ldr r0, _0223A26C ; =MOD81_0223A270 add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 _0223A268: pop {r3, r4, r5, r6, r7, pc} nop _0223A26C: .word MOD81_0223A270 thumb_func_end MOD81_0223A228 thumb_func_start MOD81_0223A270 MOD81_0223A270: ; 0x0223A270 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] sub r0, r0, #1 str r0, [r4, #0xc] cmp r0, #0 ble _0223A292 ldr r1, [r4] ldr r0, [r4, #4] add r1, r1, r0 str r1, [r4] ldr r0, [r4, #0x10] asr r1, r1, #0xc bl MOD81_02238B5C pop {r3, r4, r5, pc} _0223A292: ldr r1, [r4, #8] ldr r0, [r4, #0x10] asr r1, r1, #0xc bl MOD81_02238B5C add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223A270 thumb_func_start MOD81_0223A2AC MOD81_0223A2AC: ; 0x0223A2AC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r5, #0 add r4, #0xdc add r0, #0xd8 add r1, r4, #0 ldr r0, [r0] add r1, #8 bl MOD81_02238B08 add r0, r5, #0 add r0, #0xd8 add r1, r4, #0 ldr r0, [r0] add r1, #0x20 bl MOD81_02238B28 add r3, r4, #0 add r3, #8 add r2, r4, #0 ldmia r3!, {r0, r1} add r2, #0x14 stmia r2!, {r0, r1} ldr r0, [r3] str r0, [r2] add r0, r5, #0 add r0, #0xd4 ldr r0, [r0] str r0, [r4, #4] add r0, r5, #0 add r0, #0xd8 ldr r0, [r0] add r5, #0xdc str r0, [r5] ldr r0, [r4, #0xc] str r0, [r4, #0x28] ldr r1, [r4, #0xc] ldr r0, _0223A37C ; =0xFFFF8000 sub r0, r0, r1 mov r1, #0x1e bl _s32_div_f str r0, [r4, #0x2c] add r0, r4, #0 mov r2, #1 mov r1, #0x1e add r0, #0x80 str r1, [r0] mov r1, #0 str r1, [r4, #0x38] str r1, [r4, #0x3c] str r1, [r4, #0x40] add r0, r4, #0 str r1, [r4, #0x44] add r0, #0x54 strh r1, [r0] add r0, r4, #0 lsl r2, r2, #0xe add r0, #0x56 strh r2, [r0] add r0, r4, #0 add r0, #0x5a strh r1, [r0] str r1, [r4, #0x7c] add r2, r4, #0 add r0, r1, #0 _0223A330: add r3, r2, #0 add r3, #0x5c strh r0, [r3] add r3, r2, #0 add r3, #0x5e strh r0, [r3] add r3, r2, #0 add r3, #0x60 strh r0, [r3] add r3, r2, #0 add r3, #0x62 add r1, r1, #1 add r2, #8 strh r0, [r3] cmp r1, #3 blt _0223A330 mov r1, #0xd str r0, [r4, #0x78] add r0, r4, #0 lsl r1, r1, #8 mov r2, #0x1e bl MOD81_0223A384 mov r1, #0x29 mov r2, #5 add r0, r4, #0 lsl r1, r1, #0xc lsl r2, r2, #0xe mov r3, #0x1e bl MOD81_0223A3C0 ldr r0, _0223A380 ; =MOD81_0223A57C add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 pop {r3, r4, r5, pc} nop _0223A37C: .word 0xFFFF8000 _0223A380: .word MOD81_0223A57C thumb_func_end MOD81_0223A2AC thumb_func_start MOD81_0223A384 MOD81_0223A384: ; 0x0223A384 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 beq _0223A3B2 mov r0, #0x56 ldrsh r0, [r5, r0] add r1, r6, #0 sub r0, r4, r0 bl _s32_div_f add r1, r5, #0 add r1, #0x5a strh r0, [r1] mov r0, #0x56 ldrsh r1, [r5, r0] mov r0, #0x5a ldrsh r0, [r5, r0] add r1, r1, r0 add r0, r5, #0 add r0, #0x56 strh r1, [r0] b _0223A3B6 _0223A3B2: add r0, #0x56 strh r4, [r0] _0223A3B6: add r0, r5, #0 add r0, #0x58 strh r4, [r0] str r6, [r5, #0x74] pop {r4, r5, r6, pc} thumb_func_end MOD81_0223A384 thumb_func_start MOD81_0223A3C0 MOD81_0223A3C0: ; 0x0223A3C0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 beq _0223A3F8 ldr r0, [r5, #0x38] add r1, r7, #0 sub r0, r4, r0 bl _s32_div_f str r0, [r5, #0x40] ldr r0, [r5, #0x3c] add r1, r7, #0 sub r0, r6, r0 bl _s32_div_f str r0, [r5, #0x44] ldr r1, [r5, #0x38] ldr r0, [r5, #0x40] add r0, r1, r0 str r0, [r5, #0x38] ldr r1, [r5, #0x3c] ldr r0, [r5, #0x44] add r0, r1, r0 str r0, [r5, #0x3c] str r4, [r5, #0x48] str r6, [r5, #0x4c] _0223A3F8: str r7, [r5, #0x50] pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD81_0223A3C0 thumb_func_start MOD81_0223A3FC MOD81_0223A3FC: ; 0x0223A3FC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 beq _0223A422 lsl r0, r4, #3 str r0, [sp] add r1, r5, r0 mov r0, #0x5c ldrsh r0, [r1, r0] add r1, r7, #0 sub r0, r6, r0 bl _s32_div_f ldr r1, [sp] add r1, r5, r1 add r1, #0x5e strh r0, [r1] _0223A422: lsl r1, r4, #3 add r0, r5, r1 add r0, #0x60 strh r6, [r0] add r0, r5, r1 add r0, #0x62 strh r7, [r0] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD81_0223A3FC thumb_func_start MOD81_0223A434 MOD81_0223A434: ; 0x0223A434 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #0x74] cmp r0, #0 beq _0223A460 sub r0, r0, #1 str r0, [r5, #0x74] beq _0223A456 mov r0, #0x56 ldrsh r1, [r5, r0] mov r0, #0x5a ldrsh r0, [r5, r0] add r1, r1, r0 add r0, r5, #0 add r0, #0x56 strh r1, [r0] b _0223A460 _0223A456: mov r0, #0x58 ldrsh r1, [r5, r0] add r0, r5, #0 add r0, #0x56 strh r1, [r0] _0223A460: mov r0, #0x54 ldrsh r1, [r5, r0] mov r0, #0x56 ldrsh r0, [r5, r0] add r1, r1, r0 add r0, r5, #0 add r0, #0x54 strh r1, [r0] add r0, r5, #0 add r0, #0x54 ldrh r0, [r0] mov r1, #0xb6 bl _s32_div_f add r4, r0, #0 mov r0, #0x5a lsl r0, r0, #2 cmp r4, r0 blt _0223A488 sub r4, r4, r0 _0223A488: ldr r0, [r5, #0x50] cmp r0, #0 beq _0223A4AE ldr r1, [r5, #0x38] ldr r0, [r5, #0x40] add r0, r1, r0 str r0, [r5, #0x38] ldr r1, [r5, #0x3c] ldr r0, [r5, #0x44] add r0, r1, r0 str r0, [r5, #0x3c] ldr r0, [r5, #0x50] sub r0, r0, #1 str r0, [r5, #0x50] bne _0223A4AE ldr r0, [r5, #0x48] str r0, [r5, #0x38] ldr r0, [r5, #0x4c] str r0, [r5, #0x3c] _0223A4AE: add r0, r4, #0 add r0, #0x5a lsl r1, r0, #2 ldr r0, _0223A578 ; =0x020EDF50 ldr r2, [r5, #0x38] ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r3, #2 mov r6, #0 lsl r3, r3, #0xa add r3, r0, r3 adc r1, r6 lsl r0, r1, #0x14 lsr r1, r3, #0xc ldr r2, [r5, #8] orr r1, r0 add r0, r2, r1 str r0, [r5, #0x14] ldr r2, [r5, #0x3c] ldr r0, _0223A578 ; =0x020EDF50 lsl r1, r4, #2 ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r4, #2 add r3, r6, #0 lsl r4, r4, #0xa add r4, r0, r4 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r4, #0xc ldr r2, [r5, #0x10] orr r1, r0 add r0, r2, r1 str r0, [r5, #0x1c] mov r0, #0x22 ldrsh r1, [r5, r0] mov r0, #0x56 ldrsh r0, [r5, r0] mov r2, #0x5e mov r6, #0x60 add r0, r1, r0 strh r0, [r5, #0x22] add r0, r5, #0 mov r1, #0x5c _0223A512: add r4, r0, #0 add r4, #0x62 ldrh r4, [r4] cmp r4, #0 beq _0223A54A add r4, r0, #0 add r4, #0x62 ldrh r4, [r4] sub r7, r4, #1 add r4, r0, #0 add r4, #0x62 strh r7, [r4] add r4, r0, #0 add r4, #0x62 ldrh r4, [r4] cmp r4, #0 bne _0223A53E ldrsh r7, [r0, r6] add r4, r0, #0 add r4, #0x5c strh r7, [r4] b _0223A54A _0223A53E: ldrsh r7, [r0, r1] ldrsh r4, [r0, r2] add r7, r7, r4 add r4, r0, #0 add r4, #0x5c strh r7, [r4] _0223A54A: add r3, r3, #1 add r0, #8 cmp r3, #3 blt _0223A512 mov r0, #0x20 ldrsh r1, [r5, r0] mov r0, #0x5c ldrsh r0, [r5, r0] add r0, r1, r0 strh r0, [r5, #0x20] mov r0, #0x22 ldrsh r1, [r5, r0] mov r0, #0x64 ldrsh r0, [r5, r0] add r0, r1, r0 strh r0, [r5, #0x22] mov r0, #0x24 ldrsh r1, [r5, r0] mov r0, #0x6c ldrsh r0, [r5, r0] add r0, r1, r0 strh r0, [r5, #0x24] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0223A578: .word 0x020EDF50 thumb_func_end MOD81_0223A434 thumb_func_start MOD81_0223A57C MOD81_0223A57C: ; 0x0223A57C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 beq _0223A5DC ldr r1, [r4, #0x28] ldr r0, [r4, #0x2c] add r0, r1, r0 str r0, [r4, #0x28] str r0, [r4, #0x18] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 bgt _0223A5DC mov r1, #2 lsl r1, r1, #8 str r1, [r4, #0x30] mov r0, #0 lsl r1, r1, #5 str r0, [r4, #0x2c] add r0, r4, #0 add r2, r1, #0 mov r3, #0x3c bl MOD81_0223A3C0 ldr r2, _0223A5F8 ; =0xFFFFF800 add r0, r4, #0 mov r1, #0 mov r3, #0x1e bl MOD81_0223A3FC mov r0, #1 str r0, [r4, #0x7c] ldr r1, _0223A5FC ; =MOD81_0223A600 add r0, r5, #0 bl FUN_0201B6C4 _0223A5DC: add r0, r4, #0 bl MOD81_0223A434 add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 ldr r0, [r4] add r4, #0x20 add r1, r4, #0 bl MOD81_02238B40 pop {r3, r4, r5, pc} .align 2, 0 _0223A5F8: .word 0xFFFFF800 _0223A5FC: .word MOD81_0223A600 thumb_func_end MOD81_0223A57C thumb_func_start MOD81_0223A600 MOD81_0223A600: ; 0x0223A600 push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0x78] cmp r0, #0 bne _0223A64A ldr r1, [r4, #0x2c] ldr r0, [r4, #0x30] add r1, r1, r0 str r1, [r4, #0x2c] ldr r0, [r4, #0x28] add r0, r0, r1 str r0, [r4, #0x28] str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223A434 add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 add r1, r4, #0 ldr r0, [r4] add r1, #0x20 bl MOD81_02238B40 ldr r0, [r4] bl MOD81_02238B8C cmp r0, #0 bne _0223A64A ldr r0, [r4] mov r1, #0 bl MOD81_02238B58 mov r0, #1 str r0, [r4, #0x78] _0223A64A: pop {r4, pc} thumb_func_end MOD81_0223A600 thumb_func_start MOD81_0223A64C MOD81_0223A64C: ; 0x0223A64C push {r3, lr} bl FUN_0201B6C8 ldr r0, [r0, #0x78] pop {r3, pc} .align 2, 0 thumb_func_end MOD81_0223A64C thumb_func_start MOD81_0223A658 MOD81_0223A658: ; 0x0223A658 push {r3, lr} bl FUN_0201B6C8 ldr r0, [r0, #0x7c] pop {r3, pc} .align 2, 0 thumb_func_end MOD81_0223A658 thumb_func_start MOD81_0223A664 MOD81_0223A664: ; 0x0223A664 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 bl FUN_0201B6C8 add r4, r0, #0 mov r1, #0 str r1, [r4, #0x78] add r0, sp, #0 strh r1, [r0, #4] ldrh r1, [r0, #4] strh r1, [r0, #2] strh r1, [r0] ldr r0, [r4, #4] mov r1, #1 bl MOD81_02238C80 ldr r0, [r4, #4] add r1, sp, #0 bl MOD81_02238C60 ldr r1, _0223A6EC ; =0x000058CC mov r0, #2 lsl r0, r0, #0x12 str r1, [r4, #0x2c] sub r0, r1, r0 str r0, [r4, #0x28] add r0, r4, #0 mov r1, #0 mov r3, #0x14 add r0, #0x80 str r3, [r0] ldr r0, [r4, #0x28] add r2, r1, #0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223A3C0 mov r2, #0x56 ldrsh r2, [r4, r2] add r0, r4, #0 mov r1, #1 neg r2, r2 mov r3, #0x1e bl MOD81_0223A3FC mov r1, #2 add r2, r1, #0 add r0, r4, #0 add r2, #0xfe mov r3, #0x32 bl MOD81_0223A3FC mov r1, #2 ldr r0, [r4] lsl r1, r1, #0xc bl MOD81_02238B84 ldr r0, [r4] mov r1, #1 bl MOD81_02238B58 ldr r1, _0223A6F0 ; =MOD81_0223A6F4 add r0, r5, #0 bl FUN_0201B6C4 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _0223A6EC: .word 0x000058CC _0223A6F0: .word MOD81_0223A6F4 thumb_func_end MOD81_0223A664 thumb_func_start MOD81_0223A6F4 MOD81_0223A6F4: ; 0x0223A6F4 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD81_0223A434 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 beq _0223A734 ldr r1, [r4, #0x28] ldr r0, [r4, #0x2c] add r0, r1, r0 str r0, [r4, #0x28] str r0, [r4, #0x18] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 bne _0223A734 ldr r1, _0223A74C ; =MOD81_0223A750 add r0, r5, #0 bl FUN_0201B6C4 _0223A734: add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 ldr r0, [r4] add r4, #0x20 add r1, r4, #0 bl MOD81_02238B40 pop {r3, r4, r5, pc} nop _0223A74C: .word MOD81_0223A750 thumb_func_end MOD81_0223A6F4 thumb_func_start MOD81_0223A750 MOD81_0223A750: ; 0x0223A750 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD81_0223A434 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0x6e ble _0223A792 ldr r1, [r4, #0x28] ldr r0, _0223A7A8 ; =0xFFFC5800 sub r0, r0, r1 mov r1, #0x35 bl _s32_div_f str r0, [r4, #0x2c] add r0, r4, #0 mov r1, #0x35 add r0, #0x80 str r1, [r0] ldr r1, _0223A7AC ; =MOD81_0223A7B0 add r0, r5, #0 bl FUN_0201B6C4 _0223A792: add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 ldr r0, [r4] add r4, #0x20 add r1, r4, #0 bl MOD81_02238B40 pop {r3, r4, r5, pc} .align 2, 0 _0223A7A8: .word 0xFFFC5800 _0223A7AC: .word MOD81_0223A7B0 thumb_func_end MOD81_0223A750 thumb_func_start MOD81_0223A7B0 MOD81_0223A7B0: ; 0x0223A7B0 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD81_0223A434 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 beq _0223A7F0 ldr r1, [r4, #0x28] ldr r0, [r4, #0x2c] add r0, r1, r0 str r0, [r4, #0x28] str r0, [r4, #0x18] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #0 bne _0223A7F0 ldr r1, _0223A808 ; =MOD81_0223A80C add r0, r5, #0 bl FUN_0201B6C4 _0223A7F0: add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 ldr r0, [r4] add r4, #0x20 add r1, r4, #0 bl MOD81_02238B40 pop {r3, r4, r5, pc} nop _0223A808: .word MOD81_0223A80C thumb_func_end MOD81_0223A7B0 thumb_func_start MOD81_0223A80C MOD81_0223A80C: ; 0x0223A80C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD81_0223A434 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] cmp r0, #1 ble _0223A83E mov r0, #2 lsl r0, r0, #0x10 str r0, [r4, #0x2c] ldr r1, _0223A854 ; =MOD81_0223A858 add r0, r5, #0 bl FUN_0201B6C4 _0223A83E: add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 ldr r0, [r4] add r4, #0x20 add r1, r4, #0 bl MOD81_02238B40 pop {r3, r4, r5, pc} .align 2, 0 _0223A854: .word MOD81_0223A858 thumb_func_end MOD81_0223A80C thumb_func_start MOD81_0223A858 MOD81_0223A858: ; 0x0223A858 push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0x78] cmp r0, #0 bne _0223A894 add r0, r4, #0 bl MOD81_0223A434 ldr r1, [r4, #0x28] ldr r0, [r4, #0x2c] add r0, r1, r0 str r0, [r4, #0x28] str r0, [r4, #0x18] add r1, r4, #0 ldr r0, [r4] add r1, #0x14 bl MOD81_02238B18 add r1, r4, #0 ldr r0, [r4] add r1, #0x20 bl MOD81_02238B40 ldr r0, [r4] bl MOD81_02238B8C cmp r0, #0 bne _0223A894 mov r0, #1 str r0, [r4, #0x78] _0223A894: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223A858 thumb_func_start MOD81_0223A898 MOD81_0223A898: ; 0x0223A898 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0xa4 bl FUN_02016998 add r4, r0, #0 beq _0223A8C2 str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0x24] mov r0, #0 str r0, [r4, #0x28] add r0, r4, #0 add r0, #0x34 bl MOD81_0223AD80 _0223A8C2: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223A898 thumb_func_start MOD81_0223A8C8 MOD81_0223A8C8: ; 0x0223A8C8 push {r4, lr} add r4, r0, #0 beq _0223A8F6 mov r0, #0 add r1, r0, #0 bl FUN_02015F10 add r0, r4, #0 bl MOD81_0223ABC0 add r0, r4, #0 bl MOD81_0223ACD8 add r0, r4, #0 bl MOD81_0223AD68 add r0, r4, #0 add r0, #0x34 bl MOD81_0223AD88 add r0, r4, #0 bl FUN_02016A18 _0223A8F6: pop {r4, pc} thumb_func_end MOD81_0223A8C8 thumb_func_start MOD81_0223A8F8 MOD81_0223A8F8: ; 0x0223A8F8 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #2 bhs _0223A926 lsl r3, r2, #2 ldr r2, _0223A92C ; =0x0223D114 add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _0223A91C ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _0223A91C: add r0, r5, #0 bl MOD81_0223A930 mov r0, #0 pop {r3, r4, r5, pc} _0223A926: mov r0, #1 pop {r3, r4, r5, pc} nop _0223A92C: .word 0x0223D114 thumb_func_end MOD81_0223A8F8 thumb_func_start MOD81_0223A930 MOD81_0223A930: ; 0x0223A930 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x28] cmp r0, #0 beq _0223A94C bl G3X_ResetMtxStack ldr r0, [r4, #0x28] bl MOD81_02238940 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 _0223A94C: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223A930 thumb_func_start MOD81_0223A950 MOD81_0223A950: ; 0x0223A950 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 bl MOD81_0223AA68 add r0, r4, #0 bl MOD81_0223ABD8 add r0, r4, #0 bl MOD81_0223ACE8 mov r2, #0 ldr r0, _0223A990 ; =MOD81_0223B090 add r1, r4, #0 str r2, [r4, #0xc] bl FUN_0200CA98 mov r0, #3 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] ldr r3, _0223A994 ; =0x00007FFF mov r0, #0 add r2, r1, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0xc pop {r3, r4, pc} nop _0223A990: .word MOD81_0223B090 _0223A994: .word 0x00007FFF thumb_func_end MOD81_0223A950 thumb_func_start MOD81_0223A998 MOD81_0223A998: ; 0x0223A998 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] cmp r0, #4 bhi _0223AA54 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0223A9B2: ; jump table .short _0223A9BC - _0223A9B2 - 2 ; case 0 .short _0223A9C8 - _0223A9B2 - 2 ; case 1 .short _0223A9F2 - _0223A9B2 - 2 ; case 2 .short _0223AA1C - _0223A9B2 - 2 ; case 3 .short _0223AA46 - _0223A9B2 - 2 ; case 4 _0223A9BC: mov r0, #0 str r0, [r5, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223AA54 _0223A9C8: ldr r0, [r5, #8] add r0, r0, #1 str r0, [r5, #8] cmp r0, #0xa ble _0223AA54 ldr r0, _0223AA5C ; =0x000006AC bl FUN_020054C8 add r1, r5, #0 add r0, r5, #0 add r1, #0x34 bl MOD81_0223AD9C ldr r0, [r5, #0x2c] mov r1, #1 bl MOD81_02238B58 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223AA54 _0223A9F2: add r0, r5, #0 add r0, #0x34 bl MOD81_0223AE48 cmp r0, #0 beq _0223AA54 ldr r0, _0223AA60 ; =0x000006AD bl FUN_020054C8 ldr r0, [r5, #0x20] mov r1, #3 bl FUN_02020130 ldr r0, [r5, #0x20] mov r1, #1 bl FUN_020200A0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223AA54 _0223AA1C: ldr r0, [r5, #0x20] bl FUN_02020388 cmp r0, #0 bne _0223AA54 mov r0, #0x10 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 ldr r3, _0223AA64 ; =0x00007FFF add r1, r0, #0 add r2, r0, #0 bl FUN_0200E1D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223AA54 _0223AA46: bl FUN_0200E308 cmp r0, #0 beq _0223AA54 add sp, #0xc mov r0, #1 pop {r4, r5, pc} _0223AA54: mov r0, #0 add sp, #0xc pop {r4, r5, pc} nop _0223AA5C: .word 0x000006AC _0223AA60: .word 0x000006AD _0223AA64: .word 0x00007FFF thumb_func_end MOD81_0223A998 thumb_func_start MOD81_0223AA68 MOD81_0223AA68: ; 0x0223AA68 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, _0223ABAC ; =0x0223D158 bl FUN_0201E66C ldr r2, _0223ABB0 ; =0x04000304 ldr r0, _0223ABB4 ; =0xFFFF7FFF ldrh r1, [r2] and r0, r1 strh r0, [r2] ldr r0, _0223ABB8 ; =0x0223D11C bl FUN_02016BBC ldr r0, [r4, #0x24] ldr r2, _0223ABBC ; =0x0223D13C mov r1, #3 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0x24] ldr r2, _0223ABBC ; =0x0223D13C mov r1, #7 mov r3, #0 bl FUN_02016C18 ldr r0, [r4] bl MOD81_02238828 cmp r0, #3 bhi _0223AABA add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0223AAB2: ; jump table .short _0223AABA - _0223AAB2 - 2 ; case 0 .short _0223AAC6 - _0223AAB2 - 2 ; case 1 .short _0223AAD2 - _0223AAB2 - 2 ; case 2 .short _0223AADE - _0223AAB2 - 2 ; case 3 _0223AABA: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0 b _0223AAE8 _0223AAC6: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0x20 b _0223AAE8 _0223AAD2: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0x40 b _0223AAE8 _0223AADE: mov r0, #0x18 str r0, [sp, #0x10] mov r7, #0x19 mov r6, #0x1a mov r5, #0 _0223AAE8: mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x24] mov r0, #0x5d add r1, r7, #0 mov r3, #3 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x24] mov r0, #0x5d add r1, r7, #0 mov r3, #7 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r1, [sp, #0x10] ldr r2, [r4, #0x24] mov r0, #0x5d 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, #0x3a str r0, [sp, #0xc] ldr r1, [sp, #0x10] ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #7 bl FUN_020068C8 mov r2, #0 str r2, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d add r1, r6, #0 add r3, r5, #0 bl FUN_02006948 mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d add r1, r6, #0 mov r2, #4 add r3, r5, #0 bl FUN_02006948 mov r1, #3 add r3, r1, #0 ldr r0, [r4, #0x24] add r2, r1, #0 add r3, #0xfd bl FUN_020179E0 ldr r0, [r4, #0x24] mov r1, #7 mov r2, #3 mov r3, #0 bl FUN_020179E0 mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _0223ABAC: .word 0x0223D158 _0223ABB0: .word 0x04000304 _0223ABB4: .word 0xFFFF7FFF _0223ABB8: .word 0x0223D11C _0223ABBC: .word 0x0223D13C thumb_func_end MOD81_0223AA68 thumb_func_start MOD81_0223ABC0 MOD81_0223ABC0: ; 0x0223ABC0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x24] mov r1, #3 bl FUN_020178A0 ldr r0, [r4, #0x24] mov r1, #7 bl FUN_020178A0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223ABC0 thumb_func_start MOD81_0223ABD8 MOD81_0223ABD8: ; 0x0223ABD8 push {r3, r4, lr} sub sp, #0x24 add r4, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _0223ACAC ; =0x04000060 ldr r1, _0223ACB0 ; =0xFFFFCFFD ldrh r2, [r0] and r2, r1 strh r2, [r0] ldrh r3, [r0] add r2, r1, #2 and r3, r2 mov r2, #0x10 orr r2, r3 strh r2, [r0] ldrh r3, [r0] ldr r2, _0223ACB4 ; =0x0000CFFB and r2, r3 strh r2, [r0] add r2, r1, #2 ldrh r3, [r0] add r1, r1, #2 and r3, r2 mov r2, #8 orr r2, r3 strh r2, [r0] ldrh r2, [r0] and r2, r1 mov r1, #0x20 orr r1, r2 strh r1, [r0] ldr r0, _0223ACB8 ; =0x0223D12C bl G3X_SetEdgeColorTable mov r1, #0 ldr r0, _0223ACBC ; =0x000043FF ldr r2, _0223ACC0 ; =0x00007FFF mov r3, #0x3f str r1, [sp] bl G3X_SetClearColor ldr r1, _0223ACC4 ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _0223ACC8 ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r1, _0223ACCC ; =0x04000008 mov r0, #3 ldrh r2, [r1] bic r2, r0 strh r2, [r1] mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 str r0, [r4, #0x28] mov r1, #0 str r1, [sp] str r1, [sp, #4] str r1, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0x28] mov r2, #0x5d mov r3, #0x1b bl MOD81_02238A84 ldr r1, _0223ACD0 ; =0x000018E3 str r0, [r4, #0x2c] add r0, sp, #0x10 strh r1, [r0] mov r1, #0 strh r1, [r0, #2] strh r1, [r0, #4] ldr r0, [r4, #0x28] add r1, sp, #0x10 bl MOD81_02238C60 ldr r0, [r4, #0x28] ldr r1, _0223ACD4 ; =0x000007D2 bl MOD81_02238C90 ldr r0, [r4, #0x28] add r1, sp, #0x18 bl MOD81_02238C40 add sp, #0x24 pop {r3, r4, pc} nop _0223ACAC: .word 0x04000060 _0223ACB0: .word 0xFFFFCFFD _0223ACB4: .word 0x0000CFFB _0223ACB8: .word 0x0223D12C _0223ACBC: .word 0x000043FF _0223ACC0: .word 0x00007FFF _0223ACC4: .word 0x04000540 _0223ACC8: .word 0xBFFF0000 _0223ACCC: .word 0x04000008 _0223ACD0: .word 0x000018E3 _0223ACD4: .word 0x000007D2 thumb_func_end MOD81_0223ABD8 thumb_func_start MOD81_0223ACD8 MOD81_0223ACD8: ; 0x0223ACD8 push {r3, lr} ldr r0, [r0, #0x28] cmp r0, #0 beq _0223ACE4 bl MOD81_0223890C _0223ACE4: pop {r3, pc} .align 2, 0 thumb_func_end MOD81_0223ACD8 thumb_func_start MOD81_0223ACE8 MOD81_0223ACE8: ; 0x0223ACE8 push {r4, lr} sub sp, #0x70 add r4, r0, #0 add r0, #0x10 mov r1, #0x5d mov r2, #7 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c bl FUN_020B19DC add r0, sp, #0x38 bl FUN_020B1A24 mov r3, #0 str r3, [sp] mov r2, #1 str r2, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x38 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 bl FUN_02006AE4 mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c str r0, [sp, #4] mov r0, #0x5d mov r1, #0xa mov r2, #1 mov r3, #0 bl FUN_02006A8C mov r0, #0 add r1, r4, #0 str r0, [sp] add r0, sp, #0x14 add r1, #0x10 add r2, sp, #0x38 add r3, sp, #0x5c bl MOD81_022387A8 mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x60 bl MOD81_022387C8 mov r1, #0 str r0, [r4, #0x20] bl FUN_020200A0 add sp, #0x70 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223ACE8 thumb_func_start MOD81_0223AD68 MOD81_0223AD68: ; 0x0223AD68 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 beq _0223AD76 bl FUN_0201FFC8 _0223AD76: add r4, #0x10 add r0, r4, #0 bl MOD81_02238784 pop {r4, pc} thumb_func_end MOD81_0223AD68 thumb_func_start MOD81_0223AD80 MOD81_0223AD80: ; 0x0223AD80 mov r1, #0 str r1, [r0, #4] bx lr .align 2, 0 thumb_func_end MOD81_0223AD80 thumb_func_start MOD81_0223AD88 MOD81_0223AD88: ; 0x0223AD88 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _0223AD9A bl FUN_0200CAB4 mov r0, #0 str r0, [r4, #4] _0223AD9A: pop {r4, pc} thumb_func_end MOD81_0223AD88 thumb_func_start MOD81_0223AD9C MOD81_0223AD9C: ; 0x0223AD9C push {r4, lr} add r4, r1, #0 str r0, [r4] ldr r1, [r0, #0x2c] ldr r2, _0223AE2C ; =0xFFFFD870 str r1, [r4, #0xc] ldr r0, [r0, #0x28] ldr r1, _0223AE30 ; =0xFFF50E00 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0x10] str r1, [r4, #0x14] mov r1, #0xe2 lsl r1, r1, #0xc str r1, [r4, #0x18] add r1, r4, #0 add r1, #0x6c strh r2, [r1] add r1, r4, #0 ldr r2, _0223AE34 ; =0xFFFFF550 add r1, #0x6e strh r2, [r1] ldr r1, _0223AE38 ; =0x000134C4 str r1, [r4, #0x3c] ldr r1, _0223AE3C ; =0xFFFF4D56 str r1, [r4, #0x40] str r0, [r4, #0x60] str r0, [r4, #0x64] mov r1, #2 str r0, [r4, #0x68] lsl r1, r1, #0xc strh r1, [r4, #0x34] ldr r1, _0223AE40 ; =0xFFFFE000 strh r1, [r4, #0x36] strh r0, [r4, #0x38] add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x34 bl MOD81_02238B40 mov r0, #1 lsl r0, r0, #0xc str r0, [r4, #0x54] mov r0, #0x4a lsl r0, r0, #0xa str r0, [r4, #0x44] mov r0, #0x63 lsl r0, r0, #0xa str r0, [r4, #0x48] mov r0, #0 str r0, [r4, #0x5c] add r0, r4, #0 bl MOD81_0223AE90 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x34 bl MOD81_02238B28 ldr r0, _0223AE44 ; =MOD81_0223AF5C add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 str r0, [r4, #4] pop {r4, pc} nop _0223AE2C: .word 0xFFFFD870 _0223AE30: .word 0xFFF50E00 _0223AE34: .word 0xFFFFF550 _0223AE38: .word 0x000134C4 _0223AE3C: .word 0xFFFF4D56 _0223AE40: .word 0xFFFFE000 _0223AE44: .word MOD81_0223AF5C thumb_func_end MOD81_0223AD9C thumb_func_start MOD81_0223AE48 MOD81_0223AE48: ; 0x0223AE48 ldr r0, [r0, #4] cmp r0, #0 bne _0223AE52 mov r0, #1 bx lr _0223AE52: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD81_0223AE48 thumb_func_start MOD81_0223AE58 MOD81_0223AE58: ; 0x0223AE58 push {r3, r4, r5, r6, r7, lr} ldr r4, [sp, #0x18] add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 cmp r4, #0 beq _0223AE8E ldr r0, [r5, #0x44] sub r0, r1, r0 add r1, r4, #0 bl _s32_div_f str r0, [r5, #0x4c] ldr r0, [r5, #0x48] add r1, r4, #0 sub r0, r6, r0 bl _s32_div_f str r0, [r5, #0x50] ldr r0, [r5, #0x54] add r1, r4, #0 sub r0, r7, r0 bl _s32_div_f str r0, [r5, #0x58] ldr r0, [sp, #0x18] str r0, [r5, #0x5c] _0223AE8E: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD81_0223AE58 thumb_func_start MOD81_0223AE90 MOD81_0223AE90: ; 0x0223AE90 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0x6c ldrh r0, [r0] mov r1, #0xb6 bl _s32_div_f add r4, r0, #0 mov r0, #0x5a lsl r0, r0, #2 cmp r4, r0 blt _0223AEAA sub r4, r4, r0 _0223AEAA: mov r0, #0x6c ldrsh r1, [r5, r0] mov r0, #0x6e ldrsh r0, [r5, r0] add r1, r1, r0 add r0, r5, #0 add r0, #0x6c strh r1, [r0] ldr r0, [r5, #0x5c] cmp r0, #0 beq _0223AEE4 ldr r1, [r5, #0x44] ldr r0, [r5, #0x4c] add r0, r1, r0 str r0, [r5, #0x44] ldr r1, [r5, #0x48] ldr r0, [r5, #0x50] add r0, r1, r0 str r0, [r5, #0x48] ldr r1, [r5, #0x54] ldr r0, [r5, #0x58] add r1, r1, r0 str r1, [r5, #0x54] ldr r0, [r5, #0xc] bl MOD81_02238B84 ldr r0, [r5, #0x5c] sub r0, r0, #1 str r0, [r5, #0x5c] _0223AEE4: add r0, r4, #0 add r0, #0x5a lsl r1, r0, #2 ldr r0, _0223AF58 ; =0x020EDF50 ldr r2, [r5, #0x44] ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 str r1, [r5, #0x1c] ldr r2, [r5, #0x48] ldr r0, _0223AF58 ; =0x020EDF50 lsl r1, r4, #2 ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 str r1, [r5, #0x20] add r1, r5, #0 str r3, [r5, #0x24] mov r0, #0x34 ldrsh r2, [r5, r0] mov r0, #3 lsl r0, r0, #8 add r0, r2, r0 strh r0, [r5, #0x34] ldr r0, [r5, #0xc] add r1, #0x34 bl MOD81_02238B40 add r0, r5, #0 add r1, r5, #0 add r5, #0x28 add r0, #0x1c add r1, #0x10 add r2, r5, #0 bl VEC_Add pop {r3, r4, r5, pc} nop _0223AF58: .word 0x020EDF50 thumb_func_end MOD81_0223AE90 thumb_func_start MOD81_0223AF5C MOD81_0223AF5C: ; 0x0223AF5C push {r3, r4, lr} sub sp, #4 add r4, r1, #0 ldr r1, [r4, #0x68] cmp r1, #0x3c bge _0223AF6C add r1, r1, #1 str r1, [r4, #0x68] _0223AF6C: ldr r1, [r4, #0x60] cmp r1, #4 bls _0223AF74 b _0223B084 _0223AF74: add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0223AF80: ; jump table .short _0223AF8A - _0223AF80 - 2 ; case 0 .short _0223AFBE - _0223AF80 - 2 ; case 1 .short _0223AFFC - _0223AF80 - 2 ; case 2 .short _0223B042 - _0223AF80 - 2 ; case 3 .short _0223B072 - _0223AF80 - 2 ; case 4 _0223AF8A: ldr r1, [r4, #0x14] ldr r0, [r4, #0x3c] add r0, r1, r0 str r0, [r4, #0x14] ldr r1, [r4, #0x18] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223AE90 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 ldr r0, [r4, #0xc] bl MOD81_02238B8C cmp r0, #0 beq _0223B084 ldr r0, [r4, #0x60] add sp, #4 add r0, r0, #1 str r0, [r4, #0x60] pop {r3, r4, pc} _0223AFBE: ldr r0, [r4, #0xc] bl MOD81_02238B8C cmp r0, #0 bne _0223AFD8 ldr r0, [r4] bl MOD81_0223B088 ldr r0, [r4, #0x60] add sp, #4 add r0, r0, #1 str r0, [r4, #0x60] pop {r3, r4, pc} _0223AFD8: ldr r1, [r4, #0x14] ldr r0, [r4, #0x3c] add r0, r1, r0 str r0, [r4, #0x14] ldr r1, [r4, #0x18] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223AE90 ldr r0, [r4, #0xc] add r4, #0x28 add r1, r4, #0 bl MOD81_02238B18 add sp, #4 pop {r3, r4, pc} _0223AFFC: ldr r1, [r4, #0x14] ldr r0, [r4, #0x3c] add r0, r1, r0 str r0, [r4, #0x14] ldr r1, [r4, #0x18] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223AE90 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 ldr r0, [r4, #0x68] cmp r0, #0x3c blt _0223B084 mov r1, #2 lsl r1, r1, #0xa mov r0, #0xc str r0, [sp] add r0, r4, #0 add r2, r1, #0 lsr r3, r1, #2 bl MOD81_0223AE58 mov r0, #0 str r0, [r4, #0x64] ldr r0, [r4, #0x60] add sp, #4 add r0, r0, #1 str r0, [r4, #0x60] pop {r3, r4, pc} _0223B042: add r0, r4, #0 bl MOD81_0223AE90 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 ldr r0, [r4, #0x64] add r0, r0, #1 str r0, [r4, #0x64] cmp r0, #0xc blt _0223B084 ldr r0, [r4, #0xc] mov r1, #0 bl MOD81_02238B58 mov r0, #0 str r0, [r4, #0x64] ldr r0, [r4, #0x60] add sp, #4 add r0, r0, #1 str r0, [r4, #0x60] pop {r3, r4, pc} _0223B072: ldr r1, [r4, #0x64] add r1, r1, #1 str r1, [r4, #0x64] cmp r1, #8 ble _0223B084 mov r1, #0 str r1, [r4, #4] bl FUN_0200CAB4 _0223B084: add sp, #4 pop {r3, r4, pc} thumb_func_end MOD81_0223AF5C thumb_func_start MOD81_0223B088 MOD81_0223B088: ; 0x0223B088 mov r1, #1 str r1, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD81_0223B088 thumb_func_start MOD81_0223B090 MOD81_0223B090: ; 0x0223B090 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #0 beq _0223B0DC mov r3, #0 ldr r1, _0223B0E0 ; =0x00001150 str r3, [r4, #0xc] add r0, sp, #0 strh r1, [r0] strh r3, [r0, #2] strh r3, [r0, #4] mov r1, #3 ldr r0, [r4, #0x24] add r2, r1, #0 bl FUN_020179E0 mov r2, #3 add r3, r2, #0 ldr r0, [r4, #0x24] mov r1, #7 add r3, #0xfd bl FUN_020179E0 ldr r0, [r4, #0x28] add r1, sp, #0 bl MOD81_02238C70 ldr r2, _0223B0E4 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] add r0, r5, #0 bl FUN_0200CAB4 _0223B0DC: add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _0223B0E0: .word 0x00001150 _0223B0E4: .word 0x04000304 thumb_func_end MOD81_0223B090 thumb_func_start MOD81_0223B0E8 MOD81_0223B0E8: ; 0x0223B0E8 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0x24 bl FUN_02016998 add r4, r0, #0 beq _0223B106 str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0xc] _0223B106: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223B0E8 thumb_func_start MOD81_0223B10C MOD81_0223B10C: ; 0x0223B10C push {r4, lr} add r4, r0, #0 beq _0223B11C bl MOD81_0223B478 add r0, r4, #0 bl FUN_02016A18 _0223B11C: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223B10C thumb_func_start MOD81_0223B120 MOD81_0223B120: ; 0x0223B120 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #2 bhs _0223B148 lsl r3, r2, #2 ldr r2, _0223B14C ; =0x0223D180 add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _0223B144 ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _0223B144: mov r0, #0 pop {r3, r4, r5, pc} _0223B148: mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 _0223B14C: .word 0x0223D180 thumb_func_end MOD81_0223B120 thumb_func_start MOD81_0223B150 MOD81_0223B150: ; 0x0223B150 push {lr} sub sp, #0xc bl MOD81_0223B264 mov r0, #8 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] ldr r3, _0223B174 ; =0x00007FFF mov r0, #0 add r2, r1, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0xc pop {pc} .align 2, 0 _0223B174: .word 0x00007FFF thumb_func_end MOD81_0223B150 thumb_func_start MOD81_0223B178 MOD81_0223B178: ; 0x0223B178 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] cmp r0, #0 beq _0223B190 cmp r0, #1 beq _0223B1C2 cmp r0, #2 beq _0223B1EE b _0223B1FC _0223B190: bl FUN_0200E308 cmp r0, #0 beq _0223B1FC ldr r0, _0223B204 ; =0xFFE80000 mov r2, #0 str r0, [r5, #0x10] mov r0, #5 lsl r0, r0, #0x10 str r0, [r5, #0x14] ldr r0, _0223B208 ; =0x00005999 add r1, r5, #0 str r0, [r5, #0x18] ldr r0, _0223B20C ; =0xFFFFDDDE str r0, [r5, #0x1c] mov r0, #0x3c str r0, [r5, #8] ldr r0, _0223B210 ; =MOD81_0223B21C str r2, [r5, #0x20] bl FUN_0200CA60 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223B1FC _0223B1C2: ldr r0, [r5, #0x20] cmp r0, #0 beq _0223B1FC ldr r0, _0223B214 ; =0x000006A9 bl FUN_020054C8 mov r0, #0x10 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 ldr r3, _0223B218 ; =0x00007FFF add r1, r0, #0 add r2, r0, #0 bl FUN_0200E1D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223B1FC _0223B1EE: bl FUN_0200E308 cmp r0, #0 beq _0223B1FC add sp, #0xc mov r0, #1 pop {r4, r5, pc} _0223B1FC: mov r0, #0 add sp, #0xc pop {r4, r5, pc} nop _0223B204: .word 0xFFE80000 _0223B208: .word 0x00005999 _0223B20C: .word 0xFFFFDDDE _0223B210: .word MOD81_0223B21C _0223B214: .word 0x000006A9 _0223B218: .word 0x00007FFF thumb_func_end MOD81_0223B178 thumb_func_start MOD81_0223B21C MOD81_0223B21C: ; 0x0223B21C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _0223B24A sub r0, r0, #1 str r0, [r4, #8] ldr r1, [r4, #0x10] ldr r0, [r4, #0x18] add r0, r1, r0 str r0, [r4, #0x10] ldr r1, [r4, #0x14] ldr r0, [r4, #0x1c] add r2, r1, r0 str r2, [r4, #0x14] ldr r1, [r4, #0x10] ldr r0, [r4, #0xc] asr r1, r1, #0xc asr r2, r2, #0xc bl MOD81_0223B4B0 pop {r3, r4, r5, pc} _0223B24A: mov r1, #0x2f mvn r1, r1 ldr r0, [r4, #0xc] add r2, r1, #0 bl MOD81_0223B4B0 mov r0, #1 str r0, [r4, #0x20] add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223B21C thumb_func_start MOD81_0223B264 MOD81_0223B264: ; 0x0223B264 push {r4, lr} sub sp, #0x10 add r4, r0, #0 ldr r0, _0223B45C ; =0x0223D1EC bl FUN_0201E66C ldr r2, _0223B460 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] ldr r0, _0223B464 ; =0x0223D188 bl FUN_02016BBC ldr r0, [r4, #0xc] ldr r2, _0223B468 ; =0x0223D198 mov r1, #1 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223B468 ; =0x0223D198 mov r1, #5 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223B46C ; =0x0223D1B4 mov r1, #2 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223B470 ; =0x0223D1D0 mov r1, #3 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223B470 ; =0x0223D1D0 mov r1, #7 mov r3, #0 bl FUN_02016C18 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #0x13 mov r3, #3 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #0x13 mov r3, #7 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #0x12 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, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #0x12 mov r3, #7 bl FUN_020068C8 mov r0, #0x20 str r0, [sp] mov r0, #0x3a mov r2, #0 str r0, [sp, #4] mov r0, #0x5d mov r1, #0x14 add r3, r2, #0 bl FUN_02006930 mov r0, #0x20 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0x5d mov r1, #0x14 mov r2, #4 mov r3, #0 bl FUN_02006930 mov r0, #0xc8 str r0, [sp] mov r1, #1 ldr r0, [r4, #0xc] mov r2, #0 add r3, r1, #0 bl FUN_02017F48 mov r0, #0xc8 str r0, [sp] ldr r0, [r4, #0xc] mov r1, #5 mov r2, #0 mov r3, #1 bl FUN_02017F48 mov r0, #0xc8 str r0, [sp] ldr r0, [r4, #0xc] mov r1, #2 mov r2, #0 mov r3, #1 bl FUN_02017F48 mov r1, #0 str r1, [sp] ldr r0, [r4] mov r2, #1 mov r3, #0xe bl MOD81_022385D0 mov r1, #0 str r1, [sp] ldr r0, [r4] mov r2, #5 mov r3, #0xe bl MOD81_022385D0 mov r0, #0 str r0, [sp] ldr r0, [r4] mov r1, #1 mov r2, #2 mov r3, #0xf bl MOD81_022385D0 mov r3, #0 str r3, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x40 str r0, [sp, #8] str r3, [sp, #0xc] ldr r0, [r4, #0xc] mov r1, #1 mov r2, #0xc8 bl FUN_02018540 mov r3, #0 str r3, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x40 str r0, [sp, #8] str r3, [sp, #0xc] ldr r0, [r4, #0xc] mov r1, #5 mov r2, #0xc8 bl FUN_02018540 mov r3, #0 str r3, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x40 str r0, [sp, #8] str r3, [sp, #0xc] ldr r0, [r4, #0xc] mov r1, #2 mov r2, #0xc8 bl FUN_02018540 mov r0, #0x14 str r0, [sp] mov r1, #0 str r1, [sp, #4] ldr r0, [r4] mov r2, #1 mov r3, #0xe bl MOD81_022386BC mov r0, #0x14 str r0, [sp] mov r1, #0 str r1, [sp, #4] ldr r0, [r4] mov r2, #5 mov r3, #0xe bl MOD81_022386BC mov r2, #2 str r2, [sp] mov r0, #0 str r0, [sp, #4] ldr r0, [r4] mov r1, #1 mov r3, #0xf bl MOD81_022386BC ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02017CD0 ldr r0, [r4, #0xc] mov r1, #5 bl FUN_02017CD0 ldr r0, [r4, #0xc] mov r1, #2 bl FUN_02017CD0 ldr r0, [r4, #0xc] ldr r2, _0223B474 ; =0xFFFFFE80 mov r1, #0x50 bl MOD81_0223B4B0 mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C add sp, #0x10 pop {r4, pc} .align 2, 0 _0223B45C: .word 0x0223D1EC _0223B460: .word 0x04000304 _0223B464: .word 0x0223D188 _0223B468: .word 0x0223D198 _0223B46C: .word 0x0223D1B4 _0223B470: .word 0x0223D1D0 _0223B474: .word 0xFFFFFE80 thumb_func_end MOD81_0223B264 thumb_func_start MOD81_0223B478 MOD81_0223B478: ; 0x0223B478 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] mov r1, #3 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #7 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #2 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #6 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #5 bl FUN_020178A0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223B478 thumb_func_start MOD81_0223B4B0 MOD81_0223B4B0: ; 0x0223B4B0 push {r4, r5, r6, lr} ldr r3, _0223B4E4 ; =0x000001FF add r4, r1, #0 add r6, r2, #0 and r4, r3 add r5, r0, #0 mov r1, #2 mov r2, #3 and r3, r6 bl FUN_020179E0 add r0, r5, #0 mov r1, #1 mov r2, #3 add r3, r4, #0 bl FUN_020179E0 add r4, #0xc0 add r0, r5, #0 mov r1, #5 mov r2, #3 add r3, r4, #0 bl FUN_020179E0 pop {r4, r5, r6, pc} nop _0223B4E4: .word 0x000001FF thumb_func_end MOD81_0223B4B0 thumb_func_start MOD81_0223B4E8 MOD81_0223B4E8: ; 0x0223B4E8 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0xb0 bl FUN_02016998 add r4, r0, #0 beq _0223B51C str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0x24] mov r0, #0 str r0, [r4, #0x28] str r0, [r4, #0xc] add r0, r4, #0 add r0, #0x34 bl MOD81_0223B9A0 ldr r0, _0223B520 ; =MOD81_0223BCA8 add r1, r4, #0 bl FUN_02015F10 _0223B51C: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 _0223B520: .word MOD81_0223BCA8 thumb_func_end MOD81_0223B4E8 thumb_func_start MOD81_0223B524 MOD81_0223B524: ; 0x0223B524 push {r4, lr} add r4, r0, #0 beq _0223B552 mov r0, #0 add r1, r0, #0 bl FUN_02015F10 add r0, r4, #0 bl MOD81_0223B7D0 add r0, r4, #0 bl MOD81_0223B8F8 add r0, r4, #0 bl MOD81_0223B988 add r0, r4, #0 add r0, #0x34 bl MOD81_0223B9A8 add r0, r4, #0 bl FUN_02016A18 _0223B552: pop {r4, pc} thumb_func_end MOD81_0223B524 thumb_func_start MOD81_0223B554 MOD81_0223B554: ; 0x0223B554 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #2 bhs _0223B57C lsl r3, r2, #2 ldr r2, _0223B580 ; =0x0223D214 add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _0223B578 ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _0223B578: mov r0, #0 pop {r3, r4, r5, pc} _0223B57C: mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 _0223B580: .word 0x0223D214 thumb_func_end MOD81_0223B554 thumb_func_start MOD81_0223B584 MOD81_0223B584: ; 0x0223B584 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 bl MOD81_0223B670 add r0, r4, #0 bl MOD81_0223B7E8 add r0, r4, #0 bl MOD81_0223B908 mov r0, #8 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] ldr r3, _0223B5B8 ; =0x00007FFF mov r0, #0 add r2, r1, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0xc pop {r3, r4, pc} nop _0223B5B8: .word 0x00007FFF thumb_func_end MOD81_0223B584 thumb_func_start MOD81_0223B5BC MOD81_0223B5BC: ; 0x0223B5BC push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] cmp r0, #3 bhi _0223B662 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0223B5D6: ; jump table .short _0223B5DE - _0223B5D6 - 2 ; case 0 .short _0223B5FE - _0223B5D6 - 2 ; case 1 .short _0223B628 - _0223B5D6 - 2 ; case 2 .short _0223B654 - _0223B5D6 - 2 ; case 3 _0223B5DE: bl FUN_0200E308 cmp r0, #0 beq _0223B662 ldr r0, [r5, #0x20] mov r1, #3 bl FUN_02020130 ldr r0, [r5, #0x20] mov r1, #1 bl FUN_020200A0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223B662 _0223B5FE: ldr r0, [r5, #0x20] bl FUN_02020388 cmp r0, #0 bne _0223B662 ldr r0, _0223B668 ; =0x000006AB bl FUN_020054C8 add r1, r5, #0 add r0, r5, #0 add r1, #0x34 bl MOD81_0223B9BC ldr r0, [r5, #0x2c] mov r1, #1 bl MOD81_02238B58 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223B662 _0223B628: add r5, #0x34 add r0, r5, #0 bl MOD81_0223BA7C cmp r0, #0 beq _0223B662 mov r0, #0x10 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 ldr r3, _0223B66C ; =0x00007FFF add r1, r0, #0 add r2, r0, #0 bl FUN_0200E1D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223B662 _0223B654: bl FUN_0200E308 cmp r0, #0 beq _0223B662 add sp, #0xc mov r0, #1 pop {r4, r5, pc} _0223B662: mov r0, #0 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _0223B668: .word 0x000006AB _0223B66C: .word 0x00007FFF thumb_func_end MOD81_0223B5BC thumb_func_start MOD81_0223B670 MOD81_0223B670: ; 0x0223B670 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, _0223B7C0 ; =0x0223D258 bl FUN_0201E66C ldr r2, _0223B7C4 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] ldr r0, _0223B7C8 ; =0x0223D21C bl FUN_02016BBC ldr r0, [r4, #0x24] ldr r2, _0223B7CC ; =0x0223D23C mov r1, #3 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0x24] ldr r2, _0223B7CC ; =0x0223D23C mov r1, #7 mov r3, #0 bl FUN_02016C18 ldr r0, [r4] bl MOD81_02238828 cmp r0, #3 bhi _0223B6C2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0223B6BA: ; jump table .short _0223B6C2 - _0223B6BA - 2 ; case 0 .short _0223B6CE - _0223B6BA - 2 ; case 1 .short _0223B6DA - _0223B6BA - 2 ; case 2 .short _0223B6E6 - _0223B6BA - 2 ; case 3 _0223B6C2: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0 b _0223B6F0 _0223B6CE: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0x20 b _0223B6F0 _0223B6DA: mov r0, #0xf str r0, [sp, #0x10] mov r7, #0x10 mov r6, #0x11 mov r5, #0x40 b _0223B6F0 _0223B6E6: mov r0, #0x18 str r0, [sp, #0x10] mov r7, #0x19 mov r6, #0x1a mov r5, #0 _0223B6F0: mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x24] mov r0, #0x5d add r1, r7, #0 mov r3, #3 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x24] mov r0, #0x5d add r1, r7, #0 mov r3, #7 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r1, [sp, #0x10] ldr r2, [r4, #0x24] mov r0, #0x5d 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, #0x3a str r0, [sp, #0xc] ldr r1, [sp, #0x10] ldr r2, [r4, #0x24] mov r0, #0x5d mov r3, #7 bl FUN_020068C8 mov r2, #0 str r2, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d add r1, r6, #0 add r3, r5, #0 bl FUN_02006948 mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d add r1, r6, #0 mov r2, #4 add r3, r5, #0 bl FUN_02006948 mov r1, #3 ldr r0, [r4, #0x24] add r2, r1, #0 mov r3, #0 bl FUN_020179E0 mov r2, #3 add r3, r2, #0 ldr r0, [r4, #0x24] mov r1, #7 add r3, #0xfd bl FUN_020179E0 mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C bl FUN_02033E74 mov r0, #1 mov r1, #0x39 bl FUN_02033F04 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _0223B7C0: .word 0x0223D258 _0223B7C4: .word 0x04000304 _0223B7C8: .word 0x0223D21C _0223B7CC: .word 0x0223D23C thumb_func_end MOD81_0223B670 thumb_func_start MOD81_0223B7D0 MOD81_0223B7D0: ; 0x0223B7D0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x24] mov r1, #3 bl FUN_020178A0 ldr r0, [r4, #0x24] mov r1, #7 bl FUN_020178A0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223B7D0 thumb_func_start MOD81_0223B7E8 MOD81_0223B7E8: ; 0x0223B7E8 push {r3, r4, lr} sub sp, #0x24 add r4, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _0223B8C8 ; =0x04000060 ldr r1, _0223B8CC ; =0xFFFFCFFD ldrh r2, [r0] and r2, r1 strh r2, [r0] ldrh r3, [r0] add r2, r1, #2 and r3, r2 mov r2, #0x10 orr r2, r3 strh r2, [r0] ldrh r3, [r0] ldr r2, _0223B8D0 ; =0x0000CFFB and r2, r3 strh r2, [r0] add r2, r1, #2 ldrh r3, [r0] add r1, r1, #2 and r3, r2 mov r2, #8 orr r2, r3 strh r2, [r0] ldrh r2, [r0] and r2, r1 mov r1, #0x20 orr r1, r2 strh r1, [r0] ldr r0, _0223B8D4 ; =0x0223D22C bl G3X_SetEdgeColorTable mov r1, #0 ldr r0, _0223B8D8 ; =0x000043FF ldr r2, _0223B8DC ; =0x00007FFF mov r3, #0x3f str r1, [sp] bl G3X_SetClearColor ldr r1, _0223B8E0 ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _0223B8E4 ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r1, _0223B8E8 ; =0x04000008 mov r0, #3 ldrh r2, [r1] bic r2, r0 strh r2, [r1] mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 str r0, [r4, #0x28] mov r1, #0 str r1, [sp] str r1, [sp, #4] str r1, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0x28] mov r2, #0x5d mov r3, #0x1b bl MOD81_02238A84 ldr r1, _0223B8EC ; =0x000018E3 str r0, [r4, #0x2c] add r0, sp, #0x10 strh r1, [r0] mov r1, #0 strh r1, [r0, #2] strh r1, [r0, #4] ldr r0, [r4, #0x28] add r1, sp, #0x10 bl MOD81_02238C60 ldr r1, _0223B8F0 ; =0x00001150 add r0, sp, #0x10 strh r1, [r0] ldr r0, [r4, #0x28] add r1, sp, #0x10 bl MOD81_02238C70 ldr r0, [r4, #0x28] ldr r1, _0223B8F4 ; =0x000007D2 bl MOD81_02238C90 ldr r0, [r4, #0x28] add r1, sp, #0x18 bl MOD81_02238C40 add sp, #0x24 pop {r3, r4, pc} .align 2, 0 _0223B8C8: .word 0x04000060 _0223B8CC: .word 0xFFFFCFFD _0223B8D0: .word 0x0000CFFB _0223B8D4: .word 0x0223D22C _0223B8D8: .word 0x000043FF _0223B8DC: .word 0x00007FFF _0223B8E0: .word 0x04000540 _0223B8E4: .word 0xBFFF0000 _0223B8E8: .word 0x04000008 _0223B8EC: .word 0x000018E3 _0223B8F0: .word 0x00001150 _0223B8F4: .word 0x000007D2 thumb_func_end MOD81_0223B7E8 thumb_func_start MOD81_0223B8F8 MOD81_0223B8F8: ; 0x0223B8F8 push {r3, lr} ldr r0, [r0, #0x28] cmp r0, #0 beq _0223B904 bl MOD81_0223890C _0223B904: pop {r3, pc} .align 2, 0 thumb_func_end MOD81_0223B8F8 thumb_func_start MOD81_0223B908 MOD81_0223B908: ; 0x0223B908 push {r4, lr} sub sp, #0x70 add r4, r0, #0 add r0, #0x10 mov r1, #0x5d mov r2, #7 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c bl FUN_020B19DC add r0, sp, #0x38 bl FUN_020B1A24 mov r3, #0 str r3, [sp] mov r2, #1 str r2, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x38 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 bl FUN_02006AE4 mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c str r0, [sp, #4] mov r0, #0x5d mov r1, #0xa mov r2, #1 mov r3, #0 bl FUN_02006A8C mov r0, #1 add r1, r4, #0 str r0, [sp] add r0, sp, #0x14 add r1, #0x10 add r2, sp, #0x38 add r3, sp, #0x5c bl MOD81_022387A8 mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x60 bl MOD81_022387C8 mov r1, #0 str r0, [r4, #0x20] bl FUN_020200A0 add sp, #0x70 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223B908 thumb_func_start MOD81_0223B988 MOD81_0223B988: ; 0x0223B988 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 beq _0223B996 bl FUN_0201FFC8 _0223B996: add r4, #0x10 add r0, r4, #0 bl MOD81_02238784 pop {r4, pc} thumb_func_end MOD81_0223B988 thumb_func_start MOD81_0223B9A0 MOD81_0223B9A0: ; 0x0223B9A0 mov r1, #0 str r1, [r0, #4] bx lr .align 2, 0 thumb_func_end MOD81_0223B9A0 thumb_func_start MOD81_0223B9A8 MOD81_0223B9A8: ; 0x0223B9A8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _0223B9BA bl FUN_0200CAB4 mov r0, #0 str r0, [r4, #4] _0223B9BA: pop {r4, pc} thumb_func_end MOD81_0223B9A8 thumb_func_start MOD81_0223B9BC MOD81_0223B9BC: ; 0x0223B9BC push {r3, r4, lr} sub sp, #4 add r4, r1, #0 str r0, [r4] ldr r1, [r0, #0x2c] ldr r2, _0223BA5C ; =0xFFFFD870 str r1, [r4, #0xc] ldr r0, [r0, #0x28] ldr r1, _0223BA60 ; =0x003D6C00 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0x10] str r1, [r4, #0x14] ldr r1, _0223BA64 ; =0xFFE44000 str r1, [r4, #0x18] add r1, r4, #0 add r1, #0x78 strh r2, [r1] add r1, r4, #0 ldr r2, _0223BA68 ; =0xFFFFF550 add r1, #0x7a strh r2, [r1] ldr r1, _0223BA6C ; =0xFFFEF2C6 str r1, [r4, #0x3c] ldr r1, _0223BA70 ; =0x0000936D str r1, [r4, #0x40] str r0, [r4, #0x6c] str r0, [r4, #0x70] mov r1, #2 str r0, [r4, #0x74] lsl r1, r1, #0xc strh r1, [r4, #0x34] ldr r1, _0223BA74 ; =0xFFFFE000 strh r1, [r4, #0x36] strh r0, [r4, #0x38] add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x34 bl MOD81_02238B40 mov r3, #2 lsl r3, r3, #8 mov r1, #0x4a mov r2, #0x63 str r3, [r4, #0x5c] lsl r0, r3, #2 str r0, [r4, #0x44] str r0, [r4, #0x48] mov r0, #0 str r0, [r4, #0x68] mov r0, #0xc str r0, [sp] add r0, r4, #0 lsl r1, r1, #0xa lsl r2, r2, #0xa lsl r3, r3, #3 bl MOD81_0223BA8C add r0, r4, #0 bl MOD81_0223BAD0 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x34 bl MOD81_02238B28 ldr r0, _0223BA78 ; =MOD81_0223BBC8 add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 str r0, [r4, #4] add sp, #4 pop {r3, r4, pc} nop _0223BA5C: .word 0xFFFFD870 _0223BA60: .word 0x003D6C00 _0223BA64: .word 0xFFE44000 _0223BA68: .word 0xFFFFF550 _0223BA6C: .word 0xFFFEF2C6 _0223BA70: .word 0x0000936D _0223BA74: .word 0xFFFFE000 _0223BA78: .word MOD81_0223BBC8 thumb_func_end MOD81_0223B9BC thumb_func_start MOD81_0223BA7C MOD81_0223BA7C: ; 0x0223BA7C ldr r0, [r0, #4] cmp r0, #0 bne _0223BA86 mov r0, #1 bx lr _0223BA86: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD81_0223BA7C thumb_func_start MOD81_0223BA8C MOD81_0223BA8C: ; 0x0223BA8C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [sp, #0x18] add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 str r0, [sp] cmp r0, #0 beq _0223BACC ldr r0, [r5, #0x44] ldr r1, [sp] sub r0, r4, r0 bl _s32_div_f str r0, [r5, #0x4c] ldr r0, [r5, #0x48] ldr r1, [sp] sub r0, r6, r0 bl _s32_div_f str r0, [r5, #0x50] ldr r0, [r5, #0x5c] ldr r1, [sp] sub r0, r7, r0 bl _s32_div_f str r0, [r5, #0x60] str r4, [r5, #0x54] str r6, [r5, #0x58] ldr r0, [sp, #0x18] str r7, [r5, #0x64] str r0, [r5, #0x68] _0223BACC: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD81_0223BA8C thumb_func_start MOD81_0223BAD0 MOD81_0223BAD0: ; 0x0223BAD0 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, _0223BBC0 ; =0x0223D3A0 ldr r0, [r0] cmp r0, #0 beq _0223BBAE add r0, r5, #0 add r0, #0x78 ldrh r0, [r0] mov r1, #0xb6 bl _s32_div_f add r4, r0, #0 mov r0, #0x5a lsl r0, r0, #2 cmp r4, r0 blt _0223BAF4 sub r4, r4, r0 _0223BAF4: mov r0, #0x78 ldrsh r1, [r5, r0] mov r0, #0x7a ldrsh r0, [r5, r0] sub r1, r1, r0 add r0, r5, #0 add r0, #0x78 strh r1, [r0] ldr r0, [r5, #0x68] cmp r0, #0 beq _0223BB3C sub r0, r0, #1 str r0, [r5, #0x68] beq _0223BB28 ldr r1, [r5, #0x44] ldr r0, [r5, #0x4c] add r0, r1, r0 str r0, [r5, #0x44] ldr r1, [r5, #0x48] ldr r0, [r5, #0x50] add r0, r1, r0 str r0, [r5, #0x48] ldr r1, [r5, #0x5c] ldr r0, [r5, #0x60] add r0, r1, r0 b _0223BB32 _0223BB28: ldr r0, [r5, #0x54] str r0, [r5, #0x44] ldr r0, [r5, #0x58] str r0, [r5, #0x48] ldr r0, [r5, #0x64] _0223BB32: str r0, [r5, #0x5c] ldr r0, [r5, #0xc] ldr r1, [r5, #0x5c] bl MOD81_02238B84 _0223BB3C: add r0, r4, #0 add r0, #0x5a lsl r1, r0, #2 ldr r0, _0223BBC4 ; =0x020EDF50 ldr r2, [r5, #0x44] ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 str r1, [r5, #0x1c] ldr r2, [r5, #0x48] ldr r0, _0223BBC4 ; =0x020EDF50 lsl r1, r4, #2 ldr r0, [r0, r1] asr r3, r2, #0x1f asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 str r1, [r5, #0x20] add r1, r5, #0 str r3, [r5, #0x24] mov r0, #0x34 ldrsh r2, [r5, r0] mov r0, #3 lsl r0, r0, #8 sub r0, r2, r0 strh r0, [r5, #0x34] ldr r0, [r5, #0xc] add r1, #0x34 bl MOD81_02238B40 add r0, r5, #0 add r1, r5, #0 add r5, #0x28 add r0, #0x1c add r1, #0x10 add r2, r5, #0 bl VEC_Add pop {r3, r4, r5, pc} _0223BBAE: add r2, r5, #0 add r2, #0x10 ldmia r2!, {r0, r1} add r5, #0x28 stmia r5!, {r0, r1} ldr r0, [r2] str r0, [r5] pop {r3, r4, r5, pc} nop _0223BBC0: .word 0x0223D3A0 _0223BBC4: .word 0x020EDF50 thumb_func_end MOD81_0223BAD0 thumb_func_start MOD81_0223BBC8 MOD81_0223BBC8: ; 0x0223BBC8 push {r4, lr} add r4, r1, #0 ldr r1, [r4, #0x74] cmp r1, #0x46 bge _0223BBD6 add r1, r1, #1 str r1, [r4, #0x74] _0223BBD6: ldr r1, [r4, #0x6c] cmp r1, #3 bhi _0223BC9C add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0223BBE8: ; jump table .short _0223BBF0 - _0223BBE8 - 2 ; case 0 .short _0223BC16 - _0223BBE8 - 2 ; case 1 .short _0223BC50 - _0223BBE8 - 2 ; case 2 .short _0223BC8A - _0223BBE8 - 2 ; case 3 _0223BBF0: add r0, r4, #0 bl MOD81_0223BAD0 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 ldr r0, [r4, #0x74] add r0, r0, #1 str r0, [r4, #0x74] cmp r0, #0xc blt _0223BC9C mov r0, #0 str r0, [r4, #0x74] ldr r0, [r4, #0x6c] add r0, r0, #1 str r0, [r4, #0x6c] pop {r4, pc} _0223BC16: ldr r0, [r4, #0xc] bl MOD81_02238B8C cmp r0, #0 bne _0223BC2E ldr r0, [r4] bl MOD81_0223BCA0 ldr r0, [r4, #0x6c] add r0, r0, #1 str r0, [r4, #0x6c] pop {r4, pc} _0223BC2E: ldr r1, [r4, #0x14] ldr r0, [r4, #0x3c] add r0, r1, r0 str r0, [r4, #0x14] ldr r1, [r4, #0x18] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223BAD0 ldr r0, [r4, #0xc] add r4, #0x28 add r1, r4, #0 bl MOD81_02238B18 pop {r4, pc} _0223BC50: ldr r1, [r4, #0x14] ldr r0, [r4, #0x3c] add r0, r1, r0 str r0, [r4, #0x14] ldr r1, [r4, #0x18] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x18] add r0, r4, #0 bl MOD81_0223BAD0 add r1, r4, #0 ldr r0, [r4, #0xc] add r1, #0x28 bl MOD81_02238B18 ldr r0, [r4, #0x74] cmp r0, #0x46 blt _0223BC9C ldr r0, [r4, #0xc] mov r1, #0 bl MOD81_02238B58 mov r0, #0 str r0, [r4, #0x70] ldr r0, [r4, #0x6c] add r0, r0, #1 str r0, [r4, #0x6c] pop {r4, pc} _0223BC8A: ldr r1, [r4, #0x70] add r1, r1, #1 str r1, [r4, #0x70] cmp r1, #8 ble _0223BC9C mov r1, #0 str r1, [r4, #4] bl FUN_0200CAB4 _0223BC9C: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223BBC8 thumb_func_start MOD81_0223BCA0 MOD81_0223BCA0: ; 0x0223BCA0 mov r1, #1 str r1, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD81_0223BCA0 thumb_func_start MOD81_0223BCA8 MOD81_0223BCA8: ; 0x0223BCA8 push {r4, lr} sub sp, #8 add r4, r0, #0 ldr r0, [r4, #0x28] cmp r0, #0 beq _0223BCC6 bl G3X_ResetMtxStack ldr r0, [r4, #0x28] bl MOD81_02238940 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 _0223BCC6: ldr r0, [r4, #0xc] cmp r0, #0 beq _0223BD08 ldr r1, _0223BD0C ; =0x0000EEB0 add r0, sp, #0 strh r1, [r0] mov r1, #0 strh r1, [r0, #2] strh r1, [r0, #4] mov r1, #3 add r3, r1, #0 ldr r0, [r4, #0x24] add r2, r1, #0 add r3, #0xfd bl FUN_020179E0 ldr r0, [r4, #0x24] mov r1, #7 mov r2, #3 mov r3, #0 bl FUN_020179E0 ldr r0, [r4, #0x28] add r1, sp, #0 bl MOD81_02238C70 ldr r2, _0223BD10 ; =0x04000304 ldr r0, _0223BD14 ; =0xFFFF7FFF ldrh r1, [r2] and r0, r1 strh r0, [r2] mov r0, #0 str r0, [r4, #0xc] _0223BD08: add sp, #8 pop {r4, pc} .align 2, 0 _0223BD0C: .word 0x0000EEB0 _0223BD10: .word 0x04000304 _0223BD14: .word 0xFFFF7FFF thumb_func_end MOD81_0223BCA8 thumb_func_start MOD81_0223BD18 MOD81_0223BD18: ; 0x0223BD18 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0x3c bl FUN_02016998 add r4, r0, #0 beq _0223BD46 str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0xc] mov r0, #0 str r0, [r4, #0x20] str r0, [r4, #0x10] str r0, [r4, #0x14] str r0, [r4, #0x18] str r0, [r4, #0x30] str r0, [r4, #0x34] str r0, [r4, #0x38] _0223BD46: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223BD18 thumb_func_start MOD81_0223BD4C MOD81_0223BD4C: ; 0x0223BD4C push {r4, lr} add r4, r0, #0 beq _0223BD80 bl MOD81_0223C1A8 add r0, r4, #0 bl MOD81_0223C2EC ldr r0, [r4, #0x30] cmp r0, #0 beq _0223BD66 bl MOD81_0223C460 _0223BD66: ldr r0, [r4, #0x34] cmp r0, #0 beq _0223BD70 bl MOD81_0223C3B0 _0223BD70: ldr r0, [r4, #0x38] cmp r0, #0 beq _0223BD7A bl MOD81_0223C514 _0223BD7A: add r0, r4, #0 bl FUN_02016A18 _0223BD80: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223BD4C thumb_func_start MOD81_0223BD84 MOD81_0223BD84: ; 0x0223BD84 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #3 bhs _0223BDB2 lsl r3, r2, #2 ldr r2, _0223BDB8 ; =0x0223D288 add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _0223BDA8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _0223BDA8: add r0, r5, #0 bl MOD81_0223BDBC mov r0, #0 pop {r3, r4, r5, pc} _0223BDB2: mov r0, #1 pop {r3, r4, r5, pc} nop _0223BDB8: .word 0x0223D288 thumb_func_end MOD81_0223BD84 thumb_func_start MOD81_0223BDBC MOD81_0223BDBC: ; 0x0223BDBC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 beq _0223BDEE mov r0, #0x2a ldrsh r1, [r4, r0] mov r0, #1 lsl r0, r0, #0xc add r0, r1, r0 strh r0, [r4, #0x2a] add r1, r4, #0 ldr r0, [r4, #0x24] add r1, #0x28 bl MOD81_02238B40 bl G3X_ResetMtxStack ldr r0, [r4, #0x20] bl MOD81_02238940 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 _0223BDEE: pop {r4, pc} thumb_func_end MOD81_0223BDBC thumb_func_start MOD81_0223BDF0 MOD81_0223BDF0: ; 0x0223BDF0 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 bl MOD81_0223BF74 add r0, r4, #0 bl MOD81_0223C1DC mov r0, #8 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] ldr r3, _0223BE1C ; =0x00007FFF mov r0, #0 add r2, r1, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0xc pop {r3, r4, pc} .align 2, 0 _0223BE1C: .word 0x00007FFF thumb_func_end MOD81_0223BDF0 thumb_func_start MOD81_0223BE20 MOD81_0223BE20: ; 0x0223BE20 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r5] add r4, r0, #0 cmp r1, #6 bhi _0223BEEA add r2, r1, r1 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0223BE38: ; jump table .short _0223BE46 - _0223BE38 - 2 ; case 0 .short _0223BE64 - _0223BE38 - 2 ; case 1 .short _0223BE7E - _0223BE38 - 2 ; case 2 .short _0223BE90 - _0223BE38 - 2 ; case 3 .short _0223BEA8 - _0223BE38 - 2 ; case 4 .short _0223BECC - _0223BE38 - 2 ; case 5 .short _0223BEE0 - _0223BE38 - 2 ; case 6 _0223BE46: bl FUN_0200E308 cmp r0, #0 beq _0223BEEA mov r0, #0 str r0, [r4, #8] add r0, r4, #0 add r4, #0x30 add r1, r4, #0 bl MOD81_0223C3CC ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223BEEA _0223BE64: ldr r1, [r4, #8] add r1, r1, #1 str r1, [r4, #8] cmp r1, #8 ble _0223BEEA add r4, #0x34 add r1, r4, #0 bl MOD81_0223C300 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223BEEA _0223BE7E: ldr r0, [r4, #0x34] cmp r0, #0 bne _0223BEEA ldr r0, [r4, #0x30] cmp r0, #0 bne _0223BEEA add r0, r1, #1 str r0, [r5] b _0223BEEA _0223BE90: mov r1, #0 add r0, #0x14 mvn r1, r1 bl MOD81_02238118 str r0, [r4, #0x10] mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223BEEA _0223BEA8: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x1e ble _0223BEEA add r0, r4, #0 add r0, #0x38 str r0, [sp] ldr r0, [r4, #0x24] mov r1, #0x1f mov r2, #0 mov r3, #0x28 bl MOD81_0223C47C ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223BEEA _0223BECC: ldr r0, [r4, #0x38] cmp r0, #0 bne _0223BEEA ldr r0, [r4, #0x10] bl MOD81_022381EC ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223BEEA _0223BEE0: ldr r0, [r4, #0x14] cmp r0, #0 bne _0223BEEA mov r0, #1 pop {r3, r4, r5, pc} _0223BEEA: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223BE20 thumb_func_start MOD81_0223BEF0 MOD81_0223BEF0: ; 0x0223BEF0 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] cmp r0, #0 beq _0223BF08 cmp r0, #1 beq _0223BF30 cmp r0, #2 beq _0223BF5A b _0223BF6E _0223BF08: mov r0, #0x4a lsl r0, r0, #2 mov r3, #1 str r0, [sp] add r0, r5, #0 str r3, [sp, #4] add r0, #0x1c str r0, [sp, #8] ldr r0, [r5, #0xc] lsl r1, r3, #0xc lsl r2, r3, #0xa bl MOD81_022384AC str r0, [r5, #0x18] mov r0, #0 str r0, [r5, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223BF6E _0223BF30: ldr r0, [r5, #8] add r0, r0, #1 str r0, [r5, #8] cmp r0, #0xd ble _0223BF6E mov r0, #8 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0 add r1, r0, #0 add r2, r0, #0 add r3, r0, #0 bl FUN_0200E1D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _0223BF6E _0223BF5A: bl FUN_0200E308 cmp r0, #0 beq _0223BF6E ldr r0, [r5, #0x1c] cmp r0, #0 beq _0223BF6E add sp, #0xc mov r0, #1 pop {r4, r5, pc} _0223BF6E: mov r0, #0 add sp, #0xc pop {r4, r5, pc} thumb_func_end MOD81_0223BEF0 thumb_func_start MOD81_0223BF74 MOD81_0223BF74: ; 0x0223BF74 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r0, #0 ldr r0, _0223C18C ; =0x0223D2EC bl FUN_0201E66C ldr r2, _0223C190 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] ldr r0, _0223C194 ; =0x0223D294 bl FUN_02016BBC ldr r0, [r4, #0xc] ldr r2, _0223C198 ; =0x0223D2B4 mov r1, #2 mov r3, #1 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223C198 ; =0x0223D2B4 mov r1, #6 mov r3, #1 bl FUN_02016C18 bl OS_DisableInterrupts add r5, r0, #0 ldr r0, [r4, #0xc] ldr r2, _0223C19C ; =0x0223D2D0 mov r1, #3 mov r3, #2 bl FUN_02016C18 ldr r0, [r4, #0xc] ldr r2, _0223C19C ; =0x0223D2D0 mov r1, #7 mov r3, #2 bl FUN_02016C18 add r0, r5, #0 bl OS_RestoreInterrupts mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] mov r1, #2 ldr r2, [r4, #0xc] mov r0, #0x5d add r3, r1, #0 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #2 mov r3, #6 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r1, #1 str r1, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r3, #2 bl FUN_020068C8 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r1, #1 str r1, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r3, #6 bl FUN_020068C8 ldr r0, [r4] bl MOD81_02238828 add r5, r0, #0 mov r0, #0x20 str r0, [sp] mov r0, #0x3a mov r2, #0 str r0, [sp, #4] mov r0, #0x5d mov r1, #3 add r3, r2, #0 bl FUN_02006930 mov r0, #0x20 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0x5d mov r1, #3 mov r2, #4 mov r3, #0 bl FUN_02006930 ldr r0, _0223C1A0 ; =0x0223D280 lsl r1, r5, #1 ldrh r5, [r0, r1] mov r0, #0x20 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d mov r1, #3 mov r2, #0 add r3, r5, #0 bl FUN_02006948 mov r0, #0x20 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #0x5d mov r1, #3 mov r2, #4 add r3, r5, #0 bl FUN_02006948 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #5 mov r3, #3 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #5 mov r3, #7 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #4 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, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0xc] mov r0, #0x5d mov r1, #4 mov r3, #7 bl FUN_020068C8 mov r0, #0x3a mov r1, #0x60 bl FUN_02016998 add r5, r0, #0 beq _0223C14A mov r0, #0 add r1, r5, #0 mov r2, #0x60 bl MIi_CpuClear32 add r0, r5, #0 mov r1, #0x60 bl DC_FlushRange bl GX_BeginLoadBGExtPltt bl GXS_BeginLoadBGExtPltt mov r1, #6 add r0, r5, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GX_LoadBGExtPltt mov r1, #6 add r0, r5, #0 lsl r1, r1, #0xc mov r2, #0x60 bl GXS_LoadBGExtPltt bl GX_EndLoadBGExtPltt bl GXS_EndLoadBGExtPltt add r0, r5, #0 bl FUN_02016A18 _0223C14A: ldr r0, [r4, #0xc] ldr r3, _0223C1A4 ; =0xFFFFFE80 mov r1, #2 mov r2, #3 bl FUN_020179E0 mov r2, #3 add r3, r2, #0 ldr r0, [r4, #0xc] mov r1, #6 sub r3, #0xc3 bl FUN_020179E0 mov r1, #3 ldr r0, [r4, #0xc] add r2, r1, #0 mov r3, #0x43 bl FUN_020179E0 mov r0, #7 mov r1, #0 bl FUN_0201797C mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _0223C18C: .word 0x0223D2EC _0223C190: .word 0x04000304 _0223C194: .word 0x0223D294 _0223C198: .word 0x0223D2B4 _0223C19C: .word 0x0223D2D0 _0223C1A0: .word 0x0223D280 _0223C1A4: .word 0xFFFFFE80 thumb_func_end MOD81_0223BF74 thumb_func_start MOD81_0223C1A8 MOD81_0223C1A8: ; 0x0223C1A8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x14] cmp r0, #0 beq _0223C1B8 ldr r0, [r4, #0x10] bl MOD81_02238200 _0223C1B8: ldr r0, [r4, #0xc] mov r1, #2 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #6 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #3 bl FUN_020178A0 ldr r0, [r4, #0xc] mov r1, #7 bl FUN_020178A0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223C1A8 thumb_func_start MOD81_0223C1DC MOD81_0223C1DC: ; 0x0223C1DC push {r4, lr} sub sp, #0x10 add r4, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _0223C2C0 ; =0x04000060 ldr r1, _0223C2C4 ; =0xFFFFCFFD ldrh r2, [r0] and r2, r1 strh r2, [r0] ldrh r3, [r0] add r2, r1, #2 and r3, r2 mov r2, #0x10 orr r2, r3 strh r2, [r0] ldrh r3, [r0] ldr r2, _0223C2C8 ; =0x0000CFFB and r2, r3 strh r2, [r0] add r2, r1, #2 ldrh r3, [r0] add r1, r1, #2 and r3, r2 mov r2, #8 orr r2, r3 strh r2, [r0] ldrh r2, [r0] and r2, r1 mov r1, #0x20 orr r1, r2 strh r1, [r0] ldr r0, _0223C2CC ; =0x0223D2A4 bl G3X_SetEdgeColorTable mov r1, #0 ldr r0, _0223C2D0 ; =0x000043FF ldr r2, _0223C2D4 ; =0x00007FFF mov r3, #0x3f str r1, [sp] bl G3X_SetClearColor ldr r1, _0223C2D8 ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _0223C2DC ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r1, _0223C2E0 ; =0x04000008 mov r0, #3 ldrh r2, [r1] bic r2, r0 strh r2, [r1] mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 str r0, [r4, #0x20] mov r1, #0 mov r0, #0x23 str r1, [sp] lsl r0, r0, #0xe str r0, [sp, #4] str r1, [sp, #8] mov r0, #1 str r0, [sp, #0xc] ldr r0, [r4, #0x20] mov r2, #0x5d mov r3, #0x1b bl MOD81_02238A84 str r0, [r4, #0x24] ldr r0, _0223C2E4 ; =0x0223D450 mov r1, #0 strh r1, [r0] strh r1, [r0, #2] strh r1, [r0, #4] ldr r0, [r4, #0x20] ldr r1, _0223C2E8 ; =0x0223D450 bl MOD81_02238C60 ldr r0, [r4, #0x20] mov r1, #1 bl MOD81_02238C80 mov r1, #2 ldr r0, [r4, #0x24] lsl r1, r1, #0xc bl MOD81_02238B84 ldr r0, [r4, #0x24] add r4, #0x28 add r1, r4, #0 bl MOD81_02238B28 add sp, #0x10 pop {r4, pc} nop _0223C2C0: .word 0x04000060 _0223C2C4: .word 0xFFFFCFFD _0223C2C8: .word 0x0000CFFB _0223C2CC: .word 0x0223D2A4 _0223C2D0: .word 0x000043FF _0223C2D4: .word 0x00007FFF _0223C2D8: .word 0x04000540 _0223C2DC: .word 0xBFFF0000 _0223C2E0: .word 0x04000008 _0223C2E4: .word 0x0223D450 _0223C2E8: .word 0x0223D450 thumb_func_end MOD81_0223C1DC thumb_func_start MOD81_0223C2EC MOD81_0223C2EC: ; 0x0223C2EC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 beq _0223C2FE bl MOD81_0223890C mov r0, #0 str r0, [r4, #0x20] _0223C2FE: pop {r4, pc} thumb_func_end MOD81_0223C2EC thumb_func_start MOD81_0223C300 MOD81_0223C300: ; 0x0223C300 push {r4, r5, r6, lr} add r6, r0, #0 add r5, r1, #0 mov r0, #0x3a mov r1, #0x24 bl FUN_02016998 add r4, r0, #0 beq _0223C340 str r6, [r4] ldr r0, [r6, #0xc] add r1, r4, #0 str r0, [r4, #4] ldr r0, _0223C344 ; =0xFFE80000 mov r2, #0 str r0, [r4, #0xc] asr r0, r0, #1 str r0, [r4, #0x10] ldr r0, _0223C348 ; =0x00009999 str r0, [r4, #0x14] mov r0, #0x28 str r0, [r4, #8] ldr r0, _0223C34C ; =MOD81_0223C350 str r5, [r4, #0x1c] bl FUN_0200CA60 str r0, [r5] cmp r0, #0 bne _0223C340 add r0, r4, #0 bl FUN_02016A18 _0223C340: pop {r4, r5, r6, pc} nop _0223C344: .word 0xFFE80000 _0223C348: .word 0x00009999 _0223C34C: .word MOD81_0223C350 thumb_func_end MOD81_0223C300 thumb_func_start MOD81_0223C350 MOD81_0223C350: ; 0x0223C350 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _0223C390 ldr r1, [r4, #0xc] ldr r0, [r4, #0x14] mov r2, #3 add r0, r1, r0 str r0, [r4, #0xc] ldr r1, [r4, #0x10] ldr r0, [r4, #0x14] add r0, r1, r0 str r0, [r4, #0x10] ldr r3, [r4, #0xc] ldr r0, [r4, #4] mov r1, #2 asr r3, r3, #0xc bl FUN_020179E0 ldr r3, [r4, #0x10] ldr r0, [r4, #4] mov r1, #6 mov r2, #3 asr r3, r3, #0xc bl FUN_020179E0 ldr r0, [r4, #8] sub r0, r0, #1 str r0, [r4, #8] pop {r3, r4, r5, pc} _0223C390: ldr r0, [r4, #4] mov r1, #2 mov r2, #3 mov r3, #0 bl FUN_020179E0 ldr r0, [r4, #4] mov r1, #6 mov r2, #3 mov r3, #0xc0 bl FUN_020179E0 add r0, r5, #0 bl MOD81_0223C3B0 pop {r3, r4, r5, pc} thumb_func_end MOD81_0223C350 thumb_func_start MOD81_0223C3B0 MOD81_0223C3B0: ; 0x0223C3B0 push {r4, lr} add r4, r0, #0 beq _0223C3CA bl FUN_0201B6C8 ldr r1, [r0, #0x1c] mov r2, #0 str r2, [r1] bl MOD81_02238898 add r0, r4, #0 bl FUN_0200CAB4 _0223C3CA: pop {r4, pc} thumb_func_end MOD81_0223C3B0 thumb_func_start MOD81_0223C3CC MOD81_0223C3CC: ; 0x0223C3CC push {r4, r5, r6, lr} add r6, r0, #0 add r5, r1, #0 mov r0, #0x3a mov r1, #0x1c bl FUN_02016998 add r4, r0, #0 beq _0223C418 str r5, [r4] ldr r0, [r6, #0x24] add r1, r4, #0 str r0, [r4, #8] add r1, #0xc bl MOD81_02238B08 mov r0, #0x32 ldr r1, [r4, #0x10] lsl r0, r0, #0xc sub r1, r0, r1 asr r0, r1, #3 lsr r0, r0, #0x1c add r0, r1, r0 asr r0, r0, #4 str r0, [r4, #0x18] mov r0, #0x10 str r0, [r4, #4] ldr r0, _0223C41C ; =MOD81_0223C420 add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 str r0, [r5] cmp r0, #0 bne _0223C418 add r0, r4, #0 bl FUN_02016A18 _0223C418: pop {r4, r5, r6, pc} nop _0223C41C: .word MOD81_0223C420 thumb_func_end MOD81_0223C3CC thumb_func_start MOD81_0223C420 MOD81_0223C420: ; 0x0223C420 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _0223C446 ldr r1, [r4, #0x10] ldr r0, [r4, #0x18] add r0, r1, r0 str r0, [r4, #0x10] add r1, r4, #0 ldr r0, [r4, #8] add r1, #0xc bl MOD81_02238B18 ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223C446: mov r0, #0x32 lsl r0, r0, #0xc str r0, [r4, #0x10] ldr r0, [r4, #8] add r4, #0xc add r1, r4, #0 bl MOD81_02238B18 add r0, r5, #0 bl MOD81_0223C460 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223C420 thumb_func_start MOD81_0223C460 MOD81_0223C460: ; 0x0223C460 push {r4, lr} add r4, r0, #0 beq _0223C47A bl FUN_0201B6C8 ldr r1, [r0] mov r2, #0 str r2, [r1] bl FUN_02016A18 add r0, r4, #0 bl FUN_0200CAB4 _0223C47A: pop {r4, pc} thumb_func_end MOD81_0223C460 thumb_func_start MOD81_0223C47C MOD81_0223C47C: ; 0x0223C47C push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r0, [sp] add r6, r1, #0 mov r0, #0x3a mov r1, #0x18 str r2, [sp, #4] add r7, r3, #0 ldr r5, [sp, #0x20] bl FUN_02016998 add r4, r0, #0 beq _0223C4D4 str r5, [r4] lsl r0, r6, #0xc str r0, [r4, #4] ldr r0, [sp, #4] lsl r1, r0, #0xc str r1, [r4, #0xc] ldr r0, [r4, #4] sub r0, r1, r0 add r1, r7, #0 bl _s32_div_f str r0, [r4, #8] ldr r0, [sp] str r7, [r4, #0x10] add r1, r6, #0 str r0, [r4, #0x14] bl MOD81_02238B5C ldr r0, _0223C4DC ; =MOD81_0223C4E0 add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 str r0, [r5] cmp r0, #0 bne _0223C4D8 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _0223C4D4: mov r0, #0 str r0, [r5] _0223C4D8: add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0223C4DC: .word MOD81_0223C4E0 thumb_func_end MOD81_0223C47C thumb_func_start MOD81_0223C4E0 MOD81_0223C4E0: ; 0x0223C4E0 push {r4, lr} add r4, r0, #0 ldr r0, [r1, #0x10] sub r0, r0, #1 str r0, [r1, #0x10] cmp r0, #0 ble _0223C500 ldr r2, [r1, #4] ldr r0, [r1, #8] add r2, r2, r0 str r2, [r1, #4] ldr r0, [r1, #0x14] asr r1, r2, #0xc bl MOD81_02238B5C pop {r4, pc} _0223C500: ldr r0, [r1, #0x14] ldr r1, [r1, #0xc] asr r1, r1, #0xc bl MOD81_02238B5C add r0, r4, #0 bl MOD81_0223C514 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223C4E0 thumb_func_start MOD81_0223C514 MOD81_0223C514: ; 0x0223C514 push {r4, lr} add r4, r0, #0 beq _0223C52E bl FUN_0201B6C8 ldr r1, [r0] mov r2, #0 str r2, [r1] bl FUN_02016A18 add r0, r4, #0 bl FUN_0200CAB4 _0223C52E: pop {r4, pc} thumb_func_end MOD81_0223C514 thumb_func_start MOD81_0223C530 MOD81_0223C530: ; 0x0223C530 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x3a mov r1, #0x70 bl FUN_02016998 add r4, r0, #0 beq _0223C57A str r5, [r4] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD81_0223880C str r0, [r4, #0x44] mov r0, #0x3a bl FUN_02006D98 str r0, [r4, #0x10] mov r0, #0 str r0, [r4, #0x14] mov r0, #0x4b lsl r0, r0, #2 mov r1, #0x3a bl FUN_020219F4 str r0, [r4, #0x58] mov r0, #0x4b lsl r0, r0, #2 mov r1, #0x3a bl FUN_020219F4 str r0, [r4, #0x5c] mov r0, #0 str r0, [r4, #0x68] str r0, [r4, #0x6c] str r0, [r4, #0x60] _0223C57A: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223C530 thumb_func_start MOD81_0223C580 MOD81_0223C580: ; 0x0223C580 push {r4, lr} add r4, r0, #0 beq _0223C5D2 bl MOD81_0223CD08 add r0, r4, #0 bl MOD81_0223CC84 ldr r0, [r4, #0x6c] bl MOD81_0223CDE0 ldr r0, [r4, #0x58] bl FUN_02021A20 ldr r0, [r4, #0x5c] bl FUN_02021A20 ldr r0, [r4, #0x60] cmp r0, #0 beq _0223C5AC bl MOD81_0223890C _0223C5AC: ldr r0, [r4, #0x44] mov r1, #1 bl FUN_020178A0 add r0, r4, #0 add r0, #0x48 bl FUN_02019178 ldr r0, [r4, #0x14] cmp r0, #0 beq _0223C5C6 bl FUN_02007534 _0223C5C6: ldr r0, [r4, #0x10] bl FUN_020072E8 add r0, r4, #0 bl FUN_02016A18 _0223C5D2: pop {r4, pc} thumb_func_end MOD81_0223C580 thumb_func_start MOD81_0223C5D4 MOD81_0223C5D4: ; 0x0223C5D4 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4] add r5, r0, #0 cmp r2, #4 bhs _0223C602 lsl r3, r2, #2 ldr r2, _0223C608 ; =0x0223D31C add r1, r5, #4 ldr r2, [r2, r3] blx r2 cmp r0, #0 beq _0223C5F8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r5, #4] _0223C5F8: add r0, r5, #0 bl MOD81_0223C60C mov r0, #0 pop {r3, r4, r5, pc} _0223C602: mov r0, #1 pop {r3, r4, r5, pc} nop _0223C608: .word 0x0223D31C thumb_func_end MOD81_0223C5D4 thumb_func_start MOD81_0223C60C MOD81_0223C60C: ; 0x0223C60C push {r3, r4, lr} sub sp, #4 add r4, r0, #0 bl G3X_ResetMtxStack mov r1, #0 mov r0, #0x11 add r2, r1, #0 bl FUN_020BB1C0 bl FUN_020BB394 bl FUN_020B02C8 ldr r0, [r4, #0x10] bl FUN_020081C4 ldr r0, [r4, #0x10] bl FUN_02006ED4 mov r2, #1 str r2, [sp] mov r0, #0x12 add r1, sp, #0 bl FUN_020BB1C0 ldr r0, [r4, #0x60] cmp r0, #0 beq _0223C64A bl MOD81_02238940 _0223C64A: mov r0, #0 add r1, r0, #0 bl FUN_020222B4 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD81_0223C60C thumb_func_start MOD81_0223C658 MOD81_0223C658: ; 0x0223C658 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 ldr r0, _0223C808 ; =0x0223D374 bl FUN_0201E66C ldr r2, _0223C80C ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb orr r0, r1 strh r0, [r2] ldr r0, _0223C810 ; =0x0223D32C bl FUN_02016BBC ldr r0, [r4, #0x44] ldr r2, _0223C814 ; =0x0223D33C mov r1, #1 mov r3, #0 bl FUN_02016C18 ldr r0, [r4, #0x44] ldr r2, _0223C818 ; =0x0223D358 mov r1, #2 mov r3, #0 bl FUN_02016C18 mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r2, _0223C81C ; =0x04000008 mov r0, #3 ldrh r3, [r2] mov r1, #1 bic r3, r0 add r0, r3, #0 orr r0, r1 strh r0, [r2] mov r2, #0 str r2, [sp] ldr r0, [r4, #0x44] add r3, r1, #0 bl FUN_02017F48 mov r2, #0 str r2, [sp] mov r0, #0x20 str r0, [sp, #4] str r0, [sp, #8] str r2, [sp, #0xc] ldr r0, [r4, #0x44] mov r1, #1 add r3, r2, #0 bl FUN_02018540 ldr r0, [r4] bl MOD81_02238844 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #0x3a str r0, [sp, #4] ldr r0, [r4, #0x44] mov r1, #1 mov r2, #0x6d mov r3, #2 bl FUN_0200CD68 mov r0, #0x13 str r0, [sp] mov r0, #0x1b str r0, [sp, #4] mov r0, #4 add r1, r4, #0 str r0, [sp, #8] mov r2, #1 str r2, [sp, #0xc] str r2, [sp, #0x10] ldr r0, [r4, #0x44] add r1, #0x48 mov r3, #2 bl FUN_02019064 add r0, r4, #0 add r0, #0x48 mov r1, #0xf bl FUN_02019620 mov r3, #0x20 str r3, [sp] mov r0, #0x3a str r0, [sp, #4] mov r0, #0xe mov r1, #7 mov r2, #0 bl FUN_02006930 ldr r0, [r4, #0x44] mov r1, #1 bl FUN_02017CD0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x44] mov r0, #0x5d mov r1, #0x16 mov r3, #2 bl FUN_0200687C mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] ldr r2, [r4, #0x44] mov r0, #0x5d mov r1, #0x15 mov r3, #2 bl FUN_020068C8 mov r0, #0x20 str r0, [sp] mov r0, #0x3a mov r2, #0 str r0, [sp, #4] mov r0, #0x5d mov r1, #0x17 add r3, r2, #0 bl FUN_02006930 add r0, r4, #0 bl MOD81_0223CAC4 mov r1, #0 mov r0, #1 add r2, r1, #0 add r3, r1, #0 bl MOD81_022388C0 str r0, [r4, #0x60] add r0, r4, #0 bl MOD81_0223CB90 mov r1, #6 mov r2, #1 str r0, [r4, #0x14] bl FUN_02007558 mov r1, #0 mov r0, #0x13 str r1, [sp] lsl r0, r0, #0xc str r0, [sp, #4] mov r0, #0x1e lsl r0, r0, #0xe str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0x60] mov r2, #0x5d mov r3, #0x1b bl MOD81_02238A84 ldr r2, _0223C820 ; =0x0223D314 str r0, [r4, #0x64] ldrh r3, [r2] add r0, sp, #0x14 add r1, sp, #0x14 strh r3, [r0] ldrh r3, [r2, #2] ldrh r2, [r2, #4] strh r3, [r0, #2] strh r2, [r0, #4] ldr r0, [r4, #0x64] bl MOD81_02238B40 add r0, r4, #0 bl MOD81_0223CBE0 mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C mov r0, #0 str r0, [sp] ldr r0, _0223C824 ; =0x04000050 mov r1, #1 mov r2, #4 mov r3, #0x10 bl G2x_SetBlendAlpha_ mov r0, #0x10 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #3 add r2, r1, #0 mov r3, #0 bl FUN_0200E1D0 mov r0, #1 add sp, #0x1c pop {r3, r4, pc} .align 2, 0 _0223C808: .word 0x0223D374 _0223C80C: .word 0x04000304 _0223C810: .word 0x0223D32C _0223C814: .word 0x0223D33C _0223C818: .word 0x0223D358 _0223C81C: .word 0x04000008 _0223C820: .word 0x0223D314 _0223C824: .word 0x04000050 thumb_func_end MOD81_0223C658 thumb_func_start MOD81_0223C828 MOD81_0223C828: ; 0x0223C828 push {r4, lr} add r4, r0, #0 ldr r0, [r1] cmp r0, #0 bne _0223C84E bl FUN_0200E308 cmp r0, #0 beq _0223C84E ldr r0, [r4, #0x2c] mov r1, #1 bl FUN_02020130 ldr r0, [r4, #0x2c] mov r1, #1 bl FUN_020200A0 mov r0, #1 pop {r4, pc} _0223C84E: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223C828 thumb_func_start MOD81_0223C854 MOD81_0223C854: ; 0x0223C854 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r5] add r4, r0, #0 cmp r1, #4 bhi _0223C91C add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0223C86C: ; jump table .short _0223C876 - _0223C86C - 2 ; case 0 .short _0223C884 - _0223C86C - 2 ; case 1 .short _0223C8AE - _0223C86C - 2 ; case 2 .short _0223C8D6 - _0223C86C - 2 ; case 3 .short _0223C90E - _0223C86C - 2 ; case 4 _0223C876: add r1, r4, #0 add r1, #0x6c bl MOD81_0223CD64 ldr r0, [r5] add r0, r0, #1 str r0, [r5] _0223C884: ldr r0, [r4, #0x6c] cmp r0, #0 bne _0223C91C ldr r0, [r4, #0x30] mov r1, #2 bl FUN_02020130 ldr r0, [r4, #0x30] mov r1, #1 bl FUN_020200A0 ldr r0, [r4, #0x64] mov r1, #0 bl MOD81_02238B58 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223C91C _0223C8AE: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0xa ble _0223C91C ldr r0, [r4, #0x14] mov r1, #6 mov r2, #0 bl FUN_02007558 add r0, r4, #0 mov r1, #0x10 mov r2, #0 mov r3, #0xc bl MOD81_0223CCA8 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] b _0223C91C _0223C8D6: bl MOD81_0223CCF8 cmp r0, #0 beq _0223C91C ldr r0, [r4] bl MOD81_02238820 mov r1, #0x4c mov r2, #0 bl FUN_020672BC cmp r0, #0 bne _0223C902 ldr r0, [r4] bl MOD81_02238838 bl FUN_02005578 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_02007314 _0223C902: mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223C91C _0223C90E: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0x1e ble _0223C91C mov r0, #1 pop {r3, r4, r5, pc} _0223C91C: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD81_0223C854 thumb_func_start MOD81_0223C920 MOD81_0223C920: ; 0x0223C920 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r1, #0 ldr r1, [r5] add r4, r0, #0 cmp r1, #5 bhi _0223C95C add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0223C93A: ; jump table .short _0223C946 - _0223C93A - 2 ; case 0 .short _0223C952 - _0223C93A - 2 ; case 1 .short _0223C9D0 - _0223C93A - 2 ; case 2 .short _0223CA32 - _0223C93A - 2 ; case 3 .short _0223CA52 - _0223C93A - 2 ; case 4 .short _0223CA7C - _0223C93A - 2 ; case 5 _0223C946: mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223CA8A _0223C952: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0xa bgt _0223C95E _0223C95C: b _0223CA8A _0223C95E: ldr r0, [r4] bl MOD81_02238814 str r0, [sp, #0xc] ldr r0, [r4] bl MOD81_02238810 add r7, r0, #0 ldr r0, [r4] bl MOD81_02238850 cmp r0, #1 bne _0223C97E mov r1, #2 add r6, r1, #0 b _0223C982 _0223C97E: mov r1, #5 mov r6, #3 _0223C982: ldr r0, [sp, #0xc] ldr r2, [r4, #0x58] bl FUN_0200A8E0 ldr r1, [r4, #0x5c] ldr r2, [r4, #0x58] add r0, r7, #0 bl FUN_0200B7B8 mov r3, #0 str r3, [sp] mov r0, #0xff str r0, [sp, #4] str r3, [sp, #8] add r0, r4, #0 ldr r2, [r4, #0x5c] add r0, #0x48 mov r1, #1 bl FUN_0201BD84 add r0, r4, #0 add r0, #0x48 mov r1, #0x6d mov r2, #2 bl FUN_0200D06C add r0, r4, #0 add r0, #0x48 bl FUN_020191D0 ldr r0, _0223CA90 ; =0x00000484 bl FUN_02005C28 mov r0, #0 str r0, [r4, #8] mov r0, #1 str r0, [r4, #0xc] str r6, [r5] b _0223CA8A _0223C9D0: mov r1, #0x3c bl MOD81_0223CA94 cmp r0, #0 beq _0223CA8A ldr r0, [r4] bl MOD81_02238814 add r6, r0, #0 ldr r0, [r4] bl MOD81_02238810 add r7, r0, #0 ldr r2, [r4, #0x58] add r0, r6, #0 mov r1, #3 bl FUN_0200A8E0 ldr r1, [r4, #0x5c] ldr r2, [r4, #0x58] add r0, r7, #0 bl FUN_0200B7B8 add r0, r4, #0 add r0, #0x48 mov r1, #0xf bl FUN_02019620 mov r3, #0 str r3, [sp] mov r0, #0xff str r0, [sp, #4] str r3, [sp, #8] add r0, r4, #0 ldr r2, [r4, #0x5c] add r0, #0x48 mov r1, #1 bl FUN_0201BD84 add r0, r4, #0 add r0, #0x48 bl FUN_02019548 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223CA8A _0223CA32: mov r1, #0x3c bl MOD81_0223CA94 cmp r0, #0 beq _0223CA8A add r0, r4, #0 add r0, #0x48 mov r1, #0 bl FUN_0200D0E0 mov r0, #0 str r0, [r4, #8] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223CA8A _0223CA52: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #0xa ble _0223CA8A mov r0, #0x10 str r0, [sp] mov r1, #0 mov r0, #1 str r0, [sp, #4] mov r0, #0x3a str r0, [sp, #8] mov r0, #3 add r2, r1, #0 add r3, r1, #0 bl FUN_0200E1D0 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _0223CA8A _0223CA7C: bl FUN_0200E308 cmp r0, #0 beq _0223CA8A add sp, #0x10 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _0223CA8A: mov r0, #0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0223CA90: .word 0x00000484 thumb_func_end MOD81_0223C920 thumb_func_start MOD81_0223CA94 MOD81_0223CA94: ; 0x0223CA94 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0xc] add r4, r1, #0 cmp r0, #0 beq _0223CAA6 bl FUN_02005CBC str r0, [r5, #0xc] _0223CAA6: ldr r0, [r5, #8] cmp r0, r4 bge _0223CAB4 add r0, r0, #1 str r0, [r5, #8] mov r0, #0 pop {r3, r4, r5, pc} _0223CAB4: ldr r0, [r5, #0xc] cmp r0, #0 bne _0223CABE mov r0, #1 pop {r3, r4, r5, pc} _0223CABE: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223CA94 thumb_func_start MOD81_0223CAC4 MOD81_0223CAC4: ; 0x0223CAC4 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _0223CB6C ; =0x04000060 ldr r2, _0223CB70 ; =0xFFFFCFFD ldrh r1, [r0] and r1, r2 strh r1, [r0] ldrh r3, [r0] add r1, r2, #2 and r3, r1 mov r1, #0x10 orr r1, r3 strh r1, [r0] ldrh r3, [r0] ldr r1, _0223CB74 ; =0x0000CFFB and r1, r3 strh r1, [r0] add r1, r2, #2 ldrh r3, [r0] lsr r2, r2, #0x11 and r3, r1 mov r1, #8 orr r1, r3 strh r1, [r0] mov r0, #0 add r1, r0, #0 mov r3, #0x3f str r0, [sp] bl G3X_SetClearColor ldr r1, _0223CB78 ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _0223CB7C ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 ldr r3, _0223CB80 ; =0x021064B8 mov r0, #1 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 ldr r3, _0223CB84 ; =0x021064C0 add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 mov r1, #0 mov r2, #1 blx r3 ldr r2, _0223CB88 ; =0x7FFF0000 add r6, r0, #0 and r2, r4 lsl r1, r4, #0x10 lsr r2, r2, #0x10 ldr r0, [r5, #0x10] lsr r1, r1, #0xd lsl r2, r2, #4 bl FUN_020081A8 ldr r2, _0223CB8C ; =0xFFFF0000 lsl r1, r6, #0x10 and r2, r6 lsr r2, r2, #0x10 ldr r0, [r5, #0x10] lsr r1, r1, #0xd lsl r2, r2, #3 bl FUN_020081B4 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _0223CB6C: .word 0x04000060 _0223CB70: .word 0xFFFFCFFD _0223CB74: .word 0x0000CFFB _0223CB78: .word 0x04000540 _0223CB7C: .word 0xBFFF0000 _0223CB80: .word 0x021064B8 _0223CB84: .word 0x021064C0 _0223CB88: .word 0x7FFF0000 _0223CB8C: .word 0xFFFF0000 thumb_func_end MOD81_0223CAC4 thumb_func_start MOD81_0223CB90 MOD81_0223CB90: ; 0x0223CB90 push {r3, r4, r5, lr} sub sp, #0x20 add r4, r0, #0 ldr r0, [r4] bl MOD81_02238820 add r5, r0, #0 add r0, sp, #0x10 add r1, r5, #0 mov r2, #2 bl FUN_02068B70 ldr r0, [r4] bl MOD81_02238838 add r1, r0, #0 add r0, r4, #0 add r0, #0x18 bl FUN_02069010 add r0, r5, #0 mov r1, #2 bl FUN_02068E1C add r3, r0, #0 mov r1, #0 str r1, [sp] add r0, r4, #0 str r1, [sp, #4] add r0, #0x18 str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r4, #0x10] add r3, #0x50 add r1, sp, #0x10 mov r2, #0x80 bl FUN_020073A0 add sp, #0x20 pop {r3, r4, r5, pc} thumb_func_end MOD81_0223CB90 thumb_func_start MOD81_0223CBE0 MOD81_0223CBE0: ; 0x0223CBE0 push {r4, lr} sub sp, #0x70 add r4, r0, #0 add r0, #0x34 mov r1, #0x5d mov r2, #7 mov r3, #8 bl MOD81_0223874C add r0, sp, #0x5c bl FUN_020B19DC add r0, sp, #0x38 bl FUN_020B1A24 mov r3, #0 str r3, [sp] mov r2, #1 str r2, [sp, #4] str r3, [sp, #8] mov r0, #0x3a str r0, [sp, #0xc] add r0, sp, #0x38 str r0, [sp, #0x10] mov r0, #0x5d mov r1, #9 bl FUN_02006AE4 mov r0, #0x3a str r0, [sp] add r0, sp, #0x5c str r0, [sp, #4] mov r0, #0x5d mov r1, #0xa mov r2, #1 mov r3, #0 bl FUN_02006A8C mov r0, #2 add r1, r4, #0 str r0, [sp] add r0, sp, #0x14 add r1, #0x34 add r2, sp, #0x38 add r3, sp, #0x5c bl MOD81_022387A8 mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x64 bl MOD81_022387C8 str r0, [r4, #0x2c] mov r0, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0x14 mov r2, #0x80 mov r3, #0x5a bl MOD81_022387C8 str r0, [r4, #0x30] mov r1, #1 bl FUN_02020238 ldr r0, [r4, #0x2c] mov r1, #0 bl FUN_020200A0 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_020200A0 add sp, #0x70 pop {r4, pc} thumb_func_end MOD81_0223CBE0 thumb_func_start MOD81_0223CC84 MOD81_0223CC84: ; 0x0223CC84 push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _0223CC8C: ldr r0, [r5, #0x2c] cmp r0, #0 beq _0223CC96 bl FUN_0201FFC8 _0223CC96: add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _0223CC8C add r6, #0x34 add r0, r6, #0 bl MOD81_02238784 pop {r4, r5, r6, pc} thumb_func_end MOD81_0223CC84 thumb_func_start MOD81_0223CCA8 MOD81_0223CCA8: ; 0x0223CCA8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #0x3a mov r1, #0x14 str r2, [sp] add r7, r3, #0 bl FUN_02016998 add r4, r0, #0 beq _0223CCEE str r5, [r4] lsl r0, r6, #0xc str r0, [r4, #4] ldr r0, [sp] lsl r1, r0, #0xc str r1, [r4, #8] ldr r0, [r4, #4] sub r0, r1, r0 add r1, r7, #0 bl _s32_div_f str r0, [r4, #0xc] ldr r0, _0223CCF0 ; =MOD81_0223CD28 str r7, [r4, #0x10] add r1, r4, #0 mov r2, #0 bl FUN_0200CA60 str r0, [r5, #0x68] ldr r0, _0223CCF4 ; =0x04000050 mov r1, #1 add r2, r6, #0 bl G2x_SetBlendBrightness_ _0223CCEE: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0223CCF0: .word MOD81_0223CD28 _0223CCF4: .word 0x04000050 thumb_func_end MOD81_0223CCA8 thumb_func_start MOD81_0223CCF8 MOD81_0223CCF8: ; 0x0223CCF8 ldr r0, [r0, #0x68] cmp r0, #0 bne _0223CD02 mov r0, #1 bx lr _0223CD02: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD81_0223CCF8 thumb_func_start MOD81_0223CD08 MOD81_0223CD08: ; 0x0223CD08 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x68] cmp r0, #0 beq _0223CD24 bl FUN_0201B6C8 bl MOD81_02238898 ldr r0, [r4, #0x68] bl FUN_0200CAB4 mov r0, #0 str r0, [r4, #0x68] _0223CD24: pop {r4, pc} .align 2, 0 thumb_func_end MOD81_0223CD08 thumb_func_start MOD81_0223CD28 MOD81_0223CD28: ; 0x0223CD28 push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0x10] sub r0, r0, #1 str r0, [r4, #0x10] cmp r0, #0 ble _0223CD4A ldr r1, [r4, #4] ldr r0, [r4, #0xc] add r2, r1, r0 str r2, [r4, #4] ldr r0, _0223CD60 ; =0x04000050 mov r1, #1 asr r2, r2, #0xc bl G2x_SetBlendBrightness_ pop {r4, pc} _0223CD4A: ldr r2, [r4, #8] ldr r0, _0223CD60 ; =0x04000050 mov r1, #1 asr r2, r2, #0xc bl G2x_SetBlendBrightness_ ldr r0, [r4] bl MOD81_0223CD08 pop {r4, pc} nop _0223CD60: .word 0x04000050 thumb_func_end MOD81_0223CD28 thumb_func_start MOD81_0223CD64 MOD81_0223CD64: ; 0x0223CD64 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #0x3a mov r1, #0x44 bl FUN_02016998 add r4, r0, #0 beq _0223CDD2 mov r1, #0 str r1, [r4, #4] str r6, [r4] ldr r0, [r5, #0x60] str r0, [r4, #0x10] ldr r0, [r5, #0x64] str r0, [r4, #0x14] str r5, [r4, #8] ldr r0, _0223CDD8 ; =0x000018CC str r1, [r4, #0x18] str r0, [r4, #0x1c] mov r0, #0x14 str r0, [r4, #0x20] mov r0, #1 lsl r0, r0, #0xc strh r0, [r4, #0x3a] str r1, [r4, #0x40] ldr r0, [r4, #0x14] bl MOD81_02238B5C ldr r0, [r4, #0x14] mov r1, #1 bl MOD81_02238B58 add r1, r4, #0 ldr r0, [r4, #0x14] add r1, #0x24 bl MOD81_02238B08 add r1, r4, #0 ldr r0, [r4, #0x14] add r1, #0x34 bl MOD81_02238B28 ldr r0, _0223CDDC ; =MOD81_0223CE54 add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 str r0, [r6] cmp r0, #0 bne _0223CDD6 add r0, r4, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _0223CDD2: mov r0, #0 str r0, [r6] _0223CDD6: pop {r4, r5, r6, pc} .align 2, 0 _0223CDD8: .word 0x000018CC _0223CDDC: .word MOD81_0223CE54 thumb_func_end MOD81_0223CD64 thumb_func_start MOD81_0223CDE0 MOD81_0223CDE0: ; 0x0223CDE0 push {r4, lr} add r4, r0, #0 beq _0223CDFA bl FUN_0201B6C8 ldr r1, [r0] mov r2, #0 str r2, [r1] bl FUN_02016A18 add r0, r4, #0 bl FUN_0200CAB4 _0223CDFA: pop {r4, pc} thumb_func_end MOD81_0223CDE0 thumb_func_start MOD81_0223CDFC MOD81_0223CDFC: ; 0x0223CDFC add r1, r0, #0 ldr r0, [r1, #0x40] cmp r0, #0 beq _0223CE1E mov r0, #0x3a ldrsh r2, [r1, r0] mov r0, #0x3c ldrsh r0, [r1, r0] add r0, r2, r0 strh r0, [r1, #0x3a] ldr r0, [r1, #0x40] sub r0, r0, #1 str r0, [r1, #0x40] bne _0223CE1E mov r0, #0x3e ldrsh r0, [r1, r0] strh r0, [r1, #0x3a] _0223CE1E: mov r0, #0x36 ldrsh r2, [r1, r0] mov r0, #0x3a ldrsh r0, [r1, r0] ldr r3, _0223CE34 ; =MOD81_02238B40 add r0, r2, r0 strh r0, [r1, #0x36] ldr r0, [r1, #0x14] add r1, #0x34 bx r3 nop _0223CE34: .word MOD81_02238B40 thumb_func_end MOD81_0223CDFC thumb_func_start MOD81_0223CE38 MOD81_0223CE38: ; 0x0223CE38 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r2, #0 beq _0223CE50 mov r0, #0x3a ldrsh r0, [r5, r0] sub r0, r1, r0 add r1, r4, #0 bl _s32_div_f strh r0, [r5, #0x3c] str r4, [r5, #0x40] _0223CE50: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD81_0223CE38 thumb_func_start MOD81_0223CE54 MOD81_0223CE54: ; 0x0223CE54 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD81_0223CDFC ldr r0, [r4, #4] cmp r0, #5 bhi _0223CF62 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0223CE72: ; jump table .short _0223CE7E - _0223CE72 - 2 ; case 0 .short _0223CEAE - _0223CE72 - 2 ; case 1 .short _0223CEC6 - _0223CE72 - 2 ; case 2 .short _0223CEDC - _0223CE72 - 2 ; case 3 .short _0223CF24 - _0223CE72 - 2 ; case 4 .short _0223CF52 - _0223CE72 - 2 ; case 5 _0223CE7E: ldr r0, [r4, #0x20] cmp r0, #0 beq _0223CE9E ldr r1, [r4, #0x18] ldr r0, [r4, #0x1c] add r0, r1, r0 str r0, [r4, #0x18] ldr r0, [r4, #0x20] sub r0, r0, #1 str r0, [r4, #0x20] ldr r1, [r4, #0x18] ldr r0, [r4, #0x14] asr r1, r1, #0xc bl MOD81_02238B5C pop {r3, r4, r5, pc} _0223CE9E: ldr r0, [r4, #0x14] mov r1, #0x1f bl MOD81_02238B5C ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223CEAE: mov r1, #6 add r0, r4, #0 lsl r1, r1, #6 mov r2, #0x1e bl MOD81_0223CE38 mov r0, #0 str r0, [r4, #0xc] ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223CEC6: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] cmp r0, #0xa ble _0223CF62 mov r0, #0 str r0, [r4, #0x30] ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223CEDC: ldr r1, [r4, #0x28] ldr r0, [r4, #0x30] add r0, r1, r0 str r0, [r4, #0x28] mov r0, #0x1e ldr r1, [r4, #0x30] lsl r0, r0, #6 sub r0, r1, r0 str r0, [r4, #0x30] add r1, r4, #0 ldr r0, [r4, #0x14] add r1, #0x24 bl MOD81_02238B18 ldr r1, [r4, #0x28] ldr r0, _0223CF64 ; =0xFFFF5000 cmp r1, r0 bge _0223CF62 ldr r0, _0223CF68 ; =0x000005E6 bl FUN_020054C8 mov r0, #0 ldr r1, [r4, #0x30] mvn r0, r0 mul r0, r1 str r0, [r4, #0x30] ldr r0, [r4, #8] mov r1, #0 mov r2, #0x10 mov r3, #8 bl MOD81_0223CCA8 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223CF24: ldr r1, [r4, #0x28] ldr r0, [r4, #0x30] add r1, r1, r0 mov r0, #0x13 lsl r0, r0, #0xc str r1, [r4, #0x28] cmp r1, r0 blt _0223CF36 str r0, [r4, #0x28] _0223CF36: add r1, r4, #0 ldr r0, [r4, #0x14] add r1, #0x24 bl MOD81_02238B18 mov r0, #0x13 ldr r1, [r4, #0x28] lsl r0, r0, #0xc cmp r1, r0 bne _0223CF62 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _0223CF52: ldr r0, [r4, #8] bl MOD81_0223CCF8 cmp r0, #0 beq _0223CF62 add r0, r5, #0 bl MOD81_0223CDE0 _0223CF62: pop {r3, r4, r5, pc} .align 2, 0 _0223CF64: .word 0xFFFF5000 _0223CF68: .word 0x000005E6 thumb_func_end MOD81_0223CE54 .section .rodata ; 0x0223CF6C .incbin "baserom.nds", 0x2EEB2C, 0x430 .section .data ; 0x0223D3A0 .incbin "baserom.nds", 0x2EEF60, 0x20 .section .bss ; 0x0223D3C0 .space 0xA0