pmd-sky/asm/main_0200EDFC.s
2025-10-22 23:21:22 -04:00

2783 lines
53 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0200EDFC.inc"
.text
arm_func_start GetNbItemsInBag
GetNbItemsInBag: ; 0x0200EDFC
stmdb sp!, {r3, lr}
ldr r1, _0200EE48 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r1, [r1]
mov lr, r0
ldr ip, [r1, #0x384]
mov r1, r0
mov r2, #1
_0200EE1C:
ldrb r3, [ip]
add lr, lr, #1
add ip, ip, #6
tst r3, #1
movne r3, r2
moveq r3, r1
tst r3, #0xff
addne r0, r0, #1
cmp lr, #0x32
blt _0200EE1C
ldmia sp!, {r3, pc}
.align 2, 0
_0200EE48: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetNbItemsInBag
arm_func_start CountNbItemsOfTypeInBag
CountNbItemsOfTypeInBag: ; 0x0200EE4C
ldr r1, _0200EE84 ; =BAG_ITEMS_PTR_MIRROR
mov r3, #0
ldr r1, [r1]
mov ip, r3
ldr r2, [r1, #0x384]
_0200EE60:
ldrsh r1, [r2, #4]
add ip, ip, #1
add r2, r2, #6
cmp r1, r0
addeq r3, r3, #1
cmp ip, #0x32
blt _0200EE60
mov r0, r3
bx lr
.align 2, 0
_0200EE84: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountNbItemsOfTypeInBag
arm_func_start CountItemTypeInBag
CountItemTypeInBag: ; 0x0200EE88
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _0200EEDC ; =BAG_ITEMS_PTR_MIRROR
mov r5, #0
ldr r1, [r1]
mov r7, r0
ldr r4, [r1, #0x384]
mov r6, r5
_0200EEA4:
ldrsh r0, [r4, #4]
cmp r0, r7
bne _0200EEC4
bl IsThrownItem
cmp r0, #0
ldrneh r0, [r4, #2]
addne r5, r5, r0
addeq r5, r5, #1
_0200EEC4:
add r6, r6, #1
cmp r6, #0x32
add r4, r4, #6
blt _0200EEA4
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200EEDC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountItemTypeInBag
arm_func_start IsItemInBag
IsItemInBag: ; 0x0200EEE0
ldr r1, _0200EF1C ; =BAG_ITEMS_PTR_MIRROR
mov r3, #0
ldr r1, [r1]
ldr r2, [r1, #0x384]
b _0200EF0C
_0200EEF4:
ldrsh r1, [r2, #4]
cmp r1, r0
moveq r0, #1
bxeq lr
add r3, r3, #1
add r2, r2, #6
_0200EF0C:
cmp r3, #0x32
blt _0200EEF4
mov r0, #0
bx lr
.align 2, 0
_0200EF1C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end IsItemInBag
arm_func_start IsItemWithFlagsInBag
IsItemWithFlagsInBag: ; 0x0200EF20
ldr r2, _0200EF68 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr r2, [r2]
ldr r3, [r2, #0x384]
b _0200EF58
_0200EF34:
ldrsh r2, [r3, #4]
cmp r2, r0
bne _0200EF50
ldrb r2, [r3]
tst r2, r1
movne r0, #1
bxne lr
_0200EF50:
add ip, ip, #1
add r3, r3, #6
_0200EF58:
cmp ip, #0x32
blt _0200EF34
mov r0, #0
bx lr
.align 2, 0
_0200EF68: .word BAG_ITEMS_PTR_MIRROR
arm_func_end IsItemWithFlagsInBag
#ifndef JAPAN
arm_func_start IsItemInTreasureBoxes
IsItemInTreasureBoxes: ; 0x0200EF6C
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0200EFC8 ; =BAG_ITEMS_PTR_MIRROR
mov r4, r0
ldr r0, [r1]
mov r6, #0
ldr r5, [r0, #0x384]
b _0200EFB8
_0200EF88:
ldrsh r0, [r5, #4]
bl GetItemCategoryVeneer
add r0, r0, #0xf4
and r0, r0, #0xff
cmp r0, #2
bhi _0200EFB0
ldrh r0, [r5, #2]
cmp r0, r4
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
_0200EFB0:
add r6, r6, #1
add r5, r5, #6
_0200EFB8:
cmp r6, #0x32
blt _0200EF88
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200EFC8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end IsItemInTreasureBoxes
#endif
arm_func_start IsHeldItemInBag
IsHeldItemInBag: ; 0x0200EFCC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200F04C ; =BAG_ITEMS_PTR_MIRROR
mov r6, r0
ldr r0, [r1]
mov r5, #0
mov sb, #1
ldr r4, [r0, #0x384]
mov r8, r5
mov r7, sb
b _0200F03C
_0200EFF4:
ldrb r0, [r4]
tst r0, #1
movne r0, sb
moveq r0, r8
tst r0, #0xff
beq _0200F034
ldrb r0, [r4, #1]
cmp r0, #0
bne _0200F034
mov r0, r4
mov r1, r6
mov r2, r7
bl AreItemsEquivalent
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200F034:
add r5, r5, #1
add r4, r4, #6
_0200F03C:
cmp r5, #0x32
blt _0200EFF4
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200F04C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end IsHeldItemInBag
arm_func_start IsItemForSpecialSpawnInBag
IsItemForSpecialSpawnInBag: ; 0x0200F050
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0200F0E0 ; =BAG_ITEMS_PTR_MIRROR
mov r4, #0
ldr r0, [r0]
mov ip, #1
ldr lr, [r0, #0x384]
mov r3, r4
mov r1, r4
mov r2, ip
b _0200F0D0
_0200F078:
ldrb r5, [lr]
tst r5, #1
movne r0, ip
moveq r0, r3
tst r0, #0xff
beq _0200F0C8
ldrsh r0, [lr, #4]
sub r0, r0, #0xad
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _0200F0C8
tst r5, #8
movne r0, r2
moveq r0, r1
tst r0, #0xff
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
_0200F0C8:
add r4, r4, #1
add lr, lr, #6
_0200F0D0:
cmp r4, #0x32
blt _0200F078
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0200F0E0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end IsItemForSpecialSpawnInBag
arm_func_start HasStorableItems
HasStorableItems: ; 0x0200F0E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _0200F148 ; =BAG_ITEMS_PTR_MIRROR
mov r7, #0
ldr r0, [r0]
mov r4, r7
ldr r6, [r0, #0x384]
mov r5, #1
b _0200F138
_0200F104:
ldrb r0, [r6]
tst r0, #1
movne r0, r5
moveq r0, r4
tst r0, #0xff
beq _0200F130
ldrsh r0, [r6, #4]
bl IsStorableItem
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
_0200F130:
add r7, r7, #1
add r6, r6, #6
_0200F138:
cmp r7, #0x32
blt _0200F104
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200F148: .word BAG_ITEMS_PTR_MIRROR
arm_func_end HasStorableItems
arm_func_start GetItemIndex
GetItemIndex: ; 0x0200F14C
ldr r1, _0200F188 ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0
ldr r1, [r1]
ldr r1, [r1, #0x384]
b _0200F178
_0200F160:
cmp r1, r0
moveq r0, r2, lsl #0x10
moveq r0, r0, asr #0x10
bxeq lr
add r2, r2, #1
add r1, r1, #6
_0200F178:
cmp r2, #0x32
blt _0200F160
mvn r0, #0
bx lr
.align 2, 0
_0200F188: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetItemIndex
arm_func_start GetEquivItemIndex
GetEquivItemIndex: ; 0x0200F18C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200F204 ; =BAG_ITEMS_PTR_MIRROR
mov r5, r0
ldr r0, [r1]
mov r4, #0
ldr sb, [r0, #0x384]
mov r7, r4
mov r8, #1
mov r6, #0xb
b _0200F1F4
_0200F1B4:
ldrb r0, [sb]
tst r0, #1
movne r0, r8
moveq r0, r7
tst r0, #0xff
beq _0200F1EC
mov r0, sb
mov r1, r5
mov r2, r6
bl AreItemsEquivalent
cmp r0, #0
movne r0, r4, lsl #0x10
movne r0, r0, asr #0x10
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200F1EC:
add r4, r4, #1
add sb, sb, #6
_0200F1F4:
cmp r4, #0x32
blt _0200F1B4
mvn r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200F204: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetEquivItemIndex
arm_func_start GetEquippedThrowableItem
GetEquippedThrowableItem: ; 0x0200F208
ldr r0, _0200F268 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr r0, [r0]
mov r1, ip
ldr r3, [r0, #0x384]
mov r2, #1
b _0200F258
_0200F224:
ldrb r0, [r3]
tst r0, #1
movne r0, r2
moveq r0, r1
tst r0, #0xff
beq _0200F250
ldrb r0, [r3]
tst r0, #0x10
movne r0, ip, lsl #0x10
movne r0, r0, asr #0x10
bxne lr
_0200F250:
add ip, ip, #1
add r3, r3, #6
_0200F258:
cmp ip, #0x32
blt _0200F224
mvn r0, #0
bx lr
.align 2, 0
_0200F268: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetEquippedThrowableItem
arm_func_start GetFirstUnequippedItemOfType
GetFirstUnequippedItemOfType: ; 0x0200F26C
stmdb sp!, {r3, lr}
ldr r1, _0200F2DC ; =BAG_ITEMS_PTR_MIRROR
mvn ip, #0
ldr r1, [r1]
cmp r0, #0
ldr r3, [r1, #0x384]
moveq r0, ip
ldmeqia sp!, {r3, pc}
mov lr, #0
mov r2, ip
b _0200F2CC
_0200F298:
ldrsh r1, [r3, #4]
cmp r1, r0
bne _0200F2C4
ldrb r1, [r3, #1]
cmp r1, #0
moveq r0, lr, lsl #0x10
moveq r0, r0, asr #0x10
ldmeqia sp!, {r3, pc}
cmp ip, r2
moveq r1, lr, lsl #0x10
moveq ip, r1, asr #0x10
_0200F2C4:
add lr, lr, #1
add r3, r3, #6
_0200F2CC:
cmp lr, #0x32
blt _0200F298
mov r0, ip
ldmia sp!, {r3, pc}
.align 2, 0
_0200F2DC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetFirstUnequippedItemOfType
arm_func_start CopyItemAtIdx
CopyItemAtIdx: ; 0x0200F2E0
stmdb sp!, {r3, lr}
ldr r3, _0200F344 ; =BAG_ITEMS_PTR_MIRROR
mov r2, #6
ldr r3, [r3]
smulbb r2, r0, r2
ldr r3, [r3, #0x384]
ldrb r0, [r3, r2]
add r3, r3, r2
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0200F334
ldrh r2, [r3]
mov r0, #1
strh r2, [r1]
ldrh r2, [r3, #2]
strh r2, [r1, #2]
ldrh r2, [r3, #4]
strh r2, [r1, #4]
ldmia sp!, {r3, pc}
_0200F334:
mov r0, r1
bl ItemZInit
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0200F344: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CopyItemAtIdx
arm_func_start GetItemAtIdx
GetItemAtIdx: ; 0x0200F348
cmp r0, #0
movlt r0, #0
bxlt lr
ldr r2, _0200F36C ; =BAG_ITEMS_PTR_MIRROR
mov r1, #6
ldr r2, [r2]
ldr r2, [r2, #0x384]
smlabb r0, r0, r1, r2
bx lr
.align 2, 0
_0200F36C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetItemAtIdx
arm_func_start RemoveEmptyItemsInBag
RemoveEmptyItemsInBag: ; 0x0200F370
ldr r0, _0200F388 ; =BAG_ITEMS_PTR_MIRROR
ldr ip, _0200F38C ; =RemoveEmptyItems
ldr r0, [r0]
mov r1, #0x32
ldr r0, [r0, #0x384]
bx ip
.align 2, 0
_0200F388: .word BAG_ITEMS_PTR_MIRROR
_0200F38C: .word RemoveEmptyItems
arm_func_end RemoveEmptyItemsInBag
arm_func_start RemoveItemNoHole
RemoveItemNoHole: ; 0x0200F390
stmdb sp!, {r4, lr}
ldr r2, _0200F400 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #6
ldr r2, [r2]
smulbb r1, r0, r1
ldr r2, [r2, #0x384]
ldrb r0, [r2, r1]
add r4, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0200F3F8
ldrb r0, [r4, #1]
cmp r0, #0
beq _0200F3D4
bl sub_020582E0
_0200F3D4:
mov r0, r4
bl ItemZInit
ldr r0, _0200F400 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
mov r0, #1
ldmia sp!, {r4, pc}
_0200F3F8:
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0200F400: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemNoHole
arm_func_start RemoveItem
RemoveItem: ; 0x0200F404
stmdb sp!, {r4, lr}
ldr r2, _0200F450 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #6
ldr r2, [r2]
smulbb r1, r0, r1
ldr r2, [r2, #0x384]
ldrb r0, [r2, r1]
add r4, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
ldrneb r0, [r4, #1]
cmpne r0, #0
beq _0200F444
bl sub_020582E0
_0200F444:
mov r0, r4
bl ItemZInit
ldmia sp!, {r4, pc}
.align 2, 0
_0200F450: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItem
arm_func_start RemoveHeldItemNoHole
RemoveHeldItemNoHole: ; 0x0200F454
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r5, r0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, _0200F4D0 ; =BAG_ITEMS_PTR_MIRROR
mov r4, #0
ldr r0, [r0]
mov r6, r4
ldr r8, [r0, #0x384]
mov r7, #1
_0200F478:
ldrb r0, [r8]
tst r0, #1
movne r0, r7
moveq r0, r6
tst r0, #0xff
beq _0200F4A8
ldrb r0, [r8, #1]
cmp r0, r5
bne _0200F4A8
bl sub_020582E0
mov r0, r8
bl ItemZInit
_0200F4A8:
add r4, r4, #1
cmp r4, #0x32
add r8, r8, #6
blt _0200F478
ldr r0, _0200F4D0 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0200F4D0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveHeldItemNoHole
arm_func_start RemoveItemByIdAndStackNoHole
RemoveItemByIdAndStackNoHole: ; 0x0200F4D4
stmdb sp!, {r4, lr}
ldr r1, _0200F554 ; =BAG_ITEMS_PTR_MIRROR
mov r3, #0
ldr r1, [r1]
ldr r4, [r1, #0x384]
b _0200F544
_0200F4EC:
ldrsh r2, [r4, #4]
ldrsh r1, [r0]
cmp r2, r1
ldreqh r2, [r4, #2]
ldreqh r1, [r0, #2]
cmpeq r2, r1
bne _0200F53C
ldrb r0, [r4, #1]
cmp r0, #0
beq _0200F518
bl sub_020582E0
_0200F518:
mov r0, r4
bl ItemZInit
ldr r0, _0200F554 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
mov r0, #1
ldmia sp!, {r4, pc}
_0200F53C:
add r3, r3, #1
add r4, r4, #6
_0200F544:
cmp r3, #0x32
blt _0200F4EC
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0200F554: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemByIdAndStackNoHole
arm_func_start RemoveEquivItem
RemoveEquivItem: ; 0x0200F558
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200F5FC ; =BAG_ITEMS_PTR_MIRROR
mov r5, r0
ldr r0, [r1]
mov r4, #0
ldr sb, [r0, #0x384]
mov r7, r4
mov r8, #1
mov r6, #0xb
b _0200F5EC
_0200F580:
ldrb r0, [sb]
tst r0, #1
movne r0, r8
moveq r0, r7
tst r0, #0xff
beq _0200F5E4
mov r0, sb
mov r1, r5
mov r2, r6
bl AreItemsEquivalent
cmp r0, #0
beq _0200F5E4
ldrb r0, [sb, #1]
cmp r0, #0
beq _0200F5C0
bl sub_020582E0
_0200F5C0:
mov r0, sb
bl ItemZInit
ldr r0, _0200F5FC ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200F5E4:
add r4, r4, #1
add sb, sb, #6
_0200F5EC:
cmp r4, #0x32
blt _0200F580
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200F5FC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveEquivItem
arm_func_start RemoveEquivItemNoHole
RemoveEquivItemNoHole: ; 0x0200F600
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200F690 ; =BAG_ITEMS_PTR_MIRROR
mov r5, r0
ldr r0, [r1]
mov r4, #0
ldr sb, [r0, #0x384]
mov r7, r4
mov r8, #1
mov r6, #0xb
b _0200F680
_0200F628:
ldrb r0, [sb]
tst r0, #1
movne r0, r8
moveq r0, r7
tst r0, #0xff
beq _0200F678
mov r0, sb
mov r1, r5
mov r2, r6
bl AreItemsEquivalent
cmp r0, #0
beq _0200F678
ldrb r0, [sb, #1]
cmp r0, #0
beq _0200F668
bl sub_020582E0
_0200F668:
mov r0, sb
bl ItemZInit
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200F678:
add r4, r4, #1
add sb, sb, #6
_0200F680:
cmp r4, #0x32
blt _0200F628
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200F690: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveEquivItemNoHole
arm_func_start DecrementStackItem
DecrementStackItem: ; 0x0200F694
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200F714 ; =BAG_ITEMS_PTR_MIRROR
mov r6, r0
ldr r0, [r1]
mov r5, #0
ldr r4, [r0, #0x384]
mov r8, r5
mov sb, #1
mov r7, #0xb
b _0200F704
_0200F6BC:
ldrb r0, [r4]
tst r0, #1
movne r0, sb
moveq r0, r8
tst r0, #0xff
beq _0200F6FC
mov r0, r4
mov r1, r6
mov r2, r7
bl AreItemsEquivalent
cmp r0, #0
ldrneh r1, [r4, #2]
movne r0, #1
subne r1, r1, #1
strneh r1, [r4, #2]
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200F6FC:
add r5, r5, #1
add r4, r4, #6
_0200F704:
cmp r5, #0x32
blt _0200F6BC
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200F714: .word BAG_ITEMS_PTR_MIRROR
arm_func_end DecrementStackItem
arm_func_start RemoveItemNoHoleCheck
RemoveItemNoHoleCheck: ; 0x0200F718
stmdb sp!, {r4, lr}
mvn r1, #0
cmp r0, r1
beq _0200F78C
ldr r2, _0200F794 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #6
ldr r2, [r2]
smulbb r1, r0, r1
ldr r2, [r2, #0x384]
ldrb r0, [r2, r1]
add r4, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0200F78C
ldrb r0, [r4, #1]
cmp r0, #0
beq _0200F768
bl sub_020582E0
_0200F768:
mov r0, r4
bl ItemZInit
ldr r0, _0200F794 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
mov r0, #1
ldmia sp!, {r4, pc}
_0200F78C:
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0200F794: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemNoHoleCheck
arm_func_start RemoveFirstUnequippedItemOfType
RemoveFirstUnequippedItemOfType: ; 0x0200F798
stmdb sp!, {r3, lr}
bl GetFirstUnequippedItemOfType
bl RemoveItemNoHoleCheck
ldmia sp!, {r3, pc}
arm_func_end RemoveFirstUnequippedItemOfType
arm_func_start RemoveAllItems
RemoveAllItems: ; 0x0200F7A8
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0200F7D8 ; =BAG_ITEMS_PTR_MIRROR
mov r5, #0
ldr r0, [r0]
ldr r4, [r0, #0x384]
_0200F7BC:
mov r0, r4
bl ItemZInit
add r5, r5, #1
cmp r5, #0x32
add r4, r4, #6
blt _0200F7BC
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0200F7D8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveAllItems
arm_func_start RemoveAllItemsStartingAt
RemoveAllItemsStartingAt: ; 0x0200F7DC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r6, _0200F848 ; =BAG_ITEMS_PTR_MIRROR
mov r4, r0
ldr r1, [r6]
mov r0, #6
ldr r1, [r1, #0x384]
mov r5, r0
mla r7, r4, r0, r1
b _0200F828
_0200F800:
ldrb r0, [r7, #1]
cmp r0, #0
beq _0200F810
bl sub_020582E0
_0200F810:
ldr r0, [r6]
ldr r0, [r0, #0x384]
mla r0, r4, r5, r0
bl ItemZInit
add r4, r4, #1
add r7, r7, #6
_0200F828:
cmp r4, #0x32
blt _0200F800
ldr r0, _0200F848 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200F848: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveAllItemsStartingAt
arm_func_start SpecialProcAddItemToBag
SpecialProcAddItemToBag: ; 0x0200F84C
stmdb sp!, {r3, lr}
sub sp, sp, #8
mov r1, r0
add r0, sp, #0
bl BulkItemToItem
add r0, sp, #0
mov r1, #0
bl AddItemToBag
add sp, sp, #8
ldmia sp!, {r3, pc}
arm_func_end SpecialProcAddItemToBag
arm_func_start AddItemToBagNoHeld
AddItemToBagNoHeld: ; 0x0200F874
ldr ip, _0200F880 ; =AddItemToBag
mov r1, #0
bx ip
.align 2, 0
_0200F880: .word AddItemToBag
arm_func_end AddItemToBagNoHeld
arm_func_start AddItemToBag
AddItemToBag: ; 0x0200F884
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0200F90C ; =BAG_ITEMS_PTR_MIRROR
mov r6, r0
ldr r0, [r2]
mov r5, r1
ldr r4, [r0, #0x384]
bl GetCurrentBagCapacity
mov ip, #0
mov r1, ip
mov r2, #1
b _0200F8FC
_0200F8B0:
ldrb r3, [r4]
tst r3, #1
movne r3, r2
moveq r3, r1
tst r3, #0xff
bne _0200F8F4
ldrh r1, [r6]
mov r0, r6
strh r1, [r4]
ldrh r1, [r6, #2]
strh r1, [r4, #2]
ldrh r1, [r6, #4]
strh r1, [r4, #4]
strb r5, [r4, #1]
bl SetItemAcquired
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_0200F8F4:
add ip, ip, #1
add r4, r4, #6
_0200F8FC:
cmp ip, r0
blt _0200F8B0
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200F90C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AddItemToBag
arm_func_start CleanStickyItemsInBag
CleanStickyItemsInBag: ; 0x0200F910
ldr r0, _0200F93C ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0
ldr r0, [r0]
ldr r1, [r0, #0x384]
_0200F920:
ldrb r0, [r1]
add r2, r2, #1
cmp r2, #0x32
bic r0, r0, #8
strb r0, [r1], #6
blt _0200F920
bx lr
.align 2, 0
_0200F93C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CleanStickyItemsInBag
arm_func_start CountStickyItemsInBag
CountStickyItemsInBag: ; 0x0200F940
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _0200F9B0 ; =BAG_ITEMS_PTR_MIRROR
mov lr, #0
ldr r0, [r0]
mov r3, #1
ldr ip, [r0, #0x384]
mov r4, lr
mov r2, lr
mov r0, lr
mov r1, r3
_0200F968:
ldrb r5, [ip]
tst r5, #1
movne r6, r3
moveq r6, r2
tst r6, #0xff
beq _0200F994
tst r5, #8
movne r5, r1
moveq r5, r0
tst r5, #0xff
addne lr, lr, #1
_0200F994:
add r4, r4, #1
cmp r4, #0x32
add ip, ip, #6
blt _0200F968
mov r0, lr, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200F9B0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountStickyItemsInBag
arm_func_start sub_0200F9B4
sub_0200F9B4: ; 0x0200F9B4
stmdb sp!, {r3, lr}
ldr r1, _0200FA08 ; =BAG_ITEMS_PTR_MIRROR
mov lr, #0
ldr r1, [r1]
mov r2, lr
ldr ip, [r1, #0x384]
mov r3, #1
_0200F9D0:
ldrb r1, [ip]
add lr, lr, #1
tst r1, #1
movne r1, r3
moveq r1, r2
tst r1, #0xff
ldrneb r1, [ip, #1]
cmpne r1, #0
ldrneb r1, [r0, r1]
strneb r1, [ip, #1]
cmp lr, #0x32
add ip, ip, #6
blt _0200F9D0
ldmia sp!, {r3, pc}
.align 2, 0
_0200FA08: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0200F9B4
arm_func_start sub_0200FA0C
sub_0200FA0C: ; 0x0200FA0C
stmdb sp!, {r3, lr}
ldr r3, _0200FA64 ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0x12c
ldr r3, [r3]
mov lr, #0
mla ip, r1, r2, r3
mov r2, lr
mov r3, #1
_0200FA2C:
ldrb r1, [ip]
add lr, lr, #1
tst r1, #1
movne r1, r3
moveq r1, r2
tst r1, #0xff
ldrneb r1, [ip, #1]
cmpne r1, #0
ldrneb r1, [r0, r1]
strneb r1, [ip, #1]
cmp lr, #0x32
add ip, ip, #6
blt _0200FA2C
ldmia sp!, {r3, pc}
.align 2, 0
_0200FA64: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0200FA0C
arm_func_start TransmuteHeldItemInBag
TransmuteHeldItemInBag: ; 0x0200FA68
stmdb sp!, {r4, lr}
ldr r1, _0200FAE8 ; =BAG_ITEMS_PTR_MIRROR
mov r4, #0
ldr r1, [r1]
mov r3, r4
ldr lr, [r1, #0x384]
mov ip, #1
b _0200FAD8
_0200FA88:
ldrb r1, [lr]
tst r1, #1
movne r1, ip
moveq r1, r3
tst r1, #0xff
beq _0200FAD0
ldrb r2, [lr, #1]
ldrb r1, [r0, #1]
cmp r2, r1
bne _0200FAD0
ldrh r1, [r0]
strh r1, [lr]
ldrh r1, [r0, #2]
strh r1, [lr, #2]
ldrh r1, [r0, #4]
mov r0, #1
strh r1, [lr, #4]
ldmia sp!, {r4, pc}
_0200FAD0:
add r4, r4, #1
add lr, lr, #6
_0200FAD8:
cmp r4, #0x32
blt _0200FA88
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0200FAE8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end TransmuteHeldItemInBag
arm_func_start SetFlagsForHeldItemInBag
SetFlagsForHeldItemInBag: ; 0x0200FAEC
stmdb sp!, {r4, lr}
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r2, _0200FB50 ; =BAG_ITEMS_PTR_MIRROR
mov r4, #0
ldr r2, [r2]
mov r3, r4
ldr lr, [r2, #0x384]
mov ip, #1
_0200FB10:
ldrb r2, [lr]
tst r2, #1
movne r2, ip
moveq r2, r3
tst r2, #0xff
beq _0200FB3C
ldrb r2, [lr, #1]
cmp r2, r0
ldreqb r2, [lr]
orreq r2, r2, r1
streqb r2, [lr]
_0200FB3C:
add r4, r4, #1
cmp r4, #0x32
add lr, lr, #6
blt _0200FB10
ldmia sp!, {r4, pc}
.align 2, 0
_0200FB50: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SetFlagsForHeldItemInBag
arm_func_start RemoveHolderForItemInBag
RemoveHolderForItemInBag: ; 0x0200FB54
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _0200FBDC ; =BAG_ITEMS_PTR_MIRROR
mov r6, r0
ldr r0, [r1]
mov r5, #0
mov sb, #1
ldr r4, [r0, #0x384]
mov r8, r5
mov r7, sb
b _0200FBCC
_0200FB7C:
ldrb r0, [r4]
tst r0, #1
movne r0, sb
moveq r0, r8
tst r0, #0xff
beq _0200FBC4
mov r0, r4
mov r1, r6
mov r2, r7
bl AreItemsEquivalent
cmp r0, #0
beq _0200FBC4
mov r0, #0
strb r0, [r4, #1]
ldrb r1, [r6]
mov r0, #1
strb r1, [r4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0200FBC4:
add r5, r5, #1
add r4, r4, #6
_0200FBCC:
cmp r5, #0x32
blt _0200FB7C
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200FBDC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveHolderForItemInBag
arm_func_start SetHolderForItemInBag
SetHolderForItemInBag: ; 0x0200FBE0
stmdb sp!, {r4, lr}
ldr ip, _0200FC20 ; =BAG_ITEMS_PTR_MIRROR
mov r3, #6
ldr lr, [ip]
smulbb ip, r0, r3
ldr lr, [lr, #0x384]
and r0, r2, #0xff
ldrb r3, [lr, ip]
add r4, lr, ip
bic r3, r3, #0x10
strb r3, [lr, ip]
strb r2, [r1, #1]
strb r0, [r4, #1]
ldrb r0, [r1]
strb r0, [lr, ip]
ldmia sp!, {r4, pc}
.align 2, 0
_0200FC20: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SetHolderForItemInBag
arm_func_start SortItemsInBag
SortItemsInBag: ; 0x0200FC24
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r4, #0
ldr r7, _0200FCA8 ; =BAG_ITEMS_PTR_MIRROR
mov r8, r4
mov sb, #1
mov r6, #6
_0200FC3C:
mul r1, r4, r6
ldr r0, [r7]
ldr r2, [r0, #0x384]
ldrb r0, [r2, r1]
add r5, r2, r1
tst r0, #1
movne r0, sb
moveq r0, r8
tst r0, #0xff
beq _0200FC84
ldrsh r0, [r5, #4]
cmp r0, #0xb7
bne _0200FC84
mov r0, r5
bl sub_0200D8AC
bl AddMoneyCarried
mov r0, r5
bl ItemZInit
_0200FC84:
add r4, r4, #1
cmp r4, #0x32
blt _0200FC3C
ldr r0, _0200FCA8 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl SortItemList
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0200FCA8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SortItemsInBag
arm_func_start RemovePokeItemsInBag
RemovePokeItemsInBag: ; 0x0200FCAC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _0200FD34 ; =BAG_ITEMS_PTR_MIRROR
mov r5, #0
ldr r0, [r0]
mov r6, r5
ldr r4, [r0, #0x384]
mov r7, #1
_0200FCC8:
ldrb r0, [r4]
tst r0, #1
movne r0, r7
moveq r0, r6
tst r0, #0xff
beq _0200FD0C
ldrsh r0, [r4, #4]
cmp r0, #0xb7
bne _0200FD0C
ldrb r1, [r4]
mov r0, r4
bic r1, r1, #8
strb r1, [r4]
bl sub_0200D8AC
bl AddMoneyCarried
mov r0, r4
bl ItemZInit
_0200FD0C:
add r5, r5, #1
cmp r5, #0x32
add r4, r4, #6
blt _0200FCC8
ldr r0, _0200FD34 ; =BAG_ITEMS_PTR_MIRROR
mov r1, #0x32
ldr r0, [r0]
ldr r0, [r0, #0x384]
bl RemoveEmptyItems
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200FD34: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemovePokeItemsInBag
arm_func_start sub_0200FD38
sub_0200FD38: ; 0x0200FD38
bx lr
arm_func_end sub_0200FD38
arm_func_start sub_0200FD3C
sub_0200FD3C: ; 0x0200FD3C
ldr ip, _0200FD44 ; =StorageZInit
bx ip
.align 2, 0
_0200FD44: .word StorageZInit
arm_func_end sub_0200FD3C
arm_func_start sub_0200FD48
sub_0200FD48: ; 0x0200FD48
ldr ip, _0200FD50 ; =GetRankStorageSize
bx ip
.align 2, 0
_0200FD50: .word GetRankStorageSize
arm_func_end sub_0200FD48
arm_func_start IsStorageFull
IsStorageFull: ; 0x0200FD54
stmdb sp!, {r4, lr}
bl GetRankStorageSize
mov r4, r0
bl CountNbOfItemsInStorage
cmp r0, r4
movge r0, #1
movlt r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end IsStorageFull
arm_func_start CountNbOfItemsInStorage
CountNbOfItemsInStorage: ; 0x0200FD78
ldr r1, _0200FDAC ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r3, [r1]
mov r2, r0
_0200FD88:
add r1, r3, r2, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
add r2, r2, #1
cmp r1, #0
addne r0, r0, #1
cmp r2, #0x3e8
blt _0200FD88
bx lr
.align 2, 0
_0200FDAC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountNbOfItemsInStorage
arm_func_start CountNbOfValidItemsInStorage
CountNbOfValidItemsInStorage: ; 0x0200FDB0
stmdb sp!, {r4, r5, r6, lr}
mov r5, #0
ldr r4, _0200FDFC ; =BAG_ITEMS_PTR_MIRROR
mov r6, r5
_0200FDC0:
ldr r0, [r4]
add r0, r0, r6, lsl #1
add r0, r0, #0x300
ldrsh r1, [r0, #0x8a]
cmp r1, #0
beq _0200FDE8
ldrsh r0, [r0, #0x8a]
bl IsItemValidVeneer
cmp r0, #0
addne r5, r5, #1
_0200FDE8:
add r6, r6, #1
cmp r6, #0x3e8
blt _0200FDC0
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200FDFC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountNbOfValidItemsInStorage
arm_func_start CountNbOfValidItemsInTimeDarknessInStorage
CountNbOfValidItemsInTimeDarknessInStorage: ; 0x0200FE00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, #0
ldr r6, _0200FEA4 ; =BAG_ITEMS_PTR_MIRROR
mov r5, r4
_0200FE10:
ldr r0, [r6]
add r0, r0, r5, lsl #1
add r0, r0, #0x300
ldrsh r7, [r0, #0x8a]
cmp r7, #0
beq _0200FE90
mov r0, r7
bl IsItemValidVeneer
cmp r0, #0
beq _0200FE90
mov r0, r7
bl IsItemInTimeDarkness
cmp r0, #0
beq _0200FE90
mov r0, r7
bl IsTreasureBox
cmp r0, #0
beq _0200FE8C
ldr r0, [r6]
add r0, r0, r5, lsl #1
add r0, r0, #0xb00
ldrsh r7, [r0, #0x5a]
mov r0, r7
bl IsItemValidVeneer
cmp r0, #0
beq _0200FE90
mov r0, r7
bl IsItemInTimeDarkness
cmp r0, #0
addne r4, r4, #1
b _0200FE90
_0200FE8C:
add r4, r4, #1
_0200FE90:
add r5, r5, #1
cmp r5, #0x3e8
blt _0200FE10
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200FEA4: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountNbOfValidItemsInTimeDarknessInStorage
arm_func_start CountNbItemsOfTypeInStorage
CountNbItemsOfTypeInStorage: ; 0x0200FEA8
ldr r1, _0200FEE0 ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0
ldr ip, [r1]
mov r3, r2
_0200FEB8:
add r1, ip, r3, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
add r3, r3, #1
cmp r0, r1
addeq r2, r2, #1
cmp r3, #0x3e8
blt _0200FEB8
mov r0, r2
bx lr
.align 2, 0
_0200FEE0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountNbItemsOfTypeInStorage
arm_func_start CountItemTypeInStorage
CountItemTypeInStorage: ; 0x0200FEE4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, #0
ldr r7, _0200FF4C ; =BAG_ITEMS_PTR_MIRROR
mov r6, r0
mov r5, r4
_0200FEF8:
ldr r1, [r7]
ldrsh r0, [r6]
add r1, r1, r5, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
cmp r0, r1
bne _0200FF38
bl IsThrownItem
cmp r0, #0
addeq r4, r4, #1
beq _0200FF38
ldr r0, [r7]
add r0, r0, r5, lsl #1
add r0, r0, #0xb00
ldrh r0, [r0, #0x5a]
add r4, r4, r0
_0200FF38:
add r5, r5, #1
cmp r5, #0x3e8
blt _0200FEF8
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200FF4C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end CountItemTypeInStorage
arm_func_start GetEquivBulkItemIdxInStorage
GetEquivBulkItemIdxInStorage: ; 0x0200FF50
stmdb sp!, {r3, lr}
ldr r1, _0200FFA8 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr lr, [r1]
b _0200FF98
_0200FF64:
add r2, lr, ip, lsl #1
add r1, r2, #0x300
ldrsh r3, [r0]
ldrsh r1, [r1, #0x8a]
cmp r3, r1
addeq r1, r2, #0xb00
ldreqh r2, [r0, #2]
ldreqh r1, [r1, #0x5a]
cmpeq r2, r1
moveq r0, ip, lsl #0x10
moveq r0, r0, asr #0x10
ldmeqia sp!, {r3, pc}
add ip, ip, #1
_0200FF98:
cmp ip, #0x3e8
blt _0200FF64
mvn r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0200FFA8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetEquivBulkItemIdxInStorage
arm_func_start ConvertStorageItemAtIdxToBulkItem
ConvertStorageItemAtIdxToBulkItem: ; 0x0200FFAC
ldr r3, _0200FFF0 ; =BAG_ITEMS_PTR_MIRROR
ldr r2, [r3]
add r2, r2, r0, lsl #1
add r2, r2, #0x300
ldrsh r2, [r2, #0x8a]
strh r2, [r1]
ldr r2, [r3]
add r0, r2, r0, lsl #1
add r0, r0, #0xb00
ldrh r0, [r0, #0x5a]
strh r0, [r1, #2]
ldrsh r0, [r1]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0200FFF0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end ConvertStorageItemAtIdxToBulkItem
arm_func_start ConvertStorageItemAtIdxToItem
ConvertStorageItemAtIdxToItem: ; 0x0200FFF4
ldr r3, _02010040 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr r2, [r3]
add r2, r2, r0, lsl #1
add r2, r2, #0x300
ldrsh r2, [r2, #0x8a]
strh r2, [r1, #4]
ldr r2, [r3]
add r0, r2, r0, lsl #1
add r0, r0, #0xb00
ldrh r0, [r0, #0x5a]
strh r0, [r1, #2]
strb ip, [r1]
strb ip, [r1, #1]
ldrsh r0, [r1, #4]
cmp r0, #0
movne ip, #1
and r0, ip, #0xff
bx lr
.align 2, 0
_02010040: .word BAG_ITEMS_PTR_MIRROR
arm_func_end ConvertStorageItemAtIdxToItem
arm_func_start sub_02010044
sub_02010044: ; 0x02010044
ldr r1, _0201005C ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r0, r1, r0, lsl #1
add r0, r0, #0x300
ldrsh r0, [r0, #0x8a]
bx lr
.align 2, 0
_0201005C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010044
arm_func_start sub_02010060
sub_02010060: ; 0x02010060
ldr r1, _02010078 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r0, r1, r0, lsl #1
add r0, r0, #0xb00
ldrh r0, [r0, #0x5a]
bx lr
.align 2, 0
_02010078: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010060
arm_func_start sub_0201007C
sub_0201007C: ; 0x0201007C
stmdb sp!, {r3, lr}
ldr r1, _02010150 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r2, [r1]
b _02010144
_02010090:
add r1, r2, r0, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
cmp r1, #0
bne _02010140
mov r1, r0
add r0, r0, #1
ldr r3, _02010150 ; =BAG_ITEMS_PTR_MIRROR
b _020100FC
_020100B4:
ldr lr, [r3]
add r2, lr, r0, lsl #1
add r2, r2, #0x300
ldrsh ip, [r2, #0x8a]
cmp ip, #0
beq _020100F8
add r2, lr, r1, lsl #1
add r2, r2, #0x300
strh ip, [r2, #0x8a]
ldr lr, [r3]
add r2, lr, r0, lsl #1
add r2, r2, #0xb00
ldrh ip, [r2, #0x5a]
add r2, lr, r1, lsl #1
add r2, r2, #0xb00
strh ip, [r2, #0x5a]
add r1, r1, #1
_020100F8:
add r0, r0, #1
_020100FC:
cmp r0, #0x3e8
blt _020100B4
mov r3, #0
ldr r2, _02010150 ; =BAG_ITEMS_PTR_MIRROR
b _02010134
_02010110:
ldr r0, [r2]
add r0, r0, r1, lsl #1
add r0, r0, #0x300
strh r3, [r0, #0x8a]
ldr r0, [r2]
add r0, r0, r1, lsl #1
add r0, r0, #0xb00
strh r3, [r0, #0x5a]
add r1, r1, #1
_02010134:
cmp r1, #0x3e8
blt _02010110
ldmia sp!, {r3, pc}
_02010140:
add r0, r0, #1
_02010144:
cmp r0, #0x3e8
blt _02010090
ldmia sp!, {r3, pc}
.align 2, 0
_02010150: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0201007C
arm_func_start sub_02010154
sub_02010154: ; 0x02010154
stmdb sp!, {r3, lr}
ldr r2, _0201019C ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r2]
add r1, r1, r0, lsl #1
add r1, r1, #0x300
ldrsh r3, [r1, #0x8a]
cmp r3, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r3, #0
strh r3, [r1, #0x8a]
ldr r1, [r2]
add r0, r1, r0, lsl #1
add r0, r0, #0xb00
strh r3, [r0, #0x5a]
bl sub_0201007C
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0201019C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010154
arm_func_start RemoveItemAtIdxInStorage
RemoveItemAtIdxInStorage: ; 0x020101A0
ldr r2, _020101E0 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r2]
add r1, r1, r0, lsl #1
add r1, r1, #0x300
ldrsh r3, [r1, #0x8a]
cmp r3, #0
moveq r0, #0
bxeq lr
mov r3, #0
strh r3, [r1, #0x8a]
ldr r1, [r2]
add r0, r1, r0, lsl #1
add r0, r0, #0xb00
strh r3, [r0, #0x5a]
mov r0, #1
bx lr
.align 2, 0
_020101E0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemAtIdxInStorage
arm_func_start RemoveBulkItemInStorage
RemoveBulkItemInStorage: ; 0x020101E4
stmdb sp!, {r4, lr}
ldr r1, _0201025C ; =BAG_ITEMS_PTR_MIRROR
mov lr, #0
ldr r4, [r1]
b _0201024C
_020101F8:
add r3, r4, lr, lsl #1
add r2, r3, #0x300
ldrsh ip, [r0]
ldrsh r1, [r2, #0x8a]
cmp ip, r1
addeq r1, r3, #0xb00
ldreqh r3, [r0, #2]
ldreqh r1, [r1, #0x5a]
cmpeq r3, r1
bne _02010248
mov r1, #0
ldr r0, _0201025C ; =BAG_ITEMS_PTR_MIRROR
strh r1, [r2, #0x8a]
ldr r0, [r0]
add r0, r0, lr, lsl #1
add r0, r0, #0xb00
strh r1, [r0, #0x5a]
bl sub_0201007C
mov r0, #1
ldmia sp!, {r4, pc}
_02010248:
add lr, lr, #1
_0201024C:
cmp lr, #0x3e8
blt _020101F8
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0201025C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveBulkItemInStorage
arm_func_start RemoveItemInStorage
RemoveItemInStorage: ; 0x02010260
stmdb sp!, {r4, lr}
ldr r1, _020102D8 ; =BAG_ITEMS_PTR_MIRROR
mov lr, #0
ldr r4, [r1]
b _020102C8
_02010274:
add r3, r4, lr, lsl #1
add r2, r3, #0x300
ldrsh ip, [r0, #4]
ldrsh r1, [r2, #0x8a]
cmp ip, r1
addeq r1, r3, #0xb00
ldreqh r3, [r0, #2]
ldreqh r1, [r1, #0x5a]
cmpeq r3, r1
bne _020102C4
mov r1, #0
ldr r0, _020102D8 ; =BAG_ITEMS_PTR_MIRROR
strh r1, [r2, #0x8a]
ldr r0, [r0]
add r0, r0, lr, lsl #1
add r0, r0, #0xb00
strh r1, [r0, #0x5a]
bl sub_0201007C
mov r0, #1
ldmia sp!, {r4, pc}
_020102C4:
add lr, lr, #1
_020102C8:
cmp lr, #0x3e8
blt _02010274
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_020102D8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemInStorage
arm_func_start StorageZInit
StorageZInit: ; 0x020102DC
mov r3, #0
ldr r1, _02010318 ; =BAG_ITEMS_PTR_MIRROR
mov r2, r3
_020102E8:
ldr r0, [r1]
add r0, r0, r3, lsl #1
add r0, r0, #0x300
strh r2, [r0, #0x8a]
ldr r0, [r1]
add r0, r0, r3, lsl #1
add r0, r0, #0xb00
add r3, r3, #1
strh r2, [r0, #0x5a]
cmp r3, #0x3e8
blt _020102E8
bx lr
.align 2, 0
_02010318: .word BAG_ITEMS_PTR_MIRROR
arm_func_end StorageZInit
arm_func_start AddBulkItemToStorage
AddBulkItemToStorage: ; 0x0201031C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r4, r0
bl GetRankStorageSize
mov r5, r0
add r0, sp, #0
mov r1, r4
bl BulkItemToItem
ldr r0, _020103A8 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr r2, [r0]
b _02010394
_0201034C:
add r0, r2, ip, lsl #1
add r1, r0, #0x300
ldrsh r0, [r1, #0x8a]
cmp r0, #0
bne _02010390
ldrsh r3, [r4]
ldr r2, _020103A8 ; =BAG_ITEMS_PTR_MIRROR
add r0, sp, #0
strh r3, [r1, #0x8a]
ldr r1, [r2]
ldrh r2, [r4, #2]
add r1, r1, ip, lsl #1
add r1, r1, #0xb00
strh r2, [r1, #0x5a]
bl SetItemAcquired
mov r0, #1
b _020103A0
_02010390:
add ip, ip, #1
_02010394:
cmp ip, r5
blt _0201034C
mov r0, #0
_020103A0:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020103A8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AddBulkItemToStorage
arm_func_start AddItemToStorage
AddItemToStorage: ; 0x020103AC
stmdb sp!, {r4, lr}
mov r4, r0
bl GetRankStorageSize
ldr r1, _02010420 ; =BAG_ITEMS_PTR_MIRROR
mov ip, #0
ldr r3, [r1]
b _02010410
_020103C8:
add r1, r3, ip, lsl #1
add r1, r1, #0x300
ldrsh r2, [r1, #0x8a]
cmp r2, #0
bne _0201040C
ldrsh r3, [r4, #4]
ldr r2, _02010420 ; =BAG_ITEMS_PTR_MIRROR
mov r0, r4
strh r3, [r1, #0x8a]
ldr r1, [r2]
ldrh r2, [r4, #2]
add r1, r1, ip, lsl #1
add r1, r1, #0xb00
strh r2, [r1, #0x5a]
bl SetItemAcquired
mov r0, #1
ldmia sp!, {r4, pc}
_0201040C:
add ip, ip, #1
_02010410:
cmp ip, r0
blt _020103C8
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_02010420: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AddItemToStorage
arm_func_start SortItemsInStorage
SortItemsInStorage: ; 0x02010424
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, r1
mov r1, #6
mov sl, r0
mul r0, sb, r1
mov r1, #0
bl MemAlloc
mov r5, #6
mov r7, r0
mov r8, #0
mov fp, #0x80
ldr r6, _0201058C ; =BAG_ITEMS_PTR_MIRROR
mov r4, r5
b _020104C8
_0201045C:
ldr r0, [r6]
add r0, r0, r8, lsl #1
add r0, r0, #0x300
ldrsh r0, [r0, #0x8a]
cmp r0, #0
beq _020104D0
mla r0, r8, r5, r7
bl ItemZInit
ldrb r0, [sl, r8]
mul r2, r8, r4
cmp r0, #0
movne r0, fp
moveq r0, #0
orr r0, r0, #1
strb r0, [r7, r2]
ldr r1, [r6]
add r0, r7, r2
add r1, r1, r8, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
strh r1, [r0, #4]
ldr r1, [r6]
add r1, r1, r8, lsl #1
add r1, r1, #0xb00
ldrh r1, [r1, #0x5a]
add r8, r8, #1
strh r1, [r0, #2]
_020104C8:
cmp r8, sb
blt _0201045C
_020104D0:
mov r0, r7
mov r1, r8
bl SortItemList
mov r6, #0
mov r1, r6
mov r2, #1
mov fp, #6
ldr r0, _0201058C ; =BAG_ITEMS_PTR_MIRROR
b _0201053C
_020104F4:
mul r4, r6, fp
add r5, r7, r4
ldr ip, [r0]
ldrsh r3, [r5, #4]
add ip, ip, r6, lsl #1
add ip, ip, #0x300
strh r3, [ip, #0x8a]
ldr ip, [r0]
ldrh r3, [r5, #2]
add r5, ip, r6, lsl #1
add r5, r5, #0xb00
strh r3, [r5, #0x5a]
ldrb r3, [r7, r4]
tst r3, #0x80
movne r3, r2
moveq r3, r1
strb r3, [sl, r6]
add r6, r6, #1
_0201053C:
cmp r6, r8
blt _020104F4
mov r2, #0
ldr r1, _0201058C ; =BAG_ITEMS_PTR_MIRROR
b _02010578
_02010550:
ldr r0, [r1]
add r0, r0, r6, lsl #1
add r0, r0, #0x300
strh r2, [r0, #0x8a]
ldr r0, [r1]
add r0, r0, r6, lsl #1
add r0, r0, #0xb00
strh r2, [r0, #0x5a]
strb r2, [sl, r6]
add r6, r6, #1
_02010578:
cmp r6, sb
blt _02010550
mov r0, r7
bl MemFree
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201058C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SortItemsInStorage
arm_func_start sub_02010590
sub_02010590: ; 0x02010590
bx lr
arm_func_end sub_02010590
arm_func_start AllKecleonShopsZInit
AllKecleonShopsZInit: ; 0x02010594
stmdb sp!, {r4, r5, r6, lr}
mov r2, #0
ldr ip, _02010650 ; =BAG_ITEMS_PTR_MIRROR
mov r5, r2
mov r0, r2
mov r1, r2
_020105AC:
mov r6, r1
_020105B0:
ldr r3, [ip]
mov r4, r6, lsl #2
add r3, r3, #0x330
add r3, r3, #0x1000
add r3, r3, r2, lsl #5
add lr, r3, r6, lsl #2
strh r5, [r3, r4]
add r6, r6, #1
strh r5, [lr, #2]
cmp r6, #8
blt _020105B0
mov r6, r5
_020105E0:
ldr r3, [ip]
mov lr, r6, lsl #2
add r3, r3, #0x374
add r3, r3, #0x1000
add r3, r3, r2, lsl #4
add r4, r3, r6, lsl #2
strh r0, [r3, lr]
add r6, r6, #1
strh r0, [r4, #2]
cmp r6, #4
blt _020105E0
add r2, r2, #1
cmp r2, #2
blt _020105AC
ldr r2, _02010650 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r2]
add r1, r1, #0x1000
str r0, [r1, #0x3a0]
ldr r1, [r2]
add r1, r1, #0x1300
strh r0, [r1, #0xa4]
ldr r1, [r2]
add r1, r1, #0x1300
strh r0, [r1, #0xa6]
ldr r1, [r2]
add r1, r1, #0x1300
strh r0, [r1, #0xa8]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02010650: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AllKecleonShopsZInit
arm_func_start SpecialEpisodeKecleonShopZInit
SpecialEpisodeKecleonShopZInit: ; 0x02010654
stmdb sp!, {r3, lr}
mov lr, #0
ldr r2, _020106C0 ; =BAG_ITEMS_PTR_MIRROR
mov r0, lr
_02010664:
ldr r1, [r2]
mov r3, lr, lsl #2
add r1, r1, #0x350
add r1, r1, #0x1000
add ip, r1, lr, lsl #2
strh r0, [r1, r3]
add lr, lr, #1
strh r0, [ip, #2]
cmp lr, #8
blt _02010664
ldr r2, _020106C0 ; =BAG_ITEMS_PTR_MIRROR
mov r3, #0
_02010694:
ldr r1, [r2]
mov ip, r0, lsl #2
add r1, r1, #0x384
add r1, r1, #0x1000
add lr, r1, r0, lsl #2
strh r3, [r1, ip]
add r0, r0, #1
strh r3, [lr, #2]
cmp r0, #4
blt _02010694
ldmia sp!, {r3, pc}
.align 2, 0
_020106C0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SpecialEpisodeKecleonShopZInit
arm_func_start SetActiveKecleonShop
SetActiveKecleonShop: ; 0x020106C4
ldr r2, _02010708 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r2]
add r1, r1, #0x1000
strb r0, [r1, #0x32a]
ldr ip, [r2]
add r1, ip, #0x330
add r1, r1, #0x1000
add r3, r1, r0, lsl #5
add r1, ip, #0x1000
str r3, [r1, #0x32c]
ldr r2, [r2]
add r1, r2, #0x374
add r1, r1, #0x1000
add r1, r1, r0, lsl #4
add r0, r2, #0x1000
str r1, [r0, #0x370]
bx lr
.align 2, 0
_02010708: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SetActiveKecleonShop
arm_func_start GetMoneyStored
GetMoneyStored: ; 0x0201070C
ldr r0, _02010720 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1000
ldr r0, [r0, #0x3a0]
bx lr
.align 2, 0
_02010720: .word BAG_ITEMS_PTR_MIRROR
arm_func_end GetMoneyStored
arm_func_start SetMoneyStored
SetMoneyStored: ; 0x02010724
ldr r1, _02010750 ; =0x0098967F
cmp r0, r1
movgt r0, r1
bgt _0201073C
cmp r0, #0
movlt r0, #0
_0201073C:
ldr r1, _02010754 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1000
str r0, [r1, #0x3a0]
bx lr
.align 2, 0
_02010750: .word 0x0098967F
_02010754: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SetMoneyStored
arm_func_start AddMoneyStored
AddMoneyStored: ; 0x02010758
ldr r1, _02010774 ; =BAG_ITEMS_PTR_MIRROR
ldr ip, _02010778 ; =SetMoneyStored
ldr r1, [r1]
add r1, r1, #0x1000
ldr r1, [r1, #0x3a0]
add r0, r1, r0
bx ip
.align 2, 0
_02010774: .word BAG_ITEMS_PTR_MIRROR
_02010778: .word SetMoneyStored
arm_func_end AddMoneyStored
arm_func_start sub_0201077C
sub_0201077C: ; 0x0201077C
ldr r0, _02010790 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrsh r0, [r0, #0xa4]
bx lr
.align 2, 0
_02010790: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0201077C
arm_func_start sub_02010794
sub_02010794: ; 0x02010794
ldr r1, _020107A8 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1300
strh r0, [r1, #0xa4]
bx lr
.align 2, 0
_020107A8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010794
arm_func_start sub_020107AC
sub_020107AC: ; 0x020107AC
ldr r0, _020107C0 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrh r0, [r0, #0xa6]
bx lr
.align 2, 0
_020107C0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020107AC
arm_func_start sub_020107C4
sub_020107C4: ; 0x020107C4
ldr r1, _020107D8 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1300
strh r0, [r1, #0xa6]
bx lr
.align 2, 0
_020107D8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020107C4
arm_func_start sub_020107DC
sub_020107DC: ; 0x020107DC
ldr r0, _020107F0 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrh r0, [r0, #0xa8]
bx lr
.align 2, 0
_020107F0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020107DC
arm_func_start sub_020107F4
sub_020107F4: ; 0x020107F4
ldr r1, _02010808 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1300
strh r0, [r1, #0xa8]
bx lr
.align 2, 0
_02010808: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020107F4
arm_func_start sub_0201080C
sub_0201080C: ; 0x0201080C
ldr r0, _0201082C ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, #0x1300
ldrh r1, [r0, #0xa8]
cmp r1, #0
subne r1, r1, #1
strneh r1, [r0, #0xa8]
bx lr
.align 2, 0
_0201082C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_0201080C
arm_func_start sub_02010830
sub_02010830: ; 0x02010830
ldr r1, _02010868 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r1, [r1]
mov r2, r0
add r1, r1, #0x1000
ldr r3, [r1, #0x32c]
_02010848:
mov r1, r2, lsl #2
ldrsh r1, [r3, r1]
add r2, r2, #1
cmp r1, #0
addne r0, r0, #1
cmp r2, #8
blt _02010848
bx lr
.align 2, 0
_02010868: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010830
arm_func_start RemoveItemFromKecleonShop1
RemoveItemFromKecleonShop1: ; 0x0201086C
ldr r1, _02010894 ; =BAG_ITEMS_PTR_MIRROR
mov r3, r0, lsl #2
ldr r1, [r1]
mov r2, #0
add r1, r1, #0x1000
ldr r1, [r1, #0x32c]
strh r2, [r1, r3]
add r0, r1, r0, lsl #2
strh r2, [r0, #2]
bx lr
.align 2, 0
_02010894: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemFromKecleonShop1
arm_func_start sub_02010898
sub_02010898: ; 0x02010898
ldr r1, _020108B0 ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1000
ldr r1, [r1, #0x32c]
add r0, r1, r0, lsl #2
bx lr
.align 2, 0
_020108B0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010898
arm_func_start sub_020108B4
sub_020108B4: ; 0x020108B4
stmdb sp!, {r3, r4, r5, lr}
mov r0, #0
mov r4, r0
ldr r2, _02010950 ; =BAG_ITEMS_PTR_MIRROR
b _020108E8
_020108C8:
ldr r1, [r2]
mov r3, r0, lsl #2
add r1, r1, #0x1000
ldr r1, [r1, #0x32c]
ldrsh r1, [r1, r3]
cmp r1, #0
bne _020108F0
add r0, r0, #1
_020108E8:
cmp r0, #8
blt _020108C8
_020108F0:
cmp r0, #8
beq _02010944
cmp r0, r4
ble _0201092C
ldr r1, [r2]
mov r3, r0, lsl #2
add r1, r1, #0x1000
ldr r5, [r1, #0x32c]
mov lr, r4, lsl #2
ldrh r1, [r5, r3]
add ip, r5, r0, lsl #2
add r3, r5, r4, lsl #2
strh r1, [r5, lr]
ldrh r1, [ip, #2]
strh r1, [r3, #2]
_0201092C:
add r0, r0, #1
add r4, r4, #1
b _020108E8
_02010938:
and r0, r4, #0xff
bl RemoveItemFromKecleonShop1
add r4, r4, #1
_02010944:
cmp r4, #8
blt _02010938
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02010950: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020108B4
arm_func_start SortKecleonItems1
SortKecleonItems1: ; 0x02010954
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r6, #0
_02010960:
add r7, r6, #1
mov r5, r6, lsl #2
ldr r4, _02010A48 ; =BAG_ITEMS_PTR_MIRROR
b _02010A2C
_02010970:
ldr r0, [r4]
add r0, r0, #0x1000
ldr r0, [r0, #0x32c]
ldrsh r0, [r5, r0]
bl sub_0200D1F0
ldr r1, [r4]
mov r2, r7, lsl #2
add r1, r1, #0x1000
ldr r1, [r1, #0x32c]
mov r8, r0
ldrsh r0, [r1, r2]
bl sub_0200D1F0
cmp r8, r0
bgt _020109D0
bne _02010A28
ldr r0, [r4]
add r0, r0, #0x1000
ldr r0, [r0, #0x32c]
add r1, r5, r0
add r0, r0, r7, lsl #2
ldrh r1, [r1, #2]
ldrh r0, [r0, #2]
cmp r1, r0
bhs _02010A28
_020109D0:
ldr r1, [r4]
mov r0, r7, lsl #2
add r1, r1, #0x1000
ldr r8, [r1, #0x32c]
add lr, r5, r8
ldrh ip, [r5, r8]
ldrh r3, [lr, #2]
ldrh r1, [r8, r0]
add r2, r8, r7, lsl #2
strh ip, [sp]
strh r1, [r5, r8]
ldrh r1, [r2, #2]
strh r3, [sp, #2]
ldrh r3, [sp]
strh r1, [lr, #2]
ldr r1, [r4]
ldrh r2, [sp, #2]
add r1, r1, #0x1000
ldr r1, [r1, #0x32c]
strh r3, [r1, r0]
add r0, r1, r7, lsl #2
strh r2, [r0, #2]
_02010A28:
add r7, r7, #1
_02010A2C:
cmp r7, #8
blt _02010970
add r6, r6, #1
cmp r6, #7
blt _02010960
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02010A48: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SortKecleonItems1
arm_func_start GenerateKecleonItems1
GenerateKecleonItems1: ; 0x02010A4C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r4, #0
_02010A58:
and r0, r4, #0xff
bl RemoveItemFromKecleonShop1
add r4, r4, #1
cmp r4, #8
blt _02010A58
ldr r0, _02010AC0 ; =KECLEON_SHOP_ITEM_TABLE_LISTS_1
ldr r5, _02010AC4 ; =0x0000270F
ldr r6, [r0, r8, lsl #2]
mov r7, #0
_02010A7C:
mov r0, r5
bl RandIntSafe
mov r4, r0
mov r0, r5
bl RandIntSafe
mov r2, r0
mov r0, r6
mov r1, r4
bl GetItemIdFromList
bl AddItemToKecleonShop1
add r7, r7, #1
cmp r7, #8
blt _02010A7C
bl SortKecleonItems1
mov r0, r8
bl GenerateKecleonItems2
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02010AC0: .word KECLEON_SHOP_ITEM_TABLE_LISTS_1
_02010AC4: .word 0x0000270F
arm_func_end GenerateKecleonItems1
arm_func_start AddItemToKecleonShop1
AddItemToKecleonShop1: ; 0x02010AC8
stmdb sp!, {r3, lr}
mov r1, r0
add r0, sp, #0
bl InitBulkItem
ldr r0, _02010B38 ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0
ldr r3, [r0]
add r0, r3, #0x1000
b _02010B28
_02010AEC:
ldr r1, [r0, #0x32c]
mov ip, r2, lsl #2
ldrsh r1, [r1, ip]
cmp r1, #0
bne _02010B24
add r0, r3, #0x1000
ldr r3, [r0, #0x32c]
ldrh r1, [sp]
add r2, r3, ip
mov r0, #0
strh r1, [r3, ip]
ldrh r1, [sp, #2]
strh r1, [r2, #2]
ldmia sp!, {r3, pc}
_02010B24:
add r2, r2, #1
_02010B28:
cmp r2, #8
blt _02010AEC
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02010B38: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AddItemToKecleonShop1
arm_func_start sub_02010B3C
sub_02010B3C: ; 0x02010B3C
ldr r1, _02010B74 ; =BAG_ITEMS_PTR_MIRROR
mov r0, #0
ldr r1, [r1]
mov r2, r0
add r1, r1, #0x1000
ldr r3, [r1, #0x370]
_02010B54:
mov r1, r2, lsl #2
ldrsh r1, [r3, r1]
add r2, r2, #1
cmp r1, #0
addne r0, r0, #1
cmp r2, #4
blt _02010B54
bx lr
.align 2, 0
_02010B74: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010B3C
arm_func_start RemoveItemFromKecleonShop2
RemoveItemFromKecleonShop2: ; 0x02010B78
ldr r1, _02010BA0 ; =BAG_ITEMS_PTR_MIRROR
mov r3, r0, lsl #2
ldr r1, [r1]
mov r2, #0
add r1, r1, #0x1000
ldr r1, [r1, #0x370]
strh r2, [r1, r3]
add r0, r1, r0, lsl #2
strh r2, [r0, #2]
bx lr
.align 2, 0
_02010BA0: .word BAG_ITEMS_PTR_MIRROR
arm_func_end RemoveItemFromKecleonShop2
arm_func_start sub_02010BA4
sub_02010BA4: ; 0x02010BA4
ldr r1, _02010BBC ; =BAG_ITEMS_PTR_MIRROR
ldr r1, [r1]
add r1, r1, #0x1000
ldr r1, [r1, #0x370]
add r0, r1, r0, lsl #2
bx lr
.align 2, 0
_02010BBC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010BA4
arm_func_start sub_02010BC0
sub_02010BC0: ; 0x02010BC0
stmdb sp!, {r3, r4, r5, lr}
mov r0, #0
mov r4, r0
ldr r2, _02010C5C ; =BAG_ITEMS_PTR_MIRROR
b _02010BF4
_02010BD4:
ldr r1, [r2]
mov r3, r0, lsl #2
add r1, r1, #0x1000
ldr r1, [r1, #0x370]
ldrsh r1, [r1, r3]
cmp r1, #0
bne _02010BFC
add r0, r0, #1
_02010BF4:
cmp r0, #4
blt _02010BD4
_02010BFC:
cmp r0, #4
beq _02010C50
cmp r0, r4
ble _02010C38
ldr r1, [r2]
mov r3, r0, lsl #2
add r1, r1, #0x1000
ldr r5, [r1, #0x370]
mov lr, r4, lsl #2
ldrh r1, [r5, r3]
add ip, r5, r0, lsl #2
add r3, r5, r4, lsl #2
strh r1, [r5, lr]
ldrh r1, [ip, #2]
strh r1, [r3, #2]
_02010C38:
add r0, r0, #1
add r4, r4, #1
b _02010BF4
_02010C44:
and r0, r4, #0xff
bl RemoveItemFromKecleonShop2
add r4, r4, #1
_02010C50:
cmp r4, #4
blt _02010C44
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02010C5C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02010BC0
arm_func_start SortKecleonItems2
SortKecleonItems2: ; 0x02010C60
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r6, #0
_02010C6C:
add r7, r6, #1
mov r5, r6, lsl #2
ldr r4, _02010D54 ; =BAG_ITEMS_PTR_MIRROR
b _02010D38
_02010C7C:
ldr r0, [r4]
add r0, r0, #0x1000
ldr r0, [r0, #0x370]
ldrsh r0, [r5, r0]
bl sub_0200D1F0
ldr r1, [r4]
mov r2, r7, lsl #2
add r1, r1, #0x1000
ldr r1, [r1, #0x370]
mov r8, r0
ldrsh r0, [r1, r2]
bl sub_0200D1F0
cmp r8, r0
bgt _02010CDC
bne _02010D34
ldr r0, [r4]
add r0, r0, #0x1000
ldr r0, [r0, #0x370]
add r1, r5, r0
add r0, r0, r7, lsl #2
ldrh r1, [r1, #2]
ldrh r0, [r0, #2]
cmp r1, r0
bhs _02010D34
_02010CDC:
ldr r1, [r4]
mov r0, r7, lsl #2
add r1, r1, #0x1000
ldr r8, [r1, #0x370]
add lr, r5, r8
ldrh ip, [r5, r8]
ldrh r3, [lr, #2]
ldrh r1, [r8, r0]
add r2, r8, r7, lsl #2
strh ip, [sp]
strh r1, [r5, r8]
ldrh r1, [r2, #2]
strh r3, [sp, #2]
ldrh r3, [sp]
strh r1, [lr, #2]
ldr r1, [r4]
ldrh r2, [sp, #2]
add r1, r1, #0x1000
ldr r1, [r1, #0x370]
strh r3, [r1, r0]
add r0, r1, r7, lsl #2
strh r2, [r0, #2]
_02010D34:
add r7, r7, #1
_02010D38:
cmp r7, #4
blt _02010C7C
add r6, r6, #1
cmp r6, #3
blt _02010C6C
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02010D54: .word BAG_ITEMS_PTR_MIRROR
arm_func_end SortKecleonItems2
arm_func_start GenerateKecleonItems2
GenerateKecleonItems2: ; 0x02010D58
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
mov r4, #0
_02010D64:
and r0, r4, #0xff
bl RemoveItemFromKecleonShop2
add r4, r4, #1
cmp r4, #4
blt _02010D64
ldr r0, _02010DC4 ; =KECLEON_SHOP_ITEM_TABLE_LISTS_2
mov r7, #0
ldr r6, [r0, r5, lsl #2]
ldr r5, _02010DC8 ; =0x0000270F
_02010D88:
mov r0, r5
bl RandIntSafe
mov r4, r0
mov r0, r5
bl RandIntSafe
mov r2, r0
mov r0, r6
mov r1, r4
bl GetItemIdFromList
bl AddItemToKecleonShop2
add r7, r7, #1
cmp r7, #4
blt _02010D88
bl SortKecleonItems2
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02010DC4: .word KECLEON_SHOP_ITEM_TABLE_LISTS_2
_02010DC8: .word 0x0000270F
arm_func_end GenerateKecleonItems2
arm_func_start AddItemToKecleonShop2
AddItemToKecleonShop2: ; 0x02010DCC
stmdb sp!, {r3, lr}
mov r1, r0
add r0, sp, #0
bl InitBulkItem
ldr r0, _02010E3C ; =BAG_ITEMS_PTR_MIRROR
mov r2, #0
ldr r3, [r0]
add r0, r3, #0x1000
b _02010E2C
_02010DF0:
ldr r1, [r0, #0x370]
mov ip, r2, lsl #2
ldrsh r1, [r1, ip]
cmp r1, #0
bne _02010E28
add r0, r3, #0x1000
ldr r3, [r0, #0x370]
ldrh r1, [sp]
add r2, r3, ip
mov r0, #0
strh r1, [r3, ip]
ldrh r1, [sp, #2]
strh r1, [r2, #2]
ldmia sp!, {r3, pc}
_02010E28:
add r2, r2, #1
_02010E2C:
cmp r2, #4
blt _02010DF0
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02010E3C: .word BAG_ITEMS_PTR_MIRROR
arm_func_end AddItemToKecleonShop2
arm_func_start GetExclusiveItemOffset
GetExclusiveItemOffset: ; 0x02010E40
stmdb sp!, {r4, lr}
mov r4, r0
bl GetItemCategory
cmp r0, #0xf
movne r0, #0
subeq r0, r4, #0x1bc
moveq r0, r0, lsl #0x10
moveq r0, r0, asr #0x10
ldmia sp!, {r4, pc}
arm_func_end GetExclusiveItemOffset
arm_func_start ApplyExclusiveItemStatBoosts
ApplyExclusiveItemStatBoosts: ; 0x02010E64
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #8
mov r7, r1
mov r6, r2
mov r5, r3
ldr r4, [sp, #0x28]
bl GetExclusiveItemOffset
ldr r1, _02010F6C ; =EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
ldrb r2, [r7]
ldrb r1, [r1, r0, lsl #1]
ldrb r0, [r4]
strh r2, [sp, #4]
ldrb r2, [r5]
strh r0, [sp, #2]
ldrb r3, [r6]
ldr r0, _02010F70 ; =EXCLUSIVE_ITEM_ATTACK_BOOSTS
mov r1, r1, lsl #2
strh r3, [sp, #6]
strh r2, [sp]
ldrsb r2, [r0, r1]
ldr r0, _02010F74 ; =EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
ldrh sb, [sp, #4]
ldrsb r8, [r0, r1]
mov r0, r2, lsl #0x10
add r0, sb, r0, lsr #16
strh r0, [sp, #4]
mov r0, r8, lsl #0x10
ldrh lr, [sp, #6]
ldrh r2, [sp, #4]
ldr ip, _02010F78 ; =EXCLUSIVE_ITEM_DEFENSE_BOOSTS
add r0, lr, r0, lsr #16
ldrsb lr, [ip, r1]
ldr r3, _02010F7C ; =EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
ldrsh ip, [sp, #2]
ldrsb r1, [r3, r1]
strh r0, [sp, #6]
ldrsh r8, [sp]
add r0, ip, r1
strh r0, [sp, #2]
cmp r2, #0xff
movhi r0, #0xff
strhih r0, [sp, #4]
ldrh r0, [sp, #6]
add r3, r8, lr
ldrh r2, [sp, #4]
cmp r0, #0xff
movhi r0, #0xff
strh r3, [sp]
strhih r0, [sp, #6]
ldrsh r0, [sp]
strb r2, [r7]
cmp r0, #0xff
movgt r0, #0xff
strgth r0, [sp]
ldrsh r0, [sp, #2]
ldrsh r1, [sp]
cmp r0, #0xff
movgt r0, #0xff
strgth r0, [sp, #2]
ldrh r0, [sp, #6]
strb r0, [r6]
ldrsh r0, [sp, #2]
strb r1, [r5]
strb r0, [r4]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02010F6C: .word EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
_02010F70: .word EXCLUSIVE_ITEM_ATTACK_BOOSTS
_02010F74: .word EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
_02010F78: .word EXCLUSIVE_ITEM_DEFENSE_BOOSTS
_02010F7C: .word EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
arm_func_end ApplyExclusiveItemStatBoosts
arm_func_start SetExclusiveItemEffect
SetExclusiveItemEffect: ; 0x02010F80
cmp r1, #0
bxeq lr
mov ip, r1, lsr #5
ldr r3, [r0, ip, lsl #2]
sub r1, r1, ip, lsl #5
mov r2, #1
orr r1, r3, r2, lsl r1
str r1, [r0, ip, lsl #2]
bx lr
arm_func_end SetExclusiveItemEffect