diff --git a/asm/include/overlay_11.inc b/asm/include/overlay_11.inc index 5ab77638..f5893157 100644 --- a/asm/include/overlay_11.inc +++ b/asm/include/overlay_11.inc @@ -728,3 +728,29 @@ .public ov26_0238A568 .public ov27_0238BA7C .public ov28_0238A140 +.public sub_02066510 +.public sub_02048384 +.public sub_02067664 +.public sub_02026268 +.public CountNbItemsOfTypeInStorage +.public sub_02034974 +.public sub_0202F3F8 +.public sub_020308C4 +.public sub_02030A18 +.public sub_02069800 +.public sub_02066888 +.public sub_020674CC +.public sub_02035CE4 +.public sub_020262E0 +.public sub_02030A2C +.public sub_0200D65C +.public sub_0202FEF0 +.public sub_02066A44 +.public sub_020664B8 +.public sub_020305B4 +.public sub_0202FE2C +.public sub_020483B8 +.public sub_0202C748 +.public sub_0203559C +.public ov00_0230DB58 +.public sub_020668B4 diff --git a/asm/overlay_11.s b/asm/overlay_11.s index 1954549e..659368df 100644 --- a/asm/overlay_11.s +++ b/asm/overlay_11.s @@ -3187,9 +3187,8 @@ _022DED34: .word 0x00000137 _022DED38: .word 0x00000135 _022DED3C: .word 0x00000132 _022DED40: .word 0x00000133 +_022DED44: .word 0x0000012D arm_func_end ov11_022DECDC -_022DED44: - .byte 0x2D, 0x01, 0x00, 0x00 arm_func_start ov11_022DED48 ov11_022DED48: ; 0x022DED48 @@ -4854,9 +4853,15 @@ _022E0368: mov r0, #3 b _022E2478 arm_func_end ov11_022E0278 -_022E0378: - .byte 0xB0, 0x00, 0xD6, 0xE1, 0x4A, 0x11, 0x00, 0xEB - .byte 0xB6, 0x04, 0xC4, 0xE1, 0x03, 0x00, 0xA0, 0xE3, 0x3A, 0x08, 0x00, 0xEA + + arm_func_start ov11_022E0378 +ov11_022E0378: ; 0x022E0378 + ldrh r0, [r6] + bl ov11_022E48AC + strh r0, [r4, #0x46] + mov r0, #3 + b _022E2478 + arm_func_end ov11_022E0378 arm_func_start ov11_022E038C ov11_022E038C: ; 0x022E038C @@ -4914,8 +4919,12 @@ ov11_022E03E8: ; 0x022E03E8 mov r0, #4 b _022E2478 arm_func_end ov11_022E03E8 -_022E03F0: - .byte 0x04, 0x00, 0xA0, 0xE3, 0x1F, 0x08, 0x00, 0xEA + + arm_func_start ov11_022E03F0 +ov11_022E03F0: ; 0x022E03F0 + mov r0, #4 + b _022E2478 + arm_func_end ov11_022E03F0 arm_func_start ov11_022E03F8 ov11_022E03F8: ; 0x022E03F8 @@ -12699,10 +12708,19 @@ _022E6FAC: .align 2, 0 _022E6FB4: .word 0x022E6FB8 arm_func_end ov11_022E6EE8 -_022E6FB8: - .byte 0x10, 0x00, 0x9F, 0xE5, 0x10, 0x20, 0x9F, 0xE5 - .byte 0x01, 0x30, 0xA0, 0xE3, 0x00, 0x30, 0xC2, 0xE5, 0x00, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x94, 0x4F, 0x32, 0x02, 0x9C, 0x4C, 0x32, 0x02 + + arm_func_start ov11_022E6FB8 +ov11_022E6FB8: ; 0x022E6FB8 + ldr r0, _022E6FD0 ; =0x02324F94 + ldr r2, _022E6FD4 ; =0x02324C9C + mov r3, #1 + strb r3, [r2] + str r1, [r0] + bx lr + .align 2, 0 +_022E6FD0: .word 0x02324F94 +_022E6FD4: .word 0x02324C9C + arm_func_end ov11_022E6FB8 arm_func_start ov11_022E6FD8 ov11_022E6FD8: ; 0x022E6FD8 @@ -15370,14 +15388,40 @@ _022E930C: .align 2, 0 _022E9358: .word 0x02324CB0 arm_func_end ov11_022E9258 -_022E935C: - .byte 0x00, 0x00, 0x50, 0xE3 - .byte 0x1E, 0xFF, 0x2F, 0x11, 0xFF, 0x00, 0x01, 0xE2, 0x08, 0x00, 0x40, 0xE2, 0x08, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x0E, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA - .byte 0x0B, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x09, 0x00, 0x00, 0xEA, 0x08, 0x00, 0x00, 0xEA - .byte 0x01, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x18, 0x00, 0x9F, 0xE5 - .byte 0x08, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x4C, 0x32, 0x02 + + arm_func_start ov11_022E935C +ov11_022E935C: ; 0x022E935C + cmp r0, #0 + bxne lr + and r0, r1, #0xff + sub r0, r0, #8 + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _022E93B4 +_022E9378: ; jump table + b _022E93A8 ; case 0 + b _022E93B4 ; case 1 + b _022E93B4 ; case 2 + b _022E93B4 ; case 3 + b _022E93B4 ; case 4 + b _022E93B4 ; case 5 + b _022E939C ; case 6 + b _022E93A8 ; case 7 + b _022E93A8 ; case 8 +_022E939C: + ldr r0, _022E93BC ; =0x02324CB0 + ldr r0, [r0, #8] + bx lr +_022E93A8: + ldr r0, _022E93BC ; =0x02324CB0 + ldr r0, [r0, #4] + bx lr +_022E93B4: + mov r0, #0 + bx lr + .align 2, 0 +_022E93BC: .word 0x02324CB0 + arm_func_end ov11_022E935C arm_func_start ov11_022E93C0 ov11_022E93C0: ; 0x022E93C0 @@ -21890,12 +21934,39 @@ _022EEA18: str r1, [r4, #0x50] ldmia sp!, {r4, pc} arm_func_end ov11_022EE9B0 -_022EEA60: - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x2C, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x01, 0x00, 0xA0, 0xE1 - .byte 0x01, 0x10, 0x81, 0xE2, 0x02, 0x0B, 0x51, 0xE3, 0xB2, 0x00, 0xC2, 0xE0, 0xFB, 0xFF, 0xFF, 0xBA - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x2C, 0x20, 0x90, 0xE5, 0x30, 0x30, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3 - .byte 0x01, 0x00, 0xA0, 0xE1, 0xB2, 0x00, 0xC2, 0xE0, 0x01, 0x10, 0x81, 0xE2, 0x02, 0x0B, 0x51, 0xE3 - .byte 0xB2, 0x00, 0xC3, 0xE0, 0xFA, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_022EEA60 +ov11_022EEA60: ; 0x022EEA60 + bx lr + arm_func_end ov11_022EEA60 + + arm_func_start ov11_022EEA64 +ov11_022EEA64: ; 0x022EEA64 + ldr r2, [r0, #0x2c] + mov r1, #0 + mov r0, r1 +_022EEA70: + add r1, r1, #1 + cmp r1, #0x800 + strh r0, [r2], #2 + blt _022EEA70 + bx lr + arm_func_end ov11_022EEA64 + + arm_func_start ov11_022EEA84 +ov11_022EEA84: ; 0x022EEA84 + ldr r2, [r0, #0x2c] + ldr r3, [r0, #0x30] + mov r1, #0 + mov r0, r1 +_022EEA94: + strh r0, [r2], #2 + add r1, r1, #1 + cmp r1, #0x800 + strh r0, [r3], #2 + blt _022EEA94 + bx lr + arm_func_end ov11_022EEA84 arm_func_start ov11_022EEAAC ov11_022EEAAC: ; 0x022EEAAC @@ -28860,8 +28931,13 @@ ov11_022F4974: ; 0x022F4974 strne r1, [r0, #0xa8] bx lr arm_func_end ov11_022F4974 -_022F4984: - .byte 0xB2, 0x1B, 0xC0, 0xE1, 0xB4, 0x2B, 0xC0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_022F4984 +ov11_022F4984: ; 0x022F4984 + strh r1, [r0, #0xb2] + strh r2, [r0, #0xb4] + bx lr + arm_func_end ov11_022F4984 arm_func_start ov11_022F4990 ov11_022F4990: ; 0x022F4990 @@ -35951,38 +36027,178 @@ _022FA9F8: .word 0x02321D30 _022FA9FC: .word 0x02321D48 _022FAA00: .word 0x02321D6C arm_func_end ov11_022FA1DC -_022FAA04: - .byte 0xF0, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x20, 0x90, 0xE5 - .byte 0x10, 0x00, 0x90, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x00, 0x00, 0x51, 0xE3, 0x10, 0x00, 0x00, 0x0A, 0x00, 0x30, 0x91, 0xE5, 0x14, 0x20, 0x90, 0xE5 - .byte 0x02, 0x20, 0x43, 0xE0, 0x5C, 0x21, 0x80, 0xE5, 0x00, 0x30, 0x91, 0xE5, 0x14, 0x20, 0x90, 0xE5 - .byte 0x02, 0x20, 0x83, 0xE0, 0x64, 0x21, 0x80, 0xE5, 0x04, 0x30, 0x91, 0xE5, 0x18, 0x20, 0x90, 0xE5 - .byte 0x02, 0x20, 0x43, 0xE0, 0x60, 0x21, 0x80, 0xE5, 0x04, 0x20, 0x91, 0xE5, 0x18, 0x10, 0x90, 0xE5 - .byte 0x01, 0x10, 0x82, 0xE0, 0x68, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0x30, 0x90, 0xE5 - .byte 0x14, 0x10, 0x90, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x10, 0x43, 0xE0, 0x5C, 0x11, 0x80, 0xE5 - .byte 0x20, 0x30, 0x90, 0xE5, 0x14, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x83, 0xE0, 0x64, 0x11, 0x80, 0xE5 - .byte 0x24, 0xC0, 0x90, 0xE5, 0x18, 0x30, 0x90, 0xE5, 0x01, 0x1C, 0x80, 0xE2, 0x03, 0x30, 0x4C, 0xE0 - .byte 0x60, 0x31, 0x80, 0xE5, 0x24, 0xC0, 0x90, 0xE5, 0x18, 0x30, 0x90, 0xE5, 0x03, 0x30, 0x8C, 0xE0 - .byte 0x68, 0x31, 0x80, 0xE5, 0x70, 0x21, 0x80, 0xE5, 0x6C, 0x21, 0x80, 0xE5, 0xDA, 0x25, 0xD1, 0xE1 - .byte 0xDC, 0x11, 0xD0, 0xE1, 0x01, 0x00, 0x52, 0xE1, 0x01, 0x10, 0xA0, 0x13, 0x74, 0x11, 0xC0, 0x15 - .byte 0xDC, 0x11, 0xD0, 0xE1, 0x5A, 0x11, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x30, 0x91, 0xE5 - .byte 0x04, 0x10, 0x91, 0xE5, 0x28, 0x30, 0x80, 0xE5, 0x2C, 0x10, 0x80, 0xE5, 0x00, 0x30, 0x92, 0xE5 - .byte 0x04, 0x10, 0x92, 0xE5, 0x30, 0x30, 0x80, 0xE5, 0x34, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x5C, 0x31, 0x90, 0xE5, 0x14, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x83, 0xE0, 0x00, 0x20, 0x81, 0xE5 - .byte 0x60, 0x21, 0x90, 0xE5, 0x18, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE0, 0x04, 0x00, 0x81, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xC0, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x28, 0x95, 0x2F, 0x02 - .byte 0x6C, 0x31, 0x90, 0xE5, 0x00, 0x30, 0x81, 0xE5, 0x70, 0x01, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x6C, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x0C, 0x80, 0xE2 - .byte 0xDA, 0x05, 0xD0, 0xE1, 0x00, 0x00, 0xC1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0xE0, 0xE3 - .byte 0x02, 0x00, 0x51, 0xE1, 0x5A, 0x11, 0xC0, 0x15, 0x01, 0x1C, 0x80, 0x12, 0xD5, 0x27, 0xD1, 0x11 - .byte 0xDA, 0x15, 0xD1, 0x11, 0x01, 0x00, 0x52, 0x11, 0x01, 0x10, 0xA0, 0x13, 0x74, 0x11, 0xC0, 0x15 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x20, 0xD0, 0xE1, 0x02, 0x00, 0x52, 0xE3, 0x0B, 0x00, 0x00, 0x8A - .byte 0xFA, 0x30, 0xD0, 0xE1, 0x2C, 0x20, 0x9F, 0xE5, 0x02, 0x00, 0x53, 0xE1, 0x96, 0x2F, 0x82, 0x12 - .byte 0x02, 0x00, 0x53, 0x11, 0x05, 0x00, 0x00, 0x1A, 0xFF, 0x20, 0x01, 0xE2, 0x16, 0x00, 0x52, 0xE3 - .byte 0x1F, 0x1C, 0x01, 0x22, 0x53, 0x10, 0x81, 0x23, 0x01, 0x18, 0xA0, 0x21, 0x21, 0x18, 0xA0, 0x21 - .byte 0x04, 0xC0, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x19, 0x01, 0x00, 0x00, 0xC8, 0x93, 0x2F, 0x02 - .byte 0x01, 0xCC, 0x80, 0xE2, 0xB2, 0x18, 0xCC, 0xE1, 0xB4, 0x28, 0xCC, 0xE1, 0x88, 0x31, 0x80, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_022FAA04 +ov11_022FAA04: ; 0x022FAA04 + ldrsh r0, [r0] + bx lr + arm_func_end ov11_022FAA04 + + arm_func_start ov11_022FAA0C +ov11_022FAA0C: ; 0x022FAA0C + ldr r2, [r0, #0xc] + ldr r0, [r0, #0x10] + str r2, [r1] + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FAA0C + + arm_func_start ov11_022FAA20 +ov11_022FAA20: ; 0x022FAA20 + cmp r1, #0 + beq _022FAA6C + ldr r3, [r1] + ldr r2, [r0, #0x14] + sub r2, r3, r2 + str r2, [r0, #0x15c] + ldr r3, [r1] + ldr r2, [r0, #0x14] + add r2, r3, r2 + str r2, [r0, #0x164] + ldr r3, [r1, #4] + ldr r2, [r0, #0x18] + sub r2, r3, r2 + str r2, [r0, #0x160] + ldr r2, [r1, #4] + ldr r1, [r0, #0x18] + add r1, r2, r1 + str r1, [r0, #0x168] + bx lr +_022FAA6C: + ldr r3, [r0, #0x20] + ldr r1, [r0, #0x14] + mov r2, #0 + sub r1, r3, r1 + str r1, [r0, #0x15c] + ldr r3, [r0, #0x20] + ldr r1, [r0, #0x14] + add r1, r3, r1 + str r1, [r0, #0x164] + ldr ip, [r0, #0x24] + ldr r3, [r0, #0x18] + add r1, r0, #0x100 + sub r3, ip, r3 + str r3, [r0, #0x160] + ldr ip, [r0, #0x24] + ldr r3, [r0, #0x18] + add r3, ip, r3 + str r3, [r0, #0x168] + str r2, [r0, #0x170] + str r2, [r0, #0x16c] + ldrsb r2, [r1, #0x5a] + ldrsb r1, [r0, #0x1c] + cmp r2, r1 + movne r1, #1 + strneb r1, [r0, #0x174] + ldrsb r1, [r0, #0x1c] + strb r1, [r0, #0x15a] + bx lr + arm_func_end ov11_022FAA20 + + arm_func_start ov11_022FAADC +ov11_022FAADC: ; 0x022FAADC + ldr r3, [r1] + ldr r1, [r1, #4] + str r3, [r0, #0x28] + str r1, [r0, #0x2c] + ldr r3, [r2] + ldr r1, [r2, #4] + str r3, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end ov11_022FAADC + + arm_func_start ov11_022FAB00 +ov11_022FAB00: ; 0x022FAB00 + ldr r3, [r0, #0x15c] + ldr r2, [r0, #0x14] + add r2, r3, r2 + str r2, [r1] + ldr r2, [r0, #0x160] + ldr r0, [r0, #0x18] + add r0, r2, r0 + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FAB00 + + arm_func_start ov11_022FAB24 +ov11_022FAB24: ; 0x022FAB24 + ldr ip, _022FAB2C ; =ov11_022F9528 + bx ip + .align 2, 0 +_022FAB2C: .word ov11_022F9528 + arm_func_end ov11_022FAB24 + + arm_func_start ov11_022FAB30 +ov11_022FAB30: ; 0x022FAB30 + ldr r3, [r0, #0x16c] + str r3, [r1] + ldr r0, [r0, #0x170] + str r0, [r2] + bx lr + arm_func_end ov11_022FAB30 + + arm_func_start ov11_022FAB44 +ov11_022FAB44: ; 0x022FAB44 + str r1, [r0, #0x16c] + bx lr + arm_func_end ov11_022FAB44 + + arm_func_start ov11_022FAB4C +ov11_022FAB4C: ; 0x022FAB4C + add r0, r0, #0x100 + ldrsb r0, [r0, #0x5a] + strb r0, [r1] + bx lr + arm_func_end ov11_022FAB4C + + arm_func_start ov11_022FAB5C +ov11_022FAB5C: ; 0x022FAB5C + mvn r2, #0 + cmp r1, r2 + strneb r1, [r0, #0x15a] + addne r1, r0, #0x100 + ldrnesb r2, [r1, #0x75] + ldrnesb r1, [r1, #0x5a] + cmpne r2, r1 + movne r1, #1 + strneb r1, [r0, #0x174] + bx lr + arm_func_end ov11_022FAB5C + + arm_func_start ov11_022FAB84 +ov11_022FAB84: ; 0x022FAB84 + ldrh r2, [r0] + cmp r2, #2 + bhi _022FABC0 + ldrsh r3, [r0, #0xa] + ldr r2, _022FABC8 ; =0x00000119 + cmp r3, r2 + addne r2, r2, #0x258 + cmpne r3, r2 + bne _022FABC0 + and r2, r1, #0xff + cmp r2, #0x16 + andhs r1, r1, #0x1f00 + orrhs r1, r1, #0x53 + movhs r1, r1, lsl #0x10 + movhs r1, r1, lsr #0x10 +_022FABC0: + ldr ip, _022FABCC ; =ov11_022F93C8 + bx ip + .align 2, 0 +_022FABC8: .word 0x00000119 +_022FABCC: .word ov11_022F93C8 + arm_func_end ov11_022FAB84 + + arm_func_start ov11_022FABD0 +ov11_022FABD0: ; 0x022FABD0 + add ip, r0, #0x100 + strh r1, [ip, #0x82] + strh r2, [ip, #0x84] + str r3, [r0, #0x188] + bx lr + arm_func_end ov11_022FABD0 arm_func_start ov11_022FABE4 ov11_022FABE4: ; 0x022FABE4 @@ -36008,43 +36224,180 @@ ov11_022FAC04: ; 0x022FAC04 bl ov11_022F49B0 ldmia sp!, {r3, pc} arm_func_end ov11_022FAC04 -_022FAC28: - .byte 0x28, 0x01, 0x90, 0xE5, 0x00, 0x00, 0x81, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5, 0xF0, 0x00, 0xD0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1 - .byte 0x2C, 0x87, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5, 0xF0, 0x00, 0xD0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1 - .byte 0xB8, 0x87, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5, 0x63, 0x0F, 0x80, 0xE2, 0x1C, 0xFF, 0x2F, 0xE1 - .byte 0x84, 0x49, 0x2F, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x10, 0xD0, 0x4D, 0xE2, 0xE0, 0x21, 0x9F, 0xE5 - .byte 0x00, 0x50, 0xA0, 0xE1, 0xD4, 0x00, 0x92, 0xE5, 0xD0, 0x30, 0x92, 0xE5, 0x04, 0x00, 0x8D, 0xE5 - .byte 0x00, 0x30, 0x8D, 0xE5, 0x5C, 0x41, 0x95, 0xE5, 0x00, 0x30, 0x91, 0xE5, 0x38, 0x00, 0x85, 0xE2 - .byte 0x03, 0x30, 0x84, 0xE0, 0x00, 0x30, 0x8D, 0xE5, 0x60, 0x41, 0x95, 0xE5, 0x04, 0x30, 0x91, 0xE5 - .byte 0x03, 0x30, 0x84, 0xE0, 0x04, 0x30, 0x8D, 0xE5, 0xC8, 0x30, 0x92, 0xE5, 0xCC, 0x20, 0x92, 0xE5 - .byte 0x08, 0x30, 0x8D, 0xE5, 0x0C, 0x20, 0x8D, 0xE5, 0x64, 0x31, 0x95, 0xE5, 0x00, 0x20, 0x91, 0xE5 - .byte 0x02, 0x20, 0x83, 0xE0, 0x08, 0x20, 0x8D, 0xE5, 0x68, 0x21, 0x95, 0xE5, 0x04, 0x10, 0x91, 0xE5 - .byte 0x01, 0x10, 0x82, 0xE0, 0x0C, 0x10, 0x8D, 0xE5, 0x1E, 0x87, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x49, 0x00, 0x00, 0x1A, 0x28, 0x10, 0x95, 0xE5, 0x00, 0x00, 0x9D, 0xE5, 0x00, 0x40, 0xA0, 0xE3 - .byte 0x01, 0x00, 0x50, 0xE1, 0x06, 0x00, 0x00, 0xAA, 0x00, 0x10, 0x8D, 0xE5, 0x28, 0x10, 0x95, 0xE5 - .byte 0x0C, 0x00, 0x95, 0xE5, 0x01, 0x40, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE0, 0x08, 0x00, 0x8D, 0xE5 - .byte 0x09, 0x00, 0x00, 0xEA, 0x30, 0x10, 0x95, 0xE5, 0x08, 0x00, 0x9D, 0xE5, 0x01, 0x00, 0x50, 0xE1 - .byte 0x05, 0x00, 0x00, 0xBA, 0x0C, 0x00, 0x95, 0xE5, 0x01, 0x40, 0xA0, 0xE3, 0x00, 0x00, 0x41, 0xE0 - .byte 0x00, 0x00, 0x8D, 0xE5, 0x30, 0x00, 0x95, 0xE5, 0x08, 0x00, 0x8D, 0xE5, 0x2C, 0x10, 0x95, 0xE5 - .byte 0x04, 0x00, 0x9D, 0xE5, 0x01, 0x00, 0x50, 0xE1, 0x06, 0x00, 0x00, 0xAA, 0x04, 0x10, 0x8D, 0xE5 - .byte 0x2C, 0x10, 0x95, 0xE5, 0x10, 0x00, 0x95, 0xE5, 0x01, 0x40, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE0 - .byte 0x0C, 0x00, 0x8D, 0xE5, 0x09, 0x00, 0x00, 0xEA, 0x34, 0x10, 0x95, 0xE5, 0x0C, 0x00, 0x9D, 0xE5 - .byte 0x01, 0x00, 0x50, 0xE1, 0x05, 0x00, 0x00, 0xBA, 0x10, 0x00, 0x95, 0xE5, 0x01, 0x40, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x41, 0xE0, 0x04, 0x00, 0x8D, 0xE5, 0x34, 0x00, 0x95, 0xE5, 0x0C, 0x00, 0x8D, 0xE5 - .byte 0x00, 0x10, 0x8D, 0xE2, 0x08, 0x20, 0x8D, 0xE2, 0x05, 0x00, 0xA0, 0xE1, 0x1E, 0xF9, 0xFF, 0xEB - .byte 0x00, 0x60, 0xB0, 0xE1, 0x06, 0x00, 0x00, 0x0A, 0x28, 0x01, 0x95, 0xE5, 0x20, 0x00, 0x10, 0xE3 - .byte 0x24, 0x00, 0x00, 0x0A, 0xF0, 0x00, 0xD5, 0xE1, 0x01, 0x14, 0xA0, 0xE3, 0x5A, 0xF6, 0xFF, 0xEB - .byte 0x20, 0x00, 0x00, 0xEA, 0x00, 0x10, 0x9D, 0xE5, 0x04, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x54, 0xE3 - .byte 0x5C, 0x11, 0x85, 0xE5, 0x60, 0x01, 0x85, 0xE5, 0x08, 0x10, 0x9D, 0xE5, 0x0C, 0x00, 0x9D, 0xE5 - .byte 0x64, 0x11, 0x85, 0xE5, 0x68, 0x01, 0x85, 0xE5, 0x0F, 0x00, 0x00, 0x0A, 0x28, 0x01, 0x95, 0xE5 - .byte 0x20, 0x00, 0x10, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0xF0, 0x00, 0xD5, 0xE1, 0x01, 0x14, 0xA0, 0xE3 - .byte 0x49, 0xF6, 0xFF, 0xEB, 0x40, 0x60, 0xA0, 0xE3, 0x0E, 0x00, 0x00, 0xEA, 0x00, 0x10, 0x9D, 0xE5 - .byte 0x04, 0x00, 0x9D, 0xE5, 0x5C, 0x11, 0x85, 0xE5, 0x60, 0x01, 0x85, 0xE5, 0x08, 0x10, 0x9D, 0xE5 - .byte 0x0C, 0x00, 0x9D, 0xE5, 0x64, 0x11, 0x85, 0xE5, 0x68, 0x01, 0x85, 0xE5, 0x28, 0x01, 0x95, 0xE5 - .byte 0x20, 0x00, 0x10, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0xF0, 0x00, 0xD5, 0xE1, 0x01, 0x14, 0xA0, 0xE3 - .byte 0x39, 0xF6, 0xFF, 0xEB, 0x00, 0x60, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1, 0x10, 0xD0, 0x8D, 0xE2 - .byte 0x70, 0x80, 0xBD, 0xE8, 0x84, 0x16, 0x32, 0x02 + + arm_func_start ov11_022FAC28 +ov11_022FAC28: ; 0x022FAC28 + ldr r0, [r0, #0x128] + str r0, [r1] + bx lr + arm_func_end ov11_022FAC28 + + arm_func_start ov11_022FAC34 +ov11_022FAC34: ; 0x022FAC34 + ldr ip, _022FAC40 ; =ov11_022F872C + ldrsh r0, [r0] + bx ip + .align 2, 0 +_022FAC40: .word ov11_022F872C + arm_func_end ov11_022FAC34 + + arm_func_start ov11_022FAC44 +ov11_022FAC44: ; 0x022FAC44 + ldr ip, _022FAC50 ; =ov11_022F87B8 + ldrsh r0, [r0] + bx ip + .align 2, 0 +_022FAC50: .word ov11_022F87B8 + arm_func_end ov11_022FAC44 + + arm_func_start ov11_022FAC54 +ov11_022FAC54: ; 0x022FAC54 + ldr ip, _022FAC60 ; =ov11_022F4984 + add r0, r0, #0x18c + bx ip + .align 2, 0 +_022FAC60: .word ov11_022F4984 + arm_func_end ov11_022FAC54 + + arm_func_start ov11_022FAC64 +ov11_022FAC64: ; 0x022FAC64 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r2, _022FAE54 ; =0x02321684 + mov r5, r0 + ldr r0, [r2, #0xd4] + ldr r3, [r2, #0xd0] + str r0, [sp, #4] + str r3, [sp] + ldr r4, [r5, #0x15c] + ldr r3, [r1] + add r0, r5, #0x38 + add r3, r4, r3 + str r3, [sp] + ldr r4, [r5, #0x160] + ldr r3, [r1, #4] + add r3, r4, r3 + str r3, [sp, #4] + ldr r3, [r2, #0xc8] + ldr r2, [r2, #0xcc] + str r3, [sp, #8] + str r2, [sp, #0xc] + ldr r3, [r5, #0x164] + ldr r2, [r1] + add r2, r3, r2 + str r2, [sp, #8] + ldr r2, [r5, #0x168] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [sp, #0xc] + bl ov11_022DC958 + cmp r0, #0 + bne _022FAE0C + ldr r1, [r5, #0x28] + ldr r0, [sp] + mov r4, #0 + cmp r0, r1 + bge _022FAD14 + str r1, [sp] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0xc] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #8] + b _022FAD3C +_022FAD14: + ldr r1, [r5, #0x30] + ldr r0, [sp, #8] + cmp r0, r1 + blt _022FAD3C + ldr r0, [r5, #0xc] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r5, #0x30] + str r0, [sp, #8] +_022FAD3C: + ldr r1, [r5, #0x2c] + ldr r0, [sp, #4] + cmp r0, r1 + bge _022FAD68 + str r1, [sp, #4] + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x10] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #0xc] + b _022FAD90 +_022FAD68: + ldr r1, [r5, #0x34] + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _022FAD90 + ldr r0, [r5, #0x10] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5, #0x34] + str r0, [sp, #0xc] +_022FAD90: + add r1, sp, #0 + add r2, sp, #8 + mov r0, r5 + bl ov11_022F921C + movs r6, r0 + beq _022FADC4 + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE48 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl ov11_022F872C + b _022FAE48 +_022FADC4: + ldr r1, [sp] + ldr r0, [sp, #4] + cmp r4, #0 + str r1, [r5, #0x15c] + str r0, [r5, #0x160] + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r1, [r5, #0x164] + str r0, [r5, #0x168] + beq _022FAE2C + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE04 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl ov11_022F872C +_022FAE04: + mov r6, #0x40 + b _022FAE48 +_022FAE0C: + ldr r1, [sp] + ldr r0, [sp, #4] + str r1, [r5, #0x15c] + str r0, [r5, #0x160] + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r1, [r5, #0x164] + str r0, [r5, #0x168] +_022FAE2C: + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE44 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl ov11_022F872C +_022FAE44: + mov r6, #0 +_022FAE48: + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FAE54: .word 0x02321684 + arm_func_end ov11_022FAC64 arm_func_start ov11_022FAE58 ov11_022FAE58: ; 0x022FAE58 @@ -38532,43 +38885,203 @@ _022FD054: .align 2, 0 _022FD05C: .word 0x02321D88 arm_func_end ov11_022FCF70 -_022FD060: - .byte 0xF4, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x20, 0x90, 0xE5, 0x14, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x51, 0xE3 - .byte 0x10, 0x00, 0x00, 0x0A, 0x00, 0x30, 0x91, 0xE5, 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x43, 0xE0 - .byte 0x34, 0x21, 0x80, 0xE5, 0x00, 0x30, 0x91, 0xE5, 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x83, 0xE0 - .byte 0x3C, 0x21, 0x80, 0xE5, 0x04, 0x30, 0x91, 0xE5, 0x1C, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x43, 0xE0 - .byte 0x38, 0x21, 0x80, 0xE5, 0x04, 0x20, 0x91, 0xE5, 0x1C, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x82, 0xE0 - .byte 0x40, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x30, 0x90, 0xE5, 0x18, 0x10, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x10, 0x43, 0xE0, 0x34, 0x11, 0x80, 0xE5, 0x24, 0x30, 0x90, 0xE5 - .byte 0x18, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x83, 0xE0, 0x3C, 0x11, 0x80, 0xE5, 0x28, 0xC0, 0x90, 0xE5 - .byte 0x1C, 0x30, 0x90, 0xE5, 0x01, 0x1C, 0x80, 0xE2, 0x03, 0x30, 0x4C, 0xE0, 0x38, 0x31, 0x80, 0xE5 - .byte 0x28, 0xC0, 0x90, 0xE5, 0x1C, 0x30, 0x90, 0xE5, 0x03, 0x30, 0x8C, 0xE0, 0x40, 0x31, 0x80, 0xE5 - .byte 0x48, 0x21, 0x80, 0xE5, 0x44, 0x21, 0x80, 0xE5, 0xD0, 0x23, 0xD1, 0xE1, 0xD0, 0x12, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x52, 0xE1, 0x01, 0x10, 0xA0, 0x13, 0x4C, 0x11, 0xC0, 0x15, 0xD0, 0x12, 0xD0, 0xE1 - .byte 0x30, 0x11, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x30, 0x91, 0xE5, 0x04, 0x10, 0x91, 0xE5 - .byte 0x2C, 0x30, 0x80, 0xE5, 0x30, 0x10, 0x80, 0xE5, 0x00, 0x30, 0x92, 0xE5, 0x04, 0x10, 0x92, 0xE5 - .byte 0x34, 0x30, 0x80, 0xE5, 0x38, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x34, 0x31, 0x90, 0xE5 - .byte 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x83, 0xE0, 0x00, 0x20, 0x81, 0xE5, 0x38, 0x21, 0x90, 0xE5 - .byte 0x1C, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE0, 0x04, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x00, 0xC0, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x70, 0xCF, 0x2F, 0x02, 0x44, 0x31, 0x90, 0xE5 - .byte 0x00, 0x30, 0x81, 0xE5, 0x48, 0x01, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x44, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x0C, 0x80, 0xE2, 0xD0, 0x03, 0xD0, 0xE1 - .byte 0x00, 0x00, 0xC1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0xE0, 0xE3, 0x02, 0x00, 0x51, 0xE1 - .byte 0x30, 0x11, 0xC0, 0x15, 0x1E, 0xFF, 0x2F, 0xE1, 0x07, 0x2C, 0x01, 0xE2, 0x02, 0x28, 0xA0, 0xE1 - .byte 0xFF, 0x30, 0x01, 0xE2, 0x02, 0x0B, 0x11, 0xE3, 0x22, 0xC8, 0xA0, 0xE1, 0x05, 0x00, 0x00, 0x0A - .byte 0x01, 0x1C, 0x80, 0xE2, 0x01, 0x2B, 0xA0, 0xE3, 0xBE, 0x24, 0xC1, 0xE1, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x4C, 0x11, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x53, 0xE3, 0x80, 0x10, 0x9F, 0x15 - .byte 0x83, 0x20, 0xA0, 0x11, 0xF2, 0x30, 0x91, 0x11, 0x01, 0x1C, 0x80, 0x02, 0xFE, 0x34, 0xD1, 0x01 - .byte 0x02, 0x0C, 0x5C, 0xE3, 0x05, 0x00, 0x00, 0xCA, 0x0B, 0x00, 0x00, 0xAA, 0x01, 0x0C, 0x5C, 0xE3 - .byte 0x03, 0x1C, 0x83, 0x03, 0x01, 0x18, 0xA0, 0x01, 0x41, 0x38, 0xA0, 0x01, 0x09, 0x00, 0x00, 0xEA - .byte 0x03, 0x0C, 0x5C, 0xE3, 0x07, 0x00, 0x00, 0xDA, 0x01, 0x0B, 0x5C, 0xE3, 0x02, 0x1C, 0x83, 0x03 - .byte 0x01, 0x18, 0xA0, 0x01, 0x41, 0x38, 0xA0, 0x01, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x1C, 0x83, 0xE3 - .byte 0x01, 0x18, 0xA0, 0xE1, 0x41, 0x38, 0xA0, 0xE1, 0x01, 0x1C, 0x80, 0xE2, 0xFE, 0x24, 0xD1, 0xE1 - .byte 0x03, 0x00, 0x52, 0xE1, 0xBE, 0x34, 0xC1, 0x11, 0x01, 0x10, 0xA0, 0x13, 0x4C, 0x11, 0xC0, 0x15 - .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x0A, 0x12, 0xE3, 0x01, 0x10, 0xA0, 0x13, 0x4C, 0x11, 0xC0, 0x15 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xC8, 0x1D, 0x32, 0x02, 0x01, 0x0C, 0x80, 0xE2, 0xB0, 0x15, 0xC0, 0xE1 - .byte 0xB2, 0x25, 0xC0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_022FD060 +ov11_022FD060: ; 0x022FD060 + ldrsh r0, [r0, #4] + bx lr + arm_func_end ov11_022FD060 + + arm_func_start ov11_022FD068 +ov11_022FD068: ; 0x022FD068 + ldr r2, [r0, #0x10] + ldr r0, [r0, #0x14] + str r2, [r1] + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FD068 + + arm_func_start ov11_022FD07C +ov11_022FD07C: ; 0x022FD07C + cmp r1, #0 + beq _022FD0C8 + ldr r3, [r1] + ldr r2, [r0, #0x18] + sub r2, r3, r2 + str r2, [r0, #0x134] + ldr r3, [r1] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r0, #0x13c] + ldr r3, [r1, #4] + ldr r2, [r0, #0x1c] + sub r2, r3, r2 + str r2, [r0, #0x138] + ldr r2, [r1, #4] + ldr r1, [r0, #0x1c] + add r1, r2, r1 + str r1, [r0, #0x140] + bx lr +_022FD0C8: + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + mov r2, #0 + sub r1, r3, r1 + str r1, [r0, #0x134] + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + add r1, r3, r1 + str r1, [r0, #0x13c] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r1, r0, #0x100 + sub r3, ip, r3 + str r3, [r0, #0x138] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r3, ip, r3 + str r3, [r0, #0x140] + str r2, [r0, #0x148] + str r2, [r0, #0x144] + ldrsb r2, [r1, #0x30] + ldrsb r1, [r0, #0x20] + cmp r2, r1 + movne r1, #1 + strneb r1, [r0, #0x14c] + ldrsb r1, [r0, #0x20] + strb r1, [r0, #0x130] + bx lr + arm_func_end ov11_022FD07C + + arm_func_start ov11_022FD138 +ov11_022FD138: ; 0x022FD138 + ldr r3, [r1] + ldr r1, [r1, #4] + str r3, [r0, #0x2c] + str r1, [r0, #0x30] + ldr r3, [r2] + ldr r1, [r2, #4] + str r3, [r0, #0x34] + str r1, [r0, #0x38] + bx lr + arm_func_end ov11_022FD138 + + arm_func_start ov11_022FD15C +ov11_022FD15C: ; 0x022FD15C + ldr r3, [r0, #0x134] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r1] + ldr r2, [r0, #0x138] + ldr r0, [r0, #0x1c] + add r0, r2, r0 + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FD15C + + arm_func_start ov11_022FD180 +ov11_022FD180: ; 0x022FD180 + ldr ip, _022FD188 ; =ov11_022FCF70 + bx ip + .align 2, 0 +_022FD188: .word ov11_022FCF70 + arm_func_end ov11_022FD180 + + arm_func_start ov11_022FD18C +ov11_022FD18C: ; 0x022FD18C + ldr r3, [r0, #0x144] + str r3, [r1] + ldr r0, [r0, #0x148] + str r0, [r2] + bx lr + arm_func_end ov11_022FD18C + + arm_func_start ov11_022FD1A0 +ov11_022FD1A0: ; 0x022FD1A0 + str r1, [r0, #0x144] + bx lr + arm_func_end ov11_022FD1A0 + + arm_func_start ov11_022FD1A8 +ov11_022FD1A8: ; 0x022FD1A8 + add r0, r0, #0x100 + ldrsb r0, [r0, #0x30] + strb r0, [r1] + bx lr + arm_func_end ov11_022FD1A8 + + arm_func_start ov11_022FD1B8 +ov11_022FD1B8: ; 0x022FD1B8 + mvn r2, #0 + cmp r1, r2 + strneb r1, [r0, #0x130] + bx lr + arm_func_end ov11_022FD1B8 + + arm_func_start ov11_022FD1C8 +ov11_022FD1C8: ; 0x022FD1C8 + and r2, r1, #0x700 + mov r2, r2, lsl #0x10 + and r3, r1, #0xff + tst r1, #0x800 + mov ip, r2, lsr #0x10 + beq _022FD1F8 + add r1, r0, #0x100 + mov r2, #0x400 + strh r2, [r1, #0x4e] + mov r1, #1 + strb r1, [r0, #0x14c] + bx lr +_022FD1F8: + cmp r3, #0 + ldrne r1, _022FD284 ; =0x02321DC8 + movne r2, r3, lsl #1 + ldrnesh r3, [r1, r2] + addeq r1, r0, #0x100 + ldreqsh r3, [r1, #0x4e] + cmp ip, #0x200 + bgt _022FD230 + bge _022FD24C + cmp ip, #0x100 + orreq r1, r3, #0x300 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FD258 +_022FD230: + cmp ip, #0x300 + ble _022FD258 + cmp ip, #0x400 + orreq r1, r3, #0x200 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FD258 +_022FD24C: + orr r1, r3, #0x100 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_022FD258: + add r1, r0, #0x100 + ldrsh r2, [r1, #0x4e] + cmp r2, r3 + strneh r3, [r1, #0x4e] + movne r1, #1 + strneb r1, [r0, #0x14c] + bxne lr + tst r2, #0x1000 + movne r1, #1 + strneb r1, [r0, #0x14c] + bx lr + .align 2, 0 +_022FD284: .word 0x02321DC8 + arm_func_end ov11_022FD1C8 + + arm_func_start ov11_022FD288 +ov11_022FD288: ; 0x022FD288 + add r0, r0, #0x100 + strh r1, [r0, #0x50] + strh r2, [r0, #0x52] + bx lr + arm_func_end ov11_022FD288 arm_func_start ov11_022FD298 ov11_022FD298: ; 0x022FD298 @@ -38594,12 +39107,40 @@ ov11_022FD2B8: ; 0x022FD2B8 bl ov11_022F49B0 ldmia sp!, {r3, pc} arm_func_end ov11_022FD2B8 -_022FD2DC: - .byte 0x2C, 0x01, 0x90, 0xE5 - .byte 0x00, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5, 0xF4, 0x00, 0xD0, 0xE1 - .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xF8, 0xC5, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5, 0xF4, 0x00, 0xD0, 0xE1 - .byte 0x1C, 0xFF, 0x2F, 0xE1, 0x38, 0xC6, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5, 0x55, 0x0F, 0x80, 0xE2 - .byte 0x1C, 0xFF, 0x2F, 0xE1, 0x84, 0x49, 0x2F, 0x02 + + arm_func_start ov11_022FD2DC +ov11_022FD2DC: ; 0x022FD2DC + ldr r0, [r0, #0x12c] + str r0, [r1] + bx lr + arm_func_end ov11_022FD2DC + + arm_func_start ov11_022FD2E8 +ov11_022FD2E8: ; 0x022FD2E8 + ldr ip, _022FD2F4 ; =ov11_022FC5F8 + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FD2F4: .word ov11_022FC5F8 + arm_func_end ov11_022FD2E8 + + arm_func_start ov11_022FD2F8 +ov11_022FD2F8: ; 0x022FD2F8 + ldr ip, _022FD304 ; =ov11_022FC638 + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FD304: .word ov11_022FC638 + arm_func_end ov11_022FD2F8 + + arm_func_start ov11_022FD308 +ov11_022FD308: ; 0x022FD308 + ldr ip, _022FD314 ; =ov11_022F4984 + add r0, r0, #0x154 + bx ip + .align 2, 0 +_022FD314: .word ov11_022F4984 + arm_func_end ov11_022FD308 arm_func_start ov11_022FD318 ov11_022FD318: ; 0x022FD318 @@ -39874,52 +40415,245 @@ _022FE3F4: .align 2, 0 _022FE400: .word 0x02324D04 arm_func_end ov11_022FE3B0 -_022FE404: - .byte 0x38, 0x40, 0x2D, 0xE9, 0x10, 0xD0, 0x4D, 0xE2, 0x18, 0x50, 0x90, 0xE5 - .byte 0x00, 0x30, 0x91, 0xE5, 0x1C, 0xE0, 0x90, 0xE5, 0x04, 0x20, 0x91, 0xE5, 0x05, 0x40, 0x43, 0xE0 - .byte 0x2C, 0x10, 0x90, 0xE5, 0x0E, 0xC0, 0x42, 0xE0, 0x05, 0x30, 0x83, 0xE0, 0x0E, 0x20, 0x82, 0xE0 - .byte 0x08, 0x40, 0x8D, 0xE5, 0x0C, 0xC0, 0x8D, 0xE5, 0x00, 0x30, 0x8D, 0xE5, 0x04, 0x20, 0x8D, 0xE5 - .byte 0x01, 0x00, 0x54, 0xE1, 0x08, 0x00, 0x00, 0xBA, 0x34, 0x10, 0x90, 0xE5, 0x01, 0x00, 0x53, 0xE1 - .byte 0x05, 0x00, 0x00, 0xAA, 0x30, 0x10, 0x90, 0xE5, 0x01, 0x00, 0x5C, 0xE1, 0x02, 0x00, 0x00, 0xBA - .byte 0x38, 0x10, 0x90, 0xE5, 0x01, 0x00, 0x52, 0xE1, 0x01, 0x00, 0x00, 0xBA, 0x40, 0x00, 0xA0, 0xE3 - .byte 0x04, 0x00, 0x00, 0xEA, 0x30, 0x41, 0x80, 0xE5, 0x34, 0xC1, 0x80, 0xE5, 0x38, 0x31, 0x80, 0xE5 - .byte 0x3C, 0x21, 0x80, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x10, 0xD0, 0x8D, 0xE2, 0x38, 0x80, 0xBD, 0xE8 - .byte 0xF4, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x20, 0x90, 0xE5, 0x14, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x51, 0xE3 - .byte 0x10, 0x00, 0x00, 0x0A, 0x00, 0x30, 0x91, 0xE5, 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x43, 0xE0 - .byte 0x30, 0x21, 0x80, 0xE5, 0x00, 0x30, 0x91, 0xE5, 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x83, 0xE0 - .byte 0x38, 0x21, 0x80, 0xE5, 0x04, 0x30, 0x91, 0xE5, 0x1C, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x43, 0xE0 - .byte 0x34, 0x21, 0x80, 0xE5, 0x04, 0x20, 0x91, 0xE5, 0x1C, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x82, 0xE0 - .byte 0x3C, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x30, 0x90, 0xE5, 0x18, 0x10, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x10, 0x43, 0xE0, 0x30, 0x11, 0x80, 0xE5, 0x24, 0x30, 0x90, 0xE5 - .byte 0x18, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x83, 0xE0, 0x38, 0x11, 0x80, 0xE5, 0x28, 0xC0, 0x90, 0xE5 - .byte 0x1C, 0x30, 0x90, 0xE5, 0x01, 0x1C, 0x80, 0xE2, 0x03, 0x30, 0x4C, 0xE0, 0x34, 0x31, 0x80, 0xE5 - .byte 0x28, 0xC0, 0x90, 0xE5, 0x1C, 0x30, 0x90, 0xE5, 0x03, 0x30, 0x8C, 0xE0, 0x3C, 0x31, 0x80, 0xE5 - .byte 0x44, 0x21, 0x80, 0xE5, 0x40, 0x21, 0x80, 0xE5, 0xDC, 0x22, 0xD1, 0xE1, 0xD0, 0x12, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x52, 0xE1, 0x01, 0x10, 0xA0, 0x13, 0x48, 0x11, 0xC0, 0x15, 0xD0, 0x12, 0xD0, 0xE1 - .byte 0x2C, 0x11, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x30, 0x91, 0xE5, 0x04, 0x10, 0x91, 0xE5 - .byte 0x2C, 0x30, 0x80, 0xE5, 0x30, 0x10, 0x80, 0xE5, 0x00, 0x30, 0x92, 0xE5, 0x04, 0x10, 0x92, 0xE5 - .byte 0x34, 0x30, 0x80, 0xE5, 0x38, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x31, 0x90, 0xE5 - .byte 0x18, 0x20, 0x90, 0xE5, 0x02, 0x20, 0x83, 0xE0, 0x00, 0x20, 0x81, 0xE5, 0x34, 0x21, 0x90, 0xE5 - .byte 0x1C, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE0, 0x04, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x00, 0xC0, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x04, 0xE4, 0x2F, 0x02, 0x40, 0x31, 0x90, 0xE5 - .byte 0x00, 0x30, 0x81, 0xE5, 0x44, 0x01, 0x90, 0xE5, 0x00, 0x00, 0x82, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x40, 0x11, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x0C, 0x80, 0xE2, 0xDC, 0x02, 0xD0, 0xE1 - .byte 0x00, 0x00, 0xC1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0xE0, 0xE3, 0x02, 0x00, 0x51, 0xE1 - .byte 0x2C, 0x11, 0xC0, 0x15, 0x1E, 0xFF, 0x2F, 0xE1, 0x07, 0x2C, 0x01, 0xE2, 0x02, 0x28, 0xA0, 0xE1 - .byte 0xFF, 0x30, 0x01, 0xE2, 0x02, 0x0B, 0x11, 0xE3, 0x22, 0xC8, 0xA0, 0xE1, 0x05, 0x00, 0x00, 0x0A - .byte 0x01, 0x1C, 0x80, 0xE2, 0x01, 0x2B, 0xA0, 0xE3, 0xBA, 0x24, 0xC1, 0xE1, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x48, 0x11, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x53, 0xE3, 0x80, 0x10, 0x9F, 0x15 - .byte 0x83, 0x20, 0xA0, 0x11, 0xF2, 0x30, 0x91, 0x11, 0x01, 0x1C, 0x80, 0x02, 0xFA, 0x34, 0xD1, 0x01 - .byte 0x02, 0x0C, 0x5C, 0xE3, 0x05, 0x00, 0x00, 0xCA, 0x0B, 0x00, 0x00, 0xAA, 0x01, 0x0C, 0x5C, 0xE3 - .byte 0x03, 0x1C, 0x83, 0x03, 0x01, 0x18, 0xA0, 0x01, 0x41, 0x38, 0xA0, 0x01, 0x09, 0x00, 0x00, 0xEA - .byte 0x03, 0x0C, 0x5C, 0xE3, 0x07, 0x00, 0x00, 0xDA, 0x01, 0x0B, 0x5C, 0xE3, 0x02, 0x1C, 0x83, 0x03 - .byte 0x01, 0x18, 0xA0, 0x01, 0x41, 0x38, 0xA0, 0x01, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x1C, 0x83, 0xE3 - .byte 0x01, 0x18, 0xA0, 0xE1, 0x41, 0x38, 0xA0, 0xE1, 0x01, 0x1C, 0x80, 0xE2, 0xFA, 0x24, 0xD1, 0xE1 - .byte 0x03, 0x00, 0x52, 0xE1, 0xBA, 0x34, 0xC1, 0x11, 0x01, 0x10, 0xA0, 0x13, 0x48, 0x11, 0xC0, 0x15 - .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x0A, 0x12, 0xE3, 0x01, 0x10, 0xA0, 0x13, 0x48, 0x11, 0xC0, 0x15 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xDC, 0x20, 0x32, 0x02, 0x01, 0x0C, 0x80, 0xE2, 0xBC, 0x14, 0xC0, 0xE1 - .byte 0xBE, 0x24, 0xC0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_022FE404 +ov11_022FE404: ; 0x022FE404 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r5, [r0, #0x18] + ldr r3, [r1] + ldr lr, [r0, #0x1c] + ldr r2, [r1, #4] + sub r4, r3, r5 + ldr r1, [r0, #0x2c] + sub ip, r2, lr + add r3, r3, r5 + add r2, r2, lr + str r4, [sp, #8] + str ip, [sp, #0xc] + str r3, [sp] + str r2, [sp, #4] + cmp r4, r1 + blt _022FE46C + ldr r1, [r0, #0x34] + cmp r3, r1 + bge _022FE46C + ldr r1, [r0, #0x30] + cmp ip, r1 + blt _022FE46C + ldr r1, [r0, #0x38] + cmp r2, r1 + blt _022FE474 +_022FE46C: + mov r0, #0x40 + b _022FE488 +_022FE474: + str r4, [r0, #0x130] + str ip, [r0, #0x134] + str r3, [r0, #0x138] + str r2, [r0, #0x13c] + mov r0, #0 +_022FE488: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022FE404 + + arm_func_start ov11_022FE490 +ov11_022FE490: ; 0x022FE490 + ldrsh r0, [r0, #4] + bx lr + arm_func_end ov11_022FE490 + + arm_func_start ov11_022FE498 +ov11_022FE498: ; 0x022FE498 + ldr r2, [r0, #0x10] + ldr r0, [r0, #0x14] + str r2, [r1] + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FE498 + + arm_func_start ov11_022FE4AC +ov11_022FE4AC: ; 0x022FE4AC + cmp r1, #0 + beq _022FE4F8 + ldr r3, [r1] + ldr r2, [r0, #0x18] + sub r2, r3, r2 + str r2, [r0, #0x130] + ldr r3, [r1] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r0, #0x138] + ldr r3, [r1, #4] + ldr r2, [r0, #0x1c] + sub r2, r3, r2 + str r2, [r0, #0x134] + ldr r2, [r1, #4] + ldr r1, [r0, #0x1c] + add r1, r2, r1 + str r1, [r0, #0x13c] + bx lr +_022FE4F8: + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + mov r2, #0 + sub r1, r3, r1 + str r1, [r0, #0x130] + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + add r1, r3, r1 + str r1, [r0, #0x138] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r1, r0, #0x100 + sub r3, ip, r3 + str r3, [r0, #0x134] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r3, ip, r3 + str r3, [r0, #0x13c] + str r2, [r0, #0x144] + str r2, [r0, #0x140] + ldrsb r2, [r1, #0x2c] + ldrsb r1, [r0, #0x20] + cmp r2, r1 + movne r1, #1 + strneb r1, [r0, #0x148] + ldrsb r1, [r0, #0x20] + strb r1, [r0, #0x12c] + bx lr + arm_func_end ov11_022FE4AC + + arm_func_start ov11_022FE568 +ov11_022FE568: ; 0x022FE568 + ldr r3, [r1] + ldr r1, [r1, #4] + str r3, [r0, #0x2c] + str r1, [r0, #0x30] + ldr r3, [r2] + ldr r1, [r2, #4] + str r3, [r0, #0x34] + str r1, [r0, #0x38] + bx lr + arm_func_end ov11_022FE568 + + arm_func_start ov11_022FE58C +ov11_022FE58C: ; 0x022FE58C + ldr r3, [r0, #0x130] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r1] + ldr r2, [r0, #0x134] + ldr r0, [r0, #0x1c] + add r0, r2, r0 + str r0, [r1, #4] + bx lr + arm_func_end ov11_022FE58C + + arm_func_start ov11_022FE5B0 +ov11_022FE5B0: ; 0x022FE5B0 + ldr ip, _022FE5B8 ; =ov11_022FE404 + bx ip + .align 2, 0 +_022FE5B8: .word ov11_022FE404 + arm_func_end ov11_022FE5B0 + + arm_func_start ov11_022FE5BC +ov11_022FE5BC: ; 0x022FE5BC + ldr r3, [r0, #0x140] + str r3, [r1] + ldr r0, [r0, #0x144] + str r0, [r2] + bx lr + arm_func_end ov11_022FE5BC + + arm_func_start ov11_022FE5D0 +ov11_022FE5D0: ; 0x022FE5D0 + str r1, [r0, #0x140] + bx lr + arm_func_end ov11_022FE5D0 + + arm_func_start ov11_022FE5D8 +ov11_022FE5D8: ; 0x022FE5D8 + add r0, r0, #0x100 + ldrsb r0, [r0, #0x2c] + strb r0, [r1] + bx lr + arm_func_end ov11_022FE5D8 + + arm_func_start ov11_022FE5E8 +ov11_022FE5E8: ; 0x022FE5E8 + mvn r2, #0 + cmp r1, r2 + strneb r1, [r0, #0x12c] + bx lr + arm_func_end ov11_022FE5E8 + + arm_func_start ov11_022FE5F8 +ov11_022FE5F8: ; 0x022FE5F8 + and r2, r1, #0x700 + mov r2, r2, lsl #0x10 + and r3, r1, #0xff + tst r1, #0x800 + mov ip, r2, lsr #0x10 + beq _022FE628 + add r1, r0, #0x100 + mov r2, #0x400 + strh r2, [r1, #0x4a] + mov r1, #1 + strb r1, [r0, #0x148] + bx lr +_022FE628: + cmp r3, #0 + ldrne r1, _022FE6B4 ; =0x023220DC + movne r2, r3, lsl #1 + ldrnesh r3, [r1, r2] + addeq r1, r0, #0x100 + ldreqsh r3, [r1, #0x4a] + cmp ip, #0x200 + bgt _022FE660 + bge _022FE67C + cmp ip, #0x100 + orreq r1, r3, #0x300 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FE688 +_022FE660: + cmp ip, #0x300 + ble _022FE688 + cmp ip, #0x400 + orreq r1, r3, #0x200 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FE688 +_022FE67C: + orr r1, r3, #0x100 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_022FE688: + add r1, r0, #0x100 + ldrsh r2, [r1, #0x4a] + cmp r2, r3 + strneh r3, [r1, #0x4a] + movne r1, #1 + strneb r1, [r0, #0x148] + bxne lr + tst r2, #0x1000 + movne r1, #1 + strneb r1, [r0, #0x148] + bx lr + .align 2, 0 +_022FE6B4: .word 0x023220DC + arm_func_end ov11_022FE5F8 + + arm_func_start ov11_022FE6B8 +ov11_022FE6B8: ; 0x022FE6B8 + add r0, r0, #0x100 + strh r1, [r0, #0x4c] + strh r2, [r0, #0x4e] + bx lr + arm_func_end ov11_022FE6B8 arm_func_start ov11_022FE6C8 ov11_022FE6C8: ; 0x022FE6C8 @@ -39950,25 +40684,101 @@ ov11_022FE6E8: ; 0x022FE6E8 bl ov11_022F49B0 ldmia sp!, {r3, pc} arm_func_end ov11_022FE6E8 -_022FE720: - .byte 0x28, 0x01, 0x90, 0xE5, 0x00, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5 - .byte 0xF4, 0x00, 0xD0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1, 0x98, 0xDD, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5 - .byte 0xF4, 0x00, 0xD0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1, 0xD8, 0xDD, 0x2F, 0x02, 0x04, 0xC0, 0x9F, 0xE5 - .byte 0x15, 0x0E, 0x80, 0xE2, 0x1C, 0xFF, 0x2F, 0xE1, 0x84, 0x49, 0x2F, 0x02, 0x10, 0x40, 0x2D, 0xE9 - .byte 0x10, 0xD0, 0x4D, 0xE2, 0x00, 0xC0, 0x91, 0xE5, 0x30, 0x21, 0x90, 0xE5, 0x04, 0xE0, 0x91, 0xE5 - .byte 0x0C, 0x40, 0x82, 0xE0, 0x3C, 0x11, 0x90, 0xE5, 0x38, 0x31, 0x90, 0xE5, 0x2C, 0x20, 0x90, 0xE5 - .byte 0x0C, 0x30, 0x83, 0xE0, 0x0E, 0x10, 0x81, 0xE0, 0x34, 0xC1, 0x90, 0xE5, 0x0C, 0x10, 0x8D, 0xE5 - .byte 0x02, 0x00, 0x54, 0xE1, 0x10, 0x10, 0x90, 0xB5, 0x0E, 0xC0, 0x8C, 0xE0, 0x00, 0x40, 0x8D, 0xE5 - .byte 0x08, 0x30, 0x8D, 0xE5, 0x01, 0x10, 0x82, 0xB0, 0x04, 0xC0, 0x8D, 0xE5, 0x00, 0x20, 0x8D, 0xB5 - .byte 0x08, 0x10, 0x8D, 0xB5, 0x05, 0x00, 0x00, 0xBA, 0x34, 0x20, 0x90, 0xE5, 0x02, 0x00, 0x53, 0xE1 - .byte 0x10, 0x10, 0x90, 0xA5, 0x08, 0x20, 0x8D, 0xA5, 0x01, 0x10, 0x42, 0xA0, 0x00, 0x10, 0x8D, 0xA5 - .byte 0x30, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x9D, 0xE5, 0x02, 0x00, 0x51, 0xE1, 0x14, 0x10, 0x90, 0xB5 - .byte 0x04, 0x20, 0x8D, 0xB5, 0x01, 0x10, 0x82, 0xB0, 0x0C, 0x10, 0x8D, 0xB5, 0x06, 0x00, 0x00, 0xBA - .byte 0x38, 0x20, 0x90, 0xE5, 0x0C, 0x10, 0x9D, 0xE5, 0x02, 0x00, 0x51, 0xE1, 0x14, 0x10, 0x90, 0xA5 - .byte 0x0C, 0x20, 0x8D, 0xA5, 0x01, 0x10, 0x42, 0xA0, 0x04, 0x10, 0x8D, 0xA5, 0x00, 0x20, 0x9D, 0xE5 - .byte 0x04, 0x10, 0x9D, 0xE5, 0x30, 0x21, 0x80, 0xE5, 0x08, 0x20, 0x9D, 0xE5, 0x34, 0x11, 0x80, 0xE5 - .byte 0x0C, 0x10, 0x9D, 0xE5, 0x38, 0x21, 0x80, 0xE5, 0x3C, 0x11, 0x80, 0xE5, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x10, 0xD0, 0x8D, 0xE2, 0x10, 0x80, 0xBD, 0xE8 + + arm_func_start ov11_022FE720 +ov11_022FE720: ; 0x022FE720 + ldr r0, [r0, #0x128] + str r0, [r1] + bx lr + arm_func_end ov11_022FE720 + + arm_func_start ov11_022FE72C +ov11_022FE72C: ; 0x022FE72C + ldr ip, _022FE738 ; =ov11_022FDD98 + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FE738: .word ov11_022FDD98 + arm_func_end ov11_022FE72C + + arm_func_start ov11_022FE73C +ov11_022FE73C: ; 0x022FE73C + ldr ip, _022FE748 ; =ov11_022FDDD8 + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FE748: .word ov11_022FDDD8 + arm_func_end ov11_022FE73C + + arm_func_start ov11_022FE74C +ov11_022FE74C: ; 0x022FE74C + ldr ip, _022FE758 ; =ov11_022F4984 + add r0, r0, #0x150 + bx ip + .align 2, 0 +_022FE758: .word ov11_022F4984 + arm_func_end ov11_022FE74C + + arm_func_start ov11_022FE75C +ov11_022FE75C: ; 0x022FE75C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr ip, [r1] + ldr r2, [r0, #0x130] + ldr lr, [r1, #4] + add r4, r2, ip + ldr r1, [r0, #0x13c] + ldr r3, [r0, #0x138] + ldr r2, [r0, #0x2c] + add r3, r3, ip + add r1, r1, lr + ldr ip, [r0, #0x134] + str r1, [sp, #0xc] + cmp r4, r2 + ldrlt r1, [r0, #0x10] + add ip, ip, lr + str r4, [sp] + str r3, [sp, #8] + addlt r1, r2, r1 + str ip, [sp, #4] + strlt r2, [sp] + strlt r1, [sp, #8] + blt _022FE7D0 + ldr r2, [r0, #0x34] + cmp r3, r2 + ldrge r1, [r0, #0x10] + strge r2, [sp, #8] + subge r1, r2, r1 + strge r1, [sp] +_022FE7D0: + ldr r2, [r0, #0x30] + ldr r1, [sp, #4] + cmp r1, r2 + ldrlt r1, [r0, #0x14] + strlt r2, [sp, #4] + addlt r1, r2, r1 + strlt r1, [sp, #0xc] + blt _022FE80C + ldr r2, [r0, #0x38] + ldr r1, [sp, #0xc] + cmp r1, r2 + ldrge r1, [r0, #0x14] + strge r2, [sp, #0xc] + subge r1, r2, r1 + strge r1, [sp, #4] +_022FE80C: + ldr r2, [sp] + ldr r1, [sp, #4] + str r2, [r0, #0x130] + ldr r2, [sp, #8] + str r1, [r0, #0x134] + ldr r1, [sp, #0xc] + str r2, [r0, #0x138] + str r1, [r0, #0x13c] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov11_022FE75C arm_func_start ov11_022FE838 ov11_022FE838: ; 0x022FE838 @@ -40733,28 +41543,97 @@ _022FF210: .word 0x02324D0C _022FF214: .word 0x0238A074 _022FF218: .word 0x000002BD arm_func_end ov11_022FF1D4 -_022FF21C: - .byte 0x70, 0x40, 0x2D, 0xE9 - .byte 0x08, 0xD0, 0x4D, 0xE2, 0x62, 0x0E, 0xA0, 0xE3, 0x08, 0x10, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3 - .byte 0xCE, 0x07, 0xF4, 0xEB, 0xC8, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x0C, 0x00, 0x80, 0xE2 - .byte 0xFC, 0xD5, 0xF4, 0xEB, 0xB8, 0x30, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x04, 0xC0, 0x93, 0xE5 - .byte 0xB0, 0x20, 0x9F, 0xE5, 0x08, 0x00, 0x8C, 0xE5, 0xF0, 0x20, 0xD2, 0xE1, 0x04, 0x00, 0x93, 0xE5 - .byte 0xA4, 0xE0, 0x9F, 0xE5, 0xB4, 0x2A, 0xC0, 0xE1, 0xA0, 0x00, 0x9F, 0xE5, 0x01, 0x50, 0xA0, 0xE1 - .byte 0x04, 0x60, 0x93, 0xE5, 0xF2, 0xC0, 0xDE, 0xE1, 0xF4, 0x2A, 0xD6, 0xE1, 0x02, 0x00, 0x5C, 0xE1 - .byte 0x05, 0x00, 0x00, 0x1A, 0xF0, 0x20, 0xD3, 0xE1, 0x05, 0x00, 0x52, 0xE1, 0x81, 0x20, 0x86, 0xE0 - .byte 0x01, 0x40, 0xA0, 0x01, 0xB6, 0x5A, 0xC2, 0xE1, 0x01, 0x10, 0x81, 0xE2, 0x01, 0x50, 0x85, 0xE2 - .byte 0x00, 0x00, 0x55, 0xE1, 0x08, 0xE0, 0x8E, 0xE2, 0xF0, 0xFF, 0xFF, 0xBA, 0x50, 0x20, 0x9F, 0xE5 - .byte 0x0A, 0x30, 0xA0, 0xE3, 0x04, 0xC0, 0x92, 0xE5, 0x54, 0x00, 0x9F, 0xE5, 0x0C, 0x40, 0x8C, 0xE5 - .byte 0x0A, 0x00, 0x8D, 0xE8, 0x04, 0x10, 0x92, 0xE5, 0x48, 0x30, 0x9F, 0xE5, 0x0C, 0x20, 0x81, 0xE2 - .byte 0x33, 0x10, 0xA0, 0xE3, 0xD1, 0xB1, 0xF4, 0xEB, 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE3 - .byte 0x04, 0x30, 0x91, 0xE5, 0x24, 0x20, 0x9F, 0xE5, 0x00, 0x00, 0xC3, 0xE5, 0x04, 0x30, 0x91, 0xE5 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x04, 0x40, 0x83, 0xE5, 0xB2, 0x20, 0xC1, 0xE1, 0x08, 0xD0, 0x8D, 0xE2 - .byte 0x70, 0x80, 0xBD, 0xE8, 0x0C, 0x4D, 0x32, 0x02, 0x74, 0xA0, 0x38, 0x02, 0x28, 0xC8, 0x31, 0x02 - .byte 0xBD, 0x02, 0x00, 0x00, 0x8C, 0x24, 0x32, 0x02, 0x38, 0xF4, 0x2F, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x2C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08 - .byte 0xD0, 0x00, 0xD0, 0xE1, 0x42, 0xB2, 0xF4, 0xEB, 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x90, 0x07, 0xF4, 0xEB, 0x08, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x0C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_022FF21C +ov11_022FF21C: ; 0x022FF21C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r0, #0x620 + mov r1, #8 + mov r4, #0 + bl MemAlloc + ldr r1, _022FF304 ; =0x02324D0C + str r0, [r1, #4] + add r0, r0, #0xc + bl sub_02034A38 + ldr r3, _022FF304 ; =0x02324D0C + mov r1, r4 + ldr ip, [r3, #4] + ldr r2, _022FF308 ; =0x0238A074 + str r0, [ip, #8] + ldrsh r2, [r2] + ldr r0, [r3, #4] + ldr lr, _022FF30C ; =0x0231C828 + strh r2, [r0, #0xa4] + ldr r0, _022FF310 ; =0x000002BD + mov r5, r1 +_022FF270: + ldr r6, [r3, #4] + ldrsh ip, [lr, #2] + ldrsh r2, [r6, #0xa4] + cmp ip, r2 + bne _022FF29C + ldrsh r2, [r3] + cmp r2, r5 + add r2, r6, r1, lsl #1 + moveq r4, r1 + strh r5, [r2, #0xa6] + add r1, r1, #1 +_022FF29C: + add r5, r5, #1 + cmp r5, r0 + add lr, lr, #8 + blt _022FF270 + ldr r2, _022FF304 ; =0x02324D0C + mov r3, #0xa + ldr ip, [r2, #4] + ldr r0, _022FF314 ; =0x0232248C + str r4, [ip, #0xc] + stmia sp, {r1, r3} + ldr r1, [r2, #4] + ldr r3, _022FF318 ; =ov11_022FF438 + add r2, r1, #0xc + mov r1, #0x33 + bl CreateAdvancedMenu + ldr r1, _022FF304 ; =0x02324D0C + mov r4, #0 + ldr r3, [r1, #4] + ldr r2, _022FF310 ; =0x000002BD + strb r0, [r3] + ldr r3, [r1, #4] + mov r0, #1 + str r4, [r3, #4] + strh r2, [r1, #2] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FF304: .word 0x02324D0C +_022FF308: .word 0x0238A074 +_022FF30C: .word 0x0231C828 +_022FF310: .word 0x000002BD +_022FF314: .word 0x0232248C +_022FF318: .word ov11_022FF438 + arm_func_end ov11_022FF21C + + arm_func_start ov11_022FF31C +ov11_022FF31C: ; 0x022FF31C + stmdb sp!, {r3, lr} + ldr r0, _022FF354 ; =0x02324D0C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl FreeAdvancedMenu + ldr r0, _022FF354 ; =0x02324D0C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _022FF354 ; =0x02324D0C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF354: .word 0x02324D0C + arm_func_end ov11_022FF31C arm_func_start ov11_022FF358 ov11_022FF358: ; 0x022FF358 @@ -40821,10 +41700,21 @@ _022FF42C: .align 2, 0 _022FF434: .word 0x02324D0C arm_func_end ov11_022FF358 -_022FF438: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x18, 0x20, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x81, 0x00, 0x80, 0xE0, 0xF6, 0x0A, 0xD0, 0xE1, 0x80, 0x01, 0x82, 0xE0 - .byte 0x04, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x4D, 0x32, 0x02, 0x28, 0xC8, 0x31, 0x02 + + arm_func_start ov11_022FF438 +ov11_022FF438: ; 0x022FF438 + ldr r0, _022FF458 ; =0x02324D0C + ldr r2, _022FF45C ; =0x0231C828 + ldr r0, [r0, #4] + add r0, r0, r1, lsl #1 + ldrsh r0, [r0, #0xa6] + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022FF458: .word 0x02324D0C +_022FF45C: .word 0x0231C828 + arm_func_end ov11_022FF438 arm_func_start ov11_022FF460 ov11_022FF460: ; 0x022FF460 @@ -41235,14 +42125,40 @@ _022FF9F0: .word 0x023224BC _022FF9F4: .word 0x022FFA14 _022FF9F8: .word 0x0238A078 arm_func_end ov11_022FF5D0 -_022FF9FC: - .byte 0x0C, 0x20, 0x9F, 0xE5 - .byte 0x0C, 0x00, 0xA0, 0xE3, 0x91, 0x20, 0x20, 0xE0, 0x08, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x88, 0x54, 0x0A, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x34, 0x20, 0x9F, 0xE5 - .byte 0x81, 0x11, 0xA0, 0xE1, 0x04, 0x20, 0x92, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x20, 0x92, 0xE5 - .byte 0x02, 0x10, 0x81, 0xE2, 0x00, 0x00, 0x8D, 0xE2, 0x01, 0x10, 0x82, 0xE0, 0xEF, 0x92, 0xFF, 0xEB - .byte 0x00, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0xA0, 0xE1, 0x07, 0x93, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1 - .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x80, 0xBD, 0xE8, 0x14, 0x4D, 0x32, 0x02 + + arm_func_start ov11_022FF9FC +ov11_022FF9FC: ; 0x022FF9FC + ldr r2, _022FFA10 ; =0x020A5488 + mov r0, #0xc + mla r0, r1, r0, r2 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_022FFA10: .word 0x020A5488 + arm_func_end ov11_022FF9FC + + arm_func_start ov11_022FFA14 +ov11_022FFA14: ; 0x022FFA14 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _022FFA58 ; =0x02324D14 + mov r1, r1, lsl #3 + ldr r2, [r2, #4] + mov r4, r0 + ldr r2, [r2, #8] + add r1, r1, #2 + add r0, sp, #0 + add r1, r2, r1 + bl ov11_022E4600 + add r0, sp, #0 + mov r1, r4 + bl ov11_022E466C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FFA58: .word 0x02324D14 + arm_func_end ov11_022FFA14 arm_func_start ov11_022FFA5C ov11_022FFA5C: ; 0x022FFA5C @@ -42220,12 +43136,28 @@ ov11_02300728: ; 0x02300728 _023007A4: .word 0x02324D24 _023007A8: .word 0x023225BC arm_func_end ov11_02300728 -_023007AC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x14, 0x00, 0xA0, 0xE3, 0x08, 0x10, 0xA0, 0xE3, 0x6C, 0x02, 0xF4, 0xEB, 0x24, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x18, 0x00, 0x9F, 0xE5 - .byte 0x36, 0xBA, 0xF4, 0xEB, 0x0C, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x00, 0xC1, 0xE5 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x24, 0x4D, 0x32, 0x02, 0xCC, 0x25, 0x32, 0x02 + + arm_func_start ov11_023007AC +ov11_023007AC: ; 0x023007AC + stmdb sp!, {r3, lr} + mov r0, #0x14 + mov r1, #8 + bl MemAlloc + ldr r1, _023007E8 ; =0x02324D24 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r0, _023007EC ; =0x023225CC + bl CreateDBox + ldr r1, _023007E8 ; =0x02324D24 + ldr r1, [r1] + strb r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023007E8: .word 0x02324D24 +_023007EC: .word 0x023225CC + arm_func_end ov11_023007AC arm_func_start ov11_023007F0 ov11_023007F0: ; 0x023007F0 @@ -42255,38 +43187,142 @@ _02300824: .align 2, 0 _02300848: .word 0x02324D24 arm_func_end ov11_023007F0 -_0230084C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0xC8, 0x01, 0x9F, 0xE5, 0x00, 0x30, 0x90, 0xE5, 0x04, 0x10, 0x93, 0xE5, 0x05, 0x00, 0x51, 0xE3 - .byte 0x01, 0xF1, 0x8F, 0x90, 0x6B, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA - .byte 0x3B, 0x00, 0x00, 0xEA, 0x45, 0x00, 0x00, 0xEA, 0x51, 0x00, 0x00, 0xEA, 0x5C, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x61, 0x00, 0x00, 0x0A - .byte 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0x10, 0x83, 0xE5, 0xCB, 0xA4, 0xFF, 0xEB - .byte 0x5C, 0x00, 0x00, 0xEA, 0x04, 0x20, 0x90, 0xE5, 0x74, 0x11, 0x9F, 0xE5, 0x5C, 0x04, 0x92, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x92, 0xE5, 0x20, 0x10, 0xA0, 0xA3, 0x01, 0x00, 0x50, 0xE3 - .byte 0x02, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0xEA - .byte 0x48, 0x21, 0x9F, 0xE5, 0xD0, 0x00, 0xD3, 0xE1, 0x04, 0x30, 0x92, 0xE5, 0xB4, 0x20, 0xD3, 0xE1 - .byte 0x08, 0x30, 0x83, 0xE2, 0x32, 0xBA, 0xF4, 0xEB, 0x05, 0x00, 0x00, 0xEA, 0x2C, 0x21, 0x9F, 0xE5 - .byte 0xD0, 0x00, 0xD3, 0xE1, 0x04, 0x30, 0x92, 0xE5, 0x58, 0x20, 0x83, 0xE2, 0x08, 0x30, 0x83, 0xE2 - .byte 0x4D, 0xBA, 0xF4, 0xEB, 0x14, 0x01, 0x9F, 0xE5, 0x06, 0x00, 0x90, 0xE8, 0x58, 0x24, 0x92, 0xE5 - .byte 0x08, 0x20, 0x81, 0xE5, 0x06, 0x00, 0x90, 0xE8, 0x5C, 0x24, 0x92, 0xE5, 0x0C, 0x20, 0x81, 0xE5 - .byte 0x04, 0x10, 0x90, 0xE5, 0x5C, 0x14, 0x91, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x03, 0x00, 0x00, 0xBA - .byte 0x00, 0x00, 0x90, 0xE5, 0x01, 0x20, 0xA0, 0xE1, 0xD0, 0x00, 0xD0, 0xE1, 0x13, 0xBA, 0xF4, 0xEB - .byte 0xD8, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x8C, 0xA4, 0xFF, 0xEB - .byte 0xC8, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x2C, 0x00, 0x00, 0xEA, 0x77, 0xA5, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x29, 0x00, 0x00, 0x1A - .byte 0xA8, 0x00, 0x9F, 0xE5, 0x03, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x04, 0x20, 0x81, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0xD0, 0x00, 0xD0, 0xE1, 0x9A, 0xBA, 0xF4, 0xEB, 0x21, 0x00, 0x00, 0xEA - .byte 0xD0, 0x00, 0xD3, 0xE1, 0xF9, 0xB9, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x1D, 0x00, 0x00, 0x1A - .byte 0x78, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x87, 0xA4, 0xFF, 0xEB - .byte 0x68, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x14, 0x00, 0x00, 0xEA, 0x5F, 0xA5, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x11, 0x00, 0x00, 0x1A - .byte 0x48, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xD0, 0x00, 0xD0, 0xE1, 0x54, 0xBA, 0xF4, 0xEB - .byte 0x38, 0x00, 0x9F, 0xE5, 0x05, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x08, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0xD3, 0xE1, 0x3D, 0x9E, 0xF4, 0xEB, 0x05, 0x10, 0xE0, 0xE3 - .byte 0x01, 0x00, 0x50, 0xE1, 0x03, 0x00, 0x00, 0x1A, 0x00, 0x00, 0xA0, 0xE3, 0x5C, 0xA4, 0xFF, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x24, 0x4D, 0x32, 0x02, 0x08, 0x04, 0x00, 0x00 + + arm_func_start ov11_0230084C +ov11_0230084C: ; 0x0230084C + stmdb sp!, {r3, lr} + ldr r0, _02300A20 ; =0x02324D24 + ldr r3, [r0] + ldr r1, [r3, #4] + cmp r1, #5 + addls pc, pc, r1, lsl #2 + b _02300A18 +_02300868: ; jump table + b _02300880 ; case 0 + b _023008A4 ; case 1 + b _02300964 ; case 2 + b _02300990 ; case 3 + b _023009C4 ; case 4 + b _023009F4 ; case 5 +_02300880: + ldr r0, [r0, #4] + ldr r0, [r0] + cmp r0, #0 + beq _02300A18 + mov r1, #1 + mov r0, #0 + str r1, [r3, #4] + bl ov11_022E9BD0 + b _02300A18 +_023008A4: + ldr r2, [r0, #4] + ldr r1, _02300A24 ; =0x00000408 + ldr r0, [r2, #0x45c] + cmp r0, #0 + ldr r0, [r2] + movge r1, #0x20 + cmp r0, #1 + beq _023008D0 + cmp r0, #2 + beq _023008EC + b _02300904 +_023008D0: + ldr r2, _02300A20 ; =0x02324D24 + ldrsb r0, [r3] + ldr r3, [r2, #4] + ldrh r2, [r3, #4] + add r3, r3, #8 + bl ShowMessageInDBox + b _02300904 +_023008EC: + ldr r2, _02300A20 ; =0x02324D24 + ldrsb r0, [r3] + ldr r3, [r2, #4] + add r2, r3, #0x58 + add r3, r3, #8 + bl sub_0202F23C +_02300904: + ldr r0, _02300A20 ; =0x02324D24 + ldmia r0, {r1, r2} + ldr r2, [r2, #0x458] + str r2, [r1, #8] + ldmia r0, {r1, r2} + ldr r2, [r2, #0x45c] + str r2, [r1, #0xc] + ldr r1, [r0, #4] + ldr r1, [r1, #0x45c] + cmp r1, #0 + blt _02300940 + ldr r0, [r0] + mov r2, r1 + ldrsb r0, [r0] + bl sub_0202F190 +_02300940: + ldr r0, _02300A20 ; =0x02324D24 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_022E9B84 + ldr r0, _02300A20 ; =0x02324D24 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_02300964: + bl ov11_022E9F48 + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =0x02324D24 + mov r2, #3 + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F3F8 + b _02300A18 +_02300990: + ldrsb r0, [r3] + bl IsDBoxActive + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =0x02324D24 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_022E9BD0 + ldr r0, _02300A20 ; =0x02324D24 + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_023009C4: + bl ov11_022E9F48 + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =0x02324D24 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F334 + ldr r0, _02300A20 ; =0x02324D24 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_023009F4: + ldrsb r0, [r3] + bl sub_020282F4 + mvn r1, #5 + cmp r0, r1 + bne _02300A18 + mov r0, #0 + bl ov11_022E9B84 + mov r0, #4 + ldmia sp!, {r3, pc} +_02300A18: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300A20: .word 0x02324D24 +_02300A24: .word 0x00000408 + arm_func_end ov11_0230084C arm_func_start ov11_02300A28 ov11_02300A28: ; 0x02300A28 @@ -42379,18 +43415,59 @@ ov11_02300ACC: ; 0x02300ACC _02300B48: .word 0x02324D2C _02300B4C: .word 0x023225DC arm_func_end ov11_02300ACC -_02300B50: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x0C, 0x00, 0xA0, 0xE3, 0x08, 0x10, 0xA0, 0xE3, 0x83, 0x01, 0xF4, 0xEB - .byte 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x04, 0x20, 0x80, 0xE5 - .byte 0x00, 0x10, 0x91, 0xE5, 0x1C, 0x00, 0x9F, 0xE5, 0x08, 0x20, 0xC1, 0xE5, 0x4B, 0xB9, 0xF4, 0xEB - .byte 0x0C, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x00, 0xC1, 0xE5, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x2C, 0x4D, 0x32, 0x02, 0xEC, 0x25, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A - .byte 0xD0, 0x00, 0xD0, 0xE1, 0x63, 0xB9, 0xF4, 0xEB, 0x34, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x70, 0x01, 0xF4, 0xEB, 0x28, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5 - .byte 0x1C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08 - .byte 0x68, 0x01, 0xF4, 0xEB, 0x08, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x2C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02300B50 +ov11_02300B50: ; 0x02300B50 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _02300B94 ; =0x02324D2C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r1, [r1] + ldr r0, _02300B98 ; =0x023225EC + strb r2, [r1, #8] + bl CreateDBox + ldr r1, _02300B94 ; =0x02324D2C + ldr r1, [r1] + strb r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300B94: .word 0x02324D2C +_02300B98: .word 0x023225EC + arm_func_end ov11_02300B50 + + arm_func_start ov11_02300B9C +ov11_02300B9C: ; 0x02300B9C + stmdb sp!, {r3, lr} + ldr r0, _02300BF4 ; =0x02324D2C + ldr r0, [r0] + cmp r0, #0 + beq _02300BD0 + ldrsb r0, [r0] + bl FreeDBox + ldr r0, _02300BF4 ; =0x02324D2C + ldr r0, [r0] + bl MemFree + ldr r0, _02300BF4 ; =0x02324D2C + mov r1, #0 + str r1, [r0] +_02300BD0: + ldr r0, _02300BF4 ; =0x02324D2C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02300BF4 ; =0x02324D2C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300BF4: .word 0x02324D2C + arm_func_end ov11_02300B9C arm_func_start ov11_02300BF8 ov11_02300BF8: ; 0x02300BF8 @@ -42614,13 +43691,34 @@ _02300EE8: .word 0x023225FC _02300EEC: .word 0x00400213 _02300EF0: .word 0x0232261C arm_func_end ov11_02300D88 -_02300EF4: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x4C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0xD0, 0x00, 0xD0, 0xE1, 0xEA, 0xA6, 0xF4, 0xEB - .byte 0x34, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xD1, 0x00, 0xD0, 0xE1, 0x8B, 0xBB, 0xF4, 0xEB - .byte 0x24, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xD2, 0x00, 0xD0, 0xE1, 0x06, 0xF8, 0xFF, 0xEB - .byte 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x92, 0x00, 0xF4, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x34, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02300EF4 +ov11_02300EF4: ; 0x02300EF4 + stmdb sp!, {r3, lr} + ldr r0, _02300F4C ; =0x02324D34 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl sub_0202AABC + ldr r0, _02300F4C ; =0x02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_0202FD50 + ldr r0, _02300F4C ; =0x02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl ov11_022FEF4C + ldr r0, _02300F4C ; =0x02324D34 + ldr r0, [r0] + bl MemFree + ldr r0, _02300F4C ; =0x02324D34 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300F4C: .word 0x02324D34 + arm_func_end ov11_02300EF4 arm_func_start ov11_02300F50 ov11_02300F50: ; 0x02300F50 @@ -42801,16 +43899,44 @@ ov11_02301174: ; 0x02301174 _02301194: .word 0x023226C4 _02301198: .word 0x02324D40 arm_func_end ov11_02301174 -_0230119C: - .byte 0x10, 0x40, 0x2D, 0xE9 - .byte 0x98, 0xD0, 0x4D, 0xE2, 0x08, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0xEF, 0xFF, 0xF3, 0xEB - .byte 0x54, 0x10, 0x9F, 0xE5, 0x54, 0x40, 0x9F, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x10, 0xE0, 0xA0, 0xE3 - .byte 0x00, 0xC0, 0xA0, 0xE3, 0x48, 0x00, 0x9F, 0xE5, 0x48, 0x10, 0x9F, 0xE5, 0x48, 0x30, 0x9F, 0xE5 - .byte 0x00, 0x20, 0x8D, 0xE2, 0xB8, 0x40, 0xCD, 0xE1, 0x0C, 0xE0, 0x8D, 0xE5, 0x00, 0xC0, 0x8D, 0xE5 - .byte 0xF9, 0xA4, 0xF4, 0xEB, 0x20, 0x10, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x04, 0x20, 0x91, 0xE5 - .byte 0x00, 0x00, 0xC2, 0xE5, 0x04, 0x20, 0x91, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0x30, 0x82, 0xE5 - .byte 0x00, 0x30, 0x81, 0xE5, 0x98, 0xD0, 0x8D, 0xE2, 0x10, 0x80, 0xBD, 0xE8, 0x40, 0x4D, 0x32, 0x02 - .byte 0x27, 0x02, 0x00, 0x00, 0xB4, 0x26, 0x32, 0x02, 0x13, 0x18, 0x00, 0x00, 0xD4, 0x26, 0x32, 0x02 + + arm_func_start ov11_0230119C +ov11_0230119C: ; 0x0230119C + stmdb sp!, {r4, lr} + sub sp, sp, #0x98 + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _0230120C ; =0x02324D40 + ldr r4, _02301210 ; =0x00000227 + str r0, [r1, #4] + mov lr, #0x10 + mov ip, #0 + ldr r0, _02301214 ; =0x023226B4 + ldr r1, _02301218 ; =0x00001813 + ldr r3, _0230121C ; =0x023226D4 + add r2, sp, #0 + strh r4, [sp, #8] + str lr, [sp, #0xc] + str ip, [sp] + bl sub_0202A5CC + ldr r1, _0230120C ; =0x02324D40 + mov r3, #0 + ldr r2, [r1, #4] + strb r0, [r2] + ldr r2, [r1, #4] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1] + add sp, sp, #0x98 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230120C: .word 0x02324D40 +_02301210: .word 0x00000227 +_02301214: .word 0x023226B4 +_02301218: .word 0x00001813 +_0230121C: .word 0x023226D4 + arm_func_end ov11_0230119C arm_func_start ov11_02301220 ov11_02301220: ; 0x02301220 @@ -42831,28 +43957,103 @@ ov11_02301220: ; 0x02301220 .align 2, 0 _02301258: .word 0x02324D40 arm_func_end ov11_02301220 -_0230125C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x13, 0xDE, 0x4D, 0xE2, 0x2C, 0x01, 0x9F, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x92, 0xE5 - .byte 0x00, 0x00, 0x51, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x51, 0xE3, 0x0A, 0x00, 0x00, 0x0A - .byte 0x02, 0x00, 0x51, 0xE3, 0x16, 0x00, 0x00, 0x0A, 0x3F, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0xD2, 0xE1 - .byte 0x32, 0xA6, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF8, 0x00, 0x9F, 0x05, 0x01, 0x10, 0xA0, 0x03 - .byte 0x04, 0x00, 0x90, 0x05, 0x04, 0x10, 0x80, 0x05, 0x37, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0xD2, 0xE1 - .byte 0x22, 0xA6, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x33, 0x00, 0x00, 0x1A, 0xD4, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0xD0, 0x00, 0xD0, 0xE1, 0x38, 0xA6, 0xF4, 0xEB, 0xC4, 0x10, 0x9F, 0xE5 - .byte 0x02, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x04, 0x20, 0x80, 0xE5 - .byte 0x29, 0x00, 0x00, 0xEA, 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x07, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x1F, 0x00, 0x00, 0xEA, 0x1E, 0x00, 0x00, 0xEA - .byte 0x05, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x0F, 0x00, 0x00, 0xEA, 0x1A, 0x00, 0x00, 0xEA - .byte 0x19, 0x00, 0x00, 0xEA, 0x18, 0x00, 0x00, 0xEA, 0x14, 0x00, 0x00, 0xEA, 0x8E, 0xFE, 0xFF, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x19, 0x00, 0x00, 0xEA, 0x6C, 0x30, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3 - .byte 0x98, 0x10, 0x8D, 0xE2, 0x01, 0x0C, 0xA0, 0xE3, 0x1C, 0x31, 0x8D, 0xE5, 0x20, 0x21, 0x8D, 0xE5 - .byte 0x95, 0xD0, 0xF4, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x10, 0x00, 0x00, 0xEA, 0x48, 0x30, 0x9F, 0xE5 - .byte 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x8D, 0xE2, 0x01, 0x1C, 0xA0, 0xE3, 0x84, 0x30, 0x8D, 0xE5 - .byte 0x88, 0x00, 0x8D, 0xE5, 0x5E, 0xD2, 0xF4, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x07, 0x00, 0x00, 0xEA - .byte 0x41, 0x23, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x6D, 0xFF, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x13, 0xDE, 0x8D, 0xE2, 0x08, 0x80, 0xBD, 0xE8, 0x40, 0x4D, 0x32, 0x02, 0xA0, 0x13, 0x30, 0x02 + + arm_func_start ov11_0230125C +ov11_0230125C: ; 0x0230125C + stmdb sp!, {r3, lr} + sub sp, sp, #0x130 + ldr r0, _02301398 ; =0x02324D40 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #0 + beq _0230128C + cmp r1, #1 + beq _023012AC + cmp r1, #2 + beq _023012E4 + b _0230138C +_0230128C: + ldrsb r0, [r2] + bl sub_0202AB60 + cmp r0, #0 + ldreq r0, _02301398 ; =0x02324D40 + moveq r1, #1 + ldreq r0, [r0, #4] + streq r1, [r0, #4] + b _0230138C +_023012AC: + ldrsb r0, [r2] + bl sub_0202AB40 + cmp r0, #0 + bne _0230138C + ldr r0, _02301398 ; =0x02324D40 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl sub_0202ABB0 + ldr r1, _02301398 ; =0x02324D40 + mov r2, #2 + str r0, [r1] + ldr r0, [r1, #4] + str r2, [r0, #4] + b _0230138C +_023012E4: + mov r1, #3 + str r1, [r2, #4] + ldr r0, [r0] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230137C +_023012FC: ; jump table + b _0230137C ; case 0 + b _0230131C ; case 1 + b _02301328 ; case 2 + b _0230134C ; case 3 + b _0230137C ; case 4 + b _0230137C ; case 5 + b _0230137C ; case 6 + b _02301370 ; case 7 +_0230131C: + bl ov11_02300D5C + mov r0, #4 + b _02301390 +_02301328: + ldr r3, _0230139C ; =ov11_023013A0 + mov r2, #0 + add r1, sp, #0x98 + mov r0, #0x100 + str r3, [sp, #0x11c] + str r2, [sp, #0x120] + bl sub_0203559C + mov r0, #4 + b _02301390 +_0230134C: + ldr r3, _0230139C ; =ov11_023013A0 + mov r0, #0 + add r2, sp, #0 + mov r1, #0x100 + str r3, [sp, #0x84] + str r0, [sp, #0x88] + bl sub_02035CE4 + mov r0, #4 + b _02301390 +_02301370: + bl ov11_0230A07C + mov r0, #4 + b _02301390 +_0230137C: + mov r0, #1 + bl ov11_0230113C + mov r0, #4 + b _02301390 +_0230138C: + mov r0, #1 +_02301390: + add sp, sp, #0x130 + ldmia sp!, {r3, pc} + .align 2, 0 +_02301398: .word 0x02324D40 +_0230139C: .word ov11_023013A0 + arm_func_end ov11_0230125C arm_func_start ov11_023013A0 ov11_023013A0: ; 0x023013A0 @@ -43694,108 +44895,457 @@ _02301FA0: .word 0x0000038F _02301FA4: .word 0x023226F4 _02301FA8: .word 0x000003A3 arm_func_end ov11_02301A30 -_02301FAC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x9A, 0x2C, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x3C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0x6B, 0xB4, 0xF4, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x20, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0xED, 0xB4, 0xF4, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x2B, 0xFD, 0xFF, 0xEB, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x48, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x5A, 0xFC, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x48, 0x4D, 0x32, 0x02 - .byte 0x10, 0x40, 0x2D, 0xE9, 0xA8, 0x15, 0x9F, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x84, 0x21, 0x90, 0xE5 - .byte 0x03, 0x00, 0x52, 0xE3, 0x02, 0xF1, 0x8F, 0x90, 0x63, 0x01, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x00, 0xEA, 0x52, 0x01, 0x00, 0xEA, 0x5B, 0x01, 0x00, 0xEA, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x84, 0x11, 0x80, 0xE5, 0x5C, 0x01, 0x00, 0xEA, 0x00, 0x20, 0x90, 0xE5, 0x19, 0x00, 0x52, 0xE3 - .byte 0x02, 0xF1, 0x8F, 0x90, 0x35, 0x01, 0x00, 0xEA, 0x18, 0x00, 0x00, 0xEA, 0x33, 0x01, 0x00, 0xEA - .byte 0x93, 0x00, 0x00, 0xEA, 0x22, 0x00, 0x00, 0xEA, 0x7F, 0x00, 0x00, 0xEA, 0x2F, 0x01, 0x00, 0xEA - .byte 0x2E, 0x01, 0x00, 0xEA, 0x2D, 0x01, 0x00, 0xEA, 0x2C, 0x01, 0x00, 0xEA, 0x40, 0x00, 0x00, 0xEA - .byte 0x2A, 0x01, 0x00, 0xEA, 0x8D, 0x00, 0x00, 0xEA, 0x28, 0x01, 0x00, 0xEA, 0x27, 0x01, 0x00, 0xEA - .byte 0x75, 0x00, 0x00, 0xEA, 0xF1, 0x00, 0x00, 0xEA, 0x01, 0x01, 0x00, 0xEA, 0x0A, 0x01, 0x00, 0xEA - .byte 0x0F, 0x01, 0x00, 0xEA, 0x98, 0x00, 0x00, 0xEA, 0x97, 0x00, 0x00, 0xEA, 0xAF, 0x00, 0x00, 0xEA - .byte 0xB8, 0x00, 0x00, 0xEA, 0xE1, 0x00, 0x00, 0xEA, 0xA6, 0x00, 0x00, 0xEA, 0x0A, 0x01, 0x00, 0xEA - .byte 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0x24, 0xB4, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x17, 0x01, 0x00, 0x1A, 0x03, 0x00, 0xA0, 0xE3, 0xEB, 0xFC, 0xFF, 0xEB, 0xE0, 0x04, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0xA4, 0xB4, 0xF4, 0xEB - .byte 0x0F, 0x01, 0x00, 0xEA, 0x02, 0x0C, 0x80, 0xE2, 0xD5, 0x05, 0xD0, 0xE1, 0x16, 0xA5, 0xF4, 0xEB - .byte 0x01, 0x00, 0x50, 0xE3, 0x11, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A - .byte 0x05, 0x00, 0x50, 0xE3, 0x0D, 0x00, 0x00, 0x0A, 0x05, 0x01, 0x00, 0xEA, 0xA0, 0x04, 0x9F, 0xE5 - .byte 0x08, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x31, 0x01, 0x00, 0xEB - .byte 0x8C, 0x04, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0x0C, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x10, 0x80, 0xE5, 0xF8, 0x00, 0x00, 0xEA - .byte 0x28, 0x01, 0x00, 0xEB, 0x68, 0x04, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2 - .byte 0xFC, 0x04, 0xD0, 0xE1, 0x85, 0x0F, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A, 0x0A, 0x00, 0xA0, 0xE3 - .byte 0xC5, 0xFC, 0xFF, 0xEB, 0xEE, 0x00, 0x00, 0xEA, 0x07, 0x00, 0xA0, 0xE3, 0xC2, 0xFC, 0xFF, 0xEB - .byte 0xEB, 0x00, 0x00, 0xEA, 0xBC, 0x12, 0x00, 0xEB, 0x03, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A - .byte 0x04, 0x00, 0x50, 0xE3, 0xE6, 0x00, 0x00, 0x1A, 0xA9, 0x12, 0x00, 0xEB, 0x20, 0x14, 0x9F, 0xE5 - .byte 0x00, 0x10, 0x91, 0xE5, 0x48, 0x02, 0x81, 0xE5, 0x07, 0x00, 0xA0, 0xE3, 0xB6, 0xFC, 0xFF, 0xEB - .byte 0xDF, 0x00, 0x00, 0xEA, 0xA2, 0x12, 0x00, 0xEB, 0x04, 0x14, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5 - .byte 0x48, 0x02, 0x82, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x48, 0x02, 0x92, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x09, 0x00, 0x00, 0x1A, 0x02, 0x0C, 0x82, 0xE2, 0xFC, 0x04, 0xD0, 0xE1, 0x85, 0x0F, 0x50, 0xE3 - .byte 0x02, 0x00, 0x00, 0x1A, 0x0A, 0x00, 0xA0, 0xE3, 0xA7, 0xFC, 0xFF, 0xEB, 0xD0, 0x00, 0x00, 0xEA - .byte 0x07, 0x00, 0xA0, 0xE3, 0xA4, 0xFC, 0xFF, 0xEB, 0xCD, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x20, 0x00, 0x82, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x02, 0x0C, 0x82, 0xE2, 0xFC, 0x14, 0xD0, 0xE1 - .byte 0x5A, 0x00, 0x82, 0xE2, 0x56, 0x40, 0xF5, 0xEB, 0xA4, 0x03, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x6E, 0x00, 0x81, 0xE2, 0x01, 0x0C, 0x80, 0xE2, 0x5A, 0x10, 0x81, 0xE2, 0xF7, 0x8B, 0xF4, 0xEB - .byte 0x8C, 0x03, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x50, 0x12, 0x90, 0xE5 - .byte 0x48, 0x02, 0x90, 0xE5, 0x01, 0x18, 0xA0, 0xE1, 0x41, 0x18, 0xA0, 0xE1, 0x95, 0x48, 0xF5, 0xEB - .byte 0x6C, 0x03, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x10, 0x00, 0xA0, 0xE3 - .byte 0x0C, 0x20, 0x81, 0xE5, 0x88, 0xFC, 0xFF, 0xEB, 0xB1, 0x00, 0x00, 0xEA, 0x02, 0x0C, 0x80, 0xE2 - .byte 0xD5, 0x05, 0xD0, 0xE1, 0xB8, 0xA4, 0xF4, 0xEB, 0x01, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A - .byte 0x04, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A - .byte 0xA7, 0x00, 0x00, 0xEA, 0xD7, 0x00, 0x00, 0xEB, 0x08, 0x00, 0xA0, 0xE3, 0x7A, 0xFC, 0xFF, 0xEB - .byte 0xA3, 0x00, 0x00, 0xEA, 0xD3, 0x00, 0x00, 0xEB, 0x07, 0x00, 0xA0, 0xE3, 0x76, 0xFC, 0xFF, 0xEB - .byte 0x9F, 0x00, 0x00, 0xEA, 0x10, 0x2D, 0x00, 0xEB, 0x03, 0x00, 0xA0, 0xE3, 0x9D, 0x00, 0x00, 0xEA - .byte 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0xA4, 0xB3, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x97, 0x00, 0x00, 0x1A, 0xE8, 0x02, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2 - .byte 0xD4, 0x05, 0xD0, 0xE1, 0x26, 0xB4, 0xF4, 0xEB, 0xD4, 0x02, 0x9F, 0xE5, 0x1A, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2 - .byte 0xD4, 0x05, 0xD0, 0xE1, 0xE6, 0xB3, 0xF4, 0xEB, 0x89, 0x00, 0x00, 0xEA, 0x68, 0xD2, 0xF4, 0xEB - .byte 0x03, 0x00, 0x50, 0xE3, 0x86, 0x00, 0x00, 0x1A, 0x87, 0xD4, 0xF4, 0xEB, 0xA0, 0x12, 0x9F, 0xE5 - .byte 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x91, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x26, 0x00, 0x80, 0xE2 - .byte 0x10, 0x20, 0xA0, 0xE3, 0xA6, 0x8B, 0xF4, 0xEB, 0x84, 0x02, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE1 - .byte 0x00, 0x00, 0x90, 0xE5, 0x46, 0x00, 0x80, 0xE2, 0x64, 0x8B, 0xF4, 0xEB, 0x18, 0x00, 0xA0, 0xE3 - .byte 0x4D, 0xFC, 0xFF, 0xEB, 0x76, 0x00, 0x00, 0xEA, 0x3A, 0xD4, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x73, 0x00, 0x00, 0x0A, 0x15, 0x00, 0xA0, 0xE3, 0x47, 0xFC, 0xFF, 0xEB, 0x70, 0x00, 0x00, 0xEA - .byte 0x0C, 0x20, 0x90, 0xE5, 0x01, 0x20, 0x82, 0xE2, 0x0C, 0x20, 0x80, 0xE5, 0x00, 0x00, 0x91, 0xE5 - .byte 0x0C, 0x00, 0x90, 0xE5, 0x0A, 0x00, 0x50, 0xE3, 0x69, 0x00, 0x00, 0xDA, 0x16, 0x00, 0xA0, 0xE3 - .byte 0x3D, 0xFC, 0xFF, 0xEB, 0x66, 0x00, 0x00, 0xEA, 0xD7, 0xDB, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x1D, 0x00, 0x00, 0x1A, 0x18, 0x02, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5 - .byte 0x08, 0x20, 0x81, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x6E, 0x00, 0x81, 0xE2, 0x01, 0x0C, 0x80, 0xE2 - .byte 0x46, 0x10, 0x81, 0xE2, 0x45, 0x8B, 0xF4, 0xEB, 0xF4, 0x01, 0x9F, 0xE5, 0x0A, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x10, 0x90, 0xE5, 0x48, 0x02, 0x91, 0xE5, 0x6E, 0x10, 0x81, 0xE2, 0x3A, 0x00, 0x80, 0xE2 - .byte 0x01, 0x1C, 0x81, 0xE2, 0x44, 0x8B, 0xF4, 0xEB, 0xD4, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x02, 0x0C, 0x80, 0xE2, 0xFC, 0x04, 0xD0, 0xE1, 0xEA, 0x8D, 0xF5, 0xEB, 0xC0, 0x01, 0x9F, 0xE5 - .byte 0x0F, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x46, 0x00, 0x80, 0xE2, 0xF5, 0x8D, 0xF5, 0xEB - .byte 0x17, 0x00, 0xA0, 0xE3, 0x1C, 0xFC, 0xFF, 0xEB, 0x45, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x50, 0xE3 - .byte 0x43, 0x00, 0x00, 0x1A, 0x98, 0x01, 0x9F, 0xE5, 0x14, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5 - .byte 0x17, 0x00, 0xA0, 0xE3, 0x08, 0x20, 0x81, 0xE5, 0x13, 0xFC, 0xFF, 0xEB, 0x3C, 0x00, 0x00, 0xEA - .byte 0x6C, 0xDB, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x39, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x0B, 0xFC, 0xFF, 0xEB, 0x34, 0x00, 0x00, 0xEA - .byte 0x0C, 0x20, 0x90, 0xE5, 0x01, 0x20, 0x82, 0xE2, 0x0C, 0x20, 0x80, 0xE5, 0x00, 0x10, 0x91, 0xE5 - .byte 0x0C, 0x00, 0x91, 0xE5, 0x01, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x50, 0x13, 0x2C, 0x00, 0x00, 0x0A - .byte 0x03, 0x00, 0x50, 0xE3, 0x2A, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x91, 0xE5, 0xFE, 0xFB, 0xFF, 0xEB - .byte 0x2C, 0x01, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x0C, 0x10, 0x80, 0xE5 - .byte 0x23, 0x00, 0x00, 0xEA, 0x0C, 0x20, 0x90, 0xE5, 0x01, 0x20, 0x82, 0xE2, 0x0C, 0x20, 0x80, 0xE5 - .byte 0x00, 0x00, 0x91, 0xE5, 0x0C, 0x00, 0x90, 0xE5, 0x0A, 0x00, 0x50, 0xE3, 0x1C, 0x00, 0x00, 0xDA - .byte 0x11, 0x00, 0xA0, 0xE3, 0xF0, 0xFB, 0xFF, 0xEB, 0x19, 0x00, 0x00, 0xEA, 0x4B, 0x2B, 0x00, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x16, 0x00, 0x00, 0x1A, 0x12, 0x00, 0xA0, 0xE3, 0xEA, 0xFB, 0xFF, 0xEB - .byte 0x13, 0x00, 0x00, 0xEA, 0xA8, 0xFE, 0xFF, 0xEB, 0x11, 0x00, 0x00, 0xEA, 0x0C, 0x20, 0x90, 0xE5 - .byte 0x01, 0x20, 0x82, 0xE2, 0x0C, 0x20, 0x80, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x0C, 0x00, 0x91, 0xE5 - .byte 0x01, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A - .byte 0x07, 0x00, 0x00, 0xEA, 0x02, 0x0C, 0x81, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0x60, 0xB3, 0xF4, 0xEB - .byte 0x03, 0x00, 0x00, 0xEA, 0x13, 0x00, 0xA0, 0xE3, 0xD7, 0xFB, 0xFF, 0xEB, 0x00, 0x00, 0x00, 0xEA - .byte 0x95, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x03, 0x00, 0x50, 0xE3, 0x1E, 0x00, 0x00, 0x1A - .byte 0x7C, 0x00, 0x9F, 0xE5, 0x02, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x43, 0xE2 - .byte 0x84, 0x31, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x50, 0xE1, 0x14, 0x00, 0x00, 0x0A, 0x77, 0x97, 0xF4, 0xEB, 0x50, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0x48, 0xB3, 0xF4, 0xEB - .byte 0x0D, 0x00, 0x00, 0xEA, 0x03, 0x20, 0xA0, 0xE3, 0x84, 0x21, 0x80, 0xE5, 0x00, 0x00, 0x91, 0xE5 - .byte 0x05, 0x10, 0x42, 0xE2, 0x02, 0x0C, 0x80, 0xE2, 0xD4, 0x05, 0xD0, 0xE1, 0x01, 0x00, 0x50, 0xE1 - .byte 0x05, 0x00, 0x00, 0x0A, 0xDF, 0xB2, 0xF4, 0xEB, 0x03, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x90, 0xE5 - .byte 0x2D, 0x92, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x10, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x10, 0x80, 0xBD, 0xE8, 0x48, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02301FAC +ov11_02301FAC: ; 0x02301FAC + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02302000 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDBoxActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02302000 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDBox + ldr r0, _02302000 ; =0x02324D48 + ldr r0, [r0] + ldr r0, [r0, #4] + bl ov11_023014AC + ldmia sp!, {r3, pc} + .align 2, 0 +_02302000: .word 0x02324D48 + arm_func_end ov11_02301FAC + + arm_func_start ov11_02302004 +ov11_02302004: ; 0x02302004 + stmdb sp!, {r3, lr} + ldr r0, _0230202C ; =0x02324D48 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230202C ; =0x02324D48 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230202C: .word 0x02324D48 + arm_func_end ov11_02302004 + + arm_func_start ov11_02302030 +ov11_02302030: ; 0x02302030 + stmdb sp!, {r4, lr} + ldr r1, _023025E4 ; =0x02324D48 + ldr r0, [r1] + ldr r2, [r0, #0x184] + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _023025DC +_0230204C: ; jump table + b _0230205C ; case 0 + b _02302068 ; case 1 + b _023025A4 ; case 2 + b _023025CC ; case 3 +_0230205C: + mov r1, #1 + str r1, [r0, #0x184] + b _023025DC +_02302068: + ldr r2, [r0] + cmp r2, #0x19 + addls pc, pc, r2, lsl #2 + b _02302550 +_02302078: ; jump table + b _023020E0 ; case 0 + b _02302550 ; case 1 + b _023022D4 ; case 2 + b _02302114 ; case 3 + b _0230228C ; case 4 + b _02302550 ; case 5 + b _02302550 ; case 6 + b _02302550 ; case 7 + b _02302550 ; case 8 + b _023021A4 ; case 9 + b _02302550 ; case 10 + b _023022E0 ; case 11 + b _02302550 ; case 12 + b _02302550 ; case 13 + b _0230228C ; case 14 + b _02302480 ; case 15 + b _023024C4 ; case 16 + b _023024EC ; case 17 + b _02302504 ; case 18 + b _0230232C ; case 19 + b _0230232C ; case 20 + b _02302390 ; case 21 + b _023023B8 ; case 22 + b _02302460 ; case 23 + b _02302378 ; case 24 + b _0230250C ; case 25 +_023020E0: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDBoxActive + cmp r0, #0 + bne _02302554 + mov r0, #3 + bl ov11_023014AC + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDBox + b _02302554 +_02302114: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + bl GetNormalMenuResult + cmp r0, #1 + beq _02302170 + cmp r0, #4 + beq _0230213C + cmp r0, #5 + beq _02302170 + b _02302554 +_0230213C: + ldr r0, _023025E4 ; =0x02324D48 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] + bl ov11_02302618 + ldr r0, _023025E4 ; =0x02324D48 + mov r3, #0 + ldr r2, [r0] + mov r1, #0xf + str r3, [r2, #0xc] + ldr r0, [r0] + str r1, [r0] + b _02302554 +_02302170: + bl ov11_02302618 + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02302198 + mov r0, #0xa + bl ov11_023014AC + b _02302554 +_02302198: + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023021A4: + bl ov11_02306C9C + cmp r0, #3 + beq _023021D4 + cmp r0, #4 + bne _02302554 + bl ov11_02306C64 + ldr r1, _023025E4 ; =0x02324D48 + ldr r1, [r1] + str r0, [r1, #0x248] + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023021D4: + bl ov11_02306C64 + ldr r1, _023025E4 ; =0x02324D48 + ldr r2, [r1] + str r0, [r2, #0x248] + ldr r2, [r1] + ldr r0, [r2, #0x248] + cmp r0, #0 + bne _0230221C + add r0, r2, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02302210 + mov r0, #0xa + bl ov11_023014AC + b _02302554 +_02302210: + mov r0, #7 + bl ov11_023014AC + b _02302554 +_0230221C: + mov r0, #1 + str r0, [r2, #0x20] + ldr r2, [r1] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _023025E4 ; =0x02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a + bl SpecialStrcpy + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl sub_020544C8 + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x10 + str r2, [r1, #0xc] + bl ov11_023014AC + b _02302554 +_0230228C: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + bl GetNormalMenuResult + cmp r0, #1 + beq _023022C4 + cmp r0, #4 + beq _023022B4 + cmp r0, #5 + beq _023022C4 + b _02302554 +_023022B4: + bl ov11_02302618 + mov r0, #8 + bl ov11_023014AC + b _02302554 +_023022C4: + bl ov11_02302618 + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023022D4: + bl ov11_0230D71C + mov r0, #3 + b _02302558 +_023022E0: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDBoxActive + cmp r0, #0 + bne _02302554 + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDBox + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #0x1a + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _02302554 +_0230232C: + bl GetKeyboardStatus + cmp r0, #3 + bne _02302554 + bl GetKeyboardStringResult + ldr r1, _023025E4 ; =0x02324D48 + mov r4, r0 + ldr r0, [r1] + mov r1, r4 + add r0, r0, #0x26 + mov r2, #0x10 + bl StrncpySimpleNoPadSafe + ldr r0, _023025E4 ; =0x02324D48 + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x46 + bl StrcpySimple + mov r0, #0x18 + bl ov11_023014AC + b _02302554 +_02302378: + bl sub_02037468 + cmp r0, #0 + beq _02302554 + mov r0, #0x15 + bl ov11_023014AC + b _02302554 +_02302390: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r0, [r1] + ldr r0, [r0, #0xc] + cmp r0, #0xa + ble _02302554 + mov r0, #0x16 + bl ov11_023014AC + b _02302554 +_023023B8: + bl sub_0203931C + cmp r0, #0 + bne _0230243C + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #1 + ldr r1, [r0] + str r2, [r1, #8] + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x46 + bl StrcpySimple + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #0xa + ldr r1, [r0] + ldr r0, [r1, #0x248] + add r1, r1, #0x6e + add r0, r0, #0x3a + add r1, r1, #0x100 + bl StrncpySimple + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + bl sub_02065BC8 + ldr r0, _023025E4 ; =0x02324D48 + mov r1, #0xf + ldr r0, [r0] + add r0, r0, #0x46 + bl sub_02065C08 + mov r0, #0x17 + bl ov11_023014AC + b _02302554 +_0230243C: + cmp r0, #1 + bne _02302554 + ldr r0, _023025E4 ; =0x02324D48 + mov r2, #0x14 + ldr r1, [r0] + mov r0, #0x17 + str r2, [r1, #8] + bl ov11_023014AC + b _02302554 +_02302460: + bl sub_02039218 + cmp r0, #0 + beq _02302554 + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_023014AC + b _02302554 +_02302480: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #1 + cmpne r0, #2 + beq _02302554 + cmp r0, #3 + bne _02302554 + ldr r0, [r1, #4] + bl ov11_023014AC + ldr r0, _023025E4 ; =0x02324D48 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0xc] + b _02302554 +_023024C4: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r0, [r1] + ldr r0, [r0, #0xc] + cmp r0, #0xa + ble _02302554 + mov r0, #0x11 + bl ov11_023014AC + b _02302554 +_023024EC: + bl ov11_0230D220 + cmp r0, #0 + bne _02302554 + mov r0, #0x12 + bl ov11_023014AC + b _02302554 +_02302504: + bl ov11_02301FAC + b _02302554 +_0230250C: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #1 + beq _02302534 + cmp r0, #0xa + beq _02302544 + b _02302554 +_02302534: + add r0, r1, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _02302554 +_02302544: + mov r0, #0x13 + bl ov11_023014AC + b _02302554 +_02302550: + bl ov11_02301FAC +_02302554: + mov r0, #0 +_02302558: + cmp r0, #3 + bne _023025DC + ldr r0, _023025E4 ; =0x02324D48 + mov r3, #2 + ldr r2, [r0] + sub r1, r3, #4 + str r3, [r2, #0x184] + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + cmp r0, r1 + beq _023025DC + bl sub_0202836C + ldr r0, _023025E4 ; =0x02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _023025DC +_023025A4: + mov r2, #3 + str r2, [r0, #0x184] + ldr r0, [r1] + sub r1, r2, #5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + cmp r0, r1 + beq _023025DC + bl FreeDBox + b _023025DC +_023025CC: + ldr r0, [r0, #0x20] + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r4, pc} +_023025DC: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_023025E4: .word 0x02324D48 + arm_func_end ov11_02302030 arm_func_start ov11_023025E8 ov11_023025E8: ; 0x023025E8 @@ -43838,38 +45388,143 @@ ov11_02302618: ; 0x02302618 .align 2, 0 _02302664: .word 0x02324D48 arm_func_end ov11_02302618 -_02302668: - .byte 0x08, 0x40, 0x2D, 0xE9, 0xD0, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0x92, 0xE5, 0x0C, 0x00, 0x51, 0xE3, 0x01, 0xF1, 0x8F, 0x90 - .byte 0x52, 0x00, 0x00, 0xEA, 0x51, 0x00, 0x00, 0xEA, 0x2D, 0x00, 0x00, 0xEA, 0x6A, 0x00, 0x00, 0xEA - .byte 0x4E, 0x00, 0x00, 0xEA, 0x4D, 0x00, 0x00, 0xEA, 0x4C, 0x00, 0x00, 0xEA, 0x4B, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x00, 0xEA, 0x28, 0x00, 0x00, 0xEA, 0x48, 0x00, 0x00, 0xEA, 0x47, 0x00, 0x00, 0xEA - .byte 0x46, 0x00, 0x00, 0xEA, 0x34, 0x00, 0x00, 0xEA, 0x36, 0x0D, 0x00, 0xEB, 0x01, 0x00, 0x50, 0xE3 - .byte 0x5D, 0x00, 0x00, 0x0A, 0x78, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xFE, 0x00, 0x80, 0xE2 - .byte 0x1A, 0x0D, 0x00, 0xEB, 0x03, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x50, 0xE3 - .byte 0x0D, 0x00, 0x00, 0x0A, 0x54, 0x00, 0x00, 0xEA, 0x54, 0x11, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x91, 0xE5, 0x4C, 0x21, 0x9F, 0xE5, 0x20, 0x30, 0x80, 0xE5, 0x00, 0xC0, 0x91, 0xE5 - .byte 0x04, 0x00, 0xA0, 0xE3, 0xFE, 0x3F, 0xDC, 0xE1, 0x44, 0x30, 0x8C, 0xE5, 0x00, 0x10, 0x91, 0xE5 - .byte 0xF8, 0x20, 0x81, 0xE5, 0x4D, 0x00, 0x00, 0xEB, 0x47, 0x00, 0x00, 0xEA, 0x20, 0x01, 0x9F, 0xE5 - .byte 0x02, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x1C, 0x21, 0x9F, 0xE5, 0x20, 0x30, 0x81, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0xF8, 0x20, 0x81, 0xE5, 0x43, 0x00, 0x00, 0xEB - .byte 0x3D, 0x00, 0x00, 0xEA, 0x03, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0xDC, 0x0F, 0xD2, 0xE1 - .byte 0x8A, 0xB2, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x37, 0x00, 0x00, 0x1A, 0xE0, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0xDC, 0x0F, 0xD0, 0xE1, 0x0D, 0xB3, 0xF4, 0xEB, 0xD0, 0x00, 0x9F, 0xE5 - .byte 0x0D, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0xDC, 0x0F, 0xD0, 0xE1, 0xCE, 0xB2, 0xF4, 0xEB, 0x2B, 0x00, 0x00, 0xEA, 0x0C, 0x10, 0x92, 0xE5 - .byte 0x01, 0x10, 0x81, 0xE2, 0x0C, 0x10, 0x82, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x91, 0xE5 - .byte 0x01, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x50, 0x13, 0x23, 0x00, 0x00, 0x0A, 0x03, 0x00, 0x50, 0xE3 - .byte 0x21, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x91, 0xE5, 0x24, 0x00, 0x00, 0xEB, 0x80, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x0C, 0x10, 0x80, 0xE5, 0x1A, 0x00, 0x00, 0xEA - .byte 0xDC, 0x0F, 0xD2, 0xE1, 0x69, 0xB2, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x16, 0x00, 0x00, 0x1A - .byte 0x5C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xDC, 0x0F, 0xD0, 0xE1, 0xEC, 0xB2, 0xF4, 0xEB - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0xDC, 0x0F, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x50, 0xE1, 0x08, 0x00, 0x00, 0x0A, 0xAD, 0xB2, 0xF4, 0xEB, 0x30, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0xDC, 0x0F, 0xD0, 0xE1, 0x4A, 0xB2, 0xF4, 0xEB, 0x20, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0xFC, 0x10, 0xC0, 0xE5, 0x10, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x04, 0x00, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x4C, 0x4D, 0x32, 0x02, 0x76, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00 + + arm_func_start ov11_02302668 +ov11_02302668: ; 0x02302668 + stmdb sp!, {r3, lr} + ldr r0, _02302844 ; =0x02324D4C + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _023027D0 +_02302684: ; jump table + b _023027D0 ; case 0 + b _02302744 ; case 1 + b _0230283C ; case 2 + b _023027D0 ; case 3 + b _023027D0 ; case 4 + b _023027D0 ; case 5 + b _023027D0 ; case 6 + b _023026B8 ; case 7 + b _0230274C ; case 8 + b _023027D0 ; case 9 + b _023027D0 ; case 10 + b _023027D0 ; case 11 + b _0230278C ; case 12 +_023026B8: + bl ov11_02305B98 + cmp r0, #1 + beq _0230283C + ldr r0, _02302844 ; =0x02324D4C + ldr r0, [r0] + add r0, r0, #0xfe + bl ov11_02305B40 + cmp r0, #3 + beq _023026E8 + cmp r0, #5 + beq _0230271C + b _0230283C +_023026E8: + ldr r1, _02302844 ; =0x02324D4C + mov r3, #1 + ldr r0, [r1] + ldr r2, _02302848 ; =0x00000276 + str r3, [r0, #0x20] + ldr ip, [r1] + mov r0, #4 + ldrsh r3, [ip, #0xfe] + str r3, [ip, #0x44] + ldr r1, [r1] + str r2, [r1, #0xf8] + bl ov11_02302850 + b _0230283C +_0230271C: + ldr r0, _02302844 ; =0x02324D4C + mov r3, #2 + ldr r1, [r0] + ldr r2, _0230284C ; =0x00000287 + str r3, [r1, #0x20] + ldr r1, [r0] + mov r0, #0 + str r2, [r1, #0xf8] + bl ov11_02302850 + b _0230283C +_02302744: + mov r0, #3 + ldmia sp!, {r3, pc} +_0230274C: + ldrsb r0, [r2, #0xfc] + bl IsDBoxActive + cmp r0, #0 + bne _0230283C + ldr r0, _02302844 ; =0x02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl ShowDBox + ldr r0, _02302844 ; =0x02324D4C + mov r2, #0xd + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl sub_0202F2C4 + b _0230283C +_0230278C: + ldr r1, [r2, #0xc] + add r1, r1, #1 + str r1, [r2, #0xc] + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #1 + cmpne r0, #2 + beq _0230283C + cmp r0, #3 + bne _0230283C + ldr r0, [r1, #4] + bl ov11_02302850 + ldr r0, _02302844 ; =0x02324D4C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0xc] + b _0230283C +_023027D0: + ldrsb r0, [r2, #0xfc] + bl IsDBoxActive + cmp r0, #0 + bne _0230283C + ldr r0, _02302844 ; =0x02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl ShowDBox + ldr r0, _02302844 ; =0x02324D4C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + cmp r0, r1 + beq _0230282C + bl sub_0202F2C4 + ldr r0, _02302844 ; =0x02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl FreeDBox + ldr r0, _02302844 ; =0x02324D4C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xfc] +_0230282C: + ldr r0, _02302844 ; =0x02324D4C + ldr r0, [r0] + ldr r0, [r0, #4] + bl ov11_02302850 +_0230283C: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02302844: .word 0x02324D4C +_02302848: .word 0x00000276 +_0230284C: .word 0x00000287 + arm_func_end ov11_02302668 arm_func_start ov11_02302850 ov11_02302850: ; 0x02302850 @@ -44167,21 +45822,65 @@ _02302C2C: ldmia sp!, {pc} .align 2, 0 _02302C34: .word 0x02324D4C -_02302C38: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x4D, 0xF9, 0xF3, 0xEB - .byte 0x08, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8 -_02302C60: .word 0x02324D4C arm_func_end ov11_02302A48 -_02302C64: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x6C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x28, 0x00, 0x91, 0xE5, 0x03, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x14, 0x00, 0x00, 0xEA - .byte 0x02, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA - .byte 0x01, 0x00, 0xA0, 0xE3, 0x28, 0x00, 0x81, 0xE5, 0x0D, 0x00, 0x00, 0xEA, 0x71, 0xFE, 0xFF, 0xEB - .byte 0x03, 0x00, 0x50, 0xE3, 0x30, 0x00, 0x9F, 0x05, 0x02, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x90, 0x05 - .byte 0x28, 0x10, 0x80, 0x05, 0x06, 0x00, 0x00, 0xEA, 0x03, 0x00, 0xA0, 0xE3, 0x28, 0x00, 0x81, 0xE5 - .byte 0x03, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x91, 0xE5, 0x6F, 0x90, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x4C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02302C38 +ov11_02302C38: ; 0x02302C38 + stmdb sp!, {r3, lr} + ldr r0, _02302C60 ; =0x02324D4C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02302C60 ; =0x02324D4C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02302C60: .word 0x02324D4C + arm_func_end ov11_02302C38 + + arm_func_start ov11_02302C64 +ov11_02302C64: ; 0x02302C64 + stmdb sp!, {r3, lr} + ldr r0, _02302CDC ; =0x02324D4C + ldr r1, [r0] + ldr r0, [r1, #0x28] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02302CD4 +_02302C80: ; jump table + b _02302C90 ; case 0 + b _02302C9C ; case 1 + b _02302CB8 ; case 2 + b _02302CC4 ; case 3 +_02302C90: + mov r0, #1 + str r0, [r1, #0x28] + b _02302CD4 +_02302C9C: + bl ov11_02302668 + cmp r0, #3 + ldreq r0, _02302CDC ; =0x02324D4C + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #0x28] + b _02302CD4 +_02302CB8: + mov r0, #3 + str r0, [r1, #0x28] + b _02302CD4 +_02302CC4: + ldr r0, [r1, #0x20] + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r3, pc} +_02302CD4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02302CDC: .word 0x02324D4C + arm_func_end ov11_02302C64 arm_func_start ov11_02302CE0 ov11_02302CE0: ; 0x02302CE0 @@ -44230,80 +45929,325 @@ ov11_02302CE0: ; 0x02302CE0 _02302D84: .word 0x02322740 _02302D88: .word 0x02324D4C arm_func_end ov11_02302CE0 -_02302D8C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x1C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08 - .byte 0xF8, 0xF8, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x4C, 0x4D, 0x32, 0x02, 0xF8, 0x43, 0x2D, 0xE9, 0x20, 0x94, 0x9F, 0xE5 - .byte 0x04, 0x30, 0x99, 0xE5, 0x00, 0x00, 0x93, 0xE5, 0x0D, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90 - .byte 0x01, 0x01, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA, 0x1B, 0x00, 0x00, 0xEA, 0x24, 0x00, 0x00, 0xEA - .byte 0x30, 0x00, 0x00, 0xEA, 0x58, 0x00, 0x00, 0xEA, 0x81, 0x00, 0x00, 0xEA, 0x8A, 0x00, 0x00, 0xEA - .byte 0x96, 0x00, 0x00, 0xEA, 0xA3, 0x00, 0x00, 0xEA, 0xBD, 0x00, 0x00, 0xEA, 0xC6, 0x00, 0x00, 0xEA - .byte 0xCD, 0x00, 0x00, 0xEA, 0xE6, 0x00, 0x00, 0xEA, 0xEC, 0x00, 0x00, 0xEA, 0x3C, 0x00, 0x83, 0xE2 - .byte 0x74, 0x01, 0x83, 0xE5, 0x04, 0x10, 0x99, 0xE5, 0x01, 0x00, 0xE0, 0xE3, 0xD9, 0x10, 0xD1, 0xE1 - .byte 0x00, 0x00, 0x51, 0xE1, 0xEC, 0x00, 0x00, 0x1A, 0x00, 0x00, 0xA0, 0xE3, 0x9F, 0xB0, 0xF4, 0xEB - .byte 0x09, 0x10, 0xA0, 0xE1, 0x04, 0x30, 0x91, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x09, 0x00, 0xC3, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x00, 0x20, 0x80, 0xE5, 0xE3, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1 - .byte 0x90, 0x23, 0x9F, 0xE5, 0x10, 0x10, 0xA0, 0xE3, 0x00, 0x30, 0xA0, 0xE3, 0xD4, 0xB0, 0xF4, 0xEB - .byte 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5 - .byte 0xD9, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1, 0xC0, 0xB0, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0xD5, 0x00, 0x00, 0x1A, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0xD9, 0x00, 0xD0, 0xE1 - .byte 0x43, 0xB1, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0x03, 0x10, 0xA0, 0xE3 - .byte 0x00, 0x10, 0x80, 0xE5, 0xCC, 0x00, 0x00, 0xEA, 0x3C, 0x00, 0x83, 0xE2, 0x00, 0x70, 0xA0, 0xE3 - .byte 0x34, 0x53, 0x9F, 0xE5, 0x74, 0x01, 0x83, 0xE5, 0x01, 0x6C, 0xA0, 0xE3, 0x07, 0x40, 0xA0, 0xE1 - .byte 0x04, 0x30, 0x99, 0xE5, 0x87, 0x01, 0xA0, 0xE1, 0x4F, 0x1F, 0x83, 0xE2, 0x00, 0x10, 0x8D, 0xE5 - .byte 0xB0, 0x20, 0x95, 0xE1, 0x07, 0x83, 0x87, 0xE0, 0x63, 0x0F, 0x83, 0xE2, 0x06, 0x10, 0xA0, 0xE1 - .byte 0x04, 0x30, 0xA0, 0xE1, 0x08, 0x01, 0x80, 0xE0, 0xB2, 0x81, 0xF4, 0xEB, 0x87, 0x11, 0x85, 0xE0 - .byte 0x04, 0x00, 0x99, 0xE5, 0x01, 0x70, 0x87, 0xE2, 0x04, 0x10, 0x91, 0xE5, 0x08, 0x01, 0x80, 0xE0 - .byte 0x8C, 0x12, 0x80, 0xE5, 0x03, 0x00, 0x57, 0xE3, 0xEC, 0xFF, 0xFF, 0xBA, 0x03, 0x10, 0xA0, 0xE3 - .byte 0xCC, 0x02, 0x9F, 0xE5, 0x00, 0x10, 0x8D, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0xCC, 0x02, 0x9F, 0xE5 - .byte 0xCC, 0x12, 0x9F, 0xE5, 0x63, 0x3F, 0x82, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x9E, 0xA0, 0xF4, 0xEB - .byte 0xAC, 0x12, 0x9F, 0xE5, 0x04, 0x20, 0xA0, 0xE3, 0x04, 0x30, 0x91, 0xE5, 0x0A, 0x00, 0xC3, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x00, 0x20, 0x80, 0xE5, 0xA3, 0x00, 0x00, 0xEA, 0xDA, 0x00, 0xD3, 0xE1 - .byte 0x66, 0xA1, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x9F, 0x00, 0x00, 0x1A, 0x09, 0x00, 0xA0, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0xDA, 0x00, 0xD0, 0xE1, 0x83, 0xA1, 0xF4, 0xEB, 0x09, 0x10, 0xA0, 0xE1 - .byte 0x04, 0x20, 0x91, 0xE5, 0x04, 0x00, 0x82, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0xDA, 0x00, 0xD0, 0xE1 - .byte 0x4F, 0xA1, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0x90, 0xE5, 0x04, 0x00, 0x91, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A - .byte 0x02, 0x00, 0x50, 0xE3, 0x0F, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD1, 0xE1, 0x65, 0xB0, 0xF4, 0xEB - .byte 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0x0B, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5 - .byte 0x85, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD1, 0xE1, 0x5E, 0xB0, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x0C, 0x00, 0x90, 0xE5, 0x3F, 0xFF, 0xFF, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0xF8, 0x83, 0xBD, 0xE8, 0x05, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0x79, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1, 0xF8, 0x21, 0x9F, 0xE5, 0x4F, 0x3F, 0x83, 0xE2 - .byte 0x10, 0x10, 0xA0, 0xE3, 0x6A, 0xB0, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0x06, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x6F, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1 - .byte 0x56, 0xB0, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x6B, 0x00, 0x00, 0x1A, 0x09, 0x00, 0xA0, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0xD9, 0x00, 0xD0, 0xE1, 0xD9, 0xB0, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0x07, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x62, 0x00, 0x00, 0xEA - .byte 0xA4, 0x01, 0x9F, 0xE5, 0x02, 0x40, 0xA0, 0xE3, 0xA0, 0x11, 0x9F, 0xE5, 0xA0, 0x31, 0x9F, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x40, 0x8D, 0xE5, 0x1F, 0xA0, 0xF4, 0xEB, 0x09, 0x10, 0xA0, 0xE1 - .byte 0x04, 0x30, 0x91, 0xE5, 0x08, 0x20, 0xA0, 0xE3, 0x0A, 0x00, 0xC3, 0xE5, 0x04, 0x00, 0x91, 0xE5 - .byte 0x00, 0x20, 0x80, 0xE5, 0x54, 0x00, 0x00, 0xEA, 0xDA, 0x00, 0xD3, 0xE1, 0x17, 0xA1, 0xF4, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x50, 0x00, 0x00, 0x1A, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0xDA, 0x00, 0xD0, 0xE1, 0x34, 0xA1, 0xF4, 0xEB, 0x09, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0x91, 0xE5 - .byte 0x04, 0x00, 0x82, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0xDA, 0x00, 0xD0, 0xE1, 0x00, 0xA1, 0xF4, 0xEB - .byte 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0x90, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x03, 0x00, 0x50, 0xE3 - .byte 0x01, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0xEA, 0x09, 0x00, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x81, 0xE5, 0x3C, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0x39, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1, 0x86, 0x1F, 0xA0, 0xE3, 0xB2, 0x20, 0x81, 0xE2 - .byte 0x4F, 0x3F, 0x83, 0xE2, 0x2A, 0xB0, 0xF4, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0x0A, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x2F, 0x00, 0x00, 0xEA, 0xD9, 0x00, 0xD3, 0xE1 - .byte 0x16, 0xB0, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x09, 0x00, 0xA0, 0x01, 0x04, 0x00, 0x90, 0x05 - .byte 0x0D, 0x10, 0xA0, 0x03, 0x00, 0x10, 0x80, 0x05, 0x27, 0x00, 0x00, 0xEA, 0x10, 0x00, 0x83, 0xE2 - .byte 0xF5, 0x80, 0xF5, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0x90, 0xE5, 0x01, 0x30, 0xA0, 0xE3 - .byte 0x1C, 0x30, 0x81, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0x0C, 0x10, 0x92, 0xE5, 0xB0, 0x00, 0xD1, 0xE1 - .byte 0xB0, 0x02, 0xC2, 0xE1, 0xB2, 0x00, 0xD1, 0xE1, 0xB2, 0x02, 0xC2, 0xE1, 0xB4, 0x00, 0xD1, 0xE1 - .byte 0x00, 0x10, 0xA0, 0xE3, 0xB4, 0x02, 0xC2, 0xE1, 0x08, 0x00, 0xD2, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x08, 0x30, 0xA0, 0x13, 0x10, 0x00, 0x82, 0xE2, 0x06, 0x20, 0x83, 0xE3, 0xA9, 0xE8, 0xF4, 0xEB - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x0C, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x10, 0x80, 0xE5 - .byte 0x0D, 0x00, 0x00, 0xEA, 0xE3, 0xE8, 0xF4, 0xEB, 0x01, 0x00, 0x50, 0xE3, 0x0A, 0x00, 0x00, 0x1A - .byte 0x87, 0xEF, 0xF4, 0xEB, 0x2B, 0x8F, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0xF8, 0x83, 0xBD, 0xE8 - .byte 0x28, 0x8F, 0xFF, 0xEB, 0x09, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0xD9, 0x00, 0xD0, 0xE1 - .byte 0xDC, 0xAF, 0xF4, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0xF8, 0x83, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3 - .byte 0xF8, 0x83, 0xBD, 0xE8, 0x4C, 0x4D, 0x32, 0x02, 0xC5, 0x02, 0x00, 0x00, 0x80, 0x27, 0x32, 0x02 - .byte 0x50, 0x27, 0x32, 0x02, 0x11, 0x00, 0x30, 0x00, 0xC9, 0x02, 0x00, 0x00, 0x60, 0x27, 0x32, 0x02 - .byte 0x13, 0x00, 0x30, 0x00, 0x98, 0x27, 0x32, 0x02 + + arm_func_start ov11_02302D8C +ov11_02302D8C: ; 0x02302D8C + stmdb sp!, {r3, lr} + ldr r0, _02302DB4 ; =0x02324D4C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02302DB4 ; =0x02324D4C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02302DB4: .word 0x02324D4C + arm_func_end ov11_02302D8C + + arm_func_start ov11_02302DB8 +ov11_02302DB8: ; 0x02302DB8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr sb, _023031E4 ; =0x02324D4C + ldr r3, [sb, #4] + ldr r0, [r3] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _023031DC +_02302DD4: ; jump table + b _02302E0C ; case 0 + b _02302E4C ; case 1 + b _02302E74 ; case 2 + b _02302EA8 ; case 3 + b _02302F4C ; case 4 + b _02302FF4 ; case 5 + b _0230301C ; case 6 + b _02303050 ; case 7 + b _02303088 ; case 8 + b _023030F4 ; case 9 + b _0230311C ; case 10 + b _0230313C ; case 11 + b _023031A4 ; case 12 + b _023031C0 ; case 13 +_02302E0C: + add r0, r3, #0x3c + str r0, [r3, #0x174] + ldr r1, [sb, #4] + mvn r0, #1 + ldrsb r1, [r1, #9] + cmp r1, r0 + bne _023031DC + mov r0, #0 + bl CreateDBox + mov r1, sb + ldr r3, [r1, #4] + mov r2, #1 + strb r0, [r3, #9] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02302E4C: + ldrsb r0, [r3, #9] + ldr r2, _023031E8 ; =0x000002C5 + mov r1, #0x10 + mov r3, #0 + bl ShowMessageInDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0] + b _023031DC +_02302E74: + ldrsb r0, [r3, #9] + bl IsDBoxActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl ShowDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #3 + str r1, [r0] + b _023031DC +_02302EA8: + add r0, r3, #0x3c + mov r7, #0 + ldr r5, _023031EC ; =0x02322780 + str r0, [r3, #0x174] + mov r6, #0x100 + mov r4, r7 +_02302EC0: + ldr r3, [sb, #4] + mov r0, r7, lsl #3 + add r1, r3, #0x13c + str r1, [sp] + ldrh r2, [r5, r0] + add r8, r7, r7, lsl #6 + add r0, r3, #0x18c + mov r1, r6 + mov r3, r4 + add r0, r0, r8, lsl #2 + bl PreprocessStringFromMessageId + add r1, r5, r7, lsl #3 + ldr r0, [sb, #4] + add r7, r7, #1 + ldr r1, [r1, #4] + add r0, r0, r8, lsl #2 + str r1, [r0, #0x28c] + cmp r7, #3 + blt _02302EC0 + mov r1, #3 + ldr r0, _023031E4 ; =0x02324D4C + str r1, [sp] + ldr r2, [r0, #4] + ldr r0, _023031F0 ; =0x02322750 + ldr r1, _023031F4 ; =0x00300011 + add r3, r2, #0x18c + mov r2, #0 + bl sub_0202B1AC + ldr r1, _023031E4 ; =0x02324D4C + mov r2, #4 + ldr r3, [r1, #4] + strb r0, [r3, #0xa] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02302F4C: + ldrsb r0, [r3, #0xa] + bl IsNormalMenuActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #0xa] + bl GetNormalMenuResult + mov r1, sb + ldr r2, [r1, #4] + str r0, [r2, #4] + ldr r0, [r1, #4] + ldrsb r0, [r0, #0xa] + bl FreeNormalMenu + mov r0, sb + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #0 + beq _02302FA8 + cmp r0, #1 + beq _02302FC4 + cmp r0, #2 + b _02302FE8 +_02302FA8: + ldrsb r0, [r1, #9] + bl FreeDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #0xb + str r1, [r0] + b _023031DC +_02302FC4: + ldrsb r0, [r1, #9] + bl FreeDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #1 + ldr r0, [r0, #0xc] + bl ov11_02302CE0 + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02302FE8: + mov r0, #5 + str r0, [r1] + b _023031DC +_02302FF4: + ldrsb r0, [r3, #9] + ldr r2, _023031F8 ; =0x000002C9 + add r3, r3, #0x13c + mov r1, #0x10 + bl ShowMessageInDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #6 + str r1, [r0] + b _023031DC +_0230301C: + ldrsb r0, [r3, #9] + bl IsDBoxActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl ShowDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #7 + str r1, [r0] + b _023031DC +_02303050: + ldr r0, _023031FC ; =0x02322760 + mov r4, #2 + ldr r1, _02303200 ; =0x00300013 + ldr r3, _02303204 ; =0x02322798 + mov r2, #0 + str r4, [sp] + bl CreateNormalMenu + mov r1, sb + ldr r3, [r1, #4] + mov r2, #8 + strb r0, [r3, #0xa] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02303088: + ldrsb r0, [r3, #0xa] + bl IsNormalMenuActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #0xa] + bl GetNormalMenuResult + mov r1, sb + ldr r2, [r1, #4] + str r0, [r2, #4] + ldr r0, [r1, #4] + ldrsb r0, [r0, #0xa] + bl FreeNormalMenu + mov r0, sb + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #3 + beq _023030DC + cmp r0, #4 + b _023030E8 +_023030DC: + mov r0, #9 + str r0, [r1] + b _023031DC +_023030E8: + mov r0, #1 + str r0, [r1] + b _023031DC +_023030F4: + ldrsb r0, [r3, #9] + mov r1, #0x218 + add r2, r1, #0xb2 + add r3, r3, #0x13c + bl ShowMessageInDBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #0xa + str r1, [r0] + b _023031DC +_0230311C: + ldrsb r0, [r3, #9] + bl IsDBoxActive + cmp r0, #0 + moveq r0, sb + ldreq r0, [r0, #4] + moveq r1, #0xd + streq r1, [r0] + b _023031DC +_0230313C: + add r0, r3, #0x10 + bl sub_0206351C + mov r0, sb + ldr r1, [r0, #4] + mov r3, #1 + str r3, [r1, #0x1c] + ldr r2, [r0, #4] + ldr r1, [r2, #0xc] + ldrh r0, [r1] + strh r0, [r2, #0x20] + ldrh r0, [r1, #2] + strh r0, [r2, #0x22] + ldrh r0, [r1, #4] + mov r1, #0 + strh r0, [r2, #0x24] + ldrb r0, [r2, #8] + cmp r0, #0 + movne r3, #8 + add r0, r2, #0x10 + orr r2, r3, #6 + bl sub_0203D438 + ldr r0, _023031E4 ; =0x02324D4C + mov r1, #0xc + ldr r0, [r0, #4] + str r1, [r0] + b _023031DC +_023031A4: + bl sub_0203D538 + cmp r0, #1 + bne _023031DC + bl sub_0203EFD4 + bl ov11_022E6E68 + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023031C0: + bl ov11_022E6E68 + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl FreeDBox + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023031DC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023031E4: .word 0x02324D4C +_023031E8: .word 0x000002C5 +_023031EC: .word 0x02322780 +_023031F0: .word 0x02322750 +_023031F4: .word 0x00300011 +_023031F8: .word 0x000002C9 +_023031FC: .word 0x02322760 +_02303200: .word 0x00300013 +_02303204: .word 0x02322798 + arm_func_end ov11_02302DB8 arm_func_start ov11_02303208 ov11_02303208: ; 0x02303208 @@ -44441,36 +46385,132 @@ _023033F0: .word 0x02324D54 _023033F4: .word 0x0000C402 _023033F8: .word 0x023227B0 arm_func_end ov11_023032C4 -_023033FC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0xB4, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0x92, 0xE5, 0x0C, 0x00, 0x51, 0xE3 - .byte 0x01, 0xF1, 0x8F, 0x90, 0x47, 0x00, 0x00, 0xEA, 0x0B, 0x00, 0x00, 0xEA, 0x45, 0x00, 0x00, 0xEA - .byte 0x1E, 0x00, 0x00, 0xEA, 0x62, 0x00, 0x00, 0xEA, 0x42, 0x00, 0x00, 0xEA, 0x41, 0x00, 0x00, 0xEA - .byte 0x40, 0x00, 0x00, 0xEA, 0x3F, 0x00, 0x00, 0xEA, 0x1A, 0x00, 0x00, 0xEA, 0x3D, 0x00, 0x00, 0xEA - .byte 0x3C, 0x00, 0x00, 0xEA, 0x3B, 0x00, 0x00, 0xEA, 0x29, 0x00, 0x00, 0xEA, 0x03, 0x0B, 0x82, 0xE2 - .byte 0xDC, 0x07, 0xD0, 0xE1, 0x18, 0xA2, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x54, 0x00, 0x00, 0x1A - .byte 0x54, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDC, 0x07, 0xD0, 0xE1 - .byte 0x26, 0xA2, 0xF4, 0xEB, 0x40, 0x11, 0x9F, 0xE5, 0x01, 0x20, 0x80, 0xE2, 0x00, 0x00, 0x91, 0xE5 - .byte 0x18, 0x20, 0x80, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDC, 0x07, 0xD0, 0xE1 - .byte 0xEB, 0xA1, 0xF4, 0xEB, 0x02, 0x00, 0xA0, 0xE3, 0x48, 0x00, 0x00, 0xEB, 0x44, 0x00, 0x00, 0xEA - .byte 0x03, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x03, 0x0B, 0x82, 0xE2, 0xDD, 0x07, 0xD0, 0xE1 - .byte 0x32, 0xAF, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x3D, 0x00, 0x00, 0x1A, 0xF8, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDD, 0x07, 0xD0, 0xE1, 0xB4, 0xAF, 0xF4, 0xEB - .byte 0xE4, 0x00, 0x9F, 0xE5, 0x0D, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x81, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDD, 0x07, 0xD0, 0xE1, 0x74, 0xAF, 0xF4, 0xEB - .byte 0x2F, 0x00, 0x00, 0xEA, 0x14, 0x10, 0x92, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x14, 0x10, 0x82, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x14, 0x00, 0x91, 0xE5, 0x01, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x50, 0x13 - .byte 0x27, 0x00, 0x00, 0x0A, 0x03, 0x00, 0x50, 0xE3, 0x25, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x91, 0xE5 - .byte 0x26, 0x00, 0x00, 0xEB, 0x90, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5 - .byte 0x14, 0x10, 0x80, 0xE5, 0x1E, 0x00, 0x00, 0xEA, 0x03, 0x0B, 0x82, 0xE2, 0xDD, 0x07, 0xD0, 0xE1 - .byte 0x0E, 0xAF, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x19, 0x00, 0x00, 0x1A, 0x68, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDD, 0x07, 0xD0, 0xE1, 0x90, 0xAF, 0xF4, 0xEB - .byte 0x54, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2 - .byte 0xDD, 0x07, 0xD0, 0xE1, 0x01, 0x00, 0x50, 0xE1, 0x09, 0x00, 0x00, 0x0A, 0x50, 0xAF, 0xF4, 0xEB - .byte 0x34, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x03, 0x0B, 0x80, 0xE2, 0xDD, 0x07, 0xD0, 0xE1 - .byte 0xEC, 0xAE, 0xF4, 0xEB, 0x20, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5 - .byte 0x7D, 0x1C, 0xC0, 0xE5, 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5 - .byte 0x02, 0x00, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x54, 0x4D, 0x32, 0x02 + + arm_func_start ov11_023033FC +ov11_023033FC: ; 0x023033FC + stmdb sp!, {r3, lr} + ldr r0, _023035BC ; =0x02324D54 + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _02303538 +_02303418: ; jump table + b _0230344C ; case 0 + b _02303538 ; case 1 + b _023034A0 ; case 2 + b _023035B4 ; case 3 + b _02303538 ; case 4 + b _02303538 ; case 5 + b _02303538 ; case 6 + b _02303538 ; case 7 + b _023034A8 ; case 8 + b _02303538 ; case 9 + b _02303538 ; case 10 + b _02303538 ; case 11 + b _023034F4 ; case 12 +_0230344C: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7c] + bl sub_0202BCBC + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =0x02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7c] + bl GetAdvancedMenuResult + ldr r1, _023035BC ; =0x02324D54 + add r2, r0, #1 + ldr r0, [r1] + str r2, [r0, #0x18] + ldr r0, [r1] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7c] + bl FreeAdvancedMenu + mov r0, #2 + bl ov11_023035C0 + b _023035B4 +_023034A0: + mov r0, #3 + ldmia sp!, {r3, pc} +_023034A8: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7d] + bl IsDBoxActive + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =0x02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl ShowDBox + ldr r0, _023035BC ; =0x02324D54 + mov r2, #0xd + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl sub_0202F2C4 + b _023035B4 +_023034F4: + ldr r1, [r2, #0x14] + add r1, r1, #1 + str r1, [r2, #0x14] + ldr r1, [r0] + ldr r0, [r1, #0x14] + cmp r0, #1 + cmpne r0, #2 + beq _023035B4 + cmp r0, #3 + bne _023035B4 + ldr r0, [r1, #8] + bl ov11_023035C0 + ldr r0, _023035BC ; =0x02324D54 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x14] + b _023035B4 +_02303538: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7d] + bl IsDBoxActive + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =0x02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl ShowDBox + ldr r0, _023035BC ; =0x02324D54 + mvn r1, #1 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + cmp r0, r1 + beq _023035A4 + bl sub_0202F2C4 + ldr r0, _023035BC ; =0x02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl FreeDBox + ldr r0, _023035BC ; =0x02324D54 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xc7d] +_023035A4: + ldr r0, _023035BC ; =0x02324D54 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_023035C0 +_023035B4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023035BC: .word 0x02324D54 + arm_func_end ov11_023033FC arm_func_start ov11_023035C0 ov11_023035C0: ; 0x023035C0 @@ -44715,18 +46755,64 @@ _023038F8: .word 0x02322850 _023038FC: .word 0x0232287C _02303900: .word 0x02322894 arm_func_end ov11_0230377C -_02303904: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x1A, 0xF6, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x54, 0x4D, 0x32, 0x02 - .byte 0x08, 0x40, 0x2D, 0xE9, 0x6C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x24, 0x0C, 0x91, 0xE5 - .byte 0x03, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x14, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x24, 0x0C, 0x81, 0xE5, 0x0D, 0x00, 0x00, 0xEA, 0xA3, 0xFE, 0xFF, 0xEB, 0x03, 0x00, 0x50, 0xE3 - .byte 0x30, 0x00, 0x9F, 0x05, 0x02, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x90, 0x05, 0x24, 0x1C, 0x80, 0x05 - .byte 0x06, 0x00, 0x00, 0xEA, 0x03, 0x00, 0xA0, 0xE3, 0x24, 0x0C, 0x81, 0xE5, 0x03, 0x00, 0x00, 0xEA - .byte 0x18, 0x00, 0x91, 0xE5, 0x3C, 0x8D, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x54, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02303904 +ov11_02303904: ; 0x02303904 + stmdb sp!, {r3, lr} + ldr r0, _0230392C ; =0x02324D54 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230392C ; =0x02324D54 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230392C: .word 0x02324D54 + arm_func_end ov11_02303904 + + arm_func_start ov11_02303930 +ov11_02303930: ; 0x02303930 + stmdb sp!, {r3, lr} + ldr r0, _023039A8 ; =0x02324D54 + ldr r1, [r0] + ldr r0, [r1, #0xc24] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _023039A0 +_0230394C: ; jump table + b _0230395C ; case 0 + b _02303968 ; case 1 + b _02303984 ; case 2 + b _02303990 ; case 3 +_0230395C: + mov r0, #1 + str r0, [r1, #0xc24] + b _023039A0 +_02303968: + bl ov11_023033FC + cmp r0, #3 + ldreq r0, _023039A8 ; =0x02324D54 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #0xc24] + b _023039A0 +_02303984: + mov r0, #3 + str r0, [r1, #0xc24] + b _023039A0 +_02303990: + ldr r0, [r1, #0x18] + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r3, pc} +_023039A0: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023039A8: .word 0x02324D54 + arm_func_end ov11_02303930 arm_func_start ov11_023039AC ov11_023039AC: ; 0x023039AC @@ -44849,14 +46935,43 @@ ov11_02303B04: ; 0x02303B04 .align 2, 0 _02303B4C: .word 0x02324D58 arm_func_end ov11_02303B04 -_02303B50: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x60, 0x00, 0x9F, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x92, 0xE5 - .byte 0x00, 0x00, 0x51, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x51, 0xE3, 0x10, 0x00, 0x00, 0x0A - .byte 0x02, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x0D, 0x00, 0x00, 0xEA, 0x7F, 0x00, 0x00, 0xEB - .byte 0x0B, 0x00, 0x00, 0xEA, 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x82, 0xE5, 0x04, 0x20, 0x90, 0xE5 - .byte 0x5C, 0x10, 0x92, 0xE5, 0x01, 0x0C, 0x11, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x10, 0xD0, 0xE5 - .byte 0xE8, 0x00, 0x92, 0xE5, 0xE4, 0x20, 0x92, 0xE5, 0x32, 0xFF, 0x2F, 0xE1, 0x04, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x58, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02303B50 +ov11_02303B50: ; 0x02303B50 + stmdb sp!, {r3, lr} + ldr r0, _02303BBC ; =0x02324D58 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #0 + beq _02303B7C + cmp r1, #1 + beq _02303BB4 + cmp r1, #2 + beq _02303B84 + b _02303BB4 +_02303B7C: + bl ov11_02303D80 + b _02303BB4 +_02303B84: + mov r1, #3 + str r1, [r2, #4] + ldr r2, [r0, #4] + ldr r1, [r2, #0x5c] + tst r1, #0x100 + beq _02303BAC + ldrb r1, [r0] + ldr r0, [r2, #0xe8] + ldr r2, [r2, #0xe4] + blx r2 +_02303BAC: + mov r0, #4 + ldmia sp!, {r3, pc} +_02303BB4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02303BBC: .word 0x02324D58 + arm_func_end ov11_02303B50 arm_func_start ov11_02303BC0 ov11_02303BC0: ; 0x02303BC0 @@ -45428,11 +47543,22 @@ ov11_023043A8: ; 0x023043A8 _023043B4: .word sub_020348E4 _023043B8: .word 0x023229DC arm_func_end ov11_023043A8 -_023043BC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x08, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x68, 0xF3, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x6C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_023043BC +ov11_023043BC: ; 0x023043BC + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _023043E4 ; =0x02324D6C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023043E4: .word 0x02324D6C + arm_func_end ov11_023043BC arm_func_start ov11_023043E8 ov11_023043E8: ; 0x023043E8 @@ -45449,24 +47575,83 @@ ov11_023043E8: ; 0x023043E8 .align 2, 0 _02304410: .word 0x02324D6C arm_func_end ov11_023043E8 -_02304414: - .byte 0x08, 0x40, 0x2D, 0xE9, 0xF0, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3 - .byte 0x10, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x50, 0xE3, 0x21, 0x00, 0x00, 0x0A, 0x31, 0x00, 0x00, 0xEA - .byte 0x09, 0x00, 0xA0, 0xE3, 0x4E, 0x8C, 0xF5, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A - .byte 0x00, 0x00, 0xE0, 0xE3, 0x8C, 0x8A, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xAD, 0x24, 0x00, 0xEB, 0xA4, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5 - .byte 0x04, 0x10, 0x80, 0xE5, 0x23, 0x00, 0x00, 0xEA, 0x68, 0x23, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x20, 0x00, 0x00, 0x1A, 0x09, 0x00, 0xA0, 0xE3, 0x09, 0x89, 0xF5, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x05, 0x00, 0x00, 0x1A, 0x72, 0x8C, 0xF5, 0xEB, 0x00, 0x00, 0xE0, 0xE3, 0x7A, 0x8A, 0xFF, 0xEB - .byte 0xD6, 0x22, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0xCA, 0x31, 0x00, 0xEB - .byte 0x58, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x10, 0x00, 0x00, 0xEA, 0x5E, 0x89, 0xF5, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x0D, 0x00, 0x00, 0x0A - .byte 0x00, 0x10, 0xE0, 0xE3, 0x01, 0x00, 0x50, 0xE1, 0x02, 0x00, 0x00, 0x1A, 0x01, 0x00, 0xA0, 0xE1 - .byte 0x69, 0x8A, 0xFF, 0xEB, 0x03, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x1A - .byte 0xF5, 0x8B, 0xF5, 0xEB, 0x64, 0x8A, 0xFF, 0xEB, 0x59, 0x8C, 0xF5, 0xEB, 0xBF, 0x22, 0x00, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x6C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304414 +ov11_02304414: ; 0x02304414 + stmdb sp!, {r3, lr} + ldr r0, _02304510 ; =0x02324D6C + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02304440 + cmp r0, #1 + beq _02304478 + cmp r0, #2 + beq _023044C4 + b _02304508 +_02304440: + mov r0, #9 + bl sub_02067584 + cmp r0, #0 + beq _02304460 + mvn r0, #0 + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304460: + bl ov11_0230D71C + ldr r0, _02304510 ; =0x02324D6C + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304508 +_02304478: + bl ov11_0230D220 + cmp r0, #0 + bne _02304508 + mov r0, #9 + bl sub_020668B4 + cmp r0, #0 + bne _023044AC + bl sub_02067664 + mvn r0, #0 + bl ov11_022E6E8C + bl ov11_0230D000 + mov r0, #4 + ldmia sp!, {r3, pc} +_023044AC: + bl ov11_02310BDC + ldr r0, _02304510 ; =0x02324D6C + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304508 +_023044C4: + bl sub_02066A44 + cmp r0, #0 + beq _02304508 + mvn r1, #0 + cmp r0, r1 + bne _023044E8 + mov r0, r1 + bl ov11_022E6E8C + b _023044F8 +_023044E8: + cmp r0, #1 + bne _023044F8 + bl sub_020674CC + bl ov11_022E6E8C +_023044F8: + bl sub_02067664 + bl ov11_0230D000 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304508: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304510: .word 0x02324D6C + arm_func_end ov11_02304414 arm_func_start ov11_02304514 ov11_02304514: ; 0x02304514 @@ -45477,13 +47662,38 @@ ov11_02304514: ; 0x02304514 _02304520: .word sub_020348E4 _02304524: .word 0x023229EC arm_func_end ov11_02304514 -_02304528: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x0C, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x10, 0xA0, 0xE3, 0x0D, 0xF3, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x81, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x70, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x06, 0xF3, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x70, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304528 +ov11_02304528: ; 0x02304528 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _02304550 ; =0x02324D70 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304550: .word 0x02324D70 + arm_func_end ov11_02304528 + + arm_func_start ov11_02304554 +ov11_02304554: ; 0x02304554 + stmdb sp!, {r3, lr} + ldr r0, _0230457C ; =0x02324D70 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230457C ; =0x02324D70 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230457C: .word 0x02324D70 + arm_func_end ov11_02304554 arm_func_start ov11_02304580 ov11_02304580: ; 0x02304580 @@ -45567,11 +47777,22 @@ ov11_02304664: ; 0x02304664 _02304684: .word 0x023229FC _02304688: .word 0x0238A084 arm_func_end ov11_02304664 -_0230468C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x0C, 0x00, 0xA0, 0xE3, 0x08, 0x10, 0xA0, 0xE3, 0xB4, 0xF2, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x74, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230468C +ov11_0230468C: ; 0x0230468C + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _023046B4 ; =0x02324D74 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023046B4: .word 0x02324D74 + arm_func_end ov11_0230468C arm_func_start ov11_023046B8 ov11_023046B8: ; 0x023046B8 @@ -45588,34 +47809,133 @@ ov11_023046B8: ; 0x023046B8 .align 2, 0 _023046E0: .word 0x02324D74 arm_func_end ov11_023046B8 -_023046E4: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x90, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x05, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x5D, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA, 0x27, 0x00, 0x00, 0xEA, 0x2D, 0x00, 0x00, 0xEA - .byte 0x35, 0x00, 0x00, 0xEA, 0x3D, 0x00, 0x00, 0xEA, 0xC0, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x54, 0x00, 0x00, 0x1A, 0xFC, 0x23, 0x00, 0xEB, 0x50, 0x01, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x4E, 0x00, 0x00, 0xEA, 0xB7, 0x22, 0x00, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x4B, 0x00, 0x00, 0x1A, 0x34, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x01, 0x00, 0xA0, 0x13, 0x55, 0x87, 0xF5, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x46, 0x88, 0xF5, 0xEB, 0x00, 0x00, 0xE0, 0xE3 - .byte 0xC5, 0x89, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x00, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x1A, 0x17, 0x31, 0x00, 0xEB - .byte 0x00, 0x00, 0x00, 0xEA, 0x1A, 0x31, 0x00, 0xEB, 0xE0, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x32, 0x00, 0x00, 0xEA, 0x9B, 0x22, 0x00, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x2F, 0x00, 0x00, 0x1A, 0xC0, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x50, 0x87, 0xF5, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x28, 0x00, 0x00, 0x0A, 0xA4, 0x10, 0x9F, 0xE5, 0x04, 0x20, 0xA0, 0xE3, 0x00, 0x30, 0x91, 0xE5 - .byte 0x08, 0x00, 0x83, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x8B, 0x22, 0x00, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x1F, 0x00, 0x00, 0x1A, 0xC7, 0x23, 0x00, 0xEB, 0x7C, 0x00, 0x9F, 0xE5 - .byte 0x05, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x19, 0x00, 0x00, 0xEA - .byte 0x82, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x16, 0x00, 0x00, 0x1A, 0x5C, 0x00, 0x9F, 0xE5 - .byte 0x60, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x03, 0x00, 0x00, 0xEA, 0x08, 0x00, 0x92, 0xE5 - .byte 0x03, 0x00, 0x50, 0xE1, 0x03, 0x00, 0x00, 0x0A, 0x08, 0x10, 0x81, 0xE2, 0x00, 0x30, 0x91, 0xE5 - .byte 0x00, 0x00, 0x53, 0xE3, 0xF8, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x53, 0xE3, 0x04, 0x00, 0x00, 0x0A - .byte 0xF4, 0x00, 0xD1, 0xE1, 0x2D, 0x9E, 0xF5, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x8A, 0x89, 0xFF, 0xEB - .byte 0x01, 0x00, 0x00, 0xEA, 0x00, 0x00, 0xA0, 0xE3, 0x87, 0x89, 0xFF, 0xEB, 0x05, 0x88, 0xF5, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x74, 0x4D, 0x32, 0x02, 0x84, 0xA0, 0x38, 0x02, 0x0C, 0x2A, 0x32, 0x02 + + arm_func_start ov11_023046E4 +ov11_023046E4: ; 0x023046E4 + stmdb sp!, {r3, lr} + ldr r0, _02304880 ; =0x02324D74 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02304878 +_02304700: ; jump table + b _02304718 ; case 0 + b _0230473C ; case 1 + b _023047AC ; case 2 + b _023047C8 ; case 3 + b _023047EC ; case 4 + b _02304810 ; case 5 +_02304718: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + bl ov11_0230D71C + ldr r0, _02304880 ; =0x02324D74 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_0230473C: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304884 ; =0x0238A084 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + bl sub_020664B8 + cmp r0, #0 + bne _0230477C + bl sub_02066888 + mvn r0, #0 + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r3, pc} +_0230477C: + ldr r0, _02304884 ; =0x0238A084 + ldr r0, [r0] + cmp r0, #0 + bne _02304794 + bl ov11_02310BF0 + b _02304798 +_02304794: + bl ov11_02310C04 +_02304798: + ldr r0, _02304880 ; =0x02324D74 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_023047AC: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304880 ; =0x02324D74 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] +_023047C8: + bl sub_02066510 + cmp r0, #0 + beq _02304878 + ldr r1, _02304880 ; =0x02324D74 + mov r2, #4 + ldr r3, [r1] + str r0, [r3, #8] + ldr r0, [r1] + str r2, [r0, #4] +_023047EC: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + bl ov11_0230D71C + ldr r0, _02304880 ; =0x02324D74 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_02304810: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304880 ; =0x02324D74 + ldr r1, _02304888 ; =0x02322A0C + ldr r2, [r0] + b _0230483C +_0230482C: + ldr r0, [r2, #8] + cmp r0, r3 + beq _02304848 + add r1, r1, #8 +_0230483C: + ldr r3, [r1] + cmp r3, #0 + bne _0230482C +_02304848: + cmp r3, #0 + beq _02304864 + ldrsh r0, [r1, #4] + bl sub_0206C110 + mov r0, #1 + bl ov11_022E6E8C + b _0230486C +_02304864: + mov r0, #0 + bl ov11_022E6E8C +_0230486C: + bl sub_02066888 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304878: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304880: .word 0x02324D74 +_02304884: .word 0x0238A084 +_02304888: .word 0x02322A0C + arm_func_end ov11_023046E4 arm_func_start ov11_0230488C ov11_0230488C: ; 0x0230488C @@ -45643,10 +47963,22 @@ ov11_023048AC: ; 0x023048AC _023048CC: .word 0x02322AB4 _023048D0: .word 0x0238A088 arm_func_end ov11_023048AC -_023048D4: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x0C, 0x00, 0xA0, 0xE3, 0x08, 0x10, 0xA0, 0xE3 - .byte 0x22, 0xF2, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0x04, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x78, 0x4D, 0x32, 0x02 + + arm_func_start ov11_023048D4 +ov11_023048D4: ; 0x023048D4 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _023048FC ; =0x02324D78 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023048FC: .word 0x02324D78 + arm_func_end ov11_023048D4 arm_func_start ov11_02304900 ov11_02304900: ; 0x02304900 @@ -45663,34 +47995,128 @@ ov11_02304900: ; 0x02304900 .align 2, 0 _02304928: .word 0x02324D78 arm_func_end ov11_02304900 -_0230492C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x84, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x05, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x5A, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x14, 0x00, 0x00, 0xEA - .byte 0x1E, 0x00, 0x00, 0xEA, 0x24, 0x00, 0x00, 0xEA, 0x2C, 0x00, 0x00, 0xEA, 0x34, 0x00, 0x00, 0xEA - .byte 0x2E, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x51, 0x00, 0x00, 0x1A, 0x0E, 0x00, 0xA0, 0xE3 - .byte 0x03, 0x8B, 0xF5, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xE0, 0xE3 - .byte 0x41, 0x89, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x62, 0x23, 0x00, 0xEB - .byte 0x24, 0x01, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x43, 0x00, 0x00, 0xEA, 0x1D, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x40, 0x00, 0x00, 0x1A - .byte 0x0E, 0x00, 0xA0, 0xE3, 0xBE, 0x87, 0xF5, 0xEB, 0x87, 0x30, 0x00, 0xEB, 0xF8, 0x00, 0x9F, 0xE5 - .byte 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x38, 0x00, 0x00, 0xEA - .byte 0x12, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x35, 0x00, 0x00, 0x1A, 0xD8, 0x00, 0x9F, 0xE5 - .byte 0x03, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x14, 0x88, 0xF5, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x2E, 0x00, 0x00, 0x0A, 0xBC, 0x10, 0x9F, 0xE5, 0x04, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x30, 0x91, 0xE5, 0x08, 0x00, 0x83, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x04, 0x20, 0x80, 0xE5 - .byte 0x02, 0x22, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x25, 0x00, 0x00, 0x1A, 0x3E, 0x23, 0x00, 0xEB - .byte 0x94, 0x00, 0x9F, 0xE5, 0x05, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x1F, 0x00, 0x00, 0xEA, 0xF9, 0x21, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x1C, 0x00, 0x00, 0x1A - .byte 0x74, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0xE0, 0xE3, 0x00, 0x20, 0x91, 0xE5, 0x08, 0x10, 0x92, 0xE5 - .byte 0x00, 0x00, 0x51, 0xE1, 0x01, 0x00, 0x00, 0x1A, 0xBF, 0xF0, 0xFF, 0xEB, 0x11, 0x00, 0x00, 0xEA - .byte 0x58, 0x10, 0x9F, 0xE5, 0x03, 0x00, 0x00, 0xEA, 0x08, 0x00, 0x92, 0xE5, 0x03, 0x00, 0x50, 0xE1 - .byte 0x03, 0x00, 0x00, 0x0A, 0x08, 0x10, 0x81, 0xE2, 0x00, 0x30, 0x91, 0xE5, 0x00, 0x00, 0x53, 0xE3 - .byte 0xF8, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x53, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0xF4, 0x00, 0xD1, 0xE1 - .byte 0x9E, 0x9D, 0xF5, 0xEB, 0x06, 0x00, 0xA0, 0xE3, 0xA7, 0xF1, 0xFF, 0xEB, 0x01, 0x00, 0x00, 0xEA - .byte 0x01, 0x00, 0xA0, 0xE3, 0xA4, 0xF1, 0xFF, 0xEB, 0xED, 0x8A, 0xF5, 0xEB, 0x04, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x78, 0x4D, 0x32, 0x02 - .byte 0xC4, 0x2A, 0x32, 0x02 + + arm_func_start ov11_0230492C +ov11_0230492C: ; 0x0230492C + stmdb sp!, {r3, lr} + ldr r0, _02304ABC ; =0x02324D78 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02304AB4 +_02304948: ; jump table + b _02304960 ; case 0 + b _023049A4 ; case 1 + b _023049D0 ; case 2 + b _023049EC ; case 3 + b _02304A10 ; case 4 + b _02304A34 ; case 5 +_02304960: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + mov r0, #0xe + bl sub_02067584 + cmp r0, #0 + beq _0230498C + mvn r0, #0 + bl ov11_022E6E8C + mov r0, #4 + ldmia sp!, {r3, pc} +_0230498C: + bl ov11_0230D71C + ldr r0, _02304ABC ; =0x02324D78 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_023049A4: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + mov r0, #0xe + bl sub_020668B4 + bl ov11_02310BDC + ldr r0, _02304ABC ; =0x02324D78 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_023049D0: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + ldr r0, _02304ABC ; =0x02324D78 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] +_023049EC: + bl sub_02066A44 + cmp r0, #0 + beq _02304AB4 + ldr r1, _02304ABC ; =0x02324D78 + mov r2, #4 + ldr r3, [r1] + str r0, [r3, #8] + ldr r0, [r1] + str r2, [r0, #4] +_02304A10: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + bl ov11_0230D71C + ldr r0, _02304ABC ; =0x02324D78 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_02304A34: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + ldr r1, _02304ABC ; =0x02324D78 + mvn r0, #0 + ldr r2, [r1] + ldr r1, [r2, #8] + cmp r1, r0 + bne _02304A60 + bl ov11_02300D5C + b _02304AA8 +_02304A60: + ldr r1, _02304AC0 ; =0x02322AC4 + b _02304A78 +_02304A68: + ldr r0, [r2, #8] + cmp r0, r3 + beq _02304A84 + add r1, r1, #8 +_02304A78: + ldr r3, [r1] + cmp r3, #0 + bne _02304A68 +_02304A84: + cmp r3, #0 + beq _02304AA0 + ldrsh r0, [r1, #4] + bl sub_0206C110 + mov r0, #6 + bl ov11_0230113C + b _02304AA8 +_02304AA0: + mov r0, #1 + bl ov11_0230113C +_02304AA8: + bl sub_02067664 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304AB4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304ABC: .word 0x02324D78 +_02304AC0: .word 0x02322AC4 + arm_func_end ov11_0230492C arm_func_start ov11_02304AC4 ov11_02304AC4: ; 0x02304AC4 @@ -45712,10 +48138,22 @@ ov11_02304AE0: ; 0x02304AE0 _02304AEC: .word sub_020348E4 _02304AF0: .word 0x02322B6C arm_func_end ov11_02304AE0 -_02304AF4: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x08, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1 - .byte 0x9A, 0xF1, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0x04, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x7C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304AF4 +ov11_02304AF4: ; 0x02304AF4 + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _02304B1C ; =0x02324D7C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304B1C: .word 0x02324D7C + arm_func_end ov11_02304AF4 arm_func_start ov11_02304B20 ov11_02304B20: ; 0x02304B20 @@ -45732,16 +48170,45 @@ ov11_02304B20: ; 0x02304B20 .align 2, 0 _02304B48: .word 0x02324D7C arm_func_end ov11_02304B20 -_02304B4C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x68, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x02, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x11, 0x00, 0x00, 0xEA - .byte 0xB3, 0x09, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A, 0x66, 0x10, 0x00, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x30, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x06, 0x00, 0x00, 0xEA, 0xE4, 0x09, 0x00, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x6B, 0xF0, 0xFF, 0xEB, 0x5A, 0x10, 0x00, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x7C, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304B4C +ov11_02304B4C: ; 0x02304B4C + stmdb sp!, {r3, lr} + ldr r0, _02304BC0 ; =0x02324D7C + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02304B70 + cmp r0, #1 + beq _02304B9C + b _02304BB8 +_02304B70: + bl ov11_02307244 + cmp r0, #0 + bne _02304B88 + bl ov11_02308D1C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304B88: + ldr r0, _02304BC0 ; =0x02324D7C + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304BB8 +_02304B9C: + bl ov11_02307334 + cmp r0, #0 + beq _02304BB8 + bl ov11_02300D5C + bl ov11_02308D1C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304BB8: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304BC0: .word 0x02324D7C + arm_func_end ov11_02304B4C arm_func_start ov11_02304BC4 ov11_02304BC4: ; 0x02304BC4 @@ -45768,10 +48235,22 @@ ov11_02304BD8: ; 0x02304BD8 .align 2, 0 _02304C00: .word 0x02324D80 arm_func_end ov11_02304BD8 -_02304C04: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x5A, 0xF1, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x80, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304C04 +ov11_02304C04: ; 0x02304C04 + stmdb sp!, {r3, lr} + ldr r0, _02304C2C ; =0x02324D80 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02304C2C ; =0x02324D80 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02304C2C: .word 0x02324D80 + arm_func_end ov11_02304C04 arm_func_start ov11_02304C30 ov11_02304C30: ; 0x02304C30 @@ -45877,11 +48356,24 @@ _02304D50: _02304D8C: .word 0x02324D84 _02304D90: .word 0x000004C4 arm_func_end ov11_02304CAC -_02304D94: - .byte 0x10, 0x40, 0x2D, 0xE9, 0x24, 0xC0, 0x9F, 0xE5, 0x02, 0x30, 0xA0, 0xE1 - .byte 0x00, 0x20, 0x9C, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, 0x01, 0xC0, 0x82, 0xE0, 0x01, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x40, 0xA0, 0xE1, 0x06, 0xE0, 0xCC, 0xE5, 0x75, 0xE1, 0xFE, 0xEB, 0x04, 0x00, 0xA0, 0xE1 - .byte 0x10, 0x80, 0xBD, 0xE8, 0x84, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02304D94 +ov11_02304D94: ; 0x02304D94 + stmdb sp!, {r4, lr} + ldr ip, _02304DC4 ; =0x02324D84 + mov r3, r2 + ldr r2, [ip] + mov lr, #0 + add ip, r2, r1 + mov r2, #1 + mov r4, r0 + strb lr, [ip, #6] + bl ov10_022BD394 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02304DC4: .word 0x02324D84 + arm_func_end ov11_02304D94 arm_func_start ov11_02304DC8 ov11_02304DC8: ; 0x02304DC8 @@ -51765,44 +54257,175 @@ ov11_0230A07C: ; 0x0230A07C _0230A0CC: .word 0x02322ECC _0230A0D0: .word 0x02324D94 arm_func_end ov11_0230A07C -_0230A0D4: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x08, 0x26, 0xDC, 0xF3, 0xEB, 0x08, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x94, 0x4D, 0x32, 0x02 - .byte 0x10, 0x40, 0x2D, 0xE9, 0x4E, 0xDF, 0x4D, 0xE2, 0xA0, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5 - .byte 0x08, 0x00, 0x92, 0xE5, 0x06, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x60, 0x00, 0x00, 0xEA - .byte 0x05, 0x00, 0x00, 0xEA, 0x16, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x30, 0x00, 0x00, 0xEA - .byte 0x48, 0x00, 0x00, 0xEA, 0x57, 0x00, 0x00, 0xEA, 0x56, 0x00, 0x00, 0xEA, 0x04, 0xE0, 0x92, 0xE5 - .byte 0x6C, 0xC1, 0x9F, 0xE5, 0x10, 0x40, 0xA0, 0xE3, 0x68, 0x01, 0x9F, 0xE5, 0x68, 0x11, 0x9F, 0xE5 - .byte 0x68, 0x31, 0x9F, 0xE5, 0xA0, 0x20, 0x8D, 0xE2, 0xA0, 0xE0, 0x8D, 0xE5, 0xB8, 0xCA, 0xCD, 0xE1 - .byte 0xAC, 0x40, 0x8D, 0xE5, 0x18, 0x81, 0xF4, 0xEB, 0x40, 0x11, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3 - .byte 0x00, 0x30, 0x91, 0xE5, 0x00, 0x00, 0xC3, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x08, 0x20, 0x80, 0xE5 - .byte 0x47, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0xD2, 0xE1, 0x6C, 0x82, 0xF4, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x43, 0x00, 0x00, 0x1A, 0x14, 0x01, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xD0, 0x00, 0xD0, 0xE1 - .byte 0x82, 0x82, 0xF4, 0xEB, 0x04, 0x11, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x91, 0xE5 - .byte 0xD0, 0x00, 0xD0, 0xE1, 0x40, 0x82, 0xF4, 0xEB, 0xF0, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xE0, 0xE3 - .byte 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0x00, 0x20, 0xC1, 0xE5, 0x00, 0x00, 0x90, 0xB5 - .byte 0x06, 0x10, 0xA0, 0xB3, 0x08, 0x10, 0x80, 0xB5, 0x31, 0x00, 0x00, 0xBA, 0x00, 0x20, 0x90, 0xE5 - .byte 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x40, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x10, 0x80, 0xE5 - .byte 0x2B, 0x00, 0x00, 0xEA, 0x10, 0x00, 0xA0, 0xE3, 0x14, 0x00, 0x8D, 0xE5, 0x04, 0x10, 0x92, 0xE5 - .byte 0xB8, 0x00, 0x9F, 0xE5, 0x81, 0x11, 0xA0, 0xE1, 0xB1, 0x10, 0x90, 0xE1, 0x08, 0x40, 0xA0, 0xE3 - .byte 0xAC, 0x00, 0x9F, 0xE5, 0xB0, 0x11, 0xCD, 0xE1, 0x04, 0x20, 0x92, 0xE5, 0xA4, 0x10, 0x9F, 0xE5 - .byte 0x08, 0x20, 0x8D, 0xE5, 0x00, 0x40, 0x8D, 0xE5, 0x01, 0x40, 0xA0, 0xE3, 0x98, 0x30, 0x9F, 0xE5 - .byte 0x08, 0x20, 0x8D, 0xE2, 0x04, 0x40, 0x8D, 0xE5, 0xDD, 0x98, 0xF4, 0xEB, 0x6C, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x20, 0xA0, 0xE3, 0x00, 0x30, 0x91, 0xE5, 0x01, 0x00, 0xC3, 0xE5, 0x00, 0x00, 0x91, 0xE5 - .byte 0x08, 0x20, 0x80, 0xE5, 0x12, 0x00, 0x00, 0xEA, 0xD1, 0x00, 0xD2, 0xE1, 0x98, 0x99, 0xF4, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x0E, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0xD1, 0x00, 0xD0, 0xE1, 0x89, 0x99, 0xF4, 0xEB, 0x30, 0x00, 0x9F, 0xE5, 0x01, 0x30, 0xE0, 0xE3 - .byte 0x00, 0x20, 0x90, 0xE5, 0x02, 0x10, 0xA0, 0xE3, 0x01, 0x30, 0xC2, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x08, 0x10, 0x80, 0xE5, 0x02, 0x00, 0x00, 0xEA, 0xB5, 0xDB, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE3 - .byte 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3, 0x4E, 0xDF, 0x8D, 0xE2, 0x10, 0x80, 0xBD, 0xE8 - .byte 0x94, 0x4D, 0x32, 0x02, 0xB8, 0x3F, 0x00, 0x00, 0xAC, 0x2E, 0x32, 0x02, 0x33, 0x18, 0x40, 0x00 - .byte 0xDC, 0x2E, 0x32, 0x02, 0xBC, 0x2E, 0x32, 0x02, 0x33, 0x98, 0x00, 0x00, 0xD0, 0xA2, 0x30, 0x02 - .byte 0x38, 0x40, 0x2D, 0xE9, 0x00, 0x50, 0xA0, 0xE1, 0xCE, 0x99, 0xF4, 0xEB, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x84, 0x11, 0xA0, 0xE1, 0xB1, 0x10, 0x90, 0xE1, 0x05, 0x00, 0xA0, 0xE1 - .byte 0xCD, 0x99, 0xF4, 0xEB, 0xC1, 0x00, 0x84, 0xE2, 0x3F, 0x0C, 0x80, 0xE2, 0x00, 0x18, 0xA0, 0xE1 - .byte 0x05, 0x00, 0xA0, 0xE1, 0x21, 0x38, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE3, 0x10, 0x20, 0xA0, 0xE3 - .byte 0xD4, 0x6F, 0xF4, 0xEB, 0x38, 0x80, 0xBD, 0xE8, 0xDC, 0x2E, 0x32, 0x02 + + arm_func_start ov11_0230A0D4 +ov11_0230A0D4: ; 0x0230A0D4 + stmdb sp!, {r3, lr} + ldr r0, _0230A0FC ; =0x02324D94 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230A0FC ; =0x02324D94 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230A0FC: .word 0x02324D94 + arm_func_end ov11_0230A0D4 + + arm_func_start ov11_0230A100 +ov11_0230A100: ; 0x0230A100 + stmdb sp!, {r4, lr} + sub sp, sp, #0x138 + ldr r0, _0230A2B0 ; =0x02324D94 + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0230A2A4 +_0230A120: ; jump table + b _0230A13C ; case 0 + b _0230A184 ; case 1 + b _0230A13C ; case 2 + b _0230A1F4 ; case 3 + b _0230A258 ; case 4 + b _0230A298 ; case 5 + b _0230A298 ; case 6 +_0230A13C: + ldr lr, [r2, #4] + ldr ip, _0230A2B4 ; =0x00003FB8 + mov r4, #0x10 + ldr r0, _0230A2B8 ; =0x02322EAC + ldr r1, _0230A2BC ; =0x00401833 + ldr r3, _0230A2C0 ; =0x02322EDC + add r2, sp, #0xa0 + str lr, [sp, #0xa0] + strh ip, [sp, #0xa8] + str r4, [sp, #0xac] + bl sub_0202A5CC + ldr r1, _0230A2B0 ; =0x02324D94 + mov r2, #1 + ldr r3, [r1] + strb r0, [r3] + ldr r0, [r1] + str r2, [r0, #8] + b _0230A2A4 +_0230A184: + ldrsb r0, [r2] + bl sub_0202AB40 + cmp r0, #0 + bne _0230A2A4 + ldr r0, _0230A2B0 ; =0x02324D94 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202ABB0 + ldr r1, _0230A2B0 ; =0x02324D94 + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0] + bl sub_0202AABC + ldr r0, _0230A2B0 ; =0x02324D94 + mvn r2, #1 + ldr r1, [r0] + cmp r4, #0 + strb r2, [r1] + ldrlt r0, [r0] + movlt r1, #6 + strlt r1, [r0, #8] + blt _0230A2A4 + ldr r2, [r0] + mov r1, #3 + str r4, [r2, #4] + ldr r0, [r0] + str r1, [r0, #8] + b _0230A2A4 +_0230A1F4: + mov r0, #0x10 + str r0, [sp, #0x14] + ldr r1, [r2, #4] + ldr r0, _0230A2C0 ; =0x02322EDC + mov r1, r1, lsl #3 + ldrh r1, [r0, r1] + mov r4, #8 + ldr r0, _0230A2C4 ; =0x02322EBC + strh r1, [sp, #0x10] + ldr r2, [r2, #4] + ldr r1, _0230A2C8 ; =0x00009833 + str r2, [sp, #8] + str r4, [sp] + mov r4, #1 + ldr r3, _0230A2CC ; =0x0230A2D0 + add r2, sp, #8 + str r4, [sp, #4] + bl sub_020305B4 + ldr r1, _0230A2B0 ; =0x02324D94 + mov r2, #4 + ldr r3, [r1] + strb r0, [r3, #1] + ldr r0, [r1] + str r2, [r0, #8] + b _0230A2A4 +_0230A258: + ldrsb r0, [r2, #1] + bl sub_020308C4 + cmp r0, #0 + bne _0230A2A4 + ldr r0, _0230A2B0 ; =0x02324D94 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_020308A0 + ldr r0, _0230A2B0 ; =0x02324D94 + mvn r3, #1 + ldr r2, [r0] + mov r1, #2 + strb r3, [r2, #1] + ldr r0, [r0] + str r1, [r0, #8] + b _0230A2A4 +_0230A298: + bl ov11_02301174 + mov r0, #4 + b _0230A2A8 +_0230A2A4: + mov r0, #1 +_0230A2A8: + add sp, sp, #0x138 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230A2B0: .word 0x02324D94 +_0230A2B4: .word 0x00003FB8 +_0230A2B8: .word 0x02322EAC +_0230A2BC: .word 0x00401833 +_0230A2C0: .word 0x02322EDC +_0230A2C4: .word 0x02322EBC +_0230A2C8: .word 0x00009833 +_0230A2CC: .word 0x0230A2D0 + arm_func_end ov11_0230A100 + + arm_func_start ov11_0230A2D0 +ov11_0230A2D0: ; 0x0230A2D0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl sub_02030A18 + mov r4, r0 + ldr r0, _0230A318 ; =0x02322EDC + mov r1, r4, lsl #3 + ldrh r1, [r0, r1] + mov r0, r5 + bl sub_02030A2C + add r0, r4, #0xc1 + add r0, r0, #0x3f00 + mov r1, r0, lsl #0x10 + mov r0, r5 + mov r3, r1, lsr #0x10 + mov r1, #4 + mov r2, #0x10 + bl sub_02026268 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230A318: .word 0x02322EDC + arm_func_end ov11_0230A2D0 arm_func_start ov11_0230A31C ov11_0230A31C: ; 0x0230A31C @@ -52679,53 +55302,206 @@ ov11_0230AF0C: ; 0x0230AF0C _0230AF30: .word 0x02324DA0 _0230AF34: .word sub_02047188 arm_func_end ov11_0230AF0C -_0230AF38: - .byte 0xF0, 0x4F, 0x2D, 0xE9, 0x57, 0xDF, 0x4D, 0xE2 - .byte 0x94, 0x12, 0x9F, 0xE5, 0x00, 0x70, 0xA0, 0xE1, 0x00, 0x60, 0x91, 0xE5, 0x0A, 0x00, 0x8D, 0xE2 - .byte 0xF4, 0x80, 0xD6, 0xE1, 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x30, 0xA0, 0xE3, 0x04, 0x10, 0x8D, 0xE2 - .byte 0xB8, 0x80, 0xCD, 0xE1, 0xB6, 0x20, 0xCD, 0xE1, 0x04, 0x30, 0xCD, 0xE5, 0x10, 0x90, 0xA0, 0xE3 - .byte 0xBE, 0x09, 0xF4, 0xEB, 0x43, 0x0F, 0x8D, 0xE2, 0xC4, 0x61, 0xF4, 0xEB, 0x07, 0x00, 0xA0, 0xE1 - .byte 0x18, 0x10, 0xA0, 0xE3, 0x09, 0x20, 0xA0, 0xE1, 0x0A, 0x30, 0x8D, 0xE2, 0xA0, 0x6C, 0xF4, 0xEB - .byte 0x08, 0x00, 0xA0, 0xE1, 0x33, 0x04, 0x00, 0xEB, 0x03, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90 - .byte 0x14, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA - .byte 0x0B, 0x00, 0x00, 0xEA, 0x24, 0x32, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x6C, 0x10, 0xA0, 0xE3 - .byte 0x09, 0x20, 0xA0, 0xE1, 0x92, 0x6C, 0xF4, 0xEB, 0x0A, 0x00, 0x00, 0xEA, 0x10, 0x32, 0x9F, 0xE5 - .byte 0x07, 0x00, 0xA0, 0xE1, 0x6C, 0x10, 0xA0, 0xE3, 0x09, 0x20, 0xA0, 0xE1, 0x8C, 0x6C, 0xF4, 0xEB - .byte 0x04, 0x00, 0x00, 0xEA, 0xFC, 0x31, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x6C, 0x10, 0xA0, 0xE3 - .byte 0x09, 0x20, 0xA0, 0xE1, 0x86, 0x6C, 0xF4, 0xEB, 0x00, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x4F, 0x00, 0x00, 0x1A, 0xE0, 0x31, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x18, 0x10, 0xA0, 0xE3 - .byte 0x28, 0x20, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3, 0x92, 0x6C, 0xF4, 0xEB, 0xCC, 0x31, 0x9F, 0xE5 - .byte 0x07, 0x00, 0xA0, 0xE1, 0x7A, 0x10, 0xA0, 0xE3, 0x28, 0x20, 0xA0, 0xE3, 0x8D, 0x6C, 0xF4, 0xEB - .byte 0x08, 0x00, 0xA0, 0xE1, 0x30, 0x90, 0x89, 0xE2, 0xC8, 0x0D, 0xF4, 0xEB, 0x0A, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x25, 0x00, 0x00, 0xEA, 0x24, 0x00, 0x00, 0xEA, 0x23, 0x00, 0x00, 0xEA - .byte 0x22, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA - .byte 0x1E, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0x1B, 0x00, 0x00, 0xEA - .byte 0x09, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x48, 0xE2, 0x00, 0x08, 0xA0, 0xE1, 0x40, 0x58, 0xA0, 0xE1 - .byte 0x02, 0x40, 0xA0, 0xE3, 0x15, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x48, 0xE2, 0x00, 0x08, 0xA0, 0xE1 - .byte 0x40, 0x58, 0xA0, 0xE1, 0x03, 0x40, 0xA0, 0xE3, 0x10, 0x00, 0x00, 0xEA, 0x6F, 0x0F, 0x48, 0xE2 - .byte 0x00, 0x08, 0xA0, 0xE1, 0x40, 0x08, 0xA0, 0xE1, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1 - .byte 0x07, 0x00, 0x50, 0xE3, 0x38, 0x51, 0x9F, 0x95, 0x03, 0x40, 0xA0, 0x93, 0x07, 0x00, 0x00, 0x9A - .byte 0x71, 0x0F, 0x48, 0xE2, 0x00, 0x08, 0xA0, 0xE1, 0x40, 0x08, 0xA0, 0xE1, 0x00, 0x08, 0xA0, 0xE1 - .byte 0x20, 0x08, 0xA0, 0xE1, 0x03, 0x00, 0x50, 0xE3, 0x18, 0x51, 0x9F, 0x95, 0x03, 0x40, 0xA0, 0x93 - .byte 0x00, 0xA0, 0xA0, 0xE3, 0x43, 0xBF, 0x8D, 0xE2, 0x12, 0x00, 0x00, 0xEA, 0x05, 0x00, 0xA0, 0xE1 - .byte 0x1C, 0x51, 0x8D, 0xE5, 0x54, 0x0F, 0xF4, 0xEB, 0x00, 0x80, 0xA0, 0xE1, 0x05, 0x00, 0xA0, 0xE1 - .byte 0x68, 0x13, 0xF4, 0xEB, 0x00, 0x00, 0x88, 0xE0, 0x30, 0x01, 0x8D, 0xE5, 0xE8, 0x30, 0x9F, 0xE5 - .byte 0x07, 0x00, 0xA0, 0xE1, 0x18, 0x10, 0xA0, 0xE3, 0x09, 0x20, 0xA0, 0xE1, 0x00, 0xB0, 0x8D, 0xE5 - .byte 0x6E, 0x6C, 0xF4, 0xEB, 0x01, 0x00, 0x85, 0xE2, 0x00, 0x08, 0xA0, 0xE1, 0x0C, 0x90, 0x89, 0xE2 - .byte 0x40, 0x58, 0xA0, 0xE1, 0x01, 0xA0, 0x8A, 0xE2, 0x04, 0x00, 0x5A, 0xE1, 0xEA, 0xFF, 0xFF, 0xBA - .byte 0x0F, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x50, 0xE3, 0x0D, 0x00, 0x00, 0x1A, 0x98, 0x30, 0x9F, 0xE5 - .byte 0x07, 0x00, 0xA0, 0xE1, 0x18, 0x10, 0xA0, 0xE3, 0x28, 0x20, 0xA0, 0xE3, 0x41, 0x6C, 0xF4, 0xEB - .byte 0xB6, 0x00, 0xD6, 0xE1, 0x94, 0x30, 0x9F, 0xE5, 0x43, 0x4F, 0x8D, 0xE2, 0x30, 0x01, 0x8D, 0xE5 - .byte 0x07, 0x00, 0xA0, 0xE1, 0x18, 0x10, 0xA0, 0xE3, 0x40, 0x20, 0xA0, 0xE3, 0x00, 0x40, 0x8D, 0xE5 - .byte 0x56, 0x6C, 0xF4, 0xEB, 0xBC, 0x00, 0xD6, 0xE1, 0x43, 0x1F, 0x8D, 0xE2, 0x70, 0x30, 0x9F, 0xE5 - .byte 0x30, 0x01, 0x8D, 0xE5, 0x00, 0x10, 0x8D, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x1C, 0x10, 0xA0, 0xE3 - .byte 0x7E, 0x20, 0xA0, 0xE3, 0x4D, 0x6C, 0xF4, 0xEB, 0xBE, 0x00, 0xD6, 0xE1, 0x54, 0x30, 0x9F, 0xE5 - .byte 0x43, 0x4F, 0x8D, 0xE2, 0x30, 0x01, 0x8D, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x1C, 0x10, 0xA0, 0xE3 - .byte 0x8A, 0x20, 0xA0, 0xE3, 0x00, 0x40, 0x8D, 0xE5, 0x44, 0x6C, 0xF4, 0xEB, 0x07, 0x00, 0xA0, 0xE1 - .byte 0x46, 0x72, 0xF4, 0xEB, 0x57, 0xDF, 0x8D, 0xE2, 0xF0, 0x8F, 0xBD, 0xE8, 0xA0, 0x4D, 0x32, 0x02 - .byte 0xA8, 0x2F, 0x32, 0x02, 0xB0, 0x2F, 0x32, 0x02, 0xC0, 0x2F, 0x32, 0x02, 0xB2, 0x04, 0x00, 0x00 - .byte 0xB3, 0x04, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 0xB5, 0x04, 0x00, 0x00 - .byte 0xB4, 0x04, 0x00, 0x00, 0xB6, 0x04, 0x00, 0x00, 0xB7, 0x04, 0x00, 0x00 + + arm_func_start ov11_0230AF38 +ov11_0230AF38: ; 0x0230AF38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x15c + ldr r1, _0230B1DC ; =0x02324DA0 + mov r7, r0 + ldr r6, [r1] + add r0, sp, #0xa + ldrsh r8, [r6, #4] + mov r2, #0 + mov r3, #1 + add r1, sp, #4 + strh r8, [sp, #8] + strh r2, [sp, #6] + strb r3, [sp, #4] + mov sb, #0x10 + bl sub_0200D670 + add r0, sp, #0x10c + bl InitPreprocessorArgs + mov r0, r7 + mov r1, #0x18 + mov r2, sb + add r3, sp, #0xa + bl sub_02026214 + mov r0, r8 + bl ov11_0230C068 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230AFF8 +_0230AFA4: ; jump table + b _0230AFB4 ; case 0 + b _0230AFB4 ; case 1 + b _0230AFCC ; case 2 + b _0230AFE4 ; case 3 +_0230AFB4: + ldr r3, _0230B1E0 ; =0x02322FA8 + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl sub_02026214 + b _0230AFF8 +_0230AFCC: + ldr r3, _0230B1E4 ; =0x02322FB0 + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl sub_02026214 + b _0230AFF8 +_0230AFE4: + ldr r3, _0230B1E8 ; =0x02322FC0 + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl sub_02026214 +_0230AFF8: + ldr r0, [r6] + cmp r0, #0 + bne _0230B144 + ldr r3, _0230B1EC ; =0x000004B2 + mov r0, r7 + mov r1, #0x18 + mov r2, #0x28 + mov r4, #0 + bl sub_02026268 + ldr r3, _0230B1F0 ; =0x000004B3 + mov r0, r7 + mov r1, #0x7a + mov r2, #0x28 + bl sub_02026268 + mov r0, r8 + add sb, sb, #0x30 + bl GetExclusiveItemType + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _0230B0E0 +_0230B048: ; jump table + b _0230B0E0 ; case 0 + b _0230B0E0 ; case 1 + b _0230B0E0 ; case 2 + b _0230B074 ; case 3 + b _0230B088 ; case 4 + b _0230B0E0 ; case 5 + b _0230B0E0 ; case 6 + b _0230B074 ; case 7 + b _0230B088 ; case 8 + b _0230B0E0 ; case 9 + b _0230B09C ; case 10 +_0230B074: + sub r0, r8, #2 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r4, #2 + b _0230B0E0 +_0230B088: + sub r0, r8, #3 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r4, #3 + b _0230B0E0 +_0230B09C: + sub r0, r8, #0x1bc + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #7 + ldrls r5, _0230B1F4 ; =0x000002FE + movls r4, #3 + bls _0230B0E0 + sub r0, r8, #0x1c4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + ldrls r5, _0230B1F8 ; =0x00000336 + movls r4, #3 +_0230B0E0: + mov sl, #0 + add fp, sp, #0x10c + b _0230B138 +_0230B0EC: + mov r0, r5 + str r5, [sp, #0x11c] + bl CountNbItemsOfTypeInBag + mov r8, r0 + mov r0, r5 + bl CountNbItemsOfTypeInStorage + add r0, r8, r0 + str r0, [sp, #0x130] + ldr r3, _0230B1FC ; =0x000004B5 + mov r0, r7 + mov r1, #0x18 + mov r2, sb + str fp, [sp] + bl sub_020262E0 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + add sb, sb, #0xc + mov r5, r0, asr #0x10 + add sl, sl, #1 +_0230B138: + cmp sl, r4 + blt _0230B0EC + b _0230B184 +_0230B144: + cmp r0, #1 + bne _0230B184 + ldr r3, _0230B1EC ; =0x000004B2 + mov r0, r7 + mov r1, #0x18 + mov r2, #0x28 + bl sub_02026268 + ldrh r0, [r6, #6] + ldr r3, _0230B200 ; =0x000004B4 + add r4, sp, #0x10c + str r0, [sp, #0x130] + mov r0, r7 + mov r1, #0x18 + mov r2, #0x40 + str r4, [sp] + bl sub_020262E0 +_0230B184: + ldrh r0, [r6, #0xc] + add r1, sp, #0x10c + ldr r3, _0230B204 ; =0x000004B6 + str r0, [sp, #0x130] + str r1, [sp] + mov r0, r7 + mov r1, #0x1c + mov r2, #0x7e + bl sub_020262E0 + ldrh r0, [r6, #0xe] + ldr r3, _0230B208 ; =0x000004B7 + add r4, sp, #0x10c + str r0, [sp, #0x130] + mov r0, r7 + mov r1, #0x1c + mov r2, #0x8a + str r4, [sp] + bl sub_020262E0 + mov r0, r7 + bl sub_02027AF0 + add sp, sp, #0x15c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230B1DC: .word 0x02324DA0 +_0230B1E0: .word 0x02322FA8 +_0230B1E4: .word 0x02322FB0 +_0230B1E8: .word 0x02322FC0 +_0230B1EC: .word 0x000004B2 +_0230B1F0: .word 0x000004B3 +_0230B1F4: .word 0x000002FE +_0230B1F8: .word 0x00000336 +_0230B1FC: .word 0x000004B5 +_0230B200: .word 0x000004B4 +_0230B204: .word 0x000004B6 +_0230B208: .word 0x000004B7 + arm_func_end ov11_0230AF38 arm_func_start ov11_0230B20C ov11_0230B20C: ; 0x0230B20C @@ -53041,17 +55817,49 @@ _0230B688: .word 0x0230BE34 _0230B68C: .word 0x02322FE4 _0230B690: .word ov11_0230BF38 arm_func_end ov11_0230B20C -_0230B694: - .byte 0x10, 0x40, 0x2D, 0xE9, 0x7C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x70, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0xA0, 0xE3 - .byte 0xAE, 0xD6, 0xF3, 0xEB, 0x60, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x07, 0x1D, 0xF4, 0xEB - .byte 0x00, 0x40, 0xA0, 0xE1, 0x33, 0x02, 0x00, 0xEB, 0x3F, 0x03, 0x00, 0xEB, 0xD2, 0x03, 0x00, 0xEB - .byte 0x00, 0x00, 0xA0, 0xE3, 0x77, 0x1E, 0xF4, 0xEB, 0x3C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x54, 0xE3 - .byte 0x04, 0x10, 0x91, 0xE5, 0x46, 0x1C, 0x81, 0xE2, 0xB6, 0x12, 0xD1, 0xE1, 0x00, 0x40, 0x81, 0xE0 - .byte 0x00, 0x00, 0x00, 0x0A, 0x0E, 0x1D, 0xF4, 0xEB, 0x1C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0xA0, 0xD6, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x81, 0xE5 - .byte 0x00, 0x00, 0x54, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x10, 0x80, 0xBD, 0xE8, 0xA4, 0x4D, 0x32, 0x02 - .byte 0xD4, 0x46, 0x00, 0x00 + + arm_func_start ov11_0230B694 +ov11_0230B694: ; 0x0230B694 + stmdb sp!, {r4, lr} + ldr r0, _0230B71C ; =0x02324DA4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0230B6BC + ldr r0, _0230B720 ; =0x000046D4 + mov r1, #8 + bl MemAlloc + ldr r1, _0230B71C ; =0x02324DA4 + str r0, [r1, #4] +_0230B6BC: + bl LoadSynthBin + mov r4, r0 + bl ov11_0230BF98 + bl ov11_0230C3CC + bl ov11_0230C61C + mov r0, #0 + bl sub_020130B8 + ldr r1, _0230B71C ; =0x02324DA4 + cmp r4, #0 + ldr r1, [r1, #4] + add r1, r1, #0x4600 + ldrh r1, [r1, #0x26] + add r4, r1, r0 + beq _0230B6F8 + bl CloseSynthBin +_0230B6F8: + ldr r0, _0230B71C ; =0x02324DA4 + ldr r0, [r0, #4] + bl MemFree + ldr r1, _0230B71C ; =0x02324DA4 + mov r0, #0 + str r0, [r1, #4] + cmp r4, #0 + movne r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230B71C: .word 0x02324DA4 +_0230B720: .word 0x000046D4 + arm_func_end ov11_0230B694 arm_func_start ov11_0230B724 ov11_0230B724: ; 0x0230B724 @@ -53084,23 +55892,74 @@ _0230B74C: _0230B784: .word 0x02324DA4 _0230B788: .word 0x000046D4 arm_func_end ov11_0230B724 -_0230B78C: - .byte 0x38, 0x40, 0x2D, 0xE9 - .byte 0xD8, 0x10, 0x9F, 0xE5, 0x01, 0x0B, 0x10, 0xE3, 0x04, 0x40, 0x91, 0xE5, 0x31, 0x00, 0x00, 0x0A - .byte 0x05, 0x0B, 0x84, 0xE2, 0xD4, 0x0E, 0xD0, 0xE1, 0xE6, 0x83, 0xF4, 0xEB, 0xE6, 0x10, 0x84, 0xE2 - .byte 0x05, 0x2B, 0x81, 0xE2, 0x06, 0x10, 0xA0, 0xE3, 0x90, 0x21, 0x25, 0xE0, 0x04, 0x00, 0xD5, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A, 0x01, 0x00, 0xA0, 0xE1, 0x3E, 0x31, 0xF4, 0xEB - .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0xC5, 0xE5, 0x05, 0x0B, 0x84, 0xE2, 0xD4, 0x0E, 0xD0, 0xE1 - .byte 0x25, 0x86, 0xF4, 0xEB, 0x14, 0x00, 0x00, 0xEA, 0x21, 0x00, 0x00, 0xEB, 0x46, 0x1C, 0x84, 0xE2 - .byte 0xB8, 0x12, 0xD1, 0xE1, 0x01, 0x00, 0x50, 0xE1, 0x0D, 0x00, 0x00, 0xAA, 0x06, 0x00, 0xA0, 0xE3 - .byte 0x31, 0x31, 0xF4, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0xC5, 0xE5, 0x18, 0x00, 0x00, 0xEB - .byte 0x46, 0x1C, 0x84, 0xE2, 0xB8, 0x12, 0xD1, 0xE1, 0x00, 0x00, 0x51, 0xE1, 0x06, 0x00, 0x00, 0x1A - .byte 0x05, 0x0B, 0x84, 0xE2, 0xD4, 0x0E, 0xD0, 0xE1, 0x01, 0x10, 0xA0, 0xE3, 0x12, 0x86, 0xF4, 0xEB - .byte 0x01, 0x00, 0x00, 0xEA, 0x02, 0x00, 0xA0, 0xE3, 0x23, 0x31, 0xF4, 0xEB, 0x2C, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x10, 0x90, 0xE5, 0x01, 0x09, 0x81, 0xE2, 0xC8, 0x06, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x02, 0x00, 0x00, 0x0A, 0xB2, 0x0F, 0x81, 0xE2, 0x11, 0x0B, 0x80, 0xE2, 0x49, 0xEE, 0xF4, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0x38, 0x80, 0xBD, 0xE8, 0x00, 0x00, 0xA0, 0xE3, 0x38, 0x80, 0xBD, 0xE8 - .byte 0xA4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230B78C +ov11_0230B78C: ; 0x0230B78C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0230B870 ; =0x02324DA4 + tst r0, #0x400 + ldr r4, [r1, #4] + beq _0230B868 + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202C748 + add r1, r4, #0xe6 + add r2, r1, #0x1400 + mov r1, #6 + mla r5, r0, r1, r2 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0230B7E8 + mov r0, r1 + bl sub_02017CCC + mov r1, #0 + strb r1, [r5, #4] + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D07C + b _0230B83C +_0230B7E8: + bl ov11_0230B874 + add r1, r4, #0x4600 + ldrh r1, [r1, #0x28] + cmp r0, r1 + bge _0230B834 + mov r0, #6 + bl sub_02017CCC + mov r0, #1 + strb r0, [r5, #4] + bl ov11_0230B874 + add r1, r4, #0x4600 + ldrh r1, [r1, #0x28] + cmp r1, r0 + bne _0230B83C + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + mov r1, #1 + bl sub_0202D07C + b _0230B83C +_0230B834: + mov r0, #2 + bl sub_02017CCC +_0230B83C: + ldr r0, _0230B870 ; =0x02324DA4 + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6c8] + cmp r0, #0 + beq _0230B860 + add r0, r1, #0x2c8 + add r0, r0, #0x4400 + bl sub_02047188 +_0230B860: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0230B868: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230B870: .word 0x02324DA4 + arm_func_end ov11_0230B78C arm_func_start ov11_0230B874 ov11_0230B874: ; 0x0230B874 @@ -53308,16 +56167,42 @@ _0230BB10: .align 2, 0 _0230BB18: .word 0x02324DA4 arm_func_end ov11_0230BA64 -_0230BB1C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x6C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x0B, 0x80, 0x12 - .byte 0xD4, 0x0E, 0xD0, 0x11, 0x01, 0x10, 0xE0, 0x13, 0x01, 0x00, 0x50, 0x11, 0x08, 0x80, 0xBD, 0x08 - .byte 0x69, 0x85, 0xF4, 0xEB, 0x48, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xC1, 0xE1, 0xB9, 0x03, 0x00, 0xEB - .byte 0xE3, 0x03, 0x00, 0xEB, 0x38, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x05, 0x0B, 0x80, 0xE2 - .byte 0xD4, 0x0E, 0xD0, 0xE1, 0x00, 0x72, 0xF4, 0xEB, 0x24, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x05, 0x0B, 0x80, 0xE2, 0xD4, 0x0E, 0xD0, 0xE1, 0xE3, 0x82, 0xF4, 0xEB, 0x10, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x01, 0x0A, 0x80, 0xE2, 0xE4, 0x14, 0xC0, 0xE5 - .byte 0x08, 0x80, 0xBD, 0xE8, 0xA4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230BB1C +ov11_0230BB1C: ; 0x0230BB1C + stmdb sp!, {r3, lr} + ldr r0, _0230BB94 ; =0x02324DA4 + ldr r0, [r0, #4] + cmp r0, #0 + addne r0, r0, #0x1400 + ldrnesb r0, [r0, #0xe4] + mvnne r1, #1 + cmpne r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202D0EC + ldr r1, _0230BB94 ; =0x02324DA4 + strh r0, [r1] + bl ov11_0230CA38 + bl ov11_0230CAE4 + ldr r0, _0230BB94 ; =0x02324DA4 + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202836C + ldr r0, _0230BB94 ; =0x02324DA4 + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202C70C + ldr r0, _0230BB94 ; =0x02324DA4 + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0x1000 + strb r1, [r0, #0x4e4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BB94: .word 0x02324DA4 + arm_func_end ov11_0230BB1C arm_func_start ov11_0230BB98 ov11_0230BB98: ; 0x0230BB98 @@ -53452,38 +56337,144 @@ ov11_0230BD28: ; 0x0230BD28 .align 2, 0 _0230BD58: .word 0x02324DA4 arm_func_end ov11_0230BD28 -_0230BD5C: - .byte 0x70, 0x40, 0x2D, 0xE9 - .byte 0x58, 0xD0, 0x4D, 0xE2, 0x01, 0x50, 0xA0, 0xE1, 0x05, 0x18, 0xA0, 0xE1, 0x00, 0x60, 0xA0, 0xE1 - .byte 0x21, 0x08, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0xFC, 0x02, 0x00, 0xEB, 0xA4, 0x10, 0x9F, 0xE5 - .byte 0xB4, 0x00, 0xCD, 0xE1, 0x04, 0x30, 0x91, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x85, 0x00, 0x83, 0xE0 - .byte 0x2D, 0x0C, 0x80, 0xE2, 0xBE, 0x2E, 0xD0, 0xE1, 0x05, 0x00, 0x83, 0xE0, 0x01, 0x0A, 0x80, 0xE2 - .byte 0xB2, 0x20, 0xCD, 0xE1, 0x00, 0x10, 0xCD, 0xE5, 0xB8, 0x00, 0xD0, 0xE5, 0x00, 0x10, 0x8D, 0xE2 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x02, 0x00, 0x10, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x8D, 0xE2 - .byte 0x25, 0x06, 0xF4, 0xEB, 0x60, 0x10, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE1, 0x30, 0xF6, 0xF5, 0xEB - .byte 0x06, 0x10, 0x8D, 0xE2, 0x06, 0x00, 0xA0, 0xE1, 0x73, 0xF6, 0xF5, 0xEB, 0x4C, 0x10, 0x9F, 0xE5 - .byte 0x06, 0x00, 0xA0, 0xE1, 0x70, 0xF6, 0xF5, 0xEB, 0x01, 0x00, 0x00, 0xEA, 0x06, 0x00, 0xA0, 0xE1 - .byte 0x1E, 0x06, 0xF4, 0xEB, 0x2C, 0x10, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE3, 0x04, 0x10, 0x91, 0xE5 - .byte 0x95, 0x10, 0x20, 0xE0, 0x01, 0x0A, 0x80, 0xE2, 0xEA, 0x04, 0xD0, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03, 0x06, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0x84, 0xE5 - .byte 0x58, 0xD0, 0x8D, 0xE2, 0x70, 0x80, 0xBD, 0xE8, 0xA4, 0x4D, 0x32, 0x02, 0x04, 0x30, 0x32, 0x02 - .byte 0x0C, 0x30, 0x32, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0xE4, 0x30, 0x9F, 0xE5 - .byte 0x01, 0x50, 0xA0, 0xE1, 0x05, 0x18, 0xA0, 0xE1, 0x00, 0x60, 0xA0, 0xE1, 0x21, 0x08, 0xA0, 0xE1 - .byte 0x04, 0x30, 0x93, 0xE5, 0x06, 0x10, 0xA0, 0xE3, 0x90, 0x31, 0x21, 0xE0, 0x05, 0x1B, 0x81, 0xE2 - .byte 0xB6, 0x1E, 0xD1, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0x51, 0xE3, 0x00, 0x00, 0xA0, 0x03 - .byte 0x2A, 0x00, 0x00, 0x0A, 0xBD, 0x02, 0x00, 0xEB, 0xA8, 0x10, 0x9F, 0xE5, 0xB4, 0x00, 0xCD, 0xE1 - .byte 0x04, 0x00, 0x91, 0xE5, 0x00, 0x10, 0x8D, 0xE2, 0x85, 0x00, 0x80, 0xE0, 0x2D, 0x0C, 0x80, 0xE2 - .byte 0xBE, 0xCE, 0xD0, 0xE1, 0x01, 0x30, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1, 0x00, 0x20, 0xA0, 0xE3 - .byte 0xB2, 0xC0, 0xCD, 0xE1, 0x00, 0x30, 0xCD, 0xE5, 0xF0, 0x05, 0xF4, 0xEB, 0xF4, 0x00, 0xDD, 0xE1 - .byte 0x6C, 0x00, 0x00, 0xEB, 0x03, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x09, 0x00, 0x00, 0xEA - .byte 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA - .byte 0x54, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x00, 0xEA, 0x50, 0x10, 0x9F, 0xE5, 0x02, 0x00, 0x00, 0xEA - .byte 0x4C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x10, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1 - .byte 0x2D, 0xF6, 0xF5, 0xEB, 0x2C, 0x10, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE3, 0x04, 0x10, 0x91, 0xE5 - .byte 0x95, 0x10, 0x20, 0xE0, 0x01, 0x0A, 0x80, 0xE2, 0xEA, 0x04, 0xD0, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03, 0x06, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0x84, 0xE5 - .byte 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x80, 0xBD, 0xE8, 0xA4, 0x4D, 0x32, 0x02, 0x14, 0x30, 0x32, 0x02 - .byte 0x2C, 0x30, 0x32, 0x02, 0x48, 0x30, 0x32, 0x02 + + arm_func_start ov11_0230BD5C +ov11_0230BD5C: ; 0x0230BD5C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x58 + mov r5, r1 + mov r1, r5, lsl #0x10 + mov r6, r0 + mov r0, r1, lsr #0x10 + mov r4, r2 + bl ov11_0230C970 + ldr r1, _0230BE28 ; =0x02324DA4 + strh r0, [sp, #4] + ldr r3, [r1, #4] + mov r1, #1 + add r0, r3, r5, lsl #1 + add r0, r0, #0x2d00 + ldrh r2, [r0, #0xee] + add r0, r3, r5 + add r0, r0, #0x1000 + strh r2, [sp, #2] + strb r1, [sp] + ldrb r0, [r0, #0xb8] + add r1, sp, #0 + mov r2, #0 + tst r0, #2 + beq _0230BDEC + add r0, sp, #6 + bl sub_0200D65C + ldr r1, _0230BE2C ; =0x02323004 + mov r0, r6 + bl Strcpy + add r1, sp, #6 + mov r0, r6 + bl Strcat + ldr r1, _0230BE30 ; =0x0232300C + mov r0, r6 + bl Strcat + b _0230BDF4 +_0230BDEC: + mov r0, r6 + bl sub_0200D670 +_0230BDF4: + ldr r1, _0230BE28 ; =0x02324DA4 + mov r0, #6 + ldr r1, [r1, #4] + mla r0, r5, r0, r1 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x4ea] + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r6 + str r1, [r4] + add sp, sp, #0x58 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230BE28: .word 0x02324DA4 +_0230BE2C: .word 0x02323004 +_0230BE30: .word 0x0232300C + arm_func_end ov11_0230BD5C + + arm_func_start ov11_0230BE34 +ov11_0230BE34: ; 0x0230BE34 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r3, _0230BF28 ; =0x02324DA4 + mov r5, r1 + mov r1, r5, lsl #0x10 + mov r6, r0 + mov r0, r1, lsr #0x10 + ldr r3, [r3, #4] + mov r1, #6 + mla r1, r0, r1, r3 + add r1, r1, #0x1400 + ldrh r1, [r1, #0xe6] + mov r4, r2 + cmp r1, #4 + moveq r0, #0 + beq _0230BF20 + bl ov11_0230C970 + ldr r1, _0230BF28 ; =0x02324DA4 + strh r0, [sp, #4] + ldr r0, [r1, #4] + add r1, sp, #0 + add r0, r0, r5, lsl #1 + add r0, r0, #0x2d00 + ldrh ip, [r0, #0xee] + mov r3, #1 + mov r0, r6 + mov r2, #0 + strh ip, [sp, #2] + strb r3, [sp] + bl sub_0200D670 + ldrsh r0, [sp, #4] + bl ov11_0230C068 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230BEE8 +_0230BEC0: ; jump table + b _0230BED0 ; case 0 + b _0230BED0 ; case 1 + b _0230BED8 ; case 2 + b _0230BEE0 ; case 3 +_0230BED0: + ldr r1, _0230BF2C ; =0x02323014 + b _0230BEEC +_0230BED8: + ldr r1, _0230BF30 ; =0x0232302C + b _0230BEEC +_0230BEE0: + ldr r1, _0230BF34 ; =0x02323048 + b _0230BEEC +_0230BEE8: + mov r1, #0 +_0230BEEC: + mov r0, r6 + bl Strcat + ldr r1, _0230BF28 ; =0x02324DA4 + mov r0, #6 + ldr r1, [r1, #4] + mla r0, r5, r0, r1 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x4ea] + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r6 + str r1, [r4] +_0230BF20: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230BF28: .word 0x02324DA4 +_0230BF2C: .word 0x02323014 +_0230BF30: .word 0x0232302C +_0230BF34: .word 0x02323048 + arm_func_end ov11_0230BE34 arm_func_start ov11_0230BF38 ov11_0230BF38: ; 0x0230BF38 @@ -54344,11 +57335,21 @@ ov11_0230CA38: ; 0x0230CA38 .align 2, 0 _0230CA78: .word 0x02324DA4 arm_func_end ov11_0230CA38 -_0230CA7C: - .byte 0x10, 0x40, 0x2D, 0xE9 - .byte 0x18, 0x30, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE3, 0x02, 0x20, 0xA0, 0xE3 - .byte 0xF4, 0x65, 0xF4, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x14, 0x6C, 0xF4, 0xEB, 0x10, 0x80, 0xBD, 0xE8 - .byte 0xA9, 0x03, 0x00, 0x00 + + arm_func_start ov11_0230CA7C +ov11_0230CA7C: ; 0x0230CA7C + stmdb sp!, {r4, lr} + ldr r3, _0230CAA0 ; =0x000003A9 + mov r4, r0 + mov r1, #6 + mov r2, #2 + bl sub_02026268 + mov r0, r4 + bl sub_02027AF0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230CAA0: .word 0x000003A9 + arm_func_end ov11_0230CA7C arm_func_start ov11_0230CAA4 ov11_0230CAA4: ; 0x0230CAA4 @@ -54392,14 +57393,35 @@ ov11_0230CAE4: ; 0x0230CAE4 .align 2, 0 _0230CB24: .word 0x02324DA4 arm_func_end ov11_0230CAE4 -_0230CB28: - .byte 0x18, 0x40, 0x2D, 0xE9, 0x54, 0xD0, 0x4D, 0xE2 - .byte 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0x8D, 0xE2, 0xD4, 0x5A, 0xF4, 0xEB, 0x4C, 0xFB, 0xFF, 0xEB - .byte 0x3C, 0x10, 0x9F, 0xE5, 0x28, 0x00, 0x8D, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x02, 0x20, 0xA0, 0xE3 - .byte 0x46, 0x0C, 0x80, 0xE2, 0xB8, 0x32, 0xD0, 0xE1, 0x04, 0x10, 0x8D, 0xE2, 0x04, 0x00, 0xA0, 0xE1 - .byte 0x2C, 0x30, 0x8D, 0xE5, 0x00, 0x10, 0x8D, 0xE5, 0xEA, 0x3F, 0x82, 0xE2, 0x06, 0x10, 0xA0, 0xE3 - .byte 0xDA, 0x65, 0xF4, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xDC, 0x6B, 0xF4, 0xEB, 0x54, 0xD0, 0x8D, 0xE2 - .byte 0x18, 0x80, 0xBD, 0xE8, 0xA4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230CB28 +ov11_0230CB28: ; 0x0230CB28 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x54 + mov r4, r0 + add r0, sp, #4 + bl InitPreprocessorArgs + bl ov11_0230B874 + ldr r1, _0230CB84 ; =0x02324DA4 + str r0, [sp, #0x28] + ldr r0, [r1, #4] + mov r2, #2 + add r0, r0, #0x4600 + ldrh r3, [r0, #0x28] + add r1, sp, #4 + mov r0, r4 + str r3, [sp, #0x2c] + str r1, [sp] + add r3, r2, #0x3a8 + mov r1, #6 + bl sub_020262E0 + mov r0, r4 + bl sub_02027AF0 + add sp, sp, #0x54 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0230CB84: .word 0x02324DA4 + arm_func_end ov11_0230CB28 arm_func_start ov11_0230CB88 ov11_0230CB88: ; 0x0230CB88 @@ -54493,8 +57515,15 @@ ov11_0230CC4C: ; 0x0230CC4C _0230CC68: .word 0x023230BC _0230CC6C: .word 0x02324DAC arm_func_end ov11_0230CC4C -_0230CC70: - .byte 0x04, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0xD0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0xAC, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230CC70 +ov11_0230CC70: ; 0x0230CC70 + ldr r0, _0230CC7C ; =0x02324DAC + ldrb r0, [r0] + bx lr + .align 2, 0 +_0230CC7C: .word 0x02324DAC + arm_func_end ov11_0230CC70 arm_func_start ov11_0230CC80 ov11_0230CC80: ; 0x0230CC80 @@ -54530,14 +57559,44 @@ _0230CCD4: .word 0x023230EC _0230CCD8: .word 0x023230DC _0230CCDC: .word 0x02324DB4 arm_func_end ov11_0230CCA8 -_0230CCE0: - .byte 0x04, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0xD0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0xB4, 0x4D, 0x32, 0x02 - .byte 0x10, 0x40, 0x2D, 0xE9, 0x40, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0xD1, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x0A, 0x00, 0x00, 0x0A, 0x30, 0xE0, 0x9F, 0xE5, 0x09, 0xC0, 0xA0, 0xE3 - .byte 0x0F, 0x00, 0xBE, 0xE8, 0x0F, 0x00, 0xA4, 0xE8, 0x01, 0xC0, 0x5C, 0xE2, 0xFB, 0xFF, 0xFF, 0x1A - .byte 0x1C, 0x20, 0x9F, 0xE5, 0x03, 0x00, 0x9E, 0xE8, 0x03, 0x00, 0x84, 0xE8, 0x00, 0x00, 0x92, 0xE5 - .byte 0x10, 0x80, 0xBD, 0xE8, 0x00, 0x00, 0xA0, 0xE3, 0x10, 0x80, 0xBD, 0xE8, 0xB4, 0x4D, 0x32, 0x02 - .byte 0x98, 0xA0, 0x38, 0x02, 0x94, 0xA0, 0x38, 0x02 + + arm_func_start ov11_0230CCE0 +ov11_0230CCE0: ; 0x0230CCE0 + ldr r0, _0230CCEC ; =0x02324DB4 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0230CCEC: .word 0x02324DB4 + arm_func_end ov11_0230CCE0 + + arm_func_start ov11_0230CCF0 +ov11_0230CCF0: ; 0x0230CCF0 + stmdb sp!, {r4, lr} + ldr r1, _0230CD3C ; =0x02324DB4 + mov r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0230CD34 + ldr lr, _0230CD40 ; =0x0238A098 + mov ip, #9 +_0230CD10: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230CD10 + ldr r2, _0230CD44 ; =0x0238A094 + ldmia lr, {r0, r1} + stmia r4, {r0, r1} + ldr r0, [r2] + ldmia sp!, {r4, pc} +_0230CD34: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230CD3C: .word 0x02324DB4 +_0230CD40: .word 0x0238A098 +_0230CD44: .word 0x0238A094 + arm_func_end ov11_0230CCF0 arm_func_start ov11_0230CD48 ov11_0230CD48: ; 0x0230CD48 @@ -54666,10 +57725,19 @@ ov11_0230CE44: ; 0x0230CE44 _0230CE50: .word sub_020348E4 _0230CE54: .word 0x023231AC arm_func_end ov11_0230CE44 -_0230CE58: - .byte 0x10, 0xC0, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE1 - .byte 0x01, 0x20, 0xA0, 0xE1, 0x08, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0xA0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1 - .byte 0x74, 0x49, 0x03, 0x02, 0xAC, 0x31, 0x32, 0x02 + + arm_func_start ov11_0230CE58 +ov11_0230CE58: ; 0x0230CE58 + ldr ip, _0230CE70 ; =sub_02034974 + mov r3, r0 + mov r2, r1 + ldr r0, _0230CE74 ; =0x023231AC + mov r1, r3 + bx ip + .align 2, 0 +_0230CE70: .word sub_02034974 +_0230CE74: .word 0x023231AC + arm_func_end ov11_0230CE58 arm_func_start ov11_0230CE78 ov11_0230CE78: ; 0x0230CE78 @@ -55372,10 +58440,22 @@ ov11_0230D730: ; 0x0230D730 _0230D73C: .word ov11_0230D17C _0230D740: .word 0x023231E0 arm_func_end ov11_0230D730 -_0230D744: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x04, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0x86, 0xCE, 0xF3, 0xEB, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0x00, 0x20, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0xC0, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230D744 +ov11_0230D744: ; 0x0230D744 + stmdb sp!, {r3, lr} + mov r0, #4 + mov r1, #0xf + bl MemAlloc + ldr r1, _0230D76C ; =0x02324DC0 + mov r2, #0 + str r0, [r1] + str r2, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D76C: .word 0x02324DC0 + arm_func_end ov11_0230D744 arm_func_start ov11_0230D770 ov11_0230D770: ; 0x0230D770 @@ -55400,25 +58480,96 @@ _0230D794: .align 2, 0 _0230D7B4: .word 0x02324DC0 arm_func_end ov11_0230D770 -_0230D7B8: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x06, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03 - .byte 0xFF, 0x00, 0x00, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0xC0, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0xC0, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x05, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x29, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x1C, 0x00, 0x00, 0xEA - .byte 0x26, 0x00, 0x00, 0xEA, 0x21, 0x00, 0x00, 0xEA, 0x24, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA - .byte 0xD8, 0x71, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x20, 0x00, 0x00, 0x1A, 0xFC, 0x71, 0xFF, 0xEB - .byte 0x01, 0x0C, 0x50, 0xE3, 0x7C, 0x00, 0x9F, 0x05, 0x04, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x90, 0x05 - .byte 0x00, 0x10, 0x80, 0x05, 0x19, 0x00, 0x00, 0x0A, 0xF5, 0x71, 0xFF, 0xEB, 0xFF, 0x10, 0xE0, 0xE3 - .byte 0x01, 0x00, 0x50, 0xE1, 0x5C, 0x00, 0x9F, 0x05, 0x02, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x90, 0x05 - .byte 0x00, 0x10, 0x80, 0x05, 0x11, 0x00, 0x00, 0x0A, 0x10, 0x00, 0xA0, 0xE3, 0x13, 0x71, 0xFF, 0xEB - .byte 0x40, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x10, 0x80, 0xE5 - .byte 0x0A, 0x00, 0x00, 0xEA, 0xBF, 0x71, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x24, 0x00, 0x9F, 0x05 - .byte 0x02, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x90, 0x05, 0x00, 0x10, 0x80, 0x05, 0x03, 0x00, 0x00, 0xEA - .byte 0x06, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x00, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0xC0, 0x4D, 0x32, 0x02, 0x18, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x50, 0x13 - .byte 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13, 0x1E, 0xFF, 0x2F, 0xE1, 0xC0, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230D7B8 +ov11_0230D7B8: ; 0x0230D7B8 + ldr r0, _0230D7D8 ; =0x02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #6 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0230D7D8: .word 0x02324DC0 + arm_func_end ov11_0230D7B8 + + arm_func_start ov11_0230D7DC +ov11_0230D7DC: ; 0x0230D7DC + stmdb sp!, {r3, lr} + ldr r0, _0230D8A8 ; =0x02324DC0 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0230D8A0 +_0230D7F8: ; jump table + b _0230D810 ; case 0 + b _0230D874 ; case 1 + b _0230D8A0 ; case 2 + b _0230D890 ; case 3 + b _0230D8A0 ; case 4 + b _0230D890 ; case 5 +_0230D810: + bl ov11_022E9F78 + cmp r0, #0 + bne _0230D8A0 + bl ov11_022EA014 + cmp r0, #0x100 + ldreq r0, _0230D8A8 ; =0x02324DC0 + moveq r1, #4 + ldreq r0, [r0] + streq r1, [r0] + beq _0230D8A0 + bl ov11_022EA014 + mvn r1, #0xff + cmp r0, r1 + ldreq r0, _0230D8A8 ; =0x02324DC0 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + beq _0230D8A0 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230D8A8 ; =0x02324DC0 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _0230D8A0 +_0230D874: + bl ov11_022E9F78 + cmp r0, #0 + ldreq r0, _0230D8A8 ; =0x02324DC0 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + b _0230D8A0 +_0230D890: + mov r0, #6 + str r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} +_0230D8A0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D8A8: .word 0x02324DC0 + arm_func_end ov11_0230D7DC + + arm_func_start ov11_0230D8AC +ov11_0230D8AC: ; 0x0230D8AC + ldr r0, _0230D8CC ; =0x02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0230D8CC: .word 0x02324DC0 + arm_func_end ov11_0230D8AC arm_func_start ov11_0230D8D0 ov11_0230D8D0: ; 0x0230D8D0 @@ -55473,15 +58624,44 @@ ov11_0230D940: ; 0x0230D940 .align 2, 0 _0230D968: .word 0x02324DC4 arm_func_end ov11_0230D940 -_0230D96C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x30, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x08, 0x80, 0xBD, 0x18 - .byte 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xFA, 0xCD, 0xF3, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xC4, 0x4D, 0x32, 0x02, 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x08, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0xFF, 0x00, 0x00, 0xE2 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xC4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230D96C +ov11_0230D96C: ; 0x0230D96C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230D990 + ldr r0, _0230D9B0 ; =0x02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #8 + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230D990: + ldr r0, _0230D9B0 ; =0x02324DC4 + ldr r0, [r0] + bl MemFree + ldr r0, _0230D9B0 ; =0x02324DC4 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D9B0: .word 0x02324DC4 + arm_func_end ov11_0230D96C + + arm_func_start ov11_0230D9B4 +ov11_0230D9B4: ; 0x0230D9B4 + ldr r0, _0230D9D4 ; =0x02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #8 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0230D9D4: .word 0x02324DC4 + arm_func_end ov11_0230D9B4 arm_func_start ov11_0230D9D8 ov11_0230D9D8: ; 0x0230D9D8 @@ -55558,16 +58738,48 @@ _0230DACC: .align 2, 0 _0230DAD4: .word 0x02324DC4 arm_func_end ov11_0230D9D8 -_0230DAD8: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x50, 0x13, 0x01, 0x00, 0xA0, 0x03 - .byte 0x00, 0x00, 0xA0, 0x13, 0x1E, 0xFF, 0x2F, 0xE1, 0xC4, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x00, 0x50, 0xE3 - .byte 0x04, 0x00, 0x50, 0x13, 0x08, 0x80, 0xBD, 0x18, 0x01, 0x00, 0xA0, 0xE3, 0x02, 0x10, 0xA0, 0xE3 - .byte 0x0F, 0xED, 0xF3, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x03, 0x10, 0xA0, 0xE3, 0x0C, 0xED, 0xF3, 0xEB - .byte 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x91, 0xE5, 0x02, 0x00, 0x50, 0xE3 - .byte 0x03, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x81, 0x05, 0x05, 0x00, 0xA0, 0x13, 0x00, 0x00, 0x81, 0x15 - .byte 0x08, 0x80, 0xBD, 0xE8, 0xC4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230DAD8 +ov11_0230DAD8: ; 0x0230DAD8 + ldr r0, _0230DAF8 ; =0x02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0230DAF8: .word 0x02324DC4 + arm_func_end ov11_0230DAD8 + + arm_func_start ov11_0230DAFC +ov11_0230DAFC: ; 0x0230DAFC + stmdb sp!, {r3, lr} + ldr r0, _0230DB54 ; =0x02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + ldmneia sp!, {r3, pc} + mov r0, #1 + mov r1, #2 + bl sub_02008F64 + mov r0, #1 + mov r1, #3 + bl sub_02008F64 + ldr r0, _0230DB54 ; =0x02324DC4 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #2 + moveq r0, #3 + streq r0, [r1] + movne r0, #5 + strne r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DB54: .word 0x02324DC4 + arm_func_end ov11_0230DAFC arm_func_start ov11_0230DB58 ov11_0230DB58: ; 0x0230DB58 @@ -55678,10 +58890,19 @@ _0230DCA0: .align 2, 0 _0230DCB4: .word 0x02324DC8 arm_func_end ov11_0230DC3C -_0230DCB8: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x00, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x0C, 0x00, 0xD1, 0x05 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xC8, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230DCB8 +ov11_0230DCB8: ; 0x0230DCB8 + ldr r0, _0230DCD4 ; =0x02324DC8 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_0230DCD4: .word 0x02324DC8 + arm_func_end ov11_0230DCB8 arm_func_start ov11_0230DCD8 ov11_0230DCD8: ; 0x0230DCD8 @@ -55803,15 +59024,40 @@ _0230DE78: .align 2, 0 _0230DE80: .word 0x02324DC8 arm_func_end ov11_0230DCD8 -_0230DE84: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x60, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x0C, 0x00, 0xC1, 0xE5, 0x64, 0xFF, 0xFF, 0xEB, 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0xAE, 0xCC, 0xF3, 0xEB, 0x34, 0x20, 0x9F, 0xE5, 0x34, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x82, 0xE5 - .byte 0x54, 0x77, 0xFF, 0xEB, 0x24, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x08, 0x20, 0x91, 0xE5, 0x06, 0x00, 0x92, 0xE8, 0xE1, 0x7F, 0xFF, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xC8, 0x4D, 0x32, 0x02, 0x28, 0x32, 0x32, 0x02 + + arm_func_start ov11_0230DE84 +ov11_0230DE84: ; 0x0230DE84 + stmdb sp!, {r3, lr} + ldr r0, _0230DEF0 ; =0x02324DC8 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r1, #0xc] + bl ov11_0230DC3C + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230DEF0 ; =0x02324DC8 + ldr r1, _0230DEF4 ; =0x02323228 + str r0, [r2] + bl ov11_022EBC18 + ldr r0, _0230DEF0 ; =0x02324DC8 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [r1, #8] + ldmia r2, {r1, r2} + bl ov11_022EDE64 + ldr r0, _0230DEF0 ; =0x02324DC8 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DEF0: .word 0x02324DC8 +_0230DEF4: .word 0x02323228 + arm_func_end ov11_0230DE84 arm_func_start ov11_0230DEF8 ov11_0230DEF8: ; 0x0230DEF8 @@ -55843,16 +59089,46 @@ _0230DF50: .align 2, 0 _0230DF58: .word 0x02324DC8 arm_func_end ov11_0230DEF8 -_0230DF5C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x74, 0x00, 0x9F, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xD2, 0xE5, 0x00, 0x00, 0x51, 0xE3 - .byte 0x00, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13, 0x08, 0x80, 0xBD, 0x08, 0x08, 0x00, 0x92, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x02, 0x10, 0xA0, 0xE3, 0xF2, 0xEB, 0xF3, 0xEB, 0x3C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x08, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A - .byte 0x01, 0x00, 0xA0, 0xE3, 0x03, 0x10, 0xA0, 0xE3, 0xE9, 0xEB, 0xF3, 0xEB, 0x18, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0xE9, 0x86, 0xFF, 0xEB, 0x0C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x10, 0xC0, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0xC8, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230DF5C +ov11_0230DF5C: ; 0x0230DF5C + stmdb sp!, {r3, lr} + ldr r0, _0230DFDC ; =0x02324DC8 + ldr r2, [r0, #4] + ldrb r1, [r2] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r2, #8] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0230DF98 + mov r0, #1 + mov r1, #2 + bl sub_02008F64 +_0230DF98: + ldr r0, _0230DFDC ; =0x02324DC8 + ldr r0, [r0, #4] + ldr r0, [r0, #8] + ldr r0, [r0] + cmp r0, #0 + bne _0230DFBC + mov r0, #1 + mov r1, #3 + bl sub_02008F64 +_0230DFBC: + ldr r0, _0230DFDC ; =0x02324DC8 + ldr r0, [r0] + bl ov11_022EFB70 + ldr r0, _0230DFDC ; =0x02324DC8 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DFDC: .word 0x02324DC8 + arm_func_end ov11_0230DF5C arm_func_start ov11_0230DFE0 ov11_0230DFE0: ; 0x0230DFE0 @@ -55974,10 +59250,24 @@ _0230E13C: .align 2, 0 _0230E150: .word 0x02324DD4 arm_func_end ov11_0230E0D8 -_0230E154: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xD1, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x09, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0xD4, 0x4D, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_0230E154 +ov11_0230E154: ; 0x0230E154 + ldr r0, _0230E170 ; =0x02324DD4 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_0230E170: .word 0x02324DD4 + arm_func_end ov11_0230E154 + + arm_func_start ov11_0230E174 +ov11_0230E174: ; 0x0230E174 + bx lr + arm_func_end ov11_0230E174 arm_func_start ov11_0230E178 ov11_0230E178: ; 0x0230E178 @@ -56108,27 +59398,100 @@ _0230E338: .align 2, 0 _0230E340: .word 0x02324DD4 arm_func_end ov11_0230E178 -_0230E344: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x88, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x09, 0x00, 0xC1, 0xE5, 0x5B, 0xFF, 0xFF, 0xEB, 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0x7E, 0xCB, 0xF3, 0xEB, 0x5C, 0x20, 0x9F, 0xE5, 0x5C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x82, 0xE5 - .byte 0x24, 0x76, 0xFF, 0xEB, 0x4C, 0x00, 0x9F, 0xE5, 0x50, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0xB2, 0x7E, 0xFF, 0xEB, 0x38, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x08, 0x00, 0xD0, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0xF4, 0xE7, 0xF4, 0xEB - .byte 0x00, 0xE8, 0xF4, 0xEB, 0x1C, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0x08, 0x10, 0xC0, 0xE5, 0x0C, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0x04, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0xD4, 0x4D, 0x32, 0x02, 0x68, 0x32, 0x32, 0x02 - .byte 0xA8, 0x32, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9, 0x40, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x10, 0x91, 0xE5, 0x03, 0x00, 0x51, 0xE3, 0x0A, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x90, 0xE5 - .byte 0xC1, 0x84, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x4B, 0x84, 0xFF, 0xEB, 0x1C, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x30, 0xA0, 0xE3, 0x04, 0x20, 0x90, 0xE5, 0x04, 0x10, 0xA0, 0xE3, 0x00, 0x30, 0xC2, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xD4, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9, 0x34, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x00, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13 - .byte 0x08, 0x80, 0xBD, 0x08, 0xC5, 0x85, 0xFF, 0xEB, 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3 - .byte 0x04, 0x10, 0x90, 0xE5, 0x10, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xC1, 0xE5, 0x09, 0x6E, 0xFF, 0xEB - .byte 0x08, 0x80, 0xBD, 0xE8, 0xD4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230E344 +ov11_0230E344: ; 0x0230E344 + stmdb sp!, {r3, lr} + ldr r0, _0230E3D8 ; =0x02324DD4 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r1, #9] + bl ov11_0230E0D8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230E3D8 ; =0x02324DD4 + ldr r1, _0230E3DC ; =0x02323268 + str r0, [r2] + bl ov11_022EBC18 + ldr r0, _0230E3D8 ; =0x02324DD4 + ldr r1, _0230E3E0 ; =0x023232A8 + ldr r0, [r0] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _0230E3D8 ; =0x02324DD4 + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0230E3C4 + bl sub_02048384 + bl sub_020483B8 + ldr r0, _0230E3D8 ; =0x02324DD4 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_0230E3C4: + ldr r0, _0230E3D8 ; =0x02324DD4 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E3D8: .word 0x02324DD4 +_0230E3DC: .word 0x02323268 +_0230E3E0: .word 0x023232A8 + arm_func_end ov11_0230E344 + + arm_func_start ov11_0230E3E4 +ov11_0230E3E4: ; 0x0230E3E4 + stmdb sp!, {r3, lr} + ldr r0, _0230E430 ; =0x02324DD4 + ldr r1, [r0, #4] + ldr r1, [r1, #4] + cmp r1, #3 + bne _0230E428 + ldr r0, [r0] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _0230E430 ; =0x02324DD4 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #4 + strb r3, [r2] + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E428: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E430: .word 0x02324DD4 + arm_func_end ov11_0230E3E4 + + arm_func_start ov11_0230E434 +ov11_0230E434: ; 0x0230E434 + stmdb sp!, {r3, lr} + ldr r0, _0230E474 ; =0x02324DD4 + ldr r1, [r0, #4] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022EFB70 + ldr r0, _0230E474 ; =0x02324DD4 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x10 + strb r2, [r1] + bl ov11_022E9C98 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E474: .word 0x02324DD4 + arm_func_end ov11_0230E434 arm_func_start ov11_0230E478 ov11_0230E478: ; 0x0230E478 @@ -56177,16 +59540,44 @@ ov11_0230E4A0: ; 0x0230E4A0 .align 2, 0 _0230E4F8: .word 0x02324DDC arm_func_end ov11_0230E4A0 -_0230E4FC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x64, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x08, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x0B, 0x00, 0xC1, 0x15 - .byte 0x00, 0x00, 0xA0, 0x13, 0x08, 0x80, 0xBD, 0x18, 0x12, 0x00, 0x00, 0xEB, 0x40, 0x00, 0x9F, 0xE5 - .byte 0x08, 0x30, 0xA0, 0xE3, 0x04, 0x20, 0x90, 0xE5, 0x0A, 0x10, 0x43, 0xE2, 0x04, 0x30, 0x82, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0xD8, 0x00, 0xD0, 0xE1, 0x01, 0x00, 0x50, 0xE1, 0x00, 0x00, 0x00, 0x0A - .byte 0x5F, 0x86, 0xF4, 0xEB, 0x18, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x09, 0xCB, 0xF3, 0xEB - .byte 0x0C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0xDC, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0230E4FC +ov11_0230E4FC: ; 0x0230E4FC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230E528 + ldr r0, _0230E574 ; =0x02324DDC + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #0xb] + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230E528: + bl ov11_0230E578 + ldr r0, _0230E574 ; =0x02324DDC + mov r3, #8 + ldr r2, [r0, #4] + sub r1, r3, #0xa + str r3, [r2, #4] + ldr r0, [r0, #4] + ldrsb r0, [r0, #8] + cmp r0, r1 + beq _0230E554 + bl sub_0202FED4 +_0230E554: + ldr r0, _0230E574 ; =0x02324DDC + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230E574 ; =0x02324DDC + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E574: .word 0x02324DDC + arm_func_end ov11_0230E4FC arm_func_start ov11_0230E578 ov11_0230E578: ; 0x0230E578 @@ -56224,10 +59615,24 @@ _0230E5DC: .align 2, 0 _0230E5F0: .word 0x02324DDC arm_func_end ov11_0230E578 -_0230E5F4: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xD1, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x09, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0xDC, 0x4D, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_0230E5F4 +ov11_0230E5F4: ; 0x0230E5F4 + ldr r0, _0230E610 ; =0x02324DDC + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_0230E610: .word 0x02324DDC + arm_func_end ov11_0230E5F4 + + arm_func_start ov11_0230E614 +ov11_0230E614: ; 0x0230E614 + bx lr + arm_func_end ov11_0230E614 arm_func_start ov11_0230E618 ov11_0230E618: ; 0x0230E618 @@ -56360,22 +59765,70 @@ _0230E7E0: .align 2, 0 _0230E7E8: .word 0x02324DDC arm_func_end ov11_0230E618 -_0230E7EC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0xC8, 0x00, 0x9F, 0xE5, 0x04, 0x30, 0x90, 0xE5, 0x04, 0x10, 0x93, 0xE5, 0x02, 0x00, 0x51, 0xE3 - .byte 0x13, 0x00, 0x00, 0x1A, 0x01, 0x20, 0xA0, 0xE3, 0x09, 0x20, 0xC3, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x03, 0x00, 0x42, 0xE2, 0xD8, 0x10, 0xD1, 0xE1, 0x00, 0x00, 0x51, 0xE1, 0x07, 0x00, 0x00, 0x1A - .byte 0x00, 0x00, 0xA0, 0xE3, 0x98, 0x30, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1, 0x00, 0x20, 0xA0, 0xE1 - .byte 0x7D, 0x85, 0xF4, 0xEB, 0x84, 0x10, 0x9F, 0xE5, 0x04, 0x10, 0x91, 0xE5, 0x08, 0x00, 0xC1, 0xE5 - .byte 0x78, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x03, 0x00, 0x51, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x09, 0x10, 0xC3, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0xD8, 0x00, 0xD0, 0xE1, 0x9F, 0x85, 0xF4, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x80, 0xBD, 0x18, 0x3E, 0xFF, 0xFF, 0xEB, 0xBD, 0x0F, 0xA0, 0xE3 - .byte 0x0F, 0x10, 0xA0, 0xE3, 0x39, 0xCA, 0xF3, 0xEB, 0x30, 0x20, 0x9F, 0xE5, 0x34, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x82, 0xE5, 0xDF, 0x74, 0xFF, 0xEB, 0x20, 0x00, 0x9F, 0xE5, 0x28, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x6D, 0x7D, 0xFF, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xDC, 0x4D, 0x32, 0x02, 0xCA, 0x3F, 0x00, 0x00, 0xBC, 0x32, 0x32, 0x02, 0xFC, 0x32, 0x32, 0x02 + + arm_func_start ov11_0230E7EC +ov11_0230E7EC: ; 0x0230E7EC + stmdb sp!, {r3, lr} + ldr r0, _0230E8C0 ; =0x02324DDC + ldr r3, [r0, #4] + ldr r1, [r3, #4] + cmp r1, #2 + bne _0230E854 + mov r2, #1 + strb r2, [r3, #9] + ldr r1, [r0, #4] + sub r0, r2, #3 + ldrsb r1, [r1, #8] + cmp r1, r0 + bne _0230E840 + mov r0, #0 + ldr r3, _0230E8C4 ; =0x00003FCA + mov r1, r0 + mov r2, r0 + bl sub_0202FE2C + ldr r1, _0230E8C0 ; =0x02324DDC + ldr r1, [r1, #4] + strb r0, [r1, #8] +_0230E840: + ldr r0, _0230E8C0 ; =0x02324DDC + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} +_0230E854: + cmp r1, #3 + ldmneia sp!, {r3, pc} + mov r1, #1 + strb r1, [r3, #9] + ldr r0, [r0, #4] + ldrsb r0, [r0, #8] + bl sub_0202FEF0 + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl ov11_0230E578 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230E8C0 ; =0x02324DDC + ldr r1, _0230E8C8 ; =0x023232BC + str r0, [r2] + bl ov11_022EBC18 + ldr r0, _0230E8C0 ; =0x02324DDC + ldr r1, _0230E8CC ; =0x023232FC + ldr r0, [r0] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _0230E8C0 ; =0x02324DDC + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E8C0: .word 0x02324DDC +_0230E8C4: .word 0x00003FCA +_0230E8C8: .word 0x023232BC +_0230E8CC: .word 0x023232FC + arm_func_end ov11_0230E7EC arm_func_start ov11_0230E8D0 ov11_0230E8D0: ; 0x0230E8D0 @@ -57185,10 +60638,23 @@ _0230F350: .align 2, 0 _0230F358: .word 0x02324DE4 arm_func_end ov11_0230F28C -_0230F35C: - .byte 0x10, 0x00, 0x9F, 0xE5 - .byte 0x08, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0xD0, 0x15, 0x00, 0x00, 0xA0, 0x03 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x4D, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_0230F35C +ov11_0230F35C: ; 0x0230F35C + ldr r0, _0230F374 ; =0x02324DE4 + ldr r0, [r0, #8] + cmp r0, #0 + ldrneb r0, [r0, #0xc] + moveq r0, #0 + bx lr + .align 2, 0 +_0230F374: .word 0x02324DE4 + arm_func_end ov11_0230F35C + + arm_func_start ov11_0230F378 +ov11_0230F378: ; 0x0230F378 + bx lr + arm_func_end ov11_0230F378 arm_func_start ov11_0230F37C ov11_0230F37C: ; 0x0230F37C @@ -58084,103 +61550,427 @@ _02310068: .word 0x02323490 _0231006C: .word 0x00000136 _02310070: .word 0x0000080D arm_func_end ov11_0230F37C -_02310074: - .byte 0x38, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x98, 0x12, 0x9F, 0xE5 - .byte 0x08, 0x20, 0x91, 0xE5, 0x08, 0x00, 0x92, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x6F, 0x00, 0x00, 0x1A - .byte 0x01, 0x00, 0xA0, 0xE3, 0x0C, 0x00, 0xC2, 0xE5, 0x08, 0x20, 0x91, 0xE5, 0x7C, 0x12, 0x9F, 0xE5 - .byte 0xF2, 0x50, 0xD2, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x64, 0xF0, 0xF3, 0xEB, 0xD3, 0xFA, 0xFF, 0xEB - .byte 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0x2C, 0xC4, 0xF3, 0xEB, 0x58, 0x22, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x82, 0xE5, 0x08, 0x00, 0x92, 0xE5, 0x01, 0x00, 0x55, 0xE1 - .byte 0xB2, 0x50, 0xC0, 0xE1, 0x0B, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x92, 0xE5, 0x40, 0x12, 0x9F, 0xE5 - .byte 0xCC, 0x6E, 0xFF, 0xEB, 0x30, 0x02, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0x61, 0x70, 0xFF, 0xEB, 0x20, 0x02, 0x9F, 0xE5, 0x06, 0x00, 0x90, 0xE9, 0x10, 0x00, 0x82, 0xE2 - .byte 0x15, 0x7F, 0xFF, 0xEB, 0x38, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0xA0, 0xE3, 0x85, 0x00, 0x61, 0xE1 - .byte 0x10, 0x32, 0x9F, 0xE5, 0xF1, 0x00, 0x93, 0xE1, 0x01, 0x40, 0x83, 0xE0, 0x01, 0x00, 0x80, 0xE2 - .byte 0x0C, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x1C, 0x00, 0x00, 0xEA, 0x11, 0x00, 0x00, 0xEA - .byte 0x1A, 0x00, 0x00, 0xEA, 0x19, 0x00, 0x00, 0xEA, 0x18, 0x00, 0x00, 0xEA, 0x17, 0x00, 0x00, 0xEA - .byte 0x16, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA - .byte 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA - .byte 0x04, 0x00, 0x92, 0xE5, 0xC0, 0x11, 0x9F, 0xE5, 0xAA, 0x6E, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0xF1, 0x7C, 0xFF, 0xEB, 0x0F, 0x00, 0x00, 0xEA, 0xB0, 0x01, 0x9F, 0xE5, 0xF0, 0x30, 0xD4, 0xE1 - .byte 0x1C, 0xC0, 0x90, 0xE5, 0x18, 0xE0, 0x90, 0xE5, 0xA4, 0x11, 0x9F, 0xE5, 0x00, 0x00, 0x8D, 0xE2 - .byte 0x05, 0x20, 0xA0, 0xE1, 0x00, 0xE0, 0x8D, 0xE5, 0x04, 0xC0, 0x8D, 0xE5, 0x2E, 0xF0, 0xF3, 0xEB - .byte 0x74, 0x01, 0x9F, 0xE5, 0x78, 0x11, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x99, 0x6E, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0xC1, 0x09, 0x00, 0xEB, 0x5C, 0x01, 0x9F, 0xE5, 0xF4, 0x10, 0xD4, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0x2C, 0x70, 0xFF, 0xEB, 0x4C, 0x01, 0x9F, 0xE5, 0x06, 0x00, 0x90, 0xE9 - .byte 0x10, 0x00, 0x82, 0xE2, 0xE0, 0x7E, 0xFF, 0xEB, 0x3C, 0x01, 0x9F, 0xE5, 0x54, 0x21, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x39, 0x7C, 0xFF, 0xEB, 0x28, 0x01, 0x9F, 0xE5 - .byte 0x08, 0x20, 0x90, 0xE5, 0x05, 0x10, 0xD2, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x0F, 0x00, 0x00, 0x0A - .byte 0x03, 0x10, 0xA0, 0xE3, 0x08, 0x10, 0x82, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x28, 0x21, 0x9F, 0xE5 - .byte 0x1B, 0x0D, 0x80, 0xE2, 0x9A, 0x10, 0xA0, 0xE3, 0x10, 0x9B, 0xFF, 0xEB, 0xF8, 0x00, 0x9F, 0xE5 - .byte 0x08, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0x1B, 0x0D, 0x80, 0xE2, 0xD0, 0x91, 0xFF, 0xEB - .byte 0xE4, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0xBC, 0x16, 0xC0, 0xE5 - .byte 0xD4, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0x08, 0x10, 0x80, 0xE5 - .byte 0xC4, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x90, 0xE5, 0x0F, 0x0A, 0x81, 0xE2, 0x8C, 0x0E, 0xD0, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x2A, 0x00, 0x00, 0x0A, 0xF9, 0x0C, 0x81, 0xE2, 0xD8, 0x09, 0xD0, 0xE1 - .byte 0x01, 0x10, 0xE0, 0xE3, 0x01, 0x00, 0x50, 0xE1, 0x0C, 0x00, 0x00, 0x0A, 0xBA, 0x7E, 0xF4, 0xEB - .byte 0x00, 0x00, 0x50, 0xE3, 0x09, 0x00, 0x00, 0x1A, 0x8C, 0x00, 0x9F, 0xE5, 0x08, 0x00, 0x90, 0xE5 - .byte 0xF9, 0x0C, 0x80, 0xE2, 0xD8, 0x09, 0xD0, 0xE1, 0xAC, 0x7E, 0xF4, 0xEB, 0x78, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x10, 0xE0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0x0F, 0x0A, 0x80, 0xE2, 0x98, 0x19, 0xC0, 0xE5 - .byte 0x64, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xE0, 0xE3, 0x08, 0x20, 0x90, 0xE5, 0xF9, 0x0C, 0x82, 0xE2 - .byte 0xD8, 0x09, 0xD0, 0xE1, 0x01, 0x00, 0x50, 0xE1, 0x11, 0x00, 0x00, 0x1A, 0xFE, 0x0C, 0x82, 0xE2 - .byte 0xFE, 0x38, 0xD0, 0xE1, 0x01, 0x00, 0x81, 0xE2, 0x00, 0x00, 0x53, 0xE1, 0x07, 0x00, 0x00, 0x0A - .byte 0x58, 0x00, 0x9F, 0xE5, 0x13, 0x10, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0x32, 0x7E, 0xF4, 0xEB - .byte 0x24, 0x10, 0x9F, 0xE5, 0x08, 0x10, 0x91, 0xE5, 0x0F, 0x1A, 0x81, 0xE2, 0x98, 0x09, 0xC1, 0xE5 - .byte 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0x0F, 0x0A, 0x80, 0xE2 - .byte 0x8C, 0x1E, 0xC0, 0xE5, 0x08, 0xD0, 0x8D, 0xE2, 0x38, 0x80, 0xBD, 0xE8, 0xE4, 0x4D, 0x32, 0x02 - .byte 0x30, 0x37, 0x32, 0x02, 0x94, 0x33, 0x32, 0x02, 0x88, 0x54, 0x0A, 0x02, 0xB0, 0x33, 0x32, 0x02 - .byte 0x10, 0x33, 0x32, 0x02, 0x50, 0x37, 0x32, 0x02, 0x30, 0x33, 0x32, 0x02, 0x00, 0x00, 0x08, 0xA4 - .byte 0x40, 0x33, 0x32, 0x02, 0xF8, 0x4F, 0x2D, 0xE9, 0x18, 0xD0, 0x4D, 0xE2, 0xD0, 0x02, 0x9F, 0xE5 - .byte 0x08, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x07, 0x00, 0x50, 0xE3, 0x06, 0x00, 0x50, 0x13 - .byte 0x00, 0x00, 0x50, 0x13, 0x05, 0x00, 0x50, 0x13, 0xA9, 0x00, 0x00, 0x1A, 0x10, 0x10, 0x8D, 0xE2 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x13, 0x6C, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03 - .byte 0x10, 0x00, 0x8D, 0x05, 0x14, 0x00, 0x8D, 0x05, 0x94, 0x02, 0x9F, 0xE5, 0x08, 0x00, 0x90, 0xE5 - .byte 0x2C, 0x10, 0x90, 0xE5, 0x03, 0x00, 0x51, 0xE3, 0x41, 0x00, 0x00, 0x1A, 0x0F, 0x1A, 0x80, 0xE2 - .byte 0x90, 0x29, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x3D, 0x00, 0x00, 0xDA, 0x94, 0x19, 0x91, 0xE5 - .byte 0x0F, 0x0A, 0x80, 0xE2, 0x10, 0x10, 0x91, 0xE5, 0x02, 0x10, 0x41, 0xE0, 0x1E, 0x90, 0x51, 0xE2 - .byte 0x90, 0x29, 0x90, 0xE5, 0x58, 0x12, 0x9F, 0xE5, 0x01, 0x20, 0x42, 0xE2, 0x90, 0x29, 0x80, 0xE5 - .byte 0x08, 0x20, 0x91, 0xE5, 0x00, 0x90, 0xA0, 0x43, 0x0F, 0x0A, 0x82, 0xE2, 0x94, 0x49, 0x90, 0xE5 - .byte 0x69, 0x2F, 0x82, 0xE2, 0x08, 0x30, 0x94, 0xE5, 0x00, 0x50, 0x94, 0xE5, 0x93, 0x09, 0x04, 0xE0 - .byte 0x05, 0x34, 0x84, 0xE0, 0x08, 0x30, 0x8D, 0xE5, 0x94, 0x39, 0x90, 0xE5, 0x3D, 0x0B, 0x82, 0xE2 - .byte 0x0C, 0x20, 0x93, 0xE5, 0x04, 0x40, 0x93, 0xE5, 0x92, 0x09, 0x03, 0xE0, 0x04, 0x34, 0x83, 0xE0 - .byte 0x08, 0x10, 0x8D, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x0C, 0x30, 0x8D, 0xE5, 0xBC, 0x9A, 0xFF, 0xEB - .byte 0x00, 0x80, 0xA0, 0xE3, 0x08, 0x70, 0x8D, 0xE2, 0x08, 0x60, 0xA0, 0xE1, 0xF0, 0x51, 0x9F, 0xE5 - .byte 0xC4, 0x40, 0xA0, 0xE3, 0x15, 0x00, 0x00, 0xEA, 0x08, 0x30, 0x95, 0xE5, 0x07, 0x10, 0xA0, 0xE1 - .byte 0x08, 0x01, 0x83, 0xE0, 0x0F, 0x2A, 0x80, 0xE2, 0x80, 0xA9, 0x92, 0xE5, 0x67, 0x0E, 0x83, 0xE2 - .byte 0x08, 0x30, 0x9A, 0xE5, 0x0F, 0x0A, 0x80, 0xE2, 0x99, 0x03, 0x03, 0xE0, 0x00, 0xA0, 0x9A, 0xE5 - .byte 0x98, 0x04, 0x20, 0xE0, 0x0A, 0x34, 0x83, 0xE0, 0x08, 0x30, 0x8D, 0xE5, 0x80, 0xA9, 0x92, 0xE5 - .byte 0x06, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0x9A, 0xE5, 0x04, 0xA0, 0x9A, 0xE5, 0x99, 0x03, 0x03, 0xE0 - .byte 0x0A, 0x34, 0x83, 0xE0, 0x0C, 0x30, 0x8D, 0xE5, 0xA1, 0x9A, 0xFF, 0xEB, 0x01, 0x80, 0x88, 0xE2 - .byte 0x08, 0x00, 0x95, 0xE5, 0x0F, 0x1A, 0x80, 0xE2, 0x68, 0x16, 0x91, 0xE5, 0x01, 0x00, 0x58, 0xE1 - .byte 0xE4, 0xFF, 0xFF, 0x1A, 0x2C, 0x10, 0x90, 0xE5, 0x00, 0x90, 0xA0, 0xE3, 0x01, 0x00, 0x51, 0xE3 - .byte 0x10, 0x00, 0x00, 0x8A, 0x05, 0x0C, 0x80, 0xE2, 0xFE, 0x02, 0xD0, 0xE1, 0x00, 0x00, 0x50, 0xE3 - .byte 0x0C, 0x00, 0x00, 0x0A, 0x58, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0x8D, 0xE2, 0x08, 0x50, 0x90, 0xE5 - .byte 0x09, 0x30, 0xA0, 0xE1, 0x40, 0x40, 0x95, 0xE5, 0x44, 0x00, 0x95, 0xE5, 0x05, 0x1C, 0x85, 0xE2 - .byte 0x04, 0x00, 0x8D, 0xE5, 0x00, 0x40, 0x8D, 0xE5, 0x4D, 0x0F, 0x85, 0xE2, 0xFE, 0x12, 0xD1, 0xE1 - .byte 0x01, 0x0B, 0x80, 0xE2, 0xE6, 0x95, 0xFF, 0xEB, 0x24, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0xE0, 0xE3 - .byte 0x08, 0x00, 0x90, 0xE5, 0x05, 0x0C, 0x80, 0xE2, 0xFC, 0x12, 0xD0, 0xE1, 0x02, 0x00, 0x51, 0xE1 - .byte 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x8D, 0xE2, 0x0A, 0xFA, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x06, 0x00, 0x00, 0x0A, 0xF8, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x8D, 0xE2, 0x08, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0xDC, 0x00, 0x80, 0xE2, 0x3D, 0x0B, 0x80, 0xE2, 0x74, 0x9A, 0xFF, 0xEB - .byte 0x00, 0xA0, 0xA0, 0xE3, 0x00, 0x80, 0x8D, 0xE2, 0x0A, 0xB0, 0xA0, 0xE1, 0xD0, 0x70, 0x9F, 0xE5 - .byte 0xC4, 0x50, 0xA0, 0xE3, 0x00, 0x60, 0xE0, 0xE3, 0xC8, 0x40, 0x9F, 0xE5, 0x16, 0x00, 0x00, 0xEA - .byte 0x08, 0x00, 0x97, 0xE5, 0x0A, 0x01, 0x80, 0xE0, 0x54, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x06, 0x00, 0x50, 0x11, 0x0F, 0x00, 0x00, 0x0A, 0x0A, 0x18, 0xA0, 0xE1, 0x08, 0x00, 0xA0, 0xE1 - .byte 0x41, 0x18, 0xA0, 0xE1, 0xEF, 0xF9, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x09, 0x00, 0x00, 0x0A - .byte 0x08, 0x00, 0x97, 0xE5, 0x08, 0x10, 0xA0, 0xE1, 0xE1, 0x0F, 0x80, 0xE2, 0x01, 0x0B, 0x80, 0xE2 - .byte 0x9A, 0x05, 0x20, 0xE0, 0x0B, 0x20, 0xA0, 0xE1, 0x59, 0x9A, 0xFF, 0xEB, 0x01, 0x90, 0x89, 0xE2 - .byte 0x64, 0x00, 0x59, 0xE3, 0x02, 0x00, 0x00, 0xCA, 0x01, 0xA0, 0x8A, 0xE2, 0x04, 0x00, 0x5A, 0xE1 - .byte 0xE6, 0xFF, 0xFF, 0xBA, 0x58, 0x00, 0x9F, 0xE5, 0x10, 0x10, 0x8D, 0xE2, 0x08, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x10, 0x00, 0x80, 0xE2, 0x93, 0x7F, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3 - .byte 0x04, 0x00, 0x00, 0x0A, 0x38, 0x00, 0x9F, 0xE5, 0x10, 0x20, 0x8D, 0xE2, 0x04, 0x00, 0x90, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x36, 0x7B, 0xFF, 0xEB, 0x24, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x41, 0x7C, 0xFF, 0xEB, 0x18, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5 - .byte 0x06, 0x10, 0xC0, 0xE5, 0x16, 0x09, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x18, 0xD0, 0x8D, 0xE2 - .byte 0xF8, 0x8F, 0xBD, 0xE8, 0xE4, 0x4D, 0x32, 0x02, 0x36, 0x01, 0x00, 0x00, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x90, 0xE5, 0x06, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3 - .byte 0x04, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13, 0x04, 0x00, 0x00, 0x0A, 0x47, 0x7D, 0xFF, 0xEB - .byte 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x08, 0x00, 0x90, 0xE5, 0x06, 0x10, 0xC0, 0xE5 - .byte 0x2C, 0x09, 0x00, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0xE4, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02310074 +ov11_02310074: ; 0x02310074 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, _0231031C ; =0x02324DE4 + ldr r2, [r1, #8] + ldr r0, [r2, #8] + cmp r0, #2 + bne _02310250 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r2, [r1, #8] + ldr r1, _02310320 ; =0x02323730 + ldrsh r5, [r2, #2] + mov r2, r5 + bl DebugPrint + bl ov11_0230EC00 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0231031C ; =0x02324DE4 + mvn r1, #0 + str r0, [r2, #4] + ldr r0, [r2, #8] + cmp r5, r1 + strh r5, [r0, #2] + bne _02310108 + ldr r0, [r2, #4] + ldr r1, _02310324 ; =0x02323394 + bl ov11_022EBC18 + ldr r0, _0231031C ; =0x02324DE4 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231031C ; =0x02324DE4 + ldmib r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + b _023101EC +_02310108: + mov r0, #0xc + smulbb r1, r5, r0 + ldr r3, _02310328 ; =0x020A5488 + ldrsh r0, [r3, r1] + add r4, r3, r1 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _023101A0 +_0231012C: ; jump table + b _02310178 ; case 0 + b _023101A0 ; case 1 + b _023101A0 ; case 2 + b _023101A0 ; case 3 + b _023101A0 ; case 4 + b _023101A0 ; case 5 + b _02310160 ; case 6 + b _02310160 ; case 7 + b _02310160 ; case 8 + b _02310160 ; case 9 + b _02310160 ; case 10 + b _02310178 ; case 11 + b _02310178 ; case 12 +_02310160: + ldr r0, [r2, #4] + ldr r1, _0231032C ; =0x023233B0 + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + b _023101B8 +_02310178: + ldr r0, _02310330 ; =0x02323310 + ldrsh r3, [r4] + ldr ip, [r0, #0x1c] + ldr lr, [r0, #0x18] + ldr r1, _02310334 ; =0x02323750 + add r0, sp, #0 + mov r2, r5 + str lr, [sp] + str ip, [sp, #4] + bl FatalError +_023101A0: + ldr r0, _0231031C ; =0x02324DE4 + ldr r1, _02310324 ; =0x02323394 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_023128C0 +_023101B8: + ldr r0, _0231031C ; =0x02324DE4 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231031C ; =0x02324DE4 + ldmib r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + ldr r0, _0231031C ; =0x02324DE4 + ldr r2, _02310338 ; =0x02323330 + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_023101EC: + ldr r0, _0231031C ; =0x02324DE4 + ldr r2, [r0, #8] + ldrb r1, [r2, #5] + cmp r1, #0 + beq _02310240 + mov r1, #3 + str r1, [r2, #8] + ldr r0, [r0, #8] + ldr r2, _0231033C ; =0xA4080000 + add r0, r0, #0x6c0 + mov r1, #0x9a + bl ov11_022F6E60 + ldr r0, _0231031C ; =0x02324DE4 + mov r1, #8 + ldr r0, [r0, #8] + add r0, r0, #0x6c0 + bl ov11_022F4974 + ldr r0, _0231031C ; =0x02324DE4 + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #0x6bc] +_02310240: + ldr r0, _0231031C ; =0x02324DE4 + mov r1, #4 + ldr r0, [r0, #8] + str r1, [r0, #8] +_02310250: + ldr r0, _0231031C ; =0x02324DE4 + ldr r1, [r0, #8] + add r0, r1, #0xf000 + ldrb r0, [r0, #0xe8c] + cmp r0, #0 + beq _02310314 + add r0, r1, #0xf900 + ldrsb r0, [r0, #0x98] + mvn r1, #1 + cmp r0, r1 + beq _023102B0 + bl sub_0202FD6C + cmp r0, #0 + bne _023102B0 + ldr r0, _0231031C ; =0x02324DE4 + ldr r0, [r0, #8] + add r0, r0, #0xf900 + ldrsb r0, [r0, #0x98] + bl sub_0202FD50 + ldr r0, _0231031C ; =0x02324DE4 + mvn r1, #1 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x998] +_023102B0: + ldr r0, _0231031C ; =0x02324DE4 + mvn r1, #1 + ldr r2, [r0, #8] + add r0, r2, #0xf900 + ldrsb r0, [r0, #0x98] + cmp r0, r1 + bne _02310314 + add r0, r2, #0xfe00 + ldrsh r3, [r0, #0x8e] + add r0, r1, #1 + cmp r3, r0 + beq _02310300 + ldr r0, _02310340 ; =0x02323340 + mov r1, #0x13 + mov r2, #0 + bl sub_0202FBBC + ldr r1, _0231031C ; =0x02324DE4 + ldr r1, [r1, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0x998] +_02310300: + ldr r0, _0231031C ; =0x02324DE4 + mov r1, #0 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0xe8c] +_02310314: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231031C: .word 0x02324DE4 +_02310320: .word 0x02323730 +_02310324: .word 0x02323394 +_02310328: .word 0x020A5488 +_0231032C: .word 0x023233B0 +_02310330: .word 0x02323310 +_02310334: .word 0x02323750 +_02310338: .word 0x02323330 +_0231033C: .word 0xA4080000 +_02310340: .word 0x02323340 + arm_func_end ov11_02310074 + + arm_func_start ov11_02310344 +ov11_02310344: ; 0x02310344 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r0, _02310624 ; =0x02324DE4 + ldr r0, [r0, #8] + ldr r0, [r0, #8] + cmp r0, #7 + cmpne r0, #6 + cmpne r0, #0 + cmpne r0, #5 + bne _02310614 + add r1, sp, #0x10 + mov r0, #1 + bl ov11_022EB3C8 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x10] + streq r0, [sp, #0x14] + ldr r0, _02310624 ; =0x02324DE4 + ldr r0, [r0, #8] + ldr r1, [r0, #0x2c] + cmp r1, #3 + bne _023104A4 + add r1, r0, #0xf000 + ldr r2, [r1, #0x990] + cmp r2, #0 + ble _023104A4 + ldr r1, [r1, #0x994] + add r0, r0, #0xf000 + ldr r1, [r1, #0x10] + sub r1, r1, r2 + subs sb, r1, #0x1e + ldr r2, [r0, #0x990] + ldr r1, _02310624 ; =0x02324DE4 + sub r2, r2, #1 + str r2, [r0, #0x990] + ldr r2, [r1, #8] + movmi sb, #0 + add r0, r2, #0xf000 + ldr r4, [r0, #0x994] + add r2, r2, #0x1a4 + ldr r3, [r4, #8] + ldr r5, [r4] + mul r4, r3, sb + add r3, r4, r5, lsl #8 + str r3, [sp, #8] + ldr r3, [r0, #0x994] + add r0, r2, #0xf400 + ldr r2, [r3, #0xc] + ldr r4, [r3, #4] + mul r3, r2, sb + add r3, r3, r4, lsl #8 + add r1, sp, #8 + mov r2, #0 + str r3, [sp, #0xc] + bl ov11_022F6F14 + mov r8, #0 + add r7, sp, #8 + mov r6, r8 + ldr r5, _02310624 ; =0x02324DE4 + mov r4, #0xc4 + b _02310490 +_02310438: + ldr r3, [r5, #8] + mov r1, r7 + add r0, r3, r8, lsl #2 + add r2, r0, #0xf000 + ldr sl, [r2, #0x980] + add r0, r3, #0x670 + ldr r3, [sl, #8] + add r0, r0, #0xf000 + mul r3, sb, r3 + ldr sl, [sl] + mla r0, r8, r4, r0 + add r3, r3, sl, lsl #8 + str r3, [sp, #8] + ldr sl, [r2, #0x980] + mov r2, r6 + ldr r3, [sl, #0xc] + ldr sl, [sl, #4] + mul r3, sb, r3 + add r3, r3, sl, lsl #8 + str r3, [sp, #0xc] + bl ov11_022F6F14 + add r8, r8, #1 +_02310490: + ldr r0, [r5, #8] + add r1, r0, #0xf000 + ldr r1, [r1, #0x668] + cmp r8, r1 + bne _02310438 +_023104A4: + ldr r1, [r0, #0x2c] + mov sb, #0 + cmp r1, #1 + bhi _023104F8 + add r0, r0, #0x500 + ldrsh r0, [r0, #0x2e] + cmp r0, #0 + beq _023104F8 + ldr r0, _02310624 ; =0x02324DE4 + add r2, sp, #0 + ldr r5, [r0, #8] + mov r3, sb + ldr r4, [r5, #0x40] + ldr r0, [r5, #0x44] + add r1, r5, #0x500 + str r0, [sp, #4] + str r4, [sp] + add r0, r5, #0x134 + ldrsh r1, [r1, #0x2e] + add r0, r0, #0x400 + bl ov11_022F5C94 +_023104F8: + ldr r0, _02310624 ; =0x02324DE4 + mvn r2, #0 + ldr r0, [r0, #8] + add r0, r0, #0x500 + ldrsh r1, [r0, #0x2c] + cmp r1, r2 + beq _02310540 + add r0, sp, #0 + bl ov11_0230ED48 + cmp r0, #0 + beq _02310540 + ldr r0, _02310624 ; =0x02324DE4 + add r1, sp, #0 + ldr r0, [r0, #8] + mov r2, #0 + add r0, r0, #0xdc + add r0, r0, #0xf400 + bl ov11_022F6F14 +_02310540: + mov sl, #0 + add r8, sp, #0 + mov fp, sl + ldr r7, _02310624 ; =0x02324DE4 + mov r5, #0xc4 + mvn r6, #0 + ldr r4, _02310628 ; =0x00000136 + b _023105BC +_02310560: + ldr r0, [r7, #8] + add r0, r0, sl, lsl #2 + ldr r0, [r0, #0x54] + cmp r0, #0 + cmpne r0, r6 + beq _023105B8 + mov r1, sl, lsl #0x10 + mov r0, r8 + mov r1, r1, asr #0x10 + bl ov11_0230ED48 + cmp r0, #0 + beq _023105B8 + ldr r0, [r7, #8] + mov r1, r8 + add r0, r0, #0x384 + add r0, r0, #0x400 + mla r0, sl, r5, r0 + mov r2, fp + bl ov11_022F6F14 + add sb, sb, #1 + cmp sb, #0x64 + bgt _023105C4 +_023105B8: + add sl, sl, #1 +_023105BC: + cmp sl, r4 + blt _02310560 +_023105C4: + ldr r0, _02310624 ; =0x02324DE4 + add r1, sp, #0x10 + ldr r0, [r0, #8] + mov r2, #0 + add r0, r0, #0x10 + bl ov11_022F042C + cmp r0, #0 + beq _023105F8 + ldr r0, _02310624 ; =0x02324DE4 + add r2, sp, #0x10 + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_023105F8: + ldr r0, _02310624 ; =0x02324DE4 + ldr r0, [r0, #4] + bl ov11_022EF70C + ldr r0, _02310624 ; =0x02324DE4 + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #6] +_02310614: + bl ov11_02312A74 + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02310624: .word 0x02324DE4 +_02310628: .word 0x00000136 + arm_func_end ov11_02310344 + + arm_func_start ov11_0231062C +ov11_0231062C: ; 0x0231062C + stmdb sp!, {r3, lr} + ldr r0, _02310668 ; =0x02324DE4 + ldr r1, [r0, #8] + ldrb r1, [r1, #6] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02310660 + bl ov11_022EFB70 + ldr r0, _02310668 ; =0x02324DE4 + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #6] +_02310660: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310668: .word 0x02324DE4 + arm_func_end ov11_0231062C arm_func_start ov11_0231066C ov11_0231066C: ; 0x0231066C @@ -58201,26 +61991,93 @@ ov11_02310680: ; 0x02310680 _0231068C: .word ov11_0230D17C _02310690: .word 0x02323788 arm_func_end ov11_02310680 -_02310694: - .byte 0xF0, 0x41, 0x2D, 0xE9, 0x6F, 0x0E, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0xB2, 0xC2, 0xF3, 0xEB, 0x80, 0x10, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0xEC, 0x26, 0xC0, 0xE5, 0x40, 0x00, 0x00, 0xEB, 0x10, 0x00, 0xA0, 0xE3, 0x93, 0x65, 0xFF, 0xEB - .byte 0x64, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x40, 0xA0, 0xE3 - .byte 0xED, 0x26, 0xC1, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x50, 0x60, 0x9F, 0xE5, 0xEE, 0x46, 0xC1, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x9C, 0x70, 0xA0, 0xE3, 0x04, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x08, 0x50, 0xA0, 0xE3, 0x08, 0x80, 0x80, 0xE2, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1 - .byte 0x06, 0x20, 0xA0, 0xE1, 0xD5, 0x99, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1 - .byte 0x97, 0x90, 0xFF, 0xEB, 0x01, 0x40, 0x84, 0xE2, 0x09, 0x00, 0x54, 0xE3, 0xC4, 0x80, 0x88, 0xE2 - .byte 0xF4, 0xFF, 0xFF, 0xBA, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x81, 0xBD, 0xE8, 0xF0, 0x4D, 0x32, 0x02 - .byte 0x00, 0x00, 0x08, 0xA0, 0x38, 0x40, 0x2D, 0xE9, 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A - .byte 0x70, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x08, 0x00, 0x50, 0xE3 - .byte 0x01, 0x00, 0xA0, 0x13, 0xEE, 0x06, 0xC1, 0x15, 0x00, 0x00, 0xA0, 0x13, 0x38, 0x80, 0xBD, 0x18 - .byte 0x15, 0x00, 0x00, 0xEB, 0x4C, 0x00, 0x9F, 0xE5, 0x08, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5 - .byte 0x00, 0x50, 0xA0, 0xE3, 0x04, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x40, 0x80, 0xE2 - .byte 0x04, 0x00, 0xA0, 0xE1, 0xDC, 0x99, 0xFF, 0xEB, 0x01, 0x50, 0x85, 0xE2, 0x09, 0x00, 0x55, 0xE3 - .byte 0xC4, 0x40, 0x84, 0xE2, 0xF9, 0xFF, 0xFF, 0xBA, 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x78, 0xC2, 0xF3, 0xEB, 0x0C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x38, 0x80, 0xBD, 0xE8, 0xF0, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02310694 +ov11_02310694: ; 0x02310694 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r0, #0x6f0 + mov r1, #0xf + bl MemAlloc + ldr r1, _0231072C ; =0x02324DF0 + mov r2, #1 + str r0, [r1] + strb r2, [r0, #0x6ec] + bl ov11_023107BC + mov r0, #0x10 + bl ov11_022E9D10 + ldr r0, _0231072C ; =0x02324DF0 + mov r2, #1 + ldr r1, [r0] + mov r4, #0 + strb r2, [r1, #0x6ed] + ldr r1, [r0] + ldr r6, _02310730 ; =0xA0080000 + strb r4, [r1, #0x6ee] + ldr r1, [r0] + mov r7, #0x9c + str r2, [r1, #4] + ldr r0, [r0] + mov r5, #8 + add r8, r0, #8 +_023106F8: + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl ov11_022F6E60 + mov r0, r8 + mov r1, r5 + bl ov11_022F4974 + add r4, r4, #1 + cmp r4, #9 + add r8, r8, #0xc4 + blt _023106F8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0231072C: .word 0x02324DF0 +_02310730: .word 0xA0080000 + arm_func_end ov11_02310694 + + arm_func_start ov11_02310734 +ov11_02310734: ; 0x02310734 + stmdb sp!, {r3, r4, r5, lr} + cmp r0, #0 + bne _02310760 + ldr r0, _023107B8 ; =0x02324DF0 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #0x6ee] + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02310760: + bl ov11_023107BC + ldr r0, _023107B8 ; =0x02324DF0 + mov r2, #8 + ldr r1, [r0] + mov r5, #0 + str r2, [r1, #4] + ldr r0, [r0] + add r4, r0, #8 +_02310780: + mov r0, r4 + bl ov11_022F6EFC + add r5, r5, #1 + cmp r5, #9 + add r4, r4, #0xc4 + blt _02310780 + ldr r0, _023107B8 ; =0x02324DF0 + ldr r0, [r0] + bl MemFree + ldr r0, _023107B8 ; =0x02324DF0 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023107B8: .word 0x02324DF0 + arm_func_end ov11_02310734 arm_func_start ov11_023107BC ov11_023107BC: ; 0x023107BC @@ -58258,9 +62115,21 @@ _02310820: .align 2, 0 _02310834: .word 0x02324DF0 arm_func_end ov11_023107BC -_02310838: - .byte 0x08, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0xEC, 0x06, 0xD0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x4D, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_02310838 +ov11_02310838: ; 0x02310838 + ldr r0, _02310848 ; =0x02324DF0 + ldr r0, [r0] + ldrb r0, [r0, #0x6ec] + bx lr + .align 2, 0 +_02310848: .word 0x02324DF0 + arm_func_end ov11_02310838 + + arm_func_start ov11_0231084C +ov11_0231084C: ; 0x0231084C + bx lr + arm_func_end ov11_0231084C arm_func_start ov11_02310850 ov11_02310850: ; 0x02310850 @@ -58562,9 +62431,16 @@ ov11_02310C18: ; 0x02310C18 _02310C24: .word ov11_0230DB58 _02310C28: .word 0x02323894 arm_func_end ov11_02310C18 -_02310C2C: - .byte 0x04, 0xC0, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x58, 0xDB, 0x30, 0x02, 0xB0, 0x38, 0x32, 0x02 + + arm_func_start ov11_02310C2C +ov11_02310C2C: ; 0x02310C2C + ldr ip, _02310C38 ; =ov00_0230DB58 + ldr r0, _02310C3C ; =0x023238B0 + bx ip + .align 2, 0 +_02310C38: .word ov00_0230DB58 +_02310C3C: .word 0x023238B0 + arm_func_end ov11_02310C2C arm_func_start ov11_02310C40 ov11_02310C40: ; 0x02310C40 @@ -58575,16 +62451,48 @@ ov11_02310C40: ; 0x02310C40 _02310C4C: .word ov11_0230D270 _02310C50: .word 0x023238DC arm_func_end ov11_02310C40 -_02310C54: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x30, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0x42, 0xC1, 0xF3, 0xEB, 0x34, 0x10, 0x9F, 0xE5, 0x00, 0x30, 0xE0, 0xE3, 0x00, 0x00, 0x81, 0xE5 - .byte 0xB0, 0x30, 0xC0, 0xE1, 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0xBC, 0x32, 0xC2, 0xE1 - .byte 0x00, 0x20, 0x91, 0xE5, 0xB2, 0x30, 0xC2, 0xE1, 0x00, 0x10, 0x91, 0xE5, 0xBE, 0x32, 0xC1, 0xE1 - .byte 0xEB, 0x06, 0x00, 0xEB, 0x0E, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xF8, 0x4D, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9, 0x09, 0x00, 0x00, 0xEB, 0xF8, 0x06, 0x00, 0xEB - .byte 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x32, 0xC1, 0xF3, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xF8, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02310C54 +ov11_02310C54: ; 0x02310C54 + stmdb sp!, {r3, lr} + mov r0, #0x30 + mov r1, #0xf + bl MemAlloc + ldr r1, _02310CA0 ; =0x02324DF8 + mvn r3, #0 + str r0, [r1] + strh r3, [r0] + ldr r2, [r1] + mov r0, #0 + strh r3, [r2, #0x2c] + ldr r2, [r1] + strh r3, [r2, #2] + ldr r1, [r1] + strh r3, [r1, #0x2e] + bl ov11_02312844 + bl ov11_02310CD4 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310CA0: .word 0x02324DF8 + arm_func_end ov11_02310C54 + + arm_func_start ov11_02310CA4 +ov11_02310CA4: ; 0x02310CA4 + stmdb sp!, {r3, lr} + bl ov11_02310CD4 + bl ov11_02312894 + ldr r0, _02310CD0 ; =0x02324DF8 + ldr r0, [r0] + bl MemFree + ldr r0, _02310CD0 ; =0x02324DF8 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310CD0: .word 0x02324DF8 + arm_func_end ov11_02310CA4 arm_func_start ov11_02310CD4 ov11_02310CD4: ; 0x02310CD4 @@ -58743,10 +62651,19 @@ _02310EB8: _02310EC0: .word 0x02324DF8 _02310EC4: .word 0x020A5488 arm_func_end ov11_02310DE0 -_02310EC8: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x0C, 0x00, 0xD1, 0x05 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF8, 0x4D, 0x32, 0x02 + + arm_func_start ov11_02310EC8 +ov11_02310EC8: ; 0x02310EC8 + ldr r0, _02310EE4 ; =0x02324DF8 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_02310EE4: .word 0x02324DF8 + arm_func_end ov11_02310EC8 arm_func_start ov11_02310EE8 ov11_02310EE8: ; 0x02310EE8 @@ -58864,41 +62781,156 @@ _02311068: .align 2, 0 _02311070: .word 0x02324DF8 arm_func_end ov11_02310FC0 -_02311074: - .byte 0x38, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0xE8, 0x11, 0x9F, 0xE5 - .byte 0x00, 0x20, 0x91, 0xE5, 0x08, 0x00, 0x92, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x66, 0x00, 0x00, 0x1A - .byte 0x01, 0x00, 0xA0, 0xE3, 0x0C, 0x00, 0xC2, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0xCC, 0x11, 0x9F, 0xE5 - .byte 0xF0, 0x50, 0xD2, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x64, 0xEC, 0xF3, 0xEB, 0x08, 0xFF, 0xFF, 0xEB - .byte 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0x2C, 0xC0, 0xF3, 0xEB, 0xA8, 0x21, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x82, 0xE5, 0x00, 0x00, 0x92, 0xE5, 0x01, 0x00, 0x55, 0xE1 - .byte 0xB0, 0x50, 0xC0, 0xE1, 0x0C, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x92, 0xE5, 0x90, 0x11, 0x9F, 0xE5 - .byte 0xCC, 0x6A, 0xFF, 0xEB, 0x80, 0x01, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0x61, 0x6C, 0xFF, 0xEB, 0x70, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x10, 0x00, 0x82, 0xE2, 0x14, 0x7B, 0xFF, 0xEB, 0x3F, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0xA0, 0xE3 - .byte 0x85, 0x00, 0x61, 0xE1, 0x5C, 0x31, 0x9F, 0xE5, 0xF1, 0x00, 0x93, 0xE1, 0x01, 0x40, 0x83, 0xE0 - .byte 0x01, 0x00, 0x80, 0xE2, 0x0C, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x22, 0x00, 0x00, 0xEA - .byte 0x17, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA, 0x1E, 0x00, 0x00, 0xEA - .byte 0x1D, 0x00, 0x00, 0xEA, 0x1C, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA - .byte 0x03, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA - .byte 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x92, 0xE5, 0x0C, 0x11, 0x9F, 0xE5, 0xA9, 0x6A, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x78, 0xFF, 0xEB, 0x15, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x92, 0xE5 - .byte 0xF8, 0x10, 0x9F, 0xE5, 0xA3, 0x6A, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0xCB, 0x05, 0x00, 0xEB - .byte 0x0F, 0x00, 0x00, 0xEA, 0xE8, 0x00, 0x9F, 0xE5, 0xF0, 0x30, 0xD4, 0xE1, 0x0C, 0xC0, 0x90, 0xE5 - .byte 0x08, 0xE0, 0x90, 0xE5, 0xDC, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x8D, 0xE2, 0x05, 0x20, 0xA0, 0xE1 - .byte 0x00, 0xE0, 0x8D, 0xE5, 0x04, 0xC0, 0x8D, 0xE5, 0x27, 0xEC, 0xF3, 0xEB, 0xA8, 0x00, 0x9F, 0xE5 - .byte 0xAC, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x92, 0x6A, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0xBA, 0x05, 0x00, 0xEB, 0x90, 0x00, 0x9F, 0xE5, 0xF4, 0x10, 0xD4, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0x25, 0x6C, 0xFF, 0xEB, 0x80, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x10, 0x00, 0x82, 0xE2, 0xD8, 0x7A, 0xFF, 0xEB, 0x6C, 0x00, 0x9F, 0xE5, 0x88, 0x20, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x31, 0x78, 0xFF, 0xEB, 0x58, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x08, 0x30, 0x82, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x0C, 0x10, 0xC0, 0xE5, 0x0D, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x50, 0xE3 - .byte 0x0B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0xA0, 0xE3, 0x0C, 0x00, 0xC2, 0xE5, 0x00, 0x00, 0x91, 0xE5 - .byte 0xF2, 0x00, 0xD0, 0xE1, 0xCC, 0x05, 0x00, 0xEB, 0x1C, 0x00, 0x9F, 0xE5, 0x04, 0x30, 0xA0, 0xE3 - .byte 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x08, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5 - .byte 0x0C, 0x10, 0xC0, 0xE5, 0x08, 0xD0, 0x8D, 0xE2, 0x38, 0x80, 0xBD, 0xE8, 0xF8, 0x4D, 0x32, 0x02 - .byte 0x74, 0x39, 0x32, 0x02, 0x20, 0x39, 0x32, 0x02, 0x88, 0x54, 0x0A, 0x02, 0x3C, 0x39, 0x32, 0x02 - .byte 0x58, 0x39, 0x32, 0x02, 0xCC, 0x38, 0x32, 0x02, 0x98, 0x39, 0x32, 0x02, 0xCC, 0x38, 0x32, 0x02 + + arm_func_start ov11_02311074 +ov11_02311074: ; 0x02311074 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, _0231126C ; =0x02324DF8 + ldr r2, [r1] + ldr r0, [r2, #8] + cmp r0, #2 + bne _0231122C + mov r0, #1 + strb r0, [r2, #0xc] + ldr r2, [r1] + ldr r1, _02311270 ; =0x02323974 + ldrsh r5, [r2] + mov r2, r5 + bl DebugPrint + bl ov11_02310CD4 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0231126C ; =0x02324DF8 + mvn r1, #0 + str r0, [r2, #4] + ldr r0, [r2] + cmp r5, r1 + strh r5, [r0] + bne _0231110C + ldr r0, [r2, #4] + ldr r1, _02311274 ; =0x02323920 + bl ov11_022EBC18 + ldr r0, _0231126C ; =0x02324DF8 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231126C ; =0x02324DF8 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0x10 + bl ov11_022EFD5C + b _0231120C +_0231110C: + mov r0, #0xc + smulbb r1, r5, r0 + ldr r3, _02311278 ; =0x020A5488 + ldrsh r0, [r3, r1] + add r4, r3, r1 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _023111BC +_02311130: ; jump table + b _02311194 ; case 0 + b _023111BC ; case 1 + b _023111BC ; case 2 + b _023111BC ; case 3 + b _023111BC ; case 4 + b _023111BC ; case 5 + b _02311164 ; case 6 + b _02311164 ; case 7 + b _02311164 ; case 8 + b _02311164 ; case 9 + b _02311164 ; case 10 + b _0231117C ; case 11 + b _0231117C ; case 12 +_02311164: + ldr r0, [r2, #4] + ldr r1, _0231127C ; =0x0232393C + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + b _023111D4 +_0231117C: + ldr r0, [r2, #4] + ldr r1, _02311280 ; =0x02323958 + bl ov11_022EBC18 + mov r0, #1 + bl ov11_023128C0 + b _023111D4 +_02311194: + ldr r0, _02311284 ; =0x023238CC + ldrsh r3, [r4] + ldr ip, [r0, #0xc] + ldr lr, [r0, #8] + ldr r1, _02311288 ; =0x02323998 + add r0, sp, #0 + mov r2, r5 + str lr, [sp] + str ip, [sp, #4] + bl FatalError +_023111BC: + ldr r0, _0231126C ; =0x02324DF8 + ldr r1, _02311274 ; =0x02323920 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_023128C0 +_023111D4: + ldr r0, _0231126C ; =0x02324DF8 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231126C ; =0x02324DF8 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0x10 + bl ov11_022EFD5C + ldr r0, _0231126C ; =0x02324DF8 + ldr r2, _0231128C ; =0x023238CC + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_0231120C: + ldr r0, _0231126C ; =0x02324DF8 + mov r3, #4 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0] + strb r1, [r0, #0xc] + b _02311264 +_0231122C: + cmp r0, #3 + bne _02311264 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r0, [r1] + ldrsh r0, [r0, #2] + bl ov11_0231297C + ldr r0, _0231126C ; =0x02324DF8 + mov r3, #4 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0] + strb r1, [r0, #0xc] +_02311264: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231126C: .word 0x02324DF8 +_02311270: .word 0x02323974 +_02311274: .word 0x02323920 +_02311278: .word 0x020A5488 +_0231127C: .word 0x0232393C +_02311280: .word 0x02323958 +_02311284: .word 0x023238CC +_02311288: .word 0x02323998 +_0231128C: .word 0x023238CC + arm_func_end ov11_02311074 arm_func_start ov11_02311290 ov11_02311290: ; 0x02311290 @@ -58945,12 +62977,28 @@ _02311318: .align 2, 0 _02311328: .word 0x02324DF8 arm_func_end ov11_02311290 -_0231132C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x04, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3 - .byte 0x04, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13, 0x04, 0x00, 0x00, 0x0A, 0x07, 0x7A, 0xFF, 0xEB - .byte 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x04, 0x10, 0xC0, 0xE5 - .byte 0xEC, 0x05, 0x00, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0xF8, 0x4D, 0x32, 0x02 + + arm_func_start ov11_0231132C +ov11_0231132C: ; 0x0231132C + stmdb sp!, {r3, lr} + ldr r0, _02311368 ; =0x02324DF8 + ldr r1, [r0] + ldrb r1, [r1, #4] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311360 + bl ov11_022EFB70 + ldr r0, _02311368 ; =0x02324DF8 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #4] +_02311360: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311368: .word 0x02324DF8 + arm_func_end ov11_0231132C arm_func_start ov11_0231136C ov11_0231136C: ; 0x0231136C @@ -58961,11 +63009,25 @@ ov11_0231136C: ; 0x0231136C _02311378: .word ov11_0230D270 _0231137C: .word 0x023239C4 arm_func_end ov11_0231136C -_02311380: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x2C, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0x77, 0xBF, 0xF3, 0xEB - .byte 0x1C, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x28, 0x20, 0xC0, 0xE5 - .byte 0x02, 0x00, 0xA0, 0xE1, 0x26, 0x05, 0x00, 0xEB, 0x0E, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x00, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02311380 +ov11_02311380: ; 0x02311380 + stmdb sp!, {r3, lr} + mov r0, #0x2c + mov r1, #0xf + bl MemAlloc + ldr r1, _023113B4 ; =0x02324E00 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x28] + mov r0, r2 + bl ov11_02312844 + bl ov11_023113E8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023113B4: .word 0x02324E00 + arm_func_end ov11_02311380 arm_func_start ov11_023113B8 ov11_023113B8: ; 0x023113B8 @@ -59085,14 +63147,43 @@ _02311518: .align 2, 0 _02311528: .word 0x02324E00 arm_func_end ov11_0231147C -_0231152C: - .byte 0x14, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13 - .byte 0x08, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x4E, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A - .byte 0x08, 0x80, 0xBD, 0xE8, 0x20, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5 - .byte 0x28, 0x20, 0xC1, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x20, 0xC0, 0xE5, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xFF, 0x00, 0x01, 0xE2, 0xBC, 0xFF, 0xFF, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0x00, 0x4E, 0x32, 0x02 + + arm_func_start ov11_0231152C +ov11_0231152C: ; 0x0231152C + ldr r0, _02311548 ; =0x02324E00 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #8] + bx lr + .align 2, 0 +_02311548: .word 0x02324E00 + arm_func_end ov11_0231152C + + arm_func_start ov11_0231154C +ov11_0231154C: ; 0x0231154C + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _02311564 + cmp r0, #1 + beq _02311580 + ldmia sp!, {r3, pc} +_02311564: + ldr r0, _0231158C ; =0x02324E00 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x28] + ldr r0, [r0] + strb r2, [r0, #8] + ldmia sp!, {r3, pc} +_02311580: + and r0, r1, #0xff + bl ov11_0231147C + ldmia sp!, {r3, pc} + .align 2, 0 +_0231158C: .word 0x02324E00 + arm_func_end ov11_0231154C arm_func_start ov11_02311590 ov11_02311590: ; 0x02311590 @@ -59124,36 +63215,135 @@ _023115E8: .align 2, 0 _023115F0: .word 0x02324E00 arm_func_end ov11_02311590 -_023115F4: - .byte 0x10, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0xA0, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x62, 0x00, 0x00, 0x1A - .byte 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x00, 0xC1, 0xE5, 0x5E, 0x80, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x80, 0x11, 0x9F, 0xE5, 0x04, 0x20, 0xA0, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x03, 0xEB, 0xF3, 0xEB - .byte 0x6C, 0xFF, 0xFF, 0xEB, 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0xCB, 0xBE, 0xF3, 0xEB - .byte 0x5C, 0x21, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x82, 0xE5, 0x01, 0x00, 0x54, 0xE1 - .byte 0x0B, 0x00, 0x00, 0x1A, 0x50, 0x11, 0x9F, 0xE5, 0x6E, 0x69, 0xFF, 0xEB, 0x40, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x03, 0x6B, 0xFF, 0xEB, 0x30, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x82, 0xE2, 0xB6, 0x79, 0xFF, 0xEB - .byte 0x3E, 0x00, 0x00, 0xEA, 0x4A, 0x80, 0xFF, 0xEB, 0x01, 0x00, 0x80, 0xE2, 0x0C, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x25, 0x00, 0x00, 0xEA, 0x1B, 0x00, 0x00, 0xEA, 0x23, 0x00, 0x00, 0xEA - .byte 0x22, 0x00, 0x00, 0xEA, 0x21, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA - .byte 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA - .byte 0x01, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0x9F, 0xE5 - .byte 0xD8, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x4E, 0x69, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x95, 0x77, 0xFF, 0xEB, 0x19, 0x00, 0x00, 0xEA, 0xB4, 0x00, 0x9F, 0xE5, 0xC0, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x47, 0x69, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x8E, 0x77, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0x6D, 0x04, 0x00, 0xEB, 0x10, 0x00, 0x00, 0xEA, 0xA4, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x8D, 0xE2, 0x0C, 0x30, 0x91, 0xE5, 0x08, 0xC0, 0x91, 0xE5, 0x98, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x20, 0xA0, 0xE1, 0x00, 0xC0, 0x8D, 0xE5, 0x04, 0x30, 0x8D, 0xE5, 0xCA, 0xEA, 0xF3, 0xEB - .byte 0x6C, 0x00, 0x9F, 0xE5, 0x70, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x35, 0x69, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0x7C, 0x77, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x5B, 0x04, 0x00, 0xEB - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x82, 0xE2 - .byte 0x7D, 0x79, 0xFF, 0xEB, 0x38, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x1D, 0x80, 0xFF, 0xEB - .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x0C, 0x00, 0x80, 0xE2, 0xDA, 0x81, 0xFF, 0xEB - .byte 0x1C, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3 - .byte 0x04, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x10, 0xC0, 0xE5, 0x08, 0xD0, 0x8D, 0xE2 - .byte 0x10, 0x80, 0xBD, 0xE8, 0x00, 0x4E, 0x32, 0x02, 0x58, 0x3A, 0x32, 0x02, 0x04, 0x3A, 0x32, 0x02 - .byte 0x20, 0x3A, 0x32, 0x02, 0x3C, 0x3A, 0x32, 0x02, 0xB4, 0x39, 0x32, 0x02, 0x7C, 0x3A, 0x32, 0x02 + + arm_func_start ov11_023115F4 +ov11_023115F4: ; 0x023115F4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _023117A4 ; =0x02324E00 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #2 + bne _0231179C + mov r0, #1 + strb r0, [r1, #8] + bl ov11_022F1798 + mov r4, r0 + ldr r1, _023117A8 ; =0x02323A58 + mov r2, r4 + mov r0, #1 + bl DebugPrint + bl ov11_023113E8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _023117A4 ; =0x02324E00 + mvn r1, #0 + str r0, [r2, #4] + cmp r4, r1 + bne _02311684 + ldr r1, _023117AC ; =0x02323A04 + bl ov11_022EBC18 + ldr r0, _023117A4 ; =0x02324E00 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _023117A4 ; =0x02324E00 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + b _02311780 +_02311684: + bl ov11_022F17B4 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02311730 +_02311698: ; jump table + b _0231170C ; case 0 + b _02311730 ; case 1 + b _02311730 ; case 2 + b _02311730 ; case 3 + b _02311730 ; case 4 + b _02311730 ; case 5 + b _023116CC ; case 6 + b _023116CC ; case 7 + b _023116CC ; case 8 + b _023116CC ; case 9 + b _023116CC ; case 10 + b _023116E8 ; case 11 + b _023116E8 ; case 12 +_023116CC: + ldr r0, _023117A4 ; =0x02324E00 + ldr r1, _023117B0 ; =0x02323A20 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + b _02311750 +_023116E8: + ldr r0, _023117A4 ; =0x02324E00 + ldr r1, _023117B4 ; =0x02323A3C + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 + b _02311750 +_0231170C: + ldr r1, _023117B8 ; =0x023239B4 + add r0, sp, #0 + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + ldr r1, _023117BC ; =0x02323A7C + mov r2, r4 + str ip, [sp] + str r3, [sp, #4] + bl FatalError +_02311730: + ldr r0, _023117A4 ; =0x02324E00 + ldr r1, _023117AC ; =0x02323A04 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 +_02311750: + ldr r0, _023117A4 ; =0x02324E00 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + ldr r0, _023117A4 ; =0x02324E00 + ldr r0, [r0, #4] + bl ov11_022F17E8 + ldr r0, _023117A4 ; =0x02324E00 + ldr r0, [r0] + add r0, r0, #0xc + bl ov11_022F1EEC +_02311780: + ldr r0, _023117A4 ; =0x02324E00 + mov r3, #3 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #8] +_0231179C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_023117A4: .word 0x02324E00 +_023117A8: .word 0x02323A58 +_023117AC: .word 0x02323A04 +_023117B0: .word 0x02323A20 +_023117B4: .word 0x02323A3C +_023117B8: .word 0x023239B4 +_023117BC: .word 0x02323A7C + arm_func_end ov11_023115F4 arm_func_start ov11_023117C0 ov11_023117C0: ; 0x023117C0 @@ -59187,12 +63377,28 @@ _02311818: _02311824: .word 0x02324E00 _02311828: .word 0x023239B4 arm_func_end ov11_023117C0 -_0231182C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3 - .byte 0x04, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13, 0x04, 0x00, 0x00, 0x0A, 0xC7, 0x78, 0xFF, 0xEB - .byte 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x10, 0xC0, 0xE5 - .byte 0xAC, 0x04, 0x00, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0x00, 0x4E, 0x32, 0x02 + + arm_func_start ov11_0231182C +ov11_0231182C: ; 0x0231182C + stmdb sp!, {r3, lr} + ldr r0, _02311868 ; =0x02324E00 + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311860 + bl ov11_022EFB70 + ldr r0, _02311868 ; =0x02324E00 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] +_02311860: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311868: .word 0x02324E00 + arm_func_end ov11_0231182C arm_func_start ov11_0231186C ov11_0231186C: ; 0x0231186C @@ -59203,11 +63409,25 @@ ov11_0231186C: ; 0x0231186C _02311878: .word ov11_0230D270 _0231187C: .word 0x02323AA8 arm_func_end ov11_0231186C -_02311880: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x2C, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0x37, 0xBE, 0xF3, 0xEB - .byte 0x1C, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0x81, 0xE5, 0x28, 0x20, 0xC0, 0xE5 - .byte 0x02, 0x00, 0xA0, 0xE1, 0xE6, 0x03, 0x00, 0xEB, 0x0E, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x08, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02311880 +ov11_02311880: ; 0x02311880 + stmdb sp!, {r3, lr} + mov r0, #0x2c + mov r1, #0xf + bl MemAlloc + ldr r1, _023118B4 ; =0x02324E08 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x28] + mov r0, r2 + bl ov11_02312844 + bl ov11_023118E8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023118B4: .word 0x02324E08 + arm_func_end ov11_02311880 arm_func_start ov11_023118B8 ov11_023118B8: ; 0x023118B8 @@ -59327,14 +63547,43 @@ _02311A18: .align 2, 0 _02311A28: .word 0x02324E08 arm_func_end ov11_0231197C -_02311A2C: - .byte 0x14, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13 - .byte 0x08, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x4E, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A - .byte 0x08, 0x80, 0xBD, 0xE8, 0x20, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5 - .byte 0x28, 0x20, 0xC1, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x20, 0xC0, 0xE5, 0x08, 0x80, 0xBD, 0xE8 - .byte 0xFF, 0x00, 0x01, 0xE2, 0xBC, 0xFF, 0xFF, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0x08, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02311A2C +ov11_02311A2C: ; 0x02311A2C + ldr r0, _02311A48 ; =0x02324E08 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #8] + bx lr + .align 2, 0 +_02311A48: .word 0x02324E08 + arm_func_end ov11_02311A2C + + arm_func_start ov11_02311A4C +ov11_02311A4C: ; 0x02311A4C + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _02311A64 + cmp r0, #1 + beq _02311A80 + ldmia sp!, {r3, pc} +_02311A64: + ldr r0, _02311A8C ; =0x02324E08 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x28] + ldr r0, [r0] + strb r2, [r0, #8] + ldmia sp!, {r3, pc} +_02311A80: + and r0, r1, #0xff + bl ov11_0231197C + ldmia sp!, {r3, pc} + .align 2, 0 +_02311A8C: .word 0x02324E08 + arm_func_end ov11_02311A4C arm_func_start ov11_02311A90 ov11_02311A90: ; 0x02311A90 @@ -59366,36 +63615,135 @@ _02311AE8: .align 2, 0 _02311AF0: .word 0x02324E08 arm_func_end ov11_02311A90 -_02311AF4: - .byte 0x10, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0xA0, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x10, 0x90, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x62, 0x00, 0x00, 0x1A - .byte 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x00, 0xC1, 0xE5, 0x1E, 0x7F, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x80, 0x11, 0x9F, 0xE5, 0x04, 0x20, 0xA0, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0xC3, 0xE9, 0xF3, 0xEB - .byte 0x6C, 0xFF, 0xFF, 0xEB, 0xBD, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0x8B, 0xBD, 0xF3, 0xEB - .byte 0x5C, 0x21, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x82, 0xE5, 0x01, 0x00, 0x54, 0xE1 - .byte 0x0B, 0x00, 0x00, 0x1A, 0x50, 0x11, 0x9F, 0xE5, 0x2E, 0x68, 0xFF, 0xEB, 0x40, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xE0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0xC3, 0x69, 0xFF, 0xEB, 0x30, 0x01, 0x9F, 0xE5 - .byte 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x82, 0xE2, 0x76, 0x78, 0xFF, 0xEB - .byte 0x3E, 0x00, 0x00, 0xEA, 0x0A, 0x7F, 0xFF, 0xEB, 0x01, 0x00, 0x80, 0xE2, 0x0C, 0x00, 0x50, 0xE3 - .byte 0x00, 0xF1, 0x8F, 0x90, 0x25, 0x00, 0x00, 0xEA, 0x1B, 0x00, 0x00, 0xEA, 0x23, 0x00, 0x00, 0xEA - .byte 0x22, 0x00, 0x00, 0xEA, 0x21, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA - .byte 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA - .byte 0x01, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0xD0, 0x00, 0x9F, 0xE5 - .byte 0xD8, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x0E, 0x68, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x55, 0x76, 0xFF, 0xEB, 0x19, 0x00, 0x00, 0xEA, 0xB4, 0x00, 0x9F, 0xE5, 0xC0, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x07, 0x68, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x4E, 0x76, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0x2D, 0x03, 0x00, 0xEB, 0x10, 0x00, 0x00, 0xEA, 0xA4, 0x10, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x8D, 0xE2, 0x0C, 0x30, 0x91, 0xE5, 0x08, 0xC0, 0x91, 0xE5, 0x98, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x20, 0xA0, 0xE1, 0x00, 0xC0, 0x8D, 0xE5, 0x04, 0x30, 0x8D, 0xE5, 0x8A, 0xE9, 0xF3, 0xEB - .byte 0x6C, 0x00, 0x9F, 0xE5, 0x70, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0xF5, 0x67, 0xFF, 0xEB - .byte 0x01, 0x00, 0xA0, 0xE3, 0x3C, 0x76, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x1B, 0x03, 0x00, 0xEB - .byte 0x4C, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x82, 0xE2 - .byte 0x3D, 0x78, 0xFF, 0xEB, 0x38, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0xDD, 0x7E, 0xFF, 0xEB - .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x0C, 0x00, 0x80, 0xE2, 0x9A, 0x80, 0xFF, 0xEB - .byte 0x1C, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3 - .byte 0x04, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x10, 0xC0, 0xE5, 0x08, 0xD0, 0x8D, 0xE2 - .byte 0x10, 0x80, 0xBD, 0xE8, 0x08, 0x4E, 0x32, 0x02, 0x3C, 0x3B, 0x32, 0x02, 0xE8, 0x3A, 0x32, 0x02 - .byte 0x04, 0x3B, 0x32, 0x02, 0x20, 0x3B, 0x32, 0x02, 0x98, 0x3A, 0x32, 0x02, 0x60, 0x3B, 0x32, 0x02 + + arm_func_start ov11_02311AF4 +ov11_02311AF4: ; 0x02311AF4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02311CA4 ; =0x02324E08 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #2 + bne _02311C9C + mov r0, #1 + strb r0, [r1, #8] + bl ov11_022F1798 + mov r4, r0 + ldr r1, _02311CA8 ; =0x02323B3C + mov r2, r4 + mov r0, #1 + bl DebugPrint + bl ov11_023118E8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02311CA4 ; =0x02324E08 + mvn r1, #0 + str r0, [r2, #4] + cmp r4, r1 + bne _02311B84 + ldr r1, _02311CAC ; =0x02323AE8 + bl ov11_022EBC18 + ldr r0, _02311CA4 ; =0x02324E08 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _02311CA4 ; =0x02324E08 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + b _02311C80 +_02311B84: + bl ov11_022F17B4 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02311C30 +_02311B98: ; jump table + b _02311C0C ; case 0 + b _02311C30 ; case 1 + b _02311C30 ; case 2 + b _02311C30 ; case 3 + b _02311C30 ; case 4 + b _02311C30 ; case 5 + b _02311BCC ; case 6 + b _02311BCC ; case 7 + b _02311BCC ; case 8 + b _02311BCC ; case 9 + b _02311BCC ; case 10 + b _02311BE8 ; case 11 + b _02311BE8 ; case 12 +_02311BCC: + ldr r0, _02311CA4 ; =0x02324E08 + ldr r1, _02311CB0 ; =0x02323B04 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + b _02311C50 +_02311BE8: + ldr r0, _02311CA4 ; =0x02324E08 + ldr r1, _02311CB4 ; =0x02323B20 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 + b _02311C50 +_02311C0C: + ldr r1, _02311CB8 ; =0x02323A98 + add r0, sp, #0 + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + ldr r1, _02311CBC ; =0x02323B60 + mov r2, r4 + str ip, [sp] + str r3, [sp, #4] + bl FatalError +_02311C30: + ldr r0, _02311CA4 ; =0x02324E08 + ldr r1, _02311CAC ; =0x02323AE8 + ldr r0, [r0, #4] + bl ov11_022EBC18 + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 +_02311C50: + ldr r0, _02311CA4 ; =0x02324E08 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + ldr r0, _02311CA4 ; =0x02324E08 + ldr r0, [r0, #4] + bl ov11_022F17E8 + ldr r0, _02311CA4 ; =0x02324E08 + ldr r0, [r0] + add r0, r0, #0xc + bl ov11_022F1EEC +_02311C80: + ldr r0, _02311CA4 ; =0x02324E08 + mov r3, #3 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #8] +_02311C9C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02311CA4: .word 0x02324E08 +_02311CA8: .word 0x02323B3C +_02311CAC: .word 0x02323AE8 +_02311CB0: .word 0x02323B04 +_02311CB4: .word 0x02323B20 +_02311CB8: .word 0x02323A98 +_02311CBC: .word 0x02323B60 + arm_func_end ov11_02311AF4 arm_func_start ov11_02311CC0 ov11_02311CC0: ; 0x02311CC0 @@ -59429,12 +63777,28 @@ _02311D18: _02311D24: .word 0x02324E08 _02311D28: .word 0x02323A98 arm_func_end ov11_02311CC0 -_02311D2C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3 - .byte 0x04, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13, 0x04, 0x00, 0x00, 0x0A, 0x87, 0x77, 0xFF, 0xEB - .byte 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x10, 0xC0, 0xE5 - .byte 0x6C, 0x03, 0x00, 0xEB, 0x08, 0x80, 0xBD, 0xE8, 0x08, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02311D2C +ov11_02311D2C: ; 0x02311D2C + stmdb sp!, {r3, lr} + ldr r0, _02311D68 ; =0x02324E08 + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311D60 + bl ov11_022EFB70 + ldr r0, _02311D68 ; =0x02324E08 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] +_02311D60: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311D68: .word 0x02324E08 + arm_func_end ov11_02311D2C arm_func_start ov11_02311D6C ov11_02311D6C: ; 0x02311D6C @@ -59445,26 +63809,92 @@ ov11_02311D6C: ; 0x02311D6C _02311D78: .word ov11_0230D270 _02311D7C: .word 0x02323B98 arm_func_end ov11_02311D6C -_02311D80: - .byte 0x10, 0x40, 0x2D, 0xE9, 0x30, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3, 0xF7, 0xBC, 0xF3, 0xEB - .byte 0x90, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x41, 0x00, 0x00, 0xEB, 0x10, 0x00, 0xA0, 0xE3 - .byte 0xDA, 0x5F, 0xFF, 0xEB, 0x7C, 0x00, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3, 0x04, 0x10, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x0A, 0x30, 0xC1, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x0B, 0x30, 0xC1, 0xE5 - .byte 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x20, 0xC1, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x04, 0x30, 0x81, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0x08, 0x20, 0xC0, 0xE5, 0xE2, 0x58, 0xFF, 0xEB, 0x00, 0x40, 0xB0, 0xE1 - .byte 0x0E, 0x00, 0x00, 0x0A, 0x3C, 0xC0, 0x9F, 0xE5, 0x0F, 0x00, 0xB4, 0xE8, 0x04, 0xC0, 0x9C, 0xE5 - .byte 0x10, 0xE0, 0x8C, 0xE2, 0x0E, 0xC0, 0xA0, 0xE1, 0x0F, 0x00, 0xAE, 0xE8, 0x0F, 0x00, 0x94, 0xE8 - .byte 0x0F, 0x00, 0x8E, 0xE8, 0x0C, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE3, 0x7B, 0x5E, 0xF5, 0xEB - .byte 0x10, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x08, 0x10, 0xC0, 0xE5 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x10, 0x80, 0xBD, 0xE8, 0x10, 0x4E, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x60, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x07, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x0C, 0x00, 0xC1, 0x15 - .byte 0x00, 0x00, 0xA0, 0x13, 0x08, 0x80, 0xBD, 0x18, 0x11, 0x00, 0x00, 0xEB, 0x3C, 0x00, 0x9F, 0xE5 - .byte 0x07, 0x20, 0xA0, 0xE3, 0x04, 0x10, 0x90, 0xE5, 0x04, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x90, 0xE5 - .byte 0x08, 0x00, 0xD0, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x5E, 0xF5, 0xEB - .byte 0x18, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0xBE, 0xBC, 0xF3, 0xEB, 0x0C, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x10, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02311D80 +ov11_02311D80: ; 0x02311D80 + stmdb sp!, {r4, lr} + mov r0, #0x30 + mov r1, #0xf + bl MemAlloc + ldr r1, _02311E28 ; =0x02324E10 + str r0, [r1, #4] + bl ov11_02311EA4 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r0, _02311E28 ; =0x02324E10 + mov r3, #1 + ldr r1, [r0, #4] + mov r2, #0 + strb r3, [r1, #0xa] + ldr r1, [r0, #4] + strb r3, [r1, #0xb] + ldr r1, [r0, #4] + strb r2, [r1, #0xc] + ldr r1, [r0, #4] + str r3, [r1, #4] + ldr r0, [r0, #4] + strb r2, [r0, #8] + bl ov11_022E8168 + movs r4, r0 + beq _02311E20 + ldr ip, _02311E28 ; =0x02324E10 + ldmia r4!, {r0, r1, r2, r3} + ldr ip, [ip, #4] + add lr, ip, #0x10 + mov ip, lr + stmia lr!, {r0, r1, r2, r3} + ldmia r4, {r0, r1, r2, r3} + stmia lr, {r0, r1, r2, r3} + mov r0, ip + mov r1, #0 + bl sub_02069800 + ldr r0, _02311E28 ; =0x02324E10 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_02311E20: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02311E28: .word 0x02324E10 + arm_func_end ov11_02311D80 + + arm_func_start ov11_02311E2C +ov11_02311E2C: ; 0x02311E2C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _02311E58 + ldr r0, _02311EA0 ; =0x02324E10 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0xc] + movne r0, #0 + ldmneia sp!, {r3, pc} +_02311E58: + bl ov11_02311EA4 + ldr r0, _02311EA0 ; =0x02324E10 + mov r2, #7 + ldr r1, [r0, #4] + str r2, [r1, #4] + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02311E80 + bl sub_02069904 +_02311E80: + ldr r0, _02311EA0 ; =0x02324E10 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02311EA0 ; =0x02324E10 + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311EA0: .word 0x02324E10 + arm_func_end ov11_02311E2C arm_func_start ov11_02311EA4 ov11_02311EA4: ; 0x02311EA4 @@ -59502,10 +63932,24 @@ _02311F08: .align 2, 0 _02311F1C: .word 0x02324E10 arm_func_end ov11_02311EA4 -_02311F20: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x00, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3 - .byte 0x01, 0x00, 0xA0, 0x13, 0x09, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x4E, 0x32, 0x02 - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_02311F20 +ov11_02311F20: ; 0x02311F20 + ldr r0, _02311F3C ; =0x02324E10 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_02311F3C: .word 0x02324E10 + arm_func_end ov11_02311F20 + + arm_func_start ov11_02311F40 +ov11_02311F40: ; 0x02311F40 + bx lr + arm_func_end ov11_02311F40 arm_func_start ov11_02311F44 ov11_02311F44: ; 0x02311F44 @@ -59744,22 +64188,68 @@ ov11_02312250: ; 0x02312250 _0231225C: .word ov11_0230D270 _02312260: .word 0x02323BF8 arm_func_end ov11_02312250 -_02312264: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x6E, 0x0F, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0xBE, 0xBB, 0xF3, 0xEB, 0xC0, 0x10, 0x9F, 0xE5, 0x00, 0x30, 0xE0, 0xE3, 0x04, 0x00, 0x81, 0xE5 - .byte 0xB0, 0x30, 0xC0, 0xE1, 0x04, 0x00, 0x91, 0xE5, 0x45, 0x2F, 0x63, 0xE2, 0xBC, 0x22, 0xC0, 0xE1 - .byte 0x04, 0x20, 0x91, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0xB2, 0x30, 0xC2, 0xE1, 0x04, 0x10, 0x91, 0xE5 - .byte 0xBE, 0x32, 0xC1, 0xE1, 0x66, 0x01, 0x00, 0xEB, 0x8C, 0x00, 0x9F, 0xE5, 0x8C, 0x20, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x90, 0xE5, 0xA7, 0x10, 0xA0, 0xE3, 0x30, 0x00, 0x80, 0xE2, 0xE7, 0x92, 0xFF, 0xEB - .byte 0x74, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0x30, 0x00, 0x80, 0xE2 - .byte 0xA7, 0x89, 0xFF, 0xEB, 0x60, 0x00, 0x9F, 0xE5, 0x02, 0x1B, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0x00, 0x20, 0xA0, 0xE3, 0x30, 0x00, 0x80, 0xE2, 0xFE, 0x8B, 0xFF, 0xEB, 0x48, 0x00, 0x9F, 0xE5 - .byte 0x4C, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0x40, 0x20, 0x9F, 0xE5, 0xF4, 0x00, 0x80, 0xE2 - .byte 0xD6, 0x92, 0xFF, 0xEB, 0x30, 0x00, 0x9F, 0xE5, 0x0A, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5 - .byte 0xF4, 0x00, 0x80, 0xE2, 0x96, 0x89, 0xFF, 0xEB, 0x1C, 0x00, 0x9F, 0xE5, 0x02, 0x1B, 0xA0, 0xE3 - .byte 0x04, 0x00, 0x90, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0xF4, 0x00, 0x80, 0xE2, 0xED, 0x8B, 0xFF, 0xEB - .byte 0x18, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x18, 0x4E, 0x32, 0x02 - .byte 0x00, 0x00, 0x08, 0xA0, 0x79, 0x01, 0x00, 0x00 + + arm_func_start ov11_02312264 +ov11_02312264: ; 0x02312264 + stmdb sp!, {r3, lr} + mov r0, #0x1b8 + mov r1, #0xf + bl MemAlloc + ldr r1, _0231233C ; =0x02324E18 + mvn r3, #0 + str r0, [r1, #4] + strh r3, [r0] + ldr r0, [r1, #4] + rsb r2, r3, #0x114 + strh r2, [r0, #0x2c] + ldr r2, [r1, #4] + mov r0, #0 + strh r3, [r2, #2] + ldr r1, [r1, #4] + strh r3, [r1, #0x2e] + bl ov11_02312844 + ldr r0, _0231233C ; =0x02324E18 + ldr r2, _02312340 ; =0xA0080000 + ldr r0, [r0, #4] + mov r1, #0xa7 + add r0, r0, #0x30 + bl ov11_022F6E60 + ldr r0, _0231233C ; =0x02324E18 + mov r1, #8 + ldr r0, [r0, #4] + add r0, r0, #0x30 + bl ov11_022F4974 + ldr r0, _0231233C ; =0x02324E18 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x30 + bl ov11_022F52E8 + ldr r0, _0231233C ; =0x02324E18 + ldr r1, _02312344 ; =0x00000179 + ldr r0, [r0, #4] + ldr r2, _02312340 ; =0xA0080000 + add r0, r0, #0xf4 + bl ov11_022F6E60 + ldr r0, _0231233C ; =0x02324E18 + mov r1, #0xa + ldr r0, [r0, #4] + add r0, r0, #0xf4 + bl ov11_022F4974 + ldr r0, _0231233C ; =0x02324E18 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xf4 + bl ov11_022F52E8 + bl ov11_02312398 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231233C: .word 0x02324E18 +_02312340: .word 0xA0080000 +_02312344: .word 0x00000179 + arm_func_end ov11_02312264 arm_func_start ov11_02312348 ov11_02312348: ; 0x02312348 @@ -59823,26 +64313,98 @@ ov11_02312398: ; 0x02312398 _02312414: .word 0x02324E18 _02312418: .word 0x02323BE0 arm_func_end ov11_02312398 -_0231241C: - .byte 0x14, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x10, 0x90, 0xE5, 0x04, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13 - .byte 0x0C, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x4E, 0x32, 0x02, 0x00, 0x00, 0x50, 0xE3 - .byte 0x02, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x0A, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x30, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x04, 0x30, 0x90, 0xE5, 0xBC, 0x12, 0xC3, 0xE1 - .byte 0x04, 0x00, 0x90, 0xE5, 0x0C, 0x20, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x14, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x20, 0xA0, 0xE3, 0x04, 0x30, 0x90, 0xE5, 0xBE, 0x12, 0xC3, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0x0C, 0x20, 0xC0, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x4E, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0xA4, 0x00, 0x9F, 0xE5, 0x04, 0x20, 0x90, 0xE5, 0x08, 0x00, 0x92, 0xE5, 0x01, 0x00, 0x50, 0xE3 - .byte 0x04, 0x00, 0x50, 0x13, 0x22, 0x00, 0x00, 0x1A, 0xFC, 0x02, 0xD2, 0xE1, 0x00, 0xC0, 0xE0, 0xE3 - .byte 0x0C, 0x00, 0x50, 0xE1, 0x0E, 0x00, 0x00, 0x0A, 0x01, 0x10, 0xA0, 0xE3, 0x78, 0x00, 0x9F, 0xE5 - .byte 0x0C, 0x10, 0xC2, 0xE5, 0x04, 0x30, 0x90, 0xE5, 0x02, 0x20, 0xA0, 0xE3, 0xFC, 0x12, 0xD3, 0xE1 - .byte 0xB0, 0x10, 0xC3, 0xE1, 0x04, 0x10, 0x90, 0xE5, 0xBC, 0xC2, 0xC1, 0xE1, 0x04, 0x10, 0x90, 0xE5 - .byte 0x08, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x90, 0xE5, 0xF0, 0x00, 0xD0, 0xE1, 0x90, 0x88, 0xFF, 0xEB - .byte 0x0F, 0x00, 0x00, 0xEA, 0xFE, 0x02, 0xD2, 0xE1, 0x0C, 0x00, 0x50, 0xE1, 0x00, 0x00, 0xA0, 0x03 - .byte 0x0C, 0x00, 0xC2, 0x05, 0x0A, 0x00, 0x00, 0x0A, 0x01, 0x10, 0xA0, 0xE3, 0x0C, 0x10, 0xC2, 0xE5 - .byte 0x24, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0xA0, 0xE3, 0x04, 0x30, 0x90, 0xE5, 0xFE, 0x22, 0xD3, 0xE1 - .byte 0xB2, 0x20, 0xC3, 0xE1, 0x04, 0x20, 0x90, 0xE5, 0xBE, 0xC2, 0xC2, 0xE1, 0x04, 0x00, 0x90, 0xE5 - .byte 0x08, 0x10, 0x80, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x18, 0x4E, 0x32, 0x02 + + arm_func_start ov11_0231241C +ov11_0231241C: ; 0x0231241C + ldr r0, _02312438 ; =0x02324E18 + ldr r1, [r0, #4] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_02312438: .word 0x02324E18 + arm_func_end ov11_0231241C + + arm_func_start ov11_0231243C +ov11_0231243C: ; 0x0231243C + cmp r0, #0 + beq _02312450 + cmp r0, #1 + beq _0231246C + bx lr +_02312450: + ldr r0, _02312488 ; =0x02324E18 + mov r2, #1 + ldr r3, [r0, #4] + strh r1, [r3, #0x2c] + ldr r0, [r0, #4] + strb r2, [r0, #0xc] + bx lr +_0231246C: + ldr r0, _02312488 ; =0x02324E18 + mov r2, #1 + ldr r3, [r0, #4] + strh r1, [r3, #0x2e] + ldr r0, [r0, #4] + strb r2, [r0, #0xc] + bx lr + .align 2, 0 +_02312488: .word 0x02324E18 + arm_func_end ov11_0231243C + + arm_func_start ov11_0231248C +ov11_0231248C: ; 0x0231248C + stmdb sp!, {r3, lr} + ldr r0, _0231253C ; =0x02324E18 + ldr r2, [r0, #4] + ldr r0, [r2, #8] + cmp r0, #1 + cmpne r0, #4 + bne _02312534 + ldrsh r0, [r2, #0x2c] + mvn ip, #0 + cmp r0, ip + beq _023124F4 + mov r1, #1 + ldr r0, _0231253C ; =0x02324E18 + strb r1, [r2, #0xc] + ldr r3, [r0, #4] + mov r2, #2 + ldrsh r1, [r3, #0x2c] + strh r1, [r3] + ldr r1, [r0, #4] + strh ip, [r1, #0x2c] + ldr r1, [r0, #4] + str r2, [r1, #8] + ldr r0, [r0, #4] + ldrsh r0, [r0] + bl ov11_022F4734 + b _02312534 +_023124F4: + ldrsh r0, [r2, #0x2e] + cmp r0, ip + moveq r0, #0 + streqb r0, [r2, #0xc] + beq _02312534 + mov r1, #1 + strb r1, [r2, #0xc] + ldr r0, _0231253C ; =0x02324E18 + mov r1, #3 + ldr r3, [r0, #4] + ldrsh r2, [r3, #0x2e] + strh r2, [r3, #2] + ldr r2, [r0, #4] + strh ip, [r2, #0x2e] + ldr r0, [r0, #4] + str r1, [r0, #8] +_02312534: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231253C: .word 0x02324E18 + arm_func_end ov11_0231248C arm_func_start ov11_02312540 ov11_02312540: ; 0x02312540 @@ -60041,12 +64603,28 @@ _023127F8: .word 0x02324E18 _023127FC: .word 0x02323BE8 _02312800: .word 0x02323BD8 arm_func_end ov11_02312730 -_02312804: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x30, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x90, 0xE5 - .byte 0x04, 0x10, 0xD1, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0x90, 0x15, 0x00, 0x00, 0x50, 0x13 - .byte 0x04, 0x00, 0x00, 0x0A, 0xD1, 0x74, 0xFF, 0xEB, 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3 - .byte 0x04, 0x00, 0x90, 0xE5, 0x04, 0x10, 0xC0, 0xE5, 0xB6, 0x00, 0x00, 0xEB, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x18, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02312804 +ov11_02312804: ; 0x02312804 + stmdb sp!, {r3, lr} + ldr r0, _02312840 ; =0x02324E18 + ldr r1, [r0, #4] + ldrb r1, [r1, #4] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + beq _02312838 + bl ov11_022EFB70 + ldr r0, _02312840 ; =0x02324E18 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #4] +_02312838: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312840: .word 0x02324E18 + arm_func_end ov11_02312804 arm_func_start ov11_02312844 ov11_02312844: ; 0x02312844 @@ -61322,11 +65900,20 @@ ov11_02313930: ; 0x02313930 .align 2, 0 _023139C4: .word 0x02324E30 _023139C8: .word 0x06210000 -_023139CC: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x64, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x04, 0x00, 0x91, 0xE5, 0x07, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x0B, 0x00, 0xC1, 0x15 - .byte 0x00, 0x00, 0xA0, 0x13, 0x08, 0x80, 0xBD, 0x18 + + arm_func_start ov11_023139CC +ov11_023139CC: ; 0x023139CC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _023139F8 + ldr r0, _02313A44 ; =0x02324E30 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0xb] + movne r0, #0 + ldmneia sp!, {r3, pc} _023139F8: bl ov11_02313A48 ldr r0, _02313A44 ; =0x02324E30 @@ -61389,10 +65976,24 @@ ov11_02313A98: ; 0x02313A98 .align 2, 0 _02313AB4: .word 0x02324E30 arm_func_end ov11_02313A98 -_02313AB8: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x00, 0x00, 0xD1, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x09, 0x00, 0xD1, 0x05 - .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x4E, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_02313AB8 +ov11_02313AB8: ; 0x02313AB8 + ldr r0, _02313AD4 ; =0x02324E30 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_02313AD4: .word 0x02324E30 + arm_func_end ov11_02313AB8 + + arm_func_start ov11_02313AD8 +ov11_02313AD8: ; 0x02313AD8 + bx lr + arm_func_end ov11_02313AD8 arm_func_start ov11_02313ADC ov11_02313ADC: ; 0x02313ADC @@ -63253,35 +67854,122 @@ _023154F8: .word 0x023241D8 _023154FC: .word 0x02324258 _02315500: .word 0x020A9FB0 arm_func_end ov11_02315278 -_02315504: - .byte 0x70, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1 - .byte 0x00, 0x40, 0xA0, 0xE3, 0x04, 0x10, 0x95, 0xE5, 0x02, 0x07, 0x44, 0xE2, 0x00, 0x00, 0x51, 0xE1 - .byte 0x06, 0x00, 0x00, 0x9A, 0x06, 0x08, 0x44, 0xE2, 0x00, 0x00, 0x51, 0xE1, 0x01, 0x00, 0xA0, 0x33 - .byte 0xB0, 0x00, 0xC5, 0x31, 0x04, 0x00, 0x95, 0x35, 0x06, 0x07, 0x80, 0x32, 0x04, 0x00, 0x85, 0x35 - .byte 0xB0, 0x00, 0xD5, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0xB2, 0x01, 0xD5, 0xE1, 0x02, 0x48, 0xA0, 0x03 - .byte 0x00, 0x40, 0x64, 0x02, 0x06, 0x0D, 0x80, 0xE2, 0xB2, 0x01, 0xC5, 0xE1, 0xB2, 0x01, 0xD5, 0xE1 - .byte 0x1E, 0x0B, 0x50, 0xE3, 0x06, 0x0D, 0x40, 0x82, 0xB2, 0x01, 0xC5, 0x81, 0xB2, 0x01, 0xD5, 0xE1 - .byte 0x0F, 0x0B, 0x50, 0xE3, 0x0C, 0x00, 0x00, 0x9A, 0x01, 0x09, 0xA0, 0xE3, 0x08, 0x10, 0x95, 0xE5 - .byte 0x00, 0x00, 0x60, 0xE2, 0x00, 0x00, 0x01, 0xE0, 0x08, 0x00, 0x85, 0xE5, 0xB4, 0x01, 0xD5, 0xE1 - .byte 0x01, 0x00, 0x80, 0xE2, 0xB4, 0x01, 0xC5, 0xE1, 0xB4, 0x01, 0xD5, 0xE1, 0x08, 0x10, 0x95, 0xE5 - .byte 0x80, 0x0F, 0xA0, 0xE1, 0x20, 0x09, 0x81, 0xE0, 0x08, 0x00, 0x85, 0xE5, 0xB0, 0x01, 0xD5, 0xE1 - .byte 0xF8, 0xC0, 0x9F, 0xE5, 0xB2, 0x21, 0xD5, 0xE1, 0x40, 0x02, 0xA0, 0xE1, 0x80, 0x10, 0xA0, 0xE1 - .byte 0x81, 0x00, 0xA0, 0xE1, 0xF0, 0x30, 0x9C, 0xE1, 0x01, 0x00, 0x81, 0xE2, 0x80, 0x10, 0xA0, 0xE1 - .byte 0x93, 0x02, 0x02, 0xE0, 0xC2, 0x05, 0xA0, 0xE1, 0x04, 0x30, 0x95, 0xE5, 0x20, 0x0A, 0x82, 0xE0 - .byte 0x40, 0x06, 0x83, 0xE0, 0x04, 0x00, 0x85, 0xE5, 0xF1, 0x10, 0x9C, 0xE1, 0xB2, 0x01, 0xD5, 0xE1 - .byte 0x08, 0x30, 0x95, 0xE5, 0x91, 0x00, 0x02, 0xE0, 0xC2, 0x05, 0xA0, 0xE1, 0x20, 0x0A, 0x82, 0xE0 - .byte 0x40, 0x06, 0x43, 0xE0, 0x08, 0x00, 0x85, 0xE5, 0xB0, 0x60, 0xD5, 0xE1, 0xF0, 0x02, 0xD5, 0xE1 - .byte 0x01, 0x10, 0xA0, 0xE3, 0x01, 0x00, 0x56, 0xE3, 0x01, 0x60, 0xA0, 0x83, 0x49, 0x27, 0xF4, 0xEB - .byte 0x1C, 0x00, 0x95, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x3C, 0x30, 0xC0, 0xE5, 0x00, 0x30, 0x8D, 0xE5 - .byte 0x04, 0x30, 0x8D, 0xE5, 0x78, 0x10, 0x9F, 0xE5, 0x1C, 0x00, 0x95, 0xE5, 0x00, 0x10, 0x91, 0xE5 - .byte 0x06, 0x20, 0xA0, 0xE1, 0xB0, 0x1C, 0x91, 0xE5, 0x62, 0x24, 0xF4, 0xEB, 0x1C, 0xC0, 0x95, 0xE5 - .byte 0x5C, 0x00, 0x9F, 0xE5, 0x3D, 0x10, 0xDC, 0xE5, 0x3F, 0x30, 0xA0, 0xE3, 0x7E, 0x20, 0xA0, 0xE3 - .byte 0x04, 0x10, 0x81, 0xE3, 0x3D, 0x10, 0xCC, 0xE5, 0x04, 0xC0, 0x95, 0xE5, 0x1C, 0x10, 0x95, 0xE5 - .byte 0x04, 0x40, 0x8C, 0xE0, 0x24, 0x46, 0xA0, 0xE1, 0xB0, 0x40, 0xC1, 0xE1, 0x00, 0x00, 0x90, 0xE5 - .byte 0x08, 0x40, 0x95, 0xE5, 0x24, 0x10, 0x90, 0xE5, 0x1C, 0x00, 0x95, 0xE5, 0x24, 0x16, 0x81, 0xE0 - .byte 0xB2, 0x10, 0xC0, 0xE1, 0x1C, 0x10, 0x95, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x3E, 0x30, 0xC1, 0xE5 - .byte 0x1C, 0x10, 0x95, 0xE5, 0xBA, 0x22, 0xC1, 0xE1, 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x80, 0xBD, 0xE8 - .byte 0xB0, 0x9F, 0x0A, 0x02, 0x34, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02315504 +ov11_02315504: ; 0x02315504 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, #0 + ldr r1, [r5, #4] + sub r0, r4, #0x80000 + cmp r1, r0 + bls _02315540 + sub r0, r4, #0x60000 + cmp r1, r0 + movlo r0, #1 + strloh r0, [r5] + ldrlo r0, [r5, #4] + addlo r0, r0, #0x180000 + strlo r0, [r5, #4] +_02315540: + ldrh r0, [r5] + cmp r0, #0 + ldrh r0, [r5, #0x12] + moveq r4, #0x20000 + rsbeq r4, r4, #0 + add r0, r0, #0x180 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + cmp r0, #0x7800 + subhi r0, r0, #0x180 + strhih r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + cmp r0, #0x3c00 + bls _023155AC + mov r0, #0x4000 + ldr r1, [r5, #8] + rsb r0, r0, #0 + and r0, r1, r0 + str r0, [r5, #8] + ldrh r0, [r5, #0x14] + add r0, r0, #1 + strh r0, [r5, #0x14] + ldrh r0, [r5, #0x14] + ldr r1, [r5, #8] + mov r0, r0, lsl #0x1f + add r0, r1, r0, lsr #18 + str r0, [r5, #8] +_023155AC: + ldrh r0, [r5, #0x10] + ldr ip, _023156B0 ; =0x020A9FB0 + ldrh r2, [r5, #0x12] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r3, [ip, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + mul r2, r3, r2 + mov r0, r2, asr #0xb + ldr r3, [r5, #4] + add r0, r2, r0, lsr #20 + add r0, r3, r0, asr #12 + str r0, [r5, #4] + ldrsh r1, [ip, r1] + ldrh r0, [r5, #0x12] + ldr r3, [r5, #8] + mul r2, r1, r0 + mov r0, r2, asr #0xb + add r0, r2, r0, lsr #20 + sub r0, r3, r0, asr #12 + str r0, [r5, #8] + ldrh r6, [r5] + ldrsh r0, [r5, #0x20] + mov r1, #1 + cmp r6, #1 + movhi r6, #1 + bl sub_0201F348 + ldr r0, [r5, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _023156B4 ; =0x02324E34 + ldr r0, [r5, #0x1c] + ldr r1, [r1] + mov r2, r6 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr ip, [r5, #0x1c] + ldr r0, _023156B4 ; =0x02324E34 + ldrb r1, [ip, #0x3d] + mov r3, #0x3f + mov r2, #0x7e + orr r1, r1, #4 + strb r1, [ip, #0x3d] + ldr ip, [r5, #4] + ldr r1, [r5, #0x1c] + add r4, ip, r4 + mov r4, r4, lsr #0xc + strh r4, [r1] + ldr r0, [r0] + ldr r4, [r5, #8] + ldr r1, [r0, #0x24] + ldr r0, [r5, #0x1c] + add r1, r1, r4, lsr #12 + strh r1, [r0, #2] + ldr r1, [r5, #0x1c] + mov r0, #0 + strb r3, [r1, #0x3e] + ldr r1, [r5, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023156B0: .word 0x020A9FB0 +_023156B4: .word 0x02324E34 + arm_func_end ov11_02315504 arm_func_start ov11_023156B8 ov11_023156B8: ; 0x023156B8 @@ -63386,30 +68074,103 @@ _023157B4: _0231581C: .word 0x02324E34 _02315820: .word 0x020A9FB0 arm_func_end ov11_02315758 -_02315824: - .byte 0x38, 0x40, 0x2D, 0xE9, 0x10, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1 - .byte 0x08, 0x10, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xE2, 0x56, 0xFF, 0xEB, 0xB4, 0x01, 0xD5, 0xE1 - .byte 0x00, 0x00, 0x50, 0xE3, 0x18, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x40, 0xE2, 0xB4, 0x01, 0xC5, 0xE1 - .byte 0xB0, 0x01, 0xD5, 0xE1, 0x28, 0x31, 0x9F, 0xE5, 0x04, 0x40, 0x95, 0xE5, 0x40, 0x02, 0xA0, 0xE1 - .byte 0x80, 0x10, 0xA0, 0xE1, 0x81, 0x00, 0xA0, 0xE1, 0xF0, 0x20, 0x93, 0xE1, 0x01, 0x00, 0x81, 0xE2 - .byte 0x80, 0x10, 0xA0, 0xE1, 0x82, 0x00, 0x82, 0xE0, 0x00, 0x27, 0xA0, 0xE1, 0xF1, 0x10, 0x93, 0xE1 - .byte 0x42, 0x05, 0xA0, 0xE1, 0xA0, 0x0A, 0x82, 0xE0, 0xC0, 0x25, 0x84, 0xE0, 0x81, 0x00, 0x81, 0xE0 - .byte 0x04, 0x20, 0x85, 0xE5, 0x00, 0x17, 0xA0, 0xE1, 0x41, 0x05, 0xA0, 0xE1, 0x08, 0x20, 0x95, 0xE5 - .byte 0xA0, 0x0A, 0x81, 0xE0, 0xC0, 0x05, 0x42, 0xE0, 0x08, 0x00, 0x85, 0xE5, 0x0C, 0x20, 0x95, 0xE5 - .byte 0x08, 0x00, 0x9D, 0xE5, 0x02, 0x00, 0x50, 0xE1, 0x05, 0x00, 0x00, 0x0A, 0x04, 0x10, 0x95, 0xE5 - .byte 0x02, 0x00, 0x40, 0xE0, 0x00, 0x06, 0x41, 0xE0, 0x04, 0x00, 0x85, 0xE5, 0x08, 0x00, 0x9D, 0xE5 - .byte 0x0C, 0x00, 0x85, 0xE5, 0xF0, 0x02, 0xD5, 0xE1, 0xB0, 0x40, 0xD5, 0xE1, 0x01, 0x10, 0xA0, 0xE3 - .byte 0x98, 0x26, 0xF4, 0xEB, 0x1C, 0x00, 0x95, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x3C, 0x30, 0xC0, 0xE5 - .byte 0x00, 0x30, 0x8D, 0xE5, 0x04, 0x30, 0x8D, 0xE5, 0x88, 0x10, 0x9F, 0xE5, 0x1C, 0x00, 0x95, 0xE5 - .byte 0x00, 0x10, 0x91, 0xE5, 0x04, 0x20, 0xA0, 0xE1, 0xB0, 0x1C, 0x91, 0xE5, 0xB1, 0x23, 0xF4, 0xEB - .byte 0x1C, 0x10, 0x95, 0xE5, 0x18, 0xE0, 0xA0, 0xE3, 0x3D, 0x00, 0xD1, 0xE5, 0xFF, 0xC0, 0xA0, 0xE3 - .byte 0x3F, 0x30, 0x64, 0xE2, 0x04, 0x00, 0x80, 0xE3, 0x3D, 0x00, 0xC1, 0xE5, 0x04, 0x10, 0x95, 0xE5 - .byte 0x1C, 0x00, 0x95, 0xE5, 0x21, 0x16, 0xA0, 0xE1, 0xB0, 0x10, 0xC0, 0xE1, 0x08, 0x10, 0x95, 0xE5 - .byte 0x1C, 0x00, 0x95, 0xE5, 0x21, 0x16, 0xA0, 0xE1, 0xB2, 0x10, 0xC0, 0xE1, 0x1C, 0x00, 0x95, 0xE5 - .byte 0x40, 0x20, 0x64, 0xE2, 0xB8, 0xE0, 0xC0, 0xE1, 0x1C, 0x10, 0x95, 0xE5, 0x00, 0x00, 0xA0, 0xE3 - .byte 0xBA, 0xE0, 0xC1, 0xE1, 0x1C, 0x10, 0x95, 0xE5, 0x2F, 0xC0, 0xC1, 0xE5, 0x1C, 0x10, 0x95, 0xE5 - .byte 0x3E, 0x30, 0xC1, 0xE5, 0x1C, 0x10, 0x95, 0xE5, 0xBA, 0x22, 0xC1, 0xE1, 0x10, 0xD0, 0x8D, 0xE2 - .byte 0x38, 0x80, 0xBD, 0xE8, 0xB0, 0x9F, 0x0A, 0x02, 0x34, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02315824 +ov11_02315824: ; 0x02315824 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + add r1, sp, #8 + mov r0, #0 + bl ov11_022EB3C8 + ldrh r0, [r5, #0x14] + cmp r0, #0 + beq _023158AC + sub r0, r0, #1 + strh r0, [r5, #0x14] + ldrh r0, [r5, #0x10] + ldr r3, _02315984 ; =0x020A9FB0 + ldr r4, [r5, #4] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r2, [r3, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + add r0, r2, r2, lsl #1 + mov r2, r0, lsl #0xe + ldrsh r1, [r3, r1] + mov r0, r2, asr #0xa + add r0, r2, r0, lsr #21 + add r2, r4, r0, asr #11 + add r0, r1, r1, lsl #1 + str r2, [r5, #4] + mov r1, r0, lsl #0xe + mov r0, r1, asr #0xa + ldr r2, [r5, #8] + add r0, r1, r0, lsr #21 + sub r0, r2, r0, asr #11 + str r0, [r5, #8] +_023158AC: + ldr r2, [r5, #0xc] + ldr r0, [sp, #8] + cmp r0, r2 + beq _023158D4 + ldr r1, [r5, #4] + sub r0, r0, r2 + sub r0, r1, r0, lsl #12 + str r0, [r5, #4] + ldr r0, [sp, #8] + str r0, [r5, #0xc] +_023158D4: + ldrsh r0, [r5, #0x20] + ldrh r4, [r5] + mov r1, #1 + bl sub_0201F348 + ldr r0, [r5, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _02315988 ; =0x02324E34 + ldr r0, [r5, #0x1c] + ldr r1, [r1] + mov r2, r4 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr r1, [r5, #0x1c] + mov lr, #0x18 + ldrb r0, [r1, #0x3d] + mov ip, #0xff + rsb r3, r4, #0x3f + orr r0, r0, #4 + strb r0, [r1, #0x3d] + ldr r1, [r5, #4] + ldr r0, [r5, #0x1c] + mov r1, r1, lsr #0xc + strh r1, [r0] + ldr r1, [r5, #8] + ldr r0, [r5, #0x1c] + mov r1, r1, lsr #0xc + strh r1, [r0, #2] + ldr r0, [r5, #0x1c] + rsb r2, r4, #0x40 + strh lr, [r0, #8] + ldr r1, [r5, #0x1c] + mov r0, #0 + strh lr, [r1, #0xa] + ldr r1, [r5, #0x1c] + strb ip, [r1, #0x2f] + ldr r1, [r5, #0x1c] + strb r3, [r1, #0x3e] + ldr r1, [r5, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315984: .word 0x020A9FB0 +_02315988: .word 0x02324E34 + arm_func_end ov11_02315824 arm_func_start ov11_0231598C ov11_0231598C: ; 0x0231598C @@ -63499,31 +68260,104 @@ _02315A90: .align 2, 0 _02315A98: .word 0x02324E34 arm_func_end ov11_023159E8 -_02315A9C: - .byte 0x38, 0x40, 0x2D, 0xE9 - .byte 0x08, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x30, 0x94, 0xE5, 0xB0, 0x11, 0xD4, 0xE1 - .byte 0xC3, 0x05, 0xA0, 0xE1, 0x20, 0x0A, 0x83, 0xE0, 0x01, 0x09, 0x51, 0xE3, 0x40, 0x26, 0xA0, 0xE1 - .byte 0x01, 0x0A, 0xA0, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x03, 0x09, 0x51, 0xE3, 0x09, 0x00, 0x00, 0x1A - .byte 0x11, 0x0C, 0x40, 0xE2, 0x00, 0x00, 0x52, 0xE1, 0x03, 0x06, 0x83, 0xB2, 0x04, 0x00, 0x84, 0xB5 - .byte 0x01, 0x0A, 0xA0, 0xE3, 0x00, 0x00, 0x60, 0xE2, 0x02, 0x00, 0x00, 0xEA, 0x02, 0x0C, 0x52, 0xE3 - .byte 0x03, 0x16, 0x43, 0xC2, 0x04, 0x10, 0x84, 0xC5, 0xB0, 0x11, 0xD4, 0xE1, 0xFC, 0xE0, 0x9F, 0xE5 - .byte 0xB2, 0x31, 0xD4, 0xE1, 0x41, 0x12, 0xA0, 0xE1, 0x81, 0x20, 0xA0, 0xE1, 0x82, 0x10, 0xA0, 0xE1 - .byte 0xF1, 0xC0, 0x9E, 0xE1, 0x01, 0x10, 0x82, 0xE2, 0x81, 0x20, 0xA0, 0xE1, 0x9C, 0x03, 0x03, 0xE0 - .byte 0xC3, 0x15, 0xA0, 0xE1, 0x04, 0xC0, 0x94, 0xE5, 0x21, 0x1A, 0x83, 0xE0, 0x41, 0x16, 0x8C, 0xE0 - .byte 0x04, 0x10, 0x84, 0xE5, 0xF2, 0x20, 0x9E, 0xE1, 0xB2, 0x11, 0xD4, 0xE1, 0x08, 0xC0, 0x94, 0xE5 - .byte 0x92, 0x01, 0x03, 0xE0, 0xC3, 0x15, 0xA0, 0xE1, 0x21, 0x1A, 0x83, 0xE0, 0x41, 0x16, 0x4C, 0xE0 - .byte 0x08, 0x10, 0x84, 0xE5, 0xB6, 0x11, 0xD4, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x01, 0x10, 0x41, 0x12 - .byte 0xB6, 0x11, 0xC4, 0x11, 0x08, 0x10, 0x94, 0x15, 0x00, 0x00, 0x81, 0x10, 0x08, 0x00, 0x84, 0x15 - .byte 0xF0, 0x02, 0xD4, 0xE1, 0xB0, 0x50, 0xD4, 0xE1, 0x01, 0x10, 0xA0, 0xE3, 0xF1, 0x25, 0xF4, 0xEB - .byte 0x1C, 0x00, 0x94, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x3C, 0x30, 0xC0, 0xE5, 0x00, 0x30, 0x8D, 0xE5 - .byte 0x04, 0x30, 0x8D, 0xE5, 0x68, 0x10, 0x9F, 0xE5, 0x1C, 0x00, 0x94, 0xE5, 0x00, 0x10, 0x91, 0xE5 - .byte 0x05, 0x20, 0xA0, 0xE1, 0xB0, 0x1C, 0x91, 0xE5, 0x0A, 0x23, 0xF4, 0xEB, 0x1C, 0xC0, 0x94, 0xE5 - .byte 0x3F, 0x30, 0xA0, 0xE3, 0x3D, 0x10, 0xDC, 0xE5, 0x7E, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x04, 0x10, 0x81, 0xE3, 0x3D, 0x10, 0xCC, 0xE5, 0x04, 0xC0, 0x94, 0xE5, 0x1C, 0x10, 0x94, 0xE5 - .byte 0x2C, 0xC6, 0xA0, 0xE1, 0xB0, 0xC0, 0xC1, 0xE1, 0x08, 0xC0, 0x94, 0xE5, 0x1C, 0x10, 0x94, 0xE5 - .byte 0x2C, 0xC6, 0xA0, 0xE1, 0xB2, 0xC0, 0xC1, 0xE1, 0x1C, 0x10, 0x94, 0xE5, 0x3E, 0x30, 0xC1, 0xE5 - .byte 0x1C, 0x10, 0x94, 0xE5, 0xBA, 0x22, 0xC1, 0xE1, 0x08, 0xD0, 0x8D, 0xE2, 0x38, 0x80, 0xBD, 0xE8 - .byte 0xB0, 0x9F, 0x0A, 0x02, 0x34, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02315A9C +ov11_02315A9C: ; 0x02315A9C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r3, [r4, #4] + ldrh r1, [r4, #0x10] + mov r0, r3, asr #0xb + add r0, r3, r0, lsr #20 + cmp r1, #0x4000 + mov r2, r0, asr #0xc + mov r0, #0x1000 + beq _02315AEC + cmp r1, #0xc000 + bne _02315AF8 + sub r0, r0, #0x1100 + cmp r2, r0 + addlt r0, r3, #0x300000 + strlt r0, [r4, #4] + mov r0, #0x1000 + rsb r0, r0, #0 + b _02315AF8 +_02315AEC: + cmp r2, #0x200 + subgt r1, r3, #0x300000 + strgt r1, [r4, #4] +_02315AF8: + ldrh r1, [r4, #0x10] + ldr lr, _02315C00 ; =0x020A9FB0 + ldrh r3, [r4, #0x12] + mov r1, r1, asr #4 + mov r2, r1, lsl #1 + mov r1, r2, lsl #1 + ldrsh ip, [lr, r1] + add r1, r2, #1 + mov r2, r1, lsl #1 + mul r3, ip, r3 + mov r1, r3, asr #0xb + ldr ip, [r4, #4] + add r1, r3, r1, lsr #20 + add r1, ip, r1, asr #12 + str r1, [r4, #4] + ldrsh r2, [lr, r2] + ldrh r1, [r4, #0x12] + ldr ip, [r4, #8] + mul r3, r2, r1 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + sub r1, ip, r1, asr #12 + str r1, [r4, #8] + ldrh r1, [r4, #0x16] + cmp r1, #0 + subne r1, r1, #1 + strneh r1, [r4, #0x16] + ldrne r1, [r4, #8] + addne r0, r1, r0 + strne r0, [r4, #8] + ldrsh r0, [r4, #0x20] + ldrh r5, [r4] + mov r1, #1 + bl sub_0201F348 + ldr r0, [r4, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _02315C04 ; =0x02324E34 + ldr r0, [r4, #0x1c] + ldr r1, [r1] + mov r2, r5 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr ip, [r4, #0x1c] + mov r3, #0x3f + ldrb r1, [ip, #0x3d] + mov r2, #0x7e + mov r0, #0 + orr r1, r1, #4 + strb r1, [ip, #0x3d] + ldr ip, [r4, #4] + ldr r1, [r4, #0x1c] + mov ip, ip, lsr #0xc + strh ip, [r1] + ldr ip, [r4, #8] + ldr r1, [r4, #0x1c] + mov ip, ip, lsr #0xc + strh ip, [r1, #2] + ldr r1, [r4, #0x1c] + strb r3, [r1, #0x3e] + ldr r1, [r4, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315C00: .word 0x020A9FB0 +_02315C04: .word 0x02324E34 + arm_func_end ov11_02315A9C arm_func_start ov11_02315C08 ov11_02315C08: ; 0x02315C08 @@ -64085,12 +68919,29 @@ _023163C0: .align 2, 0 _023163DC: .word 0x023248C0 arm_func_end ov11_023163B0 -_023163E0: - .byte 0xB2, 0x21, 0xD0, 0xE1, 0x08, 0x10, 0x90, 0xE5, 0x02, 0x01, 0x51, 0xE1, 0xFF, 0x10, 0xA0, 0x33 - .byte 0xB0, 0x10, 0xC0, 0x31, 0x01, 0x0C, 0x41, 0x32, 0x1E, 0xFF, 0x2F, 0x31, 0x02, 0x11, 0x41, 0xE0 - .byte 0x08, 0x10, 0x80, 0xE5, 0xB2, 0x11, 0xD0, 0xE1, 0x04, 0x20, 0x90, 0xE5, 0x01, 0x10, 0x82, 0xE0 - .byte 0x04, 0x10, 0x80, 0xE5, 0x16, 0x0A, 0x51, 0xE3, 0x04, 0x10, 0x90, 0x85, 0x05, 0x19, 0x41, 0x82 - .byte 0x04, 0x10, 0x80, 0x85, 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_023163E0 +ov11_023163E0: ; 0x023163E0 + ldrh r2, [r0, #0x12] + ldr r1, [r0, #8] + cmp r1, r2, lsl #2 + movlo r1, #0xff + strloh r1, [r0] + sublo r0, r1, #0x100 + bxlo lr + sub r1, r1, r2, lsl #2 + str r1, [r0, #8] + ldrh r1, [r0, #0x12] + ldr r2, [r0, #4] + add r1, r2, r1 + str r1, [r0, #4] + cmp r1, #0x16000 + ldrhi r1, [r0, #4] + subhi r1, r1, #0x14000 + strhi r1, [r0, #4] + mov r0, #0 + bx lr + arm_func_end ov11_023163E0 arm_func_start ov11_0231642C ov11_0231642C: ; 0x0231642C @@ -64111,21 +68962,71 @@ ov11_02316440: ; 0x02316440 _0231644C: .word ov11_0230D17C _02316450: .word 0x02324BF8 arm_func_end ov11_02316440 -_02316454: - .byte 0x08, 0x40, 0x2D, 0xE9, 0x0C, 0x00, 0xA0, 0xE3, 0x0F, 0x10, 0xA0, 0xE3 - .byte 0x42, 0xAB, 0xF3, 0xEB, 0x3C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x81, 0xE5, 0x2D, 0x00, 0x00, 0xEB - .byte 0x10, 0x00, 0xA0, 0xE3, 0x25, 0x4E, 0xFF, 0xEB, 0x28, 0x10, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3 - .byte 0x00, 0x20, 0x91, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x30, 0x82, 0xE5, 0x00, 0x20, 0x91, 0xE5 - .byte 0x06, 0x00, 0xC2, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x07, 0x30, 0xC2, 0xE5, 0x00, 0x10, 0x91, 0xE5 - .byte 0x00, 0x30, 0x81, 0xE5, 0x08, 0x80, 0xBD, 0xE8, 0x78, 0x4E, 0x32, 0x02, 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x64, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x00, 0x00, 0x91, 0xE5, 0x08, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x07, 0x00, 0xC1, 0x15 - .byte 0x00, 0x00, 0xA0, 0x13, 0x08, 0x80, 0xBD, 0x18, 0x12, 0x00, 0x00, 0xEB, 0x40, 0x00, 0x9F, 0xE5 - .byte 0x08, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x00, 0x10, 0x90, 0xE5 - .byte 0x08, 0x00, 0x91, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x81, 0xE2 - .byte 0x12, 0xC3, 0xF4, 0xEB, 0x18, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x1D, 0xAB, 0xF3, 0xEB - .byte 0x0C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3 - .byte 0x08, 0x80, 0xBD, 0xE8, 0x78, 0x4E, 0x32, 0x02 + + arm_func_start ov11_02316454 +ov11_02316454: ; 0x02316454 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #0xf + bl MemAlloc + ldr r1, _023164A8 ; =0x02324E78 + str r0, [r1] + bl ov11_02316528 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r1, _023164A8 ; =0x02324E78 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + str r3, [r2, #8] + ldr r2, [r1] + strb r0, [r2, #6] + ldr r2, [r1] + strb r3, [r2, #7] + ldr r1, [r1] + str r3, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_023164A8: .word 0x02324E78 + arm_func_end ov11_02316454 + + arm_func_start ov11_023164AC +ov11_023164AC: ; 0x023164AC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _023164D8 + ldr r0, _02316524 ; =0x02324E78 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #7] + movne r0, #0 + ldmneia sp!, {r3, pc} +_023164D8: + bl ov11_02316528 + ldr r0, _02316524 ; =0x02324E78 + mov r2, #8 + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #0 + beq _02316504 + add r0, r1, #8 + bl sub_02047150 +_02316504: + ldr r0, _02316524 ; =0x02324E78 + ldr r0, [r0] + bl MemFree + ldr r0, _02316524 ; =0x02324E78 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02316524: .word 0x02324E78 + arm_func_end ov11_023164AC arm_func_start ov11_02316528 ov11_02316528: ; 0x02316528 @@ -64163,10 +69064,24 @@ _0231658C: .align 2, 0 _023165A0: .word 0x02324E78 arm_func_end ov11_02316528 -_023165A4: - .byte 0x14, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x04, 0x00, 0xD1, 0xE5 - .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x05, 0x00, 0xD1, 0x05, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x78, 0x4E, 0x32, 0x02, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start ov11_023165A4 +ov11_023165A4: ; 0x023165A4 + ldr r0, _023165C0 ; =0x02324E78 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #5] + bx lr + .align 2, 0 +_023165C0: .word 0x02324E78 + arm_func_end ov11_023165A4 + + arm_func_start ov11_023165C4 +ov11_023165C4: ; 0x023165C4 + bx lr + arm_func_end ov11_023165C4 arm_func_start ov11_023165C8 ov11_023165C8: ; 0x023165C8