mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-19 23:34:51 -05:00
4350 lines
77 KiB
ArmAsm
4350 lines
77 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
thumb_func_start MOD57_021D74E0
|
|
MOD57_021D74E0: ; 0x021D74E0
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F34
|
|
bl FUN_0201E6D8
|
|
bl FUN_0201E740
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
ldr r1, [r2]
|
|
ldr r0, _021D76E8 ; =0xFFFFE0FF
|
|
and r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _021D76EC ; =0x04001000
|
|
ldr r1, [r2]
|
|
and r0, r1
|
|
str r0, [r2]
|
|
mov r0, #4
|
|
mov r1, #8
|
|
bl FUN_0201669C
|
|
mov r2, #0xa
|
|
mov r0, #3
|
|
mov r1, #0x19
|
|
lsl r2, r2, #0xe
|
|
bl FUN_0201681C
|
|
ldr r1, _021D76F0 ; =0x00003320
|
|
add r0, r5, #0
|
|
mov r2, #0x19
|
|
bl FUN_02006268
|
|
ldr r2, _021D76F0 ; =0x00003320
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
bl memset
|
|
add r0, r5, #0
|
|
bl FUN_0200628C
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
str r0, [r1]
|
|
mov r0, #0x19
|
|
bl FUN_02016B94
|
|
str r0, [r4]
|
|
add r0, r4, #0
|
|
bl MOD57_021D79AC
|
|
bl MOD57_021D7A14
|
|
ldr r0, [r4]
|
|
bl MOD57_021D7B94
|
|
add r0, r4, #0
|
|
bl MOD57_021D7CA4
|
|
bl FUN_0201CC08
|
|
mov r0, #4
|
|
bl FUN_0201CC24
|
|
mov r1, #0
|
|
mov r0, #0x38
|
|
add r2, r1, #0
|
|
bl FUN_0200433C
|
|
ldr r0, _021D76F4 ; =0x000032F0
|
|
add r0, r4, r0
|
|
bl MOD57_021D95A8
|
|
ldr r0, _021D76F8 ; =0x00000695
|
|
bl FUN_020054C8
|
|
ldr r0, _021D76FC ; =0x000030E4
|
|
add r0, r4, r0
|
|
bl MOD57_021D9184
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
add r2, sp, #0xc
|
|
add r5, r0, #0
|
|
mov r6, #1
|
|
_021D7598:
|
|
add r3, r4, #0
|
|
add r3, #0xb4
|
|
ldr r3, [r3]
|
|
add r3, r3, r1
|
|
ldr r3, [r3, #0x48]
|
|
lsl r3, r3, #0x1f
|
|
asr r3, r3, #0x1f
|
|
beq _021D75AC
|
|
strb r6, [r2]
|
|
b _021D75AE
|
|
_021D75AC:
|
|
strb r5, [r2]
|
|
_021D75AE:
|
|
add r0, r0, #1
|
|
add r1, r1, #4
|
|
add r2, r2, #1
|
|
cmp r0, #8
|
|
blt _021D7598
|
|
ldr r0, _021D76FC ; =0x000030E4
|
|
add r1, sp, #0xc
|
|
add r0, r4, r0
|
|
bl MOD57_021D92F4
|
|
ldr r0, [r4]
|
|
add r1, r4, #4
|
|
bl MOD57_021D899C
|
|
mov r5, #0
|
|
mov r6, #1
|
|
_021D75CE:
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #2]
|
|
asr r0, r5
|
|
tst r0, r6
|
|
beq _021D75E4
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl MOD57_021D8428
|
|
_021D75E4:
|
|
add r0, r5, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r5, r0, #0x18
|
|
cmp r5, #8
|
|
blo _021D75CE
|
|
ldr r0, [r4]
|
|
mov r1, #3
|
|
bl FUN_02017CD0
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
add r0, r4, #4
|
|
bl MOD57_021D89F0
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #4]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1f
|
|
beq _021D761E
|
|
ldr r2, _021D7700 ; =0x0000330C
|
|
add r0, r4, #0
|
|
ldr r2, [r4, r2]
|
|
add r0, #0x54
|
|
mov r1, #1
|
|
bl MOD57_021D9144
|
|
_021D761E:
|
|
mov r1, #0xc3
|
|
mov r5, #0
|
|
lsl r1, r1, #6
|
|
str r5, [r4, r1]
|
|
ldr r0, _021D7704 ; =0x00003318
|
|
sub r2, r5, #1
|
|
strb r5, [r4, r0]
|
|
add r1, #0x14
|
|
str r2, [r4, r1]
|
|
add r1, r0, #0
|
|
sub r1, #0x2c
|
|
str r5, [r4, r1]
|
|
add r0, r0, #5
|
|
ldr r7, _021D76FC ; =0x000030E4
|
|
strb r5, [r4, r0]
|
|
_021D763C:
|
|
ldr r0, _021D7708 ; =0x00003310
|
|
add r2, r4, r5
|
|
mov r1, #0
|
|
strb r1, [r2, r0]
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r1, [r0]
|
|
lsl r0, r5, #2
|
|
add r1, #0x48
|
|
ldr r0, [r1, r0]
|
|
lsl r1, r0, #0x1f
|
|
asr r1, r1, #0x1f
|
|
beq _021D76A8
|
|
asr r0, r0, #1
|
|
bl MOD57_021D870C
|
|
add r6, r0, #0
|
|
cmp r6, #4
|
|
bhi _021D7680
|
|
bne _021D7670
|
|
add r0, r4, r7
|
|
add r1, r5, #0
|
|
mov r2, #0
|
|
bl MOD57_021D951C
|
|
b _021D7680
|
|
_021D7670:
|
|
mov r2, #3
|
|
sub r2, r2, r6
|
|
lsl r2, r2, #0x18
|
|
add r0, r4, r7
|
|
add r1, r5, #0
|
|
lsr r2, r2, #0x18
|
|
bl MOD57_021D951C
|
|
_021D7680:
|
|
cmp r6, #3
|
|
bne _021D7694
|
|
lsl r0, r5, #2
|
|
add r1, r4, r0
|
|
ldr r0, _021D770C ; =0x00003260
|
|
ldr r0, [r1, r0]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
b _021D76A8
|
|
_021D7694:
|
|
cmp r6, #4
|
|
bne _021D76A8
|
|
lsl r0, r5, #2
|
|
add r1, r4, r0
|
|
mov r0, #0xca
|
|
lsl r0, r0, #6
|
|
ldr r0, [r1, r0]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
_021D76A8:
|
|
add r0, r5, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r5, r0, #0x18
|
|
cmp r5, #8
|
|
blo _021D763C
|
|
bl MOD57_021D8588
|
|
ldr r0, _021D7710 ; =MOD57_021D848C
|
|
mov r1, #0
|
|
bl FUN_02015F10
|
|
bl FUN_02033F20
|
|
mov r0, #1
|
|
mov r1, #0x2a
|
|
bl FUN_020051EC
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x19
|
|
mov r1, #3
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
add r2, r1, #0
|
|
mov r3, #0
|
|
bl FUN_0200E1D0
|
|
mov r0, #1
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D76E8: .word 0xFFFFE0FF
|
|
_021D76EC: .word 0x04001000
|
|
_021D76F0: .word 0x00003320
|
|
_021D76F4: .word 0x000032F0
|
|
_021D76F8: .word 0x00000695
|
|
_021D76FC: .word 0x000030E4
|
|
_021D7700: .word 0x0000330C
|
|
_021D7704: .word 0x00003318
|
|
_021D7708: .word 0x00003310
|
|
_021D770C: .word 0x00003260
|
|
_021D7710: .word MOD57_021D848C
|
|
thumb_func_end MOD57_021D74E0
|
|
|
|
thumb_func_start MOD57_021D7714
|
|
MOD57_021D7714: ; 0x021D7714
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0xc
|
|
add r5, r1, #0
|
|
bl FUN_02006278
|
|
ldr r1, [r5]
|
|
add r4, r0, #0
|
|
cmp r1, #4
|
|
bhi _021D7744
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021D7732: ; jump table
|
|
.short _021D773C - _021D7732 - 2 ; case 0
|
|
.short _021D774C - _021D7732 - 2 ; case 1
|
|
.short _021D786A - _021D7732 - 2 ; case 2
|
|
.short _021D7878 - _021D7732 - 2 ; case 3
|
|
.short _021D7886 - _021D7732 - 2 ; case 4
|
|
_021D773C:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
bne _021D7746
|
|
_021D7744:
|
|
b _021D790C
|
|
_021D7746:
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
b _021D790C
|
|
_021D774C:
|
|
bl MOD57_021D81F8
|
|
add r6, r0, #0
|
|
cmp r6, #1
|
|
bne _021D77CA
|
|
ldr r0, _021D7920 ; =0x000030D4
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D779E
|
|
ldr r2, _021D7924 ; =0x000032EC
|
|
mov r1, #1
|
|
add r0, r2, #0
|
|
str r1, [r4, r2]
|
|
add r0, #0x31
|
|
sub r2, #0x4c
|
|
strb r1, [r4, r0]
|
|
ldr r0, [r4, r2]
|
|
bl FUN_020200A0
|
|
ldr r0, _021D7928 ; =0x000032A0
|
|
mov r1, #1
|
|
ldr r0, [r4, r0]
|
|
bl FUN_020200BC
|
|
ldr r0, _021D7928 ; =0x000032A0
|
|
mov r1, #0xa
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02020130
|
|
ldr r0, _021D792C ; =0x0000331A
|
|
mov r2, #0
|
|
strb r2, [r4, r0]
|
|
add r1, r0, #2
|
|
strb r2, [r4, r1]
|
|
add r0, r0, #1
|
|
strb r2, [r4, r0]
|
|
ldr r0, _021D7930 ; =0x000030D8
|
|
str r2, [r4, r0]
|
|
mov r0, #4
|
|
str r0, [r5]
|
|
b _021D7856
|
|
_021D779E:
|
|
sub r0, r0, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r5, r0, #0x18
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r1, [r0]
|
|
lsl r0, r5, #2
|
|
add r1, #0x48
|
|
ldr r0, [r1, r0]
|
|
lsl r1, r0, #0x1f
|
|
asr r1, r1, #0x1f
|
|
beq _021D7856
|
|
asr r0, r0, #1
|
|
bl MOD57_021D870C
|
|
add r2, r0, #0
|
|
ldr r0, _021D7934 ; =0x000032F0
|
|
add r1, r5, #0
|
|
add r0, r4, r0
|
|
bl MOD57_021D95BC
|
|
b _021D7856
|
|
_021D77CA:
|
|
cmp r6, #2
|
|
ldr r1, _021D7924 ; =0x000032EC
|
|
bne _021D77F0
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
beq _021D77E8
|
|
ldr r0, _021D7920 ; =0x000030D4
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
beq _021D77E8
|
|
mov r0, #0
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
add r1, #0x31
|
|
strb r0, [r4, r1]
|
|
_021D77E8:
|
|
add r0, r4, #0
|
|
bl MOD57_021D82BC
|
|
b _021D7856
|
|
_021D77F0:
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
beq _021D780A
|
|
add r0, r1, #0
|
|
add r0, #0x31
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D780A
|
|
mov r0, #0
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
add r1, #0x31
|
|
strb r0, [r4, r1]
|
|
_021D780A:
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #4]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
beq _021D7822
|
|
mov r0, #0x33
|
|
lsl r0, r0, #8
|
|
add r0, r4, r0
|
|
bl MOD57_021D874C
|
|
_021D7822:
|
|
cmp r6, #3
|
|
bne _021D7832
|
|
ldr r0, _021D792C ; =0x0000331A
|
|
mov r1, #0
|
|
strb r1, [r4, r0]
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7856
|
|
_021D7832:
|
|
cmp r6, #4
|
|
bne _021D7856
|
|
ldr r0, _021D7938 ; =0x000005DC
|
|
bl FUN_020054C8
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r1, #0x19
|
|
str r1, [sp, #8]
|
|
mov r1, #4
|
|
add r2, r1, #0
|
|
mov r3, #0
|
|
bl FUN_0200E1D0
|
|
mov r0, #2
|
|
str r0, [r5]
|
|
_021D7856:
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
add r0, r4, #0
|
|
ldrb r1, [r1, #4]
|
|
lsl r1, r1, #0x1e
|
|
lsr r1, r1, #0x1f
|
|
bl MOD57_021D88A4
|
|
b _021D790C
|
|
_021D786A:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
beq _021D790C
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, pc}
|
|
_021D7878:
|
|
bl MOD57_021D7F20
|
|
cmp r0, #0
|
|
beq _021D790C
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
b _021D790C
|
|
_021D7886:
|
|
ldr r1, _021D793C ; =0x0000331D
|
|
ldrb r1, [r4, r1]
|
|
cmp r1, #0
|
|
bne _021D78EA
|
|
bl MOD57_021D81F8
|
|
cmp r0, #1
|
|
bne _021D78B8
|
|
ldr r0, _021D7920 ; =0x000030D4
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D78EA
|
|
ldr r1, _021D7924 ; =0x000032EC
|
|
mov r2, #1
|
|
add r0, r1, #0
|
|
str r2, [r4, r1]
|
|
add r0, #0x31
|
|
strb r2, [r4, r0]
|
|
add r0, r1, #0
|
|
mov r2, #0
|
|
add r0, #0x30
|
|
strb r2, [r4, r0]
|
|
add r1, #0x2f
|
|
strb r2, [r4, r1]
|
|
b _021D78EA
|
|
_021D78B8:
|
|
cmp r0, #2
|
|
bne _021D78D8
|
|
ldr r1, _021D7924 ; =0x000032EC
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
beq _021D78EA
|
|
ldr r0, _021D7920 ; =0x000030D4
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
beq _021D78EA
|
|
mov r0, #0
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
add r1, #0x31
|
|
strb r0, [r4, r1]
|
|
b _021D78EA
|
|
_021D78D8:
|
|
ldr r0, _021D7924 ; =0x000032EC
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0
|
|
beq _021D78EA
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
mov r1, #2
|
|
add r0, #0x31
|
|
strb r1, [r4, r0]
|
|
_021D78EA:
|
|
ldr r0, _021D7930 ; =0x000030D8
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D78FC
|
|
add r0, r4, #0
|
|
bl MOD57_021D80F8
|
|
ldr r1, _021D7930 ; =0x000030D8
|
|
str r0, [r4, r1]
|
|
_021D78FC:
|
|
ldr r0, _021D7930 ; =0x000030D8
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0
|
|
beq _021D790C
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
_021D790C:
|
|
add r0, r4, #0
|
|
bl MOD57_021D85F4
|
|
ldr r0, _021D7940 ; =0x000030E4
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0201FDEC
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D7920: .word 0x000030D4
|
|
_021D7924: .word 0x000032EC
|
|
_021D7928: .word 0x000032A0
|
|
_021D792C: .word 0x0000331A
|
|
_021D7930: .word 0x000030D8
|
|
_021D7934: .word 0x000032F0
|
|
_021D7938: .word 0x000005DC
|
|
_021D793C: .word 0x0000331D
|
|
_021D7940: .word 0x000030E4
|
|
thumb_func_end MOD57_021D7714
|
|
|
|
thumb_func_start MOD57_021D7944
|
|
MOD57_021D7944: ; 0x021D7944
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl FUN_02006278
|
|
add r4, r0, #0
|
|
bl MOD57_021D8588
|
|
add r0, r4, #0
|
|
bl MOD57_021D79F4
|
|
ldr r0, _021D79A0 ; =0x000030E4
|
|
add r0, r4, r0
|
|
bl MOD57_021D94BC
|
|
ldr r0, _021D79A4 ; =0x000030B8
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
ldr r0, _021D79A8 ; =0x000032F8
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
add r0, r4, #4
|
|
bl MOD57_021D89D4
|
|
ldr r0, [r4]
|
|
bl MOD57_021D7EDC
|
|
bl FUN_0201CD04
|
|
add r0, r5, #0
|
|
bl FUN_0200627C
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
mov r0, #0x19
|
|
bl FUN_020168D0
|
|
mov r0, #1
|
|
mov r1, #0x7f
|
|
bl FUN_020051EC
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D79A0: .word 0x000030E4
|
|
_021D79A4: .word 0x000030B8
|
|
_021D79A8: .word 0x000032F8
|
|
thumb_func_end MOD57_021D7944
|
|
|
|
thumb_func_start MOD57_021D79AC
|
|
MOD57_021D79AC: ; 0x021D79AC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #4
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
ldr r1, _021D79E8 ; =0x00003308
|
|
str r0, [r5, r1]
|
|
mov r0, #5
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
ldr r1, _021D79EC ; =0x0000330C
|
|
ldr r2, _021D79F0 ; =0x0000022D
|
|
str r0, [r5, r1]
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
mov r3, #0x19
|
|
bl FUN_0200A86C
|
|
ldr r2, _021D79EC ; =0x0000330C
|
|
add r4, r0, #0
|
|
ldr r2, [r5, r2]
|
|
mov r1, #0xb
|
|
bl FUN_0200A8E0
|
|
add r0, r4, #0
|
|
bl FUN_0200A8B8
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D79E8: .word 0x00003308
|
|
_021D79EC: .word 0x0000330C
|
|
_021D79F0: .word 0x0000022D
|
|
thumb_func_end MOD57_021D79AC
|
|
|
|
thumb_func_start MOD57_021D79F4
|
|
MOD57_021D79F4: ; 0x021D79F4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D7A0C ; =0x00003308
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02021A20
|
|
ldr r0, _021D7A10 ; =0x0000330C
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02021A20
|
|
pop {r4, pc}
|
|
nop
|
|
_021D7A0C: .word 0x00003308
|
|
_021D7A10: .word 0x0000330C
|
|
thumb_func_end MOD57_021D79F4
|
|
|
|
thumb_func_start MOD57_021D7A14
|
|
MOD57_021D7A14: ; 0x021D7A14
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021D7A30 ; =0x021D9800
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021D7A1E:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D7A1E
|
|
add r0, sp, #0
|
|
bl FUN_0201E66C
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D7A30: .word 0x021D9800
|
|
thumb_func_end MOD57_021D7A14
|
|
|
|
thumb_func_start MOD57_021D7A34
|
|
MOD57_021D7A34: ; 0x021D7A34
|
|
push {r3, r4, r5, lr}
|
|
cmp r1, #0
|
|
beq _021D7AB6
|
|
cmp r0, #5
|
|
bhi _021D7AC4
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021D7A4A: ; jump table
|
|
.short _021D7A56 - _021D7A4A - 2 ; case 0
|
|
.short _021D7A66 - _021D7A4A - 2 ; case 1
|
|
.short _021D7A76 - _021D7A4A - 2 ; case 2
|
|
.short _021D7A86 - _021D7A4A - 2 ; case 3
|
|
.short _021D7A96 - _021D7A4A - 2 ; case 4
|
|
.short _021D7AA6 - _021D7A4A - 2 ; case 5
|
|
_021D7A56:
|
|
mov r0, #0x33
|
|
mov r1, #0
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7A66:
|
|
mov r0, #0x33
|
|
mov r1, #1
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7A76:
|
|
mov r0, #0x33
|
|
mov r1, #2
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7A86:
|
|
mov r0, #0x33
|
|
mov r1, #3
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7A96:
|
|
mov r0, #0x33
|
|
mov r1, #4
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7AA6:
|
|
mov r0, #0x33
|
|
mov r1, #5
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7AC4
|
|
_021D7AB6:
|
|
mov r0, #0x33
|
|
mov r1, #6
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
_021D7AC4:
|
|
ldr r0, [sp]
|
|
mov r1, #2
|
|
ldr r0, [r0, #0xc]
|
|
lsl r1, r1, #8
|
|
bl DC_FlushRange
|
|
ldr r0, [sp]
|
|
mov r1, #0x20
|
|
ldr r5, [r0, #0xc]
|
|
mov r2, #0x60
|
|
add r0, r5, #0
|
|
add r0, #0x20
|
|
bl GXS_LoadBGPltt
|
|
mov r1, #0x1e
|
|
lsl r1, r1, #4
|
|
add r0, r5, r1
|
|
mov r2, #0x20
|
|
bl GXS_LoadBGPltt
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD57_021D7A34
|
|
|
|
thumb_func_start MOD57_021D7AF4
|
|
MOD57_021D7AF4: ; 0x021D7AF4
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
cmp r0, #0xa
|
|
beq _021D7B02
|
|
cmp r0, #0xb
|
|
beq _021D7B12
|
|
b _021D7B22
|
|
_021D7B02:
|
|
mov r0, #0x33
|
|
mov r1, #7
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7B30
|
|
_021D7B12:
|
|
mov r0, #0x33
|
|
mov r1, #8
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
b _021D7B30
|
|
_021D7B22:
|
|
mov r0, #0x33
|
|
mov r1, #9
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r4, r0, #0
|
|
_021D7B30:
|
|
ldr r0, [sp]
|
|
mov r1, #0x20
|
|
ldr r0, [r0, #0xc]
|
|
bl DC_FlushRange
|
|
ldr r0, [sp]
|
|
mov r1, #0
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, #0x20
|
|
bl GX_LoadBGPltt
|
|
ldr r0, [sp]
|
|
mov r1, #0
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, #0x20
|
|
bl GXS_LoadBGPltt
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
thumb_func_end MOD57_021D7AF4
|
|
|
|
thumb_func_start MOD57_021D7B5C
|
|
MOD57_021D7B5C: ; 0x021D7B5C
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #4
|
|
add r4, r0, #0
|
|
mov r0, #0x33
|
|
mov r1, #0x29
|
|
add r2, sp, #0
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r6, r0, #0
|
|
ldr r0, [sp]
|
|
lsl r4, r4, #5
|
|
ldr r5, [r0, #0xc]
|
|
mov r1, #0x20
|
|
add r0, r5, r4
|
|
bl DC_FlushRange
|
|
add r0, r5, r4
|
|
mov r1, #0x80
|
|
mov r2, #0x20
|
|
bl GXS_LoadBGPltt
|
|
add r0, r6, #0
|
|
bl FreeToHeap
|
|
add sp, #4
|
|
pop {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D7B5C
|
|
|
|
thumb_func_start MOD57_021D7B94
|
|
MOD57_021D7B94: ; 0x021D7B94
|
|
push {r4, r5, lr}
|
|
sub sp, #0x9c
|
|
ldr r2, _021D7C84 ; =0x04000304
|
|
add r4, r0, #0
|
|
ldrh r1, [r2]
|
|
ldr r0, _021D7C88 ; =0xFFFF7FFF
|
|
ldr r5, _021D7C8C ; =0x021D9764
|
|
and r0, r1
|
|
strh r0, [r2]
|
|
add r3, sp, #0x8c
|
|
add r2, r3, #0
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
bl FUN_02016BBC
|
|
ldr r5, _021D7C90 ; =0x021D9774
|
|
add r3, sp, #0x70
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #7
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #2
|
|
bl FUN_02016C18
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl FUN_02018744
|
|
ldr r5, _021D7C94 ; =0x021D9790
|
|
add r3, sp, #0x54
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #5
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
add r0, r4, #0
|
|
mov r1, #5
|
|
bl FUN_02018744
|
|
ldr r5, _021D7C98 ; =0x021D97C8
|
|
add r3, sp, #0x38
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #6
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #1
|
|
bl FUN_02016C18
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
bl FUN_02018744
|
|
ldr r5, _021D7C9C ; =0x021D97E4
|
|
add r3, sp, #0x1c
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #2
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl FUN_02018744
|
|
ldr r5, _021D7CA0 ; =0x021D97AC
|
|
add r3, sp, #0
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #3
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #1
|
|
bl FUN_02016C18
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl FUN_02018744
|
|
add sp, #0x9c
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_021D7C84: .word 0x04000304
|
|
_021D7C88: .word 0xFFFF7FFF
|
|
_021D7C8C: .word 0x021D9764
|
|
_021D7C90: .word 0x021D9774
|
|
_021D7C94: .word 0x021D9790
|
|
_021D7C98: .word 0x021D97C8
|
|
_021D7C9C: .word 0x021D97E4
|
|
_021D7CA0: .word 0x021D97AC
|
|
thumb_func_end MOD57_021D7B94
|
|
|
|
thumb_func_start MOD57_021D7CA4
|
|
MOD57_021D7CA4: ; 0x021D7CA4
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
mov r0, #0x33
|
|
mov r1, #0
|
|
add r2, sp, #0x14
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r5, r0, #0
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, #2
|
|
ldr r0, [r0, #0xc]
|
|
lsl r1, r1, #8
|
|
bl DC_FlushRange
|
|
ldr r0, [sp, #0x14]
|
|
mov r2, #2
|
|
ldr r0, [r0, #0xc]
|
|
mov r1, #0
|
|
lsl r2, r2, #8
|
|
bl GXS_LoadBGPltt
|
|
add r0, r5, #0
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #3]
|
|
ldrb r1, [r1, #4]
|
|
lsl r1, r1, #0x1c
|
|
lsr r1, r1, #0x1f
|
|
bl MOD57_021D7A34
|
|
mov r0, #0x33
|
|
mov r1, #0xa
|
|
add r2, sp, #0x10
|
|
mov r3, #0x19
|
|
bl FUN_02006C08
|
|
add r5, r0, #0
|
|
ldr r0, [sp, #0x10]
|
|
mov r1, #2
|
|
ldr r0, [r0, #0xc]
|
|
lsl r1, r1, #8
|
|
bl DC_FlushRange
|
|
ldr r0, [sp, #0x10]
|
|
mov r2, #2
|
|
ldr r0, [r0, #0xc]
|
|
mov r1, #0
|
|
lsl r2, r2, #8
|
|
bl GX_LoadBGPltt
|
|
add r0, r5, #0
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
bl MOD57_021D7AF4
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, #5]
|
|
cmp r1, #0xff
|
|
bne _021D7D9C
|
|
mov r2, #0
|
|
mov r0, #0x33
|
|
mov r1, #0x1b
|
|
mov r3, #0x19
|
|
str r2, [sp]
|
|
bl FUN_02006C98
|
|
ldr r1, _021D7ECC ; =0x000030B8
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
bne _021D7D4C
|
|
bl ErrorHandling
|
|
_021D7D4C:
|
|
ldr r1, _021D7ECC ; =0x000030B8
|
|
ldr r0, [r4, r1]
|
|
add r1, r1, #4
|
|
add r1, r4, r1
|
|
bl FUN_020B0030
|
|
cmp r0, #0
|
|
bne _021D7D60
|
|
bl ErrorHandling
|
|
_021D7D60:
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldr r3, _021D7ED0 ; =0x000032FC
|
|
ldrb r0, [r0, #4]
|
|
lsl r0, r0, #0x1d
|
|
lsr r0, r0, #0x1f
|
|
bne _021D7D86
|
|
mov r0, #0x19
|
|
str r0, [sp]
|
|
mov r0, #0x33
|
|
mov r1, #0x23
|
|
mov r2, #0
|
|
add r3, r4, r3
|
|
bl FUN_02006BDC
|
|
ldr r1, _021D7ED4 ; =0x000032F8
|
|
str r0, [r4, r1]
|
|
b _021D7DF2
|
|
_021D7D86:
|
|
mov r0, #0x19
|
|
str r0, [sp]
|
|
mov r0, #0x33
|
|
mov r1, #0x24
|
|
mov r2, #0
|
|
add r3, r4, r3
|
|
bl FUN_02006BDC
|
|
ldr r1, _021D7ED4 ; =0x000032F8
|
|
str r0, [r4, r1]
|
|
b _021D7DF2
|
|
_021D7D9C:
|
|
lsl r3, r1, #2
|
|
ldr r1, _021D7ED8 ; =0x021D9888
|
|
mov r2, #0
|
|
ldr r1, [r1, r3]
|
|
mov r0, #0x33
|
|
mov r3, #0x19
|
|
str r2, [sp]
|
|
bl FUN_02006C98
|
|
ldr r1, _021D7ECC ; =0x000030B8
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
bne _021D7DBC
|
|
bl ErrorHandling
|
|
_021D7DBC:
|
|
ldr r1, _021D7ECC ; =0x000030B8
|
|
ldr r0, [r4, r1]
|
|
add r1, r1, #4
|
|
add r1, r4, r1
|
|
bl FUN_020B0030
|
|
cmp r0, #0
|
|
bne _021D7DD0
|
|
bl ErrorHandling
|
|
_021D7DD0:
|
|
ldr r3, _021D7ED0 ; =0x000032FC
|
|
mov r0, #0x19
|
|
str r0, [sp]
|
|
mov r0, #0x33
|
|
mov r1, #0x2a
|
|
mov r2, #0
|
|
add r3, r4, r3
|
|
bl FUN_02006BDC
|
|
ldr r1, _021D7ED4 ; =0x000032F8
|
|
str r0, [r4, r1]
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #5]
|
|
bl MOD57_021D7B5C
|
|
_021D7DF2:
|
|
add r0, r4, #0
|
|
bl MOD57_021D8690
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x17
|
|
mov r3, #6
|
|
bl FUN_0200687C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x1e
|
|
mov r3, #6
|
|
bl FUN_020068C8
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x18
|
|
mov r3, #5
|
|
bl FUN_0200687C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x20
|
|
mov r3, #5
|
|
bl FUN_020068C8
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r1, #0x19
|
|
str r1, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r3, #2
|
|
bl FUN_0200687C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x21
|
|
mov r3, #2
|
|
bl FUN_020068C8
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x1a
|
|
mov r3, #3
|
|
bl FUN_0200687C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x22
|
|
mov r3, #3
|
|
bl FUN_020068C8
|
|
add r0, r4, #0
|
|
add r0, #0xb4
|
|
ldr r0, [r0]
|
|
add r4, #0xb8
|
|
add r0, #0x68
|
|
add r1, r4, #0
|
|
bl MOD57_021D87DC
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021D7ECC: .word 0x000030B8
|
|
_021D7ED0: .word 0x000032FC
|
|
_021D7ED4: .word 0x000032F8
|
|
_021D7ED8: .word 0x021D9888
|
|
thumb_func_end MOD57_021D7CA4
|
|
|
|
thumb_func_start MOD57_021D7EDC
|
|
MOD57_021D7EDC: ; 0x021D7EDC
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0x1f
|
|
mov r1, #0
|
|
bl FUN_0201E6E4
|
|
mov r0, #0x13
|
|
mov r1, #0
|
|
bl FUN_0201E74C
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #5
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end MOD57_021D7EDC
|
|
|
|
thumb_func_start MOD57_021D7F20
|
|
MOD57_021D7F20: ; 0x021D7F20
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x20
|
|
ldr r2, _021D80DC ; =0x0000331A
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, r2]
|
|
mov r5, #0
|
|
cmp r0, #3
|
|
bls _021D7F32
|
|
b _021D8092
|
|
_021D7F32:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021D7F3E: ; jump table
|
|
.short _021D7F46 - _021D7F3E - 2 ; case 0
|
|
.short _021D7F74 - _021D7F3E - 2 ; case 1
|
|
.short _021D7FB0 - _021D7F3E - 2 ; case 2
|
|
.short _021D804C - _021D7F3E - 2 ; case 3
|
|
_021D7F46:
|
|
mov r0, #8
|
|
sub r2, #0x36
|
|
str r0, [r4, r2]
|
|
ldr r1, _021D80E0 ; =0x000030C8
|
|
lsl r2, r0, #9
|
|
str r2, [r4, r1]
|
|
add r0, r1, #4
|
|
str r2, [r4, r0]
|
|
ldr r0, [r4, r1]
|
|
add r0, #0x80
|
|
str r0, [r4, r1]
|
|
add r0, r1, #4
|
|
ldr r2, [r4, r0]
|
|
add r2, #0x80
|
|
str r2, [r4, r0]
|
|
ldr r0, _021D80E4 ; =0x00000696
|
|
bl FUN_020054C8
|
|
ldr r0, _021D80DC ; =0x0000331A
|
|
ldrb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, r0]
|
|
b _021D8092
|
|
_021D7F74:
|
|
add r0, r2, #0
|
|
sub r0, #0x36
|
|
ldr r3, [r4, r0]
|
|
ldr r1, _021D80E0 ; =0x000030C8
|
|
mov r0, #0xc
|
|
mov r7, #2
|
|
sub r0, r0, r3
|
|
add r3, r7, #0
|
|
ldr r6, [r4, r1]
|
|
lsl r3, r0
|
|
sub r0, r6, r3
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
bgt _021D7F9C
|
|
mov r0, #0x24
|
|
str r0, [r4, r1]
|
|
ldrb r0, [r4, r2]
|
|
add r0, r0, #1
|
|
strb r0, [r4, r2]
|
|
_021D7F9C:
|
|
ldr r0, _021D80E8 ; =0x000032E4
|
|
ldr r1, [r4, r0]
|
|
sub r1, r1, #1
|
|
str r1, [r4, r0]
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #1
|
|
bgt _021D8092
|
|
mov r1, #1
|
|
str r1, [r4, r0]
|
|
b _021D8092
|
|
_021D7FB0:
|
|
mov r0, #0xc3
|
|
lsl r0, r0, #6
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0
|
|
bne _021D8006
|
|
mov r1, #1
|
|
str r1, [r4, r0]
|
|
str r5, [sp]
|
|
str r5, [sp, #4]
|
|
str r5, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x1f
|
|
mov r3, #6
|
|
bl FUN_020068C8
|
|
add r0, r4, #4
|
|
add r1, r5, #0
|
|
mov r2, #6
|
|
bl MOD57_021D8FB8
|
|
add r0, r4, #0
|
|
bl MOD57_021D86E8
|
|
ldr r0, [r4]
|
|
mov r1, #7
|
|
bl FUN_02018744
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
add r0, r4, #4
|
|
bl MOD57_021D8CF8
|
|
add r2, r4, #0
|
|
ldr r0, [r4]
|
|
mov r1, #7
|
|
add r2, #0xb8
|
|
bl MOD57_021D8830
|
|
b _021D8042
|
|
_021D8006:
|
|
str r5, [r4, r0]
|
|
str r5, [sp]
|
|
str r5, [sp, #4]
|
|
str r5, [sp, #8]
|
|
mov r0, #0x19
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
mov r0, #0x33
|
|
mov r1, #0x1e
|
|
mov r3, #6
|
|
bl FUN_020068C8
|
|
add r0, r4, #4
|
|
mov r1, #7
|
|
mov r2, #0xa
|
|
bl MOD57_021D8FB8
|
|
ldr r0, [r4]
|
|
mov r1, #7
|
|
bl FUN_02018744
|
|
add r0, r4, #0
|
|
bl MOD57_021D8690
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
add r0, r4, #4
|
|
bl MOD57_021D89F0
|
|
_021D8042:
|
|
ldr r0, _021D80DC ; =0x0000331A
|
|
ldrb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, r0]
|
|
b _021D8092
|
|
_021D804C:
|
|
add r0, r2, #0
|
|
sub r0, #0x36
|
|
ldr r0, [r4, r0]
|
|
add r1, r0, #1
|
|
add r0, r2, #0
|
|
sub r0, #0x36
|
|
str r1, [r4, r0]
|
|
add r0, r2, #0
|
|
sub r0, #0x36
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #8
|
|
ble _021D806A
|
|
mov r0, #8
|
|
sub r2, #0x36
|
|
str r0, [r4, r2]
|
|
_021D806A:
|
|
ldr r2, _021D80E8 ; =0x000032E4
|
|
ldr r3, _021D80E0 ; =0x000030C8
|
|
ldr r6, [r4, r2]
|
|
mov r2, #0xc
|
|
mov r0, #2
|
|
sub r2, r2, r6
|
|
add r6, r0, #0
|
|
ldr r1, [r4, r3]
|
|
lsl r6, r2
|
|
add r1, r1, r6
|
|
str r1, [r4, r3]
|
|
ldr r2, [r4, r3]
|
|
lsl r1, r0, #0xb
|
|
cmp r2, r1
|
|
blt _021D8092
|
|
str r1, [r4, r3]
|
|
str r1, [r4, r3]
|
|
add r0, r3, #4
|
|
str r1, [r4, r0]
|
|
mov r5, #1
|
|
_021D8092:
|
|
ldr r0, _021D80E0 ; =0x000030C8
|
|
ldr r0, [r4, r0]
|
|
bl FX_Inv
|
|
add r6, r0, #0
|
|
ldr r0, _021D80EC ; =0x000030CC
|
|
ldr r0, [r4, r0]
|
|
bl FX_Inv
|
|
mov r1, #0
|
|
str r6, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
str r1, [sp, #0x18]
|
|
str r0, [sp, #0x1c]
|
|
bl OS_WaitVBlankIntr
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D80F0 ; =0x04001020
|
|
add r1, sp, #0x10
|
|
mov r2, #0x80
|
|
mov r3, #0x60
|
|
bl G2x_SetBGyAffine_
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D80F4 ; =0x04001030
|
|
add r1, sp, #0x10
|
|
mov r2, #0x80
|
|
mov r3, #0x60
|
|
bl G2x_SetBGyAffine_
|
|
add r0, r5, #0
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D80DC: .word 0x0000331A
|
|
_021D80E0: .word 0x000030C8
|
|
_021D80E4: .word 0x00000696
|
|
_021D80E8: .word 0x000032E4
|
|
_021D80EC: .word 0x000030CC
|
|
_021D80F0: .word 0x04001020
|
|
_021D80F4: .word 0x04001030
|
|
thumb_func_end MOD57_021D7F20
|
|
|
|
thumb_func_start MOD57_021D80F8
|
|
MOD57_021D80F8: ; 0x021D80F8
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
ldr r0, _021D81E4 ; =0x0000331A
|
|
ldrb r1, [r4, r0]
|
|
cmp r1, #3
|
|
bhi _021D81AE
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021D8112: ; jump table
|
|
.short _021D811A - _021D8112 - 2 ; case 0
|
|
.short _021D8142 - _021D8112 - 2 ; case 1
|
|
.short _021D8170 - _021D8112 - 2 ; case 2
|
|
.short _021D81A8 - _021D8112 - 2 ; case 3
|
|
_021D811A:
|
|
mov r2, #0
|
|
sub r1, r0, #1
|
|
strb r2, [r4, r1]
|
|
sub r1, r0, #2
|
|
ldrb r1, [r4, r1]
|
|
cmp r1, #0
|
|
bne _021D8134
|
|
mov r2, #1
|
|
ldr r1, _021D81E8 ; =0x000030D0
|
|
lsl r2, r2, #0xc
|
|
str r2, [r4, r1]
|
|
mov r1, #1
|
|
b _021D8136
|
|
_021D8134:
|
|
mov r1, #2
|
|
_021D8136:
|
|
strb r1, [r4, r0]
|
|
ldr r0, _021D81EC ; =0x00003318
|
|
ldrb r0, [r4, r0]
|
|
bl MOD57_021D8894
|
|
b _021D81AE
|
|
_021D8142:
|
|
sub r1, r0, #1
|
|
ldrb r2, [r4, r1]
|
|
add r1, r2, #0
|
|
add r3, r1, #1
|
|
sub r1, r0, #1
|
|
strb r3, [r4, r1]
|
|
ldr r3, _021D81E8 ; =0x000030D0
|
|
lsl r5, r2, #2
|
|
ldr r2, _021D81F0 ; =0x021D9850
|
|
ldr r1, [r4, r3]
|
|
ldr r2, [r2, r5]
|
|
sub r1, r1, r2
|
|
str r1, [r4, r3]
|
|
sub r1, r0, #1
|
|
ldrb r1, [r4, r1]
|
|
cmp r1, #0xe
|
|
bne _021D81AE
|
|
mov r2, #1
|
|
sub r1, r0, #2
|
|
strb r2, [r4, r1]
|
|
mov r1, #3
|
|
strb r1, [r4, r0]
|
|
b _021D81AE
|
|
_021D8170:
|
|
sub r1, r0, #1
|
|
ldrb r2, [r4, r1]
|
|
ldr r5, _021D81E8 ; =0x000030D0
|
|
add r1, r2, #0
|
|
add r3, r1, #1
|
|
sub r1, r0, #1
|
|
strb r3, [r4, r1]
|
|
mov r3, #0xd
|
|
sub r2, r3, r2
|
|
lsl r3, r2, #2
|
|
ldr r2, _021D81F0 ; =0x021D9850
|
|
ldr r1, [r4, r5]
|
|
ldr r2, [r2, r3]
|
|
add r1, r1, r2
|
|
str r1, [r4, r5]
|
|
sub r1, r0, #1
|
|
ldrb r1, [r4, r1]
|
|
cmp r1, #0xe
|
|
bne _021D81AE
|
|
mov r2, #0
|
|
sub r1, r0, #2
|
|
strb r2, [r4, r1]
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
str r1, [r4, r5]
|
|
mov r1, #3
|
|
strb r1, [r4, r0]
|
|
b _021D81AE
|
|
_021D81A8:
|
|
add sp, #0x18
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_021D81AE:
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
bl FX_Inv
|
|
add r5, r0, #0
|
|
ldr r0, _021D81E8 ; =0x000030D0
|
|
ldr r0, [r4, r0]
|
|
bl FX_Inv
|
|
mov r1, #0
|
|
str r5, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
bl OS_WaitVBlankIntr
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r0, _021D81F4 ; =0x04000030
|
|
add r1, sp, #8
|
|
mov r2, #0x80
|
|
str r3, [sp, #4]
|
|
bl G2x_SetBGyAffine_
|
|
mov r0, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D81E4: .word 0x0000331A
|
|
_021D81E8: .word 0x000030D0
|
|
_021D81EC: .word 0x00003318
|
|
_021D81F0: .word 0x021D9850
|
|
_021D81F4: .word 0x04000030
|
|
thumb_func_end MOD57_021D80F8
|
|
|
|
thumb_func_start MOD57_021D81F8
|
|
MOD57_021D81F8: ; 0x021D81F8
|
|
push {r4, r5, r6, lr}
|
|
mov r6, #0
|
|
add r5, r0, #0
|
|
ldr r0, _021D82A8 ; =0x000030D4
|
|
sub r1, r6, #1
|
|
str r1, [r5, r0]
|
|
ldr r1, _021D82AC ; =0x021C48F8
|
|
add r4, r6, #0
|
|
ldrh r1, [r1, #0x20]
|
|
cmp r1, #0
|
|
beq _021D8214
|
|
mov r1, #1
|
|
sub r0, #0x10
|
|
str r1, [r5, r0]
|
|
_021D8214:
|
|
add r1, r5, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
ldr r2, _021D82B0 ; =0x021D9754
|
|
ldrb r1, [r1, #4]
|
|
ldr r0, [r5]
|
|
lsl r1, r1, #0x1f
|
|
lsr r1, r1, #0x1f
|
|
lsl r3, r1, #3
|
|
ldr r1, _021D82B4 ; =0x00003318
|
|
add r2, r2, r3
|
|
ldrb r1, [r5, r1]
|
|
lsl r1, r1, #2
|
|
ldr r1, [r1, r2]
|
|
bl MOD57_021D890C
|
|
ldr r1, _021D82A8 ; =0x000030D4
|
|
str r0, [r5, r1]
|
|
mov r0, #0
|
|
ldr r2, [r5, r1]
|
|
mvn r0, r0
|
|
cmp r2, r0
|
|
beq _021D8248
|
|
mov r6, #1
|
|
add r4, r6, #0
|
|
b _021D8288
|
|
_021D8248:
|
|
ldr r0, _021D82AC ; =0x021C48F8
|
|
ldrh r0, [r0, #0x22]
|
|
cmp r0, #0
|
|
beq _021D8282
|
|
add r1, r5, #0
|
|
add r1, #0xb4
|
|
ldr r1, [r1]
|
|
ldr r2, _021D82B0 ; =0x021D9754
|
|
ldrb r1, [r1, #4]
|
|
ldr r0, [r5]
|
|
lsl r1, r1, #0x1f
|
|
lsr r1, r1, #0x1f
|
|
lsl r3, r1, #3
|
|
ldr r1, _021D82B4 ; =0x00003318
|
|
add r2, r2, r3
|
|
ldrb r1, [r5, r1]
|
|
lsl r1, r1, #2
|
|
ldr r1, [r1, r2]
|
|
bl MOD57_021D8954
|
|
ldr r1, _021D82A8 ; =0x000030D4
|
|
str r0, [r5, r1]
|
|
sub r1, #0x10
|
|
ldr r0, [r5, r1]
|
|
cmp r0, #0
|
|
beq _021D8288
|
|
mov r6, #1
|
|
mov r4, #2
|
|
b _021D8288
|
|
_021D8282:
|
|
mov r0, #0
|
|
sub r1, #0x10
|
|
str r0, [r5, r1]
|
|
_021D8288:
|
|
cmp r6, #0
|
|
bne _021D82A2
|
|
ldr r0, _021D82B8 ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #1
|
|
tst r0, r1
|
|
beq _021D829A
|
|
mov r4, #3
|
|
b _021D82A2
|
|
_021D829A:
|
|
mov r0, #2
|
|
tst r0, r1
|
|
beq _021D82A2
|
|
mov r4, #4
|
|
_021D82A2:
|
|
add r0, r4, #0
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021D82A8: .word 0x000030D4
|
|
_021D82AC: .word 0x021C48F8
|
|
_021D82B0: .word 0x021D9754
|
|
_021D82B4: .word 0x00003318
|
|
_021D82B8: .word 0x021C48B8
|
|
thumb_func_end MOD57_021D81F8
|
|
|
|
thumb_func_start MOD57_021D82BC
|
|
MOD57_021D82BC: ; 0x021D82BC
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
ldr r0, _021D83BC ; =0x021C48F8
|
|
ldr r6, _021D83C0 ; =0x0000FFFF
|
|
ldrh r3, [r0, #0x1c]
|
|
mov r4, #0
|
|
cmp r3, r6
|
|
beq _021D83AC
|
|
ldrh r0, [r0, #0x1e]
|
|
cmp r0, r6
|
|
beq _021D83AC
|
|
ldr r1, _021D83C4 ; =0x000030DC
|
|
ldr r2, [r5, r1]
|
|
cmp r2, r6
|
|
beq _021D83AC
|
|
add r0, r1, #4
|
|
ldr r0, [r5, r0]
|
|
cmp r0, r6
|
|
beq _021D83AC
|
|
sub r1, #8
|
|
ldr r1, [r5, r1]
|
|
sub r0, r4, #1
|
|
cmp r1, r0
|
|
beq _021D83AC
|
|
cmp r1, #0
|
|
beq _021D83AC
|
|
add r0, r5, #0
|
|
add r0, #0xb4
|
|
sub r1, r1, #1
|
|
ldr r0, [r0]
|
|
lsl r1, r1, #2
|
|
add r0, r0, r1
|
|
ldr r0, [r0, #0x48]
|
|
lsl r0, r0, #0x1f
|
|
asr r0, r0, #0x1f
|
|
beq _021D83AC
|
|
cmp r2, r3
|
|
ble _021D830E
|
|
sub r2, r2, r3
|
|
sub r1, r4, #1
|
|
b _021D8312
|
|
_021D830E:
|
|
sub r2, r3, r2
|
|
mov r1, #1
|
|
_021D8312:
|
|
ldr r0, _021D83C8 ; =0x00003302
|
|
cmp r2, #3
|
|
strb r1, [r5, r0]
|
|
blt _021D8358
|
|
cmp r2, #0x28
|
|
bgt _021D8358
|
|
ldr r0, _021D83BC ; =0x021C48F8
|
|
ldrh r1, [r0, #0x1e]
|
|
ldr r0, _021D83CC ; =0x000030E0
|
|
ldr r0, [r5, r0]
|
|
cmp r0, r1
|
|
ble _021D8332
|
|
sub r2, r0, r1
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
b _021D8336
|
|
_021D8332:
|
|
sub r2, r1, r0
|
|
mov r1, #1
|
|
_021D8336:
|
|
ldr r0, _021D83D0 ; =0x00003303
|
|
cmp r2, #0x28
|
|
strb r1, [r5, r0]
|
|
bgt _021D834C
|
|
mov r0, #0x33
|
|
lsl r0, r0, #8
|
|
add r0, r5, r0
|
|
mov r4, #1
|
|
bl MOD57_021D875C
|
|
b _021D8398
|
|
_021D834C:
|
|
mov r0, #0x33
|
|
lsl r0, r0, #8
|
|
add r0, r5, r0
|
|
bl MOD57_021D8744
|
|
b _021D8398
|
|
_021D8358:
|
|
cmp r2, #0x28
|
|
bgt _021D8398
|
|
ldr r0, _021D83BC ; =0x021C48F8
|
|
ldrh r1, [r0, #0x1e]
|
|
ldr r0, _021D83CC ; =0x000030E0
|
|
ldr r0, [r5, r0]
|
|
cmp r0, r1
|
|
ble _021D8370
|
|
sub r2, r0, r1
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
b _021D8374
|
|
_021D8370:
|
|
sub r2, r1, r0
|
|
mov r1, #1
|
|
_021D8374:
|
|
ldr r0, _021D83D0 ; =0x00003303
|
|
cmp r2, #3
|
|
strb r1, [r5, r0]
|
|
blt _021D838E
|
|
cmp r2, #0x28
|
|
bgt _021D838E
|
|
mov r0, #0x33
|
|
lsl r0, r0, #8
|
|
add r0, r5, r0
|
|
mov r4, #1
|
|
bl MOD57_021D875C
|
|
b _021D8398
|
|
_021D838E:
|
|
mov r0, #0x33
|
|
lsl r0, r0, #8
|
|
add r0, r5, r0
|
|
bl MOD57_021D8744
|
|
_021D8398:
|
|
cmp r4, #0
|
|
beq _021D83AC
|
|
ldr r1, _021D83D4 ; =0x000030D4
|
|
add r0, r5, #0
|
|
ldr r1, [r5, r1]
|
|
sub r1, r1, #1
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl MOD57_021D84AC
|
|
_021D83AC:
|
|
ldr r1, _021D83BC ; =0x021C48F8
|
|
ldr r0, _021D83C4 ; =0x000030DC
|
|
ldrh r2, [r1, #0x1c]
|
|
str r2, [r5, r0]
|
|
ldrh r1, [r1, #0x1e]
|
|
add r0, r0, #4
|
|
str r1, [r5, r0]
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D83BC: .word 0x021C48F8
|
|
_021D83C0: .word 0x0000FFFF
|
|
_021D83C4: .word 0x000030DC
|
|
_021D83C8: .word 0x00003302
|
|
_021D83CC: .word 0x000030E0
|
|
_021D83D0: .word 0x00003303
|
|
_021D83D4: .word 0x000030D4
|
|
thumb_func_end MOD57_021D82BC
|
|
|
|
thumb_func_start MOD57_021D83D8
|
|
MOD57_021D83D8: ; 0x021D83D8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
str r0, [sp]
|
|
add r4, r1, #0
|
|
ldr r0, [r0]
|
|
mov r1, #2
|
|
bl FUN_0201886C
|
|
add r7, r0, #0
|
|
lsl r0, r4, #2
|
|
add r0, #0x80
|
|
lsl r0, r0, #0x10
|
|
mov r2, #0
|
|
lsr r3, r0, #0x10
|
|
_021D83F2:
|
|
lsl r0, r2, #5
|
|
add r4, r3, r0
|
|
add r0, r2, #0
|
|
add r0, #0x13
|
|
lsl r0, r0, #6
|
|
mov r1, #0
|
|
add r5, r7, r0
|
|
_021D8400:
|
|
lsl r6, r1, #1
|
|
add r0, r1, r4
|
|
add r6, r5, r6
|
|
strh r0, [r6, #0x1c]
|
|
add r0, r1, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r1, r0, #0x18
|
|
cmp r1, #4
|
|
blo _021D8400
|
|
add r0, r2, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r2, r0, #0x18
|
|
cmp r2, #4
|
|
blo _021D83F2
|
|
ldr r0, [sp]
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
bl FUN_02017CD0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD57_021D83D8
|
|
|
|
thumb_func_start MOD57_021D8428
|
|
MOD57_021D8428: ; 0x021D8428
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
lsr r5, r1, #0x1f
|
|
lsl r4, r1, #0x1e
|
|
sub r4, r4, r5
|
|
mov r2, #0x1e
|
|
ror r4, r2
|
|
add r2, r5, r4
|
|
lsl r2, r2, #0x18
|
|
lsr r4, r2, #0x18
|
|
lsl r1, r1, #0x16
|
|
mov r2, #7
|
|
add r5, r4, #0
|
|
lsr r1, r1, #0x18
|
|
mul r5, r2
|
|
mov r6, #3
|
|
add r4, r6, r5
|
|
lsl r4, r4, #0x18
|
|
mov r3, #4
|
|
mul r2, r1
|
|
add r1, r3, r2
|
|
lsl r1, r1, #0x18
|
|
lsr r5, r1, #0x18
|
|
ldr r0, [r0]
|
|
add r1, r6, #0
|
|
lsr r4, r4, #0x18
|
|
bl FUN_0201886C
|
|
mov r2, #0
|
|
add r3, r0, r4
|
|
add r0, r2, #0
|
|
_021D8464:
|
|
add r6, r2, r5
|
|
lsl r4, r2, #4
|
|
lsl r6, r6, #5
|
|
add r1, r0, #0
|
|
add r4, #0xba
|
|
add r6, r3, r6
|
|
_021D8470:
|
|
add r7, r1, r4
|
|
strb r7, [r6, r1]
|
|
add r1, r1, #1
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
cmp r1, #5
|
|
blo _021D8470
|
|
add r1, r2, #1
|
|
lsl r1, r1, #0x18
|
|
lsr r2, r1, #0x18
|
|
cmp r2, #5
|
|
blo _021D8464
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D8428
|
|
|
|
thumb_func_start MOD57_021D848C
|
|
MOD57_021D848C: ; 0x021D848C
|
|
push {r3, lr}
|
|
bl FUN_0201C30C
|
|
bl FUN_02009F80
|
|
ldr r3, _021D84A4 ; =0x027E0000
|
|
ldr r1, _021D84A8 ; =0x00003FF8
|
|
mov r0, #1
|
|
ldr r2, [r3, r1]
|
|
orr r0, r2
|
|
str r0, [r3, r1]
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
_021D84A4: .word 0x027E0000
|
|
_021D84A8: .word 0x00003FF8
|
|
thumb_func_end MOD57_021D848C
|
|
|
|
thumb_func_start MOD57_021D84AC
|
|
MOD57_021D84AC: ; 0x021D84AC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r0, #0xb4
|
|
add r4, r1, #0
|
|
ldr r0, [r0]
|
|
lsl r6, r4, #2
|
|
add r0, r0, r6
|
|
ldr r0, [r0, #0x48]
|
|
asr r0, r0, #1
|
|
add r1, r0, #1
|
|
str r1, [sp]
|
|
cmp r1, #0xc8
|
|
bge _021D8578
|
|
bl MOD57_021D870C
|
|
add r7, r0, #0
|
|
ldr r0, _021D857C ; =0x00003310
|
|
ldr r2, _021D8580 ; =0x021D9734
|
|
add r1, r5, r0
|
|
ldrb r0, [r1, r4]
|
|
ldrb r2, [r2, r7]
|
|
add r0, r0, #1
|
|
strb r0, [r1, r4]
|
|
ldrb r0, [r1, r4]
|
|
cmp r0, r2
|
|
blo _021D8578
|
|
mov r0, #0
|
|
strb r0, [r1, r4]
|
|
add r0, r5, #0
|
|
add r0, #0xb4
|
|
ldr r2, [r0]
|
|
mov r1, #1
|
|
add r2, #0x48
|
|
ldr r0, [r2, r6]
|
|
and r1, r0
|
|
asr r0, r0, #1
|
|
add r0, r0, #1
|
|
lsl r0, r0, #1
|
|
orr r0, r1
|
|
str r0, [r2, r6]
|
|
ldr r0, [sp]
|
|
bl MOD57_021D870C
|
|
add r6, r0, #0
|
|
cmp r7, r6
|
|
bls _021D850C
|
|
bl ErrorHandling
|
|
_021D850C:
|
|
cmp r7, r6
|
|
bhs _021D8578
|
|
cmp r6, #4
|
|
bhi _021D8536
|
|
cmp r6, #4
|
|
ldr r0, _021D8584 ; =0x000030E4
|
|
bne _021D8526
|
|
add r0, r5, r0
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl MOD57_021D951C
|
|
b _021D8536
|
|
_021D8526:
|
|
mov r2, #3
|
|
sub r2, r2, r6
|
|
lsl r2, r2, #0x18
|
|
add r0, r5, r0
|
|
add r1, r4, #0
|
|
lsr r2, r2, #0x18
|
|
bl MOD57_021D951C
|
|
_021D8536:
|
|
cmp r6, #3
|
|
bne _021D854E
|
|
add r4, #8
|
|
lsl r0, r4, #2
|
|
add r1, r5, r0
|
|
mov r0, #0xc9
|
|
lsl r0, r0, #6
|
|
ldr r0, [r1, r0]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D854E:
|
|
cmp r6, #4
|
|
bne _021D8578
|
|
add r0, r4, #0
|
|
add r0, #8
|
|
lsl r0, r0, #2
|
|
add r1, r5, r0
|
|
mov r0, #0xc9
|
|
lsl r0, r0, #6
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
add r4, #0x10
|
|
lsl r0, r4, #2
|
|
add r1, r5, r0
|
|
mov r0, #0xc9
|
|
lsl r0, r0, #6
|
|
ldr r0, [r1, r0]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
_021D8578:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D857C: .word 0x00003310
|
|
_021D8580: .word 0x021D9734
|
|
_021D8584: .word 0x000030E4
|
|
thumb_func_end MOD57_021D84AC
|
|
|
|
thumb_func_start MOD57_021D8588
|
|
MOD57_021D8588: ; 0x021D8588
|
|
push {r4, lr}
|
|
sub sp, #0x18
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
bl FX_Inv
|
|
add r4, r0, #0
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
bl FX_Inv
|
|
mov r1, #0
|
|
str r4, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
bl OS_WaitVBlankIntr
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D85E8 ; =0x04001020
|
|
add r1, sp, #8
|
|
mov r2, #0x80
|
|
mov r3, #0x60
|
|
bl G2x_SetBGyAffine_
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D85EC ; =0x04001030
|
|
add r1, sp, #8
|
|
mov r2, #0x80
|
|
mov r3, #0x60
|
|
bl G2x_SetBGyAffine_
|
|
bl OS_WaitVBlankIntr
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r0, _021D85F0 ; =0x04000030
|
|
add r1, sp, #8
|
|
mov r2, #0x80
|
|
str r3, [sp, #4]
|
|
bl G2x_SetBGyAffine_
|
|
add sp, #0x18
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D85E8: .word 0x04001020
|
|
_021D85EC: .word 0x04001030
|
|
_021D85F0: .word 0x04000030
|
|
thumb_func_end MOD57_021D8588
|
|
|
|
thumb_func_start MOD57_021D85F4
|
|
MOD57_021D85F4: ; 0x021D85F4
|
|
push {r4, lr}
|
|
ldr r1, _021D862C ; =0x0000331D
|
|
add r4, r0, #0
|
|
ldrb r1, [r4, r1]
|
|
cmp r1, #1
|
|
bne _021D8614
|
|
ldr r1, _021D8630 ; =0x021D973C
|
|
ldr r1, [r1, #0x10]
|
|
bl MOD57_021D8634
|
|
cmp r0, #0
|
|
beq _021D862A
|
|
ldr r0, _021D862C ; =0x0000331D
|
|
mov r1, #0
|
|
strb r1, [r4, r0]
|
|
pop {r4, pc}
|
|
_021D8614:
|
|
cmp r1, #2
|
|
bne _021D862A
|
|
ldr r1, _021D8630 ; =0x021D973C
|
|
ldr r1, [r1, #0x14]
|
|
bl MOD57_021D8634
|
|
cmp r0, #0
|
|
beq _021D862A
|
|
ldr r0, _021D862C ; =0x0000331D
|
|
mov r1, #0
|
|
strb r1, [r4, r0]
|
|
_021D862A:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D862C: .word 0x0000331D
|
|
_021D8630: .word 0x021D973C
|
|
thumb_func_end MOD57_021D85F4
|
|
|
|
thumb_func_start MOD57_021D8634
|
|
MOD57_021D8634: ; 0x021D8634
|
|
push {r4, lr}
|
|
ldr r2, _021D8688 ; =0x0000331C
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, r2]
|
|
lsl r0, r0, #1
|
|
ldrb r3, [r1, r0]
|
|
cmp r3, #0
|
|
bne _021D8650
|
|
mov r1, #0
|
|
sub r0, r2, #1
|
|
strb r1, [r4, r0]
|
|
strb r1, [r4, r2]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_021D8650:
|
|
sub r0, r2, #1
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, r3
|
|
blo _021D8664
|
|
mov r3, #0
|
|
sub r0, r2, #1
|
|
strb r3, [r4, r0]
|
|
ldrb r0, [r4, r2]
|
|
add r0, r0, #1
|
|
strb r0, [r4, r2]
|
|
_021D8664:
|
|
ldr r0, _021D8688 ; =0x0000331C
|
|
ldrb r2, [r4, r0]
|
|
sub r0, r0, #1
|
|
ldrb r0, [r4, r0]
|
|
lsl r2, r2, #1
|
|
add r2, r2, #1
|
|
ldrb r1, [r1, r2]
|
|
cmp r0, #0
|
|
bne _021D867C
|
|
add r0, r4, #0
|
|
bl MOD57_021D83D8
|
|
_021D867C:
|
|
ldr r0, _021D868C ; =0x0000331B
|
|
ldrb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, r0]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D8688: .word 0x0000331C
|
|
_021D868C: .word 0x0000331B
|
|
thumb_func_end MOD57_021D8634
|
|
|
|
thumb_func_start MOD57_021D8690
|
|
MOD57_021D8690: ; 0x021D8690
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, _021D86E0 ; =0x000032FC
|
|
mov r1, #7
|
|
ldr r0, [r5, r0]
|
|
ldr r4, [r0, #8]
|
|
ldr r0, _021D86E4 ; =0x000030BC
|
|
ldr r3, [r5, r0]
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r2, [r3, #0x14]
|
|
ldr r0, [r5]
|
|
ldr r3, [r3, #0x10]
|
|
bl FUN_02017E14
|
|
ldr r0, [r5]
|
|
mov r1, #7
|
|
bl FUN_0201886C
|
|
cmp r0, #0
|
|
beq _021D86CA
|
|
ldr r2, _021D86E0 ; =0x000032FC
|
|
ldr r0, [r5]
|
|
ldr r2, [r5, r2]
|
|
mov r1, #7
|
|
add r2, #0xc
|
|
add r3, r4, #0
|
|
bl FUN_02017DFC
|
|
_021D86CA:
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r2, _021D86E0 ; =0x000032FC
|
|
ldr r0, [r5]
|
|
ldr r2, [r5, r2]
|
|
mov r1, #7
|
|
add r2, #0xc
|
|
add r3, r4, #0
|
|
bl FUN_02017CE8
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D86E0: .word 0x000032FC
|
|
_021D86E4: .word 0x000030BC
|
|
thumb_func_end MOD57_021D8690
|
|
|
|
thumb_func_start MOD57_021D86E8
|
|
MOD57_021D86E8: ; 0x021D86E8
|
|
push {r3, lr}
|
|
sub sp, #0x10
|
|
mov r1, #6
|
|
str r1, [sp]
|
|
str r1, [sp, #4]
|
|
mov r1, #9
|
|
str r1, [sp, #8]
|
|
mov r1, #0x10
|
|
str r1, [sp, #0xc]
|
|
ldr r0, [r0]
|
|
mov r1, #7
|
|
mov r2, #0
|
|
mov r3, #0x14
|
|
bl FUN_02018540
|
|
add sp, #0x10
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D86E8
|
|
|
|
thumb_func_start MOD57_021D870C
|
|
MOD57_021D870C: ; 0x021D870C
|
|
push {r3, lr}
|
|
cmp r0, #0
|
|
blt _021D871A
|
|
cmp r0, #0x64
|
|
bge _021D871A
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
_021D871A:
|
|
cmp r0, #0x8c
|
|
bge _021D8722
|
|
mov r0, #1
|
|
pop {r3, pc}
|
|
_021D8722:
|
|
cmp r0, #0xaa
|
|
bge _021D872A
|
|
mov r0, #2
|
|
pop {r3, pc}
|
|
_021D872A:
|
|
cmp r0, #0xbe
|
|
bge _021D8732
|
|
mov r0, #3
|
|
pop {r3, pc}
|
|
_021D8732:
|
|
cmp r0, #0xc8
|
|
bge _021D873A
|
|
mov r0, #4
|
|
pop {r3, pc}
|
|
_021D873A:
|
|
bl ErrorHandling
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D870C
|
|
|
|
thumb_func_start MOD57_021D8744
|
|
MOD57_021D8744: ; 0x021D8744
|
|
mov r1, #0
|
|
strb r1, [r0, #2]
|
|
strb r1, [r0, #3]
|
|
bx lr
|
|
thumb_func_end MOD57_021D8744
|
|
|
|
thumb_func_start MOD57_021D874C
|
|
MOD57_021D874C: ; 0x021D874C
|
|
mov r1, #0
|
|
strb r1, [r0]
|
|
strb r1, [r0, #1]
|
|
strb r1, [r0, #2]
|
|
strb r1, [r0, #3]
|
|
strb r1, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D874C
|
|
|
|
thumb_func_start MOD57_021D875C
|
|
MOD57_021D875C: ; 0x021D875C
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
ldr r0, _021D87D4 ; =0x021D973C
|
|
ldr r1, [r0]
|
|
ldr r0, [r0, #4]
|
|
str r1, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D8782
|
|
mov r0, #1
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D8782
|
|
ldr r0, _021D87D8 ; =0x00000692
|
|
bl FUN_020054C8
|
|
_021D8782:
|
|
mov r0, #0
|
|
ldrsb r1, [r4, r0]
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
mul r0, r1
|
|
bmi _021D879A
|
|
mov r0, #1
|
|
ldrsb r1, [r4, r0]
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
mul r0, r1
|
|
bpl _021D87BC
|
|
_021D879A:
|
|
ldrb r0, [r4, #4]
|
|
add r0, r0, #1
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x1f
|
|
sub r1, r1, r2
|
|
mov r0, #0x1f
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
strb r0, [r4, #4]
|
|
ldrb r0, [r4, #4]
|
|
lsl r1, r0, #2
|
|
add r0, sp, #0
|
|
ldr r0, [r0, r1]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl FUN_020054C8
|
|
_021D87BC:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
strb r0, [r4]
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
strb r0, [r4, #1]
|
|
mov r0, #0
|
|
strb r0, [r4, #2]
|
|
strb r0, [r4, #3]
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
nop
|
|
_021D87D4: .word 0x021D973C
|
|
_021D87D8: .word 0x00000692
|
|
thumb_func_end MOD57_021D875C
|
|
|
|
thumb_func_start MOD57_021D87DC
|
|
MOD57_021D87DC: ; 0x021D87DC
|
|
push {r4, r5, r6, r7}
|
|
mov r2, #3
|
|
mov r4, #0
|
|
lsl r2, r2, #0xc
|
|
_021D87E4:
|
|
asr r3, r4, #2
|
|
lsr r3, r3, #0x1d
|
|
add r3, r4, r3
|
|
asr r3, r3, #3
|
|
lsr r6, r3, #0x1f
|
|
lsl r5, r3, #0x1d
|
|
sub r5, r5, r6
|
|
mov r3, #0x1d
|
|
ror r5, r3
|
|
add r3, r6, r5
|
|
asr r5, r4, #5
|
|
lsr r5, r5, #0x1a
|
|
lsl r3, r3, #0x18
|
|
add r5, r4, r5
|
|
lsr r3, r3, #0x18
|
|
asr r5, r5, #6
|
|
lsl r5, r5, #3
|
|
add r3, r0, r3
|
|
ldrb r3, [r5, r3]
|
|
lsr r7, r4, #0x1f
|
|
lsl r6, r4, #0x1d
|
|
sub r6, r6, r7
|
|
mov r5, #0x1d
|
|
ror r6, r5
|
|
add r5, r7, r6
|
|
lsl r5, r5, #0x18
|
|
add r6, r3, #0
|
|
lsr r5, r5, #0x18
|
|
asr r6, r5
|
|
mov r3, #1
|
|
and r3, r6
|
|
strb r3, [r1, r4]
|
|
add r4, r4, #1
|
|
cmp r4, r2
|
|
blt _021D87E4
|
|
pop {r4, r5, r6, r7}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D87DC
|
|
|
|
thumb_func_start MOD57_021D8830
|
|
MOD57_021D8830: ; 0x021D8830
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r7, r1, #0
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
lsl r1, r7, #0x18
|
|
mov r3, #3
|
|
str r0, [sp, #4]
|
|
lsr r1, r1, #0x18
|
|
lsl r3, r3, #0xc
|
|
bl FUN_02017E14
|
|
lsl r1, r7, #0x18
|
|
ldr r0, [sp, #4]
|
|
lsr r1, r1, #0x18
|
|
bl FUN_0201886C
|
|
mov r4, #0
|
|
add r1, r0, #0
|
|
add r3, r4, #0
|
|
add r0, r4, #0
|
|
_021D885A:
|
|
add r5, r3, #0
|
|
add r5, #0xe
|
|
lsl r5, r5, #6
|
|
add r2, r0, #0
|
|
add r5, r1, r5
|
|
_021D8864:
|
|
lsl r6, r2, #1
|
|
add r4, r4, #1
|
|
add r2, r2, #1
|
|
lsl r4, r4, #0x10
|
|
lsl r2, r2, #0x18
|
|
lsr r4, r4, #0x10
|
|
add r6, r5, r6
|
|
lsr r2, r2, #0x18
|
|
strh r4, [r6, #8]
|
|
cmp r2, #0x18
|
|
blo _021D8864
|
|
add r2, r3, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r3, r2, #0x18
|
|
cmp r3, #8
|
|
blo _021D885A
|
|
lsl r1, r7, #0x18
|
|
ldr r0, [sp, #4]
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02017CD0
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D8830
|
|
|
|
thumb_func_start MOD57_021D8894
|
|
MOD57_021D8894: ; 0x021D8894
|
|
ldr r3, _021D889C ; =FUN_020054C8
|
|
ldr r0, _021D88A0 ; =0x00000699
|
|
bx r3
|
|
nop
|
|
_021D889C: .word FUN_020054C8
|
|
_021D88A0: .word 0x00000699
|
|
thumb_func_end MOD57_021D8894
|
|
|
|
thumb_func_start MOD57_021D88A4
|
|
MOD57_021D88A4: ; 0x021D88A4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
cmp r1, #0
|
|
beq _021D8900
|
|
mov r0, #0xc3
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D88F0
|
|
ldr r2, _021D8904 ; =0x0000331E
|
|
ldrb r0, [r4, r2]
|
|
cmp r0, #0xf
|
|
bne _021D88DE
|
|
add r1, r4, #0
|
|
add r1, #0xb4
|
|
sub r2, #0x16
|
|
ldr r1, [r1]
|
|
ldr r2, [r4, r2]
|
|
add r0, r4, #4
|
|
bl MOD57_021D905C
|
|
ldr r2, _021D8908 ; =0x0000330C
|
|
add r0, r4, #0
|
|
ldr r2, [r4, r2]
|
|
add r0, #0x54
|
|
mov r1, #1
|
|
bl MOD57_021D9144
|
|
b _021D88F0
|
|
_021D88DE:
|
|
cmp r0, #0
|
|
bne _021D88F0
|
|
sub r2, #0x12
|
|
add r0, r4, #0
|
|
ldr r2, [r4, r2]
|
|
add r0, #0x54
|
|
mov r1, #0
|
|
bl MOD57_021D9144
|
|
_021D88F0:
|
|
ldr r0, _021D8904 ; =0x0000331E
|
|
mov r1, #0x1e
|
|
ldrb r0, [r4, r0]
|
|
add r0, r0, #1
|
|
bl _s32_div_f
|
|
ldr r0, _021D8904 ; =0x0000331E
|
|
strb r1, [r4, r0]
|
|
_021D8900:
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8904: .word 0x0000331E
|
|
_021D8908: .word 0x0000330C
|
|
thumb_func_end MOD57_021D88A4
|
|
|
|
thumb_func_start MOD57_021D890C
|
|
MOD57_021D890C: ; 0x021D890C
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
add r0, r1, #0
|
|
bl FUN_02020988
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
mvn r1, r1
|
|
cmp r4, r1
|
|
beq _021D894A
|
|
cmp r4, #0
|
|
beq _021D894C
|
|
mov r1, #0x40
|
|
add r0, sp, #4
|
|
strh r1, [r0]
|
|
add r0, sp, #4
|
|
str r0, [sp]
|
|
ldr r3, _021D8950 ; =0x021C48F8
|
|
add r0, r5, #0
|
|
ldrh r2, [r3, #0x1c]
|
|
ldrh r3, [r3, #0x1e]
|
|
mov r1, #2
|
|
bl FUN_0201AFBC
|
|
cmp r0, #0
|
|
bne _021D894A
|
|
mov r0, #0
|
|
add sp, #8
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, pc}
|
|
_021D894A:
|
|
add r0, r4, #0
|
|
_021D894C:
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D8950: .word 0x021C48F8
|
|
thumb_func_end MOD57_021D890C
|
|
|
|
thumb_func_start MOD57_021D8954
|
|
MOD57_021D8954: ; 0x021D8954
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
add r0, r1, #0
|
|
bl FUN_02020968
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
mvn r1, r1
|
|
cmp r4, r1
|
|
beq _021D8992
|
|
cmp r4, #0
|
|
beq _021D8994
|
|
mov r1, #0x40
|
|
add r0, sp, #4
|
|
strh r1, [r0]
|
|
add r0, sp, #4
|
|
str r0, [sp]
|
|
ldr r3, _021D8998 ; =0x021C48F8
|
|
add r0, r5, #0
|
|
ldrh r2, [r3, #0x1c]
|
|
ldrh r3, [r3, #0x1e]
|
|
mov r1, #2
|
|
bl FUN_0201AFBC
|
|
cmp r0, #0
|
|
bne _021D8992
|
|
mov r0, #0
|
|
add sp, #8
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, pc}
|
|
_021D8992:
|
|
add r0, r4, #0
|
|
_021D8994:
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D8998: .word 0x021C48F8
|
|
thumb_func_end MOD57_021D8954
|
|
|
|
thumb_func_start MOD57_021D899C
|
|
MOD57_021D899C: ; 0x021D899C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
ldr r7, _021D89D0 ; =0x021D98F4
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
mov r4, #0
|
|
_021D89A6:
|
|
lsl r1, r4, #4
|
|
lsl r2, r4, #3
|
|
add r0, r5, #0
|
|
add r1, r6, r1
|
|
add r2, r7, r2
|
|
bl FUN_02019150
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0xb
|
|
blo _021D89A6
|
|
mov r2, #0
|
|
add r0, r5, #0
|
|
mov r1, #7
|
|
mov r3, #1
|
|
str r2, [sp]
|
|
bl FUN_02017F48
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D89D0: .word 0x021D98F4
|
|
thumb_func_end MOD57_021D899C
|
|
|
|
thumb_func_start MOD57_021D89D4
|
|
MOD57_021D89D4: ; 0x021D89D4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
_021D89DA:
|
|
lsl r0, r4, #4
|
|
add r0, r5, r0
|
|
bl FUN_02019178
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
cmp r4, #0xb
|
|
blo _021D89DA
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D89D4
|
|
|
|
thumb_func_start MOD57_021D89F0
|
|
MOD57_021D89F0: ; 0x021D89F0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
add r6, r1, #0
|
|
mov r1, #0x88
|
|
str r1, [sp]
|
|
mov r1, #0x10
|
|
str r1, [sp, #4]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
add r7, r0, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0x88
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x10
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0x88
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x20
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0x88
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x30
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0x88
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x40
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x50
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
add r0, #0x60
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
ldr r2, _021D8CEC ; =0x0000022D
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
mov r3, #0x19
|
|
bl FUN_0200A86C
|
|
str r0, [sp, #0x14]
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
_021D8AA8:
|
|
cmp r4, #3
|
|
bne _021D8AB6
|
|
bne _021D8AE0
|
|
ldrb r0, [r6, #4]
|
|
lsl r0, r0, #0x1c
|
|
lsr r0, r0, #0x1f
|
|
beq _021D8AE0
|
|
_021D8AB6:
|
|
ldr r1, _021D8CF0 ; =0x021D98C8
|
|
lsl r2, r4, #2
|
|
ldr r1, [r1, r2]
|
|
ldr r0, [sp, #0x14]
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8CF4 ; =0x00010200
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
lsl r0, r4, #4
|
|
add r0, r7, r0
|
|
add r2, r5, #0
|
|
add r3, r1, #0
|
|
bl FUN_0201BDE0
|
|
_021D8AE0:
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #7
|
|
blo _021D8AA8
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
str r0, [sp, #0x10]
|
|
mov r0, #6
|
|
mov r1, #0x20
|
|
mov r2, #0x19
|
|
bl FUN_0200AA90
|
|
mov r2, #0
|
|
str r5, [sp]
|
|
add r4, r0, #0
|
|
ldrh r0, [r6, #0x28]
|
|
mov r1, #0x88
|
|
add r3, r2, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #5
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
add r0, r7, #0
|
|
bl MOD57_021D8FD8
|
|
add r1, r6, #0
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl FUN_02021E28
|
|
add r0, r7, #0
|
|
mov r2, #0
|
|
add r0, #0x10
|
|
mov r1, #0x88
|
|
add r3, r2, #0
|
|
str r5, [sp]
|
|
bl MOD57_021D9024
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r2, [r6, #0x1c]
|
|
add r0, r4, #0
|
|
mov r1, #5
|
|
mov r3, #6
|
|
bl FUN_0200AD38
|
|
ldr r0, [sp, #0x14]
|
|
ldr r2, [sp, #0x10]
|
|
mov r1, #0xe
|
|
bl FUN_0200A8E0
|
|
ldr r2, [sp, #0x10]
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl FUN_0200B7B8
|
|
mov r0, #0
|
|
add r1, r5, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0x88
|
|
sub r3, r1, r0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8CF4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r7, #0
|
|
str r1, [sp, #0xc]
|
|
add r0, #0x20
|
|
add r2, r5, #0
|
|
bl FUN_0201BDE0
|
|
ldrb r0, [r6, #4]
|
|
lsl r0, r0, #0x1c
|
|
lsr r0, r0, #0x1f
|
|
beq _021D8BA4
|
|
str r5, [sp]
|
|
ldr r0, [r6, #0x20]
|
|
mov r2, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #3
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r7, #0
|
|
add r0, #0x30
|
|
mov r1, #0x88
|
|
add r3, r2, #0
|
|
bl MOD57_021D8FD8
|
|
_021D8BA4:
|
|
str r5, [sp]
|
|
ldr r0, [r6, #0x24]
|
|
mov r2, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #9
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r7, #0
|
|
add r0, #0x40
|
|
mov r1, #0x88
|
|
add r3, r2, #0
|
|
bl MOD57_021D8FD8
|
|
ldrb r0, [r6, #4]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1f
|
|
beq _021D8C02
|
|
ldr r0, [r6, #0x18]
|
|
bl FUN_02029EBC
|
|
add r2, r0, #0
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
ldr r0, [r6, #0x18]
|
|
bl FUN_02029EC0
|
|
mov r3, #2
|
|
add r2, r0, #0
|
|
str r3, [sp]
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
str r1, [sp, #4]
|
|
bl FUN_0200AD38
|
|
ldr r0, [sp, #0x14]
|
|
ldr r2, [sp, #0x10]
|
|
mov r1, #0x10
|
|
bl FUN_0200A8E0
|
|
b _021D8C32
|
|
_021D8C02:
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldrh r2, [r6, #0x2a]
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
mov r3, #2
|
|
add r2, r6, #0
|
|
str r3, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
add r2, #0x2e
|
|
ldrb r2, [r2]
|
|
add r0, r4, #0
|
|
bl FUN_0200AD38
|
|
ldr r0, [sp, #0x14]
|
|
ldr r2, [sp, #0x10]
|
|
mov r1, #0xf
|
|
bl FUN_0200A8E0
|
|
_021D8C32:
|
|
ldr r2, [sp, #0x10]
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl FUN_0200B7B8
|
|
mov r0, #0
|
|
add r1, r5, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0xe0
|
|
sub r3, r1, r0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8CF4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r7, #0
|
|
add r0, #0x50
|
|
add r2, r5, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
mov r1, #2
|
|
add r2, r6, #0
|
|
str r1, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
add r2, #0x2f
|
|
ldrb r2, [r2]
|
|
add r0, r4, #0
|
|
add r3, r1, #0
|
|
bl FUN_0200AD38
|
|
add r2, r6, #0
|
|
add r2, #0x30
|
|
ldrb r2, [r2]
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl FUN_0200B764
|
|
mov r3, #2
|
|
str r3, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
add r6, #0x31
|
|
ldrb r2, [r6]
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl FUN_0200AD38
|
|
ldr r0, [sp, #0x14]
|
|
ldr r2, [sp, #0x10]
|
|
mov r1, #0x11
|
|
bl FUN_0200A8E0
|
|
ldr r2, [sp, #0x10]
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl FUN_0200B7B8
|
|
mov r0, #0
|
|
add r1, r5, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0xe0
|
|
sub r3, r1, r0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8CF4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r7, #0x60
|
|
add r0, r7, #0
|
|
add r2, r5, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
ldr r0, [sp, #0x10]
|
|
bl FUN_02021A20
|
|
add r0, r4, #0
|
|
bl FUN_0200AB18
|
|
add r0, r5, #0
|
|
bl FUN_02021A20
|
|
ldr r0, [sp, #0x14]
|
|
bl FUN_0200A8B8
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8CEC: .word 0x0000022D
|
|
_021D8CF0: .word 0x021D98C8
|
|
_021D8CF4: .word 0x00010200
|
|
thumb_func_end MOD57_021D89F0
|
|
|
|
thumb_func_start MOD57_021D8CF8
|
|
MOD57_021D8CF8: ; 0x021D8CF8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
add r6, r0, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x20
|
|
str r1, [sp, #0x10]
|
|
mov r1, #0
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
add r0, #0x70
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
add r0, #0x80
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
add r0, #0x90
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
mov r1, #0
|
|
mov r0, #0xe0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
add r0, #0xa0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
ldr r2, _021D8FAC ; =0x0000022D
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
mov r3, #0x19
|
|
bl FUN_0200A86C
|
|
add r7, r0, #0
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
add r5, r0, #0
|
|
mov r4, #7
|
|
_021D8D72:
|
|
ldr r1, _021D8FB0 ; =0x021D98C8
|
|
lsl r2, r4, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r7, #0
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8FB4 ; =0x00010200
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
lsl r0, r4, #4
|
|
add r0, r6, r0
|
|
add r2, r5, #0
|
|
add r3, r1, #0
|
|
bl FUN_0201BDE0
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0xb
|
|
blo _021D8D72
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
str r0, [sp, #0x14]
|
|
mov r0, #5
|
|
mov r1, #0x20
|
|
mov r2, #0x19
|
|
bl FUN_0200AA90
|
|
ldr r1, [sp, #0x10]
|
|
add r4, r0, #0
|
|
add r1, #0x33
|
|
ldrb r1, [r1]
|
|
cmp r1, #0
|
|
beq _021D8E3C
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r2, #1
|
|
str r2, [sp, #4]
|
|
ldr r2, [sp, #0x10]
|
|
add r3, r1, #0
|
|
add r2, #0x32
|
|
ldrb r2, [r2]
|
|
bl FUN_0200AD38
|
|
ldr r2, [sp, #0x10]
|
|
add r0, r4, #0
|
|
add r2, #0x33
|
|
ldrb r2, [r2]
|
|
mov r1, #3
|
|
bl FUN_0200B764
|
|
mov r3, #2
|
|
ldr r2, [sp, #0x10]
|
|
str r3, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
add r2, #0x34
|
|
ldrb r2, [r2]
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl FUN_0200AD38
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x10]
|
|
add r0, r4, #0
|
|
ldrh r2, [r2, #0x2c]
|
|
mov r1, #0
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
mov r3, #2
|
|
ldr r2, [sp, #0x10]
|
|
str r3, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
add r2, #0x35
|
|
ldrb r2, [r2]
|
|
add r0, r4, #0
|
|
bl FUN_0200AD38
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r7, #0
|
|
mov r1, #0x11
|
|
bl FUN_0200A8E0
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl FUN_0200B7B8
|
|
b _021D8E74
|
|
_021D8E3C:
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r7, #0
|
|
mov r1, #0xc
|
|
bl FUN_0200A8E0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r4, #0
|
|
add r3, r1, #0
|
|
bl FUN_0200ABB4
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl FUN_0200ABB4
|
|
add r0, r7, #0
|
|
mov r1, #0x14
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
_021D8E74:
|
|
mov r0, #0
|
|
add r1, r5, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0xe0
|
|
sub r3, r1, r0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8FB4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r0, #0x70
|
|
add r2, r5, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r7, #0
|
|
mov r1, #0xf
|
|
bl FUN_0200A8E0
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl FUN_0200B7B8
|
|
mov r0, #0
|
|
add r1, r5, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0xe0
|
|
sub r3, r1, r0
|
|
mov r0, #0x10
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
ldr r0, _021D8FB4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r0, #0x70
|
|
add r2, r5, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
mov r2, #0
|
|
ldr r0, [sp, #0x10]
|
|
str r5, [sp]
|
|
ldr r0, [r0, #0x38]
|
|
mov r1, #0xe0
|
|
str r0, [sp, #4]
|
|
mov r0, #6
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r6, #0
|
|
add r0, #0x80
|
|
add r3, r2, #0
|
|
bl MOD57_021D8FD8
|
|
add r0, r7, #0
|
|
mov r1, #0x12
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8FB4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r0, #0x90
|
|
add r2, r5, #0
|
|
mov r3, #0x70
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
mov r2, #0
|
|
ldr r0, [sp, #0x10]
|
|
str r5, [sp]
|
|
ldr r0, [r0, #0x40]
|
|
mov r1, #0xe0
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r6, #0
|
|
add r0, #0x90
|
|
add r3, r2, #0
|
|
bl MOD57_021D8FD8
|
|
add r0, r7, #0
|
|
mov r1, #0x13
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D8FB4 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r0, #0x90
|
|
add r2, r5, #0
|
|
mov r3, #0xb0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
ldr r0, [sp, #0x10]
|
|
str r5, [sp]
|
|
ldr r0, [r0, #0x3c]
|
|
mov r1, #0xe0
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r6, #0
|
|
add r0, #0x90
|
|
mov r2, #0x40
|
|
mov r3, #0
|
|
bl MOD57_021D8FD8
|
|
mov r2, #0
|
|
ldr r0, [sp, #0x10]
|
|
str r5, [sp]
|
|
ldr r0, [r0, #0x44]
|
|
add r6, #0xa0
|
|
str r0, [sp, #4]
|
|
mov r0, #6
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
add r0, r6, #0
|
|
mov r1, #0xe0
|
|
add r3, r2, #0
|
|
bl MOD57_021D8FD8
|
|
ldr r0, [sp, #0x14]
|
|
bl FUN_02021A20
|
|
add r0, r4, #0
|
|
bl FUN_0200AB18
|
|
add r0, r5, #0
|
|
bl FUN_02021A20
|
|
add r0, r7, #0
|
|
bl FUN_0200A8B8
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8FAC: .word 0x0000022D
|
|
_021D8FB0: .word 0x021D98C8
|
|
_021D8FB4: .word 0x00010200
|
|
thumb_func_end MOD57_021D8CF8
|
|
|
|
thumb_func_start MOD57_021D8FB8
|
|
MOD57_021D8FB8: ; 0x021D8FB8
|
|
push {r4, r5, r6, lr}
|
|
add r4, r1, #0
|
|
add r6, r2, #0
|
|
add r5, r0, #0
|
|
cmp r4, r6
|
|
bhi _021D8FD6
|
|
_021D8FC4:
|
|
lsl r0, r4, #4
|
|
add r0, r5, r0
|
|
bl FUN_02019570
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, r6
|
|
bls _021D8FC4
|
|
_021D8FD6:
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD57_021D8FB8
|
|
|
|
thumb_func_start MOD57_021D8FD8
|
|
MOD57_021D8FD8: ; 0x021D8FD8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r7, r0, #0
|
|
mov r0, #1
|
|
add r4, r2, #0
|
|
str r0, [sp]
|
|
add r2, sp, #0x18
|
|
add r5, r1, #0
|
|
add r6, r3, #0
|
|
ldrb r2, [r2, #0x18]
|
|
ldr r0, [sp, #0x28]
|
|
ldr r1, [sp, #0x2c]
|
|
ldr r3, [sp, #0x34]
|
|
bl FUN_02021B04
|
|
mov r0, #0
|
|
ldr r1, [sp, #0x28]
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
add r3, r0, #0
|
|
add r3, r3, r4
|
|
str r6, [sp]
|
|
mov r1, #0
|
|
ldr r0, _021D9020 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r2, [sp, #0x28]
|
|
add r0, r7, #0
|
|
sub r3, r5, r3
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D9020: .word 0x00010200
|
|
thumb_func_end MOD57_021D8FD8
|
|
|
|
thumb_func_start MOD57_021D9024
|
|
MOD57_021D9024: ; 0x021D9024
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r7, r0, #0
|
|
add r5, r1, #0
|
|
mov r0, #0
|
|
add r4, r2, #0
|
|
ldr r1, [sp, #0x28]
|
|
add r6, r3, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
add r3, r0, #0
|
|
add r3, r3, r4
|
|
str r6, [sp]
|
|
mov r1, #0
|
|
ldr r0, _021D9058 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r2, [sp, #0x28]
|
|
add r0, r7, #0
|
|
sub r3, r5, r3
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D9058: .word 0x00010200
|
|
thumb_func_end MOD57_021D9024
|
|
|
|
thumb_func_start MOD57_021D905C
|
|
MOD57_021D905C: ; 0x021D905C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
add r5, r1, #0
|
|
add r7, r0, #0
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0
|
|
bne _021D906E
|
|
bl ErrorHandling
|
|
_021D906E:
|
|
ldr r0, [r5, #0x18]
|
|
bl FUN_02029EBC
|
|
mov r0, #0x28
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
mov r1, #0
|
|
add r0, #0x50
|
|
mov r2, #0xb8
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
ldr r2, _021D913C ; =0x0000022D
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
mov r3, #0x19
|
|
bl FUN_0200A86C
|
|
str r0, [sp, #0x10]
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
add r4, r0, #0
|
|
mov r0, #0x20
|
|
mov r1, #0x19
|
|
bl FUN_020219F4
|
|
str r0, [sp, #0x14]
|
|
mov r0, #2
|
|
mov r1, #0x20
|
|
mov r2, #0x19
|
|
bl FUN_0200AA90
|
|
add r6, r0, #0
|
|
ldr r0, [r5, #0x18]
|
|
bl FUN_02029EBC
|
|
add r2, r0, #0
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
mov r1, #0
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
ldr r0, [r5, #0x18]
|
|
bl FUN_02029EC0
|
|
mov r3, #2
|
|
add r2, r0, #0
|
|
str r3, [sp]
|
|
mov r1, #1
|
|
add r0, r6, #0
|
|
str r1, [sp, #4]
|
|
bl FUN_0200AD38
|
|
ldr r0, [sp, #0x10]
|
|
ldr r2, [sp, #0x14]
|
|
mov r1, #0x10
|
|
bl FUN_0200A8E0
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r6, #0
|
|
add r1, r4, #0
|
|
bl FUN_0200B7B8
|
|
mov r0, #0
|
|
add r1, r4, #0
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0xe0
|
|
sub r3, r1, r0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D9140 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r7, #0x50
|
|
add r0, r7, #0
|
|
add r2, r4, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
ldr r0, [sp, #0x10]
|
|
bl FUN_0200A8B8
|
|
add r0, r4, #0
|
|
bl FUN_02021A20
|
|
ldr r0, [sp, #0x14]
|
|
bl FUN_02021A20
|
|
add r0, r6, #0
|
|
bl FUN_0200AB18
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D913C: .word 0x0000022D
|
|
_021D9140: .word 0x00010200
|
|
thumb_func_end MOD57_021D905C
|
|
|
|
thumb_func_start MOD57_021D9144
|
|
MOD57_021D9144: ; 0x021D9144
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0
|
|
cmp r1, #0
|
|
beq _021D9164
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r3, _021D9180 ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r3, [sp, #8]
|
|
mov r3, #0xcd
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
_021D9164:
|
|
mov r1, #5
|
|
str r1, [sp]
|
|
mov r1, #0x10
|
|
str r1, [sp, #4]
|
|
mov r1, #0
|
|
mov r2, #0xcd
|
|
add r3, r1, #0
|
|
bl FUN_020196F4
|
|
add r0, r4, #0
|
|
bl FUN_020191D0
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D9180: .word 0x00010200
|
|
thumb_func_end MOD57_021D9144
|
|
|
|
thumb_func_start MOD57_021D9184
|
|
MOD57_021D9184: ; 0x021D9184
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x3c
|
|
add r7, r0, #0
|
|
bl MOD57_021D9578
|
|
bl FUN_020B0FC0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, #0x80
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r3, #0x20
|
|
str r3, [sp, #0xc]
|
|
mov r2, #0x19
|
|
str r2, [sp, #0x10]
|
|
add r2, r0, #0
|
|
bl FUN_02009EAC
|
|
mov r0, #0x19
|
|
add r1, r7, #4
|
|
add r2, r0, #0
|
|
bl FUN_02008C9C
|
|
ldr r4, _021D92EC ; =0x021D994C
|
|
str r0, [r7]
|
|
mov r6, #0
|
|
add r5, r7, #0
|
|
_021D91BC:
|
|
ldrb r0, [r4]
|
|
add r1, r6, #0
|
|
mov r2, #0x19
|
|
bl FUN_02008DEC
|
|
mov r1, #0x4b
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
add r6, r6, #1
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r6, #4
|
|
blt _021D91BC
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #0x19
|
|
str r0, [sp, #8]
|
|
add r0, r1, #0
|
|
ldr r0, [r7, r0]
|
|
mov r1, #0x33
|
|
mov r2, #0x1c
|
|
mov r3, #0
|
|
bl FUN_02008F34
|
|
mov r1, #0x4f
|
|
lsl r1, r1, #2
|
|
str r0, [r7, r1]
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #9
|
|
str r0, [sp, #8]
|
|
mov r0, #0x19
|
|
sub r1, #0xc
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r7, r1]
|
|
mov r1, #0x33
|
|
mov r2, #0xb
|
|
mov r3, #0
|
|
bl FUN_02008FEC
|
|
mov r1, #5
|
|
lsl r1, r1, #6
|
|
str r0, [r7, r1]
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #0x19
|
|
sub r1, #0xc
|
|
str r0, [sp, #8]
|
|
ldr r0, [r7, r1]
|
|
mov r1, #0x33
|
|
mov r2, #0x25
|
|
mov r3, #0
|
|
bl FUN_020090AC
|
|
mov r1, #0x51
|
|
lsl r1, r1, #2
|
|
str r0, [r7, r1]
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x19
|
|
sub r1, #0xc
|
|
str r0, [sp, #8]
|
|
ldr r0, [r7, r1]
|
|
mov r1, #0x33
|
|
mov r2, #0x27
|
|
mov r3, #0
|
|
bl FUN_020090AC
|
|
mov r1, #0x52
|
|
lsl r1, r1, #2
|
|
str r0, [r7, r1]
|
|
sub r1, #0xc
|
|
ldr r0, [r7, r1]
|
|
bl FUN_02009A50
|
|
mov r0, #5
|
|
lsl r0, r0, #6
|
|
ldr r0, [r7, r0]
|
|
bl FUN_02009CF0
|
|
ldr r3, _021D92F0 ; =0x021D9960
|
|
add r2, sp, #0x1c
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
mov r0, #0x33
|
|
mov r1, #0x19
|
|
bl NARC_ctor
|
|
str r0, [sp, #0x14]
|
|
mov r0, #0x1e
|
|
lsl r0, r0, #4
|
|
add r0, r7, r0
|
|
mov r4, #0
|
|
str r0, [sp, #0x18]
|
|
_021D9290:
|
|
lsl r6, r4, #2
|
|
add r1, sp, #0x1c
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [r1, r6]
|
|
mov r2, #0x19
|
|
add r5, r7, r6
|
|
bl NARC_AllocAndReadWholeMember
|
|
mov r1, #7
|
|
lsl r1, r1, #6
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #0
|
|
beq _021D92CA
|
|
ldr r1, [sp, #0x18]
|
|
add r1, r1, r6
|
|
bl FUN_020B0138
|
|
cmp r0, #0
|
|
bne _021D92CE
|
|
mov r0, #0x1e
|
|
lsl r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
bl FreeToHeap
|
|
bl ErrorHandling
|
|
b _021D92CE
|
|
_021D92CA:
|
|
bl ErrorHandling
|
|
_021D92CE:
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #8
|
|
blo _021D9290
|
|
ldr r0, [sp, #0x14]
|
|
bl NARC_dtor
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl FUN_0201E6E4
|
|
add sp, #0x3c
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D92EC: .word 0x021D994C
|
|
_021D92F0: .word 0x021D9960
|
|
thumb_func_end MOD57_021D9184
|
|
|
|
thumb_func_start MOD57_021D92F4
|
|
MOD57_021D92F4: ; 0x021D92F4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x88
|
|
add r7, r1, #0
|
|
mov r1, #1
|
|
str r0, [sp, #0x2c]
|
|
str r1, [sp]
|
|
sub r0, r1, #2
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r2, #0
|
|
str r2, [sp, #0xc]
|
|
mov r0, #0x4b
|
|
lsl r0, r0, #2
|
|
ldr r3, [sp, #0x2c]
|
|
str r1, [sp, #0x10]
|
|
ldr r3, [r3, r0]
|
|
add r4, r0, #4
|
|
str r3, [sp, #0x14]
|
|
ldr r3, [sp, #0x2c]
|
|
ldr r3, [r3, r4]
|
|
add r4, r0, #0
|
|
str r3, [sp, #0x18]
|
|
ldr r3, [sp, #0x2c]
|
|
add r4, #8
|
|
ldr r3, [r3, r4]
|
|
add r0, #0xc
|
|
str r3, [sp, #0x1c]
|
|
ldr r3, [sp, #0x2c]
|
|
ldr r0, [r3, r0]
|
|
add r3, r1, #0
|
|
str r0, [sp, #0x20]
|
|
str r2, [sp, #0x24]
|
|
str r2, [sp, #0x28]
|
|
add r0, sp, #0x64
|
|
add r2, r1, #0
|
|
bl FUN_02008AA4
|
|
ldr r0, [sp, #0x2c]
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
ldr r6, _021D94B4 ; =0x021D99C0
|
|
str r0, [sp, #0x34]
|
|
add r0, sp, #0x64
|
|
str r0, [sp, #0x38]
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r4, [sp, #0x3c]
|
|
str r4, [sp, #0x40]
|
|
str r4, [sp, #0x44]
|
|
str r0, [sp, #0x48]
|
|
str r0, [sp, #0x4c]
|
|
str r0, [sp, #0x50]
|
|
add r0, sp, #0x34
|
|
strh r4, [r0, #0x20]
|
|
mov r0, #2
|
|
str r0, [sp, #0x58]
|
|
mov r0, #1
|
|
str r0, [sp, #0x5c]
|
|
mov r0, #0x19
|
|
ldr r5, [sp, #0x2c]
|
|
str r0, [sp, #0x60]
|
|
_021D936E:
|
|
ldr r0, [r6]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [r6, #4]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x40]
|
|
add r0, sp, #0x34
|
|
bl FUN_0201FE94
|
|
mov r1, #0x57
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl FUN_020200BC
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, r4, #0
|
|
bl FUN_02020130
|
|
ldrb r0, [r7, r4]
|
|
cmp r0, #0
|
|
bne _021D93AE
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
_021D93AE:
|
|
add r4, r4, #1
|
|
add r6, #8
|
|
add r5, r5, #4
|
|
cmp r4, #8
|
|
blt _021D936E
|
|
mov r0, #8
|
|
ldr r4, _021D94B8 ; =0x021D9980
|
|
ldr r5, [sp, #0x2c]
|
|
str r0, [sp, #0x30]
|
|
mov r6, #0
|
|
mov r7, #1
|
|
_021D93C4:
|
|
ldr r0, [r4]
|
|
str r7, [sp, #0x58]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [r4, #4]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x40]
|
|
add r0, sp, #0x34
|
|
bl FUN_0201FE94
|
|
mov r1, #0x5f
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl FUN_020200BC
|
|
mov r0, #0x5f
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #8
|
|
bl FUN_02020130
|
|
mov r0, #0x5f
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
add r6, r6, #1
|
|
add r4, #8
|
|
add r5, r5, #4
|
|
cmp r6, #8
|
|
blt _021D93C4
|
|
ldr r0, [sp, #0x30]
|
|
ldr r4, _021D94B8 ; =0x021D9980
|
|
add r0, #8
|
|
str r0, [sp, #0x30]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x30]
|
|
ldr r0, [sp, #0x30]
|
|
mov r6, #0
|
|
lsl r1, r0, #2
|
|
ldr r0, [sp, #0x2c]
|
|
mov r7, #1
|
|
add r5, r0, r1
|
|
_021D9424:
|
|
ldr r0, [r4]
|
|
str r7, [sp, #0x58]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [r4, #4]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x40]
|
|
add r0, sp, #0x34
|
|
bl FUN_0201FE94
|
|
mov r1, #0x57
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl FUN_020200BC
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #9
|
|
bl FUN_02020130
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
add r6, r6, #1
|
|
add r4, #8
|
|
add r5, r5, #4
|
|
cmp r6, #8
|
|
blt _021D9424
|
|
mov r1, #0
|
|
add r0, sp, #0x84
|
|
strb r1, [r0]
|
|
mov r0, #6
|
|
lsl r0, r0, #0x10
|
|
str r0, [sp, #0x3c]
|
|
mov r0, #0x22
|
|
lsl r0, r0, #0xe
|
|
str r0, [sp, #0x40]
|
|
str r1, [sp, #0x58]
|
|
mov r1, #0x57
|
|
ldr r0, [sp, #0x2c]
|
|
lsl r1, r1, #2
|
|
add r4, r0, r1
|
|
ldr r0, [sp, #0x30]
|
|
add r0, #8
|
|
str r0, [sp, #0x30]
|
|
lsl r0, r0, #0x18
|
|
lsr r5, r0, #0x16
|
|
add r0, sp, #0x34
|
|
bl FUN_0201FE94
|
|
str r0, [r4, r5]
|
|
ldr r0, [r4, r5]
|
|
mov r1, #0
|
|
bl FUN_020200BC
|
|
ldr r0, [r4, r5]
|
|
mov r1, #0xa
|
|
bl FUN_02020130
|
|
ldr r0, [r4, r5]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
add sp, #0x88
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D94B4: .word 0x021D99C0
|
|
_021D94B8: .word 0x021D9980
|
|
thumb_func_end MOD57_021D92F4
|
|
|
|
thumb_func_start MOD57_021D94BC
|
|
MOD57_021D94BC: ; 0x021D94BC
|
|
push {r4, r5, r6, lr}
|
|
mov r6, #7
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
lsl r6, r6, #6
|
|
_021D94C6:
|
|
lsl r0, r4, #2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, r6]
|
|
bl FreeToHeap
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #8
|
|
blo _021D94C6
|
|
mov r0, #0x4f
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
bl FUN_02009C0C
|
|
mov r0, #5
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
bl FUN_02009E04
|
|
mov r6, #0x4b
|
|
mov r4, #0
|
|
lsl r6, r6, #2
|
|
_021D94F4:
|
|
lsl r0, r4, #2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, r6]
|
|
bl FUN_02008E2C
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #4
|
|
blo _021D94F4
|
|
ldr r0, [r5]
|
|
bl FUN_0201FD58
|
|
bl FUN_02009FA0
|
|
bl FUN_0201D12C
|
|
bl FUN_0201E08C
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD57_021D94BC
|
|
|
|
thumb_func_start MOD57_021D951C
|
|
MOD57_021D951C: ; 0x021D951C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r6, r2, #0
|
|
cmp r4, #8
|
|
blo _021D952E
|
|
bl ErrorHandling
|
|
_021D952E:
|
|
cmp r6, #3
|
|
bls _021D9536
|
|
bl ErrorHandling
|
|
_021D9536:
|
|
lsl r7, r4, #2
|
|
mov r0, #0x57
|
|
add r1, r5, r7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
bl FUN_02020354
|
|
mov r1, #1
|
|
bl FUN_020B19C4
|
|
str r0, [sp]
|
|
lsl r0, r4, #5
|
|
str r0, [sp, #4]
|
|
mov r0, #0x1e
|
|
add r1, r5, r7
|
|
lsl r0, r0, #4
|
|
ldr r0, [r1, r0]
|
|
lsl r5, r6, #5
|
|
ldr r4, [r0, #0xc]
|
|
mov r1, #0x20
|
|
add r0, r4, r5
|
|
bl DC_FlushRange
|
|
ldr r2, [sp]
|
|
ldr r1, [sp, #4]
|
|
add r0, r4, r5
|
|
add r1, r2, r1
|
|
mov r2, #0x20
|
|
bl GX_LoadOBJPltt
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D951C
|
|
|
|
thumb_func_start MOD57_021D9578
|
|
MOD57_021D9578: ; 0x021D9578
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, _021D95A4 ; =0x021D9950
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
bl FUN_0201D040
|
|
mov r0, #2
|
|
mov r1, #0x19
|
|
bl FUN_0201E00C
|
|
bl FUN_0201D168
|
|
bl FUN_0201E0BC
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D95A4: .word 0x021D9950
|
|
thumb_func_end MOD57_021D9578
|
|
|
|
thumb_func_start MOD57_021D95A8
|
|
MOD57_021D95A8: ; 0x021D95A8
|
|
mov r2, #0
|
|
mov r1, #0xff
|
|
_021D95AC:
|
|
strb r2, [r0]
|
|
strb r1, [r0, #1]
|
|
add r2, r2, #1
|
|
add r0, r0, #2
|
|
cmp r2, #4
|
|
blt _021D95AC
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D95A8
|
|
|
|
thumb_func_start MOD57_021D95BC
|
|
MOD57_021D95BC: ; 0x021D95BC
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
add r6, r2, #0
|
|
bl MOD57_021D95F4
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl MOD57_021D9624
|
|
cmp r0, #1
|
|
beq _021D95F0
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl MOD57_021D965C
|
|
cmp r0, #1
|
|
beq _021D95F0
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl MOD57_021D9694
|
|
cmp r0, #1
|
|
_021D95F0:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D95BC
|
|
|
|
thumb_func_start MOD57_021D95F4
|
|
MOD57_021D95F4: ; 0x021D95F4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
mov r4, #0
|
|
add r5, r7, #0
|
|
mov r6, #0xff
|
|
_021D95FE:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0xff
|
|
beq _021D9612
|
|
ldrb r0, [r5]
|
|
add r0, r0, #3
|
|
bl FUN_020048BC
|
|
cmp r0, #0
|
|
bne _021D9612
|
|
strb r6, [r5, #1]
|
|
_021D9612:
|
|
add r4, r4, #1
|
|
add r5, r5, #2
|
|
cmp r4, #4
|
|
blt _021D95FE
|
|
add r0, r7, #0
|
|
bl MOD57_021D96D8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D95F4
|
|
|
|
thumb_func_start MOD57_021D9624
|
|
MOD57_021D9624: ; 0x021D9624
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
add r5, r1, #0
|
|
mov r4, #0
|
|
add r1, r6, #0
|
|
_021D962E:
|
|
ldrb r0, [r1, #1]
|
|
cmp r5, r0
|
|
bne _021D964E
|
|
lsl r7, r4, #1
|
|
ldrb r0, [r6, r7]
|
|
add r1, r5, #0
|
|
bl MOD57_021D96F4
|
|
ldrb r2, [r6, r7]
|
|
add r0, r6, #0
|
|
add r1, r4, #0
|
|
add r3, r5, #0
|
|
bl MOD57_021D96B0
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D964E:
|
|
add r4, r4, #1
|
|
add r1, r1, #2
|
|
cmp r4, #4
|
|
blt _021D962E
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D9624
|
|
|
|
thumb_func_start MOD57_021D965C
|
|
MOD57_021D965C: ; 0x021D965C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r7, r1, #0
|
|
mov r4, #0
|
|
add r1, r5, #0
|
|
_021D9666:
|
|
ldrb r0, [r1, #1]
|
|
cmp r0, #0xff
|
|
bne _021D9686
|
|
lsl r6, r4, #1
|
|
ldrb r0, [r5, r6]
|
|
add r1, r7, #0
|
|
bl MOD57_021D96F4
|
|
ldrb r2, [r5, r6]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r3, r7, #0
|
|
bl MOD57_021D96B0
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D9686:
|
|
add r4, r4, #1
|
|
add r1, r1, #2
|
|
cmp r4, #4
|
|
blt _021D9666
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D965C
|
|
|
|
thumb_func_start MOD57_021D9694
|
|
MOD57_021D9694: ; 0x021D9694
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldrb r0, [r5, #6]
|
|
add r4, r1, #0
|
|
bl MOD57_021D96F4
|
|
ldrb r2, [r5, #6]
|
|
add r0, r5, #0
|
|
mov r1, #3
|
|
add r3, r4, #0
|
|
bl MOD57_021D96B0
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD57_021D9694
|
|
|
|
thumb_func_start MOD57_021D96B0
|
|
MOD57_021D96B0: ; 0x021D96B0
|
|
push {r4, r5}
|
|
cmp r1, #0
|
|
ble _021D96CE
|
|
lsl r4, r1, #1
|
|
add r4, r0, r4
|
|
_021D96BA:
|
|
sub r5, r4, #2
|
|
ldrb r5, [r5]
|
|
sub r1, r1, #1
|
|
strb r5, [r4]
|
|
sub r5, r4, #1
|
|
ldrb r5, [r5]
|
|
strb r5, [r4, #1]
|
|
sub r4, r4, #2
|
|
cmp r1, #0
|
|
bgt _021D96BA
|
|
_021D96CE:
|
|
strb r2, [r0]
|
|
strb r3, [r0, #1]
|
|
pop {r4, r5}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D96B0
|
|
|
|
thumb_func_start MOD57_021D96D8
|
|
MOD57_021D96D8: ; 0x021D96D8
|
|
mov r3, #0
|
|
mov r1, #0xff
|
|
_021D96DC:
|
|
ldrb r2, [r0]
|
|
cmp r2, #0xff
|
|
bne _021D96E8
|
|
ldrb r2, [r0, #2]
|
|
strb r2, [r0]
|
|
strb r1, [r0, #2]
|
|
_021D96E8:
|
|
add r3, r3, #1
|
|
add r0, r0, #2
|
|
cmp r3, #4
|
|
blt _021D96DC
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD57_021D96D8
|
|
|
|
thumb_func_start MOD57_021D96F4
|
|
MOD57_021D96F4: ; 0x021D96F4
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
add r6, r2, #0
|
|
add r0, r5, #3
|
|
add r4, r1, #0
|
|
ldr r2, _021D9720 ; =0x00000694
|
|
add r1, r0, #0
|
|
bl FUN_020048A0
|
|
ldr r2, _021D9724 ; =0x021D9A00
|
|
lsl r3, r4, #1
|
|
ldrh r2, [r2, r3]
|
|
mov r3, #4
|
|
sub r4, r3, r6
|
|
mov r3, #0x98
|
|
mul r3, r4
|
|
ldr r1, _021D9728 ; =0x0000FFFF
|
|
add r0, r5, #3
|
|
sub r2, r2, r3
|
|
bl FUN_02004D20
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D9720: .word 0x00000694
|
|
_021D9724: .word 0x021D9A00
|
|
_021D9728: .word 0x0000FFFF
|
|
thumb_func_end MOD57_021D96F4
|
|
|
|
.section .rodata
|
|
; 0x021D972C
|
|
.byte 0x01, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x00, 0x01, 0x03, 0x04, 0x0F, 0x0F, 0x00, 0x00, 0x00
|
|
.byte 0x92, 0x06, 0x00, 0x00, 0x93, 0x06, 0x00, 0x00, 0x98, 0xB7, 0x78, 0x97, 0xFF, 0x00, 0x00, 0x00
|
|
.byte 0x2C, 0x97, 0x1D, 0x02, 0x30, 0x97, 0x1D, 0x02, 0x44, 0x97, 0x1D, 0x02, 0x44, 0x97, 0x1D, 0x02
|
|
.byte 0x44, 0x97, 0x1D, 0x02, 0x28, 0x98, 0x1D, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x01, 0x1D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x1D, 0x00
|
|
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xB7, 0x78, 0x97
|
|
.byte 0x28, 0x4F, 0x18, 0x3F, 0x28, 0x4F, 0x50, 0x77, 0x28, 0x4F, 0x88, 0xA7, 0x28, 0x4F, 0xC0, 0xE7
|
|
.byte 0x60, 0x87, 0x18, 0x3F, 0x60, 0x87, 0x50, 0x77, 0x60, 0x87, 0x88, 0xA7, 0x60, 0x87, 0xC0, 0xE7
|
|
.byte 0xFF, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
|
|
.byte 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
|
|
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00
|
|
.byte 0x36, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00
|
|
.byte 0x33, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00
|
|
.byte 0x2B, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00
|
|
.byte 0x34, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
|
|
.byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x02, 0x04, 0x11, 0x02, 0x0F, 0x6F, 0x00
|
|
.byte 0x07, 0x02, 0x06, 0x11, 0x02, 0x0F, 0x91, 0x00, 0x07, 0x02, 0x09, 0x11, 0x02, 0x0F, 0xB3, 0x00
|
|
.byte 0x07, 0x02, 0x0C, 0x11, 0x02, 0x0F, 0xD5, 0x00, 0x07, 0x02, 0x0F, 0x11, 0x02, 0x0F, 0xF7, 0x00
|
|
.byte 0x07, 0x02, 0x12, 0x1C, 0x02, 0x0F, 0x19, 0x01, 0x07, 0x02, 0x14, 0x1C, 0x02, 0x0F, 0x51, 0x01
|
|
.byte 0x07, 0x02, 0x02, 0x1C, 0x04, 0x0F, 0xC1, 0x00, 0x07, 0x02, 0x07, 0x1C, 0x02, 0x0F, 0x31, 0x01
|
|
.byte 0x07, 0x02, 0x09, 0x1C, 0x02, 0x0F, 0x69, 0x01, 0x07, 0x02, 0x0B, 0x1C, 0x02, 0x0F, 0xA1, 0x01
|
|
.byte 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x19, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
|
|
.byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
|
|
.byte 0x14, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00
|
|
.byte 0x28, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
|
|
.byte 0x28, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00
|
|
.byte 0x60, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
|
|
.byte 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00
|
|
.byte 0x28, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
|
|
.byte 0x28, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00
|
|
.byte 0x48, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
|
|
.byte 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x40, 0x01, 0xC0, 0x01, 0x40, 0x02
|
|
.byte 0xC0, 0x02, 0x00, 0x03
|