pmd-sky/asm/main_02010FC4.s
2025-08-13 17:44:38 -04:00

3153 lines
57 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_02010FC4.inc"
.text
arm_func_start IsExclusiveItemIdForMonster
IsExclusiveItemIdForMonster: ; 0x02010FC4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
mov r6, r3
bl GetItemCategory
cmp r0, #0xf
movne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r8, #0x258
mov r5, #0
ble _02011000
mov r0, r8
bl FemaleToMaleForm
mov r8, r0
_02011000:
mov r0, sb
bl GetExclusiveItemType
movs r4, r0
moveq r5, #0
beq _0201108C
sub r0, r4, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #3
mov r0, sb
bhi _0201104C
bl GetExclusiveItemParameter
and r0, r0, #0xff
cmp r7, r0
cmpne r6, r0
moveq r5, #1
b _0201108C
_0201104C:
bl GetExclusiveItemParameter
mov r6, r0
cmp r4, #9
bne _02011068
cmp r8, r6
moveq r5, #1
b _0201108C
_02011068:
cmp r4, #0xa
bne _0201107C
cmp r8, r6
moveq r5, #1
b _0201108C
_0201107C:
mov r0, r8
bl GetFamilyIndex
cmp r6, r0
moveq r5, #1
_0201108C:
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end IsExclusiveItemIdForMonster
arm_func_start IsExclusiveItemForMonster
IsExclusiveItemForMonster: ; 0x02011094
stmdb sp!, {r3, lr}
ldrb ip, [r0]
tst ip, #1
movne lr, #1
moveq lr, #0
tst lr, #0xff
moveq r0, #0
ldmeqia sp!, {r3, pc}
tst ip, #8
movne ip, #1
moveq ip, #0
tst ip, #0xff
movne r0, #0
ldmneia sp!, {r3, pc}
ldrsh r0, [r0, #4]
bl IsExclusiveItemIdForMonster
ldmia sp!, {r3, pc}
arm_func_end IsExclusiveItemForMonster
arm_func_start BagHasExclusiveItemTypeForMonster
BagHasExclusiveItemTypeForMonster: ; 0x020110D8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
bl GetCurrentBagCapacity
mov r4, r0, lsl #0x10
mov r5, #0
ldr fp, _02011164 ; =EXCLUSIVE_ITEM_EFFECT_DATA
b _02011154
_02011100:
ldr r0, _02011168 ; =BAG_ITEMS_PTR_MIRROR
mov r1, sb
ldr r0, [r0]
mov r2, r8
ldr r3, [r0, #0x384]
mov r0, #6
smlabb r6, r5, r0, r3
mov r0, r6
mov r3, r7
bl IsExclusiveItemForMonster
cmp r0, #0
beq _02011148
ldrsh r0, [r6, #4]
bl GetExclusiveItemOffset
ldrb r0, [fp, r0, lsl #1]
cmp sl, r0
ldreqsh r0, [r6, #4]
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_02011148:
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
_02011154:
cmp r5, r4, asr #16
blt _02011100
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02011164: .word EXCLUSIVE_ITEM_EFFECT_DATA
_02011168: .word BAG_ITEMS_PTR_MIRROR
arm_func_end BagHasExclusiveItemTypeForMonster
arm_func_start GetExclusiveItemForMonsterFromBag
GetExclusiveItemForMonsterFromBag: ; 0x0201116C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov sb, r1
mov r8, r2
mov fp, r3
ldr r7, [sp, #0x28]
bl GetCurrentBagCapacity
mov r4, r0, lsl #0x10
mov r5, #0
b _02011208
_02011194:
ldr r0, _02011218 ; =BAG_ITEMS_PTR_MIRROR
mov r1, r8
ldr r0, [r0]
mov r2, fp
ldr r3, [r0, #0x384]
mov r0, #6
smlabb r6, r5, r0, r3
mov r0, r6
mov r3, r7
bl IsExclusiveItemForMonster
cmp r0, #0
beq _020111FC
ldrsh r0, [r6, #4]
bl GetExclusiveItemOffset
ldr r1, _0201121C ; =EXCLUSIVE_ITEM_EFFECT_DATA
ldrb r0, [r1, r0, lsl #1]
cmp sb, r0
bne _020111FC
ldrh r1, [r6]
mov r0, #1
strh r1, [sl]
ldrh r1, [r6, #2]
strh r1, [sl, #2]
ldrh r1, [r6, #4]
strh r1, [sl, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020111FC:
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
_02011208:
cmp r5, r4, asr #16
blt _02011194
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02011218: .word BAG_ITEMS_PTR_MIRROR
_0201121C: .word EXCLUSIVE_ITEM_EFFECT_DATA
arm_func_end GetExclusiveItemForMonsterFromBag
arm_func_start sub_02011220
sub_02011220: ; 0x02011220
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x68
mov r8, r0
mov r7, r1
mov fp, r2
str r3, [sp, #4]
bl GetCurrentBagCapacity
mov sb, r0, lsl #0x10
mov r0, r8
mov r1, #0x18
mov r5, #0
bl MemZero
mov r4, r5
b _0201130C
_02011258:
ldr r1, _0201138C ; =BAG_ITEMS_PTR_MIRROR
mov r0, #6
ldr r1, [r1]
smulbb r6, r4, r0
ldr r0, [r1, #0x384]
ldr r3, [sp, #4]
mov r1, r7
mov r2, fp
add r0, r0, r6
bl IsExclusiveItemForMonster
cmp r0, #0
beq _02011300
ldr r0, _0201138C ; =BAG_ITEMS_PTR_MIRROR
mov lr, #0
mov ip, lr
ldr sl, [r0]
b _020112D8
_0201129C:
ldr r3, [sl, #0x384]
mov r1, ip, lsl #1
add r0, sp, #8
ldrsh r2, [r0, r1]
add r0, r3, r6
ldrsh r1, [r0, #4]
mov r0, #6
smlabb r0, r2, r0, r3
ldrsh r0, [r0, #4]
cmp r0, r1
moveq lr, #1
beq _020112E0
add r0, ip, #1
mov r0, r0, lsl #0x10
mov ip, r0, asr #0x10
_020112D8:
cmp ip, r5
blt _0201129C
_020112E0:
cmp lr, #0
bne _02011300
add r0, r5, #1
mov r1, r0, lsl #0x10
mov r2, r5, lsl #1
add r0, sp, #8
strh r4, [r0, r2]
mov r5, r1, asr #0x10
_02011300:
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_0201130C:
cmp r4, sb, asr #16
blt _02011258
mov sl, #0
add r4, r8, #3
add r7, sp, #8
ldr r6, _02011390 ; =EXCLUSIVE_ITEM_EFFECT_DATA
ldr fp, _0201138C ; =BAG_ITEMS_PTR_MIRROR
b _0201137C
_0201132C:
mov r0, sl, lsl #1
ldr r2, [fp]
ldrsh r1, [r7, r0]
ldr r2, [r2, #0x384]
mov r0, #6
smlabb sb, r1, r0, r2
ldrsh r0, [sb, #4]
bl GetExclusiveItemOffset
ldrb r1, [r6, r0, lsl #1]
add r0, r8, #4
bl SetExclusiveItemEffect
str r4, [sp]
ldrsh r0, [sb, #4]
mov r1, r8
add r2, r8, #1
add r3, r8, #2
bl ApplyExclusiveItemStatBoosts
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, asr #0x10
_0201137C:
cmp sl, r5
blt _0201132C
add sp, sp, #0x68
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201138C: .word BAG_ITEMS_PTR_MIRROR
_02011390: .word EXCLUSIVE_ITEM_EFFECT_DATA
arm_func_end sub_02011220
arm_func_start GetHpBoostFromExclusiveItems
GetHpBoostFromExclusiveItems: ; 0x02011394
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
add r0, r5, #4
mov r1, #0x4c
mov r4, #0
bl ExclusiveItemEffectFlagTest
cmp r0, #0
ldrne r0, _0201141C ; =_020A1878
mov r1, #0x4d
ldrnesh r0, [r0]
addne r0, r4, r0
movne r0, r0, lsl #0x10
movne r4, r0, asr #0x10
add r0, r5, #4
bl ExclusiveItemEffectFlagTest
cmp r0, #0
ldrne r0, _0201141C ; =_020A1878
mov r1, #0x4e
ldrnesh r0, [r0]
addne r0, r4, r0, lsl #1
movne r0, r0, lsl #0x10
movne r4, r0, asr #0x10
add r0, r5, #4
bl ExclusiveItemEffectFlagTest
cmp r0, #0
beq _02011414
ldr r0, _0201141C ; =_020A1878
ldrsh r0, [r0]
add r0, r0, r0, lsl #1
add r0, r4, r0
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_02011414:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0201141C: .word _020A1878
arm_func_end GetHpBoostFromExclusiveItems
arm_func_start sub_02011420
sub_02011420: ; 0x02011420
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov r1, #0
bl GetType
mov r4, r0
mov r0, sl
mov r1, #1
bl GetType
mov r5, r0
mov r0, #8
mov r1, #0
bl MemAlloc
mov r6, r0
mov r0, #0xaf0
mov r1, #0
bl MemAlloc
ldr fp, _020114F4 ; =0x00000578
mov r8, r0
mov sb, #0
mov r7, #0x1bc
_02011470:
mov r0, r7
mov r1, sl
mov r2, r4
mov r3, r5
bl IsExclusiveItemIdForMonster
cmp r0, #0
addne r0, sb, #1
movne r1, sb, lsl #1
movne r0, r0, lsl #0x10
movne sb, r0, asr #0x10
add r0, r7, #1
mov r0, r0, lsl #0x10
strneh r7, [r8, r1]
cmp fp, r0, asr #16
mov r7, r0, asr #0x10
bgt _02011470
mov r0, sb, lsl #1
mov r1, #0
bl MemAlloc
stmia r6, {r0, sb}
mov r3, #0
b _020114DC
_020114C8:
mov r2, r3, lsl #1
ldrsh r1, [r8, r2]
ldr r0, [r6]
add r3, r3, #1
strh r1, [r0, r2]
_020114DC:
cmp r3, sb
blt _020114C8
mov r0, r8
bl MemFree
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020114F4: .word 0x00000578
arm_func_end sub_02011420
arm_func_start sub_020114F8
sub_020114F8: ; 0x020114F8
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
bl MemFree
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end sub_020114F8
arm_func_start ApplyGummiBoostsToGroundMonster
ApplyGummiBoostsToGroundMonster: ; 0x02011528
stmdb sp!, {lr}
sub sp, sp, #0xc
mov ip, r0
stmia sp, {r1, r2, r3}
add r0, ip, #4
add r1, ip, #8
add r2, ip, #0xc
add r3, ip, #0xe
bl ApplyGummiBoostsGroundMode
add sp, sp, #0xc
ldmia sp!, {pc}
arm_func_end ApplyGummiBoostsToGroundMonster
arm_func_start ApplyGummiBoostsToTeamMember
ApplyGummiBoostsToTeamMember: ; 0x02011554
stmdb sp!, {lr}
sub sp, sp, #0xc
mov ip, r0
stmia sp, {r1, r2, r3}
add r0, ip, #0xc
add r1, ip, #6
add r2, ip, #0x12
add r3, ip, #0x14
bl ApplyGummiBoostsGroundMode
add sp, sp, #0xc
ldmia sp!, {pc}
arm_func_end ApplyGummiBoostsToTeamMember
arm_func_start ApplySitrusBerryBoostToGroundMonster
ApplySitrusBerryBoostToGroundMonster: ; 0x02011580
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _020115B8 ; =SITRUS_BERRY_FULL_HP_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrsh r4, [r7, #0xa]
mov r6, r1
add r0, r7, #0xa
mov r1, r5
bl sub_02054FB8
cmp r6, #0
strne r5, [r6]
ldrsh r0, [r7, #0xa]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020115B8: .word SITRUS_BERRY_FULL_HP_BOOST
arm_func_end ApplySitrusBerryBoostToGroundMonster
arm_func_start ApplyLifeSeedBoostToGroundMonster
ApplyLifeSeedBoostToGroundMonster: ; 0x020115BC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _020115F4 ; =LIFE_SEED_HP_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrsh r4, [r7, #0xa]
mov r6, r1
add r0, r7, #0xa
mov r1, r5
bl sub_02054FB8
cmp r6, #0
strne r5, [r6]
ldrsh r0, [r7, #0xa]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020115F4: .word LIFE_SEED_HP_BOOST
arm_func_end ApplyLifeSeedBoostToGroundMonster
arm_func_start ApplyGinsengToGroundMonster
ApplyGinsengToGroundMonster: ; 0x020115F8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r5, r0
mov r0, #0x64
mov sb, r1
mov r8, r2
mvn r4, #0
mov r6, #0
bl RandInt
ldr r1, _02011708 ; =GINSENG_CHANCE_3
mov ip, #0
ldrsh r1, [r1]
mov r2, #1
cmp r0, r1
movlt r7, #3
movge r7, #1
mov r1, ip
mov r0, #6
b _02011664
_02011640:
mla r3, ip, r0, r5
ldrb r3, [r3, #0x22]
tst r3, #1
movne r3, r2
moveq r3, r1
tst r3, #0xff
movne r4, ip
bne _0201166C
add ip, ip, #1
_02011664:
cmp ip, #4
blt _02011640
_0201166C:
mvn r0, #0
cmp r4, r0
bne _02011698
cmp sb, #0
movne r0, #0
strneh r0, [sb]
cmp r8, #0
movne r0, #0
strne r0, [r8]
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02011698:
add r1, r5, #0x22
mov r0, #6
mla r5, r4, r0, r1
mov r0, r5
bl GetMoveBasePowerGround
cmp r0, #0
beq _020116E4
mov r0, r5
ldrb r4, [r5, #4]
bl GetMoveMaxGinsengBoostGround
ldrb r1, [r5, #4]
add r2, r1, r7
and r1, r2, #0xff
strb r2, [r5, #4]
cmp r1, r0
strgeb r0, [r5, #4]
ldrb r0, [r5, #4]
cmp r4, r0
movne r6, #1
_020116E4:
cmp sb, #0
ldrneh r0, [r5, #2]
strneh r0, [sb]
cmp r8, #0
strne r7, [r8]
cmp r6, #0
moveq r7, #0
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02011708: .word GINSENG_CHANCE_3
arm_func_end ApplyGinsengToGroundMonster
arm_func_start ApplyProteinBoostToGroundMonster
ApplyProteinBoostToGroundMonster: ; 0x0201170C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02011744 ; =PROTEIN_STAT_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrb r4, [r7, #0xc]
mov r6, r1
add r0, r7, #0xc
mov r1, r5
bl sub_02054FEC
cmp r6, #0
strne r5, [r6]
ldrb r0, [r7, #0xc]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02011744: .word PROTEIN_STAT_BOOST
arm_func_end ApplyProteinBoostToGroundMonster
arm_func_start ApplyCalciumBoostToGroundMonster
ApplyCalciumBoostToGroundMonster: ; 0x02011748
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02011780 ; =CALCIUM_STAT_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrb r4, [r7, #0xd]
mov r6, r1
add r0, r7, #0xd
mov r1, r5
bl sub_02054FEC
cmp r6, #0
strne r5, [r6]
ldrb r0, [r7, #0xd]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02011780: .word CALCIUM_STAT_BOOST
arm_func_end ApplyCalciumBoostToGroundMonster
arm_func_start ApplyIronBoostToGroundMonster
ApplyIronBoostToGroundMonster: ; 0x02011784
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _020117BC ; =IRON_STAT_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrb r4, [r7, #0xe]
mov r6, r1
add r0, r7, #0xe
mov r1, r5
bl sub_02055020
cmp r6, #0
strne r5, [r6]
ldrb r0, [r7, #0xe]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020117BC: .word IRON_STAT_BOOST
arm_func_end ApplyIronBoostToGroundMonster
arm_func_start ApplyZincBoostToGroundMonster
ApplyZincBoostToGroundMonster: ; 0x020117C0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _020117F8 ; =ZINC_STAT_BOOST
mov r7, r0
ldrsh r5, [r2]
ldrb r4, [r7, #0xf]
mov r6, r1
add r0, r7, #0xf
mov r1, r5
bl sub_02055020
cmp r6, #0
strne r5, [r6]
ldrb r0, [r7, #0xf]
sub r0, r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020117F8: .word ZINC_STAT_BOOST
arm_func_end ApplyZincBoostToGroundMonster
arm_func_start ApplyNectarBoostToGroundMonster
ApplyNectarBoostToGroundMonster: ; 0x020117FC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrsh r4, [r6, #8]
mov r5, r1
add r0, r6, #8
mov r1, #0xa
bl sub_02055054
cmp r5, #0
movne r0, #0xa
strne r0, [r5]
ldrsh r0, [r6, #8]
sub r0, r0, r4
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ApplyNectarBoostToGroundMonster
arm_func_start IsMonsterAffectedByGravelyrockGroundMode
IsMonsterAffectedByGravelyrockGroundMode: ; 0x02011830
stmdb sp!, {r3, lr}
ldrsh r0, [r0, #4]
bl FemaleToMaleForm
cmp r0, #0x1e0
cmpne r0, #0xb9
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsMonsterAffectedByGravelyrockGroundMode
arm_func_start ApplyGravelyrockBoostToGroundMonster
ApplyGravelyrockBoostToGroundMonster: ; 0x02011850
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
ldrsh r4, [r6, #8]
bl IsMonsterAffectedByGravelyrockGroundMode
cmp r0, #0
beq _02011884
add r0, r6, #8
mov r1, #0xa
bl sub_02055054
cmp r5, #0
movne r0, #0xa
b _0201188C
_02011884:
cmp r5, #0
movne r0, #0
_0201188C:
strne r0, [r5]
ldrsh r0, [r6, #8]
sub r0, r0, r4
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ApplyGravelyrockBoostToGroundMonster
arm_func_start ApplyGummiBoostsGroundMode
ApplyGummiBoostsGroundMode: ; 0x0201189C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldrsh r0, [sp, #0x28]
mov r4, #0
ldr r6, [sp, #0x30]
sub r5, r4, #1
strh r5, [r6]
mov sb, r1
mov r8, r2
mov r7, r3
sub fp, r0, #0x77
strh r4, [r6, #2]
bl IsGummi
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrsh r0, [sp, #0x28]
cmp r0, #0x88
bne _020118FC
ldr r1, _02011AA0 ; =WONDER_GUMMI_IQ_GAIN
ldr r0, _02011AA4 ; =WONDER_GUMMI_STAT_BOOST
ldrsh r1, [r1]
ldrsh r5, [r0]
add r4, r4, r1
b _02011950
_020118FC:
ldrsh r0, [sl]
ldr r2, _02011AA8 ; =GUMMI_STAT_BOOST
mov r1, r4
ldrsh r5, [r2]
bl GetType
str r0, [sp]
ldrsh r0, [sl]
mov r1, #1
bl GetType
add sl, fp, #1
ldr fp, _02011AAC ; =IQ_GUMMI_GAIN_TABLE
ldr r1, [sp]
mov r2, #0x24
mla r3, r1, r2, fp
mla r1, r0, r2, fp
mov sl, sl, lsl #1
ldrsh r2, [sl, r3]
ldrsh r0, [sl, r1]
cmp r2, r0
addgt r4, r4, r2
addle r4, r4, r0
_02011950:
ldrsh r1, [sb]
add r0, r1, r4
strh r0, [sb]
ldrsh r0, [sb]
cmp r0, #1
sub r2, r0, r1
movlt r0, #1
strlth r0, [sb]
ldrsh r1, [sb]
ldr r0, _02011AB0 ; =0x000003E7
cmp r1, r0
strgth r0, [sb]
cmp r2, #9
movge r1, #0
bge _020119A4
cmp r2, #5
movge r1, #1
bge _020119A4
cmp r2, #3
movge r1, #2
movlt r1, #3
_020119A4:
ldrb r0, [sp, #0x2c]
strh r1, [r6]
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r1, #0
bne _020119D4
mov r0, #0x10
bl RandIntSafe
cmp r0, #0xa
moveq r0, #0xf
streqh r0, [r6, #2]
beq _020119EC
_020119D4:
mov r0, #4
bl RandIntSafe
ldr r1, _02011AB4 ; =_0209889C
mov r0, r0, lsl #1
ldrh r0, [r1, r0]
strh r0, [r6, #2]
_020119EC:
ldrh r1, [r6, #2]
tst r1, #1
beq _02011A18
ldrb r0, [r8]
cmp r0, #0xff
bichs r0, r1, #1
strhsh r0, [r6, #2]
bhs _02011A18
mov r0, r8
mov r1, r5
bl sub_02054FEC
_02011A18:
ldrh r1, [r6, #2]
tst r1, #2
beq _02011A44
ldrb r0, [r8, #1]
cmp r0, #0xff
bichs r0, r1, #2
strhsh r0, [r6, #2]
bhs _02011A44
mov r1, r5
add r0, r8, #1
bl sub_02054FEC
_02011A44:
ldrh r1, [r6, #2]
tst r1, #4
beq _02011A70
ldrb r0, [r7]
cmp r0, #0xff
bichs r0, r1, #4
strhsh r0, [r6, #2]
bhs _02011A70
mov r0, r7
mov r1, r5
bl sub_02055020
_02011A70:
ldrh r1, [r6, #2]
tst r1, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrb r0, [r7, #1]
cmp r0, #0xff
bichs r0, r1, #8
strhsh r0, [r6, #2]
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r1, r5
add r0, r7, #1
bl sub_02055020
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02011AA0: .word WONDER_GUMMI_IQ_GAIN
_02011AA4: .word WONDER_GUMMI_STAT_BOOST
_02011AA8: .word GUMMI_STAT_BOOST
_02011AAC: .word IQ_GUMMI_GAIN_TABLE
_02011AB0: .word 0x000003E7
_02011AB4: .word _0209889C
arm_func_end ApplyGummiBoostsGroundMode
arm_func_start sub_02011AB8
sub_02011AB8: ; 0x02011AB8
stmdb sp!, {r3, lr}
ldr ip, _02011B38 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r1, [ip]
mov r2, r0
add r1, r1, #0x1000
strb r0, [r1, #0x3aa]
ldr r1, [ip]
sub lr, r0, #1
add r1, r1, #0x1000
str r0, [r1, #0x3ac]
ldr r3, [ip]
mov r1, #0x6d
add r3, r3, #0x1300
strh r0, [r3, #0xb0]
ldr r3, [ip]
add r3, r3, #0x1300
strh lr, [r3, #0xb2]
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x6b
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x6c
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x6a
bl SaveScriptVariableValue
ldmia sp!, {r3, pc}
.align 2, 0
_02011B38: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011AB8
arm_func_start sub_02011B3C
sub_02011B3C: ; 0x02011B3C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov sl, r0
mov r8, r1
mov r7, r2
mov r0, #8
mov r1, #6
bl MemAlloc
mov sb, r0
mov r0, sl
mov r1, r8
mov r2, r7
bl sub_020128DC
movs r1, r0
str r0, [sb, #4]
moveq r0, #0
streq r0, [sb]
beq _02011CE8
mov r0, #0x18
mul r0, r1, r0
mov r1, #6
bl MemAlloc
str r0, [sb]
ldr r2, [sb, #4]
mov r1, #0x18
mul r1, r2, r1
bl MemZero
mov r5, #0
mov r6, r5
mov r4, #0x18
b _02011BF8
_02011BB8:
str r7, [sp]
ldr r0, [sb]
mov r1, r6
mla r0, r5, r4, r0
mov r2, sl
mov r3, r8
bl sub_0201297C
cmp r0, #0
beq _02011BEC
ldr r0, [sb, #4]
add r5, r5, #1
cmp r5, r0
beq _02011C00
_02011BEC:
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
_02011BF8:
cmp r6, #0x18
blt _02011BB8
_02011C00:
mov r8, #0
b _02011CDC
_02011C08:
mov r0, #0x18
mul sl, r8, r0
ldr r0, [sb]
mvn r6, #0
ldr r0, [r0, sl]
ldrsh r0, [r0]
bl sub_0200D1F0
mov fp, r0
add r7, r8, #1
b _02011C68
_02011C30:
mov r0, #0x18
mul r4, r7, r0
ldr r5, [sb]
ldr r0, [r5, r4]
ldrsh r0, [r0]
bl sub_0200D1F0
cmp fp, r0
ble _02011C64
ldr r0, [r5, r4]
mov r6, r7
ldrsh r0, [r0]
bl sub_0200D1F0
mov fp, r0
_02011C64:
add r7, r7, #1
_02011C68:
ldr r0, [sb, #4]
cmp r7, r0
blt _02011C30
mvn r0, #0
cmp r6, r0
beq _02011CD8
ldr r4, [sb]
mov r0, #0x18
add fp, r4, sl
mul r5, r6, r0
add r7, sp, #4
mov sl, fp
mov r6, r7
ldmia sl!, {r0, r1, r2, r3}
stmia r7!, {r0, r1, r2, r3}
ldmia sl, {r0, r1}
stmia r7, {r0, r1}
add r4, r4, r5
ldmia r4!, {r0, r1, r2, r3}
stmia fp!, {r0, r1, r2, r3}
ldmia r4, {r0, r1}
stmia fp, {r0, r1}
ldr r4, [sb]
ldmia r6!, {r0, r1, r2, r3}
add r4, r4, r5
stmia r4!, {r0, r1, r2, r3}
ldmia r6, {r0, r1}
stmia r4, {r0, r1}
_02011CD8:
add r8, r8, #1
_02011CDC:
ldr r0, [sb, #4]
cmp r8, r0
blt _02011C08
_02011CE8:
mov r0, sb
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02011B3C
arm_func_start sub_02011CF4
sub_02011CF4: ; 0x02011CF4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r6, r2
cmp r0, #2
bne _02011D90
ldr r0, _02011D98 ; =BAG_ITEMS_PTR_MIRROR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r5, [r0, #0xb2]
cmp r5, r1
movne r0, #1
moveq r0, #0
tst r0, #0xff
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, #8
mov r1, #6
bl MemAlloc
mov r4, r0
mov r1, #1
mov r0, #0x18
smulbb r0, r1, r0
str r1, [r4, #4]
mov r1, #6
bl MemAlloc
str r0, [r4]
ldr r2, [r4, #4]
mov r1, #0x18
mul r1, r2, r1
bl MemZero
str r6, [sp]
ldr r0, [r4]
mov r1, r5
mov r3, r7
mov r2, #2
bl sub_0201297C
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_02011D90:
bl sub_02011B3C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02011D98: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011CF4
arm_func_start sub_02011D9C
sub_02011D9C: ; 0x02011D9C
ldr ip, _02011DB0 ; =sub_02011B3C
mov r1, r0
ldr r2, _02011DB4 ; =0x000F423F
mov r0, #1
bx ip
.align 2, 0
_02011DB0: .word sub_02011B3C
_02011DB4: .word 0x000F423F
arm_func_end sub_02011D9C
arm_func_start sub_02011DB8
sub_02011DB8: ; 0x02011DB8
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
cmp r0, #0
beq _02011DDC
bl MemFree
_02011DDC:
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end sub_02011DB8
arm_func_start sub_02011DF0
sub_02011DF0: ; 0x02011DF0
ldr r0, [r0]
ldrsh r0, [r0]
bx lr
arm_func_end sub_02011DF0
arm_func_start sub_02011DFC
sub_02011DFC: ; 0x02011DFC
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end sub_02011DFC
arm_func_start sub_02011E18
sub_02011E18: ; 0x02011E18
ldr r0, [r0]
ldrh r0, [r0, #0x12]
bx lr
arm_func_end sub_02011E18
arm_func_start sub_02011E24
sub_02011E24: ; 0x02011E24
mov ip, #0
mov r3, ip
b _02011E58
_02011E30:
ldr r2, [r0]
mov r1, r3, lsl #2
add r2, r2, #0x14
ldrsh r1, [r2, r1]
add r2, r2, r3, lsl #2
cmp r1, #0
beq _02011E60
ldrsh r1, [r2, #2]
add r3, r3, #1
add ip, ip, r1
_02011E58:
cmp r3, #4
blt _02011E30
_02011E60:
mov r0, ip
bx lr
arm_func_end sub_02011E24
arm_func_start sub_02011E68
sub_02011E68: ; 0x02011E68
stmdb sp!, {r3, lr}
mov lr, #0
b _02011EB4
_02011E74:
ldr r2, [r0]
mov r1, lr, lsl #2
add r2, r2, #0x14
ldrsh r1, [r2, r1]
add ip, r2, lr, lsl #2
cmp r1, #0
beq _02011EBC
add r1, r0, lr, lsl #1
ldrsh r3, [r1, #4]
ldrsh r2, [r1, #0xc]
ldrsh r1, [ip, #2]
add r2, r3, r2
cmp r2, r1
movlt r0, #0
ldmltia sp!, {r3, pc}
add lr, lr, #1
_02011EB4:
cmp lr, #4
blt _02011E74
_02011EBC:
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_02011E68
arm_func_start sub_02011EC4
sub_02011EC4: ; 0x02011EC4
ldr r1, [r0]
ldr r0, _02011EE4 ; =0x00000578
ldrsh r1, [r1, #0x14]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02011EE4: .word 0x00000578
arm_func_end sub_02011EC4
arm_func_start sub_02011EE8
sub_02011EE8: ; 0x02011EE8
ldr r0, _02011F10 ; =BAG_ITEMS_PTR_MIRROR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r0, [r0, #0xb2]
cmp r0, r1
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02011F10: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011EE8
arm_func_start sub_02011F14
sub_02011F14: ; 0x02011F14
ldr r0, _02011F2C ; =BAG_ITEMS_PTR_MIRROR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0x1300
strh r1, [r0, #0xb2]
bx lr
.align 2, 0
_02011F2C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011F14
arm_func_start sub_02011F30
sub_02011F30: ; 0x02011F30
ldr r0, _02011F44 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1000
ldr r0, [r0, #0x3ac]
bx lr
.align 2, 0
_02011F44: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011F30
arm_func_start sub_02011F48
sub_02011F48: ; 0x02011F48
ldr r0, _02011F5C ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1000
ldrb r0, [r0, #0x3aa]
bx lr
.align 2, 0
_02011F5C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02011F48
arm_func_start sub_02011F60
sub_02011F60: ; 0x02011F60
stmdb sp!, {r4, lr}
mov r0, #0
mov r1, #0x6c
bl LoadScriptVariableValue
add r4, r0, #1
ldr r1, _02011F9C ; =0x000F423F
mov r0, #0
cmp r4, r1
movgt r4, r1
mov r2, r4
mov r1, #0x6c
bl SaveScriptVariableValue
mov r0, r4
bl SetNbRecycled
ldmia sp!, {r4, pc}
.align 2, 0
_02011F9C: .word 0x000F423F
arm_func_end sub_02011F60
arm_func_start sub_02011FA0
sub_02011FA0: ; 0x02011FA0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r0, #0
mov r1, #0x71
bl LoadScriptVariableValue
and r0, r0, #0xff
cmp r0, #1
bne _0201207C
ldr r1, _02012214 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #3
ldr r1, [r1]
add r1, r1, #0x1000
ldrb r6, [r1, #0x3aa]
ldr r5, [r1, #0x3ac]
mov r1, r6
mov r2, r5
bl sub_020128DC
mov r4, r0
mov r1, r6
mov r2, r5
mov r0, #2
bl sub_020128DC
sub r4, r4, r0
mov r0, #0
mov r1, #0x6c
bl LoadScriptVariableValue
ldr r1, _02012214 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1000
str r0, [r1, #0x3ac]
bl GetRank
ldr r2, _02012214 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r2]
add r1, r1, #0x1000
strb r0, [r1, #0x3aa]
ldr r1, [r2]
mov r0, #3
add r1, r1, #0x1000
ldr r5, [r1, #0x3ac]
ldrb r6, [r1, #0x3aa]
mov r2, r5
mov r1, r6
bl sub_020128DC
mov r1, r6
mov r2, r5
mov r5, r0
mov r0, #2
bl sub_020128DC
sub r0, r5, r0
cmp r0, r4
ble _0201207C
mov r0, #0
mov r1, #0x6a
mov r2, #1
bl SaveScriptVariableValue
_0201207C:
mov r0, #0
mov r1, #0x6b
bl LoadScriptVariableValue
tst r0, #0xff
bne _02012104
mov r0, #0
mov r1, #0x6d
bl LoadScriptVariableValue
mov r4, r0
cmp r4, #5
bge _02012104
ldr r0, _02012214 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, _02012218 ; =_020988A4
ldr r0, [r0]
ldr r1, [r1, r4, lsl #3]
add r0, r0, #0x1000
ldr r0, [r0, #0x3ac]
cmp r0, r1
blt _02012104
bl GetScenarioBalance
ldr r1, _0201221C ; =_020988A8
mov r2, r4, lsl #3
ldrsh r1, [r1, r2]
and r1, r1, #0xff
cmp r0, r1
blo _02012104
add r2, r4, #1
mov r0, #0
mov r1, #0x6d
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x6b
mov r2, #1
bl SaveScriptVariableValue
_02012104:
ldr r0, _02012214 ; =BAG_ITEMS_PTR_MIRROR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r0, [r0, #0xb2]
cmp r0, r1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0201213C
bl sub_02012254
cmp r0, #0
moveq r2, #0
beq _02012200
_0201213C:
ldr r1, _02012214 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #2
ldr r1, [r1]
add r2, r1, #0x1000
ldrb r1, [r2, #0x3aa]
ldr r2, [r2, #0x3ac]
bl sub_02011B3C
mov r4, r0
str r4, [sp]
ldr r0, [r4, #4]
cmp r0, #0
bne _02012184
ldr r0, _02012214 ; =BAG_ITEMS_PTR_MIRROR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0x1300
strh r1, [r0, #0xb2]
b _020121E0
_02012184:
bl Rand16Bit
ldr r1, [r4, #4]
bl _s32_div_f
mov r0, #0x18
mul r0, r1, r0
ldr r1, [r4]
ldr r2, _02012220 ; =RECYCLE_SHOP_ITEM_LIST
ldr r1, [r1, r0]
mov r3, #0
b _020121C4
_020121AC:
cmp r2, r1
beq _020121D0
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
add r2, r2, #0x24
_020121C4:
cmp r3, #0x18
blt _020121AC
mvn r3, #0
_020121D0:
ldr r0, _02012214 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
strh r3, [r0, #0xb2]
_020121E0:
add r0, sp, #0
bl sub_02011DB8
ldr r0, _02012214 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #2
ldr r0, [r0]
mov r2, #1
add r0, r0, #0x1300
strh r1, [r0, #0xb0]
_02012200:
cmp r2, #0
bne _0201220C
bl sub_02012224
_0201220C:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02012214: .word BAG_ITEMS_PTR_MIRROR
_02012218: .word _020988A4
_0201221C: .word _020988A8
_02012220: .word RECYCLE_SHOP_ITEM_LIST
arm_func_end sub_02011FA0
arm_func_start sub_02012224
sub_02012224: ; 0x02012224
stmdb sp!, {r3, lr}
bl sub_02012254
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02012250 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r1, [r0, #0xb0]
sub r1, r1, #1
strh r1, [r0, #0xb0]
ldmia sp!, {r3, pc}
.align 2, 0
_02012250: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02012224
arm_func_start sub_02012254
sub_02012254: ; 0x02012254
ldr r0, _02012278 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r0, [r0, #0xb0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02012278: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02012254
arm_func_start sub_0201227C
sub_0201227C: ; 0x0201227C
ldr r0, _02012290 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r0, [r0, #0xb0]
bx lr
.align 2, 0
_02012290: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0201227C
arm_func_start sub_02012294
sub_02012294: ; 0x02012294
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, r0
mov r0, #8
mov r1, #6
bl MemAlloc
mov r8, #0
mov r4, r0
mov r7, r8
mov r6, r8
bl CountNbOfItemsInStorage
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
cmp r5, #0
ble _02012324
mov r0, r5, lsl #2
mov r1, #6
bl MemAlloc
mov sb, r6
mov r8, r0
mov sl, sb
b _0201231C
_020122E8:
mov r0, sb
bl sub_02010044
mov r1, fp
bl sub_02012630
cmp r0, #0
moveq r1, r6, lsl #2
addeq r0, r8, r6, lsl #2
streqh sb, [r8, r1]
streqb sl, [r0, #2]
add r0, sb, #1
mov r0, r0, lsl #0x10
addeq r6, r6, #1
mov sb, r0, asr #0x10
_0201231C:
cmp sb, r5
blt _020122E8
_02012324:
mov r5, #0
bl GetNbItemsInBag
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
cmp sb, #0
ble _0201239C
mov r0, sb, lsl #2
mov r1, #6
bl MemAlloc
mov r7, r0
mov sl, r5
b _02012394
_02012354:
mov r0, sl
bl GetItemAtIdx
ldrsh r0, [r0, #4]
mov r1, fp
bl sub_02012630
cmp r0, #0
bne _02012388
mov r0, r5, lsl #2
add r1, r7, r5, lsl #2
strh sl, [r7, r0]
mov r0, #0
strb r0, [r1, #2]
add r5, r5, #1
_02012388:
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, asr #0x10
_02012394:
cmp sl, sb
blt _02012354
_0201239C:
cmp r5, #0
beq _020123B4
mov r1, r6, lsr #0x1f
rsb r0, r1, r6, lsl #29
adds r0, r1, r0, ror #29
bne _020123BC
_020123B4:
mov sb, #0
b _020123C0
_020123BC:
rsb sb, r0, #8
_020123C0:
add r0, r5, r6
adds r0, sb, r0
str r0, [r4, #4]
moveq r0, #0
streq r0, [r4]
beq _020124B0
mov r0, r0, lsl #3
mov r1, #6
bl MemAlloc
str r0, [r4]
mov sl, #0
mov r3, #1
b _02012418
_020123F4:
str r3, [r0]
mov r1, sl, lsl #2
ldrsh r2, [r8, r1]
add r1, r8, sl, lsl #2
add sl, sl, #1
strh r2, [r0, #4]
ldrb r1, [r1, #2]
strb r1, [r0, #7]
add r0, r0, #8
_02012418:
cmp sl, r6
blt _020123F4
mov r6, #0
mov r3, #2
mvn r2, #0
mov r1, r6
b _02012448
_02012434:
str r3, [r0]
strh r2, [r0, #4]
strb r1, [r0, #7]
add r6, r6, #1
add r0, r0, #8
_02012448:
cmp r6, sb
blt _02012434
mov r6, #0
mov r3, r6
b _02012480
_0201245C:
str r3, [r0]
mov r1, r6, lsl #2
ldrsh r2, [r7, r1]
add r1, r7, r6, lsl #2
add r6, r6, #1
strh r2, [r0, #4]
ldrb r1, [r1, #2]
strb r1, [r0, #7]
add r0, r0, #8
_02012480:
cmp r6, r5
blt _0201245C
mov r3, #0
ldr r2, [r4]
mov r1, r3
b _020124A4
_02012498:
strb r1, [r2, #6]
add r3, r3, #1
add r2, r2, #8
_020124A4:
ldr r0, [r4, #4]
cmp r3, r0
blt _02012498
_020124B0:
cmp r7, #0
beq _020124C0
mov r0, r7
bl MemFree
_020124C0:
cmp r8, #0
beq _020124D0
mov r0, r8
bl MemFree
_020124D0:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02012294
arm_func_start sub_020124D8
sub_020124D8: ; 0x020124D8
stmdb sp!, {r3, lr}
ldr r1, [r0]
cmp r1, #0
bne _020124F8
ldrsh r0, [r0, #4]
bl GetItemAtIdx
ldrsh r0, [r0, #4]
ldmia sp!, {r3, pc}
_020124F8:
cmp r1, #1
movne r0, #0
ldmneia sp!, {r3, pc}
ldrsh r0, [r0, #4]
add r1, sp, #0
bl ConvertStorageItemAtIdxToBulkItem
ldrsh r0, [sp]
ldmia sp!, {r3, pc}
arm_func_end sub_020124D8
arm_func_start sub_02012518
sub_02012518: ; 0x02012518
stmdb sp!, {r3, lr}
ldr r1, [r0]
cmp r1, #0
bne _02012538
ldrsh r0, [r0, #4]
bl GetItemAtIdx
ldrh r0, [r0, #2]
ldmia sp!, {r3, pc}
_02012538:
cmp r1, #1
ldrne r0, _02012558 ; =0x0000FFFF
ldmneia sp!, {r3, pc}
ldrsh r0, [r0, #4]
add r1, sp, #0
bl ConvertStorageItemAtIdxToBulkItem
ldrh r0, [sp, #2]
ldmia sp!, {r3, pc}
.align 2, 0
_02012558: .word 0x0000FFFF
arm_func_end sub_02012518
arm_func_start sub_0201255C
sub_0201255C: ; 0x0201255C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #8
mov r1, #6
bl MemAlloc
ldr r1, [r5, #4]
mov r4, r0
mov r0, r1, lsl #3
mov r1, #6
bl MemAlloc
str r0, [r4]
mov ip, #0
b _020125B4
_02012590:
ldr r1, [r5]
ldr r3, [r4]
add r0, r1, ip, lsl #3
ldr r2, [r1, ip, lsl #3]
ldr r1, [r0, #4]
add r0, r3, ip, lsl #3
str r2, [r3, ip, lsl #3]
str r1, [r0, #4]
add ip, ip, #1
_020125B4:
ldr r1, [r5, #4]
cmp ip, r1
blt _02012590
mov r0, r4
str r1, [r4, #4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0201255C
arm_func_start sub_020125CC
sub_020125CC: ; 0x020125CC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
bl MemFree
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end sub_020125CC
arm_func_start sub_020125FC
sub_020125FC: ; 0x020125FC
stmdb sp!, {r4, lr}
mov r4, r0
bl GetItemCategoryVeneer
cmp r0, #0
beq _02012620
mov r0, r4
bl GetItemCategoryVeneer
cmp r0, #1
bne _02012628
_02012620:
mov r0, #1
ldmia sp!, {r4, pc}
_02012628:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_020125FC
arm_func_start sub_02012630
sub_02012630: ; 0x02012630
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
beq _02012650
bl IsTicketItem
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, pc}
_02012650:
mov r0, r4
bl sub_020125FC
ldmia sp!, {r4, pc}
arm_func_end sub_02012630
arm_func_start sub_0201265C
sub_0201265C: ; 0x0201265C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _020126C4 ; =BAG_ITEMS_PTR_MIRROR
mov r4, #0
ldr r1, [r1]
mov r5, r0
ldr r8, [r1, #0x384]
mov sb, r4
mov r6, r4
mov r7, #1
_02012680:
ldrb r0, [r8]
tst r0, #1
movne r0, r7
moveq r0, r6
tst r0, #0xff
beq _020126AC
ldrsh r0, [r8, #4]
mov r1, r5
bl sub_02012630
cmp r0, #0
addeq r4, r4, #1
_020126AC:
add sb, sb, #1
cmp sb, #0x32
add r8, r8, #6
blt _02012680
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020126C4: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0201265C
arm_func_start sub_020126C8
sub_020126C8: ; 0x020126C8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, #0
ldr r4, _02012718 ; =BAG_ITEMS_PTR_MIRROR
mov r7, r0
mov r6, r5
_020126DC:
ldr r0, [r4]
add r0, r0, r6, lsl #1
add r0, r0, #0x300
ldrsh r0, [r0, #0x8a]
cmp r0, #0
beq _02012704
mov r1, r7
bl sub_02012630
cmp r0, #0
addeq r5, r5, #1
_02012704:
add r6, r6, #1
cmp r6, #0x3e8
blt _020126DC
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02012718: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020126C8
arm_func_start sub_0201271C
sub_0201271C: ; 0x0201271C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
ldrsh r0, [sl, #0x14]
ldr r6, [sl]
mov r8, #0
str r0, [sp]
b _02012854
_0201273C:
add r5, r6, #0x14
mov r4, r8, lsl #2
ldrsh r1, [r5, r4]
add r0, sp, #4
bl InitBulkItem
add r1, r6, r8, lsl #2
add r0, sl, r8, lsl #1
ldrsh r7, [r1, #0x16]
ldrsh fp, [r0, #0xc]
mov sb, #0
b _02012780
_02012768:
add r0, sp, #4
bl GetEquivBulkItemIdxInStorage
bl RemoveItemAtIdxInStorage
cmp r0, #0
subne r7, r7, #1
add sb, sb, #1
_02012780:
cmp sb, fp
bge _02012790
cmp r7, #0
bgt _02012768
_02012790:
cmp r7, #0
ble _020127CC
add r0, sl, r8, lsl #1
ldrsh fp, [r0, #4]
mov sb, #0
b _020127BC
_020127A8:
ldrsh r0, [sp, #4]
bl GetFirstUnequippedItemOfType
bl RemoveItem
sub r7, r7, #1
add sb, sb, #1
_020127BC:
cmp sb, fp
bge _020127CC
cmp r7, #0
bgt _020127A8
_020127CC:
ldrsh r0, [r5, r4]
ldr r1, _02012870 ; =0x00000578
cmp r0, r1
bne _02012834
ldrsh r0, [r6]
bl IsTicketItem
cmp r0, #0
beq _02012810
mov r0, #1
bl sub_0201265C
add r1, sl, r8, lsl #1
strh r0, [r1, #4]
mov r0, #1
bl sub_020126C8
add r1, sl, r8, lsl #1
strh r0, [r1, #0xc]
b _02012850
_02012810:
mov r0, #0
bl sub_0201265C
add r1, sl, r8, lsl #1
strh r0, [r1, #4]
mov r0, #0
bl sub_020126C8
add r1, sl, r8, lsl #1
strh r0, [r1, #0xc]
b _02012850
_02012834:
bl CountNbItemsOfTypeInBag
add r1, sl, r8, lsl #1
strh r0, [r1, #4]
ldrsh r0, [r5, r4]
bl CountNbItemsOfTypeInStorage
add r1, sl, r8, lsl #1
strh r0, [r1, #0xc]
_02012850:
add r8, r8, #1
_02012854:
ldr r0, [sp]
cmp r8, r0
blt _0201273C
bl RemoveEmptyItemsInBag
bl sub_0201007C
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02012870: .word 0x00000578
arm_func_end sub_0201271C
arm_func_start sub_02012874
sub_02012874: ; 0x02012874
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, #0
b _020128C4
_02012884:
ldr r0, [r5]
add r1, r0, r4, lsl #3
ldrb r0, [r1, #6]
cmp r0, #0
beq _020128C0
ldr r0, [r1]
cmp r0, #0
bne _020128B0
ldrsh r0, [r1, #4]
bl RemoveItem
b _020128C0
_020128B0:
cmp r0, #1
bne _020128C0
ldrsh r0, [r1, #4]
bl RemoveItemAtIdxInStorage
_020128C0:
add r4, r4, #1
_020128C4:
ldr r0, [r5, #4]
cmp r4, r0
blt _02012884
bl RemoveEmptyItemsInBag
bl sub_0201007C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02012874
arm_func_start sub_020128DC
sub_020128DC: ; 0x020128DC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r7, #0
mov fp, #0x24
ldr r5, _02012950 ; =RECYCLE_SHOP_ITEM_LIST
mov sl, r0
mov sb, r1
mov r8, r2
mov r6, r7
mov r4, fp
_02012900:
cmp sl, #3
beq _02012920
mla r0, r6, r4, r5
ldr r1, [r0, #4]
mov r0, sl
bl sub_02012954
cmp r0, #0
beq _0201293C
_02012920:
mla r1, r6, fp, r5
ldrb r0, [r1, #8]
cmp r0, sb
bhi _0201293C
ldr r0, [r1, #0xc]
cmp r0, r8
addle r7, r7, #1
_0201293C:
add r6, r6, #1
cmp r6, #0x18
blt _02012900
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02012950: .word RECYCLE_SHOP_ITEM_LIST
arm_func_end sub_020128DC
arm_func_start sub_02012954
sub_02012954: ; 0x02012954
cmp r0, r1
beq _0201296C
cmp r0, #0
bne _02012974
cmp r1, #2
beq _02012974
_0201296C:
mov r0, #1
bx lr
_02012974:
mov r0, #0
bx lr
arm_func_end sub_02012954
arm_func_start sub_0201297C
sub_0201297C: ; 0x0201297C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, #0x24
smulbb r4, r1, r4
ldr r1, _02012AA4 ; =_020988D0
mov sl, r0
ldr r1, [r1, r4]
mov r0, r2
mov r5, r3
bl sub_02012954
cmp r0, #0
beq _02012A9C
ldr r0, _02012AA8 ; =_020988D4
ldrb r0, [r0, r4]
cmp r0, r5
bhi _02012A9C
ldr r1, _02012AAC ; =_020988D8
ldr r0, [sp, #0x28]
ldr r1, [r1, r4]
cmp r1, r0
bgt _02012A9C
ldr r0, _02012AB0 ; =RECYCLE_SHOP_ITEM_LIST
mov sb, #0
add r0, r0, r4
mov r6, #1
str r0, [sl]
mov fp, sb
mov r5, r6
ldr r4, _02012AB4 ; =0x00000578
b _02012A88
_020129F0:
ldr r1, [sl]
mov r7, sb, lsl #2
add r8, r1, #0x14
ldrsh r0, [r8, r7]
cmp r0, #0
beq _02012A90
cmp r0, r4
bne _02012A68
ldrsh r0, [r1]
bl IsTicketItem
cmp r0, #0
beq _02012A44
mov r0, r6
bl sub_0201265C
add r1, sl, sb, lsl #1
strh r0, [r1, #4]
mov r0, r5
bl sub_020126C8
add r1, sl, sb, lsl #1
strh r0, [r1, #0xc]
b _02012A84
_02012A44:
mov r0, fp
bl sub_0201265C
add r1, sl, sb, lsl #1
strh r0, [r1, #4]
mov r0, #0
bl sub_020126C8
add r1, sl, sb, lsl #1
strh r0, [r1, #0xc]
b _02012A84
_02012A68:
bl CountNbItemsOfTypeInBag
add r1, sl, sb, lsl #1
strh r0, [r1, #4]
ldrsh r0, [r8, r7]
bl CountNbItemsOfTypeInStorage
add r1, sl, sb, lsl #1
strh r0, [r1, #0xc]
_02012A84:
add sb, sb, #1
_02012A88:
cmp sb, #4
blt _020129F0
_02012A90:
strh sb, [sl, #0x14]
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_02012A9C:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02012AA4: .word _020988D0
_02012AA8: .word _020988D4
_02012AAC: .word _020988D8
_02012AB0: .word RECYCLE_SHOP_ITEM_LIST
_02012AB4: .word 0x00000578
arm_func_end sub_0201297C
arm_func_start sub_02012AB8
sub_02012AB8: ; 0x02012AB8
mov r3, #0
ldr r0, _02012ADC ; =_022A4BD8
mov r2, r3
_02012AC4:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #8
blt _02012AC4
bx lr
.align 2, 0
_02012ADC: .word _022A4BD8
arm_func_end sub_02012AB8
arm_func_start LoadSynthBin
LoadSynthBin: ; 0x02012AE0
stmdb sp!, {r3, lr}
ldr r0, _02012B28 ; =_020AF6D0
ldr r0, [r0, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
movne r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02012B2C ; =_020AF6D4
ldr r1, _02012B30 ; =_02098CB4
mov r2, #0xe
bl LoadFileFromRom
ldr r1, _02012B28 ; =_020AF6D0
mov r0, #1
ldr r2, [r1, #4]
str r2, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_02012B28: .word _020AF6D0
_02012B2C: .word _020AF6D4
_02012B30: .word _02098CB4
arm_func_end LoadSynthBin
arm_func_start CloseSynthBin
CloseSynthBin: ; 0x02012B34
stmdb sp!, {r3, lr}
ldr r0, _02012B74 ; =_020AF6D0
ldr r0, [r0, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
ldmeqia sp!, {r3, pc}
ldr r0, _02012B78 ; =_020AF6D4
bl UnloadFile
ldr r0, _02012B74 ; =_020AF6D0
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02012B74: .word _020AF6D0
_02012B78: .word _020AF6D4
arm_func_end CloseSynthBin
arm_func_start GenerateCroagunkItems
GenerateCroagunkItems: ; 0x02012B7C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x160
bl GetScenarioBalance
ldr r1, _02013098 ; =_020AF6D0
str r0, [sp, #8]
ldr r0, [r1, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
movne r7, #0
bne _02012BB4
mov r7, #1
bl LoadSynthBin
_02012BB4:
ldr r0, _0201309C ; =0x000045E0
mov r1, #0xf
bl MemAlloc
mov r1, #0
mov r4, r0
mov r5, r1
add r0, sp, #0x2c
_02012BD0:
strb r5, [r0, r1]
add r1, r1, #1
cmp r1, #0x12
blt _02012BD0
ldr r0, _020130A0 ; =_02098CCC
mov r6, r5
bl Debug_Print0
add r0, sp, #0x24
bl GetPartyMembers
str r0, [sp, #0xc]
mov r0, #0
mov r1, #3
bl RandRange
mov r8, #0
mov fp, r0
mov sl, r8
b _02012C78
_02012C14:
mov r1, sl, lsl #1
add r0, sp, #0x24
ldrsh r0, [r0, r1]
bl GetTeamMember
ldrsh r0, [r0, #4]
mov sb, #0
bl FemaleToMaleForm
bl GetBaseFormCastformDeoxysCherrim
mov r3, sb
b _02012C58
_02012C3C:
mov r2, r3, lsl #1
add r1, sp, #0x1c
ldrsh r1, [r1, r2]
cmp r0, r1
moveq sb, #1
beq _02012C60
add r3, r3, #1
_02012C58:
cmp r3, r8
blt _02012C3C
_02012C60:
cmp sb, #0
moveq r2, r8, lsl #1
addeq r1, sp, #0x1c
streqh r0, [r1, r2]
addeq r8, r8, #1
add sl, sl, #1
_02012C78:
ldr r0, [sp, #0xc]
cmp sl, r0
blt _02012C14
ldr r0, _020130A4 ; =_02098D24
mov r2, #0
mov r1, fp
mov r3, r8
mov sb, r8
str r2, [sp]
bl Debug_Print0
add r0, r4, #0x12c
add r0, r0, #0x800
str r0, [sp, #0x14]
mvn r0, #0
str r0, [sp, #0x18]
b _02012D28
_02012CB8:
mov r0, r8
bl RandInt
str r0, [sp, #4]
mov r1, r0, lsl #1
add r0, sp, #0x1c
ldrsh sl, [r0, r1]
cmp sl, #0
blt _02012D28
ldr r1, [sp, #0x14]
mov r2, #0x1c
mla r1, r6, r2, r1
mov r0, sl
add r2, sp, #0x2c
bl GetValidSynthsForSpecies
cmp r0, #0
addne r0, r4, r5, lsl #1
addne r0, r0, #0x900
strneh sl, [r0, #6]
ldr r0, [sp, #4]
ldr r1, [sp, #0x18]
mov r2, r0, lsl #1
add r0, sp, #0x1c
sub sb, sb, #1
addne r6, r6, #1
addne r5, r5, #1
strh r1, [r0, r2]
cmp sb, #0
ble _02012D38
_02012D28:
cmp r5, fp
bge _02012D38
cmp r8, r5
bgt _02012CB8
_02012D38:
ldr fp, _020130A8 ; =0x00000229
str r5, [sp, #0x10]
mov sl, #0
mov sb, #1
_02012D48:
mov r0, sb, lsl #0x10
mov r0, r0, asr #0x10
bl FemaleToMaleForm
bl GetBaseFormCastformDeoxysCherrim
mov r8, r0
bl IsMonsterValid
cmp r0, #0
beq _02012D80
mov r0, r8
bl HasMonsterBeenAttackedInDungeons
cmp r0, #0
movne r0, sl, lsl #1
strneh r8, [r4, r0]
addne sl, sl, #1
_02012D80:
add sb, sb, #1
cmp sb, fp
ble _02012D48
b _02012E34
_02012D90:
mov r0, sl
mov fp, #0
bl RandInt
mov r8, r0
mov r0, r8, lsl #1
ldrsh sb, [r4, r0]
mov r1, fp
b _02012DCC
_02012DB0:
add r0, r4, r1, lsl #1
add r0, r0, #0x900
ldrsh r0, [r0, #6]
cmp sb, r0
moveq fp, #1
beq _02012DD4
add r1, r1, #1
_02012DCC:
cmp r1, r5
blt _02012DB0
_02012DD4:
cmp fp, #0
bne _02012E10
add r0, r4, #0x12c
add r1, r0, #0x800
mov r0, #0x1c
mla r1, r6, r0, r1
add r2, sp, #0x2c
mov r0, sb
bl GetValidSynthsForSpecies
cmp r0, #0
addne r0, r4, r5, lsl #1
addne r0, r0, #0x900
strneh sb, [r0, #6]
addne r6, r6, #1
addne r5, r5, #1
_02012E10:
sub sl, sl, #1
b _02012E2C
_02012E18:
add r0, r4, r8, lsl #1
ldrsh r0, [r0, #2]
mov r1, r8, lsl #1
add r8, r8, #1
strh r0, [r4, r1]
_02012E2C:
cmp r8, sl
blt _02012E18
_02012E34:
cmp r5, #0x10
ldrlt r0, [sp, #0x10]
sublt r0, r5, r0
cmplt r0, sl
blt _02012D90
mov r8, #0
mov sb, r8
_02012E50:
add r0, sp, #0x2c
ldrb r0, [r0, sb]
cmp r0, #0
beq _02012EB0
ldr r0, _020130AC ; =TYPE_SPECIFIC_EXCLUSIVE_ITEMS
and r5, sb, #0xff
mov sl, #0
add fp, r0, r5, lsl #3
_02012E70:
cmp r5, #0x12
movhs r0, #0
addlo r0, fp, sl, lsl #1
ldrlosh r0, [r0, #-8]
bl GetSynthItem
cmp r0, #0
beq _02012EA4
ldrh r2, [r0, #6]
ldr r1, [sp, #8]
cmp r2, r1
addle r1, sp, #0x40
strle r0, [r1, r8, lsl #2]
addle r8, r8, #1
_02012EA4:
add sl, sl, #1
cmp sl, #4
blt _02012E70
_02012EB0:
add sb, sb, #1
cmp sb, #0x12
blt _02012E50
cmp r8, #0
ble _02012F00
mov r0, #0x1c
mul r5, r6, r0
add r0, r4, #0x12c
add sb, r0, #0x800
mov r0, r8
add r8, sb, r5
bl RandInt
add r2, sp, #0x40
ldr r0, [r2, r0, lsl #2]
mov r1, #1
str r0, [r8, #8]
str r1, [sb, r5]
ldrh r0, [r0, #2]
add r6, r6, #1
str r0, [r8, #4]
_02012F00:
cmp r6, #0
bne _02012F40
mov r0, r4
bl MemFree
cmp r7, #0
beq _02012F1C
bl CloseSynthBin
_02012F1C:
mov r3, #0
ldr r1, _020130B0 ; =_022A4BD8
mov r0, r3
_02012F28:
mov r2, r3, lsl #1
add r3, r3, #1
strh r0, [r1, r2]
cmp r3, #8
blt _02012F28
b _02013090
_02012F40:
mov r0, #4
mov r1, #9
bl RandRange
mov fp, r0
mov sb, #0
b _02013050
_02012F58:
mov r0, #0
mov r3, r0
mov r1, #0x1c
b _02012F78
_02012F68:
mla r2, r3, r1, r4
ldr r2, [r2, #0x930]
add r3, r3, #1
add r0, r0, r2
_02012F78:
cmp r3, r6
blt _02012F68
cmp r0, #0
beq _02013058
bl RandInt
mov r1, #0
add r2, r4, #0x12c
add r8, r2, #0x800
mov sl, r1
mov r2, #0x1c
b _02013048
_02012FA4:
mla r5, sl, r2, r8
ldr r3, [r5, #4]
cmp r0, r3
bhs _02013044
ldr r8, [r5]
mov sl, #0
b _02013030
_02012FC0:
add r2, r5, sl, lsl #2
ldr r3, [r2, #8]
ldrh r2, [r3, #2]
add r1, r1, r2
cmp r0, r1
bge _0201302C
ldrsh r8, [r3]
mov sl, #0
ldr r1, _020130B0 ; =_022A4BD8
b _0201300C
_02012FE8:
mov r0, sl, lsl #1
ldrsh r0, [r1, r0]
cmp r8, r0
bne _02013008
ldr r0, _020130B4 ; =_02098D48
mov r1, r8
bl Debug_Print0
b _02013014
_02013008:
add sl, sl, #1
_0201300C:
cmp sl, sb
blt _02012FE8
_02013014:
cmp sl, sb
movge r1, sb, lsl #1
ldrge r0, _020130B0 ; =_022A4BD8
addge sb, sb, #1
strgeh r8, [r0, r1]
b _02013038
_0201302C:
add sl, sl, #1
_02013030:
cmp sl, r8
blt _02012FC0
_02013038:
mov r0, #0
str r0, [r5, #4]
b _02013050
_02013044:
add sl, sl, #1
_02013048:
cmp sl, r6
blt _02012FA4
_02013050:
cmp sb, fp
blt _02012F58
_02013058:
mov r2, #0
ldr r0, _020130B0 ; =_022A4BD8
b _02013070
_02013064:
mov r1, sb, lsl #1
strh r2, [r0, r1]
add sb, sb, #1
_02013070:
cmp sb, #8
blt _02013064
mov r0, r4
bl MemFree
cmp r7, #0
beq _0201308C
bl CloseSynthBin
_0201308C:
mov r0, #1
_02013090:
add sp, sp, #0x160
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02013098: .word _020AF6D0
_0201309C: .word 0x000045E0
_020130A0: .word _02098CCC
_020130A4: .word _02098D24
_020130A8: .word 0x00000229
_020130AC: .word TYPE_SPECIFIC_EXCLUSIVE_ITEMS
_020130B0: .word _022A4BD8
_020130B4: .word _02098D48
arm_func_end GenerateCroagunkItems
arm_func_start sub_020130B8
sub_020130B8: ; 0x020130B8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02013148 ; =_020AF6D0
mov r7, r0
ldr r0, [r1, #4]
ldr r4, _0201314C ; =_022A4BD8
cmp r0, #0
mov r5, #0
movne r0, #1
moveq r0, r5
tst r0, #0xff
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r6, #0
_020130EC:
mov r1, r6, lsl #1
ldrsh r0, [r4, r1]
cmp r0, #0
beq _02013130
ldrsh r0, [r4, r1]
bl GetSynthItem
cmp r0, #0
beq _02013130
cmp r7, #0
beq _0201312C
add r3, r7, r5, lsl #3
mov r2, #4
_0201311C:
ldrh r1, [r0], #2
subs r2, r2, #1
strh r1, [r3], #2
bne _0201311C
_0201312C:
add r5, r5, #1
_02013130:
add r6, r6, #1
cmp r6, #8
blt _020130EC
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02013148: .word _020AF6D0
_0201314C: .word _022A4BD8
arm_func_end sub_020130B8
arm_func_start sub_02013150
sub_02013150: ; 0x02013150
ldr r3, _0201318C ; =_022A4BD8
mov ip, #0
b _0201317C
_0201315C:
mov r2, ip, lsl #1
ldrsh r1, [r3, r2]
cmp r0, r1
moveq r0, #0
streqh r0, [r3, r2]
moveq r0, #1
bxeq lr
add ip, ip, #1
_0201317C:
cmp ip, #8
blt _0201315C
mov r0, #0
bx lr
.align 2, 0
_0201318C: .word _022A4BD8
arm_func_end sub_02013150
arm_func_start sub_02013190
sub_02013190: ; 0x02013190
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050974
ldr r5, _020131EC ; =_022A4BD8
mov r7, #0
add r6, sp, #0
mov r4, #0xb
_020131BC:
mov r0, r6
mov r2, r4
add r1, r5, r7, lsl #1
bl CopyBitsFrom
add r7, r7, #1
cmp r7, #8
blt _020131BC
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020131EC: .word _022A4BD8
arm_func_end sub_02013190
arm_func_start sub_020131F0
sub_020131F0: ; 0x020131F0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050990
ldr r5, _0201324C ; =_022A4BD8
mov r7, #0
add r6, sp, #0
mov r4, #0xb
_0201321C:
mov r0, r6
mov r2, r4
add r1, r5, r7, lsl #1
bl CopyBitsTo
add r7, r7, #1
cmp r7, #8
blt _0201321C
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201324C: .word _022A4BD8
arm_func_end sub_020131F0
arm_func_start GetSynthItem
GetSynthItem: ; 0x02013250
ldr r1, _020132A0 ; =_020AF6D0
ldr r1, [r1, #4]
cmp r1, #0
movne r1, #1
moveq r1, #0
tst r1, #0xff
moveq r0, #0
bxeq lr
ldr r1, _020132A0 ; =_020AF6D0
ldr r1, [r1]
b _0201328C
_0201327C:
cmp r2, r0
moveq r0, r1
bxeq lr
add r1, r1, #8
_0201328C:
ldrsh r2, [r1]
cmp r2, #0
bne _0201327C
mov r0, #0
bx lr
.align 2, 0
_020132A0: .word _020AF6D0
arm_func_end GetSynthItem
arm_func_start GetValidSynthsForSpecies
GetValidSynthsForSpecies: ; 0x020132A4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
mov sb, r1
mov r8, r2
bl GetScenarioBalance
mov r5, #0
str r5, [sb]
mov r7, r0
mov r6, r5
str r5, [sb, #4]
mov r4, #1
_020132D0:
mov r1, r6, lsl #0x10
mov r0, sl
mov r1, r1, asr #0x10
bl GetExclusiveItem
cmp r0, #0
beq _0201332C
bl GetSynthItem
cmp r0, #0
beq _0201332C
ldrh r1, [r0, #6]
cmp r1, r7
bgt _0201332C
ldr r1, [sb]
mov r5, r4
add r1, sb, r1, lsl #2
str r0, [r1, #8]
ldrh r0, [r0, #2]
ldr r1, [sb, #4]
add r0, r1, r0
str r0, [sb, #4]
ldr r0, [sb]
add r0, r0, #1
str r0, [sb]
_0201332C:
add r6, r6, #1
cmp r6, #4
blt _020132D0
mov r0, sl
bl ReturnEggExclusiveItem
cmp r0, #0
beq _0201338C
bl GetSynthItem
cmp r0, #0
beq _0201338C
ldrh r1, [r0, #6]
cmp r1, r7
bgt _0201338C
ldr r1, [sb]
mov r5, #1
add r1, sb, r1, lsl #2
str r0, [r1, #8]
ldrh r0, [r0, #2]
ldr r1, [sb, #4]
add r0, r1, r0
str r0, [sb, #4]
ldr r0, [sb]
add r0, r0, #1
str r0, [sb]
_0201338C:
mov r0, sl
mov r1, #0
bl GetType
cmp r0, #0
movne r1, #1
strneb r1, [r8, r0]
mov r0, sl
mov r1, #1
bl GetType
cmp r0, #0
movne r1, #1
strneb r1, [r8, r0]
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end GetValidSynthsForSpecies
arm_func_start LoadWazaP
LoadWazaP: ; 0x020133C4
stmdb sp!, {r3, lr}
ldr r1, _020133E8 ; =DUNGEON_MOVE_TABLES
mov r0, #0
str r0, [r1, #4]
bl OpenWaza
ldr r0, _020133E8 ; =DUNGEON_MOVE_TABLES
ldr r0, [r0, #4]
bl SelectWaza
ldmia sp!, {r3, pc}
.align 2, 0
_020133E8: .word DUNGEON_MOVE_TABLES
arm_func_end LoadWazaP
arm_func_start LoadWazaP2
LoadWazaP2: ; 0x020133EC
stmdb sp!, {r3, lr}
ldr r1, _02013410 ; =DUNGEON_MOVE_TABLES
mov r0, #1
str r0, [r1, #4]
bl OpenWaza
ldr r0, _02013410 ; =DUNGEON_MOVE_TABLES
ldr r0, [r0, #4]
bl SelectWaza
ldmia sp!, {r3, pc}
.align 2, 0
_02013410: .word DUNGEON_MOVE_TABLES
arm_func_end LoadWazaP2
arm_func_start UnloadCurrentWazaP
UnloadCurrentWazaP: ; 0x02013414
stmdb sp!, {r4, lr}
ldr r0, _0201344C ; =DUNGEON_MOVE_TABLES
ldr r1, _02013450 ; =_020AF700
ldr r0, [r0, #4]
add r4, r1, r0, lsl #3
mov r0, r4
bl UnloadFile
mov r0, r4
bl ZInit8
ldr r1, _0201344C ; =DUNGEON_MOVE_TABLES
mov r0, #0
str r0, [r1, #4]
bl SelectWaza
ldmia sp!, {r4, pc}
.align 2, 0
_0201344C: .word DUNGEON_MOVE_TABLES
_02013450: .word _020AF700
arm_func_end UnloadCurrentWazaP
arm_func_start GetMoveName
GetMoveName: ; 0x02013454
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
ldr ip, _02013474 ; =StringFromId
mov r0, r0, lsr #0x10
bx ip
.align 2, 0
_02013474: .word StringFromId
arm_func_end GetMoveName
arm_func_start FormatMoveString
FormatMoveString: ; 0x02013478
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x1c
mov r6, r1
ldrb r1, [r6]
mov r7, r0
mov r5, r2
tst r1, #0x20
bne _020134A4
ldrh r0, [r6, #2]
tst r0, #1
beq _020134AC
_020134A4:
mov r0, #0x57
b _020134B0
_020134AC:
mov r0, #0x4d
_020134B0:
ldrb r3, [r6, #7]
cmp r5, #0
ldreq r5, _02013738 ; =_02098D68
and r4, r0, #0xff
cmp r3, #0
moveq r0, #0
streqb r0, [sp, #0x10]
beq _020134E0
ldr r1, _0201373C ; =_02098DE4
add r0, sp, #0x10
mov r2, #0x56
bl SprintfStatic__02013758
_020134E0:
ldrb r0, [r5, #8]
cmp r0, #0
movne r4, #0x57
bne _0201350C
ldrb r0, [r5, #9]
cmp r0, #0
beq _0201350C
ldrh r0, [r6, #4]
bl Is2TurnsMove
cmp r0, #0
movne r4, #0x57
_0201350C:
ldr r0, [r5]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _02013730
_0201351C: ; jump table
b _02013534 ; case 0
b _02013564 ; case 1
b _020135C8 ; case 2
b _0201362C ; case 3
b _02013690 ; case 4
b _020136F4 ; case 5
_02013534:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
mov r2, r0
ldr r1, _02013740 ; =_02098DF4
add r3, sp, #0x10
mov r0, r7
bl SprintfStatic__02013758
b _02013730
_02013564:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
ldrb r1, [r6]
mov r5, r0
mov r0, r6
tst r1, #8
ldrne r8, _02013744 ; =_02098E04
ldreq r8, _02013748 ; =_02098E0C
bl GetMaxPp
add r1, sp, #0x10
str r5, [sp]
str r1, [sp, #4]
ldrb r3, [r6, #6]
ldr r1, _0201374C ; =_02098E14
mov r2, r4
str r3, [sp, #8]
str r0, [sp, #0xc]
mov r0, r7
mov r3, r8
bl SprintfStatic__02013758
b _02013730
_020135C8:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
ldrb r1, [r6]
mov r5, r0
mov r0, r6
tst r1, #8
ldrne r8, _02013744 ; =_02098E04
ldreq r8, _02013748 ; =_02098E0C
bl GetMaxPp
add r1, sp, #0x10
str r5, [sp]
str r1, [sp, #4]
ldrb r3, [r6, #6]
ldr r1, _0201374C ; =_02098E14
mov r2, r4
str r3, [sp, #8]
str r0, [sp, #0xc]
mov r0, r7
mov r3, r8
bl SprintfStatic__02013758
b _02013730
_0201362C:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
ldrb r1, [r6]
mov r5, r0
mov r0, r6
tst r1, #4
ldrne r8, _02013744 ; =_02098E04
ldreq r8, _02013748 ; =_02098E0C
bl GetMaxPp
add r1, sp, #0x10
str r5, [sp]
str r1, [sp, #4]
ldrb r3, [r6, #6]
ldr r1, _02013750 ; =_02098E58
mov r2, r4
str r3, [sp, #8]
str r0, [sp, #0xc]
mov r0, r7
mov r3, r8
bl SprintfStatic__02013758
b _02013730
_02013690:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
ldrb r1, [r6]
mov r5, r0
mov r0, r6
tst r1, #4
ldrne r8, _02013744 ; =_02098E04
ldreq r8, _02013748 ; =_02098E0C
bl GetMaxPp
add r1, sp, #0x10
str r5, [sp]
str r1, [sp, #4]
ldrb r3, [r6, #6]
ldr r1, _0201374C ; =_02098E14
mov r2, r4
str r3, [sp, #8]
str r0, [sp, #0xc]
mov r0, r7
mov r3, r8
bl SprintfStatic__02013758
b _02013730
_020136F4:
ldrh r0, [r6, #4]
#if defined(EUROPE)
add r0, r0, #0xff0
add r0, r0, #0x1000
#elif defined(JAPAN)
add r0, r0, #0xb
add r0, r0, #0x1300
#else
add r0, r0, #0xee
add r0, r0, #0x1f00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
mov r4, r0
mov r0, r6
bl GetMaxPp
str r0, [sp]
ldrb r3, [r6, #6]
ldr r1, _02013754 ; =_02098E9C
mov r0, r7
mov r2, r4
bl SprintfStatic__02013758
_02013730:
add sp, sp, #0x1c
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02013738: .word _02098D68
_0201373C: .word _02098DE4
_02013740: .word _02098DF4
_02013744: .word _02098E04
_02013748: .word _02098E0C
_0201374C: .word _02098E14
_02013750: .word _02098E58
_02013754: .word _02098E9C
arm_func_end FormatMoveString
arm_func_start SprintfStatic__02013758
SprintfStatic__02013758: ; 0x02013758
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__02013758
arm_func_start FormatMoveStringMore
FormatMoveStringMore: ; 0x02013780
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r7, r0
mov r5, r2
mov r4, r3
mov r0, r6
bl GetDungeonResultString
mov r1, r5
mov r2, r4
orr ip, r6, #0x10000
add r3, r7, r6, lsl #2
str ip, [r3, #0x10]
bl FormatMoveString
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end FormatMoveStringMore