Files
2019-09-27 01:42:56 -04:00

2330 lines
38 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start GetBagItemQuantity
GetBagItemQuantity: @ 0x080D5DD8
adds r1, r0, #0
ldr r0, _080D5DEC
ldr r0, [r0]
adds r0, #0xac
ldr r0, [r0]
ldrh r1, [r1]
eors r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bx lr
.align 2, 0
_080D5DEC: .4byte 0x03005AF0
thumb_func_end GetBagItemQuantity
thumb_func_start SetBagItemQuantity
SetBagItemQuantity: @ 0x080D5DF0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, _080D5E04
ldr r2, [r2]
adds r2, #0xac
ldr r2, [r2]
eors r1, r2
strh r1, [r0]
bx lr
.align 2, 0
_080D5E04: .4byte 0x03005AF0
thumb_func_end SetBagItemQuantity
thumb_func_start GetPCItemQuantity
GetPCItemQuantity: @ 0x080D5E08
ldrh r0, [r0]
bx lr
thumb_func_end GetPCItemQuantity
thumb_func_start SetPCItemQuantity
SetPCItemQuantity: @ 0x080D5E0C
strh r1, [r0]
bx lr
thumb_func_end SetPCItemQuantity
thumb_func_start ApplyNewEncryptionKeyToBagItems
ApplyNewEncryptionKeyToBagItems: @ 0x080D5E10
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #4
mov r8, r0
movs r1, #0
ldr r0, _080D5E64
mov sb, r0
_080D5E22:
movs r6, #0
lsls r5, r1, #3
mov r2, sb
adds r0, r5, r2
adds r7, r1, #1
ldrb r0, [r0, #4]
cmp r6, r0
bhs _080D5E50
ldr r2, _080D5E64
_080D5E34:
adds r4, r5, r2
lsls r1, r6, #2
ldr r0, [r4]
adds r0, r0, r1
adds r0, #2
mov r1, r8
str r2, [sp]
bl ApplyNewEncryptionKeyToHword
adds r6, #1
ldr r2, [sp]
ldrb r4, [r4, #4]
cmp r6, r4
blo _080D5E34
_080D5E50:
adds r1, r7, #0
cmp r1, #4
bls _080D5E22
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080D5E64: .4byte 0x02039A78
thumb_func_end ApplyNewEncryptionKeyToBagItems
thumb_func_start ApplyNewEncryptionKeyToBagItems_
ApplyNewEncryptionKeyToBagItems_: @ 0x080D5E68
push {lr}
bl ApplyNewEncryptionKeyToBagItems
pop {r0}
bx r0
.align 2, 0
thumb_func_end ApplyNewEncryptionKeyToBagItems_
thumb_func_start SetBagItemsPointers
SetBagItemsPointers: @ 0x080D5E74
push {r4, lr}
ldr r1, _080D5EC0
ldr r0, _080D5EC4
ldr r2, [r0]
movs r3, #0xac
lsls r3, r3, #3
adds r0, r2, r3
str r0, [r1]
movs r3, #0x1e
strb r3, [r1, #4]
movs r4, #0xbb
lsls r4, r4, #3
adds r0, r2, r4
str r0, [r1, #0x20]
adds r0, r1, #0
adds r0, #0x24
strb r3, [r0]
movs r3, #0xca
lsls r3, r3, #3
adds r0, r2, r3
str r0, [r1, #8]
movs r0, #0x10
strb r0, [r1, #0xc]
adds r4, #0xb8
adds r0, r2, r4
str r0, [r1, #0x10]
movs r0, #0x40
strb r0, [r1, #0x14]
movs r0, #0xf2
lsls r0, r0, #3
adds r2, r2, r0
str r2, [r1, #0x18]
movs r0, #0x2e
strb r0, [r1, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D5EC0: .4byte 0x02039A78
_080D5EC4: .4byte 0x03005AEC
thumb_func_end SetBagItemsPointers
thumb_func_start CopyItemName
CopyItemName: @ 0x080D5EC8
push {r4, lr}
adds r4, r1, #0
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xaf
bne _080D5EF0
movs r0, #0x2b
bl GetBerryInfo
adds r1, r0, #0
adds r0, r4, #0
bl StringCopy
ldr r1, _080D5EEC
adds r0, r4, #0
bl StringAppend
b _080D5EFC
.align 2, 0
_080D5EEC: .4byte 0x085C9440
_080D5EF0:
bl ItemId_GetName
adds r1, r0, #0
adds r0, r4, #0
bl StringCopy
_080D5EFC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end CopyItemName
thumb_func_start IsBagPocketNonEmpty
IsBagPocketNonEmpty: @ 0x080D5F04
push {lr}
lsls r0, r0, #0x18
movs r2, #0
ldr r1, _080D5F28
lsrs r0, r0, #0x15
subs r0, #8
adds r0, r0, r1
ldrb r1, [r0, #4]
cmp r2, r1
bhs _080D5F36
ldr r3, [r0]
_080D5F1A:
lsls r0, r2, #2
adds r0, r0, r3
ldrh r0, [r0]
cmp r0, #0
beq _080D5F2C
movs r0, #1
b _080D5F38
.align 2, 0
_080D5F28: .4byte 0x02039A78
_080D5F2C:
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, r1
blo _080D5F1A
_080D5F36:
movs r0, #0
_080D5F38:
pop {r1}
bx r1
thumb_func_end IsBagPocketNonEmpty
thumb_func_start CheckBagHasItem
CheckBagHasItem: @ 0x080D5F3C
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
adds r0, r7, #0
bl ItemId_GetImportance
lsls r0, r0, #0x18
cmp r0, #0
beq _080D5FCE
bl InBattlePyramid
lsls r0, r0, #0x18
cmp r0, #0
bne _080D5F6A
ldr r0, _080D5F78
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080D5F80
_080D5F6A:
adds r0, r7, #0
adds r1, r5, #0
bl CheckPyramidBagHasItem
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _080D5FD0
.align 2, 0
_080D5F78: .4byte 0x00004004
_080D5F7C:
movs r0, #1
b _080D5FD0
_080D5F80:
adds r0, r7, #0
bl ItemId_GetImportance
subs r0, #1
lsls r0, r0, #0x18
movs r6, #0
ldr r1, _080D5F94
lsrs r4, r0, #0x15
b _080D5FC6
.align 2, 0
_080D5F94: .4byte 0x02039A78
_080D5F98:
adds r0, r4, r1
ldr r1, [r0]
lsls r0, r6, #2
adds r1, r0, r1
ldrh r0, [r1]
cmp r0, r7
bne _080D5FBE
adds r0, r1, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, r5
bhs _080D5F7C
subs r0, r5, r0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
cmp r5, #0
beq _080D5F7C
_080D5FBE:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r1, _080D5FD8
_080D5FC6:
adds r0, r4, r1
ldrb r0, [r0, #4]
cmp r6, r0
blo _080D5F98
_080D5FCE:
movs r0, #0
_080D5FD0:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080D5FD8: .4byte 0x02039A78
thumb_func_end CheckBagHasItem
thumb_func_start HasAtLeastOneBerry
HasAtLeastOneBerry: @ 0x080D5FDC
push {r4, lr}
movs r4, #0x85
_080D5FE0:
adds r0, r4, #0
movs r1, #1
bl CheckBagHasItem
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #1
bne _080D5FFC
ldr r0, _080D5FF8
strh r1, [r0]
movs r0, #1
b _080D600E
.align 2, 0
_080D5FF8: .4byte 0x02037290
_080D5FFC:
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0xb2
bls _080D5FE0
ldr r1, _080D6014
movs r0, #0
strh r0, [r1]
movs r0, #0
_080D600E:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6014: .4byte 0x02037290
thumb_func_end HasAtLeastOneBerry
thumb_func_start CheckBagHasSpace
CheckBagHasSpace: @ 0x080D6018
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
bl ItemId_GetImportance
lsls r0, r0, #0x18
cmp r0, #0
beq _080D611E
bl InBattlePyramid
lsls r0, r0, #0x18
cmp r0, #0
bne _080D6050
ldr r0, _080D6060
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080D6064
_080D6050:
mov r0, r8
adds r1, r5, #0
bl CheckPyramidBagHasSpace
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _080D612E
.align 2, 0
_080D6060: .4byte 0x00004004
_080D6064:
mov r0, r8
bl ItemId_GetImportance
subs r0, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r7, _080D6124
cmp r2, #3
beq _080D6078
movs r7, #0x63
_080D6078:
movs r6, #0
ldr r1, _080D6128
lsls r4, r2, #3
adds r0, r4, r1
mov sb, r4
ldrb r0, [r0, #4]
cmp r6, r0
bhs _080D60D4
subs r0, r2, #2
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
_080D6090:
adds r0, r4, r1
ldr r1, [r0]
lsls r0, r6, #2
adds r1, r0, r1
ldrh r0, [r1]
cmp r0, r8
bne _080D60C4
adds r0, r1, #2
str r2, [sp]
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
adds r0, r1, r5
ldr r2, [sp]
cmp r0, r7
ble _080D612C
mov r0, sl
cmp r0, #1
bls _080D611E
subs r0, r7, r1
subs r0, r5, r0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
cmp r5, #0
beq _080D612C
_080D60C4:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r1, _080D6128
adds r0, r4, r1
ldrb r0, [r0, #4]
cmp r6, r0
blo _080D6090
_080D60D4:
cmp r5, #0
beq _080D612C
movs r6, #0
ldr r3, _080D6128
mov r1, sb
adds r0, r1, r3
ldrb r0, [r0, #4]
cmp r6, r0
bhs _080D611A
adds r4, r3, #0
subs r0, r2, #2
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
_080D60EE:
adds r0, r1, r4
ldr r1, [r0]
lsls r0, r6, #2
adds r0, r0, r1
ldrh r0, [r0]
cmp r0, #0
bne _080D610A
cmp r5, r7
bls _080D612C
cmp r2, #1
bls _080D611E
subs r0, r5, r7
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
_080D610A:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
mov r1, sb
adds r0, r1, r3
ldrb r0, [r0, #4]
cmp r6, r0
blo _080D60EE
_080D611A:
cmp r5, #0
beq _080D612C
_080D611E:
movs r0, #0
b _080D612E
.align 2, 0
_080D6124: .4byte 0x000003E7
_080D6128: .4byte 0x02039A78
_080D612C:
movs r0, #1
_080D612E:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end CheckBagHasSpace
thumb_func_start AddBagItem
AddBagItem: @ 0x080D6140
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
bl ItemId_GetImportance
lsls r0, r0, #0x18
cmp r0, #0
bne _080D6164
movs r0, #0
b _080D62AA
_080D6164:
bl InBattlePyramid
lsls r0, r0, #0x18
cmp r0, #0
bne _080D617C
ldr r0, _080D618C
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080D6190
_080D617C:
mov r0, sb
adds r1, r5, #0
bl AddPyramidBagItem
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _080D62AA
.align 2, 0
_080D618C: .4byte 0x00004004
_080D6190:
mov r0, sb
bl ItemId_GetImportance
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
lsls r1, r0, #3
ldr r0, _080D6250
adds r7, r1, r0
ldrb r0, [r7, #4]
lsls r0, r0, #2
bl AllocZeroed
mov r8, r0
ldr r1, [r7]
ldrb r2, [r7, #4]
lsls r2, r2, #2
bl memcpy
ldr r2, _080D6254
mov r0, sl
cmp r0, #3
beq _080D61C2
movs r2, #0x63
_080D61C2:
movs r6, #0
ldrb r0, [r7, #4]
cmp r6, r0
bhs _080D621E
mov r0, sl
subs r0, #2
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp]
_080D61D4:
lsls r0, r6, #2
mov r3, r8
adds r1, r0, r3
ldrh r0, [r1]
cmp r0, sb
bne _080D6212
adds r4, r1, #2
adds r0, r4, #0
str r2, [sp, #4]
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r1, r0, r5
ldr r2, [sp, #4]
cmp r1, r2
ble _080D6280
ldr r1, [sp]
cmp r1, #1
bls _080D628C
subs r0, r2, r0
subs r0, r5, r0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r4, #0
adds r1, r2, #0
bl SetBagItemQuantity
ldr r2, [sp, #4]
cmp r5, #0
beq _080D6296
_080D6212:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldrb r0, [r7, #4]
cmp r6, r0
blo _080D61D4
_080D621E:
cmp r5, #0
beq _080D6296
movs r6, #0
cmp r6, r0
bhs _080D627A
mov r0, sl
subs r0, #2
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
_080D6230:
lsls r0, r6, #2
mov r3, r8
adds r1, r0, r3
ldrh r0, [r1]
cmp r0, #0
bne _080D626E
mov r0, sb
strh r0, [r1]
cmp r5, r2
bhi _080D6258
adds r0, r1, #2
adds r1, r5, #0
bl SetBagItemQuantity
b _080D6296
.align 2, 0
_080D6250: .4byte 0x02039A78
_080D6254: .4byte 0x000003E7
_080D6258:
cmp r4, #1
bls _080D628C
subs r0, r5, r2
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r1, #2
adds r1, r2, #0
str r2, [sp, #4]
bl SetBagItemQuantity
ldr r2, [sp, #4]
_080D626E:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldrb r1, [r7, #4]
cmp r6, r1
blo _080D6230
_080D627A:
cmp r5, #0
beq _080D6296
b _080D628C
_080D6280:
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r0, r4, #0
bl SetBagItemQuantity
b _080D6296
_080D628C:
mov r0, r8
bl Free
movs r0, #0
b _080D62AA
_080D6296:
ldr r0, [r7]
ldrb r2, [r7, #4]
lsls r2, r2, #2
mov r1, r8
bl memcpy
mov r0, r8
bl Free
movs r0, #1
_080D62AA:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end AddBagItem
thumb_func_start RemoveBagItem
RemoveBagItem: @ 0x080D62BC
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
lsls r1, r1, #0x10
lsrs r7, r1, #0x10
movs r4, #0
bl ItemId_GetImportance
lsls r0, r0, #0x18
cmp r0, #0
beq _080D6350
mov r0, r8
cmp r0, #0
beq _080D6350
bl InBattlePyramid
lsls r0, r0, #0x18
cmp r0, #0
bne _080D62F8
ldr r0, _080D6308
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080D630C
_080D62F8:
mov r0, r8
adds r1, r7, #0
bl RemovePyramidBagItem
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _080D6472
.align 2, 0
_080D6308: .4byte 0x00004004
_080D630C:
mov r0, r8
bl ItemId_GetImportance
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
lsls r1, r0, #3
ldr r0, _080D6354
adds r5, r1, r0
movs r6, #0
ldrb r2, [r5, #4]
cmp r6, r2
bhs _080D634C
_080D6328:
ldr r0, [r5]
lsls r1, r6, #2
adds r1, r1, r0
ldrh r0, [r1]
cmp r0, r8
bne _080D6340
adds r0, r1, #2
bl GetBagItemQuantity
adds r0, r4, r0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_080D6340:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldrb r0, [r5, #4]
cmp r6, r0
blo _080D6328
_080D634C:
cmp r4, r7
bhs _080D6358
_080D6350:
movs r0, #0
b _080D6472
.align 2, 0
_080D6354: .4byte 0x02039A78
_080D6358:
bl CurMapIsSecretBase
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080D6388
ldr r4, _080D63C8
adds r0, r4, #0
bl VarGet
adds r1, r0, #0
movs r2, #0x80
lsls r2, r2, #2
adds r0, r2, #0
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r0, r4, #0
bl VarSet
ldr r0, _080D63CC
mov r1, r8
bl VarSet
_080D6388:
mov r0, sb
bl GetItemListPosition
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
ldrb r0, [r5, #4]
cmp r0, r1
bls _080D63FE
ldr r0, [r5]
lsls r1, r1, #2
adds r2, r1, r0
ldrh r0, [r2]
adds r4, r1, #0
cmp r0, r8
bne _080D63FE
adds r0, r2, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, r7
blo _080D63D0
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
subs r1, r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl SetBagItemQuantity
movs r7, #0
b _080D63E2
.align 2, 0
_080D63C8: .4byte 0x000040EE
_080D63CC: .4byte 0x000040ED
_080D63D0:
subs r0, r7, r1
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
movs r1, #0
bl SetBagItemQuantity
_080D63E2:
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
cmp r2, #0
bne _080D63FA
ldr r0, [r5]
adds r0, r4, r0
strh r2, [r0]
_080D63FA:
cmp r7, #0
beq _080D6470
_080D63FE:
movs r6, #0
ldrb r0, [r5, #4]
cmp r6, r0
bhs _080D6470
_080D6406:
ldr r0, [r5]
lsls r1, r6, #2
adds r2, r1, r0
ldrh r0, [r2]
adds r4, r1, #0
cmp r0, r8
bne _080D6464
adds r0, r2, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, r7
blo _080D6436
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
subs r1, r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl SetBagItemQuantity
movs r7, #0
b _080D6448
_080D6436:
subs r0, r7, r1
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
movs r1, #0
bl SetBagItemQuantity
_080D6448:
ldr r0, [r5]
adds r0, r0, r4
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
cmp r2, #0
bne _080D6460
ldr r0, [r5]
adds r0, r4, r0
strh r2, [r0]
_080D6460:
cmp r7, #0
beq _080D6470
_080D6464:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldrb r2, [r5, #4]
cmp r6, r2
blo _080D6406
_080D6470:
movs r0, #1
_080D6472:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end RemoveBagItem
thumb_func_start GetPocketByItemId
GetPocketByItemId: @ 0x080D6480
push {lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl ItemId_GetImportance
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetPocketByItemId
thumb_func_start ClearItemSlots
ClearItemSlots: @ 0x080D6494
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
lsls r1, r1, #0x18
movs r4, #0
lsrs r1, r1, #0x18
cmp r4, r1
bhs _080D64BE
adds r5, r1, #0
movs r7, #0
_080D64A6:
lsls r0, r4, #2
adds r0, r0, r6
strh r7, [r0]
adds r0, #2
movs r1, #0
bl SetBagItemQuantity
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, r5
blo _080D64A6
_080D64BE:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end ClearItemSlots
thumb_func_start FindFreePCItemSlot
FindFreePCItemSlot: @ 0x080D64C4
push {lr}
movs r1, #0
ldr r0, _080D64E4
ldr r2, [r0]
movs r3, #0x93
lsls r3, r3, #3
_080D64D0:
lsls r0, r1, #0x18
asrs r1, r0, #0x18
lsls r0, r1, #2
adds r0, r2, r0
adds r0, r0, r3
ldrh r0, [r0]
cmp r0, #0
bne _080D64E8
adds r0, r1, #0
b _080D64F8
.align 2, 0
_080D64E4: .4byte 0x03005AEC
_080D64E8:
adds r0, r1, #1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x31
ble _080D64D0
movs r0, #1
rsbs r0, r0, #0
_080D64F8:
pop {r1}
bx r1
thumb_func_end FindFreePCItemSlot
thumb_func_start CountUsedPCItemSlots
CountUsedPCItemSlots: @ 0x080D64FC
push {r4, lr}
movs r2, #0
movs r1, #0
ldr r0, _080D6530
ldr r3, [r0]
movs r4, #0x93
lsls r4, r4, #3
_080D650A:
lsls r0, r1, #2
adds r0, r3, r0
adds r0, r0, r4
ldrh r0, [r0]
cmp r0, #0
beq _080D651C
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
_080D651C:
adds r0, r1, #1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0x31
bls _080D650A
adds r0, r2, #0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6530: .4byte 0x03005AEC
thumb_func_end CountUsedPCItemSlots
thumb_func_start CheckPCHasItem
CheckPCHasItem: @ 0x080D6534
push {r4, r5, r6, lr}
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
movs r4, #0
_080D6540:
ldr r0, _080D656C
ldr r2, [r0]
lsls r1, r4, #2
adds r0, r2, r1
movs r3, #0x93
lsls r3, r3, #3
adds r0, r0, r3
ldrh r0, [r0]
cmp r0, r6
bne _080D6574
adds r0, r1, r2
ldr r1, _080D6570
adds r0, r0, r1
bl GetPCItemQuantity
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, r5
blo _080D6574
movs r0, #1
b _080D6580
.align 2, 0
_080D656C: .4byte 0x03005AEC
_080D6570: .4byte 0x0000049A
_080D6574:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x31
bls _080D6540
movs r0, #0
_080D6580:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end CheckPCHasItem
thumb_func_start AddPCItem
AddPCItem: @ 0x080D6588
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
movs r0, #0xc8
bl AllocZeroed
adds r7, r0, #0
ldr r0, _080D6610
ldr r1, [r0]
movs r0, #0x93
lsls r0, r0, #3
adds r1, r1, r0
adds r0, r7, #0
movs r2, #0xc8
bl memcpy
movs r6, #0
_080D65B4:
lsls r0, r6, #2
adds r1, r0, r7
ldrh r0, [r1]
cmp r0, r8
bne _080D65E8
adds r4, r1, #2
adds r0, r4, #0
bl GetPCItemQuantity
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
adds r1, r2, r5
ldr r3, _080D6614
cmp r1, r3
ble _080D661C
ldr r1, _080D6618
adds r0, r5, r1
adds r0, r2, r0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r4, #0
adds r1, r3, #0
bl SetPCItemQuantity
cmp r5, #0
beq _080D6638
_080D65E8:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0x31
bls _080D65B4
cmp r5, #0
beq _080D6638
bl FindFreePCItemSlot
lsls r0, r0, #0x18
asrs r1, r0, #0x18
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _080D6628
adds r0, r7, #0
bl Free
movs r0, #0
b _080D6652
.align 2, 0
_080D6610: .4byte 0x03005AEC
_080D6614: .4byte 0x000003E7
_080D6618: .4byte 0x0000FC19
_080D661C:
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r0, r4, #0
bl SetPCItemQuantity
b _080D6638
_080D6628:
lsls r0, r1, #2
adds r0, r0, r7
mov r1, r8
strh r1, [r0]
adds r0, #2
adds r1, r5, #0
bl SetPCItemQuantity
_080D6638:
ldr r0, _080D665C
ldr r0, [r0]
movs r1, #0x93
lsls r1, r1, #3
adds r0, r0, r1
adds r1, r7, #0
movs r2, #0xc8
bl memcpy
adds r0, r7, #0
bl Free
movs r0, #1
_080D6652:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080D665C: .4byte 0x03005AEC
thumb_func_end AddPCItem
thumb_func_start RemovePCItem
RemovePCItem: @ 0x080D6660
push {lr}
lsls r0, r0, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, _080D6694
ldr r2, [r2]
lsrs r0, r0, #0x16
adds r3, r2, r0
ldr r0, _080D6698
adds r2, r3, r0
ldrh r0, [r2]
subs r0, r0, r1
strh r0, [r2]
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0
bne _080D668E
movs r2, #0x93
lsls r2, r2, #3
adds r0, r3, r2
strh r1, [r0]
bl CompactPCItems
_080D668E:
pop {r0}
bx r0
.align 2, 0
_080D6694: .4byte 0x03005AEC
_080D6698: .4byte 0x0000049A
thumb_func_end RemovePCItem
thumb_func_start CompactPCItems
CompactPCItems: @ 0x080D669C
push {r4, r5, r6, r7, lr}
movs r2, #0
_080D66A0:
adds r1, r2, #1
lsls r0, r1, #0x10
lsrs r4, r0, #0x10
adds r6, r1, #0
cmp r4, #0x31
bhi _080D66E2
ldr r0, _080D66F0
mov ip, r0
lsls r5, r2, #2
movs r7, #0x93
lsls r7, r7, #3
_080D66B6:
mov r0, ip
ldr r1, [r0]
adds r0, r1, r5
adds r0, r0, r7
ldrh r0, [r0]
cmp r0, #0
bne _080D66D8
movs r0, #0x93
lsls r0, r0, #3
adds r1, r1, r0
adds r2, r1, r5
ldr r3, [r2]
lsls r0, r4, #2
adds r1, r1, r0
ldr r0, [r1]
str r0, [r2]
str r3, [r1]
_080D66D8:
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0x31
bls _080D66B6
_080D66E2:
lsls r0, r6, #0x10
lsrs r2, r0, #0x10
cmp r2, #0x30
bls _080D66A0
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080D66F0: .4byte 0x03005AEC
thumb_func_end CompactPCItems
thumb_func_start SwapRegisteredBike
SwapRegisteredBike: @ 0x080D66F4
push {lr}
ldr r0, _080D6710
ldr r0, [r0]
ldr r2, _080D6714
adds r1, r0, r2
ldrh r2, [r1]
ldr r3, _080D6718
cmp r2, r3
beq _080D671C
movs r0, #0x88
lsls r0, r0, #1
cmp r2, r0
beq _080D6724
b _080D6726
.align 2, 0
_080D6710: .4byte 0x03005AEC
_080D6714: .4byte 0x00000496
_080D6718: .4byte 0x00000103
_080D671C:
movs r0, #0x88
lsls r0, r0, #1
strh r0, [r1]
b _080D6726
_080D6724:
strh r3, [r1]
_080D6726:
pop {r0}
bx r0
.align 2, 0
thumb_func_end SwapRegisteredBike
thumb_func_start BagGetItemIdByPocketPosition
BagGetItemIdByPocketPosition: @ 0x080D672C
lsls r0, r0, #0x18
lsls r1, r1, #0x10
ldr r2, _080D6744
lsrs r0, r0, #0x15
subs r0, #8
adds r0, r0, r2
ldr r0, [r0]
lsrs r1, r1, #0xe
adds r1, r1, r0
ldrh r0, [r1]
bx lr
.align 2, 0
_080D6744: .4byte 0x02039A78
thumb_func_end BagGetItemIdByPocketPosition
thumb_func_start BagGetQuantityByPocketPosition
BagGetQuantityByPocketPosition: @ 0x080D6748
push {lr}
lsls r0, r0, #0x18
lsls r1, r1, #0x10
ldr r2, _080D676C
lsrs r0, r0, #0x15
subs r0, #8
adds r0, r0, r2
lsrs r1, r1, #0xe
ldr r0, [r0]
adds r0, r0, r1
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
pop {r1}
bx r1
.align 2, 0
_080D676C: .4byte 0x02039A78
thumb_func_end BagGetQuantityByPocketPosition
thumb_func_start SwapItemSlots
SwapItemSlots: @ 0x080D6770
ldr r3, [r0]
ldr r2, [r1]
str r2, [r0]
str r3, [r1]
bx lr
.align 2, 0
thumb_func_end SwapItemSlots
thumb_func_start CompactItemsInBagPocket
CompactItemsInBagPocket: @ 0x080D677C
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
movs r3, #0
b _080D67BE
_080D6784:
adds r1, r3, #1
lsls r0, r1, #0x10
lsrs r4, r0, #0x10
adds r7, r1, #0
cmp r4, r2
bhs _080D67BA
lsls r5, r3, #2
_080D6792:
ldr r0, [r6]
adds r0, r0, r5
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
cmp r0, #0
bne _080D67AE
ldr r1, [r6]
adds r0, r1, r5
lsls r2, r4, #2
adds r1, r1, r2
bl SwapItemSlots
_080D67AE:
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldrb r0, [r6, #4]
cmp r4, r0
blo _080D6792
_080D67BA:
lsls r0, r7, #0x10
lsrs r3, r0, #0x10
_080D67BE:
ldrb r2, [r6, #4]
subs r0, r2, #1
cmp r3, r0
blt _080D6784
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end CompactItemsInBagPocket
thumb_func_start SortBerriesOrTMHMs
SortBerriesOrTMHMs: @ 0x080D67CC
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
movs r3, #0
b _080D6832
_080D67D8:
adds r1, r3, #1
lsls r0, r1, #0x10
lsrs r5, r0, #0x10
mov r8, r1
cmp r5, r2
bhs _080D682C
lsls r7, r3, #2
_080D67E6:
ldr r0, [r6]
adds r0, r0, r7
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
lsls r4, r5, #2
cmp r0, #0
beq _080D6816
ldr r0, [r6]
adds r0, r0, r4
adds r0, #2
bl GetBagItemQuantity
lsls r0, r0, #0x10
cmp r0, #0
beq _080D6820
ldr r0, [r6]
adds r1, r7, r0
adds r0, r4, r0
ldrh r1, [r1]
ldrh r0, [r0]
cmp r1, r0
bls _080D6820
_080D6816:
ldr r1, [r6]
adds r0, r1, r7
adds r1, r1, r4
bl SwapItemSlots
_080D6820:
adds r0, r5, #1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldrb r0, [r6, #4]
cmp r5, r0
blo _080D67E6
_080D682C:
mov r1, r8
lsls r0, r1, #0x10
lsrs r3, r0, #0x10
_080D6832:
ldrb r2, [r6, #4]
subs r0, r2, #1
cmp r3, r0
blt _080D67D8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end SortBerriesOrTMHMs
thumb_func_start MoveItemSlotInList
MoveItemSlotInList: @ 0x080D6844
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r3, r2, #0
cmp r1, r3
beq _080D68A4
lsls r0, r1, #2
adds r0, r0, r4
ldr r6, [r0]
cmp r3, r1
bls _080D687C
subs r3, #1
lsls r1, r1, #0x10
lsls r0, r3, #0x10
asrs r2, r0, #0x10
cmp r1, r0
bge _080D689E
adds r5, r2, #0
_080D6866:
asrs r2, r1, #0x10
lsls r0, r2, #2
adds r0, r0, r4
ldr r1, [r0, #4]
str r1, [r0]
adds r2, #1
lsls r1, r2, #0x10
asrs r0, r1, #0x10
cmp r0, r5
blt _080D6866
b _080D689E
_080D687C:
lsls r1, r1, #0x10
lsls r0, r3, #0x10
asrs r2, r0, #0x10
cmp r1, r0
ble _080D689E
adds r5, r2, #0
_080D6888:
asrs r2, r1, #0x10
lsls r1, r2, #2
adds r1, r1, r4
subs r0, r1, #4
ldr r0, [r0]
str r0, [r1]
subs r2, #1
lsls r1, r2, #0x10
asrs r0, r1, #0x10
cmp r0, r5
bgt _080D6888
_080D689E:
lsls r0, r3, #2
adds r0, r0, r4
str r6, [r0]
_080D68A4:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end MoveItemSlotInList
thumb_func_start ClearBag
ClearBag: @ 0x080D68AC
push {r4, r5, lr}
movs r4, #0
ldr r5, _080D68D0
_080D68B2:
lsls r1, r4, #3
adds r1, r1, r5
ldr r0, [r1]
ldrb r1, [r1, #4]
bl ClearItemSlots
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #4
bls _080D68B2
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080D68D0: .4byte 0x02039A78
thumb_func_end ClearBag
thumb_func_start CountTotalItemQuantityInBag
CountTotalItemQuantityInBag: @ 0x080D68D4
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
movs r7, #0
adds r0, r6, #0
bl ItemId_GetImportance
lsls r0, r0, #0x18
lsrs r0, r0, #0x15
ldr r1, _080D6920
adds r5, r0, r1
movs r4, #0
ldrb r0, [r5, #4]
cmp r7, r0
bhs _080D6916
_080D68F2:
ldr r0, [r5]
lsls r1, r4, #2
adds r1, r1, r0
ldrh r0, [r1]
cmp r0, r6
bne _080D690A
adds r0, r1, #2
bl GetBagItemQuantity
adds r0, r7, r0
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
_080D690A:
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldrb r0, [r5, #4]
cmp r4, r0
blo _080D68F2
_080D6916:
adds r0, r7, #0
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080D6920: .4byte 0x02039A70
thumb_func_end CountTotalItemQuantityInBag
thumb_func_start CheckPyramidBagHasItem
CheckPyramidBagHasItem: @ 0x080D6924
push {r4, r5, lr}
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
ldr r0, _080D6978
ldr r3, [r0]
ldr r1, _080D697C
adds r0, r3, r1
ldrb r1, [r0]
lsls r1, r1, #0x1e
lsrs r2, r1, #0x1e
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
ldr r2, _080D6980
adds r0, r0, r2
adds r2, r3, r0
lsrs r1, r1, #0x1e
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, _080D6984
adds r0, r0, r1
adds r3, r3, r0
movs r1, #0
_080D6958:
lsls r0, r1, #1
adds r0, r0, r2
ldrh r0, [r0]
cmp r0, r5
bne _080D6988
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, r4
bhs _080D6974
subs r0, r4, r0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0
bne _080D6988
_080D6974:
movs r0, #1
b _080D6994
.align 2, 0
_080D6978: .4byte 0x03005AF0
_080D697C: .4byte 0x00000CA9
_080D6980: .4byte 0x00000E2C
_080D6984: .4byte 0x00000E54
_080D6988:
adds r0, r1, #1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #9
bls _080D6958
movs r0, #0
_080D6994:
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end CheckPyramidBagHasItem
thumb_func_start CheckPyramidBagHasSpace
CheckPyramidBagHasSpace: @ 0x080D699C
push {r4, r5, lr}
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
ldr r0, _080D69F8
ldr r3, [r0]
ldr r1, _080D69FC
adds r0, r3, r1
ldrb r1, [r0]
lsls r1, r1, #0x1e
lsrs r2, r1, #0x1e
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
ldr r2, _080D6A00
adds r0, r0, r2
adds r2, r3, r0
lsrs r1, r1, #0x1e
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, _080D6A04
adds r0, r0, r1
adds r3, r3, r0
movs r1, #0
_080D69D0:
lsls r0, r1, #1
adds r0, r0, r2
ldrh r0, [r0]
cmp r0, r5
beq _080D69DE
cmp r0, #0
bne _080D6A08
_080D69DE:
adds r0, r3, r1
ldrb r0, [r0]
adds r0, r0, r4
cmp r0, #0x63
ble _080D69F2
subs r0, #0x63
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #0
bne _080D6A08
_080D69F2:
movs r0, #1
b _080D6A14
.align 2, 0
_080D69F8: .4byte 0x03005AF0
_080D69FC: .4byte 0x00000CA9
_080D6A00: .4byte 0x00000E2C
_080D6A04: .4byte 0x00000E54
_080D6A08:
adds r0, r1, #1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #9
bls _080D69D0
movs r0, #0
_080D6A14:
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end CheckPyramidBagHasSpace
thumb_func_start AddPyramidBagItem
AddPyramidBagItem: @ 0x080D6A1C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
ldr r0, _080D6AAC
ldr r3, [r0]
ldr r1, _080D6AB0
adds r0, r3, r1
ldrb r1, [r0]
lsls r1, r1, #0x1e
lsrs r2, r1, #0x1e
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
ldr r2, _080D6AB4
adds r0, r0, r2
adds r0, r0, r3
mov sb, r0
lsrs r1, r1, #0x1e
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, _080D6AB8
adds r0, r0, r1
adds r3, r3, r0
mov r8, r3
movs r0, #0x14
bl Alloc
adds r5, r0, #0
movs r0, #0xa
bl Alloc
adds r6, r0, #0
adds r0, r5, #0
mov r1, sb
movs r2, #0x14
bl memcpy
adds r0, r6, #0
mov r1, r8
movs r2, #0xa
bl memcpy
movs r2, #0
_080D6A7E:
lsls r0, r2, #1
adds r0, r0, r5
ldrh r0, [r0]
cmp r0, r7
bne _080D6AC2
adds r1, r6, r2
ldrb r0, [r1]
cmp r0, #0x62
bhi _080D6AC2
adds r0, r0, r4
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bls _080D6ABC
ldrb r0, [r1]
subs r0, #0x63
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
movs r0, #0x63
strb r0, [r1]
b _080D6ABE
.align 2, 0
_080D6AAC: .4byte 0x03005AF0
_080D6AB0: .4byte 0x00000CA9
_080D6AB4: .4byte 0x00000E2C
_080D6AB8: .4byte 0x00000E54
_080D6ABC:
movs r4, #0
_080D6ABE:
cmp r4, #0
beq _080D6B1C
_080D6AC2:
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
cmp r2, #9
bls _080D6A7E
cmp r4, #0
beq _080D6B1C
movs r2, #0
_080D6AD2:
lsls r0, r2, #1
adds r1, r0, r5
ldrh r0, [r1]
cmp r0, #0
bne _080D6AFE
strh r7, [r1]
adds r1, r6, r2
strb r4, [r1]
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bls _080D6AF8
ldrb r0, [r1]
subs r0, #0x63
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
movs r0, #0x63
strb r0, [r1]
b _080D6AFA
_080D6AF8:
movs r4, #0
_080D6AFA:
cmp r4, #0
beq _080D6B1C
_080D6AFE:
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
cmp r2, #9
bls _080D6AD2
cmp r4, #0
beq _080D6B1C
adds r0, r5, #0
bl Free
adds r0, r6, #0
bl Free
movs r0, #0
b _080D6B3E
_080D6B1C:
mov r0, sb
adds r1, r5, #0
movs r2, #0x14
bl memcpy
mov r0, r8
adds r1, r6, #0
movs r2, #0xa
bl memcpy
adds r0, r5, #0
bl Free
adds r0, r6, #0
bl Free
movs r0, #1
_080D6B3E:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end AddPyramidBagItem
thumb_func_start RemovePyramidBagItem
RemovePyramidBagItem: @ 0x080D6B4C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
ldr r0, _080D6BB8
ldr r3, [r0]
ldr r1, _080D6BBC
adds r0, r3, r1
ldrb r1, [r0]
lsls r1, r1, #0x1e
lsrs r2, r1, #0x1e
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
ldr r2, _080D6BC0
adds r0, r0, r2
adds r0, r0, r3
mov r8, r0
lsrs r1, r1, #0x1e
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, _080D6BC4
adds r0, r0, r1
adds r7, r3, r0
ldr r1, _080D6BC8
ldrh r0, [r1, #8]
ldrh r1, [r1, #6]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
lsls r0, r2, #1
mov r1, r8
adds r3, r0, r1
ldrh r0, [r3]
cmp r0, sb
bne _080D6BCC
adds r1, r7, r2
ldrb r0, [r1]
cmp r0, r4
blo _080D6BCC
subs r0, r0, r4
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _080D6C64
strh r0, [r3]
b _080D6C64
.align 2, 0
_080D6BB8: .4byte 0x03005AF0
_080D6BBC: .4byte 0x00000CA9
_080D6BC0: .4byte 0x00000E2C
_080D6BC4: .4byte 0x00000E54
_080D6BC8: .4byte 0x0203CBFC
_080D6BCC:
movs r0, #0x14
bl Alloc
adds r5, r0, #0
movs r0, #0xa
bl Alloc
adds r6, r0, #0
adds r0, r5, #0
mov r1, r8
movs r2, #0x14
bl memcpy
adds r0, r6, #0
adds r1, r7, #0
movs r2, #0xa
bl memcpy
movs r2, #0
_080D6BF2:
lsls r0, r2, #1
adds r3, r0, r5
ldrh r0, [r3]
cmp r0, sb
bne _080D6C26
adds r1, r6, r2
ldrb r0, [r1]
cmp r0, r4
blo _080D6C14
subs r0, r0, r4
strb r0, [r1]
movs r4, #0
lsls r0, r0, #0x18
cmp r0, #0
bne _080D6C22
strh r4, [r3]
b _080D6C22
_080D6C14:
subs r0, r4, r0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
movs r0, #0
strb r0, [r1]
movs r0, #0
strh r0, [r3]
_080D6C22:
cmp r4, #0
beq _080D6C44
_080D6C26:
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
cmp r2, #9
bls _080D6BF2
cmp r4, #0
beq _080D6C44
adds r0, r5, #0
bl Free
adds r0, r6, #0
bl Free
movs r0, #0
b _080D6C66
_080D6C44:
mov r0, r8
adds r1, r5, #0
movs r2, #0x14
bl memcpy
adds r0, r7, #0
adds r1, r6, #0
movs r2, #0xa
bl memcpy
adds r0, r5, #0
bl Free
adds r0, r6, #0
bl Free
_080D6C64:
movs r0, #1
_080D6C66:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end RemovePyramidBagItem
thumb_func_start SanitizeItemId
SanitizeItemId: @ 0x080D6C74
push {lr}
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
movs r0, #0xbc
lsls r0, r0, #1
cmp r1, r0
bhi _080D6C86
adds r0, r1, #0
b _080D6C88
_080D6C86:
movs r0, #0
_080D6C88:
pop {r1}
bx r1
thumb_func_end SanitizeItemId
thumb_func_start ItemId_GetName
ItemId_GetName: @ 0x080D6C8C
push {lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl SanitizeItemId
adds r1, r0, #0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ldr r1, _080D6CAC
adds r0, r0, r1
pop {r1}
bx r1
.align 2, 0
_080D6CAC: .4byte 0x0855CEE8
thumb_func_end ItemId_GetName
thumb_func_start sub_080D6CB0
sub_080D6CB0: @ 0x080D6CB0
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6CD0
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrh r0, [r1, #0xa]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6CD0: .4byte 0x0855CEE8
thumb_func_end sub_080D6CB0
thumb_func_start sub_080D6CD4
sub_080D6CD4: @ 0x080D6CD4
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6CF4
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrh r0, [r1, #0xc]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6CF4: .4byte 0x0855CEE8
thumb_func_end sub_080D6CD4
thumb_func_start sub_080D6CF8
sub_080D6CF8: @ 0x080D6CF8
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6D18
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0xe]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6D18: .4byte 0x0855CEE8
thumb_func_end sub_080D6CF8
thumb_func_start sub_080D6D1C
sub_080D6D1C: @ 0x080D6D1C
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6D3C
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0xf]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6D3C: .4byte 0x0855CEE8
thumb_func_end sub_080D6D1C
thumb_func_start ItemId_GetHoldEffect
ItemId_GetHoldEffect: @ 0x080D6D40
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6D64
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r4, #0x10
adds r1, r1, r4
ldr r0, [r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6D64: .4byte 0x0855CEE8
thumb_func_end ItemId_GetHoldEffect
thumb_func_start ItemId_GetHoldEffectParam
ItemId_GetHoldEffectParam: @ 0x080D6D68
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6D88
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0x14]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6D88: .4byte 0x0855CEE8
thumb_func_end ItemId_GetHoldEffectParam
thumb_func_start sub_080D6D8C
sub_080D6D8C: @ 0x080D6D8C
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6DAC
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0x15]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6DAC: .4byte 0x0855CEE8
thumb_func_end sub_080D6D8C
thumb_func_start ItemId_GetImportance
ItemId_GetImportance: @ 0x080D6DB0
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6DD0
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0x16]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6DD0: .4byte 0x0855CEE8
thumb_func_end ItemId_GetImportance
thumb_func_start ItemId_GetPocket
ItemId_GetPocket: @ 0x080D6DD4
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6DF4
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0x17]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6DF4: .4byte 0x0855CEE8
thumb_func_end ItemId_GetPocket
thumb_func_start sub_080D6DF8
sub_080D6DF8: @ 0x080D6DF8
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6E1C
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r4, #0x18
adds r1, r1, r4
ldr r0, [r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6E1C: .4byte 0x0855CEE8
thumb_func_end sub_080D6DF8
thumb_func_start ItemId_GetSecondaryId
ItemId_GetSecondaryId: @ 0x080D6E20
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6E40
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #0x1c]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6E40: .4byte 0x0855CEE8
thumb_func_end ItemId_GetSecondaryId
thumb_func_start sub_080D6E44
sub_080D6E44: @ 0x080D6E44
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6E68
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r4, #0x20
adds r1, r1, r4
ldr r0, [r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6E68: .4byte 0x0855CEE8
thumb_func_end sub_080D6E44
thumb_func_start sub_080D6E6C
sub_080D6E6C: @ 0x080D6E6C
push {r4, lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r4, _080D6E90
bl SanitizeItemId
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r4
adds r1, #0x24
ldrb r0, [r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080D6E90: .4byte 0x0855CEE8
thumb_func_end sub_080D6E6C