mirror of
https://github.com/pret/pokediamond.git
synced 2026-10-03 16:15:57 -04:00
6069 lines
107 KiB
ArmAsm
6069 lines
107 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
arm_func_start MOD13_02211EA4
|
|
MOD13_02211EA4: ; 0x02211EA4
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
strh r1, [sp]
|
|
add r2, sp, #0
|
|
mov r1, #0xd
|
|
bl MOD13_022130E8
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02211EC8
|
|
MOD13_02211EC8: ; 0x02211EC8
|
|
cmp r0, #1
|
|
blo _02211EDC
|
|
cmp r0, #0xf
|
|
movls r0, #1
|
|
bxls lr
|
|
_02211EDC:
|
|
mov r0, #0
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02211EE4
|
|
MOD13_02211EE4: ; 0x02211EE4
|
|
cmp r1, r0
|
|
movls r1, r0
|
|
mov r0, r1
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02211EF4
|
|
MOD13_02211EF4: ; 0x02211EF4
|
|
ldr r1, _02211F6C ; =0x02240A40
|
|
mov r2, #1
|
|
mov r2, r2, lsl r0
|
|
ldr r1, [r1]
|
|
ands r1, r1, r2
|
|
bxeq lr
|
|
ldr r2, _02211F70 ; =0x02240AFC
|
|
ldr r1, _02211F74 ; =0x000005D4
|
|
ldr r2, [r2]
|
|
mla r3, r0, r1, r2
|
|
add r0, r3, #0x1000
|
|
ldrb r0, [r0, #0xd52]
|
|
cmp r0, #0
|
|
bxeq lr
|
|
add r0, r3, #0x1d00
|
|
ldrh r1, [r0, #0x4c]
|
|
cmp r1, #0
|
|
bxeq lr
|
|
ldrh r2, [r0, #0x48]
|
|
ldrh ip, [r0, #0x4a]
|
|
cmp ip, r2
|
|
bhi _02211F60
|
|
add r1, ip, #2
|
|
cmp r2, r1
|
|
addle r1, r2, #1
|
|
strleh r1, [r0, #0x48]
|
|
bxle lr
|
|
_02211F60:
|
|
add r0, r3, #0x1d00
|
|
strh ip, [r0, #0x48]
|
|
bx lr
|
|
.align 2, 0
|
|
_02211F6C: .word 0x02240A40
|
|
_02211F70: .word 0x02240AFC
|
|
_02211F74: .word 0x000005D4
|
|
|
|
arm_func_start MOD13_02211F78
|
|
MOD13_02211F78: ; 0x02211F78
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0xc
|
|
add r1, sp, #0
|
|
mov r0, #0
|
|
mov r2, #0xa
|
|
bl MIi_CpuClear16
|
|
mov ip, #1
|
|
ldr r0, _022120FC ; =0x02240AFC
|
|
mov r4, ip
|
|
ldr r3, [r0]
|
|
mov r5, ip
|
|
mov r0, ip
|
|
mov r1, ip
|
|
mov r2, ip
|
|
_02211FB0:
|
|
sub lr, ip, #1
|
|
add lr, r3, lr, lsl #2
|
|
add lr, lr, #0x1000
|
|
ldr lr, [lr, #0x4e8]
|
|
cmp lr, #0xb
|
|
addls pc, pc, lr, lsl #2
|
|
b _02212048
|
|
_02211FCC: ; jump table
|
|
b _02212048 ; case 0
|
|
b _02212048 ; case 1
|
|
b _02211FFC ; case 2
|
|
b _02212048 ; case 3
|
|
b _0221201C ; case 4
|
|
b _0221200C ; case 5
|
|
b _02212048 ; case 6
|
|
b _02212048 ; case 7
|
|
b _0221202C ; case 8
|
|
b _02212048 ; case 9
|
|
b _02212048 ; case 10
|
|
b _0221203C ; case 11
|
|
_02211FFC:
|
|
ldrh lr, [sp]
|
|
orr lr, lr, r2, lsl ip
|
|
strh lr, [sp]
|
|
b _02212048
|
|
_0221200C:
|
|
ldrh lr, [sp, #2]
|
|
orr lr, lr, r1, lsl ip
|
|
strh lr, [sp, #2]
|
|
b _02212048
|
|
_0221201C:
|
|
ldrh lr, [sp, #4]
|
|
orr lr, lr, r0, lsl ip
|
|
strh lr, [sp, #4]
|
|
b _02212048
|
|
_0221202C:
|
|
ldrh lr, [sp, #6]
|
|
orr lr, lr, r5, lsl ip
|
|
strh lr, [sp, #6]
|
|
b _02212048
|
|
_0221203C:
|
|
ldrh lr, [sp, #8]
|
|
orr lr, lr, r4, lsl ip
|
|
strh lr, [sp, #8]
|
|
_02212048:
|
|
add ip, ip, #1
|
|
mov ip, ip, lsl #0x10
|
|
mov ip, ip, lsr #0x10
|
|
cmp ip, #0xf
|
|
bls _02211FB0
|
|
ldrh r1, [sp, #6]
|
|
cmp r1, #0
|
|
beq _02212074
|
|
mov r0, #5
|
|
bl MOD13_02212614
|
|
b _022120D4
|
|
_02212074:
|
|
ldrh r1, [sp]
|
|
cmp r1, #0
|
|
beq _0221208C
|
|
mov r0, #1
|
|
bl MOD13_02212614
|
|
b _022120D4
|
|
_0221208C:
|
|
ldrh r1, [sp, #8]
|
|
cmp r1, #0
|
|
beq _022120A4
|
|
mov r0, #6
|
|
bl MOD13_02212614
|
|
b _022120D4
|
|
_022120A4:
|
|
ldrh r1, [sp, #4]
|
|
cmp r1, #0
|
|
beq _022120BC
|
|
mov r0, #2
|
|
bl MOD13_02212614
|
|
b _022120D4
|
|
_022120BC:
|
|
ldrh r0, [sp, #2]
|
|
cmp r0, #0
|
|
beq _022120D0
|
|
bl MOD13_02212464
|
|
b _022120D4
|
|
_022120D0:
|
|
bl MOD13_02212104
|
|
_022120D4:
|
|
cmp r0, #0x15
|
|
addne sp, sp, #0xc
|
|
ldmneia sp!, {r4, r5, lr}
|
|
bxne lr
|
|
ldr r1, _02212100 ; =0x0000FFFF
|
|
mov r0, #0
|
|
bl MOD13_02212614
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022120FC: .word 0x02240AFC
|
|
_02212100: .word 0x0000FFFF
|
|
|
|
arm_func_start MOD13_02212104
|
|
MOD13_02212104: ; 0x02212104
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x1c
|
|
ldr r5, _022123B0 ; =0x02240AFC
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x1000
|
|
ldrb r0, [r0, #0x524]
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x1c
|
|
moveq r0, #0x15
|
|
ldmeqia sp!, {r4, r5, r6, r7, lr}
|
|
bxeq lr
|
|
ldr r4, _022123B4 ; =0x000005D4
|
|
mov r1, #0
|
|
_02212138:
|
|
ldr r0, [r5]
|
|
add r3, r0, #0x1000
|
|
ldrb r0, [r3, #0x525]
|
|
add r0, r0, #1
|
|
mov r2, r0, lsr #0x1f
|
|
rsb r0, r2, r0, lsl #28
|
|
add r0, r2, r0, ror #28
|
|
strb r0, [r3, #0x525]
|
|
ldr r2, [r5]
|
|
add r0, r2, #0x1000
|
|
ldrb r0, [r0, #0x525]
|
|
mla r3, r0, r4, r2
|
|
add r2, r3, #0x1000
|
|
ldrb r2, [r2, #0xd52]
|
|
cmp r2, #0
|
|
beq _02212188
|
|
add r2, r3, #0x1d00
|
|
ldrh r2, [r2, #0x4c]
|
|
cmp r2, #0
|
|
bne _02212198
|
|
_02212188:
|
|
add r1, r1, #1
|
|
and r1, r1, #0xff
|
|
cmp r1, #0x10
|
|
blo _02212138
|
|
_02212198:
|
|
cmp r1, #0x10
|
|
addeq sp, sp, #0x1c
|
|
moveq r0, #0x15
|
|
ldmeqia sp!, {r4, r5, r6, r7, lr}
|
|
bxeq lr
|
|
bl MOD13_02211EF4
|
|
ldr r0, _022123B0 ; =0x02240AFC
|
|
ldr r1, _022123B4 ; =0x000005D4
|
|
ldr r6, [r0]
|
|
ldr r2, _022123B8 ; =0x00001D2C
|
|
add r0, r6, #0x1000
|
|
ldrb r0, [r0, #0x525]
|
|
ldr r3, _022123BC ; =0x00001788
|
|
add r4, r6, r2
|
|
mul r5, r0, r1
|
|
add r0, r6, r5
|
|
add r0, r0, #0x1d00
|
|
ldrh r2, [r0, #0x48]
|
|
add r3, r6, r3
|
|
add r0, sp, #8
|
|
add r1, r4, r5
|
|
add r3, r3, r5
|
|
bl MOD13_02213558
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x1c
|
|
moveq r0, #0x15
|
|
ldmeqia sp!, {r4, r5, r6, r7, lr}
|
|
bxeq lr
|
|
ldr r0, _022123B0 ; =0x02240AFC
|
|
mov r2, #4
|
|
ldr r1, [r0]
|
|
strb r2, [sp]
|
|
add r2, r1, #0x1000
|
|
ldrb r4, [r2, #0x525]
|
|
ldr r3, _022123B4 ; =0x000005D4
|
|
add r0, sp, #0
|
|
strh r4, [sp, #2]
|
|
ldrb r4, [r2, #0x525]
|
|
mla r2, r4, r3, r1
|
|
add r2, r2, #0x1d00
|
|
ldrh r2, [r2, #0x48]
|
|
strh r2, [sp, #4]
|
|
bl MOD13_022171AC
|
|
ldr r1, _022123B0 ; =0x02240AFC
|
|
ldr r4, _022123B4 ; =0x000005D4
|
|
ldr r5, [r1]
|
|
ldrb r1, [sp, #0x14]
|
|
add r2, r5, #0x1000
|
|
ldrb r2, [r2, #0x525]
|
|
ldr r6, [sp, #0x10]
|
|
ldr r3, [sp, #0xc]
|
|
mla r5, r2, r4, r5
|
|
add r2, r5, r1, lsl #2
|
|
add r4, r5, #0x1000
|
|
add r2, r2, #0x1000
|
|
ldr r5, [r4, #0xd58]
|
|
ldr r2, [r2, #0xd2c]
|
|
ldr r1, [r5, r1, lsl #2]
|
|
sub r2, r6, r2
|
|
add r7, r2, r1
|
|
ldr r6, [r4, #0xd54]
|
|
mov r2, r0
|
|
mov r0, r6
|
|
mov r1, r7
|
|
bl MOD13_02216A68
|
|
cmp r0, #0
|
|
bne _02212378
|
|
ldr r1, _022123B0 ; =0x02240AFC
|
|
ldr r0, _022123C0 ; =0x00007CE0
|
|
ldr r1, [r1]
|
|
add r5, r1, r0
|
|
mov r0, r5
|
|
bl MOD13_02216D78
|
|
cmp r0, #0
|
|
bne _02212368
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
subne r0, r0, #1
|
|
strne r0, [r6]
|
|
bne _02212368
|
|
add lr, r6, #0x30
|
|
mov r4, #0
|
|
mov ip, r4
|
|
mov r3, lr
|
|
_022122E8:
|
|
add r0, lr, ip, lsl #4
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, ip, lsl #4
|
|
cmp r0, #2
|
|
bne _02212318
|
|
cmp r4, #0
|
|
beq _02212314
|
|
ldr r1, [r4]
|
|
ldr r0, [lr, r2]
|
|
cmp r1, r0
|
|
bls _02212318
|
|
_02212314:
|
|
mov r4, r3
|
|
_02212318:
|
|
add ip, ip, #1
|
|
cmp ip, #4
|
|
add r3, r3, #0x10
|
|
blt _022122E8
|
|
cmp r4, #0
|
|
bne _02212334
|
|
bl OS_Terminate
|
|
_02212334:
|
|
mov r0, #2
|
|
str r0, [r6]
|
|
mov r0, #1
|
|
str r0, [r4, #0xc]
|
|
bic r0, r7, #0x1f
|
|
str r0, [r4]
|
|
str r4, [r5, #0x10]
|
|
ldr r1, _022123C4 ; =MOD13_022123C8
|
|
mov r0, r5
|
|
mov r2, #0
|
|
mov r3, #4
|
|
str r6, [r5, #0x14]
|
|
bl MOD13_02216BE8
|
|
_02212368:
|
|
add sp, sp, #0x1c
|
|
mov r0, #0x15
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_02212378:
|
|
ldr r0, _022123B0 ; =0x02240AFC
|
|
ldr r4, [sp, #0xc]
|
|
ldr r2, [r0]
|
|
ldr r1, _022123B4 ; =0x000005D4
|
|
add r0, r2, #0x1000
|
|
ldrb r3, [r0, #0x525]
|
|
add r0, r4, #6
|
|
mla r1, r3, r1, r2
|
|
add r1, r1, #0x1d00
|
|
ldrh r1, [r1, #0x4c]
|
|
bl MOD13_022141E8
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022123B0: .word 0x02240AFC
|
|
_022123B4: .word 0x000005D4
|
|
_022123B8: .word 0x00001D2C
|
|
_022123BC: .word 0x00001788
|
|
_022123C0: .word 0x00007CE0
|
|
_022123C4: .word MOD13_022123C8
|
|
|
|
arm_func_start MOD13_022123C8
|
|
MOD13_022123C8: ; 0x022123C8
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x4c
|
|
ldr r5, [r0, #0x14]
|
|
ldr r4, [r0, #0x10]
|
|
add r0, sp, #4
|
|
bl FS_InitFile
|
|
ldr r1, [r5, #0x14]
|
|
add r0, r5, #0x10
|
|
ldr r5, [r4]
|
|
bl FS_FindArchive
|
|
mvn r1, #0
|
|
str r1, [sp]
|
|
ldr r2, [r4, #4]
|
|
mov r1, r0
|
|
add r3, r5, r2
|
|
add r0, sp, #4
|
|
mov r2, r5
|
|
bl FS_OpenFileDirect
|
|
cmp r0, #0
|
|
beq _02212440
|
|
ldr r1, [r4, #8]
|
|
ldr r2, [r4, #4]
|
|
add r0, sp, #4
|
|
bl FS_ReadFile
|
|
ldr r1, [r4, #4]
|
|
cmp r1, r0
|
|
moveq r0, #2
|
|
streq r0, [r4, #0xc]
|
|
add r0, sp, #4
|
|
bl FS_CloseFile
|
|
_02212440:
|
|
ldr r0, [r4, #0xc]
|
|
cmp r0, #2
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
movne r0, #2
|
|
strne r0, [r4, #0xc]
|
|
add sp, sp, #0x4c
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02212464
|
|
MOD13_02212464: ; 0x02212464
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x1c
|
|
mov r4, #0
|
|
add r0, sp, #6
|
|
mov r1, r4
|
|
mov r2, #0x10
|
|
mvn r5, #0
|
|
bl MI_CpuFill8
|
|
ldr r1, _02212604 ; =0x02240AFC
|
|
mov r0, #1
|
|
ldr r1, [r1]
|
|
add ip, sp, #6
|
|
_02212494:
|
|
sub r3, r0, #1
|
|
add r2, r1, r3, lsl #2
|
|
add r2, r2, #0x1000
|
|
ldr r2, [r2, #0x4e8]
|
|
cmp r2, #5
|
|
bne _022124C4
|
|
add r2, r1, r3
|
|
add r2, r2, #0x1500
|
|
ldrsb r3, [r2, #0x26]
|
|
ldrb r2, [ip, r3]
|
|
add r2, r2, #1
|
|
strb r2, [ip, r3]
|
|
_022124C4:
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #0xf
|
|
bls _02212494
|
|
ldr r2, _02212608 ; =0x0223F780
|
|
mov r0, #0
|
|
ldrb r3, [r2]
|
|
add lr, sp, #6
|
|
ldr ip, _0221260C ; =0x000005D4
|
|
_022124EC:
|
|
add r2, r3, #1
|
|
mov r3, r2, lsr #0x1f
|
|
rsb r2, r3, r2, lsl #28
|
|
add r2, r3, r2, ror #28
|
|
and r3, r2, #0xff
|
|
mla r2, r3, ip, r1
|
|
add r2, r2, #0x1000
|
|
ldrb r2, [r2, #0xd52]
|
|
cmp r2, #0
|
|
beq _02212528
|
|
ldrb r2, [lr, r3]
|
|
cmp r2, #0
|
|
movne r0, r3, lsl #0x18
|
|
movne r5, r0, asr #0x18
|
|
bne _02212538
|
|
_02212528:
|
|
add r0, r0, #1
|
|
and r0, r0, #0xff
|
|
cmp r0, #0x10
|
|
blo _022124EC
|
|
_02212538:
|
|
mvn r0, #0
|
|
cmp r5, r0
|
|
addeq sp, sp, #0x1c
|
|
moveq r0, #0x15
|
|
ldmeqia sp!, {r4, r5, lr}
|
|
bxeq lr
|
|
ldr r2, _02212608 ; =0x0223F780
|
|
mov r0, #1
|
|
strb r5, [r2]
|
|
mov r3, r0
|
|
_02212560:
|
|
sub ip, r0, #1
|
|
add r2, r1, ip, lsl #2
|
|
add r2, r2, #0x1000
|
|
ldr r2, [r2, #0x4e8]
|
|
cmp r2, #5
|
|
bne _02212594
|
|
add r2, r1, ip
|
|
add r2, r2, #0x1500
|
|
ldrsb r2, [r2, #0x26]
|
|
cmp r5, r2
|
|
orreq r2, r4, r3, lsl r0
|
|
moveq r2, r2, lsl #0x10
|
|
moveq r4, r2, lsr #0x10
|
|
_02212594:
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #0xf
|
|
bls _02212560
|
|
mov r2, #3
|
|
add r0, sp, #0
|
|
strb r2, [sp]
|
|
strh r5, [sp, #2]
|
|
bl MOD13_022171AC
|
|
movs r1, r0
|
|
beq _022125E4
|
|
ldr r2, _02212604 ; =0x02240AFC
|
|
ldr r0, _02212610 ; =0x00001788
|
|
ldr r3, [r2]
|
|
ldr r2, _0221260C ; =0x000005D4
|
|
add r0, r3, r0
|
|
mla r0, r5, r2, r0
|
|
mov r2, #0xe4
|
|
bl MI_CpuCopy8
|
|
_022125E4:
|
|
ldr r0, _02212604 ; =0x02240AFC
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0xea
|
|
bl MOD13_022141E8
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02212604: .word 0x02240AFC
|
|
_02212608: .word 0x0223F780
|
|
_0221260C: .word 0x000005D4
|
|
_02212610: .word 0x00001788
|
|
|
|
arm_func_start MOD13_02212614
|
|
MOD13_02212614: ; 0x02212614
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
ldr r2, _02212654 ; =0x02240AFC
|
|
mov r4, r1
|
|
ldr r1, [r2]
|
|
strb r0, [sp]
|
|
add r0, sp, #0
|
|
bl MOD13_022171AC
|
|
ldr r0, _02212654 ; =0x02240AFC
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #6
|
|
bl MOD13_022141E8
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02212654: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02212658
|
|
MOD13_02212658: ; 0x02212658
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r6, #0
|
|
ldr r2, _02212700 ; =0x02240AFC
|
|
mov r3, r6
|
|
ldr r1, _02212704 ; =0x000005D4
|
|
_02212670:
|
|
ldr r0, [r2]
|
|
mla r5, r6, r1, r0
|
|
add r0, r5, #0x1000
|
|
ldrb r0, [r0, #0xd52]
|
|
cmp r0, #0
|
|
addne r0, r5, #0x1d00
|
|
strneh r3, [r0, #0x4a]
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, lsr #0x10
|
|
cmp r6, #0x10
|
|
blo _02212670
|
|
ldr r0, _02212708 ; =0x02240A40
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
mov r6, #1
|
|
ldr r5, _0221270C ; =0x0000FFFF
|
|
_022126B4:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
bl WM_ReadMPData
|
|
cmp r0, #0
|
|
beq _022126E4
|
|
ldrh r1, [r0]
|
|
cmp r1, r5
|
|
beq _022126E4
|
|
cmp r1, #0
|
|
beq _022126E4
|
|
mov r1, r6
|
|
bl MOD13_02212710
|
|
_022126E4:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, lsr #0x10
|
|
cmp r6, #0xf
|
|
bls _022126B4
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02212700: .word 0x02240AFC
|
|
_02212704: .word 0x000005D4
|
|
_02212708: .word 0x02240A40
|
|
_0221270C: .word 0x0000FFFF
|
|
|
|
arm_func_start MOD13_02212710
|
|
MOD13_02212710: ; 0x02212710
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x38
|
|
movs r7, r1
|
|
addeq sp, sp, #0x38
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
cmp r7, #0xf
|
|
addhi sp, sp, #0x38
|
|
ldmhiia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxhi lr
|
|
add r1, sp, #0
|
|
mov r2, r7
|
|
add r0, r0, #0xa
|
|
bl MOD13_02217070
|
|
ldr r3, _02212C14 ; =0x02240AFC
|
|
ldrb r8, [sp]
|
|
ldr r2, [r3]
|
|
sub r4, r7, #1
|
|
add r1, r2, r4, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r6, [r1, #0x4e8]
|
|
mov r5, r0
|
|
cmp r8, #0xb
|
|
addls pc, pc, r8, lsl #2
|
|
b _02212C08
|
|
_02212774: ; jump table
|
|
b _02212C08 ; case 0
|
|
b _02212C08 ; case 1
|
|
b _02212C08 ; case 2
|
|
b _02212C08 ; case 3
|
|
b _02212C08 ; case 4
|
|
b _02212C08 ; case 5
|
|
b _02212C08 ; case 6
|
|
b _022127A4 ; case 7
|
|
b _02212A30 ; case 8
|
|
b _02212AEC ; case 9
|
|
b _02212B68 ; case 10
|
|
b _02212C08 ; case 11
|
|
_022127A4:
|
|
cmp r6, #2
|
|
bne _02212848
|
|
cmp r5, #0
|
|
addeq sp, sp, #0x38
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
add r1, sp, #0x14
|
|
mov r2, #0x1d
|
|
bl MI_CpuCopy8
|
|
ldr r3, _02212C14 ; =0x02240AFC
|
|
mov r0, r4
|
|
ldr r1, [r3]
|
|
ldr r2, [sp, #0x14]
|
|
add r1, r1, r0, lsl #2
|
|
add r1, r1, #0x1000
|
|
str r2, [r1, #0x4a8]
|
|
ldr r1, [r3]
|
|
mov r2, #0x16
|
|
add r1, r1, r0, lsl #1
|
|
mul r8, r0, r2
|
|
ldrh ip, [sp, #0x2e]
|
|
add r1, r1, #0x1400
|
|
add r0, sp, #0x18
|
|
strh ip, [r1, #0x8a]
|
|
ldr r1, [r3]
|
|
add r1, r1, #0x1340
|
|
add r1, r1, r8
|
|
bl MI_CpuCopy8
|
|
ldr r0, _02212C14 ; =0x02240AFC
|
|
and r1, r7, #0xff
|
|
ldr r0, [r0]
|
|
and r2, r1, #0xf
|
|
add ip, r0, #0x1340
|
|
ldrb r3, [ip, r8]
|
|
mov r0, r7
|
|
mov r1, #0xa
|
|
bic r3, r3, #0xf0
|
|
orr r2, r3, r2, lsl #4
|
|
strb r2, [ip, r8]
|
|
add r2, sp, #0x18
|
|
bl MOD13_02213124
|
|
_02212848:
|
|
cmp r6, #0xa
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
ldrb r8, [r5, #0x1c]
|
|
mov r2, #0
|
|
cmp r8, #0x10
|
|
bhs _022128A4
|
|
ldr r0, _02212C14 ; =0x02240AFC
|
|
ldr r1, _02212C18 ; =0x000005D4
|
|
ldr r0, [r0]
|
|
mla r6, r8, r1, r0
|
|
add r1, r6, #0x1000
|
|
ldrb r3, [r1, #0xd52]
|
|
cmp r3, #0
|
|
beq _022128A4
|
|
add r3, r0, r4, lsl #2
|
|
ldr r1, [r1, #0xd40]
|
|
add r3, r3, #0x1000
|
|
ldr r5, [r3, #0x4a8]
|
|
ldr r3, [r1, #0x14]
|
|
cmp r5, r3
|
|
beq _022128C0
|
|
_022128A4:
|
|
ldr r0, _02212C14 ; =0x02240AFC
|
|
mov r1, #4
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #1
|
|
add r0, r0, #0x1700
|
|
strh r1, [r0, #0x54]
|
|
b _02212924
|
|
_022128C0:
|
|
add r3, r6, #0x1d00
|
|
ldrh r6, [r3, #0x4e]
|
|
mov ip, r2
|
|
mov r5, #1
|
|
_022128D0:
|
|
mov r3, r5, lsl ip
|
|
ands r3, r3, r6
|
|
add r3, ip, #1
|
|
addne r2, r2, #1
|
|
and ip, r3, #0xff
|
|
andne r2, r2, #0xff
|
|
cmp ip, #0x10
|
|
blo _022128D0
|
|
ldrb r1, [r1, #0x18]
|
|
cmp r2, r1
|
|
blo _02212924
|
|
add r1, r0, r4, lsl #1
|
|
add r3, r1, #0x1700
|
|
mov r2, #0
|
|
mov r0, r7
|
|
mov r1, #0xb
|
|
strh r2, [r3, #0x54]
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212924:
|
|
ldr r3, _02212C14 ; =0x02240AFC
|
|
ldr r2, [r3]
|
|
add r0, r2, r4, lsl #1
|
|
add r4, r0, #0x1700
|
|
ldrh r0, [r4, #0x54]
|
|
cmp r0, #3
|
|
beq _02212954
|
|
cmp r0, #4
|
|
beq _02212A10
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212954:
|
|
add r0, r2, #0x1500
|
|
mov r1, #1
|
|
ldrh r0, [r0, #0x36]
|
|
mov r6, r1, lsl r7
|
|
ands r0, r0, r6
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r2, #0x1000
|
|
ldrb r2, [r0, #0x535]
|
|
ldr r1, _02212C18 ; =0x000005D4
|
|
sub r5, r7, #1
|
|
add r2, r2, #1
|
|
strb r2, [r0, #0x535]
|
|
ldr r0, [r3]
|
|
mul r4, r8, r1
|
|
add r1, r0, #0x1500
|
|
ldrh ip, [r1, #0x36]
|
|
mov r0, r7
|
|
mov r2, #0
|
|
orr r7, ip, r6
|
|
strh r7, [r1, #0x36]
|
|
ldr r7, [r3]
|
|
mov r1, #5
|
|
add r7, r7, r5
|
|
add r7, r7, #0x1000
|
|
strb r8, [r7, #0x526]
|
|
ldr r7, [r3]
|
|
add r7, r7, r4
|
|
add r7, r7, #0x1d00
|
|
ldrh r8, [r7, #0x4e]
|
|
orr r8, r8, r6
|
|
strh r8, [r7, #0x4e]
|
|
ldr r7, [r3]
|
|
add r4, r7, r4
|
|
add r4, r4, #0x1d00
|
|
ldrh r7, [r4, #0x50]
|
|
orr r6, r7, r6
|
|
strh r6, [r4, #0x50]
|
|
ldr r3, [r3]
|
|
add r3, r3, r5, lsl #1
|
|
add r3, r3, #0x1700
|
|
strh r2, [r3, #0x54]
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212A10:
|
|
mov r2, #0
|
|
mov r0, r7
|
|
mov r1, #4
|
|
strh r2, [r4, #0x54]
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212A30:
|
|
cmp r6, #5
|
|
bne _02212A54
|
|
mov r0, r7
|
|
mov r1, #0xe
|
|
mov r2, #0
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212A54:
|
|
cmp r6, #0xe
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r2, r4, lsl #1
|
|
add r0, r0, #0x1700
|
|
ldrh r0, [r0, #0x54]
|
|
mov r5, r4, lsl #1
|
|
cmp r0, #2
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r2, r4
|
|
add r0, r0, #0x1000
|
|
ldrb r1, [r0, #0x526]
|
|
ldr r0, _02212C18 ; =0x000005D4
|
|
mov r6, #1
|
|
mul r4, r1, r0
|
|
add r0, r2, r4
|
|
add r1, r0, #0x1d00
|
|
ldrh r8, [r1, #0x4c]
|
|
mov r2, #0
|
|
mov r0, r7
|
|
orr r6, r8, r6, lsl r7
|
|
strh r6, [r1, #0x4c]
|
|
ldr r6, [r3]
|
|
mov r1, #6
|
|
add r4, r6, r4
|
|
add r4, r4, #0x1d00
|
|
strh r2, [r4, #0x48]
|
|
ldr r3, [r3]
|
|
add r3, r3, r5
|
|
add r3, r3, #0x1700
|
|
strh r2, [r3, #0x54]
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212AEC:
|
|
cmp r6, #6
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r2, r4
|
|
add r0, r0, #0x1000
|
|
ldrb r5, [r0, #0x526]
|
|
cmp r5, #0xff
|
|
addeq sp, sp, #0x38
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r0, _02212C18 ; =0x000005D4
|
|
ldrh r1, [sp, #2]
|
|
mul r4, r5, r0
|
|
add r0, r2, r4
|
|
add r0, r0, #0x1d00
|
|
ldrh r0, [r0, #0x4a]
|
|
bl MOD13_02211EE4
|
|
ldr r1, _02212C14 ; =0x02240AFC
|
|
ldr r2, _02212C1C ; =0x02240A40
|
|
ldr r1, [r1]
|
|
mov r3, #1
|
|
add r1, r1, r4
|
|
add r1, r1, #0x1d00
|
|
strh r0, [r1, #0x4a]
|
|
ldr r0, [r2]
|
|
add sp, sp, #0x38
|
|
orr r0, r0, r3, lsl r5
|
|
str r0, [r2]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212B68:
|
|
cmp r6, #6
|
|
bne _02212BC8
|
|
add r0, r2, r4
|
|
add r0, r0, #0x1000
|
|
ldrb r3, [r0, #0x526]
|
|
cmp r3, #0xff
|
|
addeq sp, sp, #0x38
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r0, _02212C18 ; =0x000005D4
|
|
mov r1, #1
|
|
mla r0, r3, r0, r2
|
|
add r3, r0, #0x1d00
|
|
ldrh r2, [r3, #0x4c]
|
|
mvn r0, r1, lsl r7
|
|
and r4, r2, r0
|
|
mov r0, r7
|
|
mov r1, #7
|
|
mov r2, #0
|
|
strh r4, [r3, #0x4c]
|
|
bl MOD13_02213124
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02212BC8:
|
|
cmp r6, #7
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r2, r4, lsl #1
|
|
add r3, r0, #0x1700
|
|
ldrh r0, [r3, #0x54]
|
|
cmp r0, #5
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
mov r2, #0
|
|
mov r0, r7
|
|
mov r1, #8
|
|
strh r2, [r3, #0x54]
|
|
bl MOD13_02213124
|
|
_02212C08:
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02212C14: .word 0x02240AFC
|
|
_02212C18: .word 0x000005D4
|
|
_02212C1C: .word 0x02240A40
|
|
|
|
arm_func_start MOD13_02212C20
|
|
MOD13_02212C20: ; 0x02212C20
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r6, r0
|
|
mov r4, r1
|
|
cmp r6, #0x19
|
|
bgt _02212C84
|
|
cmp r6, #0x19
|
|
bge _02212ECC
|
|
cmp r6, #0x11
|
|
bgt _02212C78
|
|
cmp r6, #0x11
|
|
bge _02213084
|
|
cmp r6, #3
|
|
bgt _02213084
|
|
cmp r6, #0
|
|
blt _02213084
|
|
cmp r6, #0
|
|
beq _02212CC0
|
|
cmp r6, #1
|
|
beq _02212CE4
|
|
cmp r6, #3
|
|
beq _02212EC0
|
|
b _02213084
|
|
_02212C78:
|
|
cmp r6, #0x15
|
|
beq _02212CAC
|
|
b _02213084
|
|
_02212C84:
|
|
cmp r6, #0xff
|
|
bgt _02212CA0
|
|
cmp r6, #0xff
|
|
bge _02212F70
|
|
cmp r6, #0x1c
|
|
beq _02212ED4
|
|
b _02213084
|
|
_02212CA0:
|
|
cmp r6, #0x100
|
|
beq _02212FE0
|
|
b _02213084
|
|
_02212CAC:
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #1
|
|
bl MOD13_02213124
|
|
b _02213084
|
|
_02212CC0:
|
|
ldrh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
beq _02213084
|
|
cmp r0, #0x10
|
|
bhs _02213084
|
|
mov r2, r4
|
|
mov r1, #2
|
|
bl MOD13_02213124
|
|
b _02213084
|
|
_02212CE4:
|
|
ldrh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
beq _02213084
|
|
cmp r0, #0x10
|
|
bhs _02213084
|
|
ldr r2, _022130D8 ; =0x02240AFC
|
|
sub r0, r0, #1
|
|
ldr r3, [r2]
|
|
mov r1, #0
|
|
add r0, r3, r0, lsl #1
|
|
add r0, r0, #0x1400
|
|
strh r1, [r0, #0x8a]
|
|
ldrh r3, [r4, #0x10]
|
|
ldr r5, [r2]
|
|
ldr r0, _022130DC ; =0x000014A8
|
|
sub r2, r3, #1
|
|
add r0, r5, r0
|
|
add r0, r0, r2, lsl #2
|
|
mov r2, #4
|
|
bl MI_CpuFill8
|
|
ldr r0, _022130D8 ; =0x02240AFC
|
|
ldrh r1, [r4, #0x10]
|
|
ldr r0, [r0]
|
|
mov r2, #0x16
|
|
add r0, r0, #0x1340
|
|
sub r1, r1, #1
|
|
mla r0, r1, r2, r0
|
|
mov r1, #0
|
|
bl MI_CpuFill8
|
|
ldrh r0, [r4, #0x10]
|
|
bl MOD13_02217234
|
|
ldrh r1, [r4, #0x10]
|
|
ldr r0, _022130D8 ; =0x02240AFC
|
|
mov r3, #0
|
|
ldr r2, [r0]
|
|
sub r1, r1, #1
|
|
add r1, r2, r1, lsl #1
|
|
add r1, r1, #0x1700
|
|
strh r3, [r1, #0x54]
|
|
ldrh r8, [r4, #0x10]
|
|
ldr r5, [r0]
|
|
mvn r1, #0
|
|
sub r7, r8, #1
|
|
add r2, r5, r7
|
|
add r2, r2, #0x1500
|
|
ldrsb r3, [r2, #0x26]
|
|
cmp r3, r1
|
|
beq _02212E0C
|
|
ldr r2, _022130E0 ; =0x000005D4
|
|
and r3, r3, #0xff
|
|
mul r2, r3, r2
|
|
add r3, r5, r2
|
|
add sb, r3, #0x1d00
|
|
mov r5, #1
|
|
ldrh sl, [sb, #0x4e]
|
|
mvn r3, r5, lsl r8
|
|
and sl, sl, r3
|
|
strh sl, [sb, #0x4e]
|
|
ldr sb, [r0]
|
|
add sb, sb, r2
|
|
add sb, sb, #0x1d00
|
|
ldrh sl, [sb, #0x50]
|
|
orr r5, sl, r5, lsl r8
|
|
strh r5, [sb, #0x50]
|
|
ldr r5, [r0]
|
|
add r5, r5, r7
|
|
add r5, r5, #0x1000
|
|
strb r1, [r5, #0x526]
|
|
ldr r0, [r0]
|
|
add r0, r0, r2
|
|
add r0, r0, #0x1d00
|
|
ldrh r1, [r0, #0x4c]
|
|
and r1, r1, r3
|
|
strh r1, [r0, #0x4c]
|
|
_02212E0C:
|
|
ldr r1, _022130D8 ; =0x02240AFC
|
|
ldrh r2, [r4, #0x10]
|
|
ldr r7, [r1]
|
|
mov r3, #1
|
|
add r0, r7, #0x1500
|
|
ldrh r5, [r0, #0x36]
|
|
mov r0, r3, lsl r2
|
|
ands r0, r5, r0
|
|
beq _02212E5C
|
|
add r0, r7, #0x1000
|
|
ldrb r2, [r0, #0x535]
|
|
sub r2, r2, #1
|
|
strb r2, [r0, #0x535]
|
|
ldr r0, [r1]
|
|
ldrh r1, [r4, #0x10]
|
|
add r0, r0, #0x1500
|
|
ldrh r2, [r0, #0x36]
|
|
mvn r1, r3, lsl r1
|
|
and r1, r2, r1
|
|
strh r1, [r0, #0x36]
|
|
_02212E5C:
|
|
ldrh r0, [r4, #0x10]
|
|
ldr r1, _022130D8 ; =0x02240AFC
|
|
ldr r2, [r1]
|
|
sub r1, r0, #1
|
|
add r1, r2, r1, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x4e8]
|
|
cmp r1, #8
|
|
bne _02212E8C
|
|
mov r1, #9
|
|
mov r2, #0
|
|
bl MOD13_02213124
|
|
_02212E8C:
|
|
ldrh r0, [r4, #0x10]
|
|
mov r2, r4
|
|
mov r1, #3
|
|
bl MOD13_02213124
|
|
ldrh r1, [r4, #0x10]
|
|
ldr r0, _022130D8 ; =0x02240AFC
|
|
mov r3, #0
|
|
ldr r2, [r0]
|
|
sub r0, r1, #1
|
|
add r0, r2, r0, lsl #2
|
|
add r0, r0, #0x1000
|
|
str r3, [r0, #0x4e8]
|
|
b _02213084
|
|
_02212EC0:
|
|
mov r0, r4
|
|
bl MOD13_02212658
|
|
b _02213084
|
|
_02212ECC:
|
|
bl MOD13_02211F78
|
|
b _02213084
|
|
_02212ED4:
|
|
mov r5, #0
|
|
ldr sb, _022130D8 ; =0x02240AFC
|
|
ldr r7, _022130E4 ; =0x0000186C
|
|
ldr r8, _022130E0 ; =0x000005D4
|
|
mov sl, r5
|
|
_02212EE8:
|
|
mul r4, r5, r8
|
|
ldr r1, [sb]
|
|
add r2, r1, r4
|
|
add r0, r2, #0x1000
|
|
ldrb r0, [r0, #0xd52]
|
|
cmp r0, #0
|
|
beq _02212F38
|
|
add r0, r2, #0x1d00
|
|
ldrh r3, [r0, #0x50]
|
|
cmp r3, #0
|
|
beq _02212F38
|
|
ldrh r2, [r0, #0x4e]
|
|
add r0, r1, r7
|
|
add r0, r0, r4
|
|
add r1, r1, #0x1340
|
|
bl MOD13_022148D4
|
|
ldr r0, [sb]
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1d00
|
|
strh sl, [r0, #0x50]
|
|
_02212F38:
|
|
add r0, r5, #1
|
|
and r5, r0, #0xff
|
|
cmp r5, #0x10
|
|
blo _02212EE8
|
|
bl MOD13_02214BF4
|
|
mov r5, r0
|
|
bl MOD13_02214BE0
|
|
mov r4, r0
|
|
bl MOD13_02214B80
|
|
mov r2, r0
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl MOD13_02214768
|
|
b _02213084
|
|
_02212F70:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0xf
|
|
addls pc, pc, r0, lsl #2
|
|
b _02212FD0
|
|
_02212F80: ; jump table
|
|
b _02212FD0 ; case 0
|
|
b _02212FC0 ; case 1
|
|
b _02212FD0 ; case 2
|
|
b _02212FD0 ; case 3
|
|
b _02212FC0 ; case 4
|
|
b _02212FC0 ; case 5
|
|
b _02212FC0 ; case 6
|
|
b _02212FD0 ; case 7
|
|
b _02212FC0 ; case 8
|
|
b _02212FC0 ; case 9
|
|
b _02212FD0 ; case 10
|
|
b _02212FD0 ; case 11
|
|
b _02212FD0 ; case 12
|
|
b _02212FD0 ; case 13
|
|
b _02212FD0 ; case 14
|
|
b _02212FD0 ; case 15
|
|
_02212FC0:
|
|
mov r0, #0
|
|
mov r1, #9
|
|
bl MOD13_02211EA4
|
|
b _02213084
|
|
_02212FD0:
|
|
mov r0, #0
|
|
mov r1, #8
|
|
bl MOD13_02211EA4
|
|
b _02213084
|
|
_02212FE0:
|
|
ldrh r0, [r4]
|
|
cmp r0, #0x1d
|
|
addls pc, pc, r0, lsl #2
|
|
b _02213078
|
|
_02212FF0: ; jump table
|
|
b _02213068 ; case 0
|
|
b _02213078 ; case 1
|
|
b _02213078 ; case 2
|
|
b _02213078 ; case 3
|
|
b _02213078 ; case 4
|
|
b _02213078 ; case 5
|
|
b _02213078 ; case 6
|
|
b _02213068 ; case 7
|
|
b _02213068 ; case 8
|
|
b _02213078 ; case 9
|
|
b _02213078 ; case 10
|
|
b _02213078 ; case 11
|
|
b _02213078 ; case 12
|
|
b _02213068 ; case 13
|
|
b _02213068 ; case 14
|
|
b _02213068 ; case 15
|
|
b _02213078 ; case 16
|
|
b _02213068 ; case 17
|
|
b _02213068 ; case 18
|
|
b _02213078 ; case 19
|
|
b _02213078 ; case 20
|
|
b _02213068 ; case 21
|
|
b _02213078 ; case 22
|
|
b _02213078 ; case 23
|
|
b _02213078 ; case 24
|
|
b _02213068 ; case 25
|
|
b _02213078 ; case 26
|
|
b _02213078 ; case 27
|
|
b _02213078 ; case 28
|
|
b _02213068 ; case 29
|
|
_02213068:
|
|
mov r0, #0
|
|
mov r1, #9
|
|
bl MOD13_02211EA4
|
|
b _02213084
|
|
_02213078:
|
|
mov r0, #0
|
|
mov r1, #8
|
|
bl MOD13_02211EA4
|
|
_02213084:
|
|
cmp r6, #0x11
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bxne lr
|
|
ldr r1, _022130D8 ; =0x02240AFC
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
mov r2, #0x7d00
|
|
add r3, r1, #0x1000
|
|
ldr r4, [r3, #0x4e4]
|
|
bl MIi_CpuClearFast
|
|
ldr r1, _022130D8 ; =0x02240AFC
|
|
mov r0, #0
|
|
str r0, [r1]
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bxeq lr
|
|
mov r2, r0
|
|
mov r1, #0xc
|
|
blx r4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022130D8: .word 0x02240AFC
|
|
_022130DC: .word 0x000014A8
|
|
_022130E0: .word 0x000005D4
|
|
_022130E4: .word 0x0000186C
|
|
|
|
arm_func_start MOD13_022130E8
|
|
MOD13_022130E8: ; 0x022130E8
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
ldr r3, _02213120 ; =0x02240AFC
|
|
ldr r3, [r3]
|
|
add r3, r3, #0x1000
|
|
ldr r3, [r3, #0x4e4]
|
|
cmp r3, #0
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {lr}
|
|
bxeq lr
|
|
blx r3
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213120: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02213124
|
|
MOD13_02213124: ; 0x02213124
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl MOD13_02211EC8
|
|
cmp r0, #0
|
|
beq _02213158
|
|
ldr r0, _02213170 ; =0x02240AFC
|
|
sub r1, r6, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, r1, lsl #2
|
|
add r0, r0, #0x1000
|
|
str r5, [r0, #0x4e8]
|
|
_02213158:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl MOD13_022130E8
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213170: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02213174
|
|
MOD13_02213174: ; 0x02213174
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r1
|
|
mov r7, r0
|
|
bl OS_DisableInterrupts
|
|
mov r4, r0
|
|
cmp r5, #3
|
|
addls pc, pc, r5, lsl #2
|
|
b _022131D8
|
|
_02213198: ; jump table
|
|
b _022131A8 ; case 0
|
|
b _022131B4 ; case 1
|
|
b _022131C0 ; case 2
|
|
b _022131CC ; case 3
|
|
_022131A8:
|
|
mov r5, #0xa
|
|
mov r6, #4
|
|
b _022131F0
|
|
_022131B4:
|
|
mov r5, #0xa
|
|
mov r6, #3
|
|
b _022131F0
|
|
_022131C0:
|
|
mov r5, #0xe
|
|
mov r6, #2
|
|
b _022131F0
|
|
_022131CC:
|
|
mov r5, #7
|
|
mov r6, #5
|
|
b _022131F0
|
|
_022131D8:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_022131F0:
|
|
ldr r0, _0221326C ; =0x02240AFC
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _02213254
|
|
mov r0, r7
|
|
bl MOD13_02211EC8
|
|
cmp r0, #0
|
|
beq _02213254
|
|
ldr r0, _0221326C ; =0x02240AFC
|
|
sub r2, r7, #1
|
|
ldr r1, [r0]
|
|
add r0, r1, r2, lsl #2
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x4e8]
|
|
cmp r5, r0
|
|
bne _02213254
|
|
add r0, r1, r2, lsl #1
|
|
add r1, r0, #0x1700
|
|
mov r0, r4
|
|
strh r6, [r1, #0x54]
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_02213254:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0221326C: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02213270
|
|
MOD13_02213270: ; 0x02213270
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _022132C8 ; =0x02240AFC
|
|
mov r4, r0
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
beq _022132BC
|
|
bl MOD13_02211EC8
|
|
cmp r0, #0
|
|
beq _022132BC
|
|
ldr r0, _022132C8 ; =0x02240AFC
|
|
sub r1, r4, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, r1, lsl #2
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x4e8]
|
|
cmp r0, #7
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
_022132BC:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022132C8: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_022132CC
|
|
MOD13_022132CC: ; 0x022132CC
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r0
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02213360 ; =0x02240AFC
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
beq _02213348
|
|
mov r0, r5
|
|
bl MOD13_02211EC8
|
|
cmp r0, #0
|
|
beq _02213348
|
|
ldr r0, _02213360 ; =0x02240AFC
|
|
sub r3, r5, #1
|
|
ldr ip, [r0]
|
|
ldr r1, _02213364 ; =0x00001772
|
|
add r0, ip, #0x1340
|
|
mov r2, #0x16
|
|
mla r0, r3, r2, r0
|
|
add r1, ip, r1
|
|
bl MI_CpuCopy8
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
ldr r1, _02213360 ; =0x02240AFC
|
|
ldr r0, _02213364 ; =0x00001772
|
|
ldr r1, [r1]
|
|
add sp, sp, #4
|
|
add r0, r1, r0
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
_02213348:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213360: .word 0x02240AFC
|
|
_02213364: .word 0x00001772
|
|
|
|
arm_func_start MOD13_02213368
|
|
MOD13_02213368: ; 0x02213368
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02213390 ; =0x02240AFC
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
str r4, [r1, #0x4e4]
|
|
bl OS_RestoreInterrupts
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213390: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02213394
|
|
MOD13_02213394: ; 0x02213394
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
ldr r3, _02213498 ; =0x0223C420
|
|
ldr r3, [r3, r0, lsl #2]
|
|
cmp r3, #0
|
|
beq _022133BC
|
|
cmp r3, #1
|
|
beq _022133CC
|
|
cmp r3, #2
|
|
bne _02213478
|
|
_022133BC:
|
|
bl MOD13_022134A8
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_022133CC:
|
|
cmp r1, #0x2000000
|
|
blo _02213444
|
|
ldr r0, _0221349C ; =0x023FE800
|
|
cmp r1, r0
|
|
bhs _02213444
|
|
cmp r1, #0x2300000
|
|
add r1, r1, r2
|
|
bhs _02213400
|
|
cmp r1, #0x2300000
|
|
addhi sp, sp, #4
|
|
movhi r0, #0
|
|
ldmhiia sp!, {lr}
|
|
bxhi lr
|
|
_02213400:
|
|
cmp r1, #0x2300000
|
|
addls sp, sp, #4
|
|
movls r0, #1
|
|
ldmlsia sp!, {lr}
|
|
bxls lr
|
|
ldr r0, _0221349C ; =0x023FE800
|
|
cmp r1, r0
|
|
bhs _02213434
|
|
cmp r2, #0x40000
|
|
addls sp, sp, #4
|
|
movls r0, #1
|
|
ldmlsia sp!, {lr}
|
|
bxls lr
|
|
_02213434:
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02213444:
|
|
ldr r0, _022134A0 ; =0x037F8000
|
|
cmp r1, r0
|
|
blo _02213488
|
|
ldr r0, _022134A4 ; =0x0380F000
|
|
cmp r1, r0
|
|
bhs _02213488
|
|
add r1, r1, r2
|
|
cmp r1, r0
|
|
movls r0, #1
|
|
add sp, sp, #4
|
|
movhi r0, #0
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02213478:
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02213488:
|
|
mov r0, #0
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213498: .word 0x0223C420
|
|
_0221349C: .word 0x023FE800
|
|
_022134A0: .word 0x037F8000
|
|
_022134A4: .word 0x0380F000
|
|
|
|
arm_func_start MOD13_022134A8
|
|
MOD13_022134A8: ; 0x022134A8
|
|
ldr r3, _0221354C ; =0x0223C420
|
|
ldr r0, [r3, r0, lsl #2]
|
|
cmp r0, #0
|
|
beq _022134EC
|
|
cmp r0, #1
|
|
beq _02213508
|
|
cmp r0, #2
|
|
bne _0221353C
|
|
ldr r0, _02213550 ; =0x027FFE00
|
|
cmp r1, r0
|
|
blo _02213544
|
|
ldr r0, _02213554 ; =0x027FFF60
|
|
add r1, r1, r2
|
|
cmp r1, r0
|
|
bhi _02213544
|
|
mov r0, #1
|
|
bx lr
|
|
_022134EC:
|
|
cmp r1, #0x2000000
|
|
blo _02213544
|
|
add r0, r1, r2
|
|
cmp r0, #0x22c0000
|
|
bhi _02213544
|
|
mov r0, #1
|
|
bx lr
|
|
_02213508:
|
|
cmp r1, #0x22c0000
|
|
blo _02213520
|
|
add r0, r1, r2
|
|
cmp r0, #0x2300000
|
|
movls r0, #1
|
|
bxls lr
|
|
_02213520:
|
|
cmp r1, #0x2000000
|
|
blo _02213544
|
|
add r0, r1, r2
|
|
cmp r0, #0x2300000
|
|
bhi _02213544
|
|
mov r0, #1
|
|
bx lr
|
|
_0221353C:
|
|
mov r0, #0
|
|
bx lr
|
|
_02213544:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0221354C: .word 0x0223C420
|
|
_02213550: .word 0x027FFE00
|
|
_02213554: .word 0x027FFF60
|
|
|
|
arm_func_start MOD13_02213558
|
|
MOD13_02213558: ; 0x02213558
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
ldrh r4, [r1, #0x12]
|
|
cmp r2, r4
|
|
addhs sp, sp, #4
|
|
movhs r0, #0
|
|
ldmhsia sp!, {r4, r5, lr}
|
|
bxhs lr
|
|
mov ip, #2
|
|
_0221357C:
|
|
add r4, r1, ip, lsl #1
|
|
ldrh r4, [r4, #0xc]
|
|
cmp r2, r4
|
|
bhs _0221359C
|
|
sub r4, ip, #1
|
|
mov ip, r4, lsl #0x18
|
|
movs ip, ip, asr #0x18
|
|
bpl _0221357C
|
|
_0221359C:
|
|
cmp ip, #0
|
|
addlt sp, sp, #4
|
|
movlt r0, #0
|
|
ldmltia sp!, {r4, r5, lr}
|
|
bxlt lr
|
|
ldr r4, _02213628 ; =0x02240AFC
|
|
add r5, r1, ip, lsl #1
|
|
ldr lr, [r4]
|
|
ldrh r5, [r5, #0xc]
|
|
add lr, lr, #0x1000
|
|
ldr lr, [lr, #0x318]
|
|
sub r5, r2, r5
|
|
mul r2, r5, lr
|
|
add r3, r3, #0xc
|
|
add r5, r3, ip, lsl #4
|
|
ldr r3, [r5, #8]
|
|
sub r3, r3, r2
|
|
str r3, [r0, #4]
|
|
ldr r3, [r4]
|
|
ldr r4, [r0, #4]
|
|
add r3, r3, #0x1000
|
|
ldr r3, [r3, #0x318]
|
|
cmp r4, r3
|
|
strhi r3, [r0, #4]
|
|
ldr r1, [r1, ip, lsl #2]
|
|
add r1, r2, r1
|
|
str r1, [r0, #8]
|
|
ldr r1, [r5]
|
|
add r1, r2, r1
|
|
str r1, [r0]
|
|
strb ip, [r0, #0xc]
|
|
mov r0, #1
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213628: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_0221362C
|
|
MOD13_0221362C: ; 0x0221362C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r5, r0
|
|
add r4, r5, #0xc
|
|
cmp r1, #0
|
|
mov r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bxeq lr
|
|
mov r2, r0
|
|
_0221364C:
|
|
str r0, [r5, r2, lsl #2]
|
|
add r3, r1, r2, lsl #4
|
|
add r2, r2, #1
|
|
ldr r3, [r3, #0x14]
|
|
and r2, r2, #0xff
|
|
cmp r2, #3
|
|
add r0, r0, r3
|
|
blo _0221364C
|
|
mov r8, #0
|
|
strh r8, [r4]
|
|
ldr r6, _02213704 ; =0x02240AFC
|
|
add r7, r1, #0xc
|
|
_0221367C:
|
|
ldr r0, [r6]
|
|
add sl, r7, r8, lsl #4
|
|
add r0, r0, #0x1000
|
|
ldr r1, [r0, #0x318]
|
|
ldr sb, [sl, #8]
|
|
add r0, sb, r1
|
|
sub r0, r0, #1
|
|
bl _u32_div_f
|
|
mov r1, r8, lsl #1
|
|
ldrh r3, [r4, r1]
|
|
mov r2, r0, lsl #0x10
|
|
ldr r1, [sl, #4]
|
|
add r2, r3, r2, lsr #16
|
|
mov r3, r2, lsl #0x10
|
|
mov r2, sb
|
|
mov r0, r8
|
|
mov sb, r3, lsr #0x10
|
|
bl MOD13_02213394
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bxeq lr
|
|
cmp r8, #2
|
|
addlo r0, r8, #1
|
|
movlo r0, r0, lsl #1
|
|
strloh sb, [r4, r0]
|
|
add r0, r8, #1
|
|
and r8, r0, #0xff
|
|
strhsh sb, [r5, #0x12]
|
|
cmp r8, #3
|
|
blo _0221367C
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213704: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02213708
|
|
MOD13_02213708: ; 0x02213708
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, [r1]
|
|
mov r7, r2
|
|
mov r6, r3
|
|
cmp r1, #0
|
|
beq _02213740
|
|
cmp r1, #1
|
|
beq _022137A4
|
|
cmp r1, #2
|
|
beq _02213880
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_02213740:
|
|
ldr r2, [r0, #0x28]
|
|
add r3, r0, #0x28
|
|
cmp r2, #0x2000000
|
|
blo _02213794
|
|
cmp r2, #0x22c0000
|
|
bhs _02213794
|
|
ldr r1, [r3, #4]
|
|
add r0, r2, r1
|
|
cmp r0, #0x22c0000
|
|
bhi _02213794
|
|
str r1, [r7, #8]
|
|
ldr r0, [r3]
|
|
add sp, sp, #4
|
|
str r0, [r7, #4]
|
|
ldr r0, [r7, #4]
|
|
str r0, [r7]
|
|
ldr r0, [r7, #0xc]
|
|
bic r0, r0, #1
|
|
str r0, [r7, #0xc]
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_02213794:
|
|
bl OS_Terminate
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_022137A4:
|
|
add r4, r0, #0x38
|
|
ldr r2, [r0, #0x38]
|
|
ldr r1, [r4, #4]
|
|
mov ip, #0
|
|
mov r5, ip
|
|
cmp r2, #0x2000000
|
|
add r3, r2, r1
|
|
blo _022137F4
|
|
ldr r0, _022138B0 ; =0x023FE800
|
|
cmp r2, r0
|
|
bhs _022137F4
|
|
cmp r3, #0x2300000
|
|
bls _02213820
|
|
cmp r3, r0
|
|
bhs _022137EC
|
|
cmp r1, #0x40000
|
|
movls r5, #1
|
|
bls _02213820
|
|
_022137EC:
|
|
mov ip, #1
|
|
b _02213820
|
|
_022137F4:
|
|
ldr r0, _022138B4 ; =0x037F8000
|
|
cmp r2, r0
|
|
blo _0221381C
|
|
ldr r0, _022138B8 ; =0x0380F000
|
|
cmp r2, r0
|
|
bhs _0221381C
|
|
cmp r3, r0
|
|
movls r5, #1
|
|
movhi ip, #1
|
|
b _02213820
|
|
_0221381C:
|
|
mov ip, #1
|
|
_02213820:
|
|
cmp ip, #1
|
|
bne _0221382C
|
|
bl OS_Terminate
|
|
_0221382C:
|
|
ldr r0, [r4, #4]
|
|
cmp r5, #0
|
|
str r0, [r7, #8]
|
|
ldr r0, [r4]
|
|
str r0, [r7, #4]
|
|
ldreq r0, [r7, #4]
|
|
streq r0, [r7]
|
|
beq _02213864
|
|
ldr r0, [r6]
|
|
str r0, [r7]
|
|
ldr r1, [r6]
|
|
ldr r0, [r7, #8]
|
|
add r0, r1, r0
|
|
str r0, [r6]
|
|
_02213864:
|
|
ldr r0, [r7, #0xc]
|
|
add sp, sp, #4
|
|
bic r0, r0, #1
|
|
orr r0, r0, #1
|
|
str r0, [r7, #0xc]
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_02213880:
|
|
mov r1, #0x160
|
|
ldr r0, _022138BC ; =0x027FFE00
|
|
str r1, [r7, #8]
|
|
str r0, [r7, #4]
|
|
ldr r0, [r7, #4]
|
|
str r0, [r7]
|
|
ldr r0, [r7, #0xc]
|
|
bic r0, r0, #1
|
|
str r0, [r7, #0xc]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022138B0: .word 0x023FE800
|
|
_022138B4: .word 0x037F8000
|
|
_022138B8: .word 0x0380F000
|
|
_022138BC: .word 0x027FFE00
|
|
|
|
arm_func_start MOD13_022138C0
|
|
MOD13_022138C0: ; 0x022138C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
mov r2, #0x22c0000
|
|
mov r5, r1
|
|
str r2, [sp]
|
|
mov r6, r0
|
|
ldr r0, [r5, #0x24]
|
|
ldr r4, _02213940 ; =0x0223C420
|
|
str r0, [r6]
|
|
ldr r0, [r5, #0x34]
|
|
add r8, r5, #0x160
|
|
str r0, [r6, #4]
|
|
add sl, r6, #0xc
|
|
mov sb, #0
|
|
add r7, sp, #0
|
|
_022138FC:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, sl
|
|
mov r3, r7
|
|
bl MOD13_02213708
|
|
add sb, sb, #1
|
|
cmp sb, #3
|
|
add sl, sl, #0x10
|
|
add r4, r4, #4
|
|
blt _022138FC
|
|
mov r0, r8
|
|
add r1, r6, #0x3c
|
|
mov r2, #0x88
|
|
bl MI_CpuCopy8
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213940: .word 0x0223C420
|
|
|
|
arm_func_start MOD13_02213944
|
|
MOD13_02213944: ; 0x02213944
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r6, #0xff
|
|
bl OS_DisableInterrupts
|
|
mov r5, r0
|
|
bl MOD13_02214B60
|
|
cmp r0, #0
|
|
bne _02213984
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
_02213984:
|
|
ldr r0, _02213BFC ; =0x02240AFC
|
|
ldr r0, [r0]
|
|
add r1, r0, #0x1000
|
|
ldrb r1, [r1, #0x524]
|
|
add r1, r1, #1
|
|
cmp r1, #0x10
|
|
ble _022139B8
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
_022139B8:
|
|
ldr r1, _02213C00 ; =0x000005D4
|
|
mov r4, #0
|
|
_022139C0:
|
|
mla r2, r4, r1, r0
|
|
add r2, r2, #0x1000
|
|
ldr r3, [r2, #0xd40]
|
|
cmp r3, sb
|
|
bne _022139EC
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
_022139EC:
|
|
ldrb r2, [r2, #0xd52]
|
|
cmp r2, #0
|
|
moveq r6, r4
|
|
beq _02213A0C
|
|
add r2, r4, #1
|
|
and r4, r2, #0xff
|
|
cmp r4, #0x10
|
|
blo _022139C0
|
|
_02213A0C:
|
|
cmp r4, #0x10
|
|
bne _02213A2C
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
_02213A2C:
|
|
ldr r1, _02213C00 ; =0x000005D4
|
|
ldr r2, _02213BFC ; =0x02240AFC
|
|
mul r4, r6, r1
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
str sb, [r0, #0xd40]
|
|
ldr r2, [r2]
|
|
ldr r0, _02213C04 ; =0x00001788
|
|
mov r1, r8
|
|
add r0, r2, r0
|
|
add r7, r0, r4
|
|
mov r0, r7
|
|
bl MOD13_022138C0
|
|
add r0, sb, #0x1c
|
|
add r1, r7, #0xc4
|
|
mov r2, #0x20
|
|
bl MI_CpuCopy8
|
|
ldr r1, _02213BFC ; =0x02240AFC
|
|
ldr r0, _02213C08 ; =0x00001D2C
|
|
ldr r2, [r1]
|
|
mov r1, r7
|
|
add r0, r2, r0
|
|
add r0, r0, r4
|
|
bl MOD13_0221362C
|
|
cmp r0, #0
|
|
bne _02213AAC
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
_02213AAC:
|
|
ldr r1, _02213BFC ; =0x02240AFC
|
|
ldr r0, _02213C0C ; =0x0000186C
|
|
ldr r2, [r1]
|
|
mov r1, sb
|
|
add r0, r2, r0
|
|
add r0, r0, r4
|
|
add r2, r2, #0x1300
|
|
bl MOD13_02214A0C
|
|
ldr r2, _02213BFC ; =0x02240AFC
|
|
ldr r1, _02213C0C ; =0x0000186C
|
|
ldr r0, [r2]
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
strb r6, [r0, #0xd21]
|
|
ldr r0, [r2]
|
|
add r0, r0, r1
|
|
add r0, r0, r4
|
|
bl MOD13_02214868
|
|
ldr r0, _02213C10 ; =0x02240A44
|
|
ldr r1, _02213BFC ; =0x02240AFC
|
|
ldrb r7, [r0]
|
|
ldr r3, [r1]
|
|
mov r2, #1
|
|
add r6, r7, #1
|
|
add r3, r3, r4
|
|
strb r6, [r0]
|
|
add r0, r3, #0x1000
|
|
strb r7, [r0, #0xd1f]
|
|
ldr r0, [r1]
|
|
add r3, r8, #0x1e8
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1d00
|
|
strh r2, [r0, #0x4e]
|
|
ldr r0, [r1]
|
|
add r2, r8, #0x258
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
str r8, [r0, #0xd44]
|
|
ldr r0, [r1]
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
str r3, [r0, #0xd54]
|
|
ldr r0, [r1]
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
str r2, [r0, #0xd58]
|
|
ldr r0, [r1]
|
|
add r0, r0, r4
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0xd54]
|
|
ldr r0, [r0, #0x6c]
|
|
cmp r0, #0
|
|
beq _02213BB8
|
|
bl MOD13_02216DA4
|
|
cmp r0, #0
|
|
bne _02213BB8
|
|
ldr r1, _02213BFC ; =0x02240AFC
|
|
ldr r0, _02213C14 ; =0x00007CE0
|
|
ldr r1, [r1]
|
|
add r0, r1, r0
|
|
bl MOD13_02216D90
|
|
ldr r1, _02213BFC ; =0x02240AFC
|
|
ldr r0, _02213C18 ; =0x000074E0
|
|
ldr r2, [r1]
|
|
mov r1, #0x800
|
|
add r0, r2, r0
|
|
bl MOD13_02216DC0
|
|
_02213BB8:
|
|
ldr r2, _02213BFC ; =0x02240AFC
|
|
mov r3, #1
|
|
ldr r1, [r2]
|
|
mov r0, r5
|
|
add r1, r1, r4
|
|
add r1, r1, #0x1000
|
|
strb r3, [r1, #0xd52]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
ldrb r2, [r1, #0x524]
|
|
add r2, r2, #1
|
|
strb r2, [r1, #0x524]
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #1
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02213BFC: .word 0x02240AFC
|
|
_02213C00: .word 0x000005D4
|
|
_02213C04: .word 0x00001788
|
|
_02213C08: .word 0x00001D2C
|
|
_02213C0C: .word 0x0000186C
|
|
_02213C10: .word 0x02240A44
|
|
_02213C14: .word 0x00007CE0
|
|
_02213C18: .word 0x000074E0
|
|
|
|
arm_func_start MOD13_02213C1C
|
|
MOD13_02213C1C: ; 0x02213C1C
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
mov lr, r1
|
|
ldr ip, [r0]
|
|
ldr r1, [r0, #0xc]
|
|
cmp lr, #0x4000
|
|
movlo lr, #0x4000
|
|
cmp r2, #0x8000
|
|
movhi r2, #0x8000
|
|
cmp lr, ip
|
|
add r1, ip, r1
|
|
movlo lr, ip
|
|
cmp r2, r1
|
|
movhi r2, r1
|
|
cmp lr, r2
|
|
addhs sp, sp, #4
|
|
ldmhsia sp!, {lr}
|
|
bxhs lr
|
|
cmp r3, #0
|
|
beq _02213C8C
|
|
ldr r0, [r0, #8]
|
|
sub r2, r2, lr
|
|
add r0, r0, lr
|
|
mov r1, #0
|
|
bl MI_CpuFill8
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02213C8C:
|
|
ldr r3, [r0, #4]
|
|
ldr r1, [r0, #8]
|
|
add r0, r3, lr
|
|
add r1, r1, lr
|
|
sub r2, r2, lr
|
|
bl MI_CpuCopy8
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02213CB0
|
|
MOD13_02213CB0: ; 0x02213CB0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x6c
|
|
str r2, [sp, #4]
|
|
cmp r2, #0x164
|
|
mov r2, #0
|
|
mov sl, r0
|
|
mov sb, r1
|
|
str r2, [sp, #8]
|
|
blo _022140F4
|
|
ldr r8, [sp, #4]
|
|
mov r7, sb
|
|
str r2, [sp, #0xc]
|
|
mov r6, r2
|
|
mov r5, r2
|
|
cmp sl, #0
|
|
add r7, r7, #0x160
|
|
sub r8, r8, #0x160
|
|
beq _02213D24
|
|
ldr r4, [sl, #0x2c]
|
|
ldr r3, [sl, #0x24]
|
|
mov r2, #0x160
|
|
sub fp, r4, r3
|
|
bl FS_ReadFile
|
|
cmp r0, #0x160
|
|
ldr r4, [sb, #0x80]
|
|
movlt r8, r5
|
|
cmp r4, #0
|
|
moveq r4, #0x1000000
|
|
b _02213D9C
|
|
_02213D24:
|
|
ldr r0, _02214104 ; =0x027FFE00
|
|
mov r1, #1
|
|
ldr r4, [r0, #0x80]
|
|
add r0, sp, #0x20
|
|
cmp r4, #0
|
|
moveq r4, #0x1000000
|
|
str r1, [sp, #0xc]
|
|
bl FS_InitFile
|
|
ldr r0, _02214108 ; =0x0223F788
|
|
mov r1, #3
|
|
bl FS_FindArchive
|
|
mov r1, r0
|
|
mvn r0, #0
|
|
str r0, [sp]
|
|
add r0, sp, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0x88
|
|
bl FS_OpenFileDirect
|
|
ldr r2, [sp, #0x4c]
|
|
ldr r1, [sp, #0x44]
|
|
ldr r0, _02214104 ; =0x027FFE00
|
|
sub fp, r2, r1
|
|
mov r1, sb
|
|
mov r2, #0x160
|
|
add sl, sp, #0x20
|
|
bl MI_CpuCopy8
|
|
ldr r1, [sb, #0x60]
|
|
ldr r0, _0221410C ; =0x00406000
|
|
orr r0, r1, r0
|
|
str r0, [sb, #0x60]
|
|
_02213D9C:
|
|
cmp r8, #0x88
|
|
movlo r8, #0
|
|
blo _02213DD0
|
|
mov r0, sl
|
|
add r1, fp, r4
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
mov r0, sl
|
|
mov r1, r7
|
|
mov r2, #0x88
|
|
bl FS_ReadFile
|
|
add r7, r7, #0x88
|
|
sub r8, r8, #0x88
|
|
_02213DD0:
|
|
cmp r8, #0x70
|
|
blo _02213E40
|
|
mov r0, r7
|
|
mov r6, r7
|
|
bl MOD13_02216B80
|
|
add r7, r7, #0x70
|
|
sub r8, r8, #0x70
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, r6
|
|
mov r1, #0
|
|
mov r2, #0x160
|
|
mov r3, sb
|
|
bl MOD13_02216B0C
|
|
ldr r0, [sl, #8]
|
|
mov r4, #0
|
|
b _02213E18
|
|
_02213E14:
|
|
add r4, r4, #1
|
|
_02213E18:
|
|
cmp r4, #3
|
|
bge _02213E2C
|
|
ldrsb r1, [r0, r4]
|
|
cmp r1, #0
|
|
bne _02213E14
|
|
_02213E2C:
|
|
mov r2, r4
|
|
add r1, r6, #0x10
|
|
bl MI_CpuCopy8
|
|
str r4, [r6, #0x14]
|
|
b _02213E44
|
|
_02213E40:
|
|
mov r8, #0
|
|
_02213E44:
|
|
cmp r8, #0x10
|
|
movlo r8, #0
|
|
blo _02213E8C
|
|
mov r0, #0
|
|
str r0, [r7]
|
|
ldr r0, [sl, #0x24]
|
|
ldr r1, [sb, #0x20]
|
|
add r0, fp, r0
|
|
add r0, r1, r0
|
|
str r0, [r7, #4]
|
|
ldr r0, [sl, #0x24]
|
|
ldr r1, [sb, #0x30]
|
|
add r0, fp, r0
|
|
add r0, r1, r0
|
|
mov r5, r7
|
|
str r0, [r7, #8]
|
|
add r7, r7, #0x10
|
|
sub r8, r8, #0x10
|
|
_02213E8C:
|
|
ldr r1, [sb, #0x2c]
|
|
ldr r0, [sb, #0x3c]
|
|
add r0, r1, r0
|
|
cmp r8, r0
|
|
blo _02213F38
|
|
ldr r4, [sl, #0x24]
|
|
ldr r1, [r5, #4]
|
|
mov r0, sl
|
|
sub r1, r1, r4
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
ldr r2, [sb, #0x2c]
|
|
mov r0, sl
|
|
mov r1, r7
|
|
bl FS_ReadFile
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
ldr r1, [r5, #4]
|
|
ldr r2, [sb, #0x2c]
|
|
mov r0, r6
|
|
mov r3, r7
|
|
bl MOD13_02216B0C
|
|
ldr r1, [sb, #0x2c]
|
|
mov r0, sl
|
|
add r7, r7, r1
|
|
ldr r1, [r5, #8]
|
|
mov r2, #0
|
|
sub r1, r1, r4
|
|
bl FS_SeekFile
|
|
ldr r2, [sb, #0x3c]
|
|
mov r0, sl
|
|
mov r1, r7
|
|
bl FS_ReadFile
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
ldr r1, [r5, #8]
|
|
ldr r2, [sb, #0x3c]
|
|
mov r3, r7
|
|
mov r0, r6
|
|
bl MOD13_02216B0C
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
b _0221400C
|
|
_02213F38:
|
|
cmp r8, #0xcc00
|
|
blo _0221400C
|
|
ldr r4, [sl, #0x24]
|
|
ldr r5, [r5, #4]
|
|
mov r0, sl
|
|
sub r1, r5, r4
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
mov r0, sl
|
|
mov r1, r7
|
|
mov r2, #0x4400
|
|
bl FS_ReadFile
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, #0x4400
|
|
mov r3, r7
|
|
bl MOD13_02216B0C
|
|
add r1, r5, #0x4400
|
|
mov r0, sl
|
|
sub r1, r1, r4
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
mov r0, sl
|
|
add r1, r7, #0x4400
|
|
mov r2, #0x4400
|
|
bl FS_ReadFile
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r0, r6
|
|
add r1, r5, #0x4400
|
|
mov r2, #0x4400
|
|
add r3, r7, #0x4400
|
|
bl MOD13_02216B0C
|
|
add r1, r5, #0x8800
|
|
mov r0, sl
|
|
sub r1, r1, r4
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
mov r0, sl
|
|
add r1, r7, #0x8800
|
|
mov r2, #0x4400
|
|
bl FS_ReadFile
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
add r1, r5, #0x8800
|
|
add r3, r7, #0x8800
|
|
mov r0, r6
|
|
mov r2, #0x4400
|
|
bl MOD13_02216B0C
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
_0221400C:
|
|
mov r0, sl
|
|
mov r1, fp
|
|
mov r2, #0
|
|
bl FS_SeekFile
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0
|
|
beq _022140DC
|
|
add r0, sp, #0x20
|
|
bl FS_CloseFile
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _022140DC
|
|
ldr r1, [sb, #0x20]
|
|
ldr r0, _02214110 ; =0x0223F784
|
|
str r1, [sp, #0x10]
|
|
ldr r2, [sb, #0x28]
|
|
ldr r1, [sb, #0x20]
|
|
ldr r4, [r0]
|
|
sub r0, r2, r1
|
|
str r0, [sp, #0x14]
|
|
ldr r2, [r6, #0x48]
|
|
ldr r1, [sb, #0x20]
|
|
add r0, sp, #0x10
|
|
sub r1, r2, r1
|
|
str r1, [sp, #0x18]
|
|
ldr r1, [sp, #4]
|
|
mov r2, #0x8000
|
|
str r1, [sp, #0x1c]
|
|
mov r1, #0x4000
|
|
mov r3, #1
|
|
bl MOD13_02213C1C
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _022140C4
|
|
add r7, sp, #0x10
|
|
mov r5, #0
|
|
_0221409C:
|
|
ldr r1, [r4]
|
|
ldr r2, [r4, #4]
|
|
mov r0, r7
|
|
mov r3, r5
|
|
add r2, r1, r2
|
|
bl MOD13_02213C1C
|
|
add r4, r4, #8
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _0221409C
|
|
_022140C4:
|
|
ldr r1, [sb, #0x28]
|
|
ldr r2, _02214114 ; =0x02000A74
|
|
ldr r3, [r6, #0x48]
|
|
ldr r0, _02214118 ; =0xE12FFF1E
|
|
sub r1, r2, r1
|
|
str r0, [r3, r1]
|
|
_022140DC:
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _022140F4
|
|
ldr r1, [sp, #4]
|
|
mov r0, sb
|
|
bl DC_FlushRange
|
|
_022140F4:
|
|
ldr r0, [sp, #8]
|
|
add sp, sp, #0x6c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214104: .word 0x027FFE00
|
|
_02214108: .word 0x0223F788
|
|
_0221410C: .word 0x00406000
|
|
_02214110: .word 0x0223F784
|
|
_02214114: .word 0x02000A74
|
|
_02214118: .word 0xE12FFF1E
|
|
|
|
arm_func_start MOD13_0221411C
|
|
MOD13_0221411C: ; 0x0221411C
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x64
|
|
mov r6, #0
|
|
movs r7, r0
|
|
mov r5, r6
|
|
beq _02214168
|
|
ldr ip, [r7, #0x2c]
|
|
ldr r3, [r7, #0x24]
|
|
add r1, sp, #0
|
|
mov r2, #0x60
|
|
sub r4, ip, r3
|
|
bl FS_ReadFile
|
|
cmp r0, #0x60
|
|
mov r0, r7
|
|
mov r1, r4
|
|
mov r2, #0
|
|
addhs r6, sp, #0
|
|
bl FS_SeekFile
|
|
b _0221416C
|
|
_02214168:
|
|
ldr r6, _0221419C ; =0x027FFE00
|
|
_0221416C:
|
|
cmp r6, #0
|
|
beq _0221418C
|
|
ldr r1, [r6, #0x2c]
|
|
ldr r0, [r6, #0x3c]
|
|
add r1, r1, #0x268
|
|
add r5, r1, r0
|
|
cmp r5, #0x10000
|
|
movlo r5, #0x10000
|
|
_0221418C:
|
|
mov r0, r5
|
|
add sp, sp, #0x64
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0221419C: .word 0x027FFE00
|
|
|
|
arm_func_start MOD13_022141A0
|
|
MOD13_022141A0: ; 0x022141A0
|
|
mov r2, r1, asr #1
|
|
cmp r2, #0
|
|
mov r3, #0
|
|
ble _022141C4
|
|
_022141B0:
|
|
ldrh r1, [r0], #2
|
|
sub r2, r2, #1
|
|
cmp r2, #0
|
|
add r3, r3, r1
|
|
bgt _022141B0
|
|
_022141C4:
|
|
ldr r0, _022141E4 ; =0x0000FFFF
|
|
and r1, r3, r0
|
|
add r1, r1, r3, lsr #16
|
|
add r1, r1, r1, lsr #16
|
|
eor r0, r1, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_022141E4: .word 0x0000FFFF
|
|
|
|
arm_func_start MOD13_022141E8
|
|
MOD13_022141E8: ; 0x022141E8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r4, r2
|
|
add r2, r6, #0x1f
|
|
mov r5, r1
|
|
mov r0, r4
|
|
bic r1, r2, #0x1f
|
|
bl DC_FlushRange
|
|
bl DC_WaitWriteBufferEmpty
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl MOD13_02214C08
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02214224
|
|
MOD13_02214224: ; 0x02214224
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x14
|
|
ldr r3, _022144AC ; =0x02240A50
|
|
str r0, [sp, #8]
|
|
ldr r0, [r3, #4]
|
|
ldrb r3, [r3, #0xe]
|
|
ldrb r0, [r0, #0x4b4]
|
|
str r1, [sp, #0xc]
|
|
str r2, [sp, #0x10]
|
|
cmp r3, r0
|
|
beq _02214254
|
|
bl MOD13_022144C8
|
|
_02214254:
|
|
ldr r3, _022144B0 ; =0x02240A80
|
|
ldr r1, _022144AC ; =0x02240A50
|
|
ldrb r2, [r3, #4]
|
|
ldr r0, [r1, #4]
|
|
ldrb r5, [r1, #0x11]
|
|
bic r2, r2, #3
|
|
orr r2, r2, #2
|
|
strb r2, [r3, #4]
|
|
ldrb r4, [r0, #0x4b3]
|
|
ldrb r2, [r1, #0xe]
|
|
ldrb r7, [r3, #4]
|
|
strb r4, [r3, #5]
|
|
strb r2, [r3, #6]
|
|
ldr r4, [r0, #0x4b8]
|
|
ldr r2, _022144B4 ; =0x02240A48
|
|
str r4, [r3]
|
|
ldrb r6, [r0, #0x4b5]
|
|
add r4, r5, #1
|
|
bic r7, r7, #0xfc
|
|
and r6, r6, #0x3f
|
|
orr r6, r7, r6, lsl #2
|
|
strb r6, [r3, #4]
|
|
strb r4, [r1, #0x11]
|
|
strb r5, [r3, #7]
|
|
ldrb r4, [r0, #0x358]
|
|
add r1, r0, #0x300
|
|
ldr r2, [r2]
|
|
strb r4, [r3, #0xa]
|
|
ldrh r4, [r1, #0x5a]
|
|
cmp r2, #0
|
|
strh r4, [r3, #0xc]
|
|
ldrh r1, [r1, #0x5c]
|
|
strh r1, [r3, #0xe]
|
|
bne _022142F4
|
|
ldr r1, _022144B8 ; =0x02240A4C
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
beq _022142F4
|
|
ldr r0, [r0, #0x4b8]
|
|
blx r1
|
|
_022142F4:
|
|
ldr r0, _022144AC ; =0x02240A50
|
|
ldr r1, _022144B0 ; =0x02240A80
|
|
ldr r2, [r0, #4]
|
|
mov r3, #0
|
|
_02214304:
|
|
ldrb r0, [r2, #0x4a8]
|
|
add r3, r3, #1
|
|
cmp r3, #8
|
|
strb r0, [r1, #0x68]
|
|
add r2, r2, #1
|
|
add r1, r1, #1
|
|
blt _02214304
|
|
ldr r1, _022144BC ; =0x02240A90
|
|
mov r0, #0
|
|
mov r2, #0x58
|
|
bl MIi_CpuClear16
|
|
ldr r0, _022144AC ; =0x02240A50
|
|
mov sl, #0
|
|
ldr r1, [r0, #4]
|
|
ldr sb, _022144BC ; =0x02240A90
|
|
add r0, r1, #0x400
|
|
add r1, r1, #0x300
|
|
ldrh r2, [r0, #0xb0]
|
|
ldrh r0, [r1, #0x5a]
|
|
mov r5, sl
|
|
mov r8, sl
|
|
eor r0, r2, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r7, r0, lsr #0x10
|
|
mov fp, #0x16
|
|
mov r4, #2
|
|
_0221436C:
|
|
mov r6, r4, lsl r5
|
|
ands r0, r7, r6
|
|
beq _022143C0
|
|
ldr r0, _022144AC ; =0x02240A50
|
|
mov r1, sb
|
|
ldr r2, [r0, #4]
|
|
ldr r0, _022144C0 ; =0x0000035E
|
|
add r0, r2, r0
|
|
add r0, r0, r8
|
|
mov r2, fp
|
|
bl MIi_CpuCopy16
|
|
ldr r0, _022144AC ; =0x02240A50
|
|
add sl, sl, #1
|
|
ldr r0, [r0, #4]
|
|
add sb, sb, #0x16
|
|
add r0, r0, #0x400
|
|
ldrh r1, [r0, #0xb0]
|
|
cmp sl, #4
|
|
orr r1, r1, r6
|
|
strh r1, [r0, #0xb0]
|
|
beq _022143D0
|
|
_022143C0:
|
|
add r5, r5, #1
|
|
cmp r5, #0xf
|
|
add r8, r8, #0x16
|
|
blt _0221436C
|
|
_022143D0:
|
|
cmp sl, #4
|
|
bhs _022143F0
|
|
mov r0, #0x16
|
|
mul r1, sl, r0
|
|
ldr r2, _022144BC ; =0x02240A90
|
|
ldrb r0, [r2, r1]
|
|
bic r0, r0, #0xf0
|
|
strb r0, [r2, r1]
|
|
_022143F0:
|
|
ldr r2, _022144B0 ; =0x02240A80
|
|
mov r3, #0
|
|
ldr r0, _022144C4 ; =0x02240A88
|
|
mov r1, #0x68
|
|
strh r3, [r2, #8]
|
|
bl MOD13_022141A0
|
|
ldr r2, _022144AC ; =0x02240A50
|
|
ldr r1, _022144B0 ; =0x02240A80
|
|
ldr r3, [r2, #4]
|
|
strh r0, [r1, #8]
|
|
add r0, r3, #0x400
|
|
add r1, r3, #0x300
|
|
ldrh r3, [r0, #0xb0]
|
|
ldrh r0, [r1, #0x5a]
|
|
ldr r1, _022144B0 ; =0x02240A80
|
|
cmp r3, r0
|
|
moveq r0, #1
|
|
streqb r0, [r2, #0xc]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r3, [sp, #8]
|
|
orr r2, r0, #3
|
|
ldr r0, [sp, #0xc]
|
|
and r4, r2, #0xff
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
mov r2, #0x70
|
|
str r4, [sp, #4]
|
|
bl WM_SetGameInfo
|
|
ldr r0, _022144B4 ; =0x02240A48
|
|
ldr r0, [r0]
|
|
cmp r0, #1
|
|
addne sp, sp, #0x14
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bxne lr
|
|
ldr r0, _022144B8 ; =0x02240A4C
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
addeq sp, sp, #0x14
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bxeq lr
|
|
ldr r0, _022144AC ; =0x02240A50
|
|
ldr r0, [r0, #4]
|
|
ldr r0, [r0, #0x4b8]
|
|
blx r1
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022144AC: .word 0x02240A50
|
|
_022144B0: .word 0x02240A80
|
|
_022144B4: .word 0x02240A48
|
|
_022144B8: .word 0x02240A4C
|
|
_022144BC: .word 0x02240A90
|
|
_022144C0: .word 0x0000035E
|
|
_022144C4: .word 0x02240A88
|
|
|
|
arm_func_start MOD13_022144C8
|
|
MOD13_022144C8: ; 0x022144C8
|
|
ldr r1, _022144F4 ; =0x02240A50
|
|
mov r3, #1
|
|
ldr r0, [r1, #4]
|
|
mov r2, #5
|
|
add r0, r0, #0x400
|
|
strh r3, [r0, #0xb0]
|
|
ldr r0, [r1, #4]
|
|
ldrb r0, [r0, #0x4b4]
|
|
strb r0, [r1, #0xe]
|
|
strb r2, [r1, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_022144F4: .word 0x02240A50
|
|
|
|
arm_func_start MOD13_022144F8
|
|
MOD13_022144F8: ; 0x022144F8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #8
|
|
ldr r3, _02214660 ; =0x02240A50
|
|
mov r6, r0
|
|
ldr r0, [r3, #4]
|
|
ldr r3, [r3, #8]
|
|
add r7, r0, #0x358
|
|
add r0, r3, #0x62
|
|
cmp r0, r7
|
|
mov r5, r1
|
|
ldrls r0, _02214664 ; =0x02240A80
|
|
movls r1, #0x62
|
|
mov r4, r2
|
|
strlsb r1, [r0, #0xc]
|
|
bls _02214558
|
|
ldr r0, _02214664 ; =0x02240A80
|
|
sub r1, r7, r3
|
|
strb r1, [r0, #0xc]
|
|
ldrb r2, [r0, #0xc]
|
|
ldr r1, _02214668 ; =0x02240A8E
|
|
mov r0, #0
|
|
add r1, r1, r2
|
|
rsb r2, r2, #0x62
|
|
bl MIi_CpuClear16
|
|
_02214558:
|
|
ldr r0, _02214664 ; =0x02240A80
|
|
ldr r1, _02214660 ; =0x02240A50
|
|
ldrb r2, [r0, #0xc]
|
|
ldr r0, [r1, #8]
|
|
ldr r1, _02214668 ; =0x02240A8E
|
|
bl MIi_CpuCopy16
|
|
ldr r3, _02214660 ; =0x02240A50
|
|
ldr r2, _02214664 ; =0x02240A80
|
|
ldrb r8, [r3, #0xf]
|
|
ldrb r1, [r3, #0x10]
|
|
ldrb r7, [r2, #4]
|
|
strb r8, [r2, #0xa]
|
|
ldr r0, [r3, #4]
|
|
strb r1, [r2, #0xb]
|
|
ldrb r1, [r0, #0x4b2]
|
|
bic r7, r7, #3
|
|
ldrb r8, [r3, #0xe]
|
|
and r1, r1, #3
|
|
orr r1, r7, r1
|
|
strb r1, [r2, #4]
|
|
ldrb ip, [r0, #0x4b3]
|
|
ldrb r1, [r2, #4]
|
|
ldrb r7, [r3, #0x11]
|
|
strb ip, [r2, #5]
|
|
strb r8, [r2, #6]
|
|
ldr r8, [r0, #0x4b8]
|
|
bic r1, r1, #0xfc
|
|
str r8, [r2]
|
|
ldrb r0, [r0, #0x4b5]
|
|
add lr, r7, #1
|
|
mov ip, #0
|
|
and r0, r0, #0x3f
|
|
orr r8, r1, r0, lsl #2
|
|
ldr r0, _0221466C ; =0x02240A88
|
|
mov r1, #0x68
|
|
strb r8, [r2, #4]
|
|
strb lr, [r3, #0x11]
|
|
strb r7, [r2, #7]
|
|
strh ip, [r2, #8]
|
|
bl MOD13_022141A0
|
|
ldr r1, _02214660 ; =0x02240A50
|
|
ldr r2, _02214664 ; =0x02240A80
|
|
ldrb ip, [r1, #0xf]
|
|
strh r0, [r2, #8]
|
|
ldrb r3, [r1, #0x10]
|
|
add r0, ip, #1
|
|
strb r0, [r1, #0xf]
|
|
ldrb r0, [r1, #0xf]
|
|
mov r2, #0x70
|
|
cmp r0, r3
|
|
ldrlo r0, [r1, #8]
|
|
mov r3, r6
|
|
addlo r0, r0, #0x62
|
|
strlo r0, [r1, #8]
|
|
movhs r0, #4
|
|
strhsb r0, [r1, #0xc]
|
|
orr r0, r4, #3
|
|
and r4, r0, #0xff
|
|
str r5, [sp]
|
|
ldr r1, _02214664 ; =0x02240A80
|
|
mov r0, #0
|
|
str r4, [sp, #4]
|
|
bl WM_SetGameInfo
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214660: .word 0x02240A50
|
|
_02214664: .word 0x02240A80
|
|
_02214668: .word 0x02240A8E
|
|
_0221466C: .word 0x02240A88
|
|
|
|
arm_func_start MOD13_02214670
|
|
MOD13_02214670: ; 0x02214670
|
|
ldr r0, _022146B8 ; =0x02240A50
|
|
ldrb r1, [r0, #0xc]
|
|
cmp r1, #2
|
|
bxne lr
|
|
ldr r2, [r0, #4]
|
|
ldrb r1, [r2, #0x4b2]
|
|
cmp r1, #0
|
|
moveq r1, #9
|
|
streqb r1, [r0, #0x10]
|
|
streq r2, [r0, #8]
|
|
addne r1, r2, #0x220
|
|
movne r2, #4
|
|
strne r1, [r0, #8]
|
|
strneb r2, [r0, #0x10]
|
|
ldr r0, _022146B8 ; =0x02240A50
|
|
mov r1, #3
|
|
strb r1, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_022146B8: .word 0x02240A50
|
|
|
|
arm_func_start MOD13_022146BC
|
|
MOD13_022146BC: ; 0x022146BC
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _02214760 ; =0x02240A50
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _02214710
|
|
bl MOD13_02214BF4
|
|
mov r4, r0
|
|
bl MOD13_02214BE0
|
|
str r0, [sp]
|
|
mov ip, #8
|
|
ldr r1, _02214764 ; =0x02240A80
|
|
mov r3, r4
|
|
mov r0, #0
|
|
mov r2, #0x70
|
|
str ip, [sp, #4]
|
|
bl WM_SetGameInfo
|
|
add sp, sp, #8
|
|
mov r0, #0
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02214710:
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
beq _0221472C
|
|
ldr r0, [r0, #0x4bc]
|
|
cmp r0, #0
|
|
beq _0221472C
|
|
mov r1, r0
|
|
_0221472C:
|
|
ldr r0, _02214760 ; =0x02240A50
|
|
str r1, [r0, #4]
|
|
bl MOD13_02214810
|
|
ldr r1, _02214760 ; =0x02240A50
|
|
mov r2, #2
|
|
ldr r3, [r1, #4]
|
|
mov r0, #1
|
|
ldrb r3, [r3, #0x4b4]
|
|
strb r3, [r1, #0xe]
|
|
strb r2, [r1, #0xc]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214760: .word 0x02240A50
|
|
_02214764: .word 0x02240A80
|
|
|
|
arm_func_start MOD13_02214768
|
|
MOD13_02214768: ; 0x02214768
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
ldr r4, _0221480C ; =0x02240A50
|
|
_02214780:
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _02214780
|
|
_02214790: ; jump table
|
|
b _022147AC ; case 0
|
|
b _022147AC ; case 1
|
|
b _022147C4 ; case 2
|
|
b _022147CC ; case 3
|
|
b _022147E8 ; case 4
|
|
b _022147F0 ; case 5
|
|
b _02214780 ; case 6
|
|
_022147AC:
|
|
bl MOD13_022146BC
|
|
cmp r0, #0
|
|
bne _02214780
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_022147C4:
|
|
bl MOD13_02214670
|
|
b _02214780
|
|
_022147CC:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl MOD13_022144F8
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
_022147E8:
|
|
bl MOD13_022144C8
|
|
b _02214780
|
|
_022147F0:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl MOD13_02214224
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0221480C: .word 0x02240A50
|
|
|
|
arm_func_start MOD13_02214810
|
|
MOD13_02214810: ; 0x02214810
|
|
ldr r0, _02214830 ; =0x02240A50
|
|
mov r1, #0
|
|
strb r1, [r0, #0xd]
|
|
strb r1, [r0, #0xe]
|
|
strb r1, [r0, #0xf]
|
|
strb r1, [r0, #0x10]
|
|
strb r1, [r0, #0x11]
|
|
bx lr
|
|
.align 2, 0
|
|
_02214830: .word 0x02240A50
|
|
|
|
arm_func_start MOD13_02214834
|
|
MOD13_02214834: ; 0x02214834
|
|
ldr r1, _0221485C ; =0x02240A50
|
|
mov r3, #0
|
|
ldr r0, _02214860 ; =0x02240A4C
|
|
mov r2, #1
|
|
ldr ip, _02214864 ; =MOD13_02214810
|
|
str r3, [r1]
|
|
str r3, [r1, #4]
|
|
strb r2, [r1, #0xc]
|
|
str r3, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_0221485C: .word 0x02240A50
|
|
_02214860: .word 0x02240A4C
|
|
_02214864: .word MOD13_02214810
|
|
|
|
arm_func_start MOD13_02214868
|
|
MOD13_02214868: ; 0x02214868
|
|
ldr r1, _022148A8 ; =0x02240A50
|
|
ldr r2, [r1]
|
|
cmp r2, #0
|
|
streq r0, [r1]
|
|
beq _0221489C
|
|
ldr r1, [r2, #0x4bc]
|
|
cmp r1, #0
|
|
beq _02214898
|
|
_02214888:
|
|
mov r2, r1
|
|
ldr r1, [r1, #0x4bc]
|
|
cmp r1, #0
|
|
bne _02214888
|
|
_02214898:
|
|
str r0, [r2, #0x4bc]
|
|
_0221489C:
|
|
mov r1, #0
|
|
str r1, [r0, #0x4bc]
|
|
bx lr
|
|
.align 2, 0
|
|
_022148A8: .word 0x02240A50
|
|
|
|
arm_func_start MOD13_022148AC
|
|
MOD13_022148AC: ; 0x022148AC
|
|
ldrh r1, [r0], #2
|
|
mov r2, #0
|
|
cmp r1, #0
|
|
beq _022148CC
|
|
_022148BC:
|
|
ldrh r1, [r0], #2
|
|
add r2, r2, #1
|
|
cmp r1, #0
|
|
bne _022148BC
|
|
_022148CC:
|
|
mov r0, r2
|
|
bx lr
|
|
|
|
arm_func_start MOD13_022148D4
|
|
MOD13_022148D4: ; 0x022148D4
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
ldr r4, _02214950 ; =0x0000035E
|
|
mov r6, r0
|
|
mov r5, r2
|
|
mov r0, r1
|
|
ldr r2, _02214954 ; =0x0000014A
|
|
add r1, r6, r4
|
|
mov r4, r3
|
|
mov r7, #1
|
|
bl MIi_CpuCopy16
|
|
mov r2, #0
|
|
mov r1, #2
|
|
_02214908:
|
|
mov r0, r1, lsl r2
|
|
ands r0, r5, r0
|
|
addne r0, r7, #1
|
|
add r2, r2, #1
|
|
andne r7, r0, #0xff
|
|
cmp r2, #0xf
|
|
blt _02214908
|
|
strb r7, [r6, #0x358]
|
|
orr r1, r5, #1
|
|
add r0, r6, #0x300
|
|
strh r1, [r0, #0x5a]
|
|
strh r4, [r0, #0x5c]
|
|
ldrb r0, [r6, #0x4b4]
|
|
add r0, r0, #1
|
|
strb r0, [r6, #0x4b4]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214950: .word 0x0000035E
|
|
_02214954: .word 0x0000014A
|
|
|
|
arm_func_start MOD13_02214958
|
|
MOD13_02214958: ; 0x02214958
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x48
|
|
cmp r2, #0
|
|
movne r4, #0x200
|
|
moveq r4, #0x20
|
|
mov r6, r0
|
|
mov r5, r1
|
|
cmp r2, #0
|
|
addne r5, r5, #0x20
|
|
cmp r6, #0
|
|
addeq sp, sp, #0x48
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, lr}
|
|
bxeq lr
|
|
add r0, sp, #0
|
|
bl FS_InitFile
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
bl FS_OpenFile
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x48
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, lr}
|
|
bxeq lr
|
|
ldr r1, [sp, #0x28]
|
|
ldr r0, [sp, #0x24]
|
|
sub r0, r1, r0
|
|
cmp r4, r0
|
|
beq _022149E4
|
|
add r0, sp, #0
|
|
bl FS_CloseFile
|
|
add sp, sp, #0x48
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
_022149E4:
|
|
add r0, sp, #0
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl FS_ReadFile
|
|
add r0, sp, #0
|
|
bl FS_CloseFile
|
|
mov r0, #1
|
|
add sp, sp, #0x48
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02214A0C
|
|
MOD13_02214A0C: ; 0x02214A0C
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
mov r1, r6
|
|
mov r0, #0
|
|
mov r2, #0x4c0
|
|
bl MIi_CpuClear16
|
|
mov r0, #0
|
|
strb r0, [r6, #0x4b2]
|
|
ldr r0, [r5, #0xc]
|
|
mov r1, r6
|
|
mov r2, #1
|
|
bl MOD13_02214958
|
|
cmp r0, #0
|
|
moveq r7, #1
|
|
ldr r0, [r5, #0x10]
|
|
mov r1, r6
|
|
mov r2, #0
|
|
movne r7, #0
|
|
bl MOD13_02214958
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
orrs r0, r7, r0
|
|
beq _02214A90
|
|
mov r3, #1
|
|
mov r1, r6
|
|
mov r0, #0
|
|
mov r2, #0x220
|
|
strb r3, [r6, #0x4b2]
|
|
bl MIi_CpuClearFast
|
|
_02214A90:
|
|
ldr r0, [r5, #0x14]
|
|
cmp r4, #0
|
|
str r0, [r6, #0x4b8]
|
|
beq _02214AB0
|
|
mov r0, r4
|
|
add r1, r6, #0x220
|
|
mov r2, #0x16
|
|
bl MIi_CpuCopy16
|
|
_02214AB0:
|
|
ldrb r0, [r5, #0x18]
|
|
strb r0, [r6, #0x236]
|
|
ldr r0, [r5, #4]
|
|
bl MOD13_022148AC
|
|
mov r2, r0, lsl #0x11
|
|
ldr r0, [r5, #4]
|
|
add r1, r6, #0x238
|
|
mov r2, r2, lsr #0x10
|
|
bl MIi_CpuCopy16
|
|
ldr r0, [r5, #8]
|
|
add r1, r6, #0x298
|
|
mov r2, #0xc0
|
|
bl MIi_CpuCopy16
|
|
mov r1, #1
|
|
strb r1, [r6, #0x358]
|
|
add r0, r6, #0x300
|
|
strh r1, [r0, #0x5a]
|
|
add r0, r6, #0x400
|
|
strh r1, [r0, #0xb0]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02214B08
|
|
MOD13_02214B08: ; 0x02214B08
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
cmp r1, #2
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {lr}
|
|
bxeq lr
|
|
cmp r1, #0
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {lr}
|
|
bxeq lr
|
|
ldr r2, _02214B5C ; =0x02240AF8
|
|
strh r0, [sp]
|
|
ldr r0, [r2]
|
|
strh r1, [sp, #2]
|
|
ldr r2, [r0, #0x51c]
|
|
add r1, sp, #0
|
|
mov r0, #0xff
|
|
blx r2
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214B5C: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02214B60
|
|
MOD13_02214B60: ; 0x02214B60
|
|
ldr r0, _02214B7C ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x50d]
|
|
cmp r0, #1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02214B7C: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02214B80
|
|
MOD13_02214B80: ; 0x02214B80
|
|
ldr r0, _02214BDC ; =0x02240AF8
|
|
ldr r1, [r0]
|
|
ldrh r0, [r1, #0x12]
|
|
cmp r0, #0
|
|
ldrh r0, [r1, #0xe]
|
|
movne r2, #2
|
|
moveq r2, #0
|
|
cmp r0, #0
|
|
movne r3, #1
|
|
ldrh r0, [r1, #0x14]
|
|
moveq r3, #0
|
|
cmp r0, #0
|
|
movne ip, #4
|
|
ldrh r0, [r1, #0x16]
|
|
moveq ip, #0
|
|
cmp r0, #0
|
|
movne r1, #8
|
|
orr r0, r3, r2
|
|
moveq r1, #0
|
|
orr r0, ip, r0
|
|
orr r0, r1, r0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02214BDC: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02214BE0
|
|
MOD13_02214BE0: ; 0x02214BE0
|
|
ldr r0, _02214BF0 ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldrh r0, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_02214BF0: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02214BF4
|
|
MOD13_02214BF4: ; 0x02214BF4
|
|
ldr r0, _02214C04 ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02214C04: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02214C08
|
|
MOD13_02214C08: ; 0x02214C08
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
ldr ip, _02214D04 ; =0x02240AF8
|
|
mov r3, r1, lsl #0x10
|
|
ldr r5, [ip]
|
|
mov ip, r2, lsl #0x10
|
|
add lr, r5, #0x500
|
|
ldrh r4, [lr, #0x28]
|
|
mov r1, r0
|
|
mov r2, r3, lsr #0x10
|
|
cmp r4, #0
|
|
mov r4, ip, lsr #0x10
|
|
beq _02214C48
|
|
ldrh r0, [lr, #0x26]
|
|
cmp r0, #1
|
|
bne _02214C58
|
|
_02214C48:
|
|
add sp, sp, #4
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
_02214C58:
|
|
ldrh r0, [lr, #0x24]
|
|
cmp r0, #1
|
|
beq _02214C70
|
|
cmp r0, #2
|
|
beq _02214CBC
|
|
b _02214CF4
|
|
_02214C70:
|
|
ldrh r0, [lr, #0x2c]
|
|
cmp r0, #0
|
|
moveq r0, #0x3e8
|
|
movne r0, #0
|
|
mov r3, r0, lsl #0x10
|
|
str r4, [sp]
|
|
ldr r0, [r5, #0x508]
|
|
mov r3, r3, lsr #0x10
|
|
bl MOD13_02214D0C
|
|
cmp r0, #2
|
|
ldreq r1, _02214D04 ; =0x02240AF8
|
|
moveq r2, #1
|
|
ldreq r1, [r1]
|
|
add sp, sp, #4
|
|
streqb r2, [r1, #0x50c]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
_02214CBC:
|
|
ldr r0, _02214D08 ; =MOD13_02215724
|
|
mov r3, #0
|
|
str r4, [sp]
|
|
bl MOD13_02214D0C
|
|
cmp r0, #2
|
|
ldreq r1, _02214D04 ; =0x02240AF8
|
|
moveq r2, #1
|
|
ldreq r1, [r1]
|
|
add sp, sp, #4
|
|
streqb r2, [r1, #0x50c]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
_02214CF4:
|
|
mov r0, #1
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214D04: .word 0x02240AF8
|
|
_02214D08: .word MOD13_02215724
|
|
|
|
arm_func_start MOD13_02214D0C
|
|
MOD13_02214D0C: ; 0x02214D0C
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x10
|
|
ldrh r4, [sp, #0x18]
|
|
mov r3, r2
|
|
mov r2, r1
|
|
str r4, [sp]
|
|
mov r4, #1
|
|
str r4, [sp, #4]
|
|
mov r4, #3
|
|
mov r1, #0
|
|
str r4, [sp, #8]
|
|
bl WM_SetMPDataToPortEx
|
|
mov r4, r0
|
|
mov r1, r4
|
|
mov r0, #0xf
|
|
bl MOD13_02214B08
|
|
mov r0, r4
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02214D5C
|
|
MOD13_02214D5C: ; 0x02214D5C
|
|
ldr r1, _02214D68 ; =0x02240B00
|
|
strh r0, [r1, #6]
|
|
bx lr
|
|
.align 2, 0
|
|
_02214D68: .word 0x02240B00
|
|
|
|
arm_func_start MOD13_02214D6C
|
|
MOD13_02214D6C: ; 0x02214D6C
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r0
|
|
ldr r0, _02214F08 ; =MOD13_02216098
|
|
mov r1, r5
|
|
bl WM_Disconnect
|
|
cmp r5, #0
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {r4, r5, r6, r7, lr}
|
|
bxeq lr
|
|
cmp r5, #0x10
|
|
addhs sp, sp, #4
|
|
ldmhsia sp!, {r4, r5, r6, r7, lr}
|
|
bxhs lr
|
|
ldr r2, _02214F0C ; =0x02240AFC
|
|
sub r4, r5, #1
|
|
ldr r0, [r2]
|
|
mov r1, #0
|
|
add r0, r0, r4, lsl #1
|
|
add r0, r0, #0x1400
|
|
strh r1, [r0, #0x8a]
|
|
ldr r3, [r2]
|
|
ldr r0, _02214F10 ; =0x000014A8
|
|
mov r2, #4
|
|
add r0, r3, r0
|
|
add r0, r0, r4, lsl #2
|
|
bl MI_CpuFill8
|
|
ldr r0, _02214F0C ; =0x02240AFC
|
|
mov r2, #0x16
|
|
ldr r0, [r0]
|
|
mov r1, #0
|
|
add r0, r0, #0x1340
|
|
mla r0, r4, r2, r0
|
|
bl MI_CpuFill8
|
|
mov r0, r5
|
|
bl MOD13_02217234
|
|
ldr lr, _02214F0C ; =0x02240AFC
|
|
mov r2, #0
|
|
ldr r1, [lr]
|
|
mvn r0, #0
|
|
add r1, r1, r4, lsl #1
|
|
add r1, r1, #0x1700
|
|
strh r2, [r1, #0x54]
|
|
ldr r3, [lr]
|
|
add r1, r3, r4
|
|
add r1, r1, #0x1500
|
|
ldrsb r2, [r1, #0x26]
|
|
cmp r2, r0
|
|
beq _02214E9C
|
|
ldr r1, _02214F14 ; =0x000005D4
|
|
and r2, r2, #0xff
|
|
mul r1, r2, r1
|
|
add r2, r3, r1
|
|
add ip, r2, #0x1d00
|
|
mov r3, #1
|
|
ldrh r6, [ip, #0x4e]
|
|
mvn r2, r3, lsl r5
|
|
and r6, r6, r2
|
|
strh r6, [ip, #0x4e]
|
|
ldr r7, [lr]
|
|
mov r6, r4
|
|
add r7, r7, r1
|
|
add ip, r7, #0x1d00
|
|
ldrh r7, [ip, #0x50]
|
|
orr r3, r7, r3, lsl r5
|
|
strh r3, [ip, #0x50]
|
|
ldr r3, [lr]
|
|
add r3, r3, r6
|
|
add r3, r3, #0x1000
|
|
strb r0, [r3, #0x526]
|
|
ldr r0, [lr]
|
|
add r0, r0, r1
|
|
add r0, r0, #0x1d00
|
|
ldrh r1, [r0, #0x4c]
|
|
and r1, r1, r2
|
|
strh r1, [r0, #0x4c]
|
|
_02214E9C:
|
|
ldr r1, _02214F0C ; =0x02240AFC
|
|
mov r0, #1
|
|
ldr r2, [r1]
|
|
mov r5, r0, lsl r5
|
|
add r0, r2, #0x1500
|
|
ldrh r0, [r0, #0x36]
|
|
ands r0, r0, r5
|
|
beq _02214EE4
|
|
add r0, r2, #0x1000
|
|
ldrb r3, [r0, #0x535]
|
|
mvn r2, r5
|
|
sub r3, r3, #1
|
|
strb r3, [r0, #0x535]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1500
|
|
ldrh r1, [r0, #0x36]
|
|
and r1, r1, r2
|
|
strh r1, [r0, #0x36]
|
|
_02214EE4:
|
|
ldr r0, _02214F0C ; =0x02240AFC
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x1000
|
|
str r1, [r0, #0x4e8]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214F08: .word MOD13_02216098
|
|
_02214F0C: .word 0x02240AFC
|
|
_02214F10: .word 0x000014A8
|
|
_02214F14: .word 0x000005D4
|
|
|
|
arm_func_start MOD13_02214F18
|
|
MOD13_02214F18: ; 0x02214F18
|
|
stmdb sp!, {r4, lr}
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02214F54 ; =0x02240AFC
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x320]
|
|
cmp r0, #0
|
|
bne _02214F40
|
|
bl OS_Terminate
|
|
_02214F40:
|
|
bl MOD13_02214F58
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214F54: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02214F58
|
|
MOD13_02214F58: ; 0x02214F58
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
mov r5, #1
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02214FD8 ; =0x02240AF8
|
|
mov r4, r0
|
|
ldr r2, [r1]
|
|
add r0, r2, #0x500
|
|
ldrh r0, [r0, #0x26]
|
|
cmp r0, #0
|
|
bne _02214FC0
|
|
mov r0, #0
|
|
str r0, [r2, #0x5e4]
|
|
ldr r0, [r1]
|
|
mov r1, r5
|
|
add r0, r0, #0x500
|
|
strh r1, [r0, #0x26]
|
|
bl MOD13_02216DA4
|
|
cmp r0, #0
|
|
beq _02214FB8
|
|
ldr r0, _02214FDC ; =MOD13_02214FE0
|
|
bl MOD13_02216B94
|
|
mov r5, #0
|
|
b _02214FC0
|
|
_02214FB8:
|
|
bl MOD13_02214FEC
|
|
mov r5, r0
|
|
_02214FC0:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
mov r0, r5
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02214FD8: .word 0x02240AF8
|
|
_02214FDC: .word MOD13_02214FE0
|
|
|
|
arm_func_start MOD13_02214FE0
|
|
MOD13_02214FE0: ; 0x02214FE0
|
|
ldr ip, _02214FE8 ; =MOD13_02214FEC
|
|
bx ip
|
|
.align 2, 0
|
|
_02214FE8: .word MOD13_02214FEC
|
|
|
|
arm_func_start MOD13_02214FEC
|
|
MOD13_02214FEC: ; 0x02214FEC
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _02215024 ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x508]
|
|
bl WM_Reset
|
|
mov r4, r0
|
|
mov r1, r4
|
|
mov r0, #1
|
|
bl MOD13_02214B08
|
|
cmp r4, #2
|
|
moveq r4, #0
|
|
mov r0, r4
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215024: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02215028
|
|
MOD13_02215028: ; 0x02215028
|
|
ldr r1, _02215044 ; =0x02240AFC
|
|
ldr ip, _02215048 ; =MOD13_0221504C
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
add r1, r1, #0x1000
|
|
str r2, [r1, #0x320]
|
|
bx ip
|
|
.align 2, 0
|
|
_02215044: .word 0x02240AFC
|
|
_02215048: .word MOD13_0221504C
|
|
|
|
arm_func_start MOD13_0221504C
|
|
MOD13_0221504C: ; 0x0221504C
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02215234 ; =0x02240AF8
|
|
ldr r2, _02215238 ; =0x02240AFC
|
|
ldr r3, [r1]
|
|
ldr r1, _0221523C ; =0x00007D1F
|
|
strh r4, [r3, #0x32]
|
|
ldr r3, [r2]
|
|
ldr r2, _02215240 ; =0x02240AF4
|
|
add r1, r3, r1
|
|
bic r1, r1, #0x1f
|
|
mov r4, r0
|
|
str r1, [r2]
|
|
add r0, r3, #0x1000
|
|
ldr r5, [r0, #0x4e4]
|
|
ldr r2, _02215244 ; =0x000069C0
|
|
add r1, r3, #0x1340
|
|
mov r0, #0
|
|
bl MIi_CpuClear16
|
|
mov r0, r5
|
|
bl MOD13_02213368
|
|
ldr r1, _02215234 ; =0x02240AF8
|
|
ldr r0, _02215238 ; =0x02240AFC
|
|
ldr r3, [r1]
|
|
ldr r2, [r0]
|
|
add r0, r3, #0x500
|
|
ldrh r3, [r0]
|
|
add r0, r2, #0x1000
|
|
sub r2, r3, #6
|
|
str r2, [r0, #0x318]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x500
|
|
ldrh r0, [r0, #2]
|
|
bl MOD13_022172A0
|
|
ldr r1, _02215238 ; =0x02240AFC
|
|
ldr r0, _02215248 ; =0x00001538
|
|
ldr r1, [r1]
|
|
add r0, r1, r0
|
|
bl MOD13_02217280
|
|
mov r5, #0
|
|
ldr r2, _02215238 ; =0x02240AFC
|
|
mov r0, r5
|
|
mvn r3, #0
|
|
_02215100:
|
|
ldr r1, [r2]
|
|
add r1, r1, r5, lsl #2
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x4e8]
|
|
ldr r1, [r2]
|
|
add r1, r1, r5
|
|
add r1, r1, #0x1000
|
|
add r5, r5, #1
|
|
strb r3, [r1, #0x526]
|
|
cmp r5, #0xf
|
|
blt _02215100
|
|
ldr r1, [r2]
|
|
ldr r3, _0221524C ; =0x00001788
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x524]
|
|
ldr r1, [r2]
|
|
ldr r2, _02215250 ; =0x00005D40
|
|
add r1, r1, r3
|
|
bl MIi_CpuClear16
|
|
ldr r1, _02215238 ; =0x02240AFC
|
|
ldr r0, _02215254 ; =0x00001754
|
|
ldr r2, [r1]
|
|
mov r1, #0
|
|
add r0, r2, r0
|
|
mov r2, #0x1e
|
|
bl MI_CpuFill8
|
|
ldr r2, _02215234 ; =0x02240AF8
|
|
mov r3, #1
|
|
ldr r0, [r2]
|
|
ldr r1, _02215258 ; =MOD13_02212C20
|
|
add r0, r0, #0x500
|
|
strh r3, [r0, #0x24]
|
|
ldr r0, [r2]
|
|
ldr r3, _0221525C ; =MOD13_02216098
|
|
str r1, [r0, #0x51c]
|
|
ldr r0, [r2]
|
|
mov r1, #0xf
|
|
str r3, [r0, #0x508]
|
|
ldr r3, [r2]
|
|
add r0, r3, #0x500
|
|
ldrh r0, [r0]
|
|
strh r0, [r3, #0x34]
|
|
ldr r0, [r2]
|
|
ldrh r3, [r0, #0x34]
|
|
add r0, r0, #0x500
|
|
add r3, r3, #0x23
|
|
bic r3, r3, #0x1f
|
|
strh r3, [r0, #0x18]
|
|
ldr r3, [r2]
|
|
add r0, r3, #0x500
|
|
ldrh r0, [r0, #2]
|
|
strh r0, [r3, #0x36]
|
|
ldr r0, [r2]
|
|
ldrh r2, [r0, #0x36]
|
|
add r0, r0, #0x500
|
|
add r2, r2, #0xe
|
|
mul r1, r2, r1
|
|
add r1, r1, #0x29
|
|
bic r1, r1, #0x1f
|
|
mov r1, r1, lsl #1
|
|
strh r1, [r0, #0x1a]
|
|
bl MOD13_02214834
|
|
bl MOD13_02215260
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0xf
|
|
mov r1, #1
|
|
bl PXI_IsCallbackReady
|
|
ldr r1, _02215238 ; =0x02240AFC
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x7000
|
|
str r0, [r1, #0x4c8]
|
|
mov r0, r5
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215234: .word 0x02240AF8
|
|
_02215238: .word 0x02240AFC
|
|
_0221523C: .word 0x00007D1F
|
|
_02215240: .word 0x02240AF4
|
|
_02215244: .word 0x000069C0
|
|
_02215248: .word 0x00001538
|
|
_0221524C: .word 0x00001788
|
|
_02215250: .word 0x00005D40
|
|
_02215254: .word 0x00001754
|
|
_02215258: .word MOD13_02212C20
|
|
_0221525C: .word MOD13_02216098
|
|
|
|
arm_func_start MOD13_02215260
|
|
MOD13_02215260: ; 0x02215260
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _02215350 ; =0x02240AF8
|
|
mov r3, #0
|
|
ldr r1, [r2]
|
|
mov r0, #0xa
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x28]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x2a]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x26]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x48]
|
|
bl MOD13_02214D5C
|
|
ldr r0, _02215354 ; =0x02240AFC
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x320]
|
|
cmp r0, #0
|
|
bne _02215320
|
|
ldr r6, _02215358 ; =0x02240AF4
|
|
ldr r5, _02215350 ; =0x02240AF8
|
|
ldr r4, _0221535C ; =0x02240AF0
|
|
_022152C8:
|
|
ldr r1, [r5]
|
|
ldrh r2, [r4]
|
|
ldr r0, [r6]
|
|
ldr r1, [r1, #0x508]
|
|
bl WM_Initialize
|
|
cmp r0, #4
|
|
beq _022152C8
|
|
cmp r0, #2
|
|
movne r0, #8
|
|
ldmneia sp!, {r4, r5, r6, lr}
|
|
bxne lr
|
|
ldr r0, _02215350 ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x508]
|
|
bl WM_SetIndCallback
|
|
ldr r0, _02215350 ; =0x02240AF8
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
mov r0, #0
|
|
strb r2, [r1, #0x50d]
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
_02215320:
|
|
ldr r0, _02215350 ; =0x02240AF8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x508]
|
|
bl WM_SetIndCallback
|
|
ldr r0, _02215350 ; =0x02240AF8
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x50d]
|
|
bl MOD13_02216910
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215350: .word 0x02240AF8
|
|
_02215354: .word 0x02240AFC
|
|
_02215358: .word 0x02240AF4
|
|
_0221535C: .word 0x02240AF0
|
|
|
|
arm_func_start MOD13_02215360
|
|
MOD13_02215360: ; 0x02215360
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02215400 ; =0x02240AF8
|
|
mov r6, r0
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, #0x50d]
|
|
cmp r1, #0
|
|
beq _02215398
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
_02215398:
|
|
mov r0, r5
|
|
mov r2, r4
|
|
mov r1, #8
|
|
bl MOD13_02215404
|
|
cmp r0, #0
|
|
bne _022153C4
|
|
mov r0, r6
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
_022153C4:
|
|
ldr r2, _02215400 ; =0x02240AF8
|
|
mov r0, r6
|
|
ldr r1, [r2]
|
|
mov r3, #8
|
|
strh r4, [r1, #0x10]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r5, [r1]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #2]
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215400: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02215404
|
|
MOD13_02215404: ; 0x02215404
|
|
ldr r3, _02215468 ; =0x000001FE
|
|
cmp r0, r3
|
|
bhi _02215418
|
|
cmp r0, #0xe4
|
|
bhs _02215420
|
|
_02215418:
|
|
mov r0, #0
|
|
bx lr
|
|
_02215420:
|
|
cmp r1, #0x10
|
|
bhi _02215430
|
|
cmp r1, #8
|
|
bhs _02215438
|
|
_02215430:
|
|
mov r0, #0
|
|
bx lr
|
|
_02215438:
|
|
add r1, r1, #0x20
|
|
mov r3, r1, lsl #2
|
|
ldr r1, _0221546C ; =0x0000014A
|
|
add r0, r0, #0x26
|
|
add r1, r1, r0, lsl #2
|
|
add r0, r3, #0x70
|
|
mla r1, r2, r0, r1
|
|
ldr r0, _02215470 ; =0x000015E0
|
|
cmp r1, r0
|
|
movlt r0, #1
|
|
movge r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02215468: .word 0x000001FE
|
|
_0221546C: .word 0x0000014A
|
|
_02215470: .word 0x000015E0
|
|
|
|
arm_func_start MOD13_02215474
|
|
MOD13_02215474: ; 0x02215474
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
ldr r4, _0221567C ; =0x02240AFC
|
|
mov sb, r1
|
|
ldr r1, [r4]
|
|
mov r8, r2
|
|
mov r7, r3
|
|
cmp r1, #0
|
|
beq _022154B4
|
|
add r1, r1, #0x1300
|
|
ldrh r1, [r1, #0x16]
|
|
cmp r1, #0
|
|
addne sp, sp, #4
|
|
movne r0, #2
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bxne lr
|
|
_022154B4:
|
|
add r1, r0, #0x1f
|
|
ldr r0, _02215680 ; =0x00001E1F
|
|
bic r6, r1, #0x1f
|
|
add r0, r6, r0
|
|
cmp r7, #0x10000
|
|
bic r5, r0, #0x1f
|
|
bne _022154D8
|
|
bl WM_GetNextTgid
|
|
mov r7, r0
|
|
_022154D8:
|
|
bl OS_DisableInterrupts
|
|
ldr ip, _02215684 ; =0x02240AF8
|
|
ldr r3, _0221567C ; =0x02240AFC
|
|
mov r4, r0
|
|
ldr r1, [sp, #0x20]
|
|
ldr r0, _02215688 ; =0x02240AF0
|
|
ldr r2, _0221568C ; =0x0000FFFF
|
|
strh r1, [r0]
|
|
ldr r0, _02215690 ; =0x0223F798
|
|
ldr r1, _02215694 ; =0x0223F78C
|
|
strh r2, [r0]
|
|
mov r2, #5
|
|
ldr r0, _02215698 ; =0x0223F790
|
|
strh r2, [r1]
|
|
mov r2, #0x28
|
|
ldr r1, _0221569C ; =0x0223F794
|
|
strh r2, [r0]
|
|
ldr r0, _022156A0 ; =0x0223F7A0
|
|
strh r2, [r1]
|
|
mov r2, #1
|
|
mov r1, r6
|
|
str r2, [r0]
|
|
mov r0, #0
|
|
mov r2, #0x1e00
|
|
str r6, [ip]
|
|
str r5, [r3]
|
|
bl MIi_CpuClear32
|
|
mov r1, r5
|
|
mov r0, #0
|
|
mov r2, #0x1340
|
|
bl MIi_CpuClear16
|
|
ldrb r0, [sb, #1]
|
|
add r1, r6, #0x530
|
|
mov r2, #0
|
|
cmp r0, #0
|
|
ble _02215584
|
|
_02215568:
|
|
add r0, sb, r2, lsl #1
|
|
ldrh r0, [r0, #2]
|
|
add r2, r2, #1
|
|
strh r0, [r1], #2
|
|
ldrb r0, [sb, #1]
|
|
cmp r2, r0
|
|
blt _02215568
|
|
_02215584:
|
|
ldr r0, _022156A4 ; =0x00000538
|
|
mov r3, #0
|
|
add ip, r6, r0
|
|
ldr r0, _022156A8 ; =0x0223F79C
|
|
_02215594:
|
|
ldr r2, [r0]
|
|
ldrh r1, [r2]
|
|
cmp r1, #0
|
|
beq _022155C0
|
|
add r1, r2, #2
|
|
str r1, [r0]
|
|
ldrh r1, [r2]
|
|
add r3, r3, #1
|
|
cmp r3, #0x10
|
|
strh r1, [ip], #2
|
|
blt _02215594
|
|
_022155C0:
|
|
mov r0, sb
|
|
add r1, r5, #0x1300
|
|
mov r2, #0x16
|
|
bl MI_CpuCopy8
|
|
ldrb r0, [sb, #1]
|
|
mov r2, #0
|
|
cmp r0, #0xa
|
|
addlo r0, r5, r0, lsl #1
|
|
addlo r0, r0, #0x1300
|
|
movlo r1, #0
|
|
strloh r1, [r0, #2]
|
|
add r0, r6, #0x500
|
|
mov r1, #0x100
|
|
strh r1, [r0]
|
|
mov r1, #8
|
|
strh r1, [r0, #2]
|
|
strh r2, [r0, #0x18]
|
|
strh r2, [r0, #0x1a]
|
|
mov r1, #1
|
|
strh r1, [r0, #0x2c]
|
|
add r0, r5, #0x400
|
|
str r0, [r6, #0x504]
|
|
strh r2, [r6, #0xe]
|
|
strh r2, [r6, #0x12]
|
|
strh r1, [r6, #0x16]
|
|
strh r2, [r6, #0x14]
|
|
str r8, [r6, #8]
|
|
strh r7, [r6, #0xc]
|
|
bl MOD13_022156AC
|
|
add r0, r0, #0xc8
|
|
strh r0, [r6, #0x18]
|
|
mov r0, #0xf
|
|
strh r0, [r6, #0x10]
|
|
mov r3, #0
|
|
strb r3, [r6, #0x50c]
|
|
strb r3, [r6, #0x50d]
|
|
add r1, r5, #0x1300
|
|
mov r2, #1
|
|
strh r2, [r1, #0x16]
|
|
add r1, r5, #0x1000
|
|
mov r0, r4
|
|
str r3, [r1, #0x31c]
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0221567C: .word 0x02240AFC
|
|
_02215680: .word 0x00001E1F
|
|
_02215684: .word 0x02240AF8
|
|
_02215688: .word 0x02240AF0
|
|
_0221568C: .word 0x0000FFFF
|
|
_02215690: .word 0x0223F798
|
|
_02215694: .word 0x0223F78C
|
|
_02215698: .word 0x0223F790
|
|
_0221569C: .word 0x0223F794
|
|
_022156A0: .word 0x0223F7A0
|
|
_022156A4: .word 0x00000538
|
|
_022156A8: .word 0x0223F79C
|
|
|
|
arm_func_start MOD13_022156AC
|
|
MOD13_022156AC: ; 0x022156AC
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
add r0, sp, #0
|
|
bl OS_GetMacAddress
|
|
mov r2, #0
|
|
add r1, sp, #0
|
|
mov r3, r2
|
|
_022156C8:
|
|
ldrb r0, [r1]
|
|
add r2, r2, #1
|
|
cmp r2, #6
|
|
add r3, r3, r0
|
|
add r1, r1, #1
|
|
blt _022156C8
|
|
ldr r1, _02215718 ; =0x027FFC3C
|
|
mov r0, #7
|
|
ldr r2, [r1]
|
|
ldr r1, _0221571C ; =0xCCCCCCCD
|
|
add r2, r3, r2
|
|
mul r3, r2, r0
|
|
umull r1, r0, r3, r1
|
|
ldr r2, _02215720 ; =0x00000014
|
|
mov r0, r0, lsr #4
|
|
umull r0, r1, r2, r0
|
|
sub r0, r3, r0
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215718: .word 0x027FFC3C
|
|
_0221571C: .word 0xCCCCCCCD
|
|
_02215720: .word 0x00000014
|
|
|
|
arm_func_start MOD13_02215724
|
|
MOD13_02215724: ; 0x02215724
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x20
|
|
mov r6, r0
|
|
ldrh r0, [r6]
|
|
ldr r1, _02215F98 ; =0x02240AF8
|
|
cmp r0, #0x1d
|
|
ldr r5, [r1]
|
|
bgt _022157B0
|
|
cmp r0, #0x1d
|
|
bge _02215838
|
|
cmp r0, #0x15
|
|
addls pc, pc, r0, lsl #2
|
|
b _02215F7C
|
|
_02215758: ; jump table
|
|
b _022157BC ; case 0
|
|
b _02215E4C ; case 1
|
|
b _02215EB8 ; case 2
|
|
b _02215F7C ; case 3
|
|
b _02215F7C ; case 4
|
|
b _02215F7C ; case 5
|
|
b _02215F7C ; case 6
|
|
b _02215F7C ; case 7
|
|
b _02215F7C ; case 8
|
|
b _02215F7C ; case 9
|
|
b _022158DC ; case 10
|
|
b _02215B64 ; case 11
|
|
b _02215BBC ; case 12
|
|
b _02215F7C ; case 13
|
|
b _02215D54 ; case 14
|
|
b _02215DDC ; case 15
|
|
b _02215F7C ; case 16
|
|
b _02215F7C ; case 17
|
|
b _02215F7C ; case 18
|
|
b _02215F7C ; case 19
|
|
b _02215F7C ; case 20
|
|
b _02215F20 ; case 21
|
|
_022157B0:
|
|
cmp r0, #0x80
|
|
beq _02215F50
|
|
b _02215F7C
|
|
_022157BC:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _022157E4
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_022157E4:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x15
|
|
blx r2
|
|
ldr r0, _02215F9C ; =0x0223F794
|
|
ldr r1, _02215FA0 ; =0x0223F798
|
|
ldrh r3, [r0]
|
|
ldr r2, _02215FA4 ; =0x0223F790
|
|
ldr r0, _02215FA8 ; =0x0223F78C
|
|
str r3, [sp]
|
|
ldrh r3, [r0]
|
|
ldrh r1, [r1]
|
|
ldrh r2, [r2]
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
bl WM_SetLifeTime
|
|
mov r1, r0
|
|
mov r0, #0x1d
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215838:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215860
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215860:
|
|
ldr r0, _02215FB0 ; =0x02240B00
|
|
add r2, r5, #0x440
|
|
ldrh r1, [r0, #4]
|
|
str r2, [r0]
|
|
mov r2, #1
|
|
cmp r1, #0
|
|
moveq r1, #1
|
|
streqh r1, [r0, #4]
|
|
ldr r0, _02215FB0 ; =0x02240B00
|
|
ldrh r1, [r0, #6]
|
|
cmp r1, #0
|
|
moveq r1, #0xc8
|
|
streqh r1, [r0, #6]
|
|
ldr r1, _02215FB0 ; =0x02240B00
|
|
mov r0, #0xff
|
|
strb r0, [r1, #8]
|
|
strb r0, [r1, #9]
|
|
strb r0, [r1, #0xa]
|
|
strb r0, [r1, #0xb]
|
|
strb r0, [r1, #0xc]
|
|
strb r0, [r1, #0xd]
|
|
str r2, [r5, #0x5e4]
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
str r2, [r5, #0x5e8]
|
|
bl WM_StartScan
|
|
mov r1, r0
|
|
mov r0, #0xa
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_022158DC:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215904
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215904:
|
|
ldrh r0, [r6, #8]
|
|
cmp r0, #3
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
cmp r0, #4
|
|
beq _02215AE0
|
|
cmp r0, #5
|
|
bne _02215B48
|
|
add r0, r5, #0x500
|
|
ldrh r0, [r0, #0xe0]
|
|
add r3, r5, #0x600
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ble _02215A18
|
|
ldrb r1, [r6, #0xa]
|
|
mov r2, r3
|
|
_02215948:
|
|
ldrb r7, [r2, #0xca]
|
|
cmp r1, r7
|
|
bne _02215A08
|
|
ldrb r8, [r6, #0xb]
|
|
ldrb r7, [r2, #0xcb]
|
|
cmp r8, r7
|
|
bne _02215A08
|
|
ldrb r8, [r6, #0xc]
|
|
ldrb r7, [r2, #0xcc]
|
|
cmp r8, r7
|
|
bne _02215A08
|
|
ldrb r8, [r6, #0xd]
|
|
ldrb r7, [r2, #0xcd]
|
|
cmp r8, r7
|
|
bne _02215A08
|
|
ldrb r8, [r6, #0xe]
|
|
ldrb r7, [r2, #0xce]
|
|
cmp r8, r7
|
|
bne _02215A08
|
|
ldrb r8, [r6, #0xf]
|
|
ldrb r7, [r2, #0xcf]
|
|
cmp r8, r7
|
|
bne _02215A08
|
|
mov r0, #0x180
|
|
mul r7, r4, r0
|
|
add r0, r3, r7
|
|
ldrh r1, [r6, #0x36]
|
|
add r8, r6, #0x38
|
|
add lr, r0, #0xf8
|
|
strh r1, [r0, #0xf6]
|
|
mov ip, #8
|
|
_022159C4:
|
|
ldmia r8!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022159C4
|
|
add r0, r5, #0x600
|
|
add r7, r0, r7
|
|
mov r0, r7
|
|
mov r1, #0xc0
|
|
bl DC_InvalidateRange
|
|
ldr r0, _02215FB4 ; =0x02240AF0
|
|
mov r2, r7
|
|
ldrh r0, [r0]
|
|
add r1, r5, #0x440
|
|
mov r3, #0xc0
|
|
bl MI_DmaCopy16
|
|
str r4, [r5, #0x5ec]
|
|
b _02215A78
|
|
_02215A08:
|
|
add r4, r4, #1
|
|
cmp r4, r0
|
|
add r2, r2, #0x180
|
|
blt _02215948
|
|
_02215A18:
|
|
cmp r4, #0x10
|
|
bge _02215A78
|
|
mov r0, #0x180
|
|
mul r7, r4, r0
|
|
add r1, r3, r7
|
|
mov r0, r6
|
|
add ip, r4, #1
|
|
add r3, r5, #0x500
|
|
add r1, r1, #0xc0
|
|
mov r2, #0xb8
|
|
strh ip, [r3, #0xe0]
|
|
bl MIi_CpuCopy16
|
|
add r0, r5, #0x600
|
|
add r7, r0, r7
|
|
mov r0, r7
|
|
mov r1, #0xc0
|
|
bl DC_InvalidateRange
|
|
ldr r0, _02215FB4 ; =0x02240AF0
|
|
mov r2, r7
|
|
ldrh r0, [r0]
|
|
add r1, r5, #0x440
|
|
mov r3, #0xc0
|
|
bl MI_DmaCopy16
|
|
str r4, [r5, #0x5ec]
|
|
_02215A78:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #4
|
|
blx r2
|
|
ldr r0, [r5, #0x5e4]
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r0, [r5, #0x5e8]
|
|
cmp r0, #0
|
|
beq _02215ABC
|
|
ldr r0, _02215FB0 ; =0x02240B00
|
|
bl MOD13_022169EC
|
|
cmp r0, #0
|
|
bne _02215ABC
|
|
bl MOD13_02214F58
|
|
_02215ABC:
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
ldr r1, _02215FB0 ; =0x02240B00
|
|
bl WM_StartScan
|
|
mov r1, r0
|
|
mov r0, #0xa
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215AE0:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #5
|
|
blx r2
|
|
ldr r0, [r5, #0x5e4]
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r0, [r5, #0x5e8]
|
|
cmp r0, #0
|
|
beq _02215B24
|
|
ldr r0, _02215FB0 ; =0x02240B00
|
|
bl MOD13_022169EC
|
|
cmp r0, #0
|
|
bne _02215B24
|
|
bl MOD13_02214F58
|
|
_02215B24:
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
ldr r1, _02215FB0 ; =0x02240B00
|
|
bl WM_StartScan
|
|
mov r1, r0
|
|
mov r0, #0xa
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215B48:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215B64:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215B8C
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215B8C:
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
ldr r1, [r5, #0x520]
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
mov r3, #1
|
|
bl WM_StartConnectEx
|
|
mov r1, r0
|
|
mov r0, #0xc
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215BBC:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215BF0
|
|
add r0, r5, #0x500
|
|
mov r1, #0
|
|
strh r1, [r0, #0xe0]
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0xb
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215BF0:
|
|
ldrh r0, [r6, #8]
|
|
cmp r0, #9
|
|
bgt _02215C20
|
|
cmp r0, #6
|
|
blt _02215D38
|
|
cmp r0, #6
|
|
beq _02215C34
|
|
cmp r0, #7
|
|
beq _02215C54
|
|
cmp r0, #9
|
|
beq _02215D0C
|
|
b _02215D38
|
|
_02215C20:
|
|
cmp r0, #0x1a
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
b _02215D38
|
|
_02215C34:
|
|
add r0, r5, #0x500
|
|
mov r1, #0
|
|
strh r1, [r0, #0x2a]
|
|
mov r1, #1
|
|
strh r1, [r0, #0x28]
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215C54:
|
|
ldrh r2, [r6, #0xa]
|
|
add r0, r5, #0x500
|
|
mov r1, r6
|
|
strh r2, [r0, #0xe2]
|
|
ldr r2, [r5, #0x51c]
|
|
mov r0, #6
|
|
blx r2
|
|
ldr r1, _02215FB8 ; =MOD13_02215FC0
|
|
add r3, r5, #0x500
|
|
mov r0, #1
|
|
mov r2, #0
|
|
strh r0, [r3, #0x2a]
|
|
bl WM_SetPortCallback
|
|
cmp r0, #0
|
|
addne sp, sp, #0x20
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxne lr
|
|
add r0, r5, #0x500
|
|
ldrh r0, [r0, #0x2c]
|
|
add r1, r5, #0x500
|
|
ldrh r2, [r1, #0x18]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
str r2, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #0x10]
|
|
mov r0, #1
|
|
str r0, [sp, #0x14]
|
|
str r0, [sp, #0x18]
|
|
ldrh r2, [r1, #0x1a]
|
|
ldr r1, [r5, #0x504]
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
add r3, r5, #0x40
|
|
bl WM_StartMPEx
|
|
mov r1, r0
|
|
mov r0, #0xe
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215D0C:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0xa
|
|
blx r2
|
|
add r0, r5, #0x500
|
|
mov r1, #0
|
|
strh r1, [r0, #0x2a]
|
|
strh r1, [r0, #0x28]
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215D38:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215D54:
|
|
ldrh r0, [r6, #4]
|
|
cmp r0, #0xa
|
|
beq _02215D84
|
|
cmp r0, #0xc
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
cmp r0, #0xd
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
b _02215DC0
|
|
_02215D84:
|
|
add r0, r5, #0x500
|
|
mov r1, #1
|
|
strh r1, [r0, #0x28]
|
|
bl MOD13_02216984
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r2, [r5, #0x51c]
|
|
mov r0, #0x19
|
|
mov r1, #0
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215DC0:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215DDC:
|
|
mov r0, #0
|
|
strb r0, [r5, #0x50c]
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
bne _02215E04
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #8
|
|
blx r2
|
|
b _02215E30
|
|
_02215E04:
|
|
cmp r0, #9
|
|
bne _02215E20
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x29
|
|
blx r2
|
|
b _02215E30
|
|
_02215E20:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x12
|
|
blx r2
|
|
_02215E30:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r0, #0x19
|
|
mov r1, #0
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215E4C:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215E80
|
|
add r0, r5, #0x500
|
|
mov r1, #0
|
|
strh r1, [r0, #0x26]
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215E80:
|
|
add r0, r5, #0x500
|
|
mov r2, #0
|
|
strh r2, [r0, #0x2a]
|
|
ldr r1, [r1]
|
|
ldr r0, _02215FAC ; =MOD13_02215724
|
|
add r1, r1, #0x500
|
|
strh r2, [r1, #0x28]
|
|
bl WM_End
|
|
mov r1, r0
|
|
mov r0, #2
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215EB8:
|
|
ldrh r0, [r6, #2]
|
|
cmp r0, #0
|
|
beq _02215EEC
|
|
add r0, r5, #0x500
|
|
mov r1, #0
|
|
strh r1, [r0, #0x26]
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215EEC:
|
|
mov r2, #0
|
|
ldr r0, _02215FBC ; =0x02240AFC
|
|
strb r2, [r5, #0x50d]
|
|
ldr r0, [r0]
|
|
mov r1, r6
|
|
add r0, r0, #0x1300
|
|
strh r2, [r0, #0x16]
|
|
ldr r2, [r5, #0x51c]
|
|
mov r0, #0x11
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215F20:
|
|
bl MOD13_02216984
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bxeq lr
|
|
ldr r2, [r5, #0x51c]
|
|
mov r0, #0x19
|
|
mov r1, #0
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215F50:
|
|
ldrh r0, [r6, #4]
|
|
cmp r0, #0x16
|
|
beq _02215F6C
|
|
add sp, sp, #0x20
|
|
cmp r0, #0x17
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215F6C:
|
|
bl OS_Terminate
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
_02215F7C:
|
|
ldr r2, [r5, #0x51c]
|
|
mov r1, r6
|
|
mov r0, #0x100
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02215F98: .word 0x02240AF8
|
|
_02215F9C: .word 0x0223F794
|
|
_02215FA0: .word 0x0223F798
|
|
_02215FA4: .word 0x0223F790
|
|
_02215FA8: .word 0x0223F78C
|
|
_02215FAC: .word MOD13_02215724
|
|
_02215FB0: .word 0x02240B00
|
|
_02215FB4: .word 0x02240AF0
|
|
_02215FB8: .word MOD13_02215FC0
|
|
_02215FBC: .word 0x02240AFC
|
|
|
|
arm_func_start MOD13_02215FC0
|
|
MOD13_02215FC0: ; 0x02215FC0
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
mov r1, r0
|
|
ldrh r0, [r1, #2]
|
|
cmp r0, #0
|
|
addne sp, sp, #4
|
|
ldmneia sp!, {lr}
|
|
bxne lr
|
|
ldrh r0, [r1, #4]
|
|
cmp r0, #0x15
|
|
bgt _02216034
|
|
cmp r0, #0x15
|
|
bge _02216074
|
|
cmp r0, #9
|
|
addgt sp, sp, #4
|
|
ldmgtia sp!, {lr}
|
|
bxgt lr
|
|
cmp r0, #7
|
|
addlt sp, sp, #4
|
|
ldmltia sp!, {lr}
|
|
bxlt lr
|
|
cmp r0, #7
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {lr}
|
|
bxeq lr
|
|
add sp, sp, #4
|
|
cmp r0, #9
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02216034:
|
|
cmp r0, #0x1a
|
|
addgt sp, sp, #4
|
|
ldmgtia sp!, {lr}
|
|
bxgt lr
|
|
cmp r0, #0x19
|
|
addlt sp, sp, #4
|
|
ldmltia sp!, {lr}
|
|
bxlt lr
|
|
cmp r0, #0x19
|
|
addeq sp, sp, #4
|
|
ldmeqia sp!, {lr}
|
|
bxeq lr
|
|
add sp, sp, #4
|
|
cmp r0, #0x1a
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
_02216074:
|
|
ldr r2, _02216094 ; =0x02240AF8
|
|
mov r0, #9
|
|
ldr r2, [r2]
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02216094: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_02216098
|
|
MOD13_02216098: ; 0x02216098
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x20
|
|
mov r4, r0
|
|
ldrh r0, [r4]
|
|
cmp r0, #0x19
|
|
bgt _02216104
|
|
cmp r0, #0x19
|
|
bge _022161F8
|
|
cmp r0, #0xf
|
|
addls pc, pc, r0, lsl #2
|
|
b _022168D8
|
|
_022160C4: ; jump table
|
|
b _02216124 ; case 0
|
|
b _02216694 ; case 1
|
|
b _02216744 ; case 2
|
|
b _022168D8 ; case 3
|
|
b _022168D8 ; case 4
|
|
b _022168D8 ; case 5
|
|
b _022168D8 ; case 6
|
|
b _022161BC ; case 7
|
|
b _02216250 ; case 8
|
|
b _022168D8 ; case 9
|
|
b _022168D8 ; case 10
|
|
b _022168D8 ; case 11
|
|
b _022168D8 ; case 12
|
|
b _022167C4 ; case 13
|
|
b _022164E0 ; case 14
|
|
b _02216584 ; case 15
|
|
_02216104:
|
|
cmp r0, #0x1d
|
|
bgt _02216118
|
|
cmp r0, #0x1d
|
|
beq _02216164
|
|
b _022168D8
|
|
_02216118:
|
|
cmp r0, #0x80
|
|
beq _02216804
|
|
b _022168D8
|
|
_02216124:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02216154
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216154:
|
|
bl MOD13_02216910
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216164:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02216194
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216194:
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
ldr r0, _02216900 ; =MOD13_02216098
|
|
ldr r1, [r1]
|
|
bl WM_SetParentParameter
|
|
mov r1, r0
|
|
mov r0, #7
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022161BC:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x15
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
ldr r0, _02216900 ; =MOD13_02216098
|
|
mov r1, #1
|
|
bl WM_SetBeaconIndication
|
|
mov r1, r0
|
|
mov r0, #0x19
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022161F8:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02216228
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216228:
|
|
ldr r1, _02216904 ; =0x0223F7A0
|
|
ldr r0, _02216900 ; =MOD13_02216098
|
|
ldr r1, [r1]
|
|
bl WMi_StartParentEx
|
|
mov r1, r0
|
|
mov r0, #8
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216250:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02216280
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216280:
|
|
ldrh r0, [r4, #8]
|
|
cmp r0, #7
|
|
bgt _022162B8
|
|
cmp r0, #7
|
|
bge _0221630C
|
|
cmp r0, #2
|
|
bgt _022164BC
|
|
cmp r0, #0
|
|
blt _022164BC
|
|
cmp r0, #0
|
|
beq _022162E0
|
|
cmp r0, #2
|
|
beq _02216480
|
|
b _022164BC
|
|
_022162B8:
|
|
cmp r0, #9
|
|
bgt _022162CC
|
|
cmp r0, #9
|
|
beq _02216440
|
|
b _022164BC
|
|
_022162CC:
|
|
cmp r0, #0x1a
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
b _022164BC
|
|
_022162E0:
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add sp, sp, #0x20
|
|
add r0, r0, #0x500
|
|
strh r2, [r0, #0x2a]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x500
|
|
strh r2, [r0, #0x28]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_0221630C:
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x500
|
|
ldrh r1, [r0, #0x26]
|
|
cmp r1, #1
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
ldrh lr, [r0, #0x2a]
|
|
ldrh r3, [r4, #0x10]
|
|
mov ip, #1
|
|
mov r1, r4
|
|
orr r3, lr, ip, lsl r3
|
|
strh r3, [r0, #0x2a]
|
|
ldr r2, [r2]
|
|
mov r0, #0
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x500
|
|
ldrh r0, [r0, #0x28]
|
|
cmp r0, #0
|
|
bne _02216408
|
|
ldr r0, _02216908 ; =0x02240AFC
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
ldr r2, [r0, #0x31c]
|
|
cmp r2, #0
|
|
bne _02216408
|
|
mov r2, #1
|
|
str r2, [r0, #0x31c]
|
|
ldr r0, [r1]
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
add r0, r0, #0x500
|
|
ldrh r0, [r0, #0x2c]
|
|
ldr ip, [r1]
|
|
mov r1, #1
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
mov r0, r2, lsl #0x10
|
|
mov r3, r0, lsr #0x10
|
|
add r0, ip, #0x500
|
|
ldrh r4, [r0, #0x18]
|
|
mov r2, #0
|
|
str r4, [sp]
|
|
str r3, [sp, #4]
|
|
str r2, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
str r2, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
str r1, [sp, #0x18]
|
|
ldrh r2, [r0, #0x1a]
|
|
ldr r1, [ip, #0x504]
|
|
ldr r0, _02216900 ; =MOD13_02216098
|
|
add r3, ip, #0x40
|
|
bl WM_StartMPEx
|
|
mov r1, r0
|
|
mov r0, #0xe
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216408:
|
|
bl MOD13_02216984
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
mov r0, #0x19
|
|
ldr r2, [r1]
|
|
mov r1, #0
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216440:
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
ldrh r3, [r4, #0x10]
|
|
ldr r1, [r2]
|
|
mov r0, #1
|
|
add r1, r1, #0x500
|
|
ldrh ip, [r1, #0x2a]
|
|
mvn r3, r0, lsl r3
|
|
and r3, ip, r3
|
|
strh r3, [r1, #0x2a]
|
|
ldr r2, [r2]
|
|
mov r1, r4
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216480:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x500
|
|
ldrh r0, [r0, #0x26]
|
|
cmp r0, #1
|
|
addeq sp, sp, #0x20
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
ldr r2, [r1, #0x51c]
|
|
mov r1, r4
|
|
mov r0, #0x1c
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022164BC:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022164E0:
|
|
ldr r0, _02216908 ; =0x02240AFC
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
str r1, [r0, #0x31c]
|
|
ldrh r0, [r4, #4]
|
|
cmp r0, #0xa
|
|
beq _0221650C
|
|
cmp r0, #0xb
|
|
beq _0221653C
|
|
b _02216560
|
|
_0221650C:
|
|
ldr r3, _022168FC ; =0x02240AF8
|
|
mov r4, #1
|
|
ldr r2, [r3]
|
|
mov r0, #0x19
|
|
add r2, r2, #0x500
|
|
strh r4, [r2, #0x28]
|
|
ldr r2, [r3]
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_0221653C:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
ldr r1, [r4, #8]
|
|
ldr r2, [r0]
|
|
mov r0, #3
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216560:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216584:
|
|
ldr r0, _02216908 ; =0x02240AFC
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x7000
|
|
ldr r0, [r0, #0x4c8]
|
|
cmp r0, #0
|
|
beq _022165E0
|
|
mov r3, #0
|
|
mov r2, r3
|
|
_022165A4:
|
|
add r0, r1, r2, lsl #2
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x4e8]
|
|
cmp r0, #0
|
|
beq _022165C4
|
|
add r3, r3, #1
|
|
cmp r3, #2
|
|
bhs _022165D0
|
|
_022165C4:
|
|
add r2, r2, #1
|
|
cmp r2, #0xf
|
|
blo _022165A4
|
|
_022165D0:
|
|
cmp r3, #1
|
|
bne _022165E0
|
|
ldr r0, _0221690C ; =0x000032C8
|
|
bl OS_SpinWait
|
|
_022165E0:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0x50c]
|
|
ldrh r1, [r4, #2]
|
|
cmp r1, #0
|
|
bne _02216634
|
|
ldr r0, [r0]
|
|
mov r1, r4
|
|
ldr r2, [r0, #0x51c]
|
|
mov r0, #2
|
|
blx r2
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
mov r0, #0x19
|
|
ldr r2, [r1]
|
|
mov r1, #0
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216634:
|
|
cmp r1, #0xa
|
|
bne _0221665C
|
|
ldr r0, [r0]
|
|
mov r1, r4
|
|
ldr r2, [r0, #0x51c]
|
|
mov r0, #0x2a
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_0221665C:
|
|
ldr r0, [r0]
|
|
mov r1, r4
|
|
ldr r2, [r0, #0x51c]
|
|
mov r0, #0x13
|
|
blx r2
|
|
ldr r1, _022168FC ; =0x02240AF8
|
|
mov r0, #0x19
|
|
ldr r2, [r1]
|
|
mov r1, #0
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216694:
|
|
ldr r0, _02216908 ; =0x02240AFC
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x320]
|
|
cmp r0, #0
|
|
bne _0221672C
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _022166EC
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
mov r3, #0
|
|
ldr r0, [r2]
|
|
mov r1, r4
|
|
add r0, r0, #0x500
|
|
strh r3, [r0, #0x26]
|
|
ldr r2, [r2]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022166EC:
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
mov r3, #0
|
|
ldr r1, [r2]
|
|
ldr r0, _02216900 ; =MOD13_02216098
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x2a]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x500
|
|
strh r3, [r1, #0x28]
|
|
bl WM_End
|
|
mov r1, r0
|
|
mov r0, #2
|
|
bl MOD13_02214B08
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_0221672C:
|
|
mov r1, #0
|
|
mov r2, r1
|
|
mov r0, #1
|
|
bl WM_SetPortCallback
|
|
mov r0, #0
|
|
bl WM_SetIndCallback
|
|
_02216744:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02216784
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
mov r3, #0
|
|
ldr r0, [r2]
|
|
mov r1, r4
|
|
add r0, r0, #0x500
|
|
strh r3, [r0, #0x26]
|
|
ldr r2, [r2]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216784:
|
|
ldr r2, _022168FC ; =0x02240AF8
|
|
mov r3, #0
|
|
ldr r1, [r2]
|
|
ldr r0, _02216908 ; =0x02240AFC
|
|
strb r3, [r1, #0x50d]
|
|
ldr r0, [r0]
|
|
mov r1, r4
|
|
add r0, r0, #0x1300
|
|
strh r3, [r0, #0x16]
|
|
ldr r2, [r2]
|
|
mov r0, #0x11
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022167C4:
|
|
ldrh r0, [r4, #2]
|
|
cmp r0, #0
|
|
addne sp, sp, #0x20
|
|
ldmneia sp!, {r4, lr}
|
|
bxne lr
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
ldrh r1, [r4, #0xa]
|
|
ldr r0, [r0]
|
|
add sp, sp, #0x20
|
|
add r0, r0, #0x500
|
|
ldrh r2, [r0, #0x2a]
|
|
mvn r1, r1
|
|
and r1, r2, r1
|
|
strh r1, [r0, #0x2a]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216804:
|
|
ldrh r0, [r4, #4]
|
|
sub r0, r0, #0x10
|
|
cmp r0, #7
|
|
addls pc, pc, r0, lsl #2
|
|
b _022168F0
|
|
_02216818: ; jump table
|
|
b _02216838 ; case 0
|
|
b _0221685C ; case 1
|
|
b _02216880 ; case 2
|
|
b _022168A4 ; case 3
|
|
b _022168F0 ; case 4
|
|
b _022168F0 ; case 5
|
|
b _022168C8 ; case 6
|
|
b _022168F0 ; case 7
|
|
_02216838:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x1d
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_0221685C:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x1f
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_02216880:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x20
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022168A4:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x21
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022168C8:
|
|
bl OS_Terminate
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
_022168D8:
|
|
ldr r0, _022168FC ; =0x02240AF8
|
|
mov r1, r4
|
|
ldr r2, [r0]
|
|
mov r0, #0x100
|
|
ldr r2, [r2, #0x51c]
|
|
blx r2
|
|
_022168F0:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022168FC: .word 0x02240AF8
|
|
_02216900: .word MOD13_02216098
|
|
_02216904: .word 0x0223F7A0
|
|
_02216908: .word 0x02240AFC
|
|
_0221690C: .word 0x000032C8
|
|
|
|
arm_func_start MOD13_02216910
|
|
MOD13_02216910: ; 0x02216910
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
ldr r0, _02216970 ; =MOD13_02216098
|
|
bl WM_SetIndCallback
|
|
mov r1, r0
|
|
mov r0, #0x80
|
|
bl MOD13_02214B08
|
|
ldr r0, _02216974 ; =0x0223F794
|
|
ldr r1, _02216978 ; =0x0223F798
|
|
ldrh r3, [r0]
|
|
ldr r2, _0221697C ; =0x0223F790
|
|
ldr r0, _02216980 ; =0x0223F78C
|
|
str r3, [sp]
|
|
ldrh r1, [r1]
|
|
ldrh r2, [r2]
|
|
ldrh r3, [r0]
|
|
ldr r0, _02216970 ; =MOD13_02216098
|
|
bl WM_SetLifeTime
|
|
mov r1, r0
|
|
mov r0, #0x1d
|
|
bl MOD13_02214B08
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02216970: .word MOD13_02216098
|
|
_02216974: .word 0x0223F794
|
|
_02216978: .word 0x0223F798
|
|
_0221697C: .word 0x0223F790
|
|
_02216980: .word 0x0223F78C
|
|
|
|
arm_func_start MOD13_02216984
|
|
MOD13_02216984: ; 0x02216984
|
|
ldr r1, _022169E8 ; =0x02240AF8
|
|
mov r0, #0
|
|
ldr r2, [r1]
|
|
mov ip, r0
|
|
add r1, r2, #0x500
|
|
ldrh r1, [r1, #0x28]
|
|
mov r3, r0
|
|
cmp r1, #1
|
|
bne _022169B4
|
|
ldrb r1, [r2, #0x50c]
|
|
cmp r1, #0
|
|
moveq r3, #1
|
|
_022169B4:
|
|
cmp r3, #0
|
|
beq _022169CC
|
|
add r1, r2, #0x500
|
|
ldrh r1, [r1, #0x26]
|
|
cmp r1, #0
|
|
moveq ip, #1
|
|
_022169CC:
|
|
cmp ip, #0
|
|
bxeq lr
|
|
add r1, r2, #0x500
|
|
ldrh r1, [r1, #0x2a]
|
|
cmp r1, #0
|
|
movne r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_022169E8: .word 0x02240AF8
|
|
|
|
arm_func_start MOD13_022169EC
|
|
MOD13_022169EC: ; 0x022169EC
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl WM_GetAllowedChannel
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
ldrh r3, [r4, #4]
|
|
mov ip, #0
|
|
mov lr, r3
|
|
mov r2, #1
|
|
_02216A18:
|
|
sub r1, lr, #1
|
|
mov r1, r2, lsl r1
|
|
ands r1, r0, r1
|
|
beq _02216A34
|
|
cmp r3, lr
|
|
strneh lr, [r4, #4]
|
|
bne _02216A5C
|
|
_02216A34:
|
|
add r1, ip, #1
|
|
mov r1, r1, lsl #0x10
|
|
cmp lr, #0x10
|
|
mov ip, r1, lsr #0x10
|
|
moveq r1, r2
|
|
addne r1, lr, #1
|
|
mov r1, r1, lsl #0x10
|
|
cmp ip, #0x10
|
|
mov lr, r1, lsr #0x10
|
|
blo _02216A18
|
|
_02216A5C:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02216A68
|
|
MOD13_02216A68: ; 0x02216A68
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
mov r5, #0
|
|
bl OS_DisableInterrupts
|
|
add r2, sb, #0x30
|
|
add r1, sb, #0x70
|
|
mov r4, r0
|
|
cmp r2, r1
|
|
bhs _02216AF4
|
|
_02216A9C:
|
|
ldr r0, [r2, #0xc]
|
|
cmp r0, #2
|
|
blo _02216AE8
|
|
ldr r0, [r2]
|
|
subs r0, r8, r0
|
|
bmi _02216AE8
|
|
ldr r3, [r2, #4]
|
|
add ip, r0, r6
|
|
cmp ip, r3
|
|
bhi _02216AE8
|
|
ldr r3, [r2, #8]
|
|
mov r1, r7
|
|
mov r2, r6
|
|
add r0, r3, r0
|
|
bl MI_CpuCopy8
|
|
mov r0, #0
|
|
str r0, [sb]
|
|
mov r5, #1
|
|
b _02216AF4
|
|
_02216AE8:
|
|
add r2, r2, #0x10
|
|
cmp r2, r1
|
|
blo _02216A9C
|
|
_02216AF4:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
mov r0, r5
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02216B0C
|
|
MOD13_02216B0C: ; 0x02216B0C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
mov sb, r1
|
|
mov r8, r2
|
|
mov r7, r3
|
|
bl OS_DisableInterrupts
|
|
mov r6, r0
|
|
add r5, r4, #0x30
|
|
add r4, r4, #0x70
|
|
_02216B34:
|
|
cmp r5, r4
|
|
blo _02216B40
|
|
bl OS_Terminate
|
|
_02216B40:
|
|
ldr r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bne _02216B64
|
|
str sb, [r5]
|
|
str r8, [r5, #4]
|
|
ldr r0, [sp, #0x20]
|
|
str r7, [r5, #8]
|
|
str r0, [r5, #0xc]
|
|
b _02216B6C
|
|
_02216B64:
|
|
add r5, r5, #0x10
|
|
b _02216B34
|
|
_02216B6C:
|
|
mov r0, r6
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02216B80
|
|
MOD13_02216B80: ; 0x02216B80
|
|
ldr ip, _02216B90 ; =0x020CE34C
|
|
mov r1, #0
|
|
mov r2, #0x70
|
|
bx ip
|
|
.align 2, 0
|
|
_02216B90: .word 0x020CE34C
|
|
|
|
arm_func_start MOD13_02216B94
|
|
MOD13_02216B94: ; 0x02216B94
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r0
|
|
bl OS_DisableInterrupts
|
|
mov r4, r0
|
|
bl MOD13_02216DA4
|
|
cmp r0, #0
|
|
beq _02216BD0
|
|
ldr r0, _02216BE4 ; =0x02240B20
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r2, r5
|
|
mov r3, r1
|
|
add r0, r0, #0xc4
|
|
bl MOD13_02216BE8
|
|
_02216BD0:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02216BE4: .word 0x02240B20
|
|
|
|
arm_func_start MOD13_02216BE8
|
|
MOD13_02216BE8: ; 0x02216BE8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
ldr r4, _02216D74 ; =0x02240B20
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
ldr r5, [r4]
|
|
bl MOD13_02216DA4
|
|
cmp r0, #0
|
|
bne _02216C18
|
|
bl OS_Terminate
|
|
_02216C18:
|
|
ldr r0, [sb, #4]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _02216C2C
|
|
bl OS_Terminate
|
|
_02216C2C:
|
|
cmp r6, #0x1f
|
|
bls _02216C78
|
|
mov r0, r5
|
|
bl OS_GetThreadPriority
|
|
cmp r6, #0x20
|
|
bne _02216C54
|
|
cmp r0, #0
|
|
subne r6, r0, #1
|
|
moveq r6, #0
|
|
b _02216C78
|
|
_02216C54:
|
|
cmp r6, #0x21
|
|
bne _02216C6C
|
|
cmp r0, #0x1f
|
|
addlo r6, r0, #1
|
|
movhs r6, #0x1f
|
|
b _02216C78
|
|
_02216C6C:
|
|
cmp r6, #0x22
|
|
moveq r6, r0
|
|
movne r6, #0x1f
|
|
_02216C78:
|
|
bl OS_DisableInterrupts
|
|
ldr r2, [sb, #4]
|
|
bic r1, r6, #0x80000000
|
|
bic r2, r2, #1
|
|
orr r2, r2, #1
|
|
str r2, [sb, #4]
|
|
ldr r2, [sb, #4]
|
|
mov r4, r0
|
|
and r0, r2, #1
|
|
orr r0, r0, r1, lsl #1
|
|
str r0, [sb, #4]
|
|
str r8, [sb, #8]
|
|
str r7, [sb, #0xc]
|
|
ldr r0, [r5, #0xc0]
|
|
cmp r0, #0
|
|
bne _02216CDC
|
|
add r0, r5, #0xc4
|
|
cmp sb, r0
|
|
ldreq r0, _02216D74 ; =0x02240B20
|
|
moveq r1, #0
|
|
streq r1, [r0]
|
|
mov r0, r5
|
|
str sb, [r5, #0xc0]
|
|
bl OS_WakeupThreadDirect
|
|
b _02216D60
|
|
_02216CDC:
|
|
add r0, r5, #0xc4
|
|
cmp sb, r0
|
|
ldr r2, [r5, #0xc0]
|
|
bne _02216D1C
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
beq _02216D08
|
|
_02216CF8:
|
|
mov r2, r0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02216CF8
|
|
_02216D08:
|
|
ldr r0, _02216D74 ; =0x02240B20
|
|
str sb, [r2]
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
b _02216D60
|
|
_02216D1C:
|
|
ldr r0, [r2, #4]
|
|
mov r0, r0, lsr #1
|
|
cmp r0, r6
|
|
bls _02216D3C
|
|
str sb, [r5, #0xc0]
|
|
str r2, [sb]
|
|
b _02216D60
|
|
_02216D38:
|
|
mov r2, r1
|
|
_02216D3C:
|
|
ldr r1, [r2]
|
|
cmp r1, #0
|
|
beq _02216D58
|
|
ldr r0, [r1, #4]
|
|
mov r0, r0, lsr #1
|
|
cmp r0, r6
|
|
bls _02216D38
|
|
_02216D58:
|
|
str r1, [sb]
|
|
str sb, [r2]
|
|
_02216D60:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02216D74: .word 0x02240B20
|
|
|
|
arm_func_start MOD13_02216D78
|
|
MOD13_02216D78: ; 0x02216D78
|
|
ldr r0, [r0, #4]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02216D90
|
|
MOD13_02216D90: ; 0x02216D90
|
|
ldr ip, _02216DA0 ; =0x020CE34C
|
|
mov r1, #0
|
|
mov r2, #0x20
|
|
bx ip
|
|
.align 2, 0
|
|
_02216DA0: .word 0x020CE34C
|
|
|
|
arm_func_start MOD13_02216DA4
|
|
MOD13_02216DA4: ; 0x02216DA4
|
|
ldr r0, _02216DBC ; =0x02240B20
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02216DBC: .word 0x02240B20
|
|
|
|
arm_func_start MOD13_02216DC0
|
|
MOD13_02216DC0: ; 0x02216DC0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r0
|
|
mov r6, r1
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _02216E40 ; =0x02240B20
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
bne _02216E2C
|
|
add r0, r5, #0xc4
|
|
str r5, [r1]
|
|
bl MOD13_02216D90
|
|
sub r0, r6, #0xe4
|
|
mov lr, #0
|
|
str lr, [r5, #0xc0]
|
|
bic ip, r0, #3
|
|
add r3, r5, #0xe4
|
|
str ip, [sp]
|
|
ldr r1, _02216E44 ; =MOD13_02216E48
|
|
mov r0, r5
|
|
mov r2, r5
|
|
add r3, r3, ip
|
|
str lr, [sp, #4]
|
|
bl OS_CreateThread
|
|
mov r0, r5
|
|
bl OS_WakeupThreadDirect
|
|
_02216E2C:
|
|
mov r0, r4
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02216E40: .word 0x02240B20
|
|
_02216E44: .word MOD13_02216E48
|
|
|
|
arm_func_start MOD13_02216E48
|
|
MOD13_02216E48: ; 0x02216E48
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #4
|
|
mov r8, r0
|
|
add sb, r8, #0xc4
|
|
mov r4, #0
|
|
_02216E5C:
|
|
bl OS_DisableInterrupts
|
|
ldr r1, [r8, #0xc0]
|
|
mov r5, r0
|
|
cmp r1, #0
|
|
bne _02216E90
|
|
_02216E70:
|
|
mov r0, r8
|
|
mov r1, r4
|
|
bl OS_SetThreadPriority
|
|
mov r0, r4
|
|
bl OS_SleepThread
|
|
ldr r0, [r8, #0xc0]
|
|
cmp r0, #0
|
|
beq _02216E70
|
|
_02216E90:
|
|
ldr r7, [r8, #0xc0]
|
|
ldr r1, [r8, #0xc0]
|
|
mov r0, r8
|
|
ldr r1, [r1]
|
|
str r1, [r8, #0xc0]
|
|
ldr r1, [r7, #4]
|
|
mov r1, r1, lsr #1
|
|
bl OS_SetThreadPriority
|
|
mov r0, r5
|
|
bl OS_RestoreInterrupts
|
|
ldr r1, [r7, #8]
|
|
cmp r1, #0
|
|
beq _02216ECC
|
|
mov r0, r7
|
|
blx r1
|
|
_02216ECC:
|
|
bl OS_DisableInterrupts
|
|
mov r6, r0
|
|
mov r0, r8
|
|
ldr r5, [r7, #0xc]
|
|
bl OS_GetThreadPriority
|
|
ldr r1, [r8, #0xc0]
|
|
cmp r1, #0
|
|
moveq r1, r4
|
|
beq _02216F0C
|
|
ldr r1, [r8, #0xc0]
|
|
ldr r1, [r1, #4]
|
|
cmp r0, r1, lsr #1
|
|
ldrlo r1, [r8, #0xc0]
|
|
ldrlo r1, [r1, #4]
|
|
movlo r1, r1, lsr #1
|
|
movhs r1, r0
|
|
_02216F0C:
|
|
cmp r1, r0
|
|
beq _02216F1C
|
|
mov r0, r8
|
|
bl OS_SetThreadPriority
|
|
_02216F1C:
|
|
str r4, [r7]
|
|
ldr r0, [r7, #4]
|
|
cmp r5, #0
|
|
bic r0, r0, #1
|
|
str r0, [r7, #4]
|
|
beq _02216F3C
|
|
mov r0, r7
|
|
blx r5
|
|
_02216F3C:
|
|
cmp r7, sb
|
|
beq _02216F50
|
|
mov r0, r6
|
|
bl OS_RestoreInterrupts
|
|
b _02216E5C
|
|
_02216F50:
|
|
bl OS_ExitThread
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02216F60
|
|
MOD13_02216F60: ; 0x02216F60
|
|
ldr r1, _02216FB8 ; =0x02240B28
|
|
mov ip, #0
|
|
ldr r2, [r1, #4]
|
|
cmp r2, #0
|
|
ble _02216FB0
|
|
ldr r1, _02216FBC ; =0x02240B24
|
|
sub r0, r0, #1
|
|
ldr r1, [r1]
|
|
add r0, r1, r0, lsl #2
|
|
ldr r3, [r0, #0x1e0]
|
|
mov r1, #1
|
|
_02216F8C:
|
|
mov r0, r1, lsl ip
|
|
ands r0, r0, r3
|
|
moveq r0, #0
|
|
bxeq lr
|
|
add r0, ip, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov ip, r0, lsr #0x10
|
|
cmp ip, r2
|
|
blt _02216F8C
|
|
_02216FB0:
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_02216FB8: .word 0x02240B28
|
|
_02216FBC: .word 0x02240B24
|
|
|
|
arm_func_start MOD13_02216FC0
|
|
MOD13_02216FC0: ; 0x02216FC0
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #4
|
|
ldr r2, _02217068 ; =0x02240B24
|
|
mov r7, r1
|
|
ldr r3, [r2]
|
|
cmp r3, #0
|
|
addeq sp, sp, #4
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, lr}
|
|
bxeq lr
|
|
ldr r1, _0221706C ; =0x02240B28
|
|
ldrb r4, [r0, #2]
|
|
ldr r2, [r1, #4]
|
|
cmp r4, r2
|
|
addgt sp, sp, #4
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r4, r5, r6, r7, lr}
|
|
bxgt lr
|
|
sub r6, r7, #1
|
|
ldr r2, [r1]
|
|
add r1, r3, r6, lsl #5
|
|
mla r1, r4, r2, r1
|
|
add r0, r0, #3
|
|
mov r5, r6, lsl #5
|
|
bl MI_CpuCopy8
|
|
ldr r0, _02217068 ; =0x02240B24
|
|
mov r1, #1
|
|
ldr r2, [r0]
|
|
mov r0, r7
|
|
add r3, r2, #0x1e0
|
|
ldr r2, [r3, r6, lsl #2]
|
|
orr r1, r2, r1, lsl r4
|
|
str r1, [r3, r6, lsl #2]
|
|
bl MOD13_02216F60
|
|
cmp r0, #0
|
|
ldrne r0, _02217068 ; =0x02240B24
|
|
ldrne r0, [r0]
|
|
addne r0, r0, r5
|
|
moveq r0, #0
|
|
add sp, sp, #4
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_02217068: .word 0x02240B24
|
|
_0221706C: .word 0x02240B28
|
|
|
|
arm_func_start MOD13_02217070
|
|
MOD13_02217070: ; 0x02217070
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrb r0, [r6]
|
|
mov r5, r1
|
|
mov r4, r2
|
|
strb r0, [r5]
|
|
ldrb r0, [r5]
|
|
cmp r0, #7
|
|
beq _022170A8
|
|
cmp r0, #8
|
|
beq _02217114
|
|
cmp r0, #9
|
|
beq _02217140
|
|
b _0221718C
|
|
_022170A8:
|
|
mov r0, r4
|
|
bl MOD13_02216F60
|
|
cmp r0, #0
|
|
ldrne r0, _022171A4 ; =0x02240B24
|
|
subne r1, r4, #1
|
|
ldrne r0, [r0]
|
|
addne r0, r0, r1, lsl #5
|
|
ldmneia sp!, {r4, r5, r6, lr}
|
|
bxne lr
|
|
ldrb r1, [r6, #1]
|
|
ldr r0, _022171A8 ; =0x02240B28
|
|
strb r1, [r5, #2]
|
|
ldrb r2, [r5, #2]
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r4, r5, r6, lr}
|
|
bxgt lr
|
|
ldr r2, [r0]
|
|
add r0, r6, #2
|
|
add r1, r5, #3
|
|
bl MI_CpuCopy8
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl MOD13_02216FC0
|
|
mov r4, r0
|
|
b _02217198
|
|
_02217114:
|
|
ldrb r0, [r6, #1]
|
|
add r4, r6, #3
|
|
and r0, r0, #0xff
|
|
strh r0, [r5, #2]
|
|
ldrb r0, [r6, #2]
|
|
ldrh r1, [r5, #2]
|
|
mov r0, r0, lsl #8
|
|
and r0, r0, #0xff00
|
|
orr r0, r1, r0
|
|
strh r0, [r5, #2]
|
|
b _02217198
|
|
_02217140:
|
|
ldrb r0, [r6, #1]
|
|
add r4, r6, #3
|
|
ldr r1, _022171A8 ; =0x02240B28
|
|
and r0, r0, #0xff
|
|
strh r0, [r5, #2]
|
|
ldrb r2, [r6, #2]
|
|
ldrh r3, [r5, #2]
|
|
mov r0, r4
|
|
mov r2, r2, lsl #8
|
|
and r2, r2, #0xff00
|
|
orr r2, r3, r2
|
|
strh r2, [r5, #2]
|
|
ldr r2, [r1]
|
|
add r1, r5, #4
|
|
bl MI_CpuCopy8
|
|
ldr r0, _022171A8 ; =0x02240B28
|
|
ldr r0, [r0]
|
|
add r4, r4, r0
|
|
b _02217198
|
|
_0221718C:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
_02217198:
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022171A4: .word 0x02240B24
|
|
_022171A8: .word 0x02240B28
|
|
|
|
arm_func_start MOD13_022171AC
|
|
MOD13_022171AC: ; 0x022171AC
|
|
ldrb r3, [r0]
|
|
mov r2, r1
|
|
add r2, r2, #1
|
|
strb r3, [r1]
|
|
ldrb r1, [r0]
|
|
cmp r1, #6
|
|
addls pc, pc, r1, lsl #2
|
|
b _02217224
|
|
_022171CC: ; jump table
|
|
b _02217224 ; case 0
|
|
b _0221722C ; case 1
|
|
b _0221722C ; case 2
|
|
b _0221722C ; case 3
|
|
b _022171E8 ; case 4
|
|
b _0221722C ; case 5
|
|
b _0221722C ; case 6
|
|
_022171E8:
|
|
ldrh r3, [r0, #2]
|
|
add r1, r2, #3
|
|
strb r3, [r2]
|
|
ldrh r3, [r0, #2]
|
|
and r3, r3, #0xff00
|
|
mov r3, r3, asr #8
|
|
strb r3, [r2, #1]
|
|
ldrh r3, [r0, #4]
|
|
strb r3, [r2, #2]
|
|
ldrh r0, [r0, #4]
|
|
add r2, r2, #4
|
|
and r0, r0, #0xff00
|
|
mov r0, r0, asr #8
|
|
strb r0, [r1]
|
|
b _0221722C
|
|
_02217224:
|
|
mov r0, #0
|
|
bx lr
|
|
_0221722C:
|
|
mov r0, r2
|
|
bx lr
|
|
|
|
arm_func_start MOD13_02217234
|
|
MOD13_02217234: ; 0x02217234
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0221727C ; =0x02240B24
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
ldmeqia sp!, {r4, lr}
|
|
bxeq lr
|
|
sub r4, r0, #1
|
|
add r0, r1, r4, lsl #5
|
|
mov r1, #0
|
|
mov r2, #0x1e
|
|
bl MI_CpuFill8
|
|
ldr r0, _0221727C ; =0x02240B24
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #2
|
|
str r1, [r0, #0x1e0]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0221727C: .word 0x02240B24
|
|
|
|
arm_func_start MOD13_02217280
|
|
MOD13_02217280: ; 0x02217280
|
|
ldr r3, _02217298 ; =0x02240B24
|
|
ldr ip, _0221729C ; =0x020CE34C
|
|
mov r1, #0
|
|
mov r2, #0x21c
|
|
str r0, [r3]
|
|
bx ip
|
|
.align 2, 0
|
|
_02217298: .word 0x02240B24
|
|
_0221729C: .word 0x020CE34C
|
|
|
|
arm_func_start MOD13_022172A0
|
|
MOD13_022172A0: ; 0x022172A0
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #4
|
|
ldr r2, _022172D8 ; =0x02240B28
|
|
sub r1, r0, #2
|
|
mov r0, #0x1e
|
|
str r1, [r2]
|
|
bl _s32_div_f
|
|
ldr r1, _022172D8 ; =0x02240B28
|
|
mov r2, #0x1e
|
|
str r0, [r1, #4]
|
|
str r2, [r1, #8]
|
|
add sp, sp, #4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_022172D8: .word 0x02240B28
|
|
|
|
.section .rodata
|
|
; 0x0223C420
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
.section .data
|
|
; 0x0223F780
|
|
.byte 0xFF, 0x00, 0x00, 0x00, 0x2C, 0xC4, 0x23, 0x02, 0x72, 0x6F, 0x6D, 0x00, 0x05, 0x00, 0x00, 0x00
|
|
.byte 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0xF7, 0x23, 0x02
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x74, 0x00, 0x69, 0x00, 0x62, 0x00
|
|
.byte 0x6F, 0x00, 0x6F, 0x00, 0x74, 0x00, 0x00, 0x00
|
|
|
|
.section .bss
|
|
; 0x02240A40
|
|
.space 0xF4
|