diff --git a/asm/overlay097/ov97_0222D30C.inc b/asm/overlay097/ov97_0222D30C.inc deleted file mode 100644 index 6b17b125c7..0000000000 --- a/asm/overlay097/ov97_0222D30C.inc +++ /dev/null @@ -1,234 +0,0 @@ -.public sub_02000EC4 -.public sub_0200112C -.public sub_02001288 -.public sub_02001384 -.public sub_02002DF8 -.public sub_02002E7C -.public sub_02004550 -.public sub_02005748 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006E3C -.public sub_02006E60 -.public sub_02006E84 -.public sub_020093B4 -.public sub_0200985C -.public sub_020098B8 -.public sub_02009918 -.public sub_0200A328 -.public sub_0200A640 -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B29C -.public sub_0200B358 -.public sub_0200B3F0 -.public sub_0200B60C -.public sub_0200D9E8 -.public sub_0200DA58 -.public sub_0200DAA4 -.public sub_0200DC48 -.public sub_0200DC9C -.public sub_0200DD0C -.public sub_0200E060 -.public sub_0200E084 -.public sub_0200E7FC -.public sub_0200EBA0 -.public sub_0200F344 -.public sub_020138A4 -.public sub_02013A04 -.public sub_02013A3C -.public sub_02013A4C -.public sub_02017B70 -.public sub_02017FC8 -.public sub_0201807C -.public sub_02018144 -.public sub_020181C4 -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019448 -.public sub_0201975C -.public sub_02019E2C -.public sub_02019EBC -.public sub_0201A7CC -.public sub_0201A7E8 -.public sub_0201A8FC -.public sub_0201ACF4 -.public sub_0201ADA4 -.public sub_0201D250 -.public sub_0201D264 -.public sub_0201D2E8 -.public sub_0201D710 -.public sub_0201D724 -.public sub_0201D78C -.public sub_0201FF00 -.public sub_0201FF0C -.public sub_0201FF68 -.public sub_0201FF74 -.public sub_02021AA0 -.public sub_02021BD4 -.public sub_02021C50 -.public sub_02021CAC -.public sub_02021CC8 -.public sub_02021CF8 -.public sub_02021D28 -.public sub_02021D34 -.public sub_02021D6C -.public sub_02021DCC -.public sub_02021E2C -.public sub_02021E50 -.public sub_02021E80 -.public sub_02021F58 -.public sub_02023790 -.public sub_020237BC -.public sub_02023D8C -.public sub_0202442C -.public sub_02025E44 -.public sub_02027B50 -.public sub_0202DB2C -.public sub_0202DBAC -.public sub_0202DD88 -.public sub_0202DE5C -.public sub_02033478 -.public sub_020334A4 -.public sub_020334CC -.public sub_02035D78 -.public sub_0203608C -.public sub_020364F0 -.public sub_02036540 -.public sub_02037D48 -.public sub_02037D84 -.public sub_02037DA0 -.public sub_020388F4 -.public sub_02039734 -.public sub_02039794 -.public sub_020397B0 -.public sub_02074470 -.public FX_Sqrt -.public FX_Atan2Idx -.public G2x_SetBlendBrightness_ -.public OS_ResetSystem -.public RTC_ConvertDateToDay -.public WM_GetLinkLevel -.public CTRDG_IsExisting -.public memcpy -.public memset -.public _d_dtoi -.public _d_itod -.public _d_mul -.public _f_add -.public _f_fgt -.public _f_flt -.public _f_feq -.public _fdiv -.public _f_ftoi -.public _f_itof -.public _f_mul -.public _f_sub -.public _s32_div_f -.public ov97_0222D200 -.public ov97_0222D234 -.public ov97_0222D250 -.public ov97_0222D2A0 -.public ov97_0222D2B8 -.public ov97_0222D2DC -.public ov97_0222D30C -.public ov97_0222D34C -.public ov97_0222D3E8 -.public ov97_0222D40C -.public ov97_0222D444 -.public ov97_0222D45C -.public ov97_0222D55C -.public ov97_0222D5C8 -.public ov97_0222D614 -.public ov97_0222D658 -.public ov97_0222D6F8 -.public ov97_0222D75C -.public ov97_0222D8F4 -.public ov97_0222D94C -.public ov97_0222D9F0 -.public ov97_0222DA64 -.public ov97_0222DA84 -.public ov97_0222DB40 -.public ov97_0222DB78 -.public ov97_0222DBC4 -.public ov97_0222DC20 -.public ov97_0222DC9C -.public ov97_0222DD1C -.public ov97_0222DDD0 -.public ov97_0222DE78 -.public ov97_0222DF10 -.public ov97_0222DF70 -.public ov97_0222DFD4 -.public ov97_0222E080 -.public ov97_0222E1D8 -.public ov97_0222E228 -.public ov97_0222E2AC -.public ov97_0222E398 -.public ov97_0222E538 -.public ov97_0222E5B4 -.public ov97_0222E60C -.public ov97_0222E664 -.public ov97_0222E67C -.public ov97_0222E694 -.public ov97_0222E6F8 -.public ov97_0222E734 -.public ov97_0222E77C -.public ov97_0222E7B4 -.public ov97_0222E7E4 -.public ov97_0222E814 -.public ov97_0222EA68 -.public ov97_0222EBD0 -.public ov97_0222EDC0 -.public ov97_0222EEB8 -.public ov97_0222F348 -.public ov97_0222F360 -.public ov97_0222F378 -.public ov97_0222F388 -.public ov97_0222F39C -.public ov97_0222F410 -.public ov97_0222F484 -.public ov97_0222F4BC -.public ov97_022301B0 -.public ov97_02230224 -.public ov97_02230280 -.public ov97_022302D4 -.public ov97_022302F4 -.public ov97_02231FFC -.public ov97_02232054 -.public ov97_02232148 -.public ov97_02237520 -.public ov97_02237624 -.public ov97_0223764C -.public ov97_02237694 -.public ov97_02237784 -.public ov97_02237790 -.public ov97_022377F0 -.public ov97_02237808 -.public ov97_02237858 -.public ov97_02237860 -.public ov97_0223795C -.public ov97_02237A20 -.public ov97_02237A74 -.public ov97_02237AEC -.public ov97_02237B0C -.public ov97_02237CAC -.public ov97_02237D14 -.public ov97_02237DA0 -.public ov97_02238194 -.public ov97_02238324 -.public ov97_02238400 -.public ov97_0223846C -.public ov97_0223847C -.public ov97_022384F4 -.public ov97_0223850C -.public ov97_02238528 -.public ov97_022389C8 -.public ov97_02238A4C -.public ov97_02238CA0 -.public ov97_02238D4C -.public ov97_02238D54 -.public ov97_02238EAC diff --git a/asm/overlay097/ov97_0222D30C.s b/asm/overlay097/ov97_0222D30C.s deleted file mode 100644 index 98b7e3db62..0000000000 --- a/asm/overlay097/ov97_0222D30C.s +++ /dev/null @@ -1,6183 +0,0 @@ - .include "macros/function.inc" - .include "overlay097/ov97_0222D30C.inc" - - .extern ov97_022383C4 - .extern Unk_ov97_0223D7AC - - .text - - - thumb_func_start ov97_0222D30C -ov97_0222D30C: ; 0x0222D30C - push {r4, lr} - add r4, r0, #0 - cmp r1, #1 - ldr r0, _0222D340 ; =0x000029F0 - bne _0222D32C - ldr r0, [r4, r0] - cmp r0, #0 - bne _0222D33C - add r0, r4, #0 - add r0, #0x18 - mov r1, #1 - bl sub_0200E7FC - ldr r1, _0222D340 ; =0x000029F0 - str r0, [r4, r1] - pop {r4, pc} -_0222D32C: - ldr r0, [r4, r0] - cmp r0, #0 - beq _0222D336 - bl sub_0200EBA0 -_0222D336: - ldr r0, _0222D340 ; =0x000029F0 - mov r1, #0 - str r1, [r4, r0] -_0222D33C: - pop {r4, pc} - nop -_0222D340: .word 0x000029F0 - thumb_func_end ov97_0222D30C - - thumb_func_start ov97_0222D344 -ov97_0222D344: ; 0x0222D344 - ldr r3, _0222D348 ; =ov97_0222D30C - bx r3 - ; .align 2, 0 -_0222D348: .word ov97_0222D30C - thumb_func_end ov97_0222D344 - - thumb_func_start ov97_0222D34C -ov97_0222D34C: ; 0x0222D34C - push {r3, r4, r5, r6, r7, lr} - bl sub_0200682C - add r7, r0, #0 - bl ov97_02237DA0 - ldr r0, [r7, #0x7c] - cmp r0, #0 - beq _0222D362 - bl sub_02013A3C -_0222D362: - ldr r0, [r7, #0x78] - cmp r0, #0 - beq _0222D370 - mov r1, #0 - add r2, r1, #0 - bl sub_02001384 -_0222D370: - add r0, r7, #0 - add r0, #0x18 - bl sub_0201ACF4 - add r0, r7, #0 - add r0, #0x18 - bl sub_0201A8FC - add r0, r7, #0 - add r0, #0x58 - bl sub_0201A7CC - cmp r0, #0 - beq _0222D39C - add r0, r7, #0 - add r0, #0x58 - bl sub_0201ACF4 - add r0, r7, #0 - add r0, #0x58 - bl sub_0201A8FC -_0222D39C: - add r5, r7, #0 - mov r6, #0 - add r4, r7, #0 - add r5, #0x28 -_0222D3A4: - ldr r0, [r4, #0x28] - cmp r0, #0 - beq _0222D3B6 - add r0, r5, #0 - bl sub_0201ACF4 - add r0, r5, #0 - bl sub_0201A8FC -_0222D3B6: - add r6, r6, #1 - add r4, #0x10 - add r5, #0x10 - cmp r6, #3 - blt _0222D3A4 - ldr r0, [r7, #0] - mov r1, #0 - bl sub_02019044 - ldr r0, [r7, #0] - mov r1, #1 - bl sub_02019044 - ldr r0, [r7, #0] - mov r1, #4 - bl sub_02019044 - ldr r0, [r7, #0] - mov r1, #5 - bl sub_02019044 - ldr r0, [r7, #0] - bl sub_020181C4 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov97_0222D34C - - thumb_func_start ov97_0222D3E8 -ov97_0222D3E8: ; 0x0222D3E8 - push {r3, lr} - sub sp, #8 - bl ov97_02237A20 - bl ov97_02237A74 - mov r0, #8 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #0x74 - mov r1, #0xa - mov r2, #7 - mov r3, #9 - bl ov97_02237B0C - add sp, #8 - pop {r3, pc} - thumb_func_end ov97_0222D3E8 - - thumb_func_start ov97_0222D40C -ov97_0222D40C: ; 0x0222D40C - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - beq _0222D432 - str r1, [sp] - ldr r1, _0222D440 ; =0x000005C4 - mov r0, #0 - ldr r1, [r4, r1] - mov r2, #0x80 - mov r3, #0x64 - bl ov97_02237D14 - ldr r1, _0222D440 ; =0x000005C4 - add sp, #4 - str r0, [r4, r1] - pop {r3, r4, pc} -_0222D432: - ldr r0, _0222D440 ; =0x000005C4 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021CAC - add sp, #4 - pop {r3, r4, pc} - ; .align 2, 0 -_0222D440: .word 0x000005C4 - thumb_func_end ov97_0222D40C - - thumb_func_start ov97_0222D444 -ov97_0222D444: ; 0x0222D444 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_0201A7CC - cmp r0, #1 - bne _0222D45A - add r0, r5, #0 - add r1, r4, #0 - bl sub_0200DC9C -_0222D45A: - pop {r3, r4, r5, pc} - thumb_func_end ov97_0222D444 - - thumb_func_start ov97_0222D45C -ov97_0222D45C: ; 0x0222D45C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_0201A7CC - cmp r0, #1 - bne _0222D472 - add r0, r5, #0 - add r1, r4, #0 - bl sub_0200E084 -_0222D472: - pop {r3, r4, r5, pc} - thumb_func_end ov97_0222D45C - - thumb_func_start ov97_0222D474 -ov97_0222D474: ; 0x0222D474 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r0, _0222D4CC ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #2 - beq _0222D492 - add r1, r4, #0 - add r0, r5, #0 - add r1, #0x18 - mov r2, #3 - bl ov97_0222DE78 -_0222D492: - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - ldr r0, _0222D4CC ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #2 - beq _0222D4C2 - add r0, r4, #0 - mov r1, #0xf - bl ov97_0222D200 - ldr r1, _0222D4D0 ; =0x00001C20 - ldr r0, _0222D4D4 ; =0x00000434 - str r1, [r4, r0] - bl sub_02039734 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - mov r0, #7 - pop {r3, r4, r5, pc} -_0222D4C2: - mov r0, #0x13 - add r4, #0x84 - str r0, [r4, #0] - pop {r3, r4, r5, pc} - nop -_0222D4CC: .word 0x000015D4 -_0222D4D0: .word 0x00001C20 -_0222D4D4: .word 0x00000434 - thumb_func_end ov97_0222D474 - - thumb_func_start ov97_0222D4D8 -ov97_0222D4D8: ; 0x0222D4D8 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r0, #0x80 - ldr r1, [r0, #0] - cmp r1, #1 - bne _0222D4EE - mov r0, #0x31 - pop {r3, r4, r5, pc} -_0222D4EE: - sub r0, r1, #2 - cmp r0, #2 - bhi _0222D4F8 - mov r0, #0x31 - pop {r3, r4, r5, pc} -_0222D4F8: - cmp r1, #5 - bne _0222D500 - mov r0, #0x31 - pop {r3, r4, r5, pc} -_0222D500: - ldr r0, _0222D554 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0222D510 - ldr r0, _0222D558 ; =0x00000438 - ldr r0, [r4, r0] - bl ov97_0222D234 -_0222D510: - add r1, r4, #0 - add r0, r5, #0 - add r1, #0x18 - mov r2, #6 - bl ov97_0222DE78 - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - ldr r0, _0222D554 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0222D53E - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D40C - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C -_0222D53E: - ldr r0, _0222D554 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0222D550 - mov r0, #0xab - bl sub_020364F0 - mov r0, #9 - pop {r3, r4, r5, pc} -_0222D550: - mov r0, #0x15 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0222D554: .word 0x000015D4 -_0222D558: .word 0x00000438 - thumb_func_end ov97_0222D4D8 - - thumb_func_start ov97_0222D55C -ov97_0222D55C: ; 0x0222D55C - push {r3, r4, r5, r6, r7, lr} - bl sub_0200682C - add r4, r0, #0 - ldr r0, _0222D5C0 ; =0x000015D4 - add r5, r4, #0 - add r6, r4, #0 - ldr r0, [r4, r0] - add r5, #0xdc - add r6, #0x8c - cmp r0, #1 - beq _0222D57A - cmp r0, #3 - beq _0222D5A0 - b _0222D5BA -_0222D57A: - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl ov97_0222D2B8 - mov r2, #0xd6 - add r1, r0, #0 - add r0, r5, #0 - lsl r2, r2, #2 - bl memcpy - add r0, r4, #0 - add r4, #0xdc - add r0, #0x8c - add r1, r4, #0 - mov r2, #0x56 - bl ov97_02238324 - b _0222D5BA -_0222D5A0: - ldr r7, _0222D5C4 ; =0x000005D4 - mov r2, #0xd6 - add r1, r4, r7 - add r0, r5, #0 - add r1, #0x50 - lsl r2, r2, #2 - bl memcpy - add r0, r6, #0 - add r1, r4, r7 - mov r2, #0x50 - bl memcpy -_0222D5BA: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222D5C0: .word 0x000015D4 -_0222D5C4: .word 0x000005D4 - thumb_func_end ov97_0222D55C - - thumb_func_start ov97_0222D5C8 -ov97_0222D5C8: ; 0x0222D5C8 - push {r3, lr} - ldrh r1, [r0] - cmp r1, #3 - bgt _0222D5E0 - cmp r1, #1 - blt _0222D610 - beq _0222D5F2 - cmp r1, #2 - beq _0222D5F2 - cmp r1, #3 - beq _0222D5E8 - b _0222D610 -_0222D5E0: - cmp r1, #0xd - bne _0222D610 - mov r0, #1 - pop {r3, pc} -_0222D5E8: - ldr r0, [r0, #8] - cmp r0, #1 - bne _0222D610 - mov r0, #1 - pop {r3, pc} -_0222D5F2: - add r0, #8 - mov r1, #0x98 - mov r2, #0 - bl sub_02074470 - cmp r0, #3 - blt _0222D604 - cmp r0, #0xe - ble _0222D60C -_0222D604: - cmp r0, #0x40 - blt _0222D610 - cmp r0, #0x47 - bgt _0222D610 -_0222D60C: - mov r0, #1 - pop {r3, pc} -_0222D610: - mov r0, #0 - pop {r3, pc} - thumb_func_end ov97_0222D5C8 - - thumb_func_start ov97_0222D614 -ov97_0222D614: ; 0x0222D614 - push {r4, lr} - add r4, r0, #0 - ldr r0, _0222D64C ; =0x000029EC - ldr r1, [r4, r0] - cmp r1, #1 - bne _0222D626 - mov r1, #0 - sub r0, r0, #4 - str r1, [r4, r0] -_0222D626: - bl ov97_0223847C - sub r0, r0, #2 - cmp r0, #1 - bhi _0222D648 - add r0, r4, #0 - add r0, #0xdc - bl ov97_0222D5C8 - cmp r0, #1 - beq _0222D642 - ldr r0, _0222D650 ; =0x0000061B - bl sub_02005748 -_0222D642: - ldr r0, _0222D654 ; =0x000029E8 - mov r1, #0 - str r1, [r4, r0] -_0222D648: - pop {r4, pc} - nop -_0222D64C: .word 0x000029EC -_0222D650: .word 0x0000061B -_0222D654: .word 0x000029E8 - thumb_func_end ov97_0222D614 - - thumb_func_start ov97_0222D658 -ov97_0222D658: ; 0x0222D658 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r6, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r5, r0, #0 - str r0, [sp] - add r4, #0x8c - add r0, r6, #0 - add r5, #0xdc - bl sub_02006840 - ldr r7, [r0, #8] - add r0, r4, #0 - add r0, #0x4e - ldrb r0, [r0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - bne _0222D684 - mov r6, #0 - b _0222D6B0 -_0222D684: - mov r1, #0x35 - add r2, r4, #0 - mov r0, #0 - lsl r1, r1, #4 - strb r0, [r5, r1] - add r2, #0x4e - ldrb r2, [r2] - mov r6, #1 - lsl r2, r2, #0x1b - lsr r2, r2, #0x1f - bne _0222D69E - sub r1, #8 - strb r0, [r5, r1] -_0222D69E: - add r0, sp, #8 - bl sub_020138A4 - add r0, sp, #8 - bl RTC_ConvertDateToDay - mov r1, #0xd5 - lsl r1, r1, #2 - str r0, [r5, r1] -_0222D6B0: - add r0, r7, #0 - bl sub_0202442C - add r4, #0x4c - ldrh r1, [r4] - str r0, [sp, #4] - bl sub_0202DE5C - cmp r6, #0 - bne _0222D6D0 - ldr r0, [sp, #4] - add r1, r5, #0 - mov r2, #3 - bl sub_0202DB2C - b _0222D6D8 -_0222D6D0: - ldr r0, [sp, #4] - add r1, r5, #0 - bl sub_0202DBAC -_0222D6D8: - add r0, r7, #0 - bl ov97_0223846C - ldr r1, _0222D6F0 ; =0x000029EC - ldr r0, [sp] - mov r2, #0 - str r2, [r0, r1] - ldr r2, _0222D6F4 ; =ov97_0222D614 - sub r1, r1, #4 - str r2, [r0, r1] - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222D6F0: .word 0x000029EC -_0222D6F4: .word ov97_0222D614 - thumb_func_end ov97_0222D658 - - thumb_func_start ov97_0222D6F8 -ov97_0222D6F8: ; 0x0222D6F8 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - add r4, r1, #0 - bl sub_0200682C - cmp r4, #0 - bne _0222D70C - mov r5, #4 - b _0222D710 -_0222D70C: - mov r5, #0 - mvn r5, r5 -_0222D710: - ldr r1, [r0, #0x48] - add r4, r0, #0 - add r4, #0x48 - cmp r1, #0 - bne _0222D73A - mov r1, #0xa - str r1, [sp] - mov r1, #6 - str r1, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r2, #0 - mov r1, #0x6b - str r2, [sp, #0xc] - lsl r1, r1, #2 - str r1, [sp, #0x10] - ldr r0, [r0, #0] - add r1, r4, #0 - mov r3, #0x17 - bl sub_0201A7E8 -_0222D73A: - add r0, r4, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - ldr r1, _0222D758 ; =0x0223E5A8 - add r0, r6, #0 - mov r2, #2 - add r3, r4, #0 - str r5, [sp] - bl ov97_0222DD1C - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0222D758: .word Unk_ov97_0223E5A8 - thumb_func_end ov97_0222D6F8 - - thumb_func_start ov97_0222D75C -ov97_0222D75C: ; 0x0222D75C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - ldr r0, _0222D794 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0222D788 - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C -_0222D788: - bl sub_02039794 - add r0, r5, #0 - bl ov97_0222DA84 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0222D794: .word 0x000015D4 - thumb_func_end ov97_0222D75C - - thumb_func_start ov97_0222D798 -ov97_0222D798: ; 0x0222D798 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - bl sub_0200682C - add r5, r0, #0 - bl ov97_02237624 - cmp r0, #0 - beq _0222D7B0 - mov r1, #2 - b _0222D7B2 -_0222D7B0: - mov r1, #1 -_0222D7B2: - ldr r0, _0222D80C ; =0x000015D4 - str r1, [r5, r0] - add r0, r5, #0 - add r0, #0x38 - mov r1, #0 - bl ov97_0222D444 - add r4, r5, #0 - ldr r0, [r5, #0x48] - add r4, #0x48 - cmp r0, #0 - bne _0222D7EA - mov r0, #0xa - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x6b - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r5, #0] - add r1, r4, #0 - mov r3, #0x17 - bl sub_0201A7E8 -_0222D7EA: - add r0, r4, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - mov r2, #2 - ldr r1, _0222D810 ; =0x0223E598 - add r0, r6, #0 - add r3, r4, #0 - str r2, [sp] - bl ov97_0222DD1C - mov r0, #5 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_0222D80C: .word 0x000015D4 -_0222D810: .word Unk_ov97_0223E598 - thumb_func_end ov97_0222D798 - - thumb_func_start ov97_0222D814 -ov97_0222D814: ; 0x0222D814 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r0, _0222D87C ; =0x000015D4 - mov r1, #4 - str r1, [r4, r0] - add r0, r4, #0 - add r0, #0x38 - mov r1, #0 - bl ov97_0222D444 - add r5, r4, #0 - ldr r0, [r4, #0x48] - add r5, #0x48 - cmp r0, #0 - bne _0222D85A - mov r0, #0xa - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x6b - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, r5, #0 - mov r3, #0x17 - bl sub_0201A7E8 -_0222D85A: - add r0, r5, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - mov r0, #0x4e - str r0, [sp] - ldr r1, _0222D880 ; =0x0223E568 - add r0, r6, #0 - mov r2, #2 - add r3, r5, #0 - bl ov97_0222DD1C - mov r0, #5 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0222D87C: .word 0x000015D4 -_0222D880: .word Unk_ov97_0223E568 - thumb_func_end ov97_0222D814 - - thumb_func_start ov97_0222D884 -ov97_0222D884: ; 0x0222D884 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r0, _0222D8EC ; =0x000015D4 - mov r1, #3 - str r1, [r4, r0] - add r0, r4, #0 - add r0, #0x38 - mov r1, #0 - bl ov97_0222D444 - add r5, r4, #0 - ldr r0, [r4, #0x48] - add r5, #0x48 - cmp r0, #0 - bne _0222D8CA - mov r0, #0xa - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x6b - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, r5, #0 - mov r3, #0x17 - bl sub_0201A7E8 -_0222D8CA: - add r0, r5, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - mov r0, #0x4d - str r0, [sp] - ldr r1, _0222D8F0 ; =0x0223E578 - add r0, r6, #0 - mov r2, #2 - add r3, r5, #0 - bl ov97_0222DD1C - mov r0, #5 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0222D8EC: .word 0x000015D4 -_0222D8F0: .word Unk_ov97_0223E578 - thumb_func_end ov97_0222D884 - - thumb_func_start ov97_0222D8F4 -ov97_0222D8F4: ; 0x0222D8F4 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r1, [r0, #0x48] - add r4, #0x48 - cmp r1, #0 - bne _0222D928 - mov r1, #0xa - str r1, [sp] - mov r1, #6 - str r1, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r2, #0 - mov r1, #0x6b - str r2, [sp, #0xc] - lsl r1, r1, #2 - str r1, [sp, #0x10] - ldr r0, [r0, #0] - add r1, r4, #0 - mov r3, #0x17 - bl sub_0201A7E8 -_0222D928: - add r0, r4, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - mov r0, #4 - str r0, [sp] - ldr r1, _0222D948 ; =0x0223E588 - add r0, r5, #0 - mov r2, #2 - add r3, r4, #0 - bl ov97_0222DD1C - add sp, #0x14 - pop {r4, r5, pc} - ; .align 2, 0 -_0222D948: .word Unk_ov97_0223E588 - thumb_func_end ov97_0222D8F4 - - thumb_func_start ov97_0222D94C -ov97_0222D94C: ; 0x0222D94C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - bl sub_02039794 - ldr r0, _0222D980 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0222D978 - bl ov97_0222D2DC -_0222D978: - add r0, r5, #0 - bl ov97_0222DA84 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0222D980: .word 0x000015D4 - thumb_func_end ov97_0222D94C - - thumb_func_start ov97_0222D984 -ov97_0222D984: ; 0x0222D984 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r1, r4, #0 - add r0, r5, #0 - add r1, #0x18 - mov r2, #3 - bl ov97_0222DE78 - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - ldr r0, _0222D9B8 ; =0x0223F1A8 - mov r1, #0x25 - str r1, [r0, #0] - mov r0, #0x20 - pop {r3, r4, r5, pc} - nop -_0222D9B8: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_0222D984 - - thumb_func_start ov97_0222D9BC -ov97_0222D9BC: ; 0x0222D9BC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r0, #0x80 - ldr r0, [r0, #0] - sub r0, r0, #2 - cmp r0, #2 - bhi _0222D9D4 - mov r0, #0x31 - pop {r3, r4, r5, pc} -_0222D9D4: - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - add r4, #0x18 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #7 - bl ov97_0222DE78 - mov r0, #0x21 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov97_0222D9BC - - thumb_func_start ov97_0222D9F0 -ov97_0222D9F0: ; 0x0222D9F0 - push {r3, lr} - ldr r0, _0222DA14 ; =0x0223F1A8 - ldr r0, [r0, #0] - cmp r0, #0x28 - beq _0222DA02 - cmp r0, #0x29 - beq _0222DA02 - cmp r0, #0x30 - bne _0222DA10 -_0222DA02: - bl ov97_022389C8 - cmp r0, #0 - beq _0222DA10 - ldr r0, _0222DA14 ; =0x0223F1A8 - mov r1, #0x2b - str r1, [r0, #0] -_0222DA10: - mov r0, #0x24 - pop {r3, pc} - ; .align 2, 0 -_0222DA14: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_0222D9F0 - - thumb_func_start ov97_0222DA18 -ov97_0222DA18: ; 0x0222DA18 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - add r1, r4, #0 - add r0, r5, #0 - add r1, #0x18 - mov r2, #3 - bl ov97_0222DE78 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - mov r1, #1 - ldr r0, _0222DA5C ; =0x000015E0 - lsl r1, r1, #0xc - str r1, [r4, r0] - ldr r0, _0222DA60 ; =0x0000267C - mov r1, #0 - str r1, [r4, r0] - mov r0, #0x1b - pop {r3, r4, r5, pc} - nop -_0222DA5C: .word 0x000015E0 -_0222DA60: .word 0x0000267C - thumb_func_end ov97_0222DA18 - - thumb_func_start ov97_0222DA64 -ov97_0222DA64: ; 0x0222DA64 - push {r4, lr} - add r4, r0, #0 - bl sub_0200682C - add r0, #0x38 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - mov r1, #0xc4 - mov r2, #0 - bl ov97_0222DDD0 - mov r0, #3 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov97_0222DA64 - - thumb_func_start ov97_0222DA84 -ov97_0222DA84: ; 0x0222DA84 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - bl sub_0200682C - add r5, r0, #0 - ldr r0, [r5, #4] - bl sub_0202442C - ldr r0, _0222DB00 ; =0x000005C8 - ldr r1, [r5, r0] - cmp r1, #0x1e - bne _0222DAAA - mov r1, #1 - add r0, r0, #4 - str r1, [r5, r0] - add r0, r5, #0 - bl ov97_02230224 -_0222DAAA: - add r0, r5, #0 - add r0, #0x28 - mov r1, #0 - bl ov97_0222D444 - add r4, r5, #0 - ldr r0, [r5, #0x38] - add r4, #0x38 - cmp r0, #0 - bne _0222DADE - mov r0, #9 - str r0, [sp] - mov r0, #0x10 - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x49 - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r5, #0] - add r1, r4, #0 - mov r3, #0xf - bl sub_0201A7E8 -_0222DADE: - add r0, r4, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - mov r0, #1 - str r0, [sp] - ldr r1, _0222DB04 ; =0x0223E5F0 - add r0, r6, #0 - mov r2, #4 - add r3, r4, #0 - bl ov97_0222DD1C - mov r0, #4 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0222DB00: .word 0x000005C8 -_0222DB04: .word Unk_ov97_0223E5F0 - thumb_func_end ov97_0222DA84 - - thumb_func_start ov97_0222DB08 -ov97_0222DB08: ; 0x0222DB08 - push {r4, lr} - bl sub_0200682C - ldr r1, _0222DB38 ; =0x000005C8 - add r4, r0, #0 - ldr r2, [r4, r1] - cmp r2, #0x1e - bne _0222DB22 - mov r2, #1 - add r1, r1, #4 - str r2, [r4, r1] - bl ov97_02230224 -_0222DB22: - ldr r2, _0222DB3C ; =0x000015D8 - mov r0, #0 - ldr r2, [r4, r2] - mov r1, #0x36 - mov r3, #2 - bl ov97_02237790 - mov r0, #0 - mvn r0, r0 - pop {r4, pc} - nop -_0222DB38: .word 0x000005C8 -_0222DB3C: .word 0x000015D8 - thumb_func_end ov97_0222DB08 - - thumb_func_start ov97_0222DB40 -ov97_0222DB40: ; 0x0222DB40 - push {r4, lr} - bl sub_0200682C - add r4, r0, #0 - ldr r0, _0222DB70 ; =0x000005C8 - ldr r1, [r4, r0] - cmp r1, #0x1e - bne _0222DB56 - mov r1, #1 - add r0, r0, #4 - str r1, [r4, r0] -_0222DB56: - mov r0, #1 - bl ov97_02237784 - ldr r2, _0222DB74 ; =0x000015D8 - mov r0, #0 - ldr r2, [r4, r2] - mov r1, #0x35 - mov r3, #2 - bl ov97_02237790 - mov r0, #0 - mvn r0, r0 - pop {r4, pc} - ; .align 2, 0 -_0222DB70: .word 0x000005C8 -_0222DB74: .word 0x000015D8 - thumb_func_end ov97_0222DB40 - - thumb_func_start ov97_0222DB78 -ov97_0222DB78: ; 0x0222DB78 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r5, r3, #0 - ldr r3, _0222DBC0 ; =0x0223D73C - add r7, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - add r2, sp, #0 - ldmia r3!, {r0, r1} - mov ip, r2 - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - lsr r1, r6, #0xb - str r0, [r2, #0] - add r0, sp, #0 - strb r1, [r0, #0x12] - lsr r1, r5, #0xe - strb r1, [r0, #0x13] - lsl r1, r4, #0x18 - add r0, r7, #0 - lsr r1, r1, #0x18 - mov r2, ip - mov r3, #0 - bl sub_020183C4 - lsl r1, r4, #0x18 - add r0, r7, #0 - lsr r1, r1, #0x18 - bl sub_02019EBC - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222DBC0: .word 0x0223D73C - thumb_func_end ov97_0222DB78 - - thumb_func_start ov97_0222DBC4 -ov97_0222DBC4: ; 0x0222DBC4 - push {r3, r4, r5, lr} - sub sp, #0x10 - ldr r5, _0222DC1C ; =0x0223D72C - add r3, sp, #0 - add r4, r0, #0 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl sub_02018368 - mov r1, #0 - mov r2, #0xf - add r0, r4, #0 - lsl r2, r2, #0xc - add r3, r1, #0 - bl ov97_0222DB78 - mov r1, #1 - mov r2, #0x3e - add r0, r4, #0 - lsl r2, r2, #0xa - lsl r3, r1, #0xf - bl ov97_0222DB78 - mov r2, #0xe - add r0, r4, #0 - mov r1, #4 - lsl r2, r2, #0xa - mov r3, #0 - bl ov97_0222DB78 - mov r2, #0x1e - mov r3, #1 - add r0, r4, #0 - mov r1, #5 - lsl r2, r2, #0xa - lsl r3, r3, #0xe - bl ov97_0222DB78 - add sp, #0x10 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0222DC1C: .word 0x0223D72C - thumb_func_end ov97_0222DBC4 - - thumb_func_start ov97_0222DC20 -ov97_0222DC20: ; 0x0222DC20 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - mov r0, #0x20 - mov r2, #4 - str r0, [sp] - mov r0, #0x56 - add r3, r2, #0 - str r0, [sp, #4] - mov r0, #0x74 - mov r1, #0 - add r3, #0xfc - bl sub_02006E84 - mov r0, #0 - str r0, [sp] - mov r0, #5 - lsl r0, r0, #0xa - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r0, #0x56 - str r0, [sp, #0xc] - mov r0, #0x74 - add r2, r4, #0 - mov r3, #5 - bl sub_02006E3C - mov r0, #0 - str r0, [sp] - mov r0, #6 - lsl r0, r0, #8 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0x56 - str r0, [sp, #0xc] - mov r0, #0x74 - mov r1, #2 - add r2, r4, #0 - mov r3, #5 - bl sub_02006E60 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - mov r0, #8 - mov r2, #0 - str r0, [sp, #8] - add r0, r4, #0 - mov r1, #5 - add r3, r2, #0 - bl sub_02019E2C - add r0, r4, #0 - mov r1, #5 - bl sub_02019448 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov97_0222DC20 - - thumb_func_start ov97_0222DC9C -ov97_0222DC9C: ; 0x0222DC9C - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x56 - str r0, [sp, #4] - mov r0, #0x74 - mov r1, #0 - add r3, r0, #0 - add r2, r1, #0 - add r3, #0x8c - bl sub_02006E84 - mov r0, #0 - str r0, [sp] - mov r0, #5 - lsl r0, r0, #0xa - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r0, #0x56 - str r0, [sp, #0xc] - mov r0, #0x74 - add r2, r4, #0 - add r3, r1, #0 - bl sub_02006E3C - mov r0, #0 - str r0, [sp] - mov r0, #6 - lsl r0, r0, #8 - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0x56 - str r0, [sp, #0xc] - mov r0, #0x74 - mov r1, #2 - add r2, r4, #0 - bl sub_02006E60 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - mov r0, #8 - mov r2, #0 - str r0, [sp, #8] - add r0, r4, #0 - mov r1, #1 - add r3, r2, #0 - bl sub_02019E2C - add r0, r4, #0 - mov r1, #1 - bl sub_02019448 - add r0, r4, #0 - bl ov97_0222DC20 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov97_0222DC9C - - thumb_func_start ov97_0222DD1C -ov97_0222DD1C: ; 0x0222DD1C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - str r0, [sp] - add r5, r1, #0 - add r7, r2, #0 - str r3, [sp, #4] - bl sub_0200682C - add r4, r0, #0 - ldr r0, [r4, #0x7c] - cmp r0, #0 - beq _0222DD38 - bl sub_02013A3C -_0222DD38: - add r0, r7, #0 - mov r1, #0x56 - bl sub_02013A04 - str r0, [r4, #0x7c] - ldr r2, _0222DDC8 ; =0x000001A5 - mov r0, #0 - mov r1, #0x1a - mov r3, #0x56 - bl sub_0200B144 - mov r6, #0 - str r0, [r4, #0x10] - cmp r7, #0 - ble _0222DD6A -_0222DD56: - ldr r0, [r4, #0x7c] - ldr r1, [r4, #0x10] - ldr r2, [r5, #0] - ldr r3, [r5, #4] - bl sub_02013A4C - add r6, r6, #1 - add r5, #8 - cmp r6, r7 - blt _0222DD56 -_0222DD6A: - ldr r0, [r4, #0x10] - bl sub_0200B190 - ldr r3, _0222DDCC ; =0x0223E5D0 - add r2, sp, #8 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0x7c] - str r0, [sp, #8] - add r0, sp, #8 - strh r7, [r0, #0x12] - ldrh r1, [r0, #0x12] - strh r1, [r0, #0x10] - ldr r0, [sp, #4] - str r0, [sp, #0x14] - ldr r0, [r4, #0x78] - cmp r0, #0 - beq _0222DDA2 - mov r1, #0 - add r2, r1, #0 - bl sub_02001384 -_0222DDA2: - mov r1, #0 - add r0, sp, #8 - add r2, r1, #0 - mov r3, #0x56 - bl sub_0200112C - str r0, [r4, #0x78] - mov r0, #0 - ldr r2, [sp, #0x40] - mvn r0, r0 - cmp r2, r0 - beq _0222DDC4 - add r4, #0x18 - ldr r0, [sp] - add r1, r4, #0 - bl ov97_0222DE78 -_0222DDC4: - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222DDC8: .word 0x000001A5 -_0222DDCC: .word Unk_ov97_0223E5D0 - thumb_func_end ov97_0222DD1C - - thumb_func_start ov97_0222DDD0 -ov97_0222DDD0: ; 0x0222DDD0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - str r0, [sp, #0x14] - add r7, r1, #0 - str r2, [sp, #0x1c] - bl sub_0200682C - str r0, [sp, #0x18] - ldr r0, [r0, #4] - mov r5, #0 - bl sub_0202442C - ldr r1, _0222DE74 ; =0x0223E568 - ldr r4, [sp, #0x18] - ldr r2, [r1, #0x50] - ldr r1, [r1, #0x54] - add r4, #0x28 - add r5, r5, #1 - str r2, [sp, #0x20] - str r1, [sp, #0x24] - bl sub_0202DD88 - cmp r0, #0 - beq _0222DE14 - lsl r6, r5, #3 - add r0, sp, #0x20 - add r1, r0, r6 - ldr r0, _0222DE74 ; =0x0223E568 - add r5, r5, #1 - ldr r3, [r0, #0x58] - ldr r2, [r0, #0x5c] - add r0, sp, #0x20 - str r3, [r0, r6] - str r2, [r1, #4] -_0222DE14: - lsl r6, r5, #3 - add r0, sp, #0x20 - add r1, r0, r6 - ldr r0, _0222DE74 ; =0x0223E568 - ldr r3, [r0, #0x60] - ldr r2, [r0, #0x64] - add r0, sp, #0x20 - str r3, [r0, r6] - str r2, [r1, #4] - ldr r0, [r4, #0] - cmp r0, #0 - bne _0222DE52 - mov r0, #7 - str r0, [sp] - mov r0, #0x10 - str r0, [sp, #4] - add r0, r5, #1 - lsl r0, r0, #0x19 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r2, #0 - lsl r0, r7, #0x10 - str r2, [sp, #0xc] - lsr r0, r0, #0x10 - str r0, [sp, #0x10] - ldr r0, [sp, #0x18] - add r1, r4, #0 - ldr r0, [r0, #0] - mov r3, #8 - bl sub_0201A7E8 -_0222DE52: - add r0, r4, #0 - mov r1, #1 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - ldr r0, [sp, #0x1c] - add r1, sp, #0x20 - str r0, [sp] - ldr r0, [sp, #0x14] - add r2, r5, #1 - add r3, r4, #0 - bl ov97_0222DD1C - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222DE74: .word Unk_ov97_0223E568 - thumb_func_end ov97_0222DDD0 - - thumb_func_start ov97_0222DE78 -ov97_0222DE78: ; 0x0222DE78 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - add r7, r2, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r2, _0222DF08 ; =0x000001A5 - mov r0, #1 - mov r1, #0x1a - mov r3, #0x56 - bl sub_0200B144 - str r0, [r4, #0x10] - mov r0, #0x56 - bl sub_0200B358 - str r0, [r4, #0xc] - mov r0, #1 - mov r1, #6 - bl sub_02002DF8 - add r1, r0, #0 - add r0, r5, #0 - bl sub_0201ADA4 - ldr r6, [r4, #0x14] - cmp r6, #0 - bne _0222DEC0 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - add r2, r7, #0 - mov r3, #0x56 - bl sub_0200B29C - add r6, r0, #0 -_0222DEC0: - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #0x68] - mov r1, #1 - str r0, [sp, #4] - ldr r0, _0222DF0C ; =0x0001020F - add r2, r6, #0 - str r0, [sp, #8] - str r3, [sp, #0xc] - add r0, r5, #0 - bl sub_0201D78C - str r0, [r4, #0x6c] - ldr r0, [r4, #0x14] - cmp r0, #0 - bne _0222DEE6 - add r0, r6, #0 - bl sub_020237BC -_0222DEE6: - add r0, r5, #0 - mov r1, #0 - mov r2, #1 - mov r3, #2 - bl sub_0200E060 - ldr r0, [r4, #0x10] - bl sub_0200B190 - ldr r0, [r4, #0xc] - bl sub_0200B3F0 - mov r0, #0xff - str r0, [r4, #0x68] - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222DF08: .word 0x000001A5 -_0222DF0C: .word 0x0001020F - thumb_func_end ov97_0222DE78 - - thumb_func_start ov97_0222DF10 -ov97_0222DF10: ; 0x0222DF10 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r1, #0 - add r6, r2, #0 - bl sub_0200682C - mov r0, #0x25 - mov r1, #0x56 - bl sub_02023790 - add r1, r6, #0 - mov r2, #0x24 - add r4, r0, #0 - bl sub_02023D8C - mov r0, #0 - mov r1, #6 - bl sub_02002DF8 - add r1, r0, #0 - add r0, r5, #0 - bl sub_0201ADA4 - mov r1, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0222DF6C ; =0x0001020F - add r2, r4, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r1, #0 - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r5, #0 - mov r1, #0 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DC48 - add r0, r4, #0 - bl sub_020237BC - add sp, #0x10 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_0222DF6C: .word 0x0001020F - thumb_func_end ov97_0222DF10 - - thumb_func_start ov97_0222DF70 -ov97_0222DF70: ; 0x0222DF70 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - add r6, r2, #0 - bl sub_0200682C - ldr r0, [r0, #0x78] - bl sub_02001288 - add r4, r0, #0 - mov r0, #1 - mvn r0, r0 - cmp r4, r0 - beq _0222DF94 - add r0, r0, #1 - cmp r4, r0 - beq _0222DFCA - b _0222DFAE -_0222DF94: - ldr r0, _0222DFCC ; =0x000005DC - bl sub_02005748 - cmp r6, #0 - beq _0222DFCA - add r0, r7, #0 - blx r6 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - beq _0222DFCA - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_0222DFAE: - ldr r0, _0222DFCC ; =0x000005DC - bl sub_02005748 - cmp r4, #0 - beq _0222DFCA - ldr r0, _0222DFD0 ; =0x0223F1A8 - str r4, [r0, #0x10] - add r0, r7, #0 - blx r4 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - beq _0222DFCA - str r0, [r5, #0] -_0222DFCA: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222DFCC: .word 0x000005DC -_0222DFD0: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_0222DF70 - - thumb_func_start ov97_0222DFD4 -ov97_0222DFD4: ; 0x0222DFD4 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - add r4, r1, #0 - bl sub_0201D710 - mov r0, #0 - add r1, r0, #0 - mov r2, #0x56 - bl sub_02002E7C - mov r0, #0 - mov r1, #0x20 - mov r2, #0x56 - bl sub_02002E7C - ldr r0, [r4, #8] - bl sub_02027B50 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #0x56 - str r0, [sp, #4] - ldr r0, [r4, #0] - mov r1, #0 - mov r2, #1 - mov r3, #2 - bl sub_0200DD0C - mov r0, #1 - str r0, [sp] - mov r0, #0x56 - str r0, [sp, #4] - ldr r0, [r4, #0] - mov r1, #0 - mov r2, #0x1f - mov r3, #3 - bl sub_0200DAA4 - mov r0, #5 - ldr r1, _0222E07C ; =0x00007D8C - lsl r0, r0, #0x18 - strh r1, [r0] - add r0, r4, #0 - add r0, #0x18 - bl sub_0201A7CC - cmp r0, #0 - bne _0222E058 - mov r0, #0x13 - str r0, [sp] - mov r0, #0x1b - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - add r1, r4, #0 - str r2, [sp, #0xc] - mov r0, #0x28 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, #0x18 - mov r3, #2 - bl sub_0201A7E8 -_0222E058: - add r1, r4, #0 - add r0, r5, #0 - add r1, #0x18 - mov r2, #0 - bl ov97_0222DE78 - add r0, r5, #0 - mov r1, #0xc4 - mov r2, #0 - bl ov97_0222DDD0 - ldr r0, [r4, #0] - bl ov97_0222DC9C - mov r0, #1 - add sp, #0x14 - pop {r4, r5, pc} - nop -_0222E07C: .word 0x00007D8C - thumb_func_end ov97_0222DFD4 - - thumb_func_start ov97_0222E080 -ov97_0222E080: ; 0x0222E080 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r1, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r1, _0222E12C ; =0x000015E0 - add r0, r6, #0 - add r1, r4, r1 - bl ov97_02238EAC - cmp r0, #4 - bhi _0222E128 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0222E0A6: ; jump table - .short _0222E128 - _0222E0A6 - 2 ; case 0 - .short _0222E0B0 - _0222E0A6 - 2 ; case 1 - .short _0222E0DC - _0222E0A6 - 2 ; case 2 - .short _0222E0DC - _0222E0A6 - 2 ; case 3 - .short _0222E0F0 - _0222E0A6 - 2 ; case 4 -_0222E0B0: - ldr r1, _0222E130 ; =0x00001658 - add r0, r4, #0 - mov r2, #0xea - add r0, #0x8c - add r1, r4, r1 - lsl r2, r2, #2 - bl memcpy - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - add r0, r4, #0 - mov r1, #0x1b - add r0, #0x84 - str r1, [r0, #0] - mov r0, #0x13 - str r0, [r5, #0] - ldr r0, _0222E134 ; =0x000015DC - mov r1, #0 - str r1, [r4, r0] - pop {r4, r5, r6, pc} -_0222E0DC: - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - ldr r0, _0222E134 ; =0x000015DC - mov r1, #0 - str r1, [r4, r0] - mov r0, #0x11 - str r0, [r5, #0] - pop {r4, r5, r6, pc} -_0222E0F0: - mov r0, #0x9a - lsl r0, r0, #6 - add r0, r4, r0 - bl sub_0201ACF4 - mov r0, #0x9a - lsl r0, r0, #6 - add r0, r4, r0 - bl sub_0201A8FC - ldr r0, [r4, #0] - mov r1, #0 - bl sub_02019EBC - ldr r0, _0222E138 ; =0x000005DC - bl sub_02005748 - add r0, r6, #0 - mov r1, #0xc4 - mov r2, #0 - bl ov97_0222DDD0 - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF0C - mov r0, #3 - str r0, [r5, #0] -_0222E128: - pop {r4, r5, r6, pc} - nop -_0222E12C: .word 0x000015E0 -_0222E130: .word 0x00001658 -_0222E134: .word 0x000015DC -_0222E138: .word 0x000005DC - thumb_func_end ov97_0222E080 - - thumb_func_start ov97_0222E13C -ov97_0222E13C: ; 0x0222E13C - push {r3, r4, r5, r6, lr} - sub sp, #0x5c - add r5, r0, #0 - ldr r0, _0222E1CC ; =0x0000266C - ldr r4, [r5, r0] - mov r0, #0 - mvn r0, r0 - cmp r4, r0 - bne _0222E150 - mov r4, #0xb -_0222E150: - add r0, r5, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #0x10 - mov r1, #0 - bl sub_0201FF0C - ldr r0, [r5, #0] - mov r1, #0 - bl sub_02019EBC - mov r0, #0x56 - bl sub_0200B358 - mov r1, #2 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - ldr r2, _0222E1D0 ; =0x00002670 - mov r1, #0 - ldr r2, [r5, r2] - mov r3, #5 - add r6, r0, #0 - bl sub_0200B60C - mov r0, #0x1f - mov r1, #0x9a - str r0, [sp] - mov r0, #3 - lsl r1, r1, #6 - str r0, [sp, #4] - ldr r3, _0222E1D4 ; =0x000002B7 - add r0, sp, #8 - add r1, r5, r1 - mov r2, #1 - bl ov97_02237808 - add r0, sp, #8 - mov r1, #0x18 - mov r2, #0x10 - mov r3, #0x64 - bl ov97_02237858 - add r0, sp, #8 - mov r1, #0 - mov r2, #1 - bl ov97_02237860 - str r6, [sp, #0x1c] - str r4, [sp] - mov r2, #4 - ldr r0, [r5, #0] - add r1, sp, #8 - add r3, r2, #0 - bl ov97_0223795C - add r0, r6, #0 - bl sub_0200B3F0 - add sp, #0x5c - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0222E1CC: .word 0x0000266C -_0222E1D0: .word 0x00002670 -_0222E1D4: .word 0x000002B7 - thumb_func_end ov97_0222E13C - - thumb_func_start ov97_0222E1D8 -ov97_0222E1D8: ; 0x0222E1D8 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r1, r0, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #3 - bne _0222E1EE - mov r4, #0x15 - b _0222E218 -_0222E1EE: - cmp r0, #4 - bne _0222E1F6 - mov r4, #0x19 - b _0222E218 -_0222E1F6: - cmp r0, #2 - bne _0222E1FE - mov r4, #0x16 - b _0222E218 -_0222E1FE: - cmp r0, #1 - bne _0222E206 - mov r4, #0x1b - b _0222E218 -_0222E206: - cmp r0, #5 - bne _0222E218 - add r0, r5, #0 - add r1, #0x18 - mov r2, #9 - mov r3, #0x34 - bl ov97_0222E228 - pop {r3, r4, r5, pc} -_0222E218: - add r0, r5, #0 - add r1, #0x18 - add r2, r4, #0 - mov r3, #0x33 - bl ov97_0222E228 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov97_0222E1D8 - - thumb_func_start ov97_0222E228 -ov97_0222E228: ; 0x0222E228 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - str r0, [sp] - add r6, r1, #0 - add r5, r2, #0 - add r7, r3, #0 - bl sub_0200682C - add r4, r0, #0 - cmp r6, #0 - beq _0222E282 - cmp r5, #0 - beq _0222E282 - ldr r2, _0222E2A8 ; =0x000001A5 - mov r0, #1 - mov r1, #0x1a - mov r3, #0x56 - bl sub_0200B144 - str r0, [sp, #4] - mov r0, #0x56 - bl sub_0200B358 - ldr r1, [sp, #4] - add r2, r5, #0 - mov r3, #0x56 - str r0, [sp, #8] - bl sub_0200B29C - str r0, [r4, #0x14] - mov r0, #1 - str r0, [r4, #0x68] - ldr r0, [sp] - add r1, r6, #0 - add r2, r5, #0 - bl ov97_0222DE78 - ldr r0, [sp, #8] - str r7, [r4, #0x74] - bl sub_0200B3F0 - ldr r0, [sp, #4] - bl sub_0200B190 - b _0222E2A2 -_0222E282: - ldr r0, [r4, #0x6c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_0201D724 - cmp r0, #0 - bne _0222E2A2 - ldr r0, [r4, #0x14] - bl sub_020237BC - mov r0, #0 - str r0, [r4, #0x14] - str r0, [r4, #0x68] - add sp, #0xc - ldr r0, [r4, #0x74] - pop {r4, r5, r6, r7, pc} -_0222E2A2: - mov r0, #0x32 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E2A8: .word 0x000001A5 - thumb_func_end ov97_0222E228 - - thumb_func_start ov97_0222E2AC -ov97_0222E2AC: ; 0x0222E2AC - push {r3, lr} - ldr r1, _0222E2D8 ; =0x000015D4 - ldr r0, [r0, r1] - cmp r0, #4 - bhi _0222E2D4 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0222E2C2: ; jump table - .short _0222E2D4 - _0222E2C2 - 2 ; case 0 - .short _0222E2CC - _0222E2C2 - 2 ; case 1 - .short _0222E2D4 - _0222E2C2 - 2 ; case 2 - .short _0222E2D4 - _0222E2C2 - 2 ; case 3 - .short _0222E2D4 - _0222E2C2 - 2 ; case 4 -_0222E2CC: - bl ov97_0222D2DC - bl sub_02039794 -_0222E2D4: - pop {r3, pc} - nop -_0222E2D8: .word 0x000015D4 - thumb_func_end ov97_0222E2AC - - thumb_func_start ov97_0222E2DC -ov97_0222E2DC: ; 0x0222E2DC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov97_022301B0 - mov r0, #3 - mov r1, #0x56 - lsl r2, r0, #0x10 - bl sub_02017FC8 - ldr r1, _0222E384 ; =0x000029F8 - add r0, r5, #0 - mov r2, #0x56 - bl sub_0200681C - ldr r2, _0222E384 ; =0x000029F8 - mov r1, #0 - add r4, r0, #0 - bl memset - mov r0, #0x56 - bl sub_02018340 - str r0, [r4, #0] - bl sub_0201FF00 - bl sub_0201FF68 - bl ov97_02232054 - ldr r0, [r4, #0] - bl ov97_0222DBC4 - mov r0, #0 - add r1, r0, #0 - bl sub_0200F344 - mov r0, #1 - mov r1, #0 - bl sub_0200F344 - ldr r1, _0222E388 ; =0x00000496 - mov r0, #0xa - mov r2, #1 - bl sub_02004550 - mov r0, #0x56 - bl ov97_02237520 - bl ov97_02237624 - cmp r0, #0 - beq _0222E358 - ldr r0, _0222E38C ; =0x000015D4 - mov r1, #2 - str r1, [r4, r0] - ldr r0, _0222E390 ; =0x020E4C40 - ldrb r0, [r0] - bl sub_02017B70 - mov r0, #1 - bl ov97_02238400 -_0222E358: - ldr r0, _0222E394 ; =0x000005C8 - mov r1, #0x1d - str r1, [r4, r0] - add r0, r5, #0 - bl sub_02006840 - ldr r0, [r0, #8] - str r0, [r4, #4] - bl sub_02025E44 - str r0, [r4, #8] - mov r0, #0xff - mov r2, #3 - str r0, [r4, #0x68] - mov r0, #0 - mov r1, #0x5b - lsl r2, r2, #8 - bl sub_02017FC8 - mov r0, #1 - pop {r3, r4, r5, pc} - nop -_0222E384: .word 0x000029F8 -_0222E388: .word 0x00000496 -_0222E38C: .word 0x000015D4 -_0222E390: .word 0x020E4C40 -_0222E394: .word 0x000005C8 - thumb_func_end ov97_0222E2DC - - thumb_func_start ov97_0222E398 -ov97_0222E398: ; 0x0222E398 - push {r4, r5, lr} - sub sp, #0x2c - add r4, r0, #0 - ldr r0, _0222E530 ; =0x00004E21 - mov r3, #1 - str r0, [sp] - str r3, [sp, #4] - mov r1, #0x56 - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xd6 - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x27 - bl sub_0200985C - str r0, [r4, #0x58] - ldr r0, _0222E530 ; =0x00004E21 - mov r1, #0x56 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #0xc] - add r1, #0xda - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x24 - mov r3, #0 - bl sub_020098B8 - str r0, [r4, #0x5c] - ldr r0, _0222E530 ; =0x00004E21 - mov r1, #0x56 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xde - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x26 - mov r3, #1 - bl sub_02009918 - str r0, [r4, #0x60] - ldr r0, _0222E530 ; =0x00004E21 - mov r1, #0x56 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xe2 - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x25 - mov r3, #1 - bl sub_02009918 - str r0, [r4, #0x64] - ldr r0, _0222E534 ; =0x00004E22 - mov r1, #0x56 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xd6 - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x27 - mov r3, #1 - bl sub_0200985C - str r0, [r4, #0x70] - ldr r0, _0222E534 ; =0x00004E22 - mov r1, #0x56 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #0xc] - add r1, #0xda - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x24 - mov r3, #0 - bl sub_020098B8 - str r0, [r4, #0x74] - ldr r0, _0222E534 ; =0x00004E22 - mov r1, #0x56 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xde - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x26 - mov r3, #1 - bl sub_02009918 - str r0, [r4, #0x78] - ldr r0, _0222E534 ; =0x00004E22 - mov r1, #0x56 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4, #0xc] - add r1, #0xe2 - ldr r0, [r0, r1] - mov r1, #0x74 - mov r2, #0x25 - mov r3, #1 - bl sub_02009918 - str r0, [r4, #0x7c] - ldr r0, [r4, #0x58] - bl sub_0200A328 - ldr r0, [r4, #0x70] - bl sub_0200A328 - ldr r0, [r4, #0x5c] - bl sub_0200A640 - ldr r0, [r4, #0x74] - bl sub_0200A640 - mov r0, #0 - mov r5, #0x4b - ldr r2, [r4, #0xc] - ldr r1, _0222E530 ; =0x00004E21 - mvn r0, r0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - lsl r5, r5, #2 - ldr r3, [r2, r5] - str r3, [sp, #0x14] - add r3, r5, #4 - ldr r3, [r2, r3] - str r3, [sp, #0x18] - add r3, r5, #0 - add r3, #8 - ldr r3, [r2, r3] - add r5, #0xc - str r3, [sp, #0x1c] - ldr r2, [r2, r5] - add r3, r1, #0 - str r2, [sp, #0x20] - str r0, [sp, #0x24] - str r0, [sp, #0x28] - add r0, r4, #0 - add r0, #0x10 - add r2, r1, #0 - bl sub_020093B4 - ldr r2, [r4, #0xc] - ldr r1, _0222E534 ; =0x00004E22 - mov r0, #0 - mov r5, #0x4b - add r4, #0x10 - str r1, [sp] - mvn r0, r0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - lsl r5, r5, #2 - ldr r3, [r2, r5] - add r4, #0x24 - str r3, [sp, #0x14] - add r3, r5, #4 - ldr r3, [r2, r3] - str r3, [sp, #0x18] - add r3, r5, #0 - add r3, #8 - ldr r3, [r2, r3] - add r5, #0xc - str r3, [sp, #0x1c] - ldr r2, [r2, r5] - add r3, r1, #0 - str r2, [sp, #0x20] - str r0, [sp, #0x24] - str r0, [sp, #0x28] - add r0, r4, #0 - add r2, r1, #0 - bl sub_020093B4 - add sp, #0x2c - pop {r4, r5, pc} - ; .align 2, 0 -_0222E530: .word 0x00004E21 -_0222E534: .word 0x00004E22 - thumb_func_end ov97_0222E398 - - thumb_func_start ov97_0222E538 -ov97_0222E538: ; 0x0222E538 - push {r4, lr} - sub sp, #0x30 - cmp r1, #1 - beq _0222E544 - mov r3, #1 - b _0222E546 -_0222E544: - mov r3, #0 -_0222E546: - ldr r2, [r0, #0xc] - add r0, #0x10 - ldr r2, [r2, #0] - str r2, [sp] - mov r2, #0x24 - mul r2, r3 - add r0, r0, r2 - mov r3, #1 - lsl r3, r3, #0xc - mov r2, #0 - str r0, [sp, #4] - str r2, [sp, #0x10] - str r3, [sp, #0x14] - str r3, [sp, #0x18] - str r3, [sp, #0x1c] - add r0, sp, #0 - strh r2, [r0, #0x20] - lsl r0, r3, #7 - str r0, [sp, #8] - mov r0, #0xa - lsl r2, r3, #5 - str r0, [sp, #0x24] - mov r0, #0x56 - str r2, [sp, #0xc] - str r1, [sp, #0x28] - str r0, [sp, #0x2c] - cmp r1, #2 - bne _0222E584 - lsl r0, r3, #8 - add r0, r2, r0 - str r0, [sp, #0xc] -_0222E584: - add r0, sp, #0 - bl sub_02021AA0 - add r4, r0, #0 - beq _0222E5AC - mov r1, #1 - bl sub_02021CC8 - add r0, r4, #0 - mov r1, #0 - bl sub_02021E80 - add r0, r4, #0 - mov r1, #0 - bl sub_02021D6C - add r0, r4, #0 - mov r1, #1 - bl sub_02021CAC -_0222E5AC: - add r0, r4, #0 - add sp, #0x30 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov97_0222E538 - - thumb_func_start ov97_0222E5B4 -ov97_0222E5B4: ; 0x0222E5B4 - push {r4, lr} - mov r1, #1 - add r4, r0, #0 - bl ov97_0222E538 - ldr r1, _0222E608 ; =0x00003014 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #2 - bl sub_02021DCC - ldr r0, _0222E608 ; =0x00003014 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021E50 - ldr r0, _0222E608 ; =0x00003014 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021CAC - ldr r0, _0222E608 ; =0x00003014 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021F58 - ldr r0, _0222E608 ; =0x00003014 - mov r1, #2 - ldr r0, [r4, r0] - bl sub_02021CF8 - ldr r0, _0222E608 ; =0x00003014 - ldr r0, [r4, r0] - bl sub_02021D28 - mov r1, #2 - lsl r1, r1, #0x12 - str r1, [r0, #0] - mov r1, #6 - lsl r1, r1, #0x10 - str r1, [r0, #4] - pop {r4, pc} - ; .align 2, 0 -_0222E608: .word 0x00003014 - thumb_func_end ov97_0222E5B4 - - thumb_func_start ov97_0222E60C -ov97_0222E60C: ; 0x0222E60C - push {r4, lr} - mov r1, #2 - add r4, r0, #0 - bl ov97_0222E538 - ldr r1, _0222E660 ; =0x00003060 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #4 - bl sub_02021DCC - ldr r0, _0222E660 ; =0x00003060 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021E50 - ldr r0, _0222E660 ; =0x00003060 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021CAC - ldr r0, _0222E660 ; =0x00003060 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021F58 - ldr r0, _0222E660 ; =0x00003060 - mov r1, #2 - ldr r0, [r4, r0] - bl sub_02021CF8 - ldr r0, _0222E660 ; =0x00003060 - ldr r0, [r4, r0] - bl sub_02021D28 - mov r1, #2 - lsl r1, r1, #0x12 - str r1, [r0, #0] - lsl r1, r1, #1 - str r1, [r0, #4] - pop {r4, pc} - nop -_0222E660: .word 0x00003060 - thumb_func_end ov97_0222E60C - - thumb_func_start ov97_0222E664 -ov97_0222E664: ; 0x0222E664 - push {r4, lr} - add r4, r0, #0 - ldr r0, _0222E678 ; =0x00003014 - ldr r0, [r4, r0] - bl sub_02021BD4 - ldr r0, _0222E678 ; =0x00003014 - mov r1, #0 - str r1, [r4, r0] - pop {r4, pc} - ; .align 2, 0 -_0222E678: .word 0x00003014 - thumb_func_end ov97_0222E664 - - thumb_func_start ov97_0222E67C -ov97_0222E67C: ; 0x0222E67C - push {r4, lr} - add r4, r0, #0 - ldr r0, _0222E690 ; =0x00003060 - ldr r0, [r4, r0] - bl sub_02021BD4 - ldr r0, _0222E690 ; =0x00003060 - mov r1, #0 - str r1, [r4, r0] - pop {r4, pc} - ; .align 2, 0 -_0222E690: .word 0x00003060 - thumb_func_end ov97_0222E67C - - thumb_func_start ov97_0222E694 -ov97_0222E694: ; 0x0222E694 - push {r3, r4, r5, r6, r7, lr} - mov r6, #2 - ldr r7, _0222E6EC ; =0x00001854 - str r0, [sp] - mov r4, #0 - add r5, r0, #0 - lsl r6, r6, #0xc -_0222E6A2: - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - cmp r0, #0 - beq _0222E6B2 - add r1, r6, #0 - bl sub_02021E2C -_0222E6B2: - ldr r0, [r5, r7] - cmp r0, #0 - beq _0222E6BE - add r1, r6, #0 - bl sub_02021E2C -_0222E6BE: - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E6A2 - ldr r1, _0222E6F0 ; =0x00003014 - ldr r0, [sp] - ldr r0, [r0, r1] - cmp r0, #0 - beq _0222E6D8 - mov r1, #2 - lsl r1, r1, #0xc - bl sub_02021E2C -_0222E6D8: - ldr r1, _0222E6F4 ; =0x00003060 - ldr r0, [sp] - ldr r0, [r0, r1] - cmp r0, #0 - beq _0222E6EA - mov r1, #2 - lsl r1, r1, #0xc - bl sub_02021E2C -_0222E6EA: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E6EC: .word 0x00001854 -_0222E6F0: .word 0x00003014 -_0222E6F4: .word 0x00003060 - thumb_func_end ov97_0222E694 - - thumb_func_start ov97_0222E6F8 -ov97_0222E6F8: ; 0x0222E6F8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r4, #0 - add r5, r6, #0 - mov r7, #1 -_0222E702: - add r0, r6, #0 - add r1, r7, #0 - bl ov97_0222E538 - add r1, r5, #0 - add r1, #0x94 - str r0, [r1, #0] - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #1 - bl sub_02021DCC - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #0 - bl sub_02021E50 - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E702 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov97_0222E6F8 - - thumb_func_start ov97_0222E734 -ov97_0222E734: ; 0x0222E734 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r4, #0 - add r5, r6, #0 - add r7, r4, #0 -_0222E73E: - cmp r4, #0x14 - bge _0222E76A - add r0, r6, #0 - mov r1, #1 - bl ov97_0222E538 - add r1, r5, #0 - add r1, #0x94 - str r0, [r1, #0] - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #1 - bl sub_02021DCC - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #0 - bl sub_02021E50 - b _0222E770 -_0222E76A: - add r0, r5, #0 - add r0, #0x94 - str r7, [r0, #0] -_0222E770: - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E73E - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov97_0222E734 - - thumb_func_start ov97_0222E77C -ov97_0222E77C: ; 0x0222E77C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r7, _0222E7B0 ; =0x00001854 - mov r4, #0 - add r5, r6, #0 -_0222E786: - add r0, r6, #0 - mov r1, #2 - bl ov97_0222E538 - ldr r1, _0222E7B0 ; =0x00001854 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #5 - bl sub_02021DCC - ldr r0, [r5, r7] - mov r1, #0 - bl sub_02021E50 - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E786 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222E7B0: .word 0x00001854 - thumb_func_end ov97_0222E77C - - thumb_func_start ov97_0222E7B4 -ov97_0222E7B4: ; 0x0222E7B4 - push {r4, r5, r6, lr} - mov r4, #0 - add r5, r0, #0 - add r6, r4, #0 -_0222E7BC: - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - cmp r0, #0 - beq _0222E7DA - bl sub_02021BD4 - add r0, r5, #0 - add r0, #0x94 - str r6, [r0, #0] - add r0, r5, #0 - add r0, #0xd0 - ldr r0, [r0, #0] - bl sub_0200DA58 -_0222E7DA: - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E7BC - pop {r4, r5, r6, pc} - thumb_func_end ov97_0222E7B4 - - thumb_func_start ov97_0222E7E4 -ov97_0222E7E4: ; 0x0222E7E4 - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - ldr r7, _0222E80C ; =0x00001890 - add r5, r0, #0 - add r6, r4, #0 -_0222E7EE: - ldr r0, _0222E810 ; =0x00001854 - ldr r0, [r5, r0] - bl sub_02021BD4 - ldr r0, _0222E810 ; =0x00001854 - str r6, [r5, r0] - ldr r0, [r5, r7] - bl sub_0200DA58 - add r4, r4, #1 - add r5, #0x4c - cmp r4, #0x50 - blt _0222E7EE - pop {r3, r4, r5, r6, r7, pc} - nop -_0222E80C: .word 0x00001890 -_0222E810: .word 0x00001854 - thumb_func_end ov97_0222E7E4 - - thumb_func_start ov97_0222E814 -ov97_0222E814: ; 0x0222E814 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xb8 - add r5, r0, #0 - str r0, [sp] - add r0, #0x88 - ldr r3, _0222EA58 ; =0x0223D758 - mov r4, #0 - add r7, sp, #0x64 - str r0, [sp] - add r2, sp, #0x10 - mov r6, #0xa -_0222E82A: - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - sub r6, r6, #1 - bne _0222E82A - ldr r0, [r3, #0] - str r0, [r2, #0] -_0222E836: - mov r2, #2 - add r0, r5, #0 - mov r1, #6 - lsl r2, r2, #0x12 - add r0, #0x98 - str r2, [r0, #0] - add r0, r5, #0 - lsl r1, r1, #0x10 - add r0, #0x9c - str r1, [r0, #0] - add r0, r5, #0 - lsr r1, r2, #5 - add r0, #0xa4 - str r1, [r0, #0] - mov r1, #5 - add r0, r5, #0 - lsl r1, r1, #0xc - add r0, #0xa8 - str r1, [r0, #0] - lsr r2, r4, #0x1f - lsl r1, r4, #0x1e - sub r1, r1, r2 - mov r0, #0x1e - ror r1, r0 - add r0, r5, #0 - add r1, r2, r1 - add r0, #0xb4 - str r1, [r0, #0] - add r0, r5, #0 - mov r1, #0 - add r0, #0xbc - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0x8c - str r1, [r0, #0] - add r0, r4, #0 - mov r1, #0xa - bl _s32_div_f - add r0, r0, #4 - cmp r0, #0 - ble _0222E89C - lsl r0, r0, #0xc - bl _f_itof - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222E8AA -_0222E89C: - lsl r0, r0, #0xc - bl _f_itof - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222E8AA: - bl _f_ftoi - add r1, r5, #0 - add r1, #0xa4 - str r0, [r1, #0] - cmp r4, #0x32 - ble _0222E8D2 - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - mov r0, #0x41 - lsl r0, r0, #2 - add r0, r4, r0 - add r1, r0, r1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - b _0222E95C -_0222E8D2: - cmp r4, #0x28 - ble _0222E8EE - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r4, #0 - add r0, #0xfa - add r1, r0, r1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - b _0222E95C -_0222E8EE: - cmp r4, #0x1e - ble _0222E90A - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r4, #0 - add r0, #0xf0 - add r1, r0, r1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - b _0222E95C -_0222E90A: - cmp r4, #0x19 - ble _0222E926 - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r4, #0 - add r0, #0xe6 - add r1, r0, r1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - b _0222E95C -_0222E926: - cmp r4, #0x14 - ble _0222E942 - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r4, #0 - add r0, #0xdc - add r1, r0, r1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - b _0222E95C -_0222E942: - add r6, sp, #0x10 - add r3, sp, #0x64 - mov r2, #0xa -_0222E948: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _0222E948 - ldr r0, [r6, #0] - str r0, [r3, #0] - add r0, r5, #0 - ldr r1, [r7, #0] - add r0, #0xb8 - str r1, [r0, #0] -_0222E95C: - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0, #0] - add r1, r0, #1 - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r0, r0, #1 - bl _d_itod - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _0222EA5C ; =0x66666666 - ldr r1, _0222EA60 ; =0x3FE66666 - bl _d_mul - bl _d_dtoi - add r1, r5, #0 - add r1, #0xb8 - str r0, [r1, #0] - add r0, r5, #0 - add r0, #0xb8 - ldr r0, [r0, #0] - add r1, r0, #1 - add r0, r5, #0 - add r0, #0xb8 - str r1, [r0, #0] - add r0, r5, #0 - mov r1, #0xf - add r0, #0xc0 - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0xc0 - ldr r1, [r0, #0] - add r0, r5, #0 - add r0, #0xc8 - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0xc0 - ldr r1, [r0, #0] - add r0, r5, #0 - add r0, #0xcc - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - bl sub_02021D28 - add r3, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #4 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - bl sub_0201D2E8 - mov r1, #0xe0 - bl _s32_div_f - add r1, #0x10 - cmp r1, #0 - ble _0222E9F6 - bl sub_0201D2E8 - mov r1, #0xe0 - bl _s32_div_f - add r1, #0x10 - lsl r0, r1, #0xc - bl _f_itof - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222EA10 -_0222E9F6: - bl sub_0201D2E8 - mov r1, #0xe0 - bl _s32_div_f - add r1, #0x10 - lsl r0, r1, #0xc - bl _f_itof - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222EA10: - bl _f_ftoi - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - add r1, sp, #4 - bl sub_02021C50 - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #0 - bl sub_02021CAC - ldr r0, _0222EA64 ; =ov97_0222EEB8 - ldr r1, [sp] - mov r2, #6 - bl sub_0200D9E8 - add r1, r5, #0 - add r1, #0xd0 - str r0, [r1, #0] - ldr r0, [sp] - add r4, r4, #1 - add r0, #0x4c - add r5, #0x4c - add r7, r7, #4 - str r0, [sp] - cmp r4, #0x50 - bge _0222EA54 - b _0222E836 -_0222EA54: - add sp, #0xb8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222EA58: .word 0x0223D758 -_0222EA5C: .word 0x66666666 -_0222EA60: .word 0x3FE66666 -_0222EA64: .word ov97_0222EEB8 - thumb_func_end ov97_0222E814 - - thumb_func_start ov97_0222EA68 -ov97_0222EA68: ; 0x0222EA68 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - add r7, r5, #0 - mov r4, #0 - add r7, #0x88 -_0222EA74: - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - cmp r0, #0 - bne _0222EA80 - b _0222EBBC -_0222EA80: - add r1, r5, #0 - mov r0, #2 - add r1, #0x98 - lsl r0, r0, #0x12 - str r0, [r1, #0] - add r1, r5, #0 - mov r0, #6 - add r1, #0x9c - lsl r0, r0, #0x10 - str r0, [r1, #0] - add r1, r5, #0 - add r1, #0xa4 - lsr r0, r0, #3 - str r0, [r1, #0] - add r1, r5, #0 - mov r0, #1 - add r1, #0xa8 - lsl r0, r0, #0xc - str r0, [r1, #0] - add r1, r5, #0 - add r1, #0xb4 - mov r0, #0xff - str r0, [r1, #0] - add r1, r5, #0 - add r1, #0xbc - mov r0, #0 - str r0, [r1, #0] - add r1, r5, #0 - add r1, #0x8c - str r0, [r1, #0] - add r1, r5, #0 - add r1, #0x90 - str r0, [r1, #0] - cmp r4, #0x1e - ble _0222EADA - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - add r0, r5, #0 - add r1, #0xf - add r0, #0xb8 - str r1, [r0, #0] - b _0222EB1C -_0222EADA: - cmp r4, #0x14 - ble _0222EAF2 - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - add r0, r5, #0 - add r1, #0xa - add r0, #0xb8 - str r1, [r0, #0] - b _0222EB1C -_0222EAF2: - cmp r4, #0xa - ble _0222EB0A - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r5, #0 - add r1, #0xa - add r0, #0xb8 - str r1, [r0, #0] - b _0222EB1C -_0222EB0A: - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - add r0, r5, #0 - add r1, r1, #5 - add r0, #0xb8 - str r1, [r0, #0] -_0222EB1C: - add r1, r5, #0 - add r1, #0xb8 - mov r0, #0 - str r0, [r1, #0] - add r0, r5, #0 - add r0, #0xc0 - ldr r1, [r0, #0] - add r0, r5, #0 - add r0, #0xc8 - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0xc0 - ldr r1, [r0, #0] - add r0, r5, #0 - add r0, #0xcc - str r1, [r0, #0] - bl sub_0201D2E8 - mov r1, #0x5a - lsl r1, r1, #2 - bl _s32_div_f - str r1, [sp] - bl sub_0201D2E8 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1b - sub r1, r1, r2 - mov r0, #0x1b - ror r1, r0 - ldr r0, [sp] - add r6, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r6, #0x40 - bl sub_0201D250 - add r1, r5, #0 - add r1, #0x98 - ldr r1, [r1, #0] - mul r0, r6 - add r0, r1, r0 - str r0, [sp, #4] - ldr r0, [sp] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - add r1, r5, #0 - add r1, #0x9c - ldr r1, [r1, #0] - mul r0, r6 - add r0, r1, r0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - add r1, sp, #4 - bl sub_02021C50 - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #1 - bl sub_02021DCC - add r0, r5, #0 - add r0, #0x94 - ldr r0, [r0, #0] - mov r1, #0 - bl sub_02021CAC - ldr r0, _0222EBCC ; =ov97_0222EEB8 - add r1, r7, #0 - mov r2, #6 - bl sub_0200D9E8 - add r1, r5, #0 - add r1, #0xd0 - str r0, [r1, #0] -_0222EBBC: - add r4, r4, #1 - add r5, #0x4c - add r7, #0x4c - cmp r4, #0x50 - bge _0222EBC8 - b _0222EA74 -_0222EBC8: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222EBCC: .word ov97_0222EEB8 - thumb_func_end ov97_0222EA68 - - thumb_func_start ov97_0222EBD0 -ov97_0222EBD0: ; 0x0222EBD0 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _0222ED98 ; =0x00001848 - mov r4, #0 - add r6, r5, r0 -_0222EBDC: - mov r1, #2 - ldr r0, _0222ED9C ; =0x00001858 - lsl r1, r1, #0x12 - str r1, [r5, r0] - mov r1, #6 - lsl r1, r1, #0x12 - add r0, r0, #4 - str r1, [r5, r0] - mov r1, #1 - ldr r0, _0222EDA0 ; =0x00001864 - lsl r1, r1, #0xe - str r1, [r5, r0] - mov r1, #5 - lsl r1, r1, #0xc - add r0, r0, #4 - str r1, [r5, r0] - lsr r2, r4, #0x1f - lsl r1, r4, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - add r1, r0, #4 - ldr r0, _0222EDA4 ; =0x00001874 - str r1, [r5, r0] - mov r1, #0 - add r0, #8 - str r1, [r5, r0] - ldr r0, _0222EDA8 ; =0x0000184C - str r1, [r5, r0] - bl sub_0201D2E8 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1e - sub r1, r1, r2 - mov r0, #0x1e - ror r1, r0 - add r0, r2, r1 - add r1, r0, #2 - ldr r0, _0222EDAC ; =0x00001884 - str r1, [r5, r0] - add r0, r4, #0 - mov r1, #0x1e - bl _s32_div_f - add r0, r0, #4 - cmp r0, #0 - ble _0222EC4E - lsl r0, r0, #0xc - bl _f_itof - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222EC5C -_0222EC4E: - lsl r0, r0, #0xc - bl _f_itof - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222EC5C: - bl _f_ftoi - ldr r1, _0222EDA0 ; =0x00001864 - cmp r4, #0x3c - str r0, [r5, r1] - ble _0222EC82 - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x46 - str r1, [r5, r0] - b _0222ED30 -_0222EC82: - cmp r4, #0x32 - ble _0222ECA0 - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x3c - str r1, [r5, r0] - b _0222ED30 -_0222ECA0: - cmp r4, #0x28 - ble _0222ECBE - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x32 - str r1, [r5, r0] - b _0222ED30 -_0222ECBE: - cmp r4, #0x1e - ble _0222ECDC - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x28 - str r1, [r5, r0] - b _0222ED30 -_0222ECDC: - cmp r4, #0x14 - ble _0222ECFA - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #0xa - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x1e - str r1, [r5, r0] - b _0222ED30 -_0222ECFA: - cmp r4, #0xa - ble _0222ED18 - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0x14 - str r1, [r5, r0] - b _0222ED30 -_0222ED18: - mov r0, #0x62 - mov r1, #5 - lsl r0, r0, #6 - str r1, [r5, r0] - bl sub_0201D2E8 - mov r1, #5 - bl _s32_div_f - ldr r0, _0222EDB0 ; =0x00001878 - add r1, #0xa - str r1, [r5, r0] -_0222ED30: - mov r0, #0x62 - lsl r0, r0, #6 - ldr r1, [r5, r0] - add r0, #8 - str r1, [r5, r0] - mov r0, #0x62 - lsl r0, r0, #6 - ldr r1, [r5, r0] - add r0, #0xc - str r1, [r5, r0] - ldr r0, _0222EDB4 ; =0x00001854 - ldr r0, [r5, r0] - bl sub_02021D28 - add r3, r0, #0 - add r2, sp, #0 - ldmia r3!, {r0, r1} - add r7, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - add r1, r7, #0 - str r0, [r2, #0] - mov r0, #2 - lsl r0, r0, #0x12 - str r0, [sp] - mov r0, #6 - lsl r0, r0, #0x12 - str r0, [sp, #4] - ldr r0, _0222EDB4 ; =0x00001854 - ldr r0, [r5, r0] - bl sub_02021C50 - ldr r0, _0222EDB4 ; =0x00001854 - mov r1, #1 - ldr r0, [r5, r0] - bl sub_02021CAC - ldr r0, _0222EDB8 ; =ov97_0222EEB8 - add r1, r6, #0 - mov r2, #6 - bl sub_0200D9E8 - ldr r1, _0222EDBC ; =0x00001890 - add r4, r4, #1 - str r0, [r5, r1] - add r5, #0x4c - add r6, #0x4c - cmp r4, #0x50 - bge _0222ED94 - b _0222EBDC -_0222ED94: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222ED98: .word 0x00001848 -_0222ED9C: .word 0x00001858 -_0222EDA0: .word 0x00001864 -_0222EDA4: .word 0x00001874 -_0222EDA8: .word 0x0000184C -_0222EDAC: .word 0x00001884 -_0222EDB0: .word 0x00001878 -_0222EDB4: .word 0x00001854 -_0222EDB8: .word ov97_0222EEB8 -_0222EDBC: .word 0x00001890 - thumb_func_end ov97_0222EBD0 - - thumb_func_start ov97_0222EDC0 -ov97_0222EDC0: ; 0x0222EDC0 - push {r4, r5, r6, lr} - sub sp, #0x18 - add r5, r1, #0 - mov r1, #0 - add r4, r2, #0 - add r6, r3, #0 - str r1, [sp] - str r1, [sp, #4] - bl _f_itof - add r1, r4, #0 - bl _f_sub - str r0, [sp, #8] - add r0, r5, #0 - bl _f_itof - add r1, r6, #0 - bl _f_sub - str r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [sp, #8] - add r1, r0, #0 - bl _f_mul - add r4, r0, #0 - ldr r0, [sp, #0xc] - add r1, r0, #0 - bl _f_mul - add r1, r0, #0 - add r0, r4, #0 - bl _f_add - mov r1, #0 - add r4, r0, #0 - bl _f_fgt - ldr r0, _0222EEB4 ; =0x45800000 - bls _0222EE28 - add r1, r4, #0 - bl _f_mul - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222EE36 -_0222EE28: - add r1, r4, #0 - bl _f_mul - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222EE36: - bl _f_ftoi - bl FX_Sqrt - bl _f_itof - ldr r1, _0222EEB4 ; =0x45800000 - bl _fdiv - ldr r1, [sp, #0x30] - add r4, r0, #0 - bl _f_flt - blo _0222EE6E - add r1, sp, #0x18 - mov r0, #0x1c - ldrsh r0, [r1, r0] - bl _f_itof - add r1, r4, #0 - bl _f_fgt - bhi _0222EE6E - mov r0, #0 - add r1, r4, #0 - bl _f_feq - bne _0222EE74 -_0222EE6E: - add sp, #0x18 - mov r0, #0 - pop {r4, r5, r6, pc} -_0222EE74: - ldr r0, [sp, #8] - ldr r1, [sp, #0x30] - bl _f_mul - add r1, r4, #0 - bl _fdiv - str r0, [sp, #0x10] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x30] - bl _f_mul - add r1, r4, #0 - bl _fdiv - str r0, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r1, [sp] - bl _f_add - ldr r1, [sp, #0x28] - str r0, [r1, #0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #4] - bl _f_add - ldr r1, [sp, #0x2c] - str r0, [r1, #0] - mov r0, #1 - add sp, #0x18 - pop {r4, r5, r6, pc} - nop -_0222EEB4: .word 0x45800000 - thumb_func_end ov97_0222EDC0 - - thumb_func_start ov97_0222EEB8 -ov97_0222EEB8: ; 0x0222EEB8 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r1, #0 - ldr r0, [r5, #0x30] - cmp r0, #0 - ldr r0, [r5, #0xc] - beq _0222EED6 - mov r1, #0 - bl sub_02021E50 - ldr r0, [r5, #0x30] - add sp, #0x24 - sub r0, r0, #1 - str r0, [r5, #0x30] - pop {r4, r5, r6, r7, pc} -_0222EED6: - mov r1, #1 - bl sub_02021CAC - ldr r0, [r5, #0xc] - bl sub_02021D28 - add r3, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x18 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - ldr r0, [sp, #0x18] - bl _f_itof - ldr r1, _0222F200 ; =0x45800000 - bl _fdiv - add r6, r0, #0 - ldr r0, [sp, #0x1c] - bl _f_itof - ldr r1, _0222F200 ; =0x45800000 - bl _fdiv - add r7, r0, #0 - ldr r0, [r5, #0x1c] - bl _f_itof - ldr r1, _0222F200 ; =0x45800000 - bl _fdiv - add r4, r0, #0 - ldr r0, [r5, #0x20] - bl _f_itof - ldr r1, _0222F200 ; =0x45800000 - bl _fdiv - bl _f_ftoi - add r1, sp, #0x14 - str r1, [sp] - add r1, sp, #0x10 - str r1, [sp, #4] - str r4, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - lsl r0, r0, #4 - lsl r1, r1, #4 - asr r0, r0, #0x10 - asr r1, r1, #0x10 - add r2, r6, #0 - add r3, r7, #0 - bl ov97_0222EDC0 - cmp r0, #0 - beq _0222EFCA - ldr r0, [r5, #0x24] - cmp r0, #0 - bne _0222EFCA - ldr r0, [sp, #0x14] - mov r1, #0 - bl _f_fgt - ldr r0, _0222F200 ; =0x45800000 - bls _0222EF70 - ldr r1, [sp, #0x14] - bl _f_mul - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222EF7E -_0222EF70: - ldr r1, [sp, #0x14] - bl _f_mul - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222EF7E: - bl _f_ftoi - ldr r1, [sp, #0x18] - add r0, r1, r0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x10] - mov r1, #0 - bl _f_fgt - ldr r0, _0222F200 ; =0x45800000 - bls _0222EFA6 - ldr r1, [sp, #0x10] - bl _f_mul - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222EFB4 -_0222EFA6: - ldr r1, [sp, #0x10] - bl _f_mul - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222EFB4: - bl _f_ftoi - ldr r1, [sp, #0x1c] - add r0, r1, r0 - str r0, [sp, #0x1c] - ldr r0, [r5, #0xc] - add r1, sp, #0x18 - bl sub_02021C50 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_0222EFCA: - ldr r0, [r5, #0x24] - cmp r0, #0 - beq _0222EFD8 - cmp r0, #1 - beq _0222F04E - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_0222EFD8: - ldr r1, [r5, #0x10] - ldr r0, [sp, #0x18] - sub r0, r1, r0 - cmp r0, #0 - ble _0222EFF4 - lsl r0, r0, #0xc - bl _f_itof - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222F002 -_0222EFF4: - lsl r0, r0, #0xc - bl _f_itof - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222F002: - add r4, r0, #0 - ldr r1, [r5, #0x14] - ldr r0, [sp, #0x1c] - sub r0, r1, r0 - cmp r0, #0 - ble _0222F020 - lsl r0, r0, #0xc - bl _f_itof - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222F02E -_0222F020: - lsl r0, r0, #0xc - bl _f_itof - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222F02E: - bl _f_ftoi - add r6, r0, #0 - add r0, r4, #0 - bl _f_ftoi - add r1, r0, #0 - add r0, r6, #0 - bl FX_Atan2Idx - str r0, [r5, #0x28] - ldr r0, [r5, #0x24] - add sp, #0x24 - add r0, r0, #1 - str r0, [r5, #0x24] - pop {r4, r5, r6, r7, pc} -_0222F04E: - ldr r0, [r5, #4] - cmp r0, #0x14 - bge _0222F05A - add r0, r0, #1 - str r0, [r5, #4] - b _0222F05E -_0222F05A: - mov r0, #1 - str r0, [r5, #8] -_0222F05E: - ldr r0, [r5, #0x28] - add r0, #8 - str r0, [r5, #0x28] - ldr r0, [r5, #0x2c] - cmp r0, #0 - bne _0222F0B4 - ldr r0, [r5, #0x34] - mov r1, #0x5a - add r0, #8 - lsl r1, r1, #2 - str r0, [r5, #0x34] - bl _s32_div_f - lsl r0, r1, #0x10 - str r1, [r5, #0x34] - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x38] - mul r0, r1 - asr r0, r0, #0xc - str r0, [r5, #0x40] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r2, [r5, #0x10] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r2, [r5, #0x14] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x1c] - b _0222F32C -_0222F0B4: - cmp r0, #1 - bne _0222F102 - ldr r0, [r5, #0x34] - mov r1, #0x5a - add r0, #8 - lsl r1, r1, #2 - str r0, [r5, #0x34] - bl _s32_div_f - lsl r0, r1, #0x10 - str r1, [r5, #0x34] - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x38] - mul r0, r1 - asr r0, r0, #0xc - str r0, [r5, #0x44] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r2, [r5, #0x10] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r2, [r5, #0x14] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x1c] - b _0222F32C -_0222F102: - cmp r0, #2 - bne _0222F160 - ldr r0, [r5, #0x34] - mov r1, #0x5a - add r0, #8 - lsl r1, r1, #2 - str r0, [r5, #0x34] - bl _s32_div_f - lsl r0, r1, #0x10 - str r1, [r5, #0x34] - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x38] - mul r0, r1 - asr r0, r0, #0xc - str r0, [r5, #0x44] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r3, [r5, #0x10] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r3, [r5, #0x14] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x1c] - b _0222F32C -_0222F160: - cmp r0, #3 - bne _0222F1BE - ldr r0, [r5, #0x34] - mov r1, #0x5a - add r0, #8 - lsl r1, r1, #2 - str r0, [r5, #0x34] - bl _s32_div_f - lsl r0, r1, #0x10 - str r1, [r5, #0x34] - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x38] - mul r0, r1 - asr r0, r0, #0xc - str r0, [r5, #0x40] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r3, [r5, #0x10] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r3, [r5, #0x14] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x1c] - b _0222F32C -_0222F1BE: - cmp r0, #4 - bne _0222F204 - ldr r1, [r5, #0x38] - cmp r1, #0x60 - bge _0222F1CE - ldr r0, [r5, #0x3c] - add r0, r1, r0 - str r0, [r5, #0x38] -_0222F1CE: - ldr r0, [r5, #0x38] - str r0, [r5, #0x40] - ldr r0, [r5, #0x38] - str r0, [r5, #0x44] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r2, [r5, #0x10] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r2, [r5, #0x14] - mul r0, r1 - add r0, r2, r0 - str r0, [sp, #0x1c] - b _0222F32C - ; .align 2, 0 -_0222F200: .word 0x45800000 -_0222F204: - cmp r0, #5 - bne _0222F256 - ldr r1, [r5, #0x38] - cmp r1, #0x60 - bge _0222F214 - ldr r0, [r5, #0x3c] - add r0, r1, r0 - str r0, [r5, #0x38] -_0222F214: - ldr r0, [r5, #0x38] - str r0, [r5, #0x40] - ldr r0, [r5, #0x38] - str r0, [r5, #0x44] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D250 - ldr r1, [r5, #0x40] - ldr r3, [r5, #0x10] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x18] - ldr r0, [r5, #0x28] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_0201D264 - ldr r1, [r5, #0x44] - ldr r3, [r5, #0x14] - add r2, r1, #0 - mul r2, r0 - mov r0, #0 - mvn r0, r0 - mul r0, r2 - add r0, r3, r0 - str r0, [sp, #0x1c] - b _0222F32C -_0222F256: - mov r0, #0xa - str r0, [r5, #4] - mov r0, #2 - ldr r1, [r5, #0x1c] - lsl r0, r0, #0xa - add r0, r1, r0 - str r0, [r5, #0x1c] - ldr r0, [sp, #0x18] - bl _f_itof - ldr r1, _0222F344 ; =0x45800000 - bl _fdiv - add r4, r0, #0 - ldr r0, [sp, #0x1c] - bl _f_itof - ldr r1, _0222F344 ; =0x45800000 - bl _fdiv - add r6, r0, #0 - ldr r0, [r5, #0x1c] - bl _f_itof - ldr r1, _0222F344 ; =0x45800000 - bl _fdiv - add r1, sp, #0x14 - str r1, [sp] - add r1, sp, #0x10 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - lsl r0, r0, #4 - lsl r1, r1, #4 - asr r0, r0, #0x10 - asr r1, r1, #0x10 - add r2, r4, #0 - add r3, r6, #0 - bl ov97_0222EDC0 - cmp r0, #0 - beq _0222F328 - ldr r0, [sp, #0x14] - mov r1, #0 - bl _f_fgt - ldr r0, _0222F344 ; =0x45800000 - bls _0222F2D0 - ldr r1, [sp, #0x14] - bl _f_mul - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222F2DE -_0222F2D0: - ldr r1, [sp, #0x14] - bl _f_mul - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222F2DE: - bl _f_ftoi - ldr r1, [sp, #0x18] - add r0, r1, r0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x10] - mov r1, #0 - bl _f_fgt - ldr r0, _0222F344 ; =0x45800000 - bls _0222F306 - ldr r1, [sp, #0x10] - bl _f_mul - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _f_add - b _0222F314 -_0222F306: - ldr r1, [sp, #0x10] - bl _f_mul - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _f_sub -_0222F314: - bl _f_ftoi - ldr r1, [sp, #0x1c] - add r0, r1, r0 - str r0, [sp, #0x1c] - ldr r0, [r5, #0xc] - add r1, sp, #0x18 - bl sub_02021C50 - b _0222F32C -_0222F328: - mov r0, #1 - str r0, [r5, #8] -_0222F32C: - mov r1, #0x5a - ldr r0, [r5, #0x28] - lsl r1, r1, #2 - bl _s32_div_f - str r1, [r5, #0x28] - ldr r0, [r5, #0xc] - add r1, sp, #0x18 - bl sub_02021C50 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222F344: .word 0x45800000 - thumb_func_end ov97_0222EEB8 - - thumb_func_start ov97_0222F348 -ov97_0222F348: ; 0x0222F348 - add r3, r0, #0 - mov r2, #8 - ldrsb r2, [r3, r2] - ldr r3, _0222F358 ; =G2x_SetBlendBrightness_ - ldr r0, _0222F35C ; =0x04000050 - mov r1, #0x22 - bx r3 - nop -_0222F358: .word G2x_SetBlendBrightness_ -_0222F35C: .word 0x04000050 - thumb_func_end ov97_0222F348 - - thumb_func_start ov97_0222F360 -ov97_0222F360: ; 0x0222F360 - add r3, r0, #0 - mov r2, #8 - ldrsb r2, [r3, r2] - ldr r3, _0222F370 ; =G2x_SetBlendBrightness_ - ldr r0, _0222F374 ; =0x04001050 - mov r1, #0x22 - bx r3 - nop -_0222F370: .word G2x_SetBlendBrightness_ -_0222F374: .word 0x04001050 - thumb_func_end ov97_0222F360 - - thumb_func_start ov97_0222F378 -ov97_0222F378: ; 0x0222F378 - push {r4, lr} - add r4, r0, #0 - bl ov97_0222F348 - add r0, r4, #0 - bl ov97_0222F360 - pop {r4, pc} - thumb_func_end ov97_0222F378 - - thumb_func_start ov97_0222F388 -ov97_0222F388: ; 0x0222F388 - push {r3, lr} - mov r0, #1 - mov r1, #0 - bl sub_0201975C - mov r0, #5 - mov r1, #0 - bl sub_0201975C - pop {r3, pc} - thumb_func_end ov97_0222F388 - - thumb_func_start ov97_0222F39C -ov97_0222F39C: ; 0x0222F39C - push {r4, lr} - mov r4, #1 - cmp r1, #0 - beq _0222F3AE - cmp r1, #1 - beq _0222F3DA - cmp r1, #2 - beq _0222F3F4 - b _0222F408 -_0222F3AE: - mov r1, #8 - ldrsb r1, [r0, r1] - cmp r1, #0 - ble _0222F3C8 - sub r1, r1, r2 - cmp r1, #0 - ble _0222F3C2 - strb r1, [r0, #8] - mov r4, #0 - b _0222F408 -_0222F3C2: - mov r1, #0 - strb r1, [r0, #8] - b _0222F408 -_0222F3C8: - bge _0222F408 - add r1, r1, r2 - bpl _0222F3D4 - strb r1, [r0, #8] - mov r4, #0 - b _0222F408 -_0222F3D4: - mov r1, #0 - strb r1, [r0, #8] - b _0222F408 -_0222F3DA: - mov r3, #8 - ldrsb r1, [r0, r3] - sub r2, r1, r2 - add r1, r3, #0 - sub r1, #0x18 - cmp r2, r1 - ble _0222F3EE - strb r2, [r0, #8] - mov r4, #0 - b _0222F408 -_0222F3EE: - sub r3, #0x18 - strb r3, [r0, #8] - b _0222F408 -_0222F3F4: - mov r1, #8 - ldrsb r1, [r0, r1] - add r1, r1, r2 - cmp r1, #0x10 - bge _0222F404 - strb r1, [r0, #8] - mov r4, #0 - b _0222F408 -_0222F404: - mov r1, #0x10 - strb r1, [r0, #8] -_0222F408: - bl ov97_0222F378 - add r0, r4, #0 - pop {r4, pc} - thumb_func_end ov97_0222F39C - - thumb_func_start ov97_0222F410 -ov97_0222F410: ; 0x0222F410 - push {r4, lr} - mov r4, #1 - cmp r1, #0 - beq _0222F422 - cmp r1, #1 - beq _0222F44E - cmp r1, #2 - beq _0222F468 - b _0222F47C -_0222F422: - mov r1, #8 - ldrsb r1, [r0, r1] - cmp r1, #0 - ble _0222F43C - sub r1, r1, r2 - cmp r1, #0 - ble _0222F436 - strb r1, [r0, #8] - mov r4, #0 - b _0222F47C -_0222F436: - mov r1, #0 - strb r1, [r0, #8] - b _0222F47C -_0222F43C: - bge _0222F47C - add r1, r1, r2 - bpl _0222F448 - strb r1, [r0, #8] - mov r4, #0 - b _0222F47C -_0222F448: - mov r1, #0 - strb r1, [r0, #8] - b _0222F47C -_0222F44E: - mov r3, #8 - ldrsb r1, [r0, r3] - sub r2, r1, r2 - add r1, r3, #0 - sub r1, #0x18 - cmp r2, r1 - ble _0222F462 - strb r2, [r0, #8] - mov r4, #0 - b _0222F47C -_0222F462: - sub r3, #0x18 - strb r3, [r0, #8] - b _0222F47C -_0222F468: - mov r1, #8 - ldrsb r1, [r0, r1] - add r1, r1, r2 - cmp r1, #0x10 - bge _0222F478 - strb r1, [r0, #8] - mov r4, #0 - b _0222F47C -_0222F478: - mov r1, #0x10 - strb r1, [r0, #8] -_0222F47C: - bl ov97_0222F348 - add r0, r4, #0 - pop {r4, pc} - thumb_func_end ov97_0222F410 - - thumb_func_start ov97_0222F484 -ov97_0222F484: ; 0x0222F484 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - strb r1, [r4, #8] - bl ov97_0222F378 - add r0, r4, #0 - bl ov97_0222E398 - add r0, r4, #0 - bl ov97_0222E6F8 - add r0, r4, #0 - bl ov97_0222E814 - add r0, r4, #0 - bl ov97_0222E5B4 - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF0C - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF74 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov97_0222F484 - - thumb_func_start ov97_0222F4BC -ov97_0222F4BC: ; 0x0222F4BC - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - ldr r1, [r4, #0] - cmp r1, #9 - bls _0222F4C8 - b _0222F72C -_0222F4C8: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0222F4D4: ; jump table - .short _0222F4E8 - _0222F4D4 - 2 ; case 0 - .short _0222F4F4 - _0222F4D4 - 2 ; case 1 - .short _0222F50A - _0222F4D4 - 2 ; case 2 - .short _0222F56E - _0222F4D4 - 2 ; case 3 - .short _0222F596 - _0222F4D4 - 2 ; case 4 - .short _0222F5EC - _0222F4D4 - 2 ; case 5 - .short _0222F60A - _0222F4D4 - 2 ; case 6 - .short _0222F692 - _0222F4D4 - 2 ; case 7 - .short _0222F704 - _0222F4D4 - 2 ; case 8 - .short _0222F718 - _0222F4D4 - 2 ; case 9 -_0222F4E8: - add r0, r4, #0 - bl ov97_0222F484 - mov r0, #1 - str r0, [r4, #0] - b _0222F740 -_0222F4F4: - add r0, r4, #0 - mov r1, #1 - mov r2, #2 - bl ov97_0222F39C - cmp r0, #0 - bne _0222F504 - b _0222F740 -_0222F504: - mov r0, #2 - str r0, [r4, #0] - b _0222F740 -_0222F50A: - mov r5, #0 - mov r6, #1 - add r0, r5, #0 - add r1, r4, #0 - add r3, r5, #0 -_0222F514: - add r2, r1, #0 - add r2, #0x90 - ldr r2, [r2, #0] - cmp r2, #0 - beq _0222F522 - add r5, r5, #1 - b _0222F524 -_0222F522: - add r6, r3, #0 -_0222F524: - add r0, r0, #1 - add r1, #0x4c - cmp r0, #0x50 - blt _0222F514 - cmp r5, #0x32 - ble _0222F53C - ldr r0, _0222F748 ; =0x00003014 - mov r1, #4 - ldr r0, [r4, r0] - bl sub_02021DCC - b _0222F55A -_0222F53C: - cmp r5, #0x1e - ble _0222F54C - ldr r0, _0222F748 ; =0x00003014 - mov r1, #3 - ldr r0, [r4, r0] - bl sub_02021DCC - b _0222F55A -_0222F54C: - cmp r5, #7 - ble _0222F55A - ldr r0, _0222F748 ; =0x00003014 - mov r1, #1 - ldr r0, [r4, r0] - bl sub_02021CAC -_0222F55A: - cmp r6, #0 - bne _0222F562 - cmp r5, #0x4f - bne _0222F618 -_0222F562: - mov r0, #3 - str r0, [r4, #0] - add r0, r4, #0 - bl ov97_0222E7B4 - b _0222F740 -_0222F56E: - ldr r0, _0222F74C ; =0x000030A0 - ldr r0, [r4, r0] - ldr r0, [r0, #0] - cmp r0, #2 - bne _0222F618 - add r0, r4, #0 - bl ov97_0222E734 - add r0, r4, #0 - bl ov97_0222EA68 - mov r0, #2 - mov r1, #0 - bl sub_0201FF0C - bl ov97_0222F388 - mov r0, #4 - str r0, [r4, #0] - b _0222F740 -_0222F596: - mov r5, #0 - mov r6, #1 - add r1, r5, #0 - add r2, r4, #0 - add r0, r5, #0 -_0222F5A0: - add r3, r2, #0 - add r3, #0x94 - ldr r3, [r3, #0] - cmp r3, #0 - beq _0222F5BA - add r3, r2, #0 - add r3, #0x90 - ldr r3, [r3, #0] - cmp r3, #0 - beq _0222F5B8 - add r5, r5, #1 - b _0222F5BA -_0222F5B8: - add r6, r0, #0 -_0222F5BA: - add r1, r1, #1 - add r2, #0x4c - cmp r1, #0x50 - blt _0222F5A0 - mov r1, #2 - add r0, r4, #0 - add r2, r1, #0 - bl ov97_0222F410 - cmp r6, #0 - bne _0222F5D4 - cmp r5, #0x13 - bne _0222F618 -_0222F5D4: - ldr r0, _0222F750 ; =0x0000061B - bl sub_02005748 - mov r0, #5 - str r0, [r4, #0] - add r0, r4, #0 - bl ov97_0222E7B4 - add r0, r4, #0 - bl ov97_0222E60C - b _0222F740 -_0222F5EC: - mov r1, #2 - add r0, r4, #0 - add r2, r1, #0 - bl ov97_0222F410 - cmp r0, #0 - beq _0222F618 - add r0, r4, #0 - mov r1, #1 - mov r2, #2 - bl ov97_0222F410 - mov r0, #6 - str r0, [r4, #0] - b _0222F740 -_0222F60A: - add r0, r4, #0 - mov r1, #1 - mov r2, #2 - bl ov97_0222F410 - cmp r0, #0 - bne _0222F61A -_0222F618: - b _0222F740 -_0222F61A: - ldr r0, _0222F748 ; =0x00003014 - ldr r0, [r4, r0] - bl sub_02021D28 - add r5, r0, #0 - ldr r0, _0222F754 ; =0x00003060 - ldr r0, [r4, r0] - bl sub_02021D28 - mov r1, #0xe - ldr r2, [r5, #4] - lsl r1, r1, #0x10 - cmp r2, r1 - bge _0222F63E - mov r1, #2 - lsl r1, r1, #0xe - add r1, r2, r1 - str r1, [r5, #4] -_0222F63E: - mov r1, #3 - ldr r2, [r5, #4] - lsl r1, r1, #0x12 - sub r2, r2, r1 - cmp r2, #0 - ble _0222F740 - ldr r2, [r0, #4] - lsl r1, r1, #1 - cmp r2, r1 - bge _0222F672 - mov r1, #2 - lsl r1, r1, #0xe - add r1, r2, r1 - str r1, [r0, #4] - ldr r0, _0222F754 ; =0x00003060 - ldr r0, [r4, r0] - bl sub_02021D34 - cmp r0, #0 - bne _0222F740 - ldr r0, _0222F754 ; =0x00003060 - mov r1, #1 - ldr r0, [r4, r0] - bl sub_02021CAC - b _0222F740 -_0222F672: - mov r0, #7 - str r0, [r4, #0] - add r0, r4, #0 - bl ov97_0222E664 - add r0, r4, #0 - bl ov97_0222E77C - add r0, r4, #0 - bl ov97_0222EBD0 - mov r0, #2 - mov r1, #1 - bl sub_0201FF0C - b _0222F740 -_0222F692: - mov r5, #0 - ldr r0, _0222F758 ; =0x00001850 - mov r6, #1 - add r2, r5, #0 - add r3, r4, #0 - add r7, r5, #0 -_0222F69E: - ldr r1, [r3, r0] - cmp r1, #0 - beq _0222F6A8 - add r5, r5, #1 - b _0222F6AA -_0222F6A8: - add r6, r7, #0 -_0222F6AA: - add r2, r2, #1 - add r3, #0x4c - cmp r2, #0x50 - blt _0222F69E - cmp r5, #7 - ble _0222F6C0 - add r0, r4, #0 - mov r1, #2 - mov r2, #1 - bl ov97_0222F39C -_0222F6C0: - cmp r5, #0x32 - ble _0222F6D0 - ldr r0, _0222F754 ; =0x00003060 - mov r1, #0 - ldr r0, [r4, r0] - bl sub_02021CAC - b _0222F6EE -_0222F6D0: - cmp r5, #0x1e - ble _0222F6E0 - ldr r0, _0222F754 ; =0x00003060 - mov r1, #2 - ldr r0, [r4, r0] - bl sub_02021DCC - b _0222F6EE -_0222F6E0: - cmp r5, #7 - ble _0222F6EE - ldr r0, _0222F754 ; =0x00003060 - mov r1, #3 - ldr r0, [r4, r0] - bl sub_02021DCC -_0222F6EE: - cmp r6, #0 - beq _0222F740 - mov r0, #8 - str r0, [r4, #0] - add r0, r4, #0 - bl ov97_0222E7E4 - add r0, r4, #0 - bl ov97_0222E67C - b _0222F740 -_0222F704: - add r0, r4, #0 - mov r1, #2 - mov r2, #1 - bl ov97_0222F39C - cmp r0, #0 - beq _0222F740 - mov r0, #9 - str r0, [r4, #0] - b _0222F740 -_0222F718: - add r0, r4, #0 - mov r1, #0 - mov r2, #2 - bl ov97_0222F39C - cmp r0, #0 - beq _0222F740 - mov r0, #0xff - str r0, [r4, #0] - b _0222F740 -_0222F72C: - ldr r1, _0222F74C ; =0x000030A0 - mov r2, #0 - ldr r1, [r4, r1] - str r2, [r1, #0] - bl sub_0200DA58 - add r0, r4, #0 - bl sub_020181C4 - pop {r3, r4, r5, r6, r7, pc} -_0222F740: - add r0, r4, #0 - bl ov97_0222E694 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222F748: .word 0x00003014 -_0222F74C: .word 0x000030A0 -_0222F750: .word 0x0000061B -_0222F754: .word 0x00003060 -_0222F758: .word 0x00001850 - thumb_func_end ov97_0222F4BC - - thumb_func_start ov97_0222F75C -ov97_0222F75C: ; 0x0222F75C - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - add r5, r1, #0 - bl sub_0200682C - add r4, r0, #0 - bl CTRDG_IsExisting - ldr r0, _0222FAB0 ; =0x000005C8 - ldr r0, [r4, r0] - cmp r0, #0x1d - beq _0222F77C - add r0, r4, #0 - bl ov97_02230224 -_0222F77C: - ldr r3, [r5, #0] - cmp r3, #0x39 - bls _0222F786 - bl _02230164 -_0222F786: - add r0, r3, r3 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0222F792: ; jump table - .short _0222F806 - _0222F792 - 2 ; case 0 - .short _0222F818 - _0222F792 - 2 ; case 1 - .short _0222F836 - _0222F792 - 2 ; case 2 - .short _0222F840 - _0222F792 - 2 ; case 3 - .short _0222F84E - _0222F792 - 2 ; case 4 - .short _0222F85C - _0222F792 - 2 ; case 5 - .short _02230164 - _0222F792 - 2 ; case 6 - .short _0222FAA4 - _0222F792 - 2 ; case 7 - .short _0222FB8C - _0222F792 - 2 ; case 8 - .short _0222FB98 - _0222F792 - 2 ; case 9 - .short _0222FC58 - _0222F792 - 2 ; case 10 - .short _0222FCA6 - _0222F792 - 2 ; case 11 - .short _0222FCC8 - _0222F792 - 2 ; case 12 - .short _0222FD58 - _0222F792 - 2 ; case 13 - .short _0222FDAE - _0222F792 - 2 ; case 14 - .short _0222FDDA - _0222F792 - 2 ; case 15 - .short _0222FE1A - _0222F792 - 2 ; case 16 - .short _0222FE3C - _0222F792 - 2 ; case 17 - .short _0222FE74 - _0222F792 - 2 ; case 18 - .short _0222FEB8 - _0222F792 - 2 ; case 19 - .short _0222FF5A - _0222F792 - 2 ; case 20 - .short _0222FF66 - _0222F792 - 2 ; case 21 - .short _0222FF6C - _0222F792 - 2 ; case 22 - .short _0222FFA2 - _0222F792 - 2 ; case 23 - .short _0222FFBC - _0222F792 - 2 ; case 24 - .short _02230034 - _0222F792 - 2 ; case 25 - .short _02230164 - _0222F792 - 2 ; case 26 - .short _0222F86A - _0222F792 - 2 ; case 27 - .short _02230164 - _0222F792 - 2 ; case 28 - .short _02230164 - _0222F792 - 2 ; case 29 - .short _02230164 - _0222F792 - 2 ; case 30 - .short _0222F928 - _0222F792 - 2 ; case 31 - .short _0222F876 - _0222F792 - 2 ; case 32 - .short _0222F93C - _0222F792 - 2 ; case 33 - .short _0222F9DE - _0222F792 - 2 ; case 34 - .short _0222F9BC - _0222F792 - 2 ; case 35 - .short _0222FA80 - _0222F792 - 2 ; case 36 - .short _02230164 - _0222F792 - 2 ; case 37 - .short _02230164 - _0222F792 - 2 ; case 38 - .short _02230164 - _0222F792 - 2 ; case 39 - .short _02230164 - _0222F792 - 2 ; case 40 - .short _02230164 - _0222F792 - 2 ; case 41 - .short _02230164 - _0222F792 - 2 ; case 42 - .short _02230164 - _0222F792 - 2 ; case 43 - .short _02230164 - _0222F792 - 2 ; case 44 - .short _02230164 - _0222F792 - 2 ; case 45 - .short _02230164 - _0222F792 - 2 ; case 46 - .short _02230164 - _0222F792 - 2 ; case 47 - .short _02230164 - _0222F792 - 2 ; case 48 - .short _02230050 - _0222F792 - 2 ; case 49 - .short _02230074 - _0222F792 - 2 ; case 50 - .short _02230082 - _0222F792 - 2 ; case 51 - .short _0223009E - _0222F792 - 2 ; case 52 - .short _022300B4 - _0222F792 - 2 ; case 53 - .short _022300C8 - _0222F792 - 2 ; case 54 - .short _022300DA - _0222F792 - 2 ; case 55 - .short _0223011C - _0222F792 - 2 ; case 56 - .short _0223015E - _0222F792 - 2 ; case 57 -_0222F806: - mov r0, #0x56 - bl ov97_02237694 - ldr r0, _0222FAB4 ; =0x000015D8 - str r5, [r4, r0] - mov r0, #1 - str r0, [r5, #0] - bl _02230164 -_0222F818: - add r0, r6, #0 - add r1, r4, #0 - bl ov97_0222DFD4 - add r0, r4, #0 - bl ov97_0222D3E8 - mov r0, #1 - mov r1, #3 - add r2, r5, #0 - mov r3, #2 - bl ov97_02237790 - bl _02230164 -_0222F836: - add r0, r5, #0 - bl ov97_022377F0 - bl _02230164 -_0222F840: - ldr r2, _0222FAB8 ; =ov97_0222DB40 - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - bl _02230164 -_0222F84E: - ldr r2, _0222FABC ; =ov97_0222DA64 - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - bl _02230164 -_0222F85C: - ldr r2, _0222FAC0 ; =ov97_0222D75C - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - bl _02230164 -_0222F86A: - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222E080 - bl _02230164 -_0222F876: - add r0, r4, #0 - bl ov97_022302F4 - ldr r0, _0222FAC4 ; =0x0223F1A8 - ldr r0, [r0, #0] - cmp r0, #0x2d - bne _0222F90E - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - add r0, r6, #0 - bl ov97_0222D55C - add r1, r4, #0 - ldr r0, [r4, #4] - add r1, #0x8c - bl ov97_02232148 - add r1, r4, #0 - add r1, #0x80 - str r0, [r1, #0] - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _0222F8BA - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #0x31 - str r0, [r5, #0] - b _0222F90E -_0222F8BA: - add r0, r4, #0 - add r0, #0x58 - bl sub_0201A7CC - cmp r0, #0 - bne _0222F8E8 - mov r0, #2 - str r0, [sp] - mov r0, #0x1a - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x71 - add r1, r4, #0 - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, #0x58 - mov r3, #3 - bl sub_0201A7E8 -_0222F8E8: - bl ov97_02238D54 - add r1, r4, #0 - add r2, r0, #0 - add r0, r6, #0 - add r1, #0x58 - bl ov97_0222DF10 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #4 - bl ov97_0222DE78 - add r0, r6, #0 - bl ov97_0222D8F4 - mov r0, #0x1f - str r0, [r5, #0] -_0222F90E: - ldr r0, _0222FAC4 ; =0x0223F1A8 - ldr r0, [r0, #0] - sub r0, #0x2e - cmp r0, #1 - bls _0222F91C - bl _02230164 -_0222F91C: - bl ov97_022302D4 - mov r0, #0x11 - str r0, [r5, #0] - bl _02230164 -_0222F928: - ldr r2, _0222FAC8 ; =ov97_0222D9F0 - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - add r0, r4, #0 - bl ov97_022302F4 - bl _02230164 -_0222F93C: - add r0, r6, #0 - bl ov97_0222D55C - add r7, r0, #0 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D40C - add r0, r7, #0 - bl ov97_0222D5C8 - cmp r0, #1 - bne _0222F9A8 - add r0, r6, #0 - bl ov97_0222D658 - ldr r0, _0222FACC ; =0x000029F4 - mov r1, #1 - str r1, [r4, r0] - add r0, r4, #0 - sub r1, r1, #2 - bl ov97_0222D40C - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - ldr r1, _0222FAD0 ; =0x000030A4 - mov r0, #0x56 - bl sub_02018144 - ldr r2, _0222FAD0 ; =0x000030A4 - mov r1, #0 - add r6, r0, #0 - bl memset - ldr r0, _0222FACC ; =0x000029F4 - add r1, r4, r0 - ldr r0, _0222FAD4 ; =0x000030A0 - str r1, [r6, r0] - bl ov97_02237AEC - str r0, [r6, #0xc] - ldr r0, _0222FAD8 ; =ov97_0222F4BC - add r1, r6, #0 - mov r2, #5 - bl sub_0200D9E8 - b _0222F9B6 -_0222F9A8: - ldr r0, [r4, #0] - add r1, r7, #0 - bl ov97_02238194 - add r0, r6, #0 - bl ov97_0222D658 -_0222F9B6: - mov r0, #0x22 - str r0, [r5, #0] - b _02230164 -_0222F9BC: - ldr r0, _0222FACC ; =0x000029F4 - ldr r0, [r4, r0] - cmp r0, #0 - bne _0222FA4A - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #8 - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - mov r0, #1 - add r1, r0, #0 - bl sub_0201FF0C - b _02230164 -_0222F9DE: - bl ov97_02238528 - add r7, r0, #0 - cmp r7, #4 - bne _0222F9EC - bl ov97_022384F4 -_0222F9EC: - cmp r7, #2 - bne _0222FA46 - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r0, r4, #0 - add r0, #0x18 - mov r1, #0 - bl ov97_0222D45C - ldr r0, [r4, #0] - mov r1, #0 - bl sub_02019EBC - mov r0, #1 - mov r1, #0 - bl sub_0201FF0C - add r6, r4, #0 - add r6, #0xdc - add r0, r6, #0 - bl ov97_0222D5C8 - cmp r0, #1 - bne _0222FA3A - ldr r0, [r4, #0] - add r1, r6, #0 - bl ov97_02238194 - ldr r0, _0222FACC ; =0x000029F4 - mov r1, #2 - str r1, [r4, r0] - b _0222FA40 -_0222FA3A: - ldr r0, _0222FADC ; =0x00000624 - bl sub_02005748 -_0222FA40: - mov r0, #0x23 - str r0, [r5, #0] - b _02230164 -_0222FA46: - cmp r7, #3 - beq _0222FA4C -_0222FA4A: - b _02230164 -_0222FA4C: - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - mov r2, #0x1a - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_0222FA80: - add r0, r4, #0 - bl ov97_022302F4 - ldr r0, _0222FAC4 ; =0x0223F1A8 - ldr r1, [r0, #0] - add r0, r1, #0 - sub r0, #0x2d - cmp r0, #2 - bhi _0222FB74 - cmp r1, #0x2f - bne _0222FA9A - bl ov97_022302D4 -_0222FA9A: - add r0, r6, #0 - bl ov97_0222D94C - str r0, [r5, #0] - b _02230164 -_0222FAA4: - add r0, r4, #0 - bl ov97_0222D250 - ldr r1, _0222FAE0 ; =0x00000438 - b _0222FAE4 - nop -_0222FAB0: .word 0x000005C8 -_0222FAB4: .word 0x000015D8 -_0222FAB8: .word ov97_0222DB40 -_0222FABC: .word ov97_0222DA64 -_0222FAC0: .word ov97_0222D75C -_0222FAC4: .word Unk_ov97_0223F1A8 -_0222FAC8: .word ov97_0222D9F0 -_0222FACC: .word 0x000029F4 -_0222FAD0: .word 0x000030A4 -_0222FAD4: .word 0x000030A0 -_0222FAD8: .word ov97_0222F4BC -_0222FADC: .word 0x00000624 -_0222FAE0: .word 0x00000438 -_0222FAE4: - str r0, [r4, r1] - mov r0, #0 - ldr r1, [r4, r1] - mvn r0, r0 - cmp r1, r0 - beq _0222FB5C - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - add r1, r4, #0 - ldr r0, [r4, #4] - add r1, #0x8c - bl ov97_02232148 - add r1, r4, #0 - add r1, #0x80 - str r0, [r1, #0] - add r0, r4, #0 - add r0, #0x58 - bl sub_0201A7CC - cmp r0, #0 - bne _0222FB36 - mov r0, #2 - str r0, [sp] - mov r0, #0x1a - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x71 - add r1, r4, #0 - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, #0x58 - mov r3, #3 - bl sub_0201A7E8 -_0222FB36: - add r1, r4, #0 - add r2, r4, #0 - add r0, r6, #0 - add r1, #0x58 - add r2, #0x8c - bl ov97_0222DF10 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #4 - bl ov97_0222DE78 - add r0, r6, #0 - mov r1, #0 - bl ov97_0222D6F8 - mov r0, #8 - str r0, [r5, #0] -_0222FB5C: - ldr r0, _0222FE84 ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #2 - tst r0, r1 - bne _0222FB76 - ldr r0, _0222FE88 ; =0x00000434 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - beq _0222FB76 -_0222FB74: - b _02230164 -_0222FB76: - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - bl ov97_0222D2DC - bl sub_02039794 - mov r0, #0x11 - str r0, [r5, #0] - b _02230164 -_0222FB8C: - ldr r2, _0222FE8C ; =ov97_0222D94C - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - b _02230164 -_0222FB98: - bl sub_0203608C - add r7, r0, #0 - beq _0222FBF0 - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl sub_02035D78 - cmp r0, #0 - beq _0222FBF0 - mov r0, #0xab - bl sub_02036540 - cmp r0, #1 - bne _0222FC20 - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #1 - add r1, r0, #0 - bl sub_020388F4 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #7 - bl ov97_0222DE78 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D40C - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - mov r1, #0x96 - ldr r0, _0222FE88 ; =0x00000434 - lsl r1, r1, #2 - str r1, [r4, r0] - mov r0, #0xa - str r0, [r5, #0] - b _0222FC20 -_0222FBF0: - cmp r7, #0 - beq _0222FC20 - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl sub_02035D78 - cmp r0, #0 - bne _0222FC20 - bl ov97_0222D2DC - bl sub_02039794 - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #0x10 - str r0, [r5, #0] - b _02230164 -_0222FC20: - ldr r0, _0222FE84 ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #2 - tst r0, r1 - bne _0222FC38 - ldr r0, _0222FE88 ; =0x00000434 - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _0222FD28 -_0222FC38: - bl ov97_0222D2DC - bl sub_02039794 - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #0x11 - str r0, [r5, #0] - b _02230164 -_0222FC58: - bl ov97_0222D2A0 - cmp r0, #0 - beq _0222FC64 - mov r0, #0xb - str r0, [r5, #0] -_0222FC64: - bl sub_0203608C - ldr r1, _0222FE84 ; =0x021BF67C - ldr r2, [r1, #0x48] - mov r1, #2 - tst r1, r2 - bne _0222FC90 - ldr r1, _0222FE88 ; =0x00000434 - ldr r2, [r4, r1] - sub r2, r2, #1 - str r2, [r4, r1] - ldr r1, [r4, r1] - cmp r1, #0 - beq _0222FC90 - cmp r0, #0 - beq _0222FD28 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_02035D78 - cmp r0, #0 - bne _0222FD28 -_0222FC90: - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - bl ov97_0222D2DC - bl sub_02039794 - mov r0, #0x11 - str r0, [r5, #0] - b _02230164 -_0222FCA6: - add r0, r6, #0 - bl ov97_0222D55C - add r1, r0, #0 - ldr r0, [r4, #0] - bl ov97_02238194 - mov r0, #0 - add r1, r0, #0 - bl sub_020388F4 - add r0, r6, #0 - bl ov97_0222D658 - mov r0, #0xc - str r0, [r5, #0] - b _02230164 -_0222FCC8: - bl sub_0203608C - cmp r0, #0 - beq _0222FD06 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl sub_02035D78 - cmp r0, #0 - bne _0222FD06 - bl ov97_0222D2DC - ldr r0, _0222FE90 ; =0x000029EC - mov r1, #1 - str r1, [r4, r0] - bl ov97_0223850C - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - bl sub_02039794 - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - mov r0, #0xe - str r0, [r5, #0] - b _02230164 -_0222FD06: - bl ov97_02238528 - cmp r0, #4 - bne _0222FD20 - mov r0, #0x93 - bl sub_020364F0 - mov r0, #0xd - str r0, [r5, #0] - ldr r0, _0222FE94 ; =0x0000043C - mov r1, #0x78 - str r1, [r4, r0] - b _02230164 -_0222FD20: - bl ov97_02238528 - cmp r0, #3 - beq _0222FD2A -_0222FD28: - b _02230164 -_0222FD2A: - bl ov97_0223850C - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #0x1a - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_0222FD58: - mov r0, #0x93 - bl sub_02036540 - cmp r0, #1 - bne _0222FD72 - bl ov97_022384F4 - ldr r0, _0222FE94 ; =0x0000043C - mov r1, #0xa - str r1, [r4, r0] - mov r0, #0xf - str r0, [r5, #0] - b _02230164 -_0222FD72: - ldr r0, _0222FE94 ; =0x0000043C - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _0222FE7C - bl ov97_0223850C - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #0x1a - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_0222FDAE: - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - mov r2, #0x1c - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_0222FDDA: - ldr r0, _0222FE94 ; =0x0000043C - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _0222FE7C - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - bl ov97_0222D2DC - bl sub_02039794 - ldr r0, _0222FE98 ; =0x00000624 - bl sub_02005748 - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #8 - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_0222FE1A: - ldr r0, _0222FE9C ; =0x000005DC - bl sub_02005748 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #0x18 - bl ov97_0222DE78 - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - mov r0, #0x12 - str r0, [r5, #0] - b _02230164 -_0222FE3C: - ldr r0, _0222FEA0 ; =0x000015DC - ldr r1, [r4, r0] - cmp r1, #0 - beq _0222FE4A - sub r1, r1, #1 - str r1, [r4, r0] - b _02230164 -_0222FE4A: - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - ldr r0, _0222FE9C ; =0x000005DC - bl sub_02005748 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #0x17 - bl ov97_0222DE78 - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - mov r0, #0x12 - str r0, [r5, #0] - b _02230164 -_0222FE74: - ldr r0, _0222FE84 ; =0x021BF67C - ldr r0, [r0, #0x48] - cmp r0, #0 - bne _0222FE7E -_0222FE7C: - b _02230164 -_0222FE7E: - ldr r0, _0222FE9C ; =0x000005DC - b _0222FEA4 - nop -_0222FE84: .word 0x021BF67C -_0222FE88: .word 0x00000434 -_0222FE8C: .word ov97_0222D94C -_0222FE90: .word 0x000029EC -_0222FE94: .word 0x0000043C -_0222FE98: .word 0x00000624 -_0222FE9C: .word 0x000005DC -_0222FEA0: .word 0x000015DC -_0222FEA4: - bl sub_02005748 - add r0, r6, #0 - mov r1, #0xc4 - mov r2, #0 - bl ov97_0222DDD0 - mov r0, #3 - str r0, [r5, #0] - b _02230164 -_0222FEB8: - ldr r0, _02230180 ; =0x000015DC - ldr r1, [r4, r0] - cmp r1, #0 - beq _0222FEC6 - sub r1, r1, #1 - str r1, [r4, r0] - b _02230164 -_0222FEC6: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #0x1b - beq _0222FEDC - add r0, r4, #0 - mov r1, #0xea - add r0, #0x8c - lsl r1, r1, #2 - bl ov97_0223764C -_0222FEDC: - add r1, r4, #0 - ldr r0, [r4, #4] - add r1, #0x8c - bl ov97_02232148 - add r1, r4, #0 - add r1, #0x80 - str r0, [r1, #0] - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _0222FF04 - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r0, #0x31 - str r0, [r5, #0] - b _02230164 -_0222FF04: - add r0, r4, #0 - add r0, #0x58 - bl sub_0201A7CC - cmp r0, #0 - bne _0222FF32 - mov r0, #2 - str r0, [sp] - mov r0, #0x1a - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r2, #0 - mov r0, #0x71 - add r1, r4, #0 - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - ldr r0, [r4, #0] - add r1, #0x58 - mov r3, #3 - bl sub_0201A7E8 -_0222FF32: - add r1, r4, #0 - add r2, r4, #0 - add r0, r6, #0 - add r1, #0x58 - add r2, #0x8c - bl ov97_0222DF10 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #4 - bl ov97_0222DE78 - add r0, r6, #0 - mov r1, #0 - bl ov97_0222D6F8 - mov r0, #0x14 - str r0, [r5, #0] - b _02230164 -_0222FF5A: - ldr r2, _02230184 ; =ov97_0222D94C - add r0, r6, #0 - add r1, r5, #0 - bl ov97_0222DF70 - b _02230164 -_0222FF66: - mov r0, #0x16 - str r0, [r5, #0] - b _02230164 -_0222FF6C: - add r0, r6, #0 - bl ov97_0222D55C - add r1, r0, #0 - ldr r0, [r4, #0] - bl ov97_02238194 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #7 - bl ov97_0222DE78 - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D40C - add r0, r4, #0 - mov r1, #1 - bl ov97_0222D30C - ldr r0, _02230188 ; =0x0000043C - mov r1, #0x3c - str r1, [r4, r0] - mov r0, #0x17 - str r0, [r5, #0] - b _02230164 -_0222FFA2: - ldr r0, _02230188 ; =0x0000043C - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _02230042 - add r0, r6, #0 - bl ov97_0222D658 - mov r0, #0x18 - str r0, [r5, #0] - b _02230164 -_0222FFBC: - bl ov97_02238528 - cmp r0, #4 - bne _0222FFC8 - bl ov97_022384F4 -_0222FFC8: - bl ov97_02238528 - cmp r0, #2 - bne _02230000 - ldr r0, _02230188 ; =0x0000043C - mov r1, #1 - str r1, [r4, r0] - add r0, r4, #0 - mov r1, #0 - bl ov97_0222D30C - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - ldr r0, _0223018C ; =0x00000624 - bl sub_02005748 - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r2, #8 - mov r3, #0x19 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_02230000: - bl ov97_02238528 - cmp r0, #3 - bne _02230042 - mov r1, #0 - add r0, r4, #0 - mvn r1, r1 - bl ov97_0222D40C - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - mov r2, #0x1a - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - add r1, r4, #0 - add r0, r6, #0 - add r1, #0x18 - mov r3, #0x37 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_02230034: - ldr r0, _02230188 ; =0x0000043C - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #0 - beq _02230044 -_02230042: - b _02230164 -_02230044: - mov r1, #1 - lsl r1, r1, #0x10 - str r1, [r4, r0] - mov r0, #0x37 - str r0, [r5, #0] - b _02230164 -_02230050: - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #5 - beq _02230060 - add r0, r4, #0 - bl ov97_0222E2AC -_02230060: - add r0, r6, #0 - bl ov97_0222E1D8 - str r0, [r5, #0] - add r0, r4, #0 - add r0, #0x48 - mov r1, #0 - bl ov97_0222D444 - b _02230164 -_02230074: - mov r1, #0 - add r0, r6, #0 - add r2, r1, #0 - bl ov97_0222E228 - str r0, [r5, #0] - b _02230164 -_02230082: - ldr r0, _02230190 ; =0x021BF67C - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _02230164 - add r0, r4, #0 - add r0, #0x58 - mov r1, #0 - bl ov97_0222D444 - add r0, r6, #0 - bl ov97_0222DA64 - str r0, [r5, #0] - b _02230164 -_0223009E: - add r0, r6, #0 - mov r1, #1 - bl ov97_0222D6F8 - mov r0, #8 - str r0, [r5, #0] - add r0, r4, #0 - mov r1, #0 - add r0, #0x80 - str r1, [r0, #0] - b _02230164 -_022300B4: - add r0, r6, #0 - bl ov97_0222D34C - mov r0, #0x11 - mov r1, #0 - lsl r0, r0, #6 - str r1, [r4, r0] - add sp, #0x14 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_022300C8: - add r0, r6, #0 - bl ov97_0222D34C - mov r1, #0x11 - mov r0, #1 - lsl r1, r1, #6 - add sp, #0x14 - str r0, [r4, r1] - pop {r4, r5, r6, r7, pc} -_022300DA: - ldr r0, _02230190 ; =0x021BF67C - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _02230164 - ldr r0, _02230194 ; =0x000005DC - bl sub_02005748 - add r0, r4, #0 - add r0, #0xda - ldrb r0, [r0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - cmp r0, #1 - bne _02230106 - ldr r2, _02230198 ; =0x000015D8 - mov r0, #0 - ldr r2, [r4, r2] - mov r1, #0x38 - mov r3, #2 - bl ov97_02237790 - b _02230164 -_02230106: - mov r0, #1 - bl ov97_02237784 - ldr r2, _02230198 ; =0x000015D8 - mov r0, #0 - ldr r2, [r4, r2] - mov r1, #0x39 - mov r3, #2 - bl ov97_02237790 - b _02230164 -_0223011C: - ldr r0, [r4, #0] - bl ov97_0222DC20 - mov r0, #1 - mov r1, #0 - bl sub_0201FF74 - mov r0, #2 - mov r1, #1 - bl sub_0201FF74 - add r1, r4, #0 - ldr r0, [r4, #0] - add r1, #0xdc - mov r2, #0x56 - bl ov97_02231FFC - ldr r2, _02230198 ; =0x000015D8 - mov r0, #1 - ldr r2, [r4, r2] - mov r1, #0x37 - mov r3, #2 - bl ov97_02237790 - add r0, r4, #0 - add r0, #0xda - ldrb r1, [r0] - mov r0, #4 - bic r1, r0 - add r0, r4, #0 - add r0, #0xda - strb r1, [r0] - b _02230164 -_0223015E: - mov r0, #0 - bl OS_ResetSystem -_02230164: - ldr r0, _0223019C ; =0x000029E8 - ldr r1, [r4, r0] - cmp r1, #0 - beq _02230170 - add r0, r4, #0 - blx r1 -_02230170: - ldr r0, _022301A0 ; =0x000029F4 - ldr r0, [r4, r0] - bl ov97_02237CAC - mov r0, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_02230180: .word 0x000015DC -_02230184: .word ov97_0222D94C -_02230188: .word 0x0000043C -_0223018C: .word 0x00000624 -_02230190: .word 0x021BF67C -_02230194: .word 0x000005DC -_02230198: .word 0x000015D8 -_0223019C: .word 0x000029E8 -_022301A0: .word 0x000029F4 - thumb_func_end ov97_0222F75C - - thumb_func_start ov97_022301A4 -ov97_022301A4: ; 0x022301A4 - ldr r0, _022301AC ; =0x0223F1A8 - ldr r0, [r0, #8] - bx lr - nop -_022301AC: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_022301A4 - - thumb_func_start ov97_022301B0 -ov97_022301B0: ; 0x022301B0 - ldr r1, _022301B8 ; =0x0223F1A8 - str r0, [r1, #8] - bx lr - nop -_022301B8: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_022301B0 - - thumb_func_start ov97_022301BC -ov97_022301BC: ; 0x022301BC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - add r4, r0, #0 - mov r0, #0x11 - lsl r0, r0, #6 - ldr r0, [r4, r0] - cmp r0, #0 - bne _022301DA - ldr r0, _02230210 ; =0x0000004D - ldr r1, _02230214 ; =0x021D742C - bl sub_02000EC4 - b _022301E6 -_022301DA: - cmp r0, #1 - bne _022301E6 - ldr r0, _02230218 ; =0x00000061 - ldr r1, _0223021C ; =0x0223D7AC - bl sub_02000EC4 -_022301E6: - mov r0, #0x5b - bl sub_0201807C - add r0, r5, #0 - bl sub_02006830 - mov r0, #0x56 - bl sub_0201807C - ldr r0, _02230220 ; =0x000015D4 - ldr r0, [r4, r0] - cmp r0, #2 - bne _02230206 - mov r0, #0 - bl sub_02017B70 -_02230206: - mov r0, #0 - bl ov97_02238400 - mov r0, #1 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_02230210: .word 0x0000004D -_02230214: .word 0x021D742C -_02230218: .word 0x00000061 -_0223021C: .word Unk_ov97_0223D7AC -_02230220: .word 0x000015D4 - thumb_func_end ov97_022301BC - - thumb_func_start ov97_02230224 -ov97_02230224: ; 0x02230224 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02230278 ; =0x000005C8 - ldr r0, [r4, r0] - cmp r0, #0x1c - beq _0223023A - cmp r0, #0x1d - beq _02230276 - cmp r0, #0x1e - beq _0223024E - pop {r4, pc} -_0223023A: - ldr r0, [r4, #4] - bl sub_02037D48 - ldr r0, _0223027C ; =0x000005CC - mov r1, #0x78 - str r1, [r4, r0] - mov r1, #0x1e - sub r0, r0, #4 - str r1, [r4, r0] - pop {r4, pc} -_0223024E: - bl sub_02037DA0 - mov r1, #1 - tst r0, r1 - beq _0223025E - mov r0, #0x5d - lsl r0, r0, #4 - str r1, [r4, r0] -_0223025E: - ldr r0, _0223027C ; =0x000005CC - ldr r1, [r4, r0] - sub r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0 - bne _02230276 - bl sub_02037D84 - ldr r0, _02230278 ; =0x000005C8 - mov r1, #0x1d - str r1, [r4, r0] -_02230276: - pop {r4, pc} - ; .align 2, 0 -_02230278: .word 0x000005C8 -_0223027C: .word 0x000005CC - thumb_func_end ov97_02230224 - - thumb_func_start ov97_02230280 -ov97_02230280: ; 0x02230280 - cmp r0, #4 - bhi _022302CC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02230290: ; jump table - .short _0223029A - _02230290 - 2 ; case 0 - .short _022302A2 - _02230290 - 2 ; case 1 - .short _022302AA - _02230290 - 2 ; case 2 - .short _022302B2 - _02230290 - 2 ; case 3 - .short _022302C6 - _02230290 - 2 ; case 4 -_0223029A: - ldr r0, _022302D0 ; =0x0223F1A8 - mov r1, #0x28 - str r1, [r0, #0] - bx lr -_022302A2: - ldr r0, _022302D0 ; =0x0223F1A8 - mov r1, #0x29 - str r1, [r0, #0] - bx lr -_022302AA: - ldr r0, _022302D0 ; =0x0223F1A8 - mov r1, #0x2a - str r1, [r0, #0] - bx lr -_022302B2: - ldr r0, _022302D0 ; =0x0223F1A8 - ldr r1, [r0, #0] - cmp r1, #0x2a - bne _022302C0 - mov r1, #0x2c - str r1, [r0, #0] - bx lr -_022302C0: - mov r1, #0x2f - str r1, [r0, #0] - bx lr -_022302C6: - ldr r0, _022302D0 ; =0x0223F1A8 - mov r1, #0x30 - str r1, [r0, #0] -_022302CC: - bx lr - nop -_022302D0: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_02230280 - - thumb_func_start ov97_022302D4 -ov97_022302D4: ; 0x022302D4 - push {r3, lr} - bl sub_020334CC - ldr r0, _022302F0 ; =0x0223F1A8 - ldr r0, [r0, #4] - bl sub_020181C4 - bl sub_02039794 - ldr r0, _022302F0 ; =0x0223F1A8 - mov r1, #0 - str r1, [r0, #4] - pop {r3, pc} - nop -_022302F0: .word Unk_ov97_0223F1A8 - thumb_func_end ov97_022302D4 - - thumb_func_start ov97_022302F4 -ov97_022302F4: ; 0x022302F4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02230400 ; =0x0223F1A8 - ldr r0, [r0, #0] - cmp r0, #0x2c - bne _0223031A - bl ov97_022302D4 - bl ov97_02238CA0 - cmp r0, #0 - beq _02230314 - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0x2d - str r1, [r0, #0] - b _0223031A -_02230314: - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0x2e - str r1, [r0, #0] -_0223031A: - ldr r0, _02230400 ; =0x0223F1A8 - ldr r0, [r0, #0] - cmp r0, #0x25 - beq _02230336 - cmp r0, #0x26 - beq _02230336 - cmp r0, #0x27 - beq _02230336 - cmp r0, #0x28 - beq _02230336 - cmp r0, #0x29 - beq _02230336 - cmp r0, #0x2b - bne _02230342 -_02230336: - bl WM_GetLinkLevel - mov r1, #3 - sub r0, r1, r0 - bl sub_020397B0 -_02230342: - ldr r1, _02230400 ; =0x0223F1A8 - ldr r0, [r1, #0] - sub r0, #0x25 - cmp r0, #0xb - bhi _022303BC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02230358: ; jump table - .short _02230370 - _02230358 - 2 ; case 0 - .short _0223037C - _02230358 - 2 ; case 1 - .short _022303BC - _02230358 - 2 ; case 2 - .short _022303BC - _02230358 - 2 ; case 3 - .short _022303B2 - _02230358 - 2 ; case 4 - .short _022303BC - _02230358 - 2 ; case 5 - .short _022303BC - _02230358 - 2 ; case 6 - .short _022303BC - _02230358 - 2 ; case 7 - .short _022303BC - _02230358 - 2 ; case 8 - .short _022303BC - _02230358 - 2 ; case 9 - .short _022303BA - _02230358 - 2 ; case 10 - .short _022303BC - _02230358 - 2 ; case 11 -_02230370: - bl sub_02033478 - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0x26 - str r1, [r0, #0] - b _022303BC -_0223037C: - bl sub_020334A4 - cmp r0, #1 - bne _022303BC - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0 - str r1, [r0, #0xc] - bl ov97_02238D4C - add r1, r0, #0 - mov r0, #0x56 - bl sub_02018144 - add r2, r0, #0 - ldr r0, _02230400 ; =0x0223F1A8 - ldr r1, _02230404 ; =ov97_02230280 - str r2, [r0, #4] - ldr r0, _02230408 ; =0x000005D4 - add r0, r4, r0 - bl ov97_02238A4C - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0x27 - str r1, [r0, #0] - bl sub_02039734 - b _022303BC -_022303B2: - ldr r0, [r1, #0xc] - add r0, r0, #1 - str r0, [r1, #0xc] - b _022303BC -_022303BA: - pop {r4, pc} -_022303BC: - ldr r0, _0223040C ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #2 - tst r0, r1 - beq _022303FC - ldr r0, _02230400 ; =0x0223F1A8 - ldr r0, [r0, #0] - sub r0, #0x28 - cmp r0, #8 - bhi _022303FC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022303DC: ; jump table - .short _022303EE - _022303DC - 2 ; case 0 - .short _022303EE - _022303DC - 2 ; case 1 - .short _022303FC - _022303DC - 2 ; case 2 - .short _022303FC - _022303DC - 2 ; case 3 - .short _022303FC - _022303DC - 2 ; case 4 - .short _022303FC - _022303DC - 2 ; case 5 - .short _022303FC - _022303DC - 2 ; case 6 - .short _022303FC - _022303DC - 2 ; case 7 - .short _022303EE - _022303DC - 2 ; case 8 -_022303EE: - bl ov97_022389C8 - cmp r0, #0 - beq _022303FC - ldr r0, _02230400 ; =0x0223F1A8 - mov r1, #0x2b - str r1, [r0, #0] -_022303FC: - pop {r4, pc} - nop -_02230400: .word Unk_ov97_0223F1A8 -_02230404: .word ov97_02230280 -_02230408: .word 0x000005D4 -_0223040C: .word 0x021BF67C - thumb_func_end ov97_022302F4 - - .rodata - - - .global Unk_ov97_0223D71C -Unk_ov97_0223D71C: ; 0x0223D71C - .word ov97_0222E2DC - .word ov97_0222F75C - .word ov97_022301BC - .word 0xFFFFFFFF - - .global Unk_ov97_0223D72C -Unk_ov97_0223D72C: ; 0x0223D72C - .incbin "incbin/overlay97_rodata.bin", 0xB8, 0xC8 - 0xB8 - - .global Unk_ov97_0223D73C -Unk_ov97_0223D73C: ; 0x0223D73C - .incbin "incbin/overlay97_rodata.bin", 0xC8, 0xE4 - 0xC8 - - .global Unk_ov97_0223D758 -Unk_ov97_0223D758: ; 0x0223D758 - .incbin "incbin/overlay97_rodata.bin", 0xE4, 0x54 - - - .data - - - .global Unk_ov97_0223E568 -Unk_ov97_0223E568: ; 0x0223E568 - .word 0x12, ov97_0222DA18 - .word 0x13, ov97_0222D75C - - .global Unk_ov97_0223E578 -Unk_ov97_0223E578: ; 0x0223E578 - .word 0x12, ov97_0222D984 - .word 0x13, ov97_0222D75C - - .global Unk_ov97_0223E588 -Unk_ov97_0223E588: ; 0x0223E588 - .word 0x12, ov97_0222D9BC - .word 0x13, ov97_0222D9F0 - - .global Unk_ov97_0223E598 -Unk_ov97_0223E598: ; 0x0223E598 - .word 0x12, ov97_0222D474 - .word 0x13, ov97_0222D75C - - .global Unk_ov97_0223E5A8 -Unk_ov97_0223E5A8: ; 0x0223E5A8 - .word 0x12, ov97_0222D4D8 - .word 0x13, ov97_0222D94C - - .global Unk_ov97_0223E5B8 -Unk_ov97_0223E5B8: ; 0x0223E5B8 - .word 0xC, ov97_0222DA84 - .word 0xD, ov97_0222DB08 - .word 0xE, ov97_0222DB40 - - .global Unk_ov97_0223E5D0 -Unk_ov97_0223E5D0: ; 0x0223E5D0 - .word 0x0 - .word ov97_022383C4 - .word 0x0 - .word 0x0 - .short 0x0 - .short 0x3 - .byte 0x0 - .byte 0xC - .byte 0x0 - .byte 0x10 - .short 0x2F - .short 0x80 - .word 0x0 - - - .global Unk_ov97_0223E5F0 -Unk_ov97_0223E5F0: ; 0x0223E5F0 - .word 0xF, ov97_0222D798 - .word 0x14, ov97_0222D884 - .word 0x10, ov97_0222D814 - .word 0x11, ov97_0222DA64 - - - .bss - - - .global Unk_ov97_0223F1A8 -Unk_ov97_0223F1A8: ; 0x0223F1A8 - .space 0x4 - - .global Unk_ov97_0223F1AC -Unk_ov97_0223F1AC: ; 0x0223F1AC - .space 0x4 - - .global Unk_ov97_0223F1B0 -Unk_ov97_0223F1B0: ; 0x0223F1B0 - .space 0x4 - - .global Unk_ov97_0223F1B4 -Unk_ov97_0223F1B4: ; 0x0223F1B4 - .space 0x4 - - .global Unk_ov97_0223F1B8 -Unk_ov97_0223F1B8: ; 0x0223F1B8 - .space 0x4 - diff --git a/main.lsf b/main.lsf index b45fa2f4c2..6e8ead1ba1 100644 --- a/main.lsf +++ b/main.lsf @@ -1938,7 +1938,7 @@ Overlay overlay97 Object asm/overlay097/ov97_0222C174.o Object src/overlay097/ov97_0222D04C.o Object src/overlay097/ov97_0222D2F8.o - Object asm/overlay097/ov97_0222D30C.o + Object src/overlay097/ov97_0222D30C.o Object src/overlay097/ov97_02230410.o Object src/overlay097/ov97_02232054.o Object src/overlay097/ov97_02232200.o diff --git a/src/overlay097/ov97_0222D30C.c b/src/overlay097/ov97_0222D30C.c new file mode 100644 index 0000000000..d9513fdc95 --- /dev/null +++ b/src/overlay097/ov97_0222D30C.c @@ -0,0 +1,2630 @@ +#include +#include + +#include "data_021BF67C.h" + +#include "struct_decls/struct_020067E8_decl.h" +#include "struct_decls/struct_02009DC8_decl.h" +#include "struct_decls/struct_0200B144_decl.h" +#include "struct_decls/struct_0200B358_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_0201CD38_decl.h" +#include "struct_decls/struct_02022550_decl.h" +#include "struct_decls/struct_02023790_decl.h" +#include "struct_decls/struct_0202442C_decl.h" +#include "struct_decls/struct_02025CCC_decl.h" +#include "struct_decls/struct_02073C74_decl.h" +#include "struct_decls/struct_021C0794_decl.h" + +#include "overlay077/const_ov77_021D742C.h" + +#include "struct_defs/struct_0202DF40.h" +#include "struct_defs/struct_0203CC84.h" +#include "struct_defs/struct_0205AA50.h" +#include "struct_defs/struct_0208BE5C.h" +#include "overlay019/struct_ov19_021DA864.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay084/struct_ov84_02240FA8.h" +#include "overlay097/struct_ov97_0222D04C.h" +#include "overlay097/struct_ov97_0222D250.h" +#include "overlay097/union_ov97_0222D2B0.h" +#include "overlay097/struct_ov97_0222DB78.h" +#include "overlay097/struct_ov97_02237808.h" +#include "overlay097/struct_ov97_02237AEC.h" +#include "overlay097/struct_ov97_0223829C.h" +#include "overlay115/struct_ov115_02261520.h" + +#include "unk_02000C88.h" +#include "unk_0200112C.h" +#include "unk_02002B7C.h" +#include "unk_020041CC.h" +#include "unk_02005474.h" +#include "unk_020067E8.h" +#include "unk_02006E3C.h" +#include "unk_020093B4.h" +#include "unk_02009714.h" +#include "unk_0200A328.h" +#include "unk_0200AC5C.h" +#include "unk_0200B29C.h" +#include "unk_0200B358.h" +#include "unk_0200D9E8.h" +#include "unk_0200DA60.h" +#include "unk_0200F174.h" +#include "unk_0201378C.h" +#include "unk_02013A04.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D15C.h" +#include "unk_0201D670.h" +#include "unk_0201FE94.h" +#include "unk_020218BC.h" +#include "unk_02023790.h" +#include "unk_0202440C.h" +#include "unk_02025E08.h" +#include "unk_020279FC.h" +#include "unk_0202DAB4.h" +#include "unk_02033200.h" +#include "unk_02034198.h" +#include "unk_020363E8.h" +#include "unk_020366A0.h" +#include "unk_020393C8.h" +#include "unk_02073C2C.h" +#include "overlay097/ov97_0222D04C.h" +#include "overlay097/ov97_0222D30C.h" +#include "overlay097/ov97_02232054.h" +#include "overlay097/ov97_02237520.h" +#include "overlay097/ov97_02237694.h" +#include "overlay097/ov97_02238534.h" + +FS_EXTERN_OVERLAY(overlay77); +FS_EXTERN_OVERLAY(overlay97); + +typedef struct { + int unk_00; + u32 unk_04; +} UnkStruct_ov97_0223E5B8; + +typedef struct { + int unk_00; + int unk_04; + BOOL unk_08; + UnkStruct_02022550 * unk_0C; + VecFx32 unk_10; + fx32 unk_1C; + fx32 unk_20; + int unk_24; + int unk_28; + int unk_2C; + int unk_30; + int unk_34; + int unk_38; + int unk_3C; + int unk_40; + int unk_44; + UnkStruct_0201CD38 * unk_48; +} UnkStruct_ov97_0222EEB8; + +typedef struct { + int unk_00; + int unk_04; + s8 unk_08; + UnkStruct_ov97_02237AEC * unk_0C; + UnkStruct_ov19_021DA864 unk_10[2]; + UnkStruct_02009DC8 * unk_58[2][6]; + UnkStruct_ov97_0222EEB8 unk_88[80]; + UnkStruct_ov97_0222EEB8 unk_1848[80]; + UnkStruct_ov97_0222EEB8 unk_3008; + UnkStruct_ov97_0222EEB8 unk_3054; + int * unk_30A0; +} UnkStruct_ov97_0222E398; + +typedef struct { + f32 unk_00; + f32 unk_04; +} UnkStruct_ov97_0222EDC0; + +void sub_02023DF0(const UnkStruct_02023790 * param0, u16 * param1, u32 param2); +void sub_02023D8C(UnkStruct_02023790 * param0, const u16 * param1, u32 param2); +UnkStruct_0202442C * sub_0202442C(UnkStruct_021C0794 * param0); +void ov97_02231FFC(UnkStruct_02018340 * param0, void *, int param2); +static int ov97_0222D474(UnkStruct_020067E8 * param0); +static int ov97_0222D4D8(UnkStruct_020067E8 * param0); +static int ov97_0222DA18(UnkStruct_020067E8 * param0); +static int ov97_0222D984(UnkStruct_020067E8 * param0); +static int ov97_0222D75C(UnkStruct_020067E8 * param0); +static int ov97_0222D94C(UnkStruct_020067E8 * param0); +static int ov97_0222D798(UnkStruct_020067E8 * param0); +static int ov97_0222D814(UnkStruct_020067E8 * param0); +static int ov97_0222D884(UnkStruct_020067E8 * param0); +static int ov97_0222D9BC(UnkStruct_020067E8 * param0); +static int ov97_0222D9F0(UnkStruct_020067E8 * param0); +static int ov97_0222DA64(UnkStruct_020067E8 * param0); +static int ov97_0222DA84(UnkStruct_020067E8 * param0); +static int ov97_0222DB08(UnkStruct_020067E8 * param0); +static int ov97_0222DB40(UnkStruct_020067E8 * param0); +static void ov97_0222DD1C(UnkStruct_020067E8 * param0, UnkStruct_ov97_0223E5B8 * param1, int param2, UnkStruct_0205AA50 * param3, u32 param4); +static void ov97_0222DDD0(UnkStruct_020067E8 * param0, int param1, u32 param2); +static void ov97_0222DE78(UnkStruct_020067E8 * param0, UnkStruct_0205AA50 * param1, u32 param2); +static void ov97_022302D4(void); +static void ov97_02230224(UnkStruct_ov97_0222D04C * param0); +static void ov97_022302F4(UnkStruct_ov97_0222D04C * param0); +static int ov97_0222E228(UnkStruct_020067E8 * param0, UnkStruct_0205AA50 * param1, int param2, int param3); +int ov97_02238EAC(UnkStruct_020067E8 * param0, int * param1); +static void ov97_0222EEB8(UnkStruct_0201CD38 * param0, void * param1); + +static UnkStruct_020067E8 * Unk_ov97_0223F1B0; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E5B8[] = { + {0xC, (u32)ov97_0222DA84}, + {0xD, (u32)ov97_0222DB08}, + {0xE, (u32)ov97_0222DB40} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E5F0[] = { + {0xF, (u32)ov97_0222D798}, + {0x14, (u32)ov97_0222D884}, + {0x10, (u32)ov97_0222D814}, + {0x11, (u32)ov97_0222DA64} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E598[] = { + {0x12, (u32)ov97_0222D474}, + {0x13, (u32)ov97_0222D75C} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E5A8[] = { + {0x12, (u32)ov97_0222D4D8}, + {0x13, (u32)ov97_0222D94C} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E568[] = { + {0x12, (u32)ov97_0222DA18}, + {0x13, (u32)ov97_0222D75C} +}; + +UnkStruct_ov97_0223E5B8 dummy[] = { + {0x12, (u32)ov97_0222D4D8}, + {0x13, (u32)NULL} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E578[] = { + {0x12, (u32)ov97_0222D984}, + {0x13, (u32)ov97_0222D75C} +}; + +UnkStruct_ov97_0223E5B8 Unk_ov97_0223E588[] = { + {0x12, (u32)ov97_0222D9BC}, + {0x13, (u32)ov97_0222D9F0} +}; + +static UnkStruct_ov84_02240FA8 Unk_ov97_0223E5D0 = { + NULL, + ov97_022383C4, + NULL, + NULL, + 0x0, + 0x3, + 0x0, + 0xC, + 0x0, + 0x0, + 0x1, + 0xF, + 0x2, + 0x0, + 0x10, + 0x1, + 0x0, + 0x0 +}; + +static int Unk_ov97_0223F1A8; +static int Unk_ov97_0223F1B4; +static void * Unk_ov97_0223F1AC; + +static void ov97_0222D30C (UnkStruct_ov97_0222D04C * param0, int param1) +{ + if (param1 == 1) { + if (param0->unk_2A50 == NULL) { + param0->unk_2A50 = sub_0200E7FC(¶m0->unk_18, 1); + } + } else { + if (param0->unk_2A50) { + sub_0200EBA0(param0->unk_2A50); + } + + param0->unk_2A50 = NULL; + } +} + +void ov97_0222D344 (UnkStruct_ov97_0222D04C * param0, int param1) +{ + ov97_0222D30C(param0, param1); +} + +static void ov97_0222D34C (UnkStruct_020067E8 * param0) +{ + int v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + ov97_02237DA0(); + + if (v1->unk_7C) { + sub_02013A3C(v1->unk_7C); + } + + if (v1->unk_78) { + sub_02001384(v1->unk_78, NULL, NULL); + } + + sub_0201ACF4(&v1->unk_18); sub_0201A8FC(&v1->unk_18); + + if (sub_0201A7CC(&v1->unk_58)) { + sub_0201ACF4(&v1->unk_58); sub_0201A8FC(&v1->unk_58); + } + + for (v0 = 0; v0 < 3; v0++) { + if (v1->unk_28[v0].unk_00) { + sub_0201ACF4(&v1->unk_28[v0]); + sub_0201A8FC(&v1->unk_28[v0]); + } + } + + sub_02019044(v1->unk_00, 0); + sub_02019044(v1->unk_00, 1); + sub_02019044(v1->unk_00, 4); + sub_02019044(v1->unk_00, 5); + sub_020181C4(v1->unk_00); +} + +static void ov97_0222D3E8 (UnkStruct_ov97_0222D04C * param0) +{ + ov97_02237A20(); + ov97_02237A74(); + ov97_02237B0C(116, 10, 7, 9, 8, 0); +} + +static void ov97_0222D40C (UnkStruct_ov97_0222D04C * param0, int param1) +{ + if (param1 != -1) { + param0->unk_628 = ov97_02237D14(0, param0->unk_628, HW_LCD_WIDTH / 2, 100, param1); + } else { + sub_02021CAC(param0->unk_628, 0); + } +} + +static void ov97_0222D444 (UnkStruct_0205AA50 * param0, u8 param1) +{ + if (sub_0201A7CC(param0) == 1) { + sub_0200DC9C(param0, param1); + } +} + +static void ov97_0222D45C (UnkStruct_0205AA50 * param0, u8 param1) +{ + if (sub_0201A7CC(param0) == 1) { + sub_0200E084(param0, param1); + } +} + +static int ov97_0222D474 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if (v0->unk_1638 != 2) { + ov97_0222DE78(param0, &v0->unk_18, 3); + } + + ov97_0222D444(&v0->unk_28[2], 0); + + if (v0->unk_1638 != 2) { + ov97_0222D200(v0, 15); + v0->unk_434 = (60 * 120); + sub_02039734(); + ov97_0222D30C(v0, 1); + return 7; + } else { + v0->unk_84 = 19; + return 19; + } +} + +static int ov97_0222D4D8 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if (v0->unk_80 == 1) { + return 49; + } + + if ((v0->unk_80 == 3) || (v0->unk_80 == 4) || (v0->unk_80 == 2)) { + return 49; + } + + if (v0->unk_80 == 5) { + return 49; + } + + if (v0->unk_1638 == 1) { + ov97_0222D234(v0->unk_438); + } + + ov97_0222DE78(param0, &v0->unk_18, 6); + ov97_0222D444(&v0->unk_28[2], 0); + + if (v0->unk_1638 == 1) { + ov97_0222D40C(v0, 0); + ov97_0222D30C(v0, 1); + } + + if (v0->unk_1638 == 1) { + sub_020364F0(0xAB); + return 9; + } else { + return 21; + } +} + +static UnkStruct_0202DF40 * ov97_0222D55C (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + UnkUnion_ov97_0222D2B0 * v1 = &v0->unk_8C.unk_50; + UnkStruct_ov97_0222D250 * v2 = &v0->unk_8C.unk_00; + UnkStruct_ov97_0223829C * v3; + + switch (v0->unk_1638) { + case 1: + memcpy(v1, ov97_0222D2B8(0, NULL, 0), sizeof(UnkUnion_ov97_0222D2B0)); + ov97_02238324(&v0->unk_8C, &v0->unk_8C.unk_50, 86); + break; + case 3: + v3 = (UnkStruct_ov97_0223829C *)v0->unk_638; + memcpy(v1, &v3->unk_50, sizeof(UnkUnion_ov97_0222D2B0)); + memcpy(v2, &v3->unk_00, sizeof(UnkStruct_ov97_0222D250)); + break; + } + + return &v1->val1; +} + +static BOOL ov97_0222D5C8 (UnkStruct_0202DF40 * param0) +{ + switch (param0->unk_00) { + case 13: + return 1; + case 3: + if (param0->unk_04.val3.unk_04 == 1) { + return 1; + } + break; + case 1: + case 2: + { + UnkStruct_02073C74 * v0; + int v1; + + v0 = (UnkStruct_02073C74 *)¶m0->unk_04.val1.unk_04; + v1 = sub_02074470(v0, 152, NULL); + + if (((v1 >= 3) && (v1 <= 14)) || ((v1 >= 64) && (v1 <= 71))) { + return 1; + } + } + break; + } + + return 0; +} + +static void ov97_0222D614 (void * param0) +{ + int v0; + UnkStruct_ov97_0222D04C * v1 = (UnkStruct_ov97_0222D04C *)param0; + + if (v1->unk_2A4C == 1) { + v1->unk_2A48 = NULL; + } + + v0 = ov97_0223847C(); + + if ((v0 == 2) || (v0 == 3)) { + if (ov97_0222D5C8(&v1->unk_8C.unk_50.val1) == 1) { + (void)0; + } else { + sub_02005748(1563); + } + + v1->unk_2A48 = NULL; + } +} + +static void ov97_0222D658 (UnkStruct_020067E8 * param0) +{ + int v0, v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + UnkStruct_ov97_0222D250 * v3 = &v2->unk_8C.unk_00; + UnkUnion_ov97_0222D2B0 * v4 = &v2->unk_8C.unk_50; + UnkStruct_021C0794 * v5 = ((UnkStruct_0203CC84 *)sub_02006840(param0))->unk_08; + UnkStruct_0202442C * v6; + + if (v3->unk_4E_2 == 0) { + v0 = 0; + } else { + RTCDate v7; + + v0 = 1; + v4->val2.unk_350 = 0; + + if (v3->unk_4E_4 == 0) { + v4->val2.unk_348 = 0; + } + + sub_020138A4(&v7); + v4->val2.unk_354 = RTC_ConvertDateToDay(&v7); + } + + v6 = sub_0202442C(v5); + sub_0202DE5C(v6, v3->unk_4C); + + if (v0 == 0) { + v1 = sub_0202DB2C(v6, (const void *)v4, 3); + } else { + v1 = sub_0202DBAC(v6, (const void *)v4); + } + + ov97_0223846C(v5); + + v2->unk_2A4C = 0; + v2->unk_2A48 = ov97_0222D614; +} + +static void ov97_0222D6F8 (UnkStruct_020067E8 * param0, int param1) +{ + int v0; + UnkStruct_0205AA50 * v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + + if (param1 == 0) { + v0 = 4; + } else { + v0 = -1; + } + + v1 = &v2->unk_28[2]; + + if (v1->unk_00 == NULL) { + sub_0201A7E8(v2->unk_00, v1, 0, 23, 10, 6, 4, 0, (((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8)); + } + + sub_0200DC48(v1, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E5A8, NELEMS(Unk_ov97_0223E5A8), v1, v0); +} + +static int ov97_0222D75C (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + ov97_0222D444(&v0->unk_28[2], 0); + ov97_0222D444(&v0->unk_58, 0); + + if (v0->unk_1638 == 1) { + ov97_0222D30C(v0, 0); + } + + sub_02039794(); + + return ov97_0222DA84(param0); +} + +static int ov97_0222D798 (UnkStruct_020067E8 * param0) +{ + UnkStruct_0205AA50 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + if (ov97_02237624()) { + v1->unk_1638 = 2; + } else { + v1->unk_1638 = 1; + } + + ov97_0222D444(&v1->unk_28[1], 0); + + v0 = &v1->unk_28[2]; + + if (v0->unk_00 == NULL) { + sub_0201A7E8(v1->unk_00, v0, 0, 23, 10, 6, 4, 0, (((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8)); + } + + sub_0200DC48(v0, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E598, NELEMS(Unk_ov97_0223E598), v0, 2); + + return 5; +} + +static int ov97_0222D814 (UnkStruct_020067E8 * param0) +{ + UnkStruct_0205AA50 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + v1->unk_1638 = 4; + + ov97_0222D444(&v1->unk_28[1], 0); + + v0 = &v1->unk_28[2]; + + if (v0->unk_00 == NULL) { + sub_0201A7E8(v1->unk_00, v0, 0, 23, 10, 6, 4, 0, (((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8)); + } + + sub_0200DC48(v0, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E568, NELEMS(Unk_ov97_0223E568), v0, 78); + + return 5; +} + +static int ov97_0222D884 (UnkStruct_020067E8 * param0) +{ + UnkStruct_0205AA50 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + v1->unk_1638 = 3; + + ov97_0222D444(&v1->unk_28[1], 0); + + v0 = &v1->unk_28[2]; + + if (v0->unk_00 == NULL) { + sub_0201A7E8(v1->unk_00, v0, 0, 23, 10, 6, 4, 0, (((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8)); + } + + sub_0200DC48(v0, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E578, NELEMS(Unk_ov97_0223E578), v0, 77); + + return 5; +} + +static void ov97_0222D8F4 (UnkStruct_020067E8 * param0) +{ + UnkStruct_0205AA50 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + v0 = &v1->unk_28[2]; + + if (v0->unk_00 == NULL) { + sub_0201A7E8(v1->unk_00, v0, 0, 23, 10, 6, 4, 0, (((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8)); + } + + sub_0200DC48(v0, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E588, NELEMS(Unk_ov97_0223E588), v0, 4); +} + +static int ov97_0222D94C (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + ov97_0222D444(&v0->unk_28[2], 0); + ov97_0222D444(&v0->unk_58, 0); + + sub_02039794(); + + if (v0->unk_1638 == 1) { + ov97_0222D2DC(); + } + + return ov97_0222DA84(param0); +} + +static int ov97_0222D984 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + ov97_0222DE78(param0, &v0->unk_18, 3); + ov97_0222D444(&v0->unk_28[2], 0); + ov97_0222D30C(v0, 1); + + Unk_ov97_0223F1A8 = 37; + return 32; +} + +static int ov97_0222D9BC (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if ((v0->unk_80 == 3) || (v0->unk_80 == 4) || (v0->unk_80 == 2)) { + return 49; + } + + ov97_0222D444(&v0->unk_28[2], 0); + ov97_0222DE78(param0, &v0->unk_18, 7); + + return 33; +} + +static int ov97_0222D9F0 (UnkStruct_020067E8 * param0) +{ + if ((Unk_ov97_0223F1A8 == 40) || (Unk_ov97_0223F1A8 == 41) || (Unk_ov97_0223F1A8 == 48)) { + if (ov97_022389C8()) { + Unk_ov97_0223F1A8 = 43; + } + } + + return 36; +} + +static int ov97_0222DA18 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + ov97_0222DE78(param0, &v0->unk_18, 3); + ov97_0222D30C(v0, 1); + ov97_0222D444(&v0->unk_28[2], 0); + ov97_0222D30C(v0, 1); + + v0->unk_1644 = 0x1000; + v0->unk_26DC = NULL; + + return 27; +} + +static int ov97_0222DA64 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + ov97_0222D444(&v0->unk_28[1], 0); + ov97_0222DDD0(param0, (((1 + (18 + 12)) + 9) + 26 * 6), 0); + + return 3; +} + +static int ov97_0222DA84 (UnkStruct_020067E8 * param0) +{ + UnkStruct_0205AA50 * v0; + UnkStruct_02025CCC * v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + UnkStruct_0202442C * v3 = sub_0202442C(v2->unk_04); + + if (v2->unk_62C == 30) { + v2->unk_630 = 1; + ov97_02230224(v2); + } + + ov97_0222D444(&v2->unk_28[0], 0); + v0 = &v2->unk_28[1]; + + if (v0->unk_00 == NULL) { + sub_0201A7E8(v2->unk_00, v0, 0, 15, 9, 16, 8, 0, ((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6)); + } + + sub_0200DC48(v0, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, Unk_ov97_0223E5F0, 4, v0, 1); + + return 4; +} + +static int ov97_0222DB08 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if (v0->unk_62C == 30) { + v0->unk_630 = 1; + ov97_02230224(v0); + } + + ov97_02237790(0, 54, v0->unk_163C, 2); + return -1; +} + +static int ov97_0222DB40 (UnkStruct_020067E8 * param0) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if (v0->unk_62C == 30) { + v0->unk_630 = 1; + } + + ov97_02237784(1); + ov97_02237790(0, 53, v0->unk_163C, 2); + + return -1; +} + +static void ov97_0222DB78 (UnkStruct_02018340 * param0, int param1, u32 param2, u32 param3) +{ + UnkStruct_ov97_0222DB78 v0 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0xe000, + GX_BG_CHARBASE_0x00000, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }; + + v0.unk_12 = param2 / 0x800; + v0.unk_13 = param3 / 0x4000; + + sub_020183C4(param0, param1, &v0, 0); + sub_02019EBC(param0, param1); +} + +static void ov97_0222DBC4 (UnkStruct_02018340 * param0) +{ + UnkStruct_ov84_0223BA5C v0 = { + GX_DISPMODE_GRAPHICS, + GX_BGMODE_0, + GX_BGMODE_0, + GX_BG0_AS_2D + }; + + sub_02018368(&v0); + + ov97_0222DB78(param0, 0, 0xF000, 0x0); + ov97_0222DB78(param0, 1, 0xF800, 0x8000); + ov97_0222DB78(param0, 4, 0x3800, 0x0); + ov97_0222DB78(param0, 5, 0x7800, 0x4000); +} + +static void ov97_0222DC20 (UnkStruct_02018340 * param0) +{ + sub_02006E84(116, 0, 4, 16 * 2 * 8, 16 * 2, 86); + sub_02006E3C(116, 1, param0, 5, 0, 10 * 16 * 0x20, 1, 86); + sub_02006E60(116, 2, param0, 5, 0, 32 * 24 * 2, 1, 86); + sub_02019E2C(param0, 5, 0, 0, 32, 24, 8); + sub_02019448(param0, 5); +} + +static void ov97_0222DC9C (UnkStruct_02018340 * param0) +{ + sub_02006E84(116, 0, 0, 16 * 2 * 8, 16 * 2, 86); + sub_02006E3C(116, 1, param0, 1, 0, 10 * 16 * 0x20, 1, 86); + sub_02006E60(116, 2, param0, 1, 0, 32 * 24 * 2, 1, 86); + sub_02019E2C(param0, 1, 0, 0, 32, 24, 8); + sub_02019448(param0, 1); + + ov97_0222DC20(param0); +} + +static void ov97_0222DD1C (UnkStruct_020067E8 * param0, UnkStruct_ov97_0223E5B8 * param1, int param2, UnkStruct_0205AA50 * param3, u32 param4) +{ + int v0; + UnkStruct_ov84_02240FA8 v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + + if (v2->unk_7C) { + sub_02013A3C(v2->unk_7C); + } + + v2->unk_7C = sub_02013A04(param2, 86); + v2->unk_10 = sub_0200B144(0, 26, 421, 86); + + for (v0 = 0; v0 < param2; v0++) { + sub_02013A4C(v2->unk_7C, v2->unk_10, param1[v0].unk_00, param1[v0].unk_04); + } + + sub_0200B190(v2->unk_10); + + v1 = Unk_ov97_0223E5D0; + + v1.unk_00 = v2->unk_7C; + v1.unk_10 = v1.unk_12 = param2; + v1.unk_0C = param3; + + if (v2->unk_78) { + sub_02001384(v2->unk_78, NULL, NULL); + } + + v2->unk_78 = sub_0200112C(&v1, 0, 0, 86); + + if (param4 != -1) { + ov97_0222DE78(param0, &v2->unk_18, param4); + } +} + +static void ov97_0222DDD0 (UnkStruct_020067E8 * param0, int param1, u32 param2) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + UnkStruct_0205AA50 * v1; + UnkStruct_ov97_0223E5B8 v2[4]; + int v3, v4 = 0; + UnkStruct_0202442C * v5 = sub_0202442C(v0->unk_04); + + v1 = &v0->unk_28[0]; + v2[v4++] = Unk_ov97_0223E5B8[0]; + + if (sub_0202DD88(v5)) { + v2[v4++] = Unk_ov97_0223E5B8[1]; + } + + v2[v4++] = Unk_ov97_0223E5B8[2]; + + if (v1->unk_00 == NULL) { + sub_0201A7E8(v0->unk_00, v1, 0, 8, 7, 16, v4 * 2, 0, param1); + } + + sub_0200DC48(v1, 1, (1 + (18 + 12)), 3); + ov97_0222DD1C(param0, v2, v4, v1, param2); +} + +static void ov97_0222DE78 (UnkStruct_020067E8 * param0, UnkStruct_0205AA50 * param1, u32 param2) +{ + UnkStruct_02023790 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + v1->unk_10 = sub_0200B144(1, 26, 421, 86); + v1->unk_0C = sub_0200B358(86); + + sub_0201ADA4(param1, sub_02002DF8(1, 6)); + + if (v1->unk_14) { + v0 = v1->unk_14; + } else { + v0 = sub_0200B29C(v1->unk_0C, v1->unk_10, param2, 86); + } + + v1->unk_6C = sub_0201D78C(param1, 1, v0, 0, 0, v1->unk_68, ((u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((15 & 0xff) << 0))), NULL); + + if (v1->unk_14 == NULL) { + sub_020237BC(v0); + } + + sub_0200E060(param1, 0, 1, 2); + sub_0200B190(v1->unk_10); + sub_0200B3F0(v1->unk_0C); + + v1->unk_68 = 0xff; +} + +static void ov97_0222DF10 (UnkStruct_020067E8 * param0, UnkStruct_0205AA50 * param1, u16 * param2) +{ + UnkStruct_02023790 * v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + v0 = sub_02023790(36 + 1, 86); + + sub_02023D8C(v0, param2, 36); + sub_0201ADA4(param1, sub_02002DF8(0, 6)); + sub_0201D78C(param1, 0, v0, 0, 0, 0xff, ((u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((15 & 0xff) << 0))), NULL); + sub_0200DC48(param1, 0, (1 + (18 + 12)), 3); + sub_020237BC(v0); +} + +static void ov97_0222DF70 (UnkStruct_020067E8 * param0, int * param1, int (* param2)(UnkStruct_020067E8 *)) +{ + u32 v0; + int v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + static int (* v3)(UnkStruct_020067E8 *); + + v0 = sub_02001288(v2->unk_78); + + switch (v0) { + case 0xffffffff: + break; + case 0xfffffffe: + sub_02005748(1500); + + if (param2) { + v1 = param2(param0); + + if (v1 != -1) { + *param1 = v1; + } + } + break; + default: + sub_02005748(1500); + + if (v0) { + v3 = (static int (*)(UnkStruct_020067E8 *))v0; + v1 = v3(param0); + + if (v1 != -1) { + *param1 = v1; + } + } + break; + } +} + +static BOOL ov97_0222DFD4 (UnkStruct_020067E8 * param0, UnkStruct_ov97_0222D04C * param1) +{ + int v0; + + sub_0201D710(); + sub_02002E7C(0, 0 * 32, 86); + sub_02002E7C(0, 1 * 32, 86); + + v0 = sub_02027B50(param1->unk_08); + + sub_0200DD0C(param1->unk_00, 0, 1, 2, v0, 86); + sub_0200DAA4(param1->unk_00, 0, (1 + (18 + 12)), 3, 1, 86); + + *((u16 *)HW_BG_PLTT) = ((31 & 31) << 10 | (12 & 31) << 5 | (12 & 31)); + + if (!sub_0201A7CC(¶m1->unk_18)) { + sub_0201A7E8(param1->unk_00, ¶m1->unk_18, 0, 2, 19, 27, 4, 0, ((1 + (18 + 12)) + 9)); + } + + ov97_0222DE78(param0, ¶m1->unk_18, 0); + ov97_0222DDD0(param0, (((1 + (18 + 12)) + 9) + 26 * 6), 0); + ov97_0222DC9C(param1->unk_00); + + return 1; +} + +static void ov97_0222E080 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + switch (ov97_02238EAC(param0, &v0->unk_1644)) { + case 0: + break; + case 1: + memcpy(&v0->unk_8C, v0->unk_16B8, sizeof(UnkStruct_ov97_0223829C)); + ov97_0222D30C(v0, 0); + v0->unk_84 = 27; + *param1 = 19; + v0->unk_1640 = 0; + break; + case 2: + case 3: + ov97_0222D30C(v0, 0); + v0->unk_1640 = 0; + *param1 = 17; + break; + case 4: + sub_0201ACF4(&v0->unk_26E0); + sub_0201A8FC(&v0->unk_26E0); + sub_02019EBC(v0->unk_00, 0); + sub_02005748(1500); + ov97_0222DDD0(param0, (((1 + (18 + 12)) + 9) + 26 * 6), 0); + sub_0201FF0C(GX_PLANEMASK_OBJ, 1); + *param1 = 3; + break; + } +} + +void ov97_0222E13C (UnkStruct_ov97_0222D04C * param0) +{ + UnkStruct_0200B358 * v0; + UnkStruct_ov97_02237808 v1; + int v2; + + if (param0->unk_26CC != -1) { + v2 = 0 + param0->unk_26CC; + } else { + v2 = 11; + } + + ov97_0222D30C(param0, 0); + sub_0201FF0C(GX_PLANEMASK_OBJ, 0); + sub_02019EBC(param0->unk_00, 0); + + v0 = sub_0200B358(86); + sub_0200B60C(v0, 0, param0->unk_26D0, 5, 2, 1); + + ov97_02237808(&v1, ¶m0->unk_26E0, 1, 695, (1 + (18 + 12)), 3); + ov97_02237858(&v1, 24, 16, 100); + ov97_02237860(&v1, 0, 1); + + v1.unk_14 = v0; + + ov97_0223795C(param0->unk_00, &v1, 4, 4, v2); + sub_0200B3F0(v0); +} + +static int ov97_0222E1D8 (UnkStruct_020067E8 * param0) +{ + int v0; + UnkStruct_ov97_0222D04C * v1 = sub_0200682C(param0); + + if (v1->unk_80 == 3) { + v0 = 21; + } else if (v1->unk_80 == 4) { + v0 = 25; + } else if (v1->unk_80 == 2) { + v0 = 22; + } else if (v1->unk_80 == 1) { + v0 = 27; + } else if (v1->unk_80 == 5) { + v0 = 9; + return ov97_0222E228(param0, &v1->unk_18, v0, 52); + } + + return ov97_0222E228(param0, &v1->unk_18, v0, 51); +} + +static int ov97_0222E228 (UnkStruct_020067E8 * param0, UnkStruct_0205AA50 * param1, int param2, int param3) +{ + UnkStruct_0200B358 * v0; + UnkStruct_0200B144 * v1; + UnkStruct_ov97_0222D04C * v2 = sub_0200682C(param0); + + if (param1 && param2) { + v1 = sub_0200B144(1, 26, 421, 86); + v0 = sub_0200B358(86); + v2->unk_14 = sub_0200B29C(v0, v1, param2, 86); + v2->unk_68 = 1; + + ov97_0222DE78(param0, param1, param2); + v2->unk_74 = param3; + + sub_0200B3F0(v0); + sub_0200B190(v1); + } else { + if (sub_0201D724(v2->unk_6C) == 0) { + sub_020237BC(v2->unk_14); + v2->unk_14 = NULL; + v2->unk_68 = 0; + return v2->unk_74; + } + } + + return 50; +} + +static void ov97_0222E2AC (UnkStruct_ov97_0222D04C * param0) +{ + switch (param0->unk_1638) { + case 0: + break; + case 1: + ov97_0222D2DC(); + sub_02039794(); + break; + case 2: + break; + case 3: + break; + case 4: + break; + } +} + +static int ov97_0222E2DC (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov97_0222D04C * v0; + + ov97_022301B0(param0); + sub_02017FC8(3, 86, 0x30000); + + v0 = sub_0200681C(param0, sizeof(UnkStruct_ov97_0222D04C), 86); + memset(v0, 0, sizeof(UnkStruct_ov97_0222D04C)); + v0->unk_00 = sub_02018340(86); + + sub_0201FF00(); + sub_0201FF68(); + + ov97_02232054(); + ov97_0222DBC4(v0->unk_00); + + sub_0200F344(0, 0x0); + sub_0200F344(1, 0x0); + + sub_02004550(10, 1174, 1); + ov97_02237520(86); + + if (ov97_02237624()) { + v0->unk_1638 = 2; + sub_02017B70(Unk_020E4C40); + ov97_02238400(1); + } + + v0->unk_62C = 29; + v0->unk_04 = ((UnkStruct_0203CC84 *)sub_02006840(param0))->unk_08; + v0->unk_08 = sub_02025E44(v0->unk_04); + v0->unk_68 = 0xff; + + sub_02017FC8(0, 91, 0x300); + + return 1; +} + +static void ov97_0222E398 (UnkStruct_ov97_0222E398 * param0) +{ + int v0 = 116; + int v1 = 39; + int v2 = 36; + int v3 = 38; + int v4 = 37; + int v5 = 1; + int v6 = NNS_G2D_VRAM_TYPE_2DMAIN; + int v7 = 20000 + v6; + int v8 = 86; + int v9 = 0 + 0; + + { + v6 = NNS_G2D_VRAM_TYPE_2DMAIN; + v7 = 20000 + v6; + + param0->unk_58[v9 + 0][0] = sub_0200985C(param0->unk_0C->unk_190[0], v0, v1, v5, v7, v6, v8); + param0->unk_58[v9 + 0][1] = sub_020098B8(param0->unk_0C->unk_190[1], v0, v2, 0, v7, v6, 1, v8); + param0->unk_58[v9 + 0][2] = sub_02009918(param0->unk_0C->unk_190[2], v0, v3, v5, v7, 2, v8); + param0->unk_58[v9 + 0][3] = sub_02009918(param0->unk_0C->unk_190[3], v0, v4, v5, v7, 3, v8); + } + + { + v6 = NNS_G2D_VRAM_TYPE_2DSUB; + v7 = 20000 + v6; + + param0->unk_58[v9 + 1][0] = sub_0200985C(param0->unk_0C->unk_190[0], v0, v1, v5, v7, v6, v8); + param0->unk_58[v9 + 1][1] = sub_020098B8(param0->unk_0C->unk_190[1], v0, v2, 0, v7, v6, 1, v8); + param0->unk_58[v9 + 1][2] = sub_02009918(param0->unk_0C->unk_190[2], v0, v3, v5, v7, 2, v8); + param0->unk_58[v9 + 1][3] = sub_02009918(param0->unk_0C->unk_190[3], v0, v4, v5, v7, 3, v8); + } + + sub_0200A328(param0->unk_58[v9 + 0][0]); + sub_0200A328(param0->unk_58[v9 + 1][0]); + + sub_0200A640(param0->unk_58[v9 + 0][1]); + sub_0200A640(param0->unk_58[v9 + 1][1]); + + v6 = NNS_G2D_VRAM_TYPE_2DMAIN; + v7 = 20000 + v6; + + sub_020093B4(¶m0->unk_10[v9 + 0], v7, v7, v7, v7, 0xffffffff, 0xffffffff, 0, 0, param0->unk_0C->unk_190[0], param0->unk_0C->unk_190[1], param0->unk_0C->unk_190[2], param0->unk_0C->unk_190[3], NULL, NULL); + + v6 = NNS_G2D_VRAM_TYPE_2DSUB; + v7 = 20000 + v6; + + sub_020093B4(¶m0->unk_10[v9 + 1], v7, v7, v7, v7, 0xffffffff, 0xffffffff, 0, 0, param0->unk_0C->unk_190[0], param0->unk_0C->unk_190[1], param0->unk_0C->unk_190[2], param0->unk_0C->unk_190[3], NULL, NULL); +} + +static UnkStruct_02022550 * ov97_0222E538 (UnkStruct_ov97_0222E398 * param0, int param1) +{ + UnkStruct_02022550 * v0; + + { + UnkStruct_ov115_02261520 v1; + int v2 = (param1 == NNS_G2D_VRAM_TYPE_2DMAIN) ? 0 : 1; + + v1.unk_00 = param0->unk_0C->unk_00; + v1.unk_04 = ¶m0->unk_10[v2]; + v1.unk_08.z = 0; + v1.unk_14.x = FX32_ONE; + v1.unk_14.y = FX32_ONE; + v1.unk_14.z = FX32_ONE; + v1.unk_20 = 0; + v1.unk_08.x = FX32_ONE * 128; + v1.unk_08.y = FX32_ONE * 32; + v1.unk_24 = 10; + v1.unk_28 = param1; + v1.unk_2C = 86; + + if (v1.unk_28 == NNS_G2D_VRAM_TYPE_2DSUB) { + v1.unk_08.y += FX32_CONST(256); + } + + v0 = sub_02021AA0(&v1); + } + + if (v0) { + sub_02021CC8(v0, 1); + sub_02021E80(v0, 0); + sub_02021D6C(v0, 0); + sub_02021CAC(v0, 1); + } + + return v0; +} + +static void ov97_0222E5B4 (UnkStruct_ov97_0222E398 * param0) +{ + param0->unk_3008.unk_0C = ov97_0222E538(param0, NNS_G2D_VRAM_TYPE_2DMAIN); + + sub_02021DCC(param0->unk_3008.unk_0C, 2); + sub_02021E50(param0->unk_3008.unk_0C, 0); + sub_02021CAC(param0->unk_3008.unk_0C, 0); + sub_02021F58(param0->unk_3008.unk_0C, 0); + sub_02021CF8(param0->unk_3008.unk_0C, 2); + + { + VecFx32 * v0; + + v0 = ( VecFx32 * )sub_02021D28(param0->unk_3008.unk_0C); + v0->x = FX32_CONST(128); + v0->y = FX32_CONST(96); + } +} + +static void ov97_0222E60C (UnkStruct_ov97_0222E398 * param0) +{ + param0->unk_3054.unk_0C = ov97_0222E538(param0, NNS_G2D_VRAM_TYPE_2DSUB); + + sub_02021DCC(param0->unk_3054.unk_0C, 4); + sub_02021E50(param0->unk_3054.unk_0C, 0); + sub_02021CAC(param0->unk_3054.unk_0C, 0); + sub_02021F58(param0->unk_3054.unk_0C, 0); + sub_02021CF8(param0->unk_3054.unk_0C, 2); + + { + VecFx32 * v0; + + v0 = ( VecFx32 * )sub_02021D28(param0->unk_3054.unk_0C); + v0->x = FX32_CONST(128); + v0->y = FX32_CONST(0) + FX32_CONST(256); + } +} + +static void ov97_0222E664 (UnkStruct_ov97_0222E398 * param0) +{ + sub_02021BD4(param0->unk_3008.unk_0C); + param0->unk_3008.unk_0C = NULL; +} + +static void ov97_0222E67C (UnkStruct_ov97_0222E398 * param0) +{ + sub_02021BD4(param0->unk_3054.unk_0C); + param0->unk_3054.unk_0C = NULL; +} + +static void ov97_0222E694 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + if (param0->unk_88[v0].unk_0C) { + sub_02021E2C(param0->unk_88[v0].unk_0C, FX32_CONST(2)); + } + + if (param0->unk_1848[v0].unk_0C) { + sub_02021E2C(param0->unk_1848[v0].unk_0C, FX32_CONST(2)); + } + } + + if (param0->unk_3008.unk_0C) { + sub_02021E2C(param0->unk_3008.unk_0C, FX32_CONST(2)); + } + + if (param0->unk_3054.unk_0C) { + sub_02021E2C(param0->unk_3054.unk_0C, FX32_CONST(2)); + } +} + +static void ov97_0222E6F8 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + param0->unk_88[v0].unk_0C = ov97_0222E538(param0, NNS_G2D_VRAM_TYPE_2DMAIN); + sub_02021DCC(param0->unk_88[v0].unk_0C, 1); + sub_02021E50(param0->unk_88[v0].unk_0C, 0); + } +} + +static void ov97_0222E734 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + if (v0 < (80 / 4)) { + param0->unk_88[v0].unk_0C = ov97_0222E538(param0, NNS_G2D_VRAM_TYPE_2DMAIN); + sub_02021DCC(param0->unk_88[v0].unk_0C, 1); + sub_02021E50(param0->unk_88[v0].unk_0C, 0); + } else { + param0->unk_88[v0].unk_0C = NULL; + } + } +} + +static void ov97_0222E77C (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + param0->unk_1848[v0].unk_0C = ov97_0222E538(param0, NNS_G2D_VRAM_TYPE_2DSUB); + sub_02021DCC(param0->unk_1848[v0].unk_0C, 5); + sub_02021E50(param0->unk_1848[v0].unk_0C, 0); + } +} + +static void ov97_0222E7B4 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + if (param0->unk_88[v0].unk_0C == NULL) { + continue; + } + + sub_02021BD4(param0->unk_88[v0].unk_0C); + param0->unk_88[v0].unk_0C = NULL; + sub_0200DA58(param0->unk_88[v0].unk_48); + } +} + +static void ov97_0222E7E4 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + + for (v0 = 0; v0 < 80; v0++) { + sub_02021BD4(param0->unk_1848[v0].unk_0C); + param0->unk_1848[v0].unk_0C = NULL; + sub_0200DA58(param0->unk_1848[v0].unk_48); + } +} + +static void ov97_0222E814 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + VecFx32 v1; + + for (v0 = 0; v0 < 80; v0++) { + param0->unk_88[v0].unk_10.x = FX32_CONST(128); + param0->unk_88[v0].unk_10.y = FX32_CONST(96); + param0->unk_88[v0].unk_1C = FX32_CONST(4); + param0->unk_88[v0].unk_20 = FX32_CONST(5); + param0->unk_88[v0].unk_2C = v0 % 4; + param0->unk_88[v0].unk_34 = 0; + param0->unk_88[v0].unk_04 = 0; + + { + param0->unk_88[v0].unk_1C = FX32_CONST((v0 / 10) + 4); + } + { + if (v0 > 50) { + param0->unk_88[v0].unk_30 = 210 + 50 + v0 + sub_0201D2E8() % 5; + } else if (v0 > 40) { + param0->unk_88[v0].unk_30 = 210 + 40 + v0 + sub_0201D2E8() % 5; + } else if (v0 > 30) { + param0->unk_88[v0].unk_30 = 210 + 30 + v0 + sub_0201D2E8() % 5; + } else if (v0 > 25) { + param0->unk_88[v0].unk_30 = 210 + 20 + v0 + sub_0201D2E8() % 5; + } else if (v0 > 20) { + param0->unk_88[v0].unk_30 = 210 + 10 + v0 + sub_0201D2E8() % 5; + } else { + int v2[] = { + 1, + 30, + 60, + 90, + 90, + 120, + 120, + 120, + 150, + 150, + 150, + 150, + 180, + 180, + 180, + 180, + 210, + 210, + 210, + 210, + 210 + }; + + param0->unk_88[v0].unk_30 = v2[v0]; + } + + param0->unk_88[v0].unk_30 = ((param0->unk_88[v0].unk_30 + 1) / 2) * 0.7; + param0->unk_88[v0].unk_30 += 1; + } + + param0->unk_88[v0].unk_38 = 5 * 3; + param0->unk_88[v0].unk_40 = param0->unk_88[v0].unk_38; + param0->unk_88[v0].unk_44 = param0->unk_88[v0].unk_38; + + v1 = *( VecFx32 *)sub_02021D28(param0->unk_88[v0].unk_0C); + v1.x = FX32_CONST(16 + (sub_0201D2E8() % (256 - 32))); + v1.y = FX32_CONST(0); + + sub_02021C50(param0->unk_88[v0].unk_0C, &v1); + sub_02021CAC(param0->unk_88[v0].unk_0C, 0); + + param0->unk_88[v0].unk_48 = sub_0200D9E8(ov97_0222EEB8, ¶m0->unk_88[v0], 6); + } +} + +static void ov97_0222EA68 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + VecFx32 v1; + + for (v0 = 0; v0 < 80; v0++) { + if (param0->unk_88[v0].unk_0C == NULL) { + continue; + } + + param0->unk_88[v0].unk_10.x = FX32_CONST(128); + param0->unk_88[v0].unk_10.y = FX32_CONST(96); + param0->unk_88[v0].unk_1C = FX32_CONST(12); + param0->unk_88[v0].unk_20 = FX32_CONST(1); + + param0->unk_88[v0].unk_2C = 0xFF; + param0->unk_88[v0].unk_34 = 0; + param0->unk_88[v0].unk_04 = 0; + param0->unk_88[v0].unk_08 = 0; + + if (v0 > 30) { + param0->unk_88[v0].unk_30 = 15 + (sub_0201D2E8() % 10); + } else if (v0 > 20) { + param0->unk_88[v0].unk_30 = 10 + (sub_0201D2E8() % 10); + } else if (v0 > 10) { + param0->unk_88[v0].unk_30 = 10 + (sub_0201D2E8() % 5); + } else { + param0->unk_88[v0].unk_30 = 5 + (sub_0201D2E8() % 5); + } + + param0->unk_88[v0].unk_30 = 0; + param0->unk_88[v0].unk_40 = param0->unk_88[v0].unk_38; + param0->unk_88[v0].unk_44 = param0->unk_88[v0].unk_38; + + { + int v2 = sub_0201D2E8() % 360; + int v3 = 64 + (sub_0201D2E8() % 32); + + v1.x = param0->unk_88[v0].unk_10.x + (sub_0201D250(v2) * v3); + v1.y = param0->unk_88[v0].unk_10.y + (sub_0201D264(v2) * v3); + + sub_02021C50(param0->unk_88[v0].unk_0C, &v1); + } + + sub_02021DCC(param0->unk_88[v0].unk_0C, 1); + sub_02021CAC(param0->unk_88[v0].unk_0C, 0); + + param0->unk_88[v0].unk_48 = sub_0200D9E8(ov97_0222EEB8, ¶m0->unk_88[v0], 6); + } +} + +static void ov97_0222EBD0 (UnkStruct_ov97_0222E398 * param0) +{ + int v0; + VecFx32 v1; + + for (v0 = 0; v0 < 80; v0++) { + param0->unk_1848[v0].unk_10.x = FX32_CONST(128); + param0->unk_1848[v0].unk_10.y = FX32_CONST(384); + param0->unk_1848[v0].unk_1C = FX32_CONST(4); + param0->unk_1848[v0].unk_20 = FX32_CONST(5); + param0->unk_1848[v0].unk_2C = 4 + (v0 % 2); + param0->unk_1848[v0].unk_34 = 0; + param0->unk_1848[v0].unk_04 = 0; + param0->unk_1848[v0].unk_3C = 2 + (sub_0201D2E8() % 4); + param0->unk_1848[v0].unk_1C = FX32_CONST((v0 / 30) + 4); + + if (v0 > 60) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 70 + (sub_0201D2E8() % 10); + } else if (v0 > 50) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 60 + (sub_0201D2E8() % 10); + } else if (v0 > 40) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 50 + (sub_0201D2E8() % 5); + } else if (v0 > 30) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 40 + (sub_0201D2E8() % 10); + } else if (v0 > 20) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 30 + (sub_0201D2E8() % 10); + } else if (v0 > 10) { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 20 + (sub_0201D2E8() % 5); + } else { + param0->unk_1848[v0].unk_38 = 5; + param0->unk_1848[v0].unk_30 = 10 + (sub_0201D2E8() % 5); + } + + param0->unk_1848[v0].unk_40 = param0->unk_1848[v0].unk_38; + param0->unk_1848[v0].unk_44 = param0->unk_1848[v0].unk_38; + + v1 = *( VecFx32 *)sub_02021D28(param0->unk_1848[v0].unk_0C); + + v1.x = FX32_CONST(128); + v1.y = FX32_CONST(384); + + sub_02021C50(param0->unk_1848[v0].unk_0C, &v1); + sub_02021CAC(param0->unk_1848[v0].unk_0C, 1); + + param0->unk_1848[v0].unk_48 = sub_0200D9E8(ov97_0222EEB8, ¶m0->unk_1848[v0], 6); + } +} + +static BOOL ov97_0222EDC0 (s16 param0, s16 param1, f32 param2, f32 param3, f32 * param4, f32 * param5, f32 param6, s16 param7) +{ + f32 v0; + f32 v1; + UnkStruct_ov97_0222EDC0 v2; + UnkStruct_ov97_0222EDC0 v3; + UnkStruct_ov97_0222EDC0 v4; + + v4.unk_00 = 0; + v4.unk_04 = 0; + + v3.unk_00 = (param0 - param2); + v3.unk_04 = (param1 - param3); + + v2.unk_00 = 0; + v2.unk_04 = 0; + + v1 = (v3.unk_00 * v3.unk_00) + (v3.unk_04 * v3.unk_04); + + v0 = FX_Sqrt(FX_F32_TO_FX32(v1)); + v0 = FX_FX32_TO_F32(v0); + + if ((v0 < param6) || (param7 > v0) || (v0 == 0)) { + return 0; + } + + v2.unk_00 = (v3.unk_00 * param6) / v0; + v2.unk_04 = (v3.unk_04 * param6) / v0; + + *param4 = (v2.unk_00 + v4.unk_00); + *param5 = (v2.unk_04 + v4.unk_04); + + return 1; +} + +static void ov97_0222EEB8 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov97_0222EEB8 * v0 = ( UnkStruct_ov97_0222EEB8 * )param1; + VecFx32 v1; + f32 v2, v3; + + if (v0->unk_30) { + sub_02021E50(v0->unk_0C, 0); + v0->unk_30--; + return; + } else { + sub_02021CAC(v0->unk_0C, 1); + } + + { + BOOL v4; + + v1 = *(( VecFx32 * )sub_02021D28(v0->unk_0C)); + v4 = ov97_0222EDC0(v0->unk_10.x >> FX32_SHIFT, v0->unk_10.y >> FX32_SHIFT, FX_FX32_TO_F32(v1.x), FX_FX32_TO_F32(v1.y), &v2, &v3, FX_FX32_TO_F32(v0->unk_1C), FX_FX32_TO_F32(v0->unk_20)); + + if (v4 && (v0->unk_24 == 0)) { + v1.x += FX_F32_TO_FX32(v2); + v1.y += FX_F32_TO_FX32(v3); + + sub_02021C50(v0->unk_0C, &v1); + } else { + switch (v0->unk_24) { + case 0: + v0->unk_28 = FX_Atan2Idx(FX_F32_TO_FX32(v0->unk_10.y - v1.y), FX_F32_TO_FX32(v0->unk_10.x - v1.x)); + v0->unk_24++; + break; + case 1: + if (v0->unk_04 < 20) { + v0->unk_04++; + } else { + v0->unk_08 = 1; + } + + v0->unk_28 += 8; + + if (v0->unk_2C == 0) { + v0->unk_34 += 8; + v0->unk_34 %= 360; + v0->unk_40 = (sub_0201D264(v0->unk_34) * v0->unk_38) >> FX32_SHIFT; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * +1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * +1); + } else if (v0->unk_2C == 1) { + v0->unk_34 += 8; + v0->unk_34 %= 360; + v0->unk_44 = (sub_0201D250(v0->unk_34) * v0->unk_38) >> FX32_SHIFT; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * +1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * +1); + } else if (v0->unk_2C == 2) { + v0->unk_34 += 8; + v0->unk_34 %= 360; + v0->unk_44 = (sub_0201D250(v0->unk_34) * v0->unk_38) >> FX32_SHIFT; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * -1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * -1); + } else if (v0->unk_2C == 3) { + v0->unk_34 += 8; + v0->unk_34 %= 360; + v0->unk_40 = (sub_0201D264(v0->unk_34) * v0->unk_38) >> FX32_SHIFT; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * -1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * -1); + } else if (v0->unk_2C == 4) { + if (v0->unk_38 < (64 + 32)) { + v0->unk_38 += v0->unk_3C; + } + + v0->unk_40 = v0->unk_38; + v0->unk_44 = v0->unk_38; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * +1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * +1); + } else if (v0->unk_2C == 5) { + if (v0->unk_38 < (64 + 32)) { + v0->unk_38 += v0->unk_3C; + } + + v0->unk_40 = v0->unk_38; + v0->unk_44 = v0->unk_38; + + v1.x = v0->unk_10.x + (sub_0201D250(v0->unk_28) * v0->unk_40 * -1); + v1.y = v0->unk_10.y + (sub_0201D264(v0->unk_28) * v0->unk_44 * -1); + } else { + v0->unk_04 = 10; + v0->unk_1C += FX32_CONST(0.5); + + v4 = ov97_0222EDC0(v0->unk_10.x >> FX32_SHIFT, v0->unk_10.y >> FX32_SHIFT, FX_FX32_TO_F32(v1.x), FX_FX32_TO_F32(v1.y), &v2, &v3, FX_FX32_TO_F32(v0->unk_1C), FX_FX32_TO_F32(0)); + + if (v4) { + v1.x += FX_F32_TO_FX32(v2); + v1.y += FX_F32_TO_FX32(v3); + + sub_02021C50(v0->unk_0C, &v1); + } else { + v0->unk_08 = 1; + } + } + + v0->unk_28 %= 360; + sub_02021C50(v0->unk_0C, &v1); + break; + } + } + } +} + +static void ov97_0222F348 (UnkStruct_ov97_0222E398 * param0) +{ + G2_SetBlendBrightness((GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BD), param0->unk_08); +} + +static void ov97_0222F360 (UnkStruct_ov97_0222E398 * param0) +{ + G2S_SetBlendBrightness((GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BD), param0->unk_08); +} + +static void ov97_0222F378 (UnkStruct_ov97_0222E398 * param0) +{ + ov97_0222F348(param0); + ov97_0222F360(param0); +} + +static void ov97_0222F388 (void) +{ + sub_0201975C(1, 0x0); + sub_0201975C(5, 0x0); +} + +static BOOL ov97_0222F39C (UnkStruct_ov97_0222E398 * param0, int param1, s8 param2) +{ + BOOL v0 = 1; + + switch (param1) { + case 0: + if (param0->unk_08 > 0) { + if (param0->unk_08 - param2 > 0) { + param0->unk_08 -= param2; + v0 = 0; + } else { + param0->unk_08 = 0; + } + } else if (param0->unk_08 < 0) { + if (param0->unk_08 + param2 < 0) { + param0->unk_08 += param2; + v0 = 0; + } else { + param0->unk_08 = 0; + } + } + break; + case 1: + if (param0->unk_08 - param2 > -16) { + param0->unk_08 -= param2; + v0 = 0; + } else { + param0->unk_08 = -16; + } + break; + case 2: + if (param0->unk_08 + param2 < +16) { + param0->unk_08 += param2; + v0 = 0; + } else { + param0->unk_08 = +16; + } + break; + } + + ov97_0222F378(param0); + return v0; +} + +static BOOL ov97_0222F410 (UnkStruct_ov97_0222E398 * param0, int param1, s8 param2) +{ + BOOL v0 = 1; + + switch (param1) { + case 0: + if (param0->unk_08 > 0) { + if (param0->unk_08 - param2 > 0) { + param0->unk_08 -= param2; + v0 = 0; + } else { + param0->unk_08 = 0; + } + } else if (param0->unk_08 < 0) { + if (param0->unk_08 + param2 < 0) { + param0->unk_08 += param2; + v0 = 0; + } else { + param0->unk_08 = 0; + } + } + break; + case 1: + if (param0->unk_08 - param2 > -16) { + param0->unk_08 -= param2; + v0 = 0; + } else { + param0->unk_08 = -16; + } + break; + case 2: + if (param0->unk_08 + param2 < +16) { + param0->unk_08 += param2; + v0 = 0; + } else { + param0->unk_08 = +16; + } + + break; + } + + ov97_0222F348(param0); + return v0; +} + +static void ov97_0222F484 (UnkStruct_ov97_0222E398 * param0) +{ + param0->unk_08 = 0; + + ov97_0222F378(param0); + ov97_0222E398(param0); + ov97_0222E6F8(param0); + ov97_0222E814(param0); + ov97_0222E5B4(param0); + + sub_0201FF0C(GX_PLANEMASK_OBJ, 1); + sub_0201FF74(GX_PLANEMASK_OBJ, 1); +} + +static void ov97_0222F4BC (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov97_0222E398 * v0 = ( UnkStruct_ov97_0222E398 * )param1; + BOOL v1; + + switch (v0->unk_00) { + case 0: + { + ov97_0222F484(v0); + v0->unk_00 = 1; + } + break; + case 1: + { + v1 = ov97_0222F39C(v0, 1, 2); + + if (v1) { + v0->unk_00 = 2; + } + } + break; + case 2: + { + int v2; + int v3; + + v1 = 1; + v3 = 0; + + for (v2 = 0; v2 < 80; v2++) { + if (v0->unk_88[v2].unk_08) { + v3++; + continue; + } + + v1 = 0; + } + + if (v3 > 50) { + sub_02021DCC(v0->unk_3008.unk_0C, 4); + } else if (v3 > 30) { + sub_02021DCC(v0->unk_3008.unk_0C, 3); + } else if (v3 > 7) { + sub_02021CAC(v0->unk_3008.unk_0C, 1); + } + + if (v1 || (v3 == (80 - 1))) { + v0->unk_00 = 3; + ov97_0222E7B4(v0); + } + } + break; + case 3: + if (*(v0->unk_30A0) == 2) { + ov97_0222E734(v0); + ov97_0222EA68(v0); + sub_0201FF0C(GX_PLANEMASK_BG1, 0); + ov97_0222F388(); + v0->unk_00 = 4; + } + break; + case 4: + { + int v4; + int v5 = 0; + + v1 = 1; + + for (v4 = 0; v4 < 80; v4++) { + if (v0->unk_88[v4].unk_0C == NULL) { + continue; + } + + if (v0->unk_88[v4].unk_08) { + v5++; + continue; + } + + v1 = 0; + } + + ov97_0222F410(v0, 2, 2); + + if (v1 || (v5 == ((80 / 4) - 1))) { + sub_02005748(1563); + v0->unk_00 = 5; + ov97_0222E7B4(v0); + ov97_0222E60C(v0); + } + } + break; + case 5: + v1 = ov97_0222F410(v0, 2, 2); + + if (v1) { + ov97_0222F410(v0, 1, 2); + v0->unk_00 = 6; + } + break; + case 6: + { + VecFx32 * v6; + VecFx32 * v7; + fx32 v8; + + v1 = ov97_0222F410(v0, 1, 2); + + if (v1 == 0) { + break; + } + + v6 = ( VecFx32 * )sub_02021D28(v0->unk_3008.unk_0C); + v7 = ( VecFx32 * )sub_02021D28(v0->unk_3054.unk_0C); + + if (v6->y < FX32_CONST(256 - 32)) { + v6->y += FX32_CONST(8); + } + + v8 = v6->y - FX32_CONST(192); + + if (v8 > FX32_CONST(0)) { + if (v7->y < FX32_CONST(384)) { + v7->y += FX32_CONST(8); + + if (sub_02021D34(v0->unk_3054.unk_0C) == 0) { + sub_02021CAC(v0->unk_3054.unk_0C, 1); + } + } else { + v0->unk_00 = 7; + ov97_0222E664(v0); + ov97_0222E77C(v0); + ov97_0222EBD0(v0); + sub_0201FF0C(GX_PLANEMASK_BG1, 1); + } + } + } + break; + case 7: + { + int v9; + int v10 = 0; + + v1 = 1; + + for (v9 = 0; v9 < 80; v9++) { + if (v0->unk_1848[v9].unk_08) { + v10++; + continue; + } + + v1 = 0; + } + + if (v10 > 7) { + ov97_0222F39C(v0, 2, 1); + } + + if (v10 > 50) { + sub_02021CAC(v0->unk_3054.unk_0C, 0); + } else if (v10 > 30) { + sub_02021DCC(v0->unk_3054.unk_0C, 2); + } else if (v10 > 7) { + sub_02021DCC(v0->unk_3054.unk_0C, 3); + } + + if (v1) { + v0->unk_00 = 8; + ov97_0222E7E4(v0); + ov97_0222E67C(v0); + } + } + break; + case 8: + { + v1 = ov97_0222F39C(v0, 2, 1); + + if (v1) { + v0->unk_00 = 9; + } + } + break; + case 9: + { + v1 = ov97_0222F39C(v0, 0, 2); + + if (v1) { + v0->unk_00 = 255; + } + } + break; + default: + *(v0->unk_30A0) = 0; + sub_0200DA58(param0); + sub_020181C4(v0); + return; + } + + ov97_0222E694(v0); +} + +static int ov97_0222F75C (UnkStruct_020067E8 * param0, int * param1) +{ + u32 v0, v1; + UnkStruct_0202DF40 * v2; + UnkStruct_ov97_0222D04C * v3 = sub_0200682C(param0); + + CTRDG_IsExisting(); + + if (v3->unk_62C != 29) { + ov97_02230224(v3); + } + + switch (*param1) { + case 0: + ov97_02237694(86); + v3->unk_163C = param1; + *param1 = 1; + break; + + case 1: + ov97_0222DFD4(param0, v3); + ov97_0222D3E8(v3); + ov97_02237790(1, 3, param1, 2); + break; + case 2: + ov97_022377F0(param1); + break; + case 3: + ov97_0222DF70(param0, param1, ov97_0222DB40); + break; + case 4: + ov97_0222DF70(param0, param1, ov97_0222DA64); + break; + case 5: + ov97_0222DF70(param0, param1, ov97_0222D75C); + break; + case 27: + ov97_0222E080(param0, param1); + break; + case 32: + ov97_022302F4(v3); + + if (Unk_ov97_0223F1A8 == 45) { + ov97_0222D30C(v3, 0); + ov97_0222D55C(param0); + + v3->unk_80 = ov97_02232148(v3->unk_04, &v3->unk_8C); + + if (v3->unk_80 == 1) { + ov97_0222D30C(v3, 0); + *param1 = 49; + } else { + if (!sub_0201A7CC(&v3->unk_58)) { + sub_0201A7E8(v3->unk_00, &v3->unk_58, 0, 3, 2, 26, 4, 0, ((((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8) + 6 * 4)); + } + + ov97_0222DF10(param0, &v3->unk_58, ov97_02238D54()); + ov97_0222DE78(param0, &v3->unk_18, 4); + ov97_0222D8F4(param0); + *param1 = 31; + } + } + + if ((Unk_ov97_0223F1A8 == 47) || (Unk_ov97_0223F1A8 == 46)) { + ov97_022302D4(); + *param1 = 17; + } + break; + case 31: + ov97_0222DF70(param0, param1, ov97_0222D9F0); + ov97_022302F4(v3); + break; + case 33: + v2 = ov97_0222D55C(param0); + + ov97_0222D30C(v3, 1); + ov97_0222D40C(v3, 1); + + if (ov97_0222D5C8(v2) == 1) { + ov97_0222D658(param0); + + v3->unk_2A54 = 1; + + ov97_0222D40C(v3, -1); + ov97_0222D444(&v3->unk_58, 0); + + { + UnkStruct_ov97_0222E398 * v4 = sub_02018144(86, sizeof(UnkStruct_ov97_0222E398)); + + memset(v4, 0, sizeof(UnkStruct_ov97_0222E398)); + + v4->unk_30A0 = &v3->unk_2A54; + v4->unk_0C = ov97_02237AEC(); + + sub_0200D9E8(ov97_0222F4BC, v4, 5); + } + } else { + ov97_02238194(v3->unk_00, v2); + ov97_0222D658(param0); + } + + *param1 = 34; + break; + case 35: + { + if (v3->unk_2A54 == 0) { + *param1 = ov97_0222E228(param0, &v3->unk_18, 8, 55); + sub_0201FF0C(GX_PLANEMASK_BG0, 1); + } + } + break; + case 34: + { + int v5; + + v5 = ov97_02238528(); + + if (v5 == 4) { + ov97_022384F4(); + } + + if (v5 == 2) { + ov97_0222D30C(v3, 0); + ov97_0222D40C(v3, -1); + ov97_0222D45C(&v3->unk_18, 0); + + sub_02019EBC(v3->unk_00, 0); + sub_0201FF0C(GX_PLANEMASK_BG0, 0); + + v2 = &v3->unk_8C.unk_50.val1; + + if (ov97_0222D5C8(v2) == 1) { + ov97_02238194(v3->unk_00, v2); + v3->unk_2A54 = 2; + } else { + sub_02005748(1572); + } + + *param1 = 35; + } else if (v5 == 3) { + ov97_0222D30C(v3, 0); + ov97_0222D40C(v3, -1); + + v3->unk_8C.unk_00.unk_4E_2 = 0; + *param1 = ov97_0222E228(param0, &v3->unk_18, 26, 55); + } + } + break; + case 36: + ov97_022302F4(v3); + + if ((Unk_ov97_0223F1A8 == 47) || (Unk_ov97_0223F1A8 == 45) || (Unk_ov97_0223F1A8 == 46)) { + if (Unk_ov97_0223F1A8 == 47) { + ov97_022302D4(); + } + + *param1 = ov97_0222D94C(param0); + } + break; + case 7: + if ((v3->unk_438 = ov97_0222D250(v3)) != -1) { + ov97_0222D30C(v3, 0); + + v3->unk_80 = ov97_02232148(v3->unk_04, &v3->unk_8C); + + if (!sub_0201A7CC(&v3->unk_58)) { + sub_0201A7E8(v3->unk_00, &v3->unk_58, 0, 3, 2, 26, 4, 0, ((((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8) + 6 * 4)); + } + + ov97_0222DF10(param0, &v3->unk_58, v3->unk_8C.unk_00.unk_00); + ov97_0222DE78(param0, &v3->unk_18, 4); + ov97_0222D6F8(param0, 0); + *param1 = 8; + } + + if ((Unk_021BF67C.unk_48 & PAD_BUTTON_B) || (--v3->unk_434 == 0)) { + ov97_0222D30C(v3, 0); + ov97_0222D2DC(); + sub_02039794(); + *param1 = 17; + } + break; + case 8: + ov97_0222DF70(param0, param1, ov97_0222D94C); + break; + case 9: + v1 = sub_0203608C(); + + if ((v1 != 0) && sub_02035D78(v1)) { + if (sub_02036540(0xAB) == 1) { + ov97_0222D30C(v3, 0); + sub_020388F4(1, 1); + ov97_0222DE78(param0, &v3->unk_18, 7); + ov97_0222D40C(v3, 1); + ov97_0222D30C(v3, 1); + v3->unk_434 = 60 * 10; + *param1 = 10; + } + } else if ((v1 != 0) && (sub_02035D78(v1) == 0)) { + ov97_0222D2DC(); + sub_02039794(); + ov97_0222D40C(v3, -1); + ov97_0222D30C(v3, 0); + *param1 = 16; + break; + } + + if ((Unk_021BF67C.unk_48 & PAD_BUTTON_B) || (--v3->unk_434 == 0)) { + ov97_0222D2DC(); + sub_02039794(); + ov97_0222D40C(v3, -1); + ov97_0222D30C(v3, 0); + *param1 = 17; + } + break; + case 10: + if (ov97_0222D2A0()) { + *param1 = 11; + } + + v1 = sub_0203608C(); + + if ((Unk_021BF67C.unk_48 & PAD_BUTTON_B) || (--v3->unk_434 == 0) || ((v1 != 0) && (sub_02035D78(v1) == 0))) { + ov97_0222D30C(v3, 0); + ov97_0222D2DC(); + sub_02039794(); + *param1 = 17; + } + break; + case 11: + v2 = ov97_0222D55C(param0); + ov97_02238194(v3->unk_00, v2); + sub_020388F4(0, 0); + ov97_0222D658(param0); + *param1 = 12; + break; + case 12: + v1 = sub_0203608C(); + + if ((v1 != 0) && (sub_02035D78(v1) == 0)) { + ov97_0222D2DC(); + v3->unk_2A4C = 1; + ov97_0223850C(); + ov97_0222D30C(v3, 0); + sub_02039794(); + ov97_0222D40C(v3, -1); + *param1 = 14; + break; + } + + if (ov97_02238528() == 4) { + sub_020364F0(0x93); + *param1 = 13; + v3->unk_43C = 120; + } else if (ov97_02238528() == 3) { + ov97_0223850C(); + v3->unk_8C.unk_00.unk_4E_2 = 0; + ov97_0222D30C(v3, 0); + *param1 = ov97_0222E228(param0, &v3->unk_18, 26, 55); + } + break; + case 13: + if (sub_02036540(0x93) == 1) { + ov97_022384F4(); + v3->unk_43C = 10; + *param1 = 15; + } else if (--v3->unk_43C == 0) { + ov97_0223850C(); + v3->unk_8C.unk_00.unk_4E_2 = 0; + ov97_0222D30C(v3, 0); + *param1 = ov97_0222E228(param0, &v3->unk_18, 26, 55); + } + break; + case 14: + ov97_0222D444(&v3->unk_58, 0); + v3->unk_8C.unk_00.unk_4E_2 = 0; + *param1 = ov97_0222E228(param0, &v3->unk_18, 28, 55); + break; + case 15: + if (--v3->unk_43C == 0) { + ov97_0222D30C(v3, 0); + ov97_0222D2DC(); + sub_02039794(); + sub_02005748(1572); + ov97_0222D40C(v3, -1); + *param1 = ov97_0222E228(param0, &v3->unk_18, 8, 55); + } + break; + case 16: + sub_02005748(1500); + ov97_0222DE78(param0, &v3->unk_18, 24); + ov97_0222D444(&v3->unk_58, 0); + *param1 = 18; + break; + case 17: + if (v3->unk_1640) { + v3->unk_1640--; + break; + } + + ov97_0222D30C(v3, 0); + sub_02005748(1500); + ov97_0222DE78(param0, &v3->unk_18, 23); + ov97_0222D444(&v3->unk_58, 0); + *param1 = 18; + break; + case 18: + if (Unk_021BF67C.unk_48) { + sub_02005748(1500); + ov97_0222DDD0(param0, (((1 + (18 + 12)) + 9) + 26 * 6), 0); + *param1 = 3; + } + break; + case 19: + if (v3->unk_1640) { + v3->unk_1640--; + break; + } + + if (v3->unk_84 != 27) { + ov97_0223764C(&v3->unk_8C, sizeof(UnkStruct_ov97_0223829C)); + } + + v3->unk_80 = ov97_02232148(v3->unk_04, &v3->unk_8C); + + if (v3->unk_80 == 1) { + ov97_0222D30C(v3, 0); + *param1 = 49; + } else { + if (!sub_0201A7CC(&v3->unk_58)) { + sub_0201A7E8(v3->unk_00, &v3->unk_58, 0, 3, 2, 26, 4, 0, ((((((1 + (18 + 12)) + 9) + 26 * 6) + 16 * 6) + 17 * 8) + 6 * 4)); + } + + ov97_0222DF10(param0, &v3->unk_58, v3->unk_8C.unk_00.unk_00); + ov97_0222DE78(param0, &v3->unk_18, 4); + ov97_0222D6F8(param0, 0); + *param1 = 20; + } + break; + case 20: + ov97_0222DF70(param0, param1, ov97_0222D94C); + break; + case 21: + *param1 = 22; + break; + case 22: + v2 = ov97_0222D55C(param0); + + ov97_02238194(v3->unk_00, v2); + ov97_0222DE78(param0, &v3->unk_18, 7); + ov97_0222D40C(v3, 1); + ov97_0222D30C(v3, 1); + v3->unk_43C = 60; + *param1 = 23; + break; + case 23: + if (--v3->unk_43C == 0) { + ov97_0222D658(param0); + *param1 = 24; + } + break; + case 24: + if (ov97_02238528() == 4) { + ov97_022384F4(); + } + + if (ov97_02238528() == 2) { + v3->unk_43C = 1; + ov97_0222D30C(v3, 0); + ov97_0222D40C(v3, -1); + sub_02005748(1572); + *param1 = ov97_0222E228(param0, &v3->unk_18, 8, 25); + } else if (ov97_02238528() == 3) { + ov97_0222D40C(v3, -1); + v3->unk_8C.unk_00.unk_4E_2 = 0; + *param1 = ov97_0222E228(param0, &v3->unk_18, 26, 55); + } + break; + case 25: + if (--v3->unk_43C == 0) { + v3->unk_43C = 256 * 256; + *param1 = 55; + } + break; + case 49: + if (v3->unk_80 != 5) { + ov97_0222E2AC(v3); + } + + *param1 = ov97_0222E1D8(param0); + ov97_0222D444(&v3->unk_28[2], 0); + break; + case 50: + *param1 = ov97_0222E228(param0, NULL, NULL, *param1); + break; + case 51: + if (Unk_021BF67C.unk_48) { + ov97_0222D444(&v3->unk_58, 0); + *param1 = ov97_0222DA64(param0); + } + break; + case 52: + ov97_0222D6F8(param0, 1); + *param1 = 8; + v3->unk_80 = 0; + break; + case 53: + ov97_0222D34C(param0); + v3->unk_440 = 0; + return 1; + break; + case 54: + ov97_0222D34C(param0); + v3->unk_440 = 1; + return 1; + break; + case 55: + if (Unk_021BF67C.unk_48) { + sub_02005748(1500); + + if (v3->unk_8C.unk_00.unk_4E_2 == 1) { + ov97_02237790(0, 56, v3->unk_163C, 2); + } else { + ov97_02237784(1); + ov97_02237790(0, 57, v3->unk_163C, 2); + } + } + break; + case 56: + ov97_0222DC20(v3->unk_00); + sub_0201FF74(GX_PLANEMASK_BG0, 0); + sub_0201FF74(GX_PLANEMASK_BG1, 1); + ov97_02231FFC(v3->unk_00, &v3->unk_8C.unk_50.val2, 86); + ov97_02237790(1, 55, v3->unk_163C, 2); + v3->unk_8C.unk_00.unk_4E_2 = 0; + break; + case 57: + OS_ResetSystem(0); + break; + } + + if (v3->unk_2A48) { + v3->unk_2A48(v3); + } + + ov97_02237CAC(v3->unk_2A54); + return 0; +} + +UnkStruct_020067E8 * ov97_022301A4 (void) +{ + return Unk_ov97_0223F1B0; +} + +void ov97_022301B0 (UnkStruct_020067E8 * param0) +{ + Unk_ov97_0223F1B0 = param0; +} + +extern const UnkStruct_0208BE5C Unk_ov97_0223D7AC; + +static int ov97_022301BC (UnkStruct_020067E8 * param0, int * param1) +{ + FS_EXTERN_OVERLAY(overlay77); + FS_EXTERN_OVERLAY(overlay97); + + UnkStruct_ov97_0222D04C * v0 = sub_0200682C(param0); + + if (v0->unk_440 == 0) { + sub_02000EC4(FS_OVERLAY_ID(overlay77), &Unk_ov77_021D742C); + } else if (v0->unk_440 == 1) { + sub_02000EC4(FS_OVERLAY_ID(overlay97), &Unk_ov97_0223D7AC); + } + + sub_0201807C(91); + sub_02006830(param0); + sub_0201807C(86); + + if (v0->unk_1638 == 2) { + sub_02017B70(0); + } + + ov97_02238400(0); + + return 1; +} + +static void ov97_02230224 (UnkStruct_ov97_0222D04C * param0) +{ + int v0; + + switch (param0->unk_62C) { + case 29: + break; + case 28: + sub_02037D48(param0->unk_04); + param0->unk_630 = (2 * 60); + param0->unk_62C = 30; + break; + case 30: + v0 = sub_02037DA0(); + + if (v0 & 0x1) { + param0->unk_634 = 1; + } + + if (--param0->unk_630 == 0) { + sub_02037D84(); + param0->unk_62C = 29; + } + break; + } +} + +static void ov97_02230280 (int param0) +{ + switch (param0) { + case 0: + Unk_ov97_0223F1A8 = 40; + break; + case 1: + Unk_ov97_0223F1A8 = 41; + break; + case 2: + Unk_ov97_0223F1A8 = 42; + break; + case 3: + if (Unk_ov97_0223F1A8 == 42) { + Unk_ov97_0223F1A8 = 44; + } else { + Unk_ov97_0223F1A8 = 47; + } + break; + case 4: + Unk_ov97_0223F1A8 = 48; + break; + } +} + +static void ov97_022302D4 (void) +{ + sub_020334CC(); + sub_020181C4(Unk_ov97_0223F1AC); + sub_02039794(); + + Unk_ov97_0223F1AC = NULL; +} + +static void ov97_022302F4 (UnkStruct_ov97_0222D04C * param0) +{ + if (Unk_ov97_0223F1A8 == 44) { + ov97_022302D4(); + + if (ov97_02238CA0()) { + Unk_ov97_0223F1A8 = 45; + } else { + Unk_ov97_0223F1A8 = 46; + } + } + + if ((Unk_ov97_0223F1A8 == 37) || (Unk_ov97_0223F1A8 == 38) || (Unk_ov97_0223F1A8 == 39) || (Unk_ov97_0223F1A8 == 40) || (Unk_ov97_0223F1A8 == 41) || (Unk_ov97_0223F1A8 == 43)) { + sub_020397B0(WM_LINK_LEVEL_3 - WM_GetLinkLevel()); + } + + switch (Unk_ov97_0223F1A8) { + case 37: + sub_02033478(); + Unk_ov97_0223F1A8 = 38; + break; + case 38: + if (sub_020334A4() == 1) { + Unk_ov97_0223F1B4 = 0; + Unk_ov97_0223F1AC = sub_02018144(86, ov97_02238D4C()); + ov97_02238A4C(&(param0->unk_638[0]), ov97_02230280, Unk_ov97_0223F1AC); + Unk_ov97_0223F1A8 = 39; + sub_02039734(); + } + break; + case 39: + break; + case 40: + break; + case 41: + Unk_ov97_0223F1B4++; + break; + case 42: + break; + case 43: + break; + case 45: + break; + case 47: + return; + break; + case 48: + break; + case 46: + break; + } + + if (Unk_021BF67C.unk_48 & PAD_BUTTON_B) { + switch (Unk_ov97_0223F1A8) { + case 40: + case 41: + case 48: + if (ov97_022389C8()) { + Unk_ov97_0223F1A8 = 43; + } + break; + case 45: + case 47: + case 46: + return; + default: + break; + } + } +} + +const UnkStruct_0208BE5C Unk_ov97_0223D71C = { + ov97_0222E2DC, + ov97_0222F75C, + ov97_022301BC, + 0xffffffff +};