pokediamond/arm9/asm/unk_020828BC.s

1772 lines
34 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .rodata
.global UNK_020FBC08
UNK_020FBC08: ; 0x020FBC08
.byte 0x03, 0x05, 0x08, 0x05, 0x0A, 0x0F, 0x07, 0x0F, 0x17, 0x0A, 0x14, 0x1E, 0x0A, 0x14, 0x1E, 0x00
.global UNK_020FBC18
UNK_020FBC18: ; 0x020FBC18
.byte 0x0A, 0x00, 0x14, 0x00, 0x1E, 0x00, 0x28, 0x00, 0x32, 0x00, 0x3C, 0x00, 0x46, 0x00, 0x50, 0x00
.byte 0x5A, 0x00, 0x6E, 0x00, 0x82, 0x00, 0x96, 0x00, 0xAA, 0x00, 0xBE, 0x00, 0xD2, 0x00, 0xE6, 0x00
.byte 0xAA, 0x00, 0xC8, 0x00, 0xE6, 0x00, 0x04, 0x01, 0x22, 0x01, 0x40, 0x01, 0x5E, 0x01, 0x7C, 0x01
.byte 0x40, 0x01, 0x68, 0x01, 0x90, 0x01, 0xB8, 0x01, 0xE0, 0x01, 0x08, 0x02, 0x30, 0x02, 0x58, 0x02
.byte 0x64, 0x00, 0xC8, 0x00, 0x2C, 0x01, 0x90, 0x01, 0xC2, 0x01, 0xF4, 0x01, 0x26, 0x02, 0x58, 0x02
.global UNK_020FBC68
UNK_020FBC68: ; 0x020FBC68
.byte 0x00, 0x00
.global UNK_020FBC6A
UNK_020FBC6A: ; 0x020FBC6A
.byte 0x00, 0x00
.global UNK_020FBC6C
UNK_020FBC6C: ; 0x020FBC6C
.byte 0x00, 0x00
.global UNK_020FBC6E
UNK_020FBC6E: ; 0x020FBC6E
.byte 0x00, 0x00
.global UNK_020FBC70
UNK_020FBC70: ; 0x020FBC70
.byte 0x00, 0x00
.global UNK_020FBC72
UNK_020FBC72: ; 0x020FBC72
.byte 0x00, 0x00
.global UNK_020FBC74
UNK_020FBC74: ; 0x020FBC74
.byte 0x00, 0x00
.global UNK_020FBC76
UNK_020FBC76: ; 0x020FBC76
.byte 0x00, 0x00
.global UNK_020FBC78
UNK_020FBC78: ; 0x020FBC78
.byte 0x00, 0x00
.global UNK_020FBC7A
UNK_020FBC7A: ; 0x020FBC7A
.byte 0x00, 0x00
.global UNK_020FBC7C
UNK_020FBC7C: ; 0x020FBC7C
.byte 0x00, 0x00
.global UNK_020FBC7E
UNK_020FBC7E: ; 0x020FBC7E
.byte 0x00, 0x00
.global UNK_020FBC80
UNK_020FBC80: ; 0x020FBC80
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x07, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00
.byte 0x14, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00
.byte 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0x06, 0x00, 0x07, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x1E, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0A, 0x00
.byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x00, 0x0C, 0x00
.byte 0x0D, 0x00, 0x14, 0x00, 0x0C, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00
.byte 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0x10, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x02, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x12, 0x00, 0x13, 0x00
.byte 0x14, 0x00, 0x11, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, 0x12, 0x00, 0x09, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0x16, 0x00, 0x17, 0x00, 0x00, 0x00, 0x13, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x00, 0x19, 0x00, 0x14, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x00
.byte 0x1D, 0x00, 0x14, 0x00, 0x16, 0x00, 0x09, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x17, 0x00
.byte 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0x20, 0x00, 0x21, 0x00, 0x14, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x22, 0x00, 0x23, 0x00
.byte 0x14, 0x00, 0x19, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x25, 0x00, 0x14, 0x00, 0x1A, 0x00, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0x26, 0x00, 0x27, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x00, 0x29, 0x00, 0x00, 0x00
.byte 0x1C, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x1F, 0x00, 0x02, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF
.byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x2C, 0x00
.byte 0x2D, 0x00, 0x0A, 0x00, 0x21, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.text
thumb_func_start sub_020828BC
sub_020828BC: ; 0x020828BC
ldr r2, _020828E0 ; =0x00000171
ldrb r1, [r0, r2]
cmp r1, #0x0
beq _020828D6
cmp r1, #0x1
bne _020828DA
add r1, r2, #0x0
sub r1, #0x55
sub r2, #0x4e
ldrb r1, [r0, r1]
ldrb r0, [r0, r2]
cmp r1, r0
bne _020828DA
_020828D6:
mov r0, #0x1
bx lr
_020828DA:
mov r0, #0x0
bx lr
nop
_020828E0: .word 0x00000171
thumb_func_start sub_020828E4
sub_020828E4: ; 0x020828E4
push {r3-r7, lr}
sub sp, #0x58
str r0, [sp, #0x4]
ldr r0, [sp, #0x70]
mov r6, #0x0
str r0, [sp, #0x70]
ldr r0, [sp, #0x74]
add r5, r1, #0x0
add r4, r3, #0x0
str r2, [sp, #0x8]
str r6, [sp, #0x20]
str r6, [sp, #0x18]
str r6, [sp, #0x1c]
cmp r0, #0x8
bhi _0208292A
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0208290E: ; jump table (using 16-bit offset)
.short _0208292A - _0208290E - 2; case 0
.short _0208292A - _0208290E - 2; case 1
.short _0208292A - _0208290E - 2; case 2
.short _02082920 - _0208290E - 2; case 3
.short _02082926 - _0208290E - 2; case 4
.short _02082920 - _0208290E - 2; case 5
.short _02082926 - _0208290E - 2; case 6
.short _02082920 - _0208290E - 2; case 7
.short _02082926 - _0208290E - 2; case 8
_02082920:
mov r0, #0x1
str r0, [sp, #0x18]
b _0208292A
_02082926:
mov r0, #0x1
str r0, [sp, #0x1c]
_0208292A:
mov r0, #0x1
mov r1, #0x0
str r0, [sp, #0x0]
mov r0, #0x5a
add r2, r1, #0x0
add r3, r5, #0x0
bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
mov r0, #0x5a
mov r1, #0x0
bl GetNarcMemberSizeByIdPair
mov r1, #0x30
bl _u32_div_f
str r0, [sp, #0x24]
ldr r1, [sp, #0x24]
add r0, r5, #0x0
add r1, r1, #0x1
bl Heap_AllocAtEnd
add r5, r0, #0x0
ldr r0, [sp, #0x78]
cmp r0, #0x1
bne _02082968
ldr r0, [sp, #0x7c]
cmp r0, #0x1
bne _02082968
mov r0, #0x1
str r0, [sp, #0x20]
_02082968:
ldr r0, [sp, #0x24]
mov r2, #0x0
cmp r0, #0x0
ble _02082A1A
ldr r3, [sp, #0x14]
_02082972:
ldrh r7, [r3, #0x20]
lsl r0, r7, #0x1d
lsr r1, r0, #0x1d
ldr r0, [sp, #0x70]
cmp r0, r1
bne _02082A10
ldr r0, [sp, #0x20]
cmp r0, #0x1
bne _0208298E
lsl r0, r7, #0x14
lsr r0, r0, #0x1e
cmp r0, #0x1
beq _02082A10
b _0208299A
_0208298E:
lsl r0, r7, #0x14
lsr r0, r0, #0x1e
cmp r0, #0x2
beq _02082A10
cmp r0, #0x3
beq _02082A10
_0208299A:
ldr r0, [sp, #0x18]
cmp r0, #0x1
bne _020829AA
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x16
lsr r0, r0, #0x1f
beq _02082A10
b _020829CA
_020829AA:
ldr r0, [sp, #0x1c]
cmp r0, #0x1
ldrh r0, [r3, #0x20]
bne _020829BA
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
beq _02082A10
b _020829CA
_020829BA:
lsl r1, r0, #0x16
lsr r1, r1, #0x1f
cmp r1, #0x1
beq _02082A10
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
cmp r0, #0x1
beq _02082A10
_020829CA:
cmp r4, #0x0
bne _020829D6
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1f
bne _02082A06
_020829D6:
cmp r4, #0x1
bne _020829E2
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1f
bne _02082A06
_020829E2:
cmp r4, #0x2
bne _020829EE
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
bne _02082A06
_020829EE:
cmp r4, #0x3
bne _020829FA
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x19
lsr r0, r0, #0x1f
bne _02082A06
_020829FA:
cmp r4, #0x4
bne _02082A10
ldrh r0, [r3, #0x20]
lsl r0, r0, #0x18
lsr r0, r0, #0x1f
beq _02082A10
_02082A06:
add r1, r6, #0x1
add r0, r6, #0x0
lsl r1, r1, #0x18
lsr r6, r1, #0x18
strb r2, [r5, r0]
_02082A10:
ldr r0, [sp, #0x24]
add r2, r2, #0x1
add r3, #0x30
cmp r2, r0
blt _02082972
_02082A1A:
mov r0, #0xff
strb r0, [r5, r6]
ldr r0, [sp, #0x1c]
cmp r0, #0x0
beq _02082A26
b _02082B4E
_02082A26:
ldr r0, [sp, #0x8]
cmp r6, r0
bge _02082A30
bl GF_AssertFail
_02082A30:
mov r0, #0x0
str r0, [sp, #0x10]
cmp r6, #0x0
ble _02082A5A
mov r2, #0x30
_02082A3A:
ldrb r1, [r5, r0]
add r3, r1, #0x0
ldr r1, [sp, #0x14]
mul r3, r2
add r1, r1, r3
ldrh r1, [r1, #0x20]
lsl r1, r1, #0x14
lsr r1, r1, #0x1e
cmp r1, #0x3
bne _02082A54
ldr r1, [sp, #0x10]
add r1, r1, #0x1
str r1, [sp, #0x10]
_02082A54:
add r0, r0, #0x1
cmp r0, r6
blt _02082A3A
_02082A5A:
ldr r0, [sp, #0x10]
cmp r0, #0x0
ble _02082AA2
ldr r0, [sp, #0x4]
bl sub_02082878
ldr r1, [sp, #0x10]
bl _s32_div_f
mov r3, #0x0
cmp r6, #0x0
ble _02082AA2
mov r0, #0x30
_02082A74:
ldrb r4, [r5, r3]
add r2, r4, #0x0
ldr r4, [sp, #0x14]
mul r2, r0
add r2, r4, r2
ldrh r4, [r2, #0x20]
lsl r4, r4, #0x14
lsr r4, r4, #0x1e
cmp r4, #0x3
bne _02082A9C
cmp r1, #0x0
bne _02082A9A
add r4, sp, #0x28
mov r3, #0x6
_02082A90:
ldmia r2!, {r0-r1}
stmia r4!, {r0-r1}
sub r3, r3, #0x1
bne _02082A90
b _02082AA2
_02082A9A:
sub r1, r1, #0x1
_02082A9C:
add r3, r3, #0x1
cmp r3, r6
blt _02082A74
_02082AA2:
ldr r0, [sp, #0x8]
mov r1, #0x4
sub r4, r1, r0
add r0, r4, #0x0
str r4, [sp, #0xc]
cmp r0, #0x4
bge _02082B16
_02082AB0:
ldr r0, [sp, #0x4]
bl sub_02082878
add r1, r6, #0x0
bl _s32_div_f
lsl r0, r1, #0x10
lsr r2, r0, #0x10
ldrb r3, [r5, r2]
mov r0, #0x30
add r1, r3, #0x0
ldr r3, [sp, #0x14]
mul r1, r0
add r7, r3, r1
ldrh r1, [r7, #0x20]
lsl r1, r1, #0x14
lsr r1, r1, #0x1e
cmp r1, #0x3
bne _02082ADA
sub r4, r4, #0x1
b _02082B10
_02082ADA:
add r1, r4, #0x0
mul r1, r0
ldr r0, [sp, #0x4]
add r3, r0, r1
mov r0, #0x6
add r3, #0x10
mov r12, r0
_02082AE8:
ldmia r7!, {r0-r1}
stmia r3!, {r0-r1}
mov r0, r12
sub r0, r0, #0x1
mov r12, r0
bne _02082AE8
ldrb r1, [r5, r2]
add r0, r5, r2
cmp r1, #0xff
beq _02082B0A
_02082AFC:
ldrb r1, [r0, #0x1]
add r2, r2, #0x1
strb r1, [r0, #0x0]
ldrb r1, [r5, r2]
add r0, r5, r2
cmp r1, #0xff
bne _02082AFC
_02082B0A:
sub r0, r6, #0x1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_02082B10:
add r4, r4, #0x1
cmp r4, #0x4
blt _02082AB0
_02082B16:
ldr r0, [sp, #0x10]
cmp r0, #0x0
ble _02082B7E
ldr r0, [sp, #0xc]
lsl r0, r0, #0x10
lsr r4, r0, #0x10
ldr r0, [sp, #0x4]
bl sub_02082878
ldr r1, [sp, #0x8]
bl _s32_div_f
add r0, r4, r1
lsl r0, r0, #0x10
lsr r2, r0, #0x10
add r1, r2, #0x0
mov r0, #0x30
mul r1, r0
ldr r0, [sp, #0x4]
add r4, sp, #0x28
add r3, r0, r1
add r3, #0x10
mov r2, #0x6
_02082B44:
ldmia r4!, {r0-r1}
stmia r3!, {r0-r1}
sub r2, r2, #0x1
bne _02082B44
b _02082B7E
_02082B4E:
cmp r6, #0x4
bhs _02082B56
bl GF_AssertFail
_02082B56:
mov r6, #0x0
mov r7, #0x30
_02082B5A:
ldrb r0, [r5, r6]
ldr r3, [sp, #0x4]
mov r2, #0x6
add r1, r0, #0x0
ldr r0, [sp, #0x14]
mul r1, r7
add r4, r0, r1
add r3, #0x10
_02082B6A:
ldmia r4!, {r0-r1}
stmia r3!, {r0-r1}
sub r2, r2, #0x1
bne _02082B6A
ldr r0, [sp, #0x4]
add r6, r6, #0x1
add r0, #0x30
str r0, [sp, #0x4]
cmp r6, #0x4
blt _02082B5A
_02082B7E:
add r0, r5, #0x0
bl Heap_Free
ldr r0, [sp, #0x14]
bl Heap_Free
add sp, #0x58
pop {r3-r7, pc}
.balign 4
thumb_func_start sub_02082B90
sub_02082B90: ; 0x02082B90
push {r3-r7, lr}
sub sp, #0x18
str r0, [sp, #0x8]
mov r0, #0x1
add r3, r1, #0x0
str r0, [sp, #0x0]
mov r0, #0x5a
mov r1, #0x2
mov r2, #0x0
bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
ldr r1, _02082D10 ; =0x00000121
ldr r0, [sp, #0x8]
ldrb r0, [r0, r1]
cmp r0, #0x4
beq _02082BBA
cmp r0, #0x6
beq _02082BBA
cmp r0, #0x8
bne _02082BC0
_02082BBA:
mov r0, #0x0
str r0, [sp, #0xc]
b _02082BC8
_02082BC0:
ldr r0, [sp, #0x8]
add r1, r1, #0x6
ldrb r0, [r0, r1]
str r0, [sp, #0xc]
_02082BC8:
ldr r0, [sp, #0xc]
cmp r0, #0x4
blt _02082BD0
b _02082D06
_02082BD0:
mov r1, #0x30
mul r1, r0
ldr r0, [sp, #0x8]
add r7, r0, r1
ldr r0, [sp, #0xc]
lsl r1, r0, #0x2
ldr r0, [sp, #0x8]
add r6, r0, r1
_02082BE0:
ldr r1, _02082D14 ; =0x00000122
ldr r0, [sp, #0x8]
ldrb r0, [r0, r1]
cmp r0, #0xb
bhi _02082C6E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02082BF6: ; jump table (using 16-bit offset)
.short _02082C0E - _02082BF6 - 2; case 0
.short _02082C16 - _02082BF6 - 2; case 1
.short _02082C1E - _02082BF6 - 2; case 2
.short _02082C26 - _02082BF6 - 2; case 3
.short _02082C2E - _02082BF6 - 2; case 4
.short _02082C36 - _02082BF6 - 2; case 5
.short _02082C3E - _02082BF6 - 2; case 6
.short _02082C46 - _02082BF6 - 2; case 7
.short _02082C4E - _02082BF6 - 2; case 8
.short _02082C56 - _02082BF6 - 2; case 9
.short _02082C5E - _02082BF6 - 2; case 10
.short _02082C66 - _02082BF6 - 2; case 11
_02082C0E:
add r0, r7, #0x0
add r0, #0x32
ldrb r2, [r0, #0x0]
b _02082C74
_02082C16:
add r0, r7, #0x0
add r0, #0x33
ldrb r2, [r0, #0x0]
b _02082C74
_02082C1E:
add r0, r7, #0x0
add r0, #0x34
ldrb r2, [r0, #0x0]
b _02082C74
_02082C26:
add r0, r7, #0x0
add r0, #0x35
ldrb r2, [r0, #0x0]
b _02082C74
_02082C2E:
add r0, r7, #0x0
add r0, #0x36
ldrb r2, [r0, #0x0]
b _02082C74
_02082C36:
add r0, r7, #0x0
add r0, #0x37
ldrb r2, [r0, #0x0]
b _02082C74
_02082C3E:
add r0, r7, #0x0
add r0, #0x38
ldrb r2, [r0, #0x0]
b _02082C74
_02082C46:
add r0, r7, #0x0
add r0, #0x39
ldrb r2, [r0, #0x0]
b _02082C74
_02082C4E:
add r0, r7, #0x0
add r0, #0x3a
ldrb r2, [r0, #0x0]
b _02082C74
_02082C56:
add r0, r7, #0x0
add r0, #0x3b
ldrb r2, [r0, #0x0]
b _02082C74
_02082C5E:
add r0, r7, #0x0
add r0, #0x3c
ldrb r2, [r0, #0x0]
b _02082C74
_02082C66:
add r0, r7, #0x0
add r0, #0x3d
ldrb r2, [r0, #0x0]
b _02082C74
_02082C6E:
bl GF_AssertFail
mov r2, #0x0
_02082C74:
mov r0, #0x54
add r1, r2, #0x0
mul r1, r0
ldr r0, [sp, #0x14]
add r0, r0, r1
str r0, [sp, #0x10]
add r0, r6, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl sub_02027740
add r0, r6, #0x0
add r0, #0xf8
ldr r2, [sp, #0x10]
mov r3, #0x51
ldrsb r2, [r2, r3]
ldr r0, [r0, #0x0]
ldr r1, [r6, #0x0]
bl sub_02027914
ldr r0, [sp, #0x10]
mov r5, #0x0
add r0, #0x50
ldrb r0, [r0, #0x0]
cmp r0, #0x0
ble _02082CD2
ldr r4, [sp, #0x10]
_02082CAA:
ldrb r0, [r4, #0x2]
add r1, r5, #0x0
str r0, [sp, #0x0]
mov r0, #0x3
ldrsb r0, [r4, r0]
str r0, [sp, #0x4]
add r0, r6, #0x0
add r0, #0xf8
ldrb r2, [r4, #0x0]
ldrb r3, [r4, #0x1]
ldr r0, [r0, #0x0]
bl sub_02027964
ldr r0, [sp, #0x10]
add r5, r5, #0x1
add r0, #0x50
ldrb r0, [r0, #0x0]
add r4, r4, #0x4
cmp r5, r0
blt _02082CAA
_02082CD2:
ldr r1, [sp, #0x10]
add r0, r6, #0x0
add r1, #0x52
add r0, #0xf8
str r1, [sp, #0x10]
ldrb r1, [r1, #0x0]
ldr r0, [r0, #0x0]
bl sub_0202787C
mov r2, #0x12
add r0, r6, #0x0
add r0, #0xf8
ldr r1, [sp, #0x8]
lsl r2, r2, #0x4
ldrb r1, [r1, r2]
ldr r0, [r0, #0x0]
bl sub_020278AC
ldr r0, [sp, #0xc]
add r7, #0x30
add r0, r0, #0x1
add r6, r6, #0x4
str r0, [sp, #0xc]
cmp r0, #0x4
bge _02082D06
b _02082BE0
_02082D06:
ldr r0, [sp, #0x14]
bl Heap_Free
add sp, #0x18
pop {r3-r7, pc}
.balign 4
_02082D10: .word 0x00000121
_02082D14: .word 0x00000122
thumb_func_start sub_02082D18
sub_02082D18: ; 0x02082D18
push {r3-r7, lr}
add r6, r0, #0x0
mov r7, #0x12
mov r4, #0x0
add r5, r6, #0x0
lsl r7, r7, #0x4
_02082D24:
add r0, r5, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl sub_02027740
add r0, r5, #0x0
add r0, #0xf8
mov r2, #0x0
ldr r0, [r0, #0x0]
ldr r1, [r5, #0x0]
mvn r2, r2
bl sub_02027914
add r0, r5, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
mov r1, #0x0
bl sub_0202787C
add r0, r5, #0x0
add r0, #0xf8
ldrb r1, [r6, r7]
ldr r0, [r0, #0x0]
bl sub_020278AC
add r4, r4, #0x1
add r5, r5, #0x4
cmp r4, #0x4
blt _02082D24
pop {r3-r7, pc}
thumb_func_start sub_02082D60
sub_02082D60: ; 0x02082D60
push {r3-r7, lr}
sub sp, #0x20
add r7, r0, #0x0
add r6, r1, #0x0
ldrh r1, [r7, #0x20]
str r2, [sp, #0x10]
ldrh r0, [r7, #0x14]
lsl r1, r1, #0x12
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0x0
bl GenPersonalityByGenderAndNature
mov r1, #0x1
str r1, [sp, #0x0]
str r0, [sp, #0x4]
mov r0, #0x2
str r0, [sp, #0x8]
ldr r0, _02082E60 ; =0x0F0F0F0F
mov r2, #0xa
str r0, [sp, #0xc]
ldrh r1, [r7, #0x14]
add r0, r6, #0x0
mov r3, #0x20
bl CreateMon
mov r4, #0x0
add r5, r7, #0x0
_02082D9A:
ldrh r1, [r5, #0xc]
add r0, sp, #0x18
add r2, sp, #0x1c
strh r1, [r0, #0x6]
add r1, r4, #0x0
add r0, r6, #0x0
add r1, #0x36
add r2, #0x2
bl SetMonData
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, #0x4
blt _02082D9A
ldr r3, [sp, #0x10]
mov r0, #0x1
mov r1, #0x1a
mov r2, #0xc0
bl NewMsgDataFromNarc
ldrh r1, [r7, #0x16]
add r4, r0, #0x0
bl NewString_ReadMsgData
add r5, r0, #0x0
ldrh r1, [r7, #0x18]
add r0, r4, #0x0
bl NewString_ReadMsgData
str r0, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0x76
add r2, r5, #0x0
bl SetMonData
ldr r2, [sp, #0x14]
add r0, r6, #0x0
mov r1, #0x90
bl SetMonData
add r0, r5, #0x0
bl String_Delete
ldr r0, [sp, #0x14]
bl String_Delete
add r0, r4, #0x0
bl DestroyMsgData
add r2, sp, #0x1c
ldrb r1, [r7, #0x1a]
add r0, sp, #0x18
add r2, #0x1
strb r1, [r0, #0x5]
ldrb r1, [r7, #0x1b]
strb r1, [r0, #0x4]
ldrb r1, [r7, #0x1c]
strb r1, [r0, #0x3]
ldrb r1, [r7, #0x1d]
strb r1, [r0, #0x2]
ldrb r1, [r7, #0x1e]
strb r1, [r0, #0x1]
ldrb r1, [r7, #0x1f]
strb r1, [r0, #0x0]
add r0, r6, #0x0
mov r1, #0x13
bl SetMonData
add r0, r6, #0x0
mov r1, #0x14
add r2, sp, #0x1c
bl SetMonData
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x15
add r2, #0x3
bl SetMonData
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x16
add r2, #0x2
bl SetMonData
add r2, sp, #0x18
add r0, r6, #0x0
mov r1, #0x17
add r2, #0x1
bl SetMonData
add r0, r6, #0x0
mov r1, #0x18
add r2, sp, #0x18
bl SetMonData
add sp, #0x20
pop {r3-r7, pc}
nop
_02082E60: .word 0x0F0F0F0F
thumb_func_start sub_02082E64
sub_02082E64: ; 0x02082E64
push {r4-r7, lr}
sub sp, #0x24
add r6, r3, #0x0
add r5, r2, #0x0
lsl r2, r6, #0x18
str r0, [sp, #0x10]
add r7, r1, #0x0
add r0, sp, #0x14
add r1, r5, #0x0
lsr r2, r2, #0x18
ldr r4, [sp, #0x38]
bl sub_02068B68
lsl r1, r6, #0x18
add r0, r5, #0x0
lsr r1, r1, #0x18
bl sub_02068E14
add r5, r0, #0x0
cmp r4, #0x0
beq _02082EB0
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02082E98
bl GF_AssertFail
_02082E98:
add r1, sp, #0x14
ldrh r0, [r1, #0x0]
ldrh r1, [r1, #0x2]
ldr r2, [sp, #0x3c]
ldr r3, [r4, #0x0]
bl sub_02012420
add r0, sp, #0x14
ldrh r1, [r0, #0x4]
str r1, [r4, #0x8]
ldrh r0, [r0, #0x0]
str r0, [r4, #0x4]
_02082EB0:
ldr r0, [sp, #0x48]
ldr r3, [sp, #0x44]
str r0, [sp, #0x0]
str r7, [sp, #0x4]
mov r0, #0x0
str r0, [sp, #0x8]
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r2, [sp, #0x40]
add r1, sp, #0x14
add r3, r3, r5
bl sub_020073A0
add sp, #0x24
pop {r4-r7, pc}
.balign 4
thumb_func_start sub_02082ED0
sub_02082ED0: ; 0x02082ED0
push {r4-r7, lr}
sub sp, #0x24
str r0, [sp, #0x4]
str r1, [sp, #0x8]
ldr r0, [sp, #0x38]
add r7, r3, #0x0
mov r5, #0x0
str r2, [sp, #0xc]
str r0, [sp, #0x38]
mov r1, #0x1
ldr r3, [sp, #0x8]
mov r0, #0x5a
add r2, r5, #0x0
add r4, r5, #0x0
str r1, [sp, #0x0]
bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
mov r0, #0x5a
mov r1, #0x1
bl GetNarcMemberSizeByIdPair
lsr r0, r0, #0x3
str r0, [sp, #0x18]
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x8]
add r1, r1, #0x1
bl Heap_AllocAtEnd
ldr r1, [sp, #0x18]
add r6, r0, #0x0
ldr r0, [sp, #0x8]
add r1, r1, #0x1
bl Heap_AllocAtEnd
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
add r2, r5, #0x0
cmp r0, #0x0
ble _0208300A
ldr r3, [sp, #0x14]
_02082F22:
ldrh r0, [r3, #0x4]
mov r12, r0
lsl r0, r0, #0x14
lsr r1, r0, #0x1e
ldr r0, [sp, #0x38]
cmp r0, r1
bne _02083000
cmp r7, #0x0
bne _02082F5A
mov r0, r12
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
beq _02082F5A
cmp r0, #0x1
bls _02082F4E
add r0, r4, #0x1
lsl r0, r0, #0x18
add r1, r4, #0x0
lsr r4, r0, #0x18
ldr r0, [sp, #0x10]
strb r2, [r0, r1]
b _02083000
_02082F4E:
add r1, r5, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x18
lsr r5, r1, #0x18
strb r2, [r6, r0]
b _02083000
_02082F5A:
cmp r7, #0x1
bne _02082F84
ldrh r0, [r3, #0x4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1e
beq _02082F84
cmp r0, #0x1
bls _02082F78
add r0, r4, #0x1
lsl r0, r0, #0x18
add r1, r4, #0x0
lsr r4, r0, #0x18
ldr r0, [sp, #0x10]
strb r2, [r0, r1]
b _02083000
_02082F78:
add r1, r5, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x18
lsr r5, r1, #0x18
strb r2, [r6, r0]
b _02083000
_02082F84:
cmp r7, #0x2
bne _02082FAE
ldrh r0, [r3, #0x4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1e
beq _02082FAE
cmp r0, #0x1
bls _02082FA2
add r0, r4, #0x1
lsl r0, r0, #0x18
add r1, r4, #0x0
lsr r4, r0, #0x18
ldr r0, [sp, #0x10]
strb r2, [r0, r1]
b _02083000
_02082FA2:
add r1, r5, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x18
lsr r5, r1, #0x18
strb r2, [r6, r0]
b _02083000
_02082FAE:
cmp r7, #0x3
bne _02082FD8
ldrh r0, [r3, #0x4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
beq _02082FD8
cmp r0, #0x1
bls _02082FCC
add r0, r4, #0x1
lsl r0, r0, #0x18
add r1, r4, #0x0
lsr r4, r0, #0x18
ldr r0, [sp, #0x10]
strb r2, [r0, r1]
b _02083000
_02082FCC:
add r1, r5, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x18
lsr r5, r1, #0x18
strb r2, [r6, r0]
b _02083000
_02082FD8:
cmp r7, #0x4
bne _02083000
ldrh r0, [r3, #0x4]
lsl r0, r0, #0x16
lsr r0, r0, #0x1e
beq _02083000
cmp r0, #0x1
bls _02082FF6
add r0, r4, #0x1
lsl r0, r0, #0x18
add r1, r4, #0x0
lsr r4, r0, #0x18
ldr r0, [sp, #0x10]
strb r2, [r0, r1]
b _02083000
_02082FF6:
add r1, r5, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x18
lsr r5, r1, #0x18
strb r2, [r6, r0]
_02083000:
ldr r0, [sp, #0x18]
add r2, r2, #0x1
add r3, #0x8
cmp r2, r0
blt _02082F22
_0208300A:
mov r1, #0xff
ldr r0, [sp, #0x10]
strb r1, [r6, r5]
strb r1, [r0, r4]
cmp r5, #0x2
bhs _0208301A
bl GF_AssertFail
_0208301A:
ldr r2, [sp, #0x4]
mov r3, #0x0
_0208301E:
ldrb r0, [r6, r3]
ldr r5, [sp, #0x14]
add r3, r3, #0x1
lsl r1, r0, #0x3
ldr r0, [sp, #0x14]
ldrh r5, [r5, r1]
add r0, r0, r1
add r1, r2, #0x0
add r1, #0xd0
strh r5, [r1, #0x0]
add r1, r2, #0x0
ldrh r5, [r0, #0x2]
add r1, #0xd2
strh r5, [r1, #0x0]
add r1, r2, #0x0
ldrh r5, [r0, #0x4]
add r1, #0xd4
strh r5, [r1, #0x0]
ldrh r1, [r0, #0x6]
add r0, r2, #0x0
add r0, #0xd6
add r2, #0x8
strh r1, [r0, #0x0]
cmp r3, #0x2
blt _0208301E
cmp r4, #0x1
bhs _02083058
bl GF_AssertFail
_02083058:
ldr r0, [sp, #0x4]
bl sub_02082878
add r1, r4, #0x0
bl _s32_div_f
lsl r0, r1, #0x10
lsr r1, r0, #0x10
ldr r0, [sp, #0x10]
ldrb r0, [r0, r1]
ldr r1, [sp, #0x14]
lsl r2, r0, #0x3
ldr r0, [sp, #0x14]
add r0, r0, r2
ldrh r2, [r1, r2]
ldr r1, [sp, #0x4]
add r1, #0xe0
strh r2, [r1, #0x0]
ldr r1, [sp, #0x4]
ldrh r2, [r0, #0x2]
add r1, #0xe2
strh r2, [r1, #0x0]
ldr r1, [sp, #0x4]
ldrh r2, [r0, #0x4]
add r1, #0xe4
strh r2, [r1, #0x0]
ldrh r1, [r0, #0x6]
ldr r0, [sp, #0x4]
ldr r2, _02083110 ; =0x0000011E
add r0, #0xe6
strh r1, [r0, #0x0]
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x4]
strb r1, [r0, r2]
add r2, r0, #0x0
add r0, r1, #0x0
lsl r1, r0, #0x3
add r2, #0xd0
ldrh r4, [r2, r1]
add r0, sp, #0x1c
add r3, r2, r1
strh r4, [r0, #0x0]
ldrh r4, [r3, #0x2]
strh r4, [r0, #0x2]
ldrh r4, [r3, #0x4]
strh r4, [r0, #0x4]
ldrh r4, [r3, #0x6]
strh r4, [r0, #0x6]
ldr r4, [sp, #0x4]
add r4, #0xe0
ldrh r4, [r4, #0x0]
strh r4, [r2, r1]
ldr r1, [sp, #0x4]
add r1, #0xe2
ldrh r1, [r1, #0x0]
strh r1, [r3, #0x2]
ldr r1, [sp, #0x4]
add r1, #0xe4
ldrh r1, [r1, #0x0]
strh r1, [r3, #0x4]
ldr r1, [sp, #0x4]
add r1, #0xe6
ldrh r1, [r1, #0x0]
strh r1, [r3, #0x6]
ldr r1, [sp, #0x4]
ldrh r2, [r0, #0x0]
add r1, #0xe0
strh r2, [r1, #0x0]
ldr r1, [sp, #0x4]
ldrh r2, [r0, #0x2]
add r1, #0xe2
strh r2, [r1, #0x0]
ldr r1, [sp, #0x4]
ldrh r2, [r0, #0x4]
add r1, #0xe4
strh r2, [r1, #0x0]
ldrh r1, [r0, #0x6]
ldr r0, [sp, #0x4]
add r0, #0xe6
str r0, [sp, #0x4]
strh r1, [r0, #0x0]
ldr r0, [sp, #0x10]
bl Heap_Free
add r0, r6, #0x0
bl Heap_Free
ldr r0, [sp, #0x14]
bl Heap_Free
add sp, #0x24
pop {r4-r7, pc}
.balign 4
_02083110: .word 0x0000011E
thumb_func_start sub_02083114
sub_02083114: ; 0x02083114
push {r4, lr}
add r4, r0, #0x0
cmp r4, #0x18
blo _02083120
bl GF_AssertFail
_02083120:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _0208312C ; =UNK_020FBC6C
ldrsb r0, [r0, r1]
pop {r4, pc}
.balign 4
_0208312C: .word UNK_020FBC6C
thumb_func_start sub_02083130
sub_02083130: ; 0x02083130
push {r4-r6, lr}
add r5, r0, #0x0
add r4, r1, #0x0
add r6, r2, #0x0
cmp r5, #0x18
blo _02083140
bl GF_AssertFail
_02083140:
mov r0, #0x1a
add r1, r5, #0x0
mul r1, r0
ldr r0, _02083154 ; =UNK_020FBC68
ldrh r0, [r0, r1]
str r0, [r4, #0x0]
ldr r0, _02083158 ; =UNK_020FBC6A
ldrh r0, [r0, r1]
str r0, [r6, #0x0]
pop {r4-r6, pc}
.balign 4
_02083154: .word UNK_020FBC68
_02083158: .word UNK_020FBC6A
thumb_func_start sub_0208315C
sub_0208315C: ; 0x0208315C
push {r4, lr}
add r4, r0, #0x0
cmp r4, #0x18
blo _02083168
bl GF_AssertFail
_02083168:
add r4, #0x2d
add r0, r4, #0x0
pop {r4, pc}
.balign 4
thumb_func_start sub_02083170
sub_02083170: ; 0x02083170
push {r3-r7, lr}
add r4, r0, #0x0
add r7, r1, #0x0
add r5, r2, #0x0
add r6, r3, #0x0
cmp r4, #0x18
blo _02083182
bl GF_AssertFail
_02083182:
cmp r7, #0x4
bhi _0208319C
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02083192: ; jump table (using 16-bit offset)
.short _0208319C - _02083192 - 2; case 0
.short _020831B0 - _02083192 - 2; case 1
.short _020831C4 - _02083192 - 2; case 2
.short _020831D8 - _02083192 - 2; case 3
.short _020831EC - _02083192 - 2; case 4
_0208319C:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _02083200 ; =UNK_020FBC6E
ldrh r0, [r0, r1]
str r0, [r5, #0x0]
ldr r0, _02083204 ; =UNK_020FBC70
ldrb r0, [r0, r1]
str r0, [r6, #0x0]
pop {r3-r7, pc}
_020831B0:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _02083208 ; =UNK_020FBC72
ldrh r0, [r0, r1]
str r0, [r5, #0x0]
ldr r0, _0208320C ; =UNK_020FBC74
ldrb r0, [r0, r1]
str r0, [r6, #0x0]
pop {r3-r7, pc}
_020831C4:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _02083210 ; =UNK_020FBC76
ldrh r0, [r0, r1]
str r0, [r5, #0x0]
ldr r0, _02083214 ; =UNK_020FBC78
ldrb r0, [r0, r1]
str r0, [r6, #0x0]
pop {r3-r7, pc}
_020831D8:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _02083218 ; =UNK_020FBC7A
ldrh r0, [r0, r1]
str r0, [r5, #0x0]
ldr r0, _0208321C ; =UNK_020FBC7C
ldrb r0, [r0, r1]
str r0, [r6, #0x0]
pop {r3-r7, pc}
_020831EC:
mov r0, #0x1a
add r1, r4, #0x0
mul r1, r0
ldr r0, _02083220 ; =UNK_020FBC7E
ldrh r0, [r0, r1]
str r0, [r5, #0x0]
ldr r0, _02083224 ; =UNK_020FBC80
ldrb r0, [r0, r1]
str r0, [r6, #0x0]
pop {r3-r7, pc}
.balign 4
_02083200: .word UNK_020FBC6E
_02083204: .word UNK_020FBC70
_02083208: .word UNK_020FBC72
_0208320C: .word UNK_020FBC74
_02083210: .word UNK_020FBC76
_02083214: .word UNK_020FBC78
_02083218: .word UNK_020FBC7A
_0208321C: .word UNK_020FBC7C
_02083220: .word UNK_020FBC7E
_02083224: .word UNK_020FBC80
thumb_func_start sub_02083228
sub_02083228: ; 0x02083228
cmp r2, #0x1
bne _02083230
mov r0, #0x33
bx lr
_02083230:
cmp r1, #0x3
beq _0208323C
cmp r1, #0x5
beq _0208323C
cmp r1, #0x7
bne _02083240
_0208323C:
mov r0, #0x32
bx lr
_02083240:
cmp r0, #0x3
bhi _02083264
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02083250: ; jump table (using 16-bit offset)
.short _02083258 - _02083250 - 2; case 0
.short _0208325C - _02083250 - 2; case 1
.short _02083260 - _02083250 - 2; case 2
.short _02083264 - _02083250 - 2; case 3
_02083258:
mov r0, #0x2e
bx lr
_0208325C:
mov r0, #0x2f
bx lr
_02083260:
mov r0, #0x30
bx lr
_02083264:
mov r0, #0x31
bx lr
thumb_func_start sub_02083268
sub_02083268: ; 0x02083268
cmp r0, #0x4
bhi _02083292
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02083278: ; jump table (using 16-bit offset)
.short _02083282 - _02083278 - 2; case 0
.short _02083286 - _02083278 - 2; case 1
.short _0208328A - _02083278 - 2; case 2
.short _0208328E - _02083278 - 2; case 3
.short _02083292 - _02083278 - 2; case 4
_02083282:
mov r0, #0x2e
bx lr
_02083286:
mov r0, #0x2f
bx lr
_0208328A:
mov r0, #0x30
bx lr
_0208328E:
mov r0, #0x31
bx lr
_02083292:
mov r0, #0x33
bx lr
.balign 4
thumb_func_start sub_02083298
sub_02083298: ; 0x02083298
ldr r3, _020832A0 ; =sub_020832A4
mov r1, #0x2
bx r3
nop
_020832A0: .word sub_020832A4
thumb_func_start sub_020832A4
sub_020832A4: ; 0x020832A4
cmp r1, #0x5
bne _020832AC
mov r0, #0x34
bx lr
_020832AC:
cmp r0, #0x4
bhi _020832D6
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_020832BC: ; jump table (using 16-bit offset)
.short _020832C6 - _020832BC - 2; case 0
.short _020832CA - _020832BC - 2; case 1
.short _020832CE - _020832BC - 2; case 2
.short _020832D2 - _020832BC - 2; case 3
.short _020832D6 - _020832BC - 2; case 4
_020832C6:
mov r0, #0x29
bx lr
_020832CA:
mov r0, #0x2a
bx lr
_020832CE:
mov r0, #0x2b
bx lr
_020832D2:
mov r0, #0x2c
bx lr
_020832D6:
mov r0, #0x2d
bx lr
.balign 4
thumb_func_start sub_020832DC
sub_020832DC: ; 0x020832DC
mov r1, #0x3
sub r0, r1, r0
bx lr
.balign 4
thumb_func_start sub_020832E4
sub_020832E4: ; 0x020832E4
mov r1, #0x3
sub r0, r1, r0
bx lr
.balign 4
thumb_func_start sub_020832EC
sub_020832EC: ; 0x020832EC
ldr r1, _02083304 ; =0x00000121
ldrb r0, [r0, r1]
cmp r0, #0x3
beq _020832FC
cmp r0, #0x5
beq _020832FC
cmp r0, #0x7
bne _02083300
_020832FC:
mov r0, #0x1
bx lr
_02083300:
mov r0, #0x0
bx lr
.balign 4
_02083304: .word 0x00000121
thumb_func_start sub_02083308
sub_02083308: ; 0x02083308
push {r4-r5}
sub sp, #0x50
ldr r5, _02083368 ; =UNK_020FBC18
add r4, sp, #0x0
mov r3, #0x28
_02083312:
ldrh r2, [r5, #0x0]
add r5, r5, #0x2
strh r2, [r4, #0x0]
add r4, r4, #0x2
sub r3, r3, #0x1
bne _02083312
mov r3, #0xc
mul r3, r1
add r1, r0, r3
mov r3, #0x4a
lsl r3, r3, #0x2
add r4, r3, #0x0
add r4, #0x49
ldrb r4, [r0, r4]
mov r2, #0x0
ldrsh r1, [r1, r3]
cmp r4, #0x1
bne _0208333A
add r4, sp, #0x40
b _02083344
_0208333A:
sub r3, #0x8
ldrb r0, [r0, r3]
add r4, sp, #0x0
lsl r0, r0, #0x4
add r4, r4, r0
_02083344:
mov r3, #0x0
_02083346:
ldrh r0, [r4, #0x0]
cmp r1, r0
bge _02083354
add sp, #0x50
add r0, r2, #0x0
pop {r4-r5}
bx lr
_02083354:
add r3, r3, #0x1
add r2, r2, #0x1
add r4, r4, #0x2
cmp r3, #0x8
blt _02083346
add r0, r2, #0x0
add sp, #0x50
pop {r4-r5}
bx lr
nop
_02083368: .word UNK_020FBC18
thumb_func_start sub_0208336C
sub_0208336C: ; 0x0208336C
push {r4-r5}
sub sp, #0x10
ldr r5, _020833CC ; =UNK_020FBC08
add r4, sp, #0x0
mov r3, #0xf
_02083376:
ldrb r2, [r5, #0x0]
add r5, r5, #0x1
strb r2, [r4, #0x0]
add r4, r4, #0x1
sub r3, r3, #0x1
bne _02083376
mov r2, #0xc
mul r2, r1
ldr r3, _020833D0 ; =0x0000012A
add r1, r0, r2
ldrsh r1, [r1, r3]
cmp r1, #0x0
bne _02083398
add sp, #0x10
mov r0, #0x0
pop {r4-r5}
bx lr
_02083398:
add r2, r3, #0x0
add r2, #0x47
ldrb r2, [r0, r2]
cmp r2, #0x1
bne _020833A6
add r4, sp, #0xc
b _020833B2
_020833A6:
sub r3, #0xa
ldrb r2, [r0, r3]
add r4, sp, #0x0
lsl r0, r2, #0x1
add r0, r2, r0
add r4, r4, r0
_020833B2:
mov r0, #0x1
mov r3, #0x0
_020833B6:
ldrb r2, [r4, r3]
cmp r1, r2
ble _020833C4
add r3, r3, #0x1
add r0, r0, #0x1
cmp r3, #0x3
blt _020833B6
_020833C4:
add sp, #0x10
pop {r4-r5}
bx lr
nop
_020833CC: .word UNK_020FBC08
_020833D0: .word 0x0000012A
thumb_func_start sub_020833D4
sub_020833D4: ; 0x020833D4
push {r3, lr}
cmp r0, #0x0
bne _020833EE
mov r0, #0x1
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x3
bl sub_02002B7C
mov r0, #0x1
bl sub_02002BB8
pop {r3, pc}
_020833EE:
mov r0, #0x1
bl sub_02002B7C
mov r0, #0x0
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl sub_02002BB8
pop {r3, pc}
.balign 4
thumb_func_start sub_02083404
sub_02083404: ; 0x02083404
push {r3, lr}
mov r0, #0x0
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl sub_02002B7C
mov r0, #0x0
bl sub_02002BB8
pop {r3, pc}
.balign 4
thumb_func_start sub_0208341C
sub_0208341C: ; 0x0208341C
push {r3, lr}
cmp r1, #0x4
bhi _0208344C
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #0x6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0208342E: ; jump table (using 16-bit offset)
.short _02083438 - _0208342E - 2; case 0
.short _0208343C - _0208342E - 2; case 1
.short _02083440 - _0208342E - 2; case 2
.short _02083444 - _0208342E - 2; case 3
.short _02083448 - _0208342E - 2; case 4
_02083438:
add r0, #0x7a
pop {r3, pc}
_0208343C:
add r0, #0x7e
pop {r3, pc}
_02083440:
add r0, #0x82
pop {r3, pc}
_02083444:
add r0, #0x86
pop {r3, pc}
_02083448:
add r0, #0x8a
pop {r3, pc}
_0208344C:
bl GF_AssertFail
mov r0, #0x7a
pop {r3, pc}
thumb_func_start sub_02083454
sub_02083454: ; 0x02083454
push {r4-r5, lr}
sub sp, #0xc
add r5, r0, #0x0
mov r4, #0x0
cmp r5, #0x3
beq _02083464
cmp r1, #0x1
bne _02083474
_02083464:
bl LCRandom
mov r1, #0xc
bl _s32_div_f
add sp, #0xc
add r0, r1, #0x0
pop {r4-r5, pc}
_02083474:
add r0, sp, #0x0
add r1, r4, #0x0
mov r2, #0xc
bl MI_CpuFill8
mov r1, #0x2
add r0, sp, #0x0
strb r1, [r0, #0x0]
mov r1, #0x3
strb r1, [r0, #0x1]
mov r1, #0x4
add r4, r4, #0x3
strb r1, [r0, #0x2]
cmp r5, #0x1
blt _020834A6
mov r0, #0x0
add r2, sp, #0x0
strb r0, [r2, r4]
mov r1, #0x1
add r0, r4, #0x1
strb r1, [r2, r0]
add r1, r4, #0x2
mov r0, #0x5
add r4, r4, #0x3
strb r0, [r2, r1]
_020834A6:
cmp r5, #0x2
blt _020834BE
mov r0, #0x6
add r2, sp, #0x0
strb r0, [r2, r4]
mov r1, #0x7
add r0, r4, #0x1
strb r1, [r2, r0]
add r1, r4, #0x2
mov r0, #0x8
add r4, r4, #0x3
strb r0, [r2, r1]
_020834BE:
bl LCRandom
add r1, r4, #0x0
bl _s32_div_f
add r0, sp, #0x0
ldrb r0, [r0, r1]
add sp, #0xc
pop {r4-r5, pc}