pokefirered/asm/item.s
2017-12-17 13:22:46 -08:00

1854 lines
29 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start GetBagItemQuantity
GetBagItemQuantity: @ 8099DA0
adds r1, r0, 0
ldr r0, _08099DB8 @ =gSaveBlock2Ptr
ldr r0, [r0]
movs r2, 0xF2
lsls r2, 4
adds r0, r2
ldr r0, [r0]
ldrh r1, [r1]
eors r0, r1
lsls r0, 16
lsrs r0, 16
bx lr
.align 2, 0
_08099DB8: .4byte gSaveBlock2Ptr
thumb_func_end GetBagItemQuantity
thumb_func_start sub_8099DBC
sub_8099DBC: @ 8099DBC
lsls r1, 16
lsrs r1, 16
ldr r2, _08099DD4 @ =gSaveBlock2Ptr
ldr r2, [r2]
movs r3, 0xF2
lsls r3, 4
adds r2, r3
ldr r2, [r2]
eors r1, r2
strh r1, [r0]
bx lr
.align 2, 0
_08099DD4: .4byte gSaveBlock2Ptr
thumb_func_end sub_8099DBC
thumb_func_start GetBagItemId
GetBagItemId: @ 8099DD8
ldrh r0, [r0]
bx lr
thumb_func_end GetBagItemId
thumb_func_start sub_8099DDC
sub_8099DDC: @ 8099DDC
strh r1, [r0]
bx lr
thumb_func_end sub_8099DDC
thumb_func_start ApplyNewEncryptionKeyToBagItems
ApplyNewEncryptionKeyToBagItems: @ 8099DE0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
mov r8, r0
movs r1, 0
ldr r0, _08099E34 @ =gUnknown_203988C
mov r9, r0
_08099DF2:
movs r6, 0
lsls r5, r1, 3
mov r2, r9
adds r0, r5, r2
adds r7, r1, 0x1
ldrb r0, [r0, 0x4]
cmp r6, r0
bcs _08099E20
ldr r2, _08099E34 @ =gUnknown_203988C
_08099E04:
adds r4, r5, r2
lsls r1, r6, 2
ldr r0, [r4]
adds r0, r1
adds r0, 0x2
mov r1, r8
str r2, [sp]
bl sub_804C56C
adds r6, 0x1
ldr r2, [sp]
ldrb r4, [r4, 0x4]
cmp r6, r4
bcc _08099E04
_08099E20:
adds r1, r7, 0
cmp r1, 0x4
bls _08099DF2
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08099E34: .4byte gUnknown_203988C
thumb_func_end ApplyNewEncryptionKeyToBagItems
thumb_func_start ApplyNewEncryptionKeyToBagItems_
ApplyNewEncryptionKeyToBagItems_: @ 8099E38
push {lr}
bl ApplyNewEncryptionKeyToBagItems
pop {r0}
bx r0
thumb_func_end ApplyNewEncryptionKeyToBagItems_
thumb_func_start sub_8099E44
sub_8099E44: @ 8099E44
ldr r1, _08099E84 @ =gUnknown_203988C
ldr r0, _08099E88 @ =gSaveBlock1Ptr
ldr r2, [r0]
movs r3, 0xC4
lsls r3, 2
adds r0, r2, r3
str r0, [r1]
movs r0, 0x2A
strb r0, [r1, 0x4]
adds r3, 0xA8
adds r0, r2, r3
str r0, [r1, 0x8]
movs r0, 0x1E
strb r0, [r1, 0xC]
adds r3, 0x78
adds r0, r2, r3
str r0, [r1, 0x10]
movs r0, 0xD
strb r0, [r1, 0x14]
adds r3, 0x34
adds r0, r2, r3
str r0, [r1, 0x18]
movs r0, 0x3A
strb r0, [r1, 0x1C]
ldr r0, _08099E8C @ =0x0000054c
adds r2, r0
str r2, [r1, 0x20]
adds r1, 0x24
movs r0, 0x2B
strb r0, [r1]
bx lr
.align 2, 0
_08099E84: .4byte gUnknown_203988C
_08099E88: .4byte gSaveBlock1Ptr
_08099E8C: .4byte 0x0000054c
thumb_func_end sub_8099E44
thumb_func_start sub_8099E90
sub_8099E90: @ 8099E90
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _08099EB8
movs r0, 0x2B
bl sub_809C8A0
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldr r1, _08099EB4 @ =gUnknown_84162BD
adds r0, r4, 0
bl StringAppend
b _08099EC4
.align 2, 0
_08099EB4: .4byte gUnknown_84162BD
_08099EB8:
bl ItemId_GetItem
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
_08099EC4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8099E90
thumb_func_start sub_8099ECC
sub_8099ECC: @ 8099ECC
push {lr}
lsls r0, 24
movs r2, 0
ldr r1, _08099EF0 @ =gUnknown_203988C
lsrs r0, 21
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _08099EFE
ldr r3, [r0]
_08099EE0:
lsls r0, r2, 2
adds r0, r3
ldrh r0, [r0]
cmp r0, 0
bne _08099EF4
lsls r0, r2, 24
asrs r0, 24
b _08099F02
.align 2, 0
_08099EF0: .4byte gUnknown_203988C
_08099EF4:
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, r1
bcc _08099EE0
_08099EFE:
movs r0, 0x1
negs r0, r0
_08099F02:
pop {r1}
bx r1
thumb_func_end sub_8099ECC
thumb_func_start sub_8099F08
sub_8099F08: @ 8099F08
push {lr}
lsls r0, 24
movs r2, 0
ldr r1, _08099F2C @ =gUnknown_203988C
lsrs r0, 21
subs r0, 0x8
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _08099F3A
ldr r3, [r0]
_08099F1E:
lsls r0, r2, 2
adds r0, r3
ldrh r0, [r0]
cmp r0, 0
beq _08099F30
movs r0, 0x1
b _08099F3C
.align 2, 0
_08099F2C: .4byte gUnknown_203988C
_08099F30:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, r1
bcc _08099F1E
_08099F3A:
movs r0, 0
_08099F3C:
pop {r1}
bx r1
thumb_func_end sub_8099F08
thumb_func_start sub_8099F40
sub_8099F40: @ 8099F40
push {r4,r5,lr}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
lsrs r5, r1, 16
adds r0, r4, 0
bl ItemId_GetPocket
lsls r0, 24
cmp r0, 0
bne _08099F5C
b _08099FA4
_08099F58:
movs r0, 0x1
b _08099FA6
_08099F5C:
adds r0, r4, 0
bl ItemId_GetPocket
subs r0, 0x1
lsls r0, 24
movs r2, 0
ldr r1, _08099F94 @ =gUnknown_203988C
lsrs r0, 21
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _08099FA4
adds r3, r0, 0
_08099F76:
ldr r0, [r3]
lsls r1, r2, 2
adds r1, r0
ldrh r0, [r1]
cmp r0, r4
bne _08099F98
adds r0, r1, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
cmp r0, r5
bcs _08099F58
b _08099FA4
.align 2, 0
_08099F94: .4byte gUnknown_203988C
_08099F98:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r3, 0x4]
cmp r2, r0
bcc _08099F76
_08099FA4:
movs r0, 0
_08099FA6:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8099F40
thumb_func_start sub_8099FAC
sub_8099FAC: @ 8099FAC
push {r4,lr}
ldr r0, _08099FC0 @ =0x0000016d
movs r1, 0x1
bl sub_8099F40
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _08099FD4
b _08099FF0
.align 2, 0
_08099FC0: .4byte 0x0000016d
_08099FC4:
ldr r1, _08099FD0 @ =gUnknown_20370D0
movs r0, 0x1
strh r0, [r1]
movs r0, 0x1
b _08099FF6
.align 2, 0
_08099FD0: .4byte gUnknown_20370D0
_08099FD4:
movs r4, 0x85
_08099FD6:
adds r0, r4, 0
movs r1, 0x1
bl sub_8099F40
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _08099FC4
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xAF
bls _08099FD6
_08099FF0:
ldr r0, _08099FFC @ =gUnknown_20370D0
strh r1, [r0]
movs r0, 0
_08099FF6:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08099FFC: .4byte gUnknown_20370D0
thumb_func_end sub_8099FAC
thumb_func_start sub_809A000
sub_809A000: @ 809A000
push {r4-r6,lr}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
lsrs r6, r1, 16
adds r0, r4, 0
bl ItemId_GetPocket
lsls r0, 24
cmp r0, 0
beq _0809A050
adds r0, r4, 0
bl ItemId_GetPocket
subs r0, 0x1
lsls r0, 24
lsrs r5, r0, 24
movs r2, 0
ldr r1, _0809A054 @ =gUnknown_203988C
lsls r0, r5, 3
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _0809A068
adds r3, r0, 0
_0809A032:
ldr r0, [r3]
lsls r1, r2, 2
adds r1, r0
ldrh r0, [r1]
cmp r0, r4
bne _0809A05C
adds r0, r1, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
adds r0, r6
ldr r1, _0809A058 @ =0x000003e7
cmp r0, r1
ble _0809A07A
_0809A050:
movs r0, 0
b _0809A07C
.align 2, 0
_0809A054: .4byte gUnknown_203988C
_0809A058: .4byte 0x000003e7
_0809A05C:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r3, 0x4]
cmp r2, r0
bcc _0809A032
_0809A068:
adds r0, r5, 0
bl sub_8099ECC
lsls r0, 24
asrs r0, 24
movs r1, 0x1
negs r1, r1
cmp r0, r1
beq _0809A050
_0809A07A:
movs r0, 0x1
_0809A07C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_809A000
thumb_func_start sub_809A084
sub_809A084: @ 809A084
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 16
lsrs r1, 16
mov r8, r1
adds r0, r6, 0
bl ItemId_GetPocket
lsls r0, 24
cmp r0, 0
bne _0809A0A2
b _0809A1CA
_0809A0A2:
adds r0, r6, 0
bl ItemId_GetPocket
subs r0, 0x1
lsls r0, 24
lsrs r7, r0, 24
movs r2, 0
ldr r1, _0809A0E0 @ =gUnknown_203988C
lsls r0, r7, 3
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _0809A0F4
adds r5, r0, 0
_0809A0BE:
ldr r0, [r5]
lsls r4, r2, 2
adds r1, r4, r0
ldrh r0, [r1]
cmp r0, r6
bne _0809A0E8
adds r0, r1, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
mov r2, r8
adds r1, r0, r2
ldr r0, _0809A0E4 @ =0x000003e7
cmp r1, r0
ble _0809A1B8
b _0809A1CA
.align 2, 0
_0809A0E0: .4byte gUnknown_203988C
_0809A0E4: .4byte 0x000003e7
_0809A0E8:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r5, 0x4]
cmp r2, r0
bcc _0809A0BE
_0809A0F4:
cmp r7, 0x3
bne _0809A132
movs r4, 0xB6
lsls r4, 1
adds r0, r4, 0
movs r1, 0x1
bl sub_8099F40
lsls r0, 24
cmp r0, 0
bne _0809A132
movs r0, 0x1
bl sub_8099ECC
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0809A1CA
ldr r2, _0809A1AC @ =gUnknown_203988C
ldr r0, [r2, 0x8]
lsls r1, 2
adds r0, r1, r0
strh r4, [r0]
ldr r0, [r2, 0x8]
adds r0, r1
adds r0, 0x2
movs r1, 0x1
bl sub_8099DBC
_0809A132:
cmp r7, 0x4
bne _0809A174
ldr r4, _0809A1B0 @ =0x0000016d
adds r0, r4, 0
movs r1, 0x1
bl sub_8099F40
lsls r0, 24
cmp r0, 0
bne _0809A174
movs r0, 0x1
bl sub_8099ECC
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0809A1CA
ldr r2, _0809A1AC @ =gUnknown_203988C
ldr r0, [r2, 0x8]
lsls r1, 2
adds r0, r1, r0
strh r4, [r0]
ldr r0, [r2, 0x8]
adds r0, r1
adds r0, 0x2
movs r1, 0x1
bl sub_8099DBC
ldr r0, _0809A1B4 @ =0x00000847
bl FlagSet
_0809A174:
ldr r0, _0809A1B0 @ =0x0000016d
cmp r6, r0
bne _0809A180
ldr r0, _0809A1B4 @ =0x00000847
bl FlagSet
_0809A180:
adds r0, r7, 0
bl sub_8099ECC
lsls r0, 24
asrs r2, r0, 24
movs r0, 0x1
negs r0, r0
cmp r2, r0
beq _0809A1CA
ldr r0, _0809A1AC @ =gUnknown_203988C
lsls r1, r7, 3
adds r1, r0
ldr r0, [r1]
lsls r2, 2
adds r0, r2, r0
strh r6, [r0]
ldr r0, [r1]
adds r0, r2
adds r0, 0x2
mov r1, r8
b _0809A1C2
.align 2, 0
_0809A1AC: .4byte gUnknown_203988C
_0809A1B0: .4byte 0x0000016d
_0809A1B4: .4byte 0x00000847
_0809A1B8:
lsls r1, 16
lsrs r1, 16
ldr r0, [r5]
adds r0, r4
adds r0, 0x2
_0809A1C2:
bl sub_8099DBC
movs r0, 0x1
b _0809A1CC
_0809A1CA:
movs r0, 0
_0809A1CC:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_809A084
thumb_func_start sub_809A1D8
sub_809A1D8: @ 809A1D8
push {r4-r7,lr}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
lsrs r7, r1, 16
adds r0, r4, 0
bl ItemId_GetPocket
lsls r0, 24
cmp r0, 0
beq _0809A258
cmp r4, 0
beq _0809A258
adds r0, r4, 0
bl ItemId_GetPocket
subs r0, 0x1
lsls r0, 24
movs r2, 0
ldr r1, _0809A248 @ =gUnknown_203988C
lsrs r0, 21
adds r0, r1
ldrb r1, [r0, 0x4]
cmp r2, r1
bcs _0809A258
adds r6, r0, 0
_0809A20C:
ldr r0, [r6]
lsls r5, r2, 2
adds r1, r5, r0
ldrh r0, [r1]
cmp r0, r4
bne _0809A24C
adds r0, r1, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
cmp r0, r7
bcc _0809A258
subs r0, r7
lsls r0, 16
lsrs r4, r0, 16
ldr r0, [r6]
adds r0, r5
adds r0, 0x2
adds r1, r4, 0
bl sub_8099DBC
cmp r4, 0
bne _0809A242
ldr r0, [r6]
adds r0, r5, r0
strh r4, [r0]
_0809A242:
movs r0, 0x1
b _0809A25A
.align 2, 0
_0809A248: .4byte gUnknown_203988C
_0809A24C:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
ldrb r0, [r6, 0x4]
cmp r2, r0
bcc _0809A20C
_0809A258:
movs r0, 0
_0809A25A:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_809A1D8
thumb_func_start GetPocketByItemId
GetPocketByItemId: @ 809A260
push {lr}
lsls r0, 16
lsrs r0, 16
bl ItemId_GetPocket
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end GetPocketByItemId
thumb_func_start ClearItemSlots
ClearItemSlots: @ 809A274
push {r4-r7,lr}
adds r6, r0, 0
lsls r1, 24
movs r4, 0
lsrs r1, 24
cmp r4, r1
bcs _0809A29E
adds r5, r1, 0
movs r7, 0
_0809A286:
lsls r0, r4, 2
adds r0, r6
strh r7, [r0]
adds r0, 0x2
movs r1, 0
bl sub_8099DBC
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, r5
bcc _0809A286
_0809A29E:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end ClearItemSlots
thumb_func_start sub_809A2A4
sub_809A2A4: @ 809A2A4
push {r4,r5,lr}
movs r4, 0
movs r5, 0xA6
lsls r5, 2
_0809A2AC:
ldr r0, _0809A2D8 @ =gSaveBlock1Ptr
ldr r0, [r0]
lsls r3, r4, 2
adds r1, r0, r3
adds r1, r5
movs r2, 0
strh r2, [r1]
adds r3, r5
adds r0, r3
adds r0, 0x2
movs r1, 0
bl sub_8099DDC
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1D
bls _0809A2AC
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0809A2D8: .4byte gSaveBlock1Ptr
thumb_func_end sub_809A2A4
thumb_func_start sub_809A2DC
sub_809A2DC: @ 809A2DC
push {r4,r5,lr}
movs r4, 0
ldr r5, _0809A300 @ =gUnknown_203988C
_0809A2E2:
lsls r1, r4, 3
adds r1, r5
ldr r0, [r1]
ldrb r1, [r1, 0x4]
bl ClearItemSlots
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x4
bls _0809A2E2
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0809A300: .4byte gUnknown_203988C
thumb_func_end sub_809A2DC
thumb_func_start sub_809A304
sub_809A304: @ 809A304
push {lr}
movs r1, 0
ldr r0, _0809A324 @ =gSaveBlock1Ptr
ldr r2, [r0]
movs r3, 0xA6
lsls r3, 2
_0809A310:
lsls r0, r1, 24
asrs r1, r0, 24
lsls r0, r1, 2
adds r0, r2, r0
adds r0, r3
ldrh r0, [r0]
cmp r0, 0
bne _0809A328
adds r0, r1, 0
b _0809A338
.align 2, 0
_0809A324: .4byte gSaveBlock1Ptr
_0809A328:
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
asrs r0, 24
cmp r0, 0x1D
ble _0809A310
movs r0, 0x1
negs r0, r0
_0809A338:
pop {r1}
bx r1
thumb_func_end sub_809A304
thumb_func_start sub_809A33C
sub_809A33C: @ 809A33C
push {r4,lr}
movs r2, 0
movs r1, 0
ldr r0, _0809A370 @ =gSaveBlock1Ptr
ldr r3, [r0]
movs r4, 0xA6
lsls r4, 2
_0809A34A:
lsls r0, r1, 2
adds r0, r3, r0
adds r0, r4
ldrh r0, [r0]
cmp r0, 0
beq _0809A35C
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
_0809A35C:
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1D
bls _0809A34A
adds r0, r2, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A370: .4byte gSaveBlock1Ptr
thumb_func_end sub_809A33C
thumb_func_start sub_809A374
sub_809A374: @ 809A374
push {r4-r6,lr}
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 16
lsrs r5, r1, 16
movs r4, 0
_0809A380:
ldr r0, _0809A3AC @ =gSaveBlock1Ptr
ldr r2, [r0]
lsls r1, r4, 2
adds r0, r2, r1
movs r3, 0xA6
lsls r3, 2
adds r0, r3
ldrh r0, [r0]
cmp r0, r6
bne _0809A3B4
adds r0, r1, r2
ldr r1, _0809A3B0 @ =0x0000029a
adds r0, r1
bl GetBagItemId
lsls r0, 16
lsrs r0, 16
cmp r0, r5
bcc _0809A3B4
movs r0, 0x1
b _0809A3C0
.align 2, 0
_0809A3AC: .4byte gSaveBlock1Ptr
_0809A3B0: .4byte 0x0000029a
_0809A3B4:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1D
bls _0809A380
movs r0, 0
_0809A3C0:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_809A374
thumb_func_start sub_809A3C8
sub_809A3C8: @ 809A3C8
push {r4-r7,lr}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
lsrs r5, r1, 16
movs r3, 0
ldr r6, _0809A404 @ =gSaveBlock1Ptr
_0809A3D6:
ldr r2, [r6]
lsls r1, r3, 2
adds r0, r2, r1
movs r7, 0xA6
lsls r7, 2
adds r0, r7
ldrh r0, [r0]
cmp r0, r4
bne _0809A40C
adds r0, r7, 0
adds r4, r1, r0
adds r0, r2, r4
adds r0, 0x2
bl GetBagItemId
lsls r0, 16
lsrs r0, 16
adds r1, r0, r5
ldr r0, _0809A408 @ =0x000003e7
cmp r1, r0
ble _0809A444
b _0809A456
.align 2, 0
_0809A404: .4byte gSaveBlock1Ptr
_0809A408: .4byte 0x000003e7
_0809A40C:
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x1D
bls _0809A3D6
bl sub_809A304
lsls r0, 24
asrs r2, r0, 24
movs r0, 0x1
negs r0, r0
cmp r2, r0
beq _0809A456
ldr r0, _0809A440 @ =gSaveBlock1Ptr
ldr r0, [r0]
lsls r2, 2
adds r1, r0, r2
movs r3, 0xA6
lsls r3, 2
adds r1, r3
strh r4, [r1]
adds r2, r3
adds r0, r2
adds r0, 0x2
adds r1, r5, 0
b _0809A44E
.align 2, 0
_0809A440: .4byte gSaveBlock1Ptr
_0809A444:
lsls r1, 16
lsrs r1, 16
ldr r0, [r6]
adds r0, r4
adds r0, 0x2
_0809A44E:
bl sub_8099DDC
movs r0, 0x1
b _0809A458
_0809A456:
movs r0, 0
_0809A458:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_809A3C8
thumb_func_start sub_809A460
sub_809A460: @ 809A460
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r2, r0, 16
lsls r1, 16
lsrs r1, 16
mov r8, r1
cmp r2, 0
beq _0809A4D8
movs r4, 0
ldr r0, _0809A4E4 @ =gSaveBlock1Ptr
ldr r1, [r0]
movs r3, 0xA6
lsls r3, 2
adds r1, r3
ldrh r1, [r1]
adds r7, r0, 0
cmp r1, r2
beq _0809A49E
adds r5, r7, 0
_0809A48A:
adds r4, 0x1
cmp r4, 0x1D
bhi _0809A49E
ldr r0, [r5]
lsls r1, r4, 2
adds r0, r1
adds r0, r3
ldrh r0, [r0]
cmp r0, r2
bne _0809A48A
_0809A49E:
cmp r4, 0x1E
beq _0809A4D8
lsls r6, r4, 2
movs r0, 0xA6
lsls r0, 2
adds r4, r6, r0
ldr r0, [r7]
adds r0, r4
adds r0, 0x2
bl GetBagItemId
mov r1, r8
subs r0, r1
lsls r0, 16
lsrs r5, r0, 16
ldr r0, [r7]
adds r0, r4
adds r0, 0x2
adds r1, r5, 0
bl sub_8099DDC
cmp r5, 0
bne _0809A4D8
ldr r0, [r7]
adds r0, r6
movs r1, 0xA6
lsls r1, 2
adds r0, r1
strh r5, [r0]
_0809A4D8:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809A4E4: .4byte gSaveBlock1Ptr
thumb_func_end sub_809A460
thumb_func_start sub_809A4E8
sub_809A4E8: @ 809A4E8
push {r4-r7,lr}
movs r2, 0
_0809A4EC:
adds r1, r2, 0x1
lsls r0, r1, 16
lsrs r4, r0, 16
adds r6, r1, 0
cmp r4, 0x1D
bhi _0809A52E
ldr r0, _0809A53C @ =gSaveBlock1Ptr
mov r12, r0
lsls r5, r2, 2
movs r7, 0xA6
lsls r7, 2
_0809A502:
mov r0, r12
ldr r1, [r0]
adds r0, r1, r5
adds r0, r7
ldrh r0, [r0]
cmp r0, 0
bne _0809A524
movs r0, 0xA6
lsls r0, 2
adds r1, r0
adds r2, r1, r5
ldr r3, [r2]
lsls r0, r4, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2]
str r3, [r1]
_0809A524:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1D
bls _0809A502
_0809A52E:
lsls r0, r6, 16
lsrs r2, r0, 16
cmp r2, 0x1C
bls _0809A4EC
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809A53C: .4byte gSaveBlock1Ptr
thumb_func_end sub_809A4E8
thumb_func_start sub_809A540
sub_809A540: @ 809A540
push {lr}
ldr r0, _0809A55C @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, _0809A560 @ =0x00000296
adds r1, r0, r2
ldrh r2, [r1]
ldr r3, _0809A564 @ =0x00000103
cmp r2, r3
beq _0809A568
movs r0, 0x88
lsls r0, 1
cmp r2, r0
beq _0809A570
b _0809A572
.align 2, 0
_0809A55C: .4byte gSaveBlock1Ptr
_0809A560: .4byte 0x00000296
_0809A564: .4byte 0x00000103
_0809A568:
movs r0, 0x88
lsls r0, 1
strh r0, [r1]
b _0809A572
_0809A570:
strh r3, [r1]
_0809A572:
pop {r0}
bx r0
thumb_func_end sub_809A540
thumb_func_start sub_809A578
sub_809A578: @ 809A578
ldr r3, [r0]
ldr r2, [r1]
str r2, [r0]
str r3, [r1]
bx lr
thumb_func_end sub_809A578
thumb_func_start sub_809A584
sub_809A584: @ 809A584
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r8, r0
lsls r1, 24
lsrs r1, 24
movs r2, 0
subs r0, r1, 0x1
cmp r2, r0
bge _0809A5D8
adds r6, r1, 0
mov r9, r0
_0809A59E:
adds r1, r2, 0x1
lsls r0, r1, 16
lsrs r4, r0, 16
adds r7, r1, 0
cmp r4, r6
bcs _0809A5D0
lsls r0, r2, 2
mov r1, r8
adds r5, r1, r0
_0809A5B0:
adds r0, r5, 0x2
bl GetBagItemQuantity
lsls r0, 16
cmp r0, 0
bne _0809A5C6
lsls r1, r4, 2
add r1, r8
adds r0, r5, 0
bl sub_809A578
_0809A5C6:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, r6
bcc _0809A5B0
_0809A5D0:
lsls r0, r7, 16
lsrs r2, r0, 16
cmp r2, r9
blt _0809A59E
_0809A5D8:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_809A584
thumb_func_start sub_809A5E4
sub_809A5E4: @ 809A5E4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r5, r0, 0
movs r4, 0
bl sub_809A720
movs r3, 0
ldrb r0, [r5, 0x4]
cmp r3, r0
bcs _0809A676
movs r6, 0xA9
lsls r6, 1
_0809A604:
ldr r0, [r5]
lsls r1, r3, 2
adds r2, r1, r0
ldrh r0, [r2]
adds r7, r1, 0
cmp r0, 0
bne _0809A622
adds r0, r2, 0x2
str r3, [sp]
bl GetBagItemQuantity
lsls r0, 16
ldr r3, [sp]
cmp r0, 0
beq _0809A70A
_0809A622:
ldr r0, [r5]
adds r1, r7, r0
ldrh r0, [r1]
cmp r0, r6
bls _0809A66A
adds r0, r1, 0x2
str r3, [sp]
bl GetBagItemQuantity
lsls r0, 16
ldr r3, [sp]
cmp r0, 0
beq _0809A66A
adds r0, r3, 0x1
b _0809A642
_0809A640:
adds r0, r4, 0x1
_0809A642:
lsls r0, 16
lsrs r4, r0, 16
ldrb r1, [r5, 0x4]
cmp r4, r1
bcs _0809A676
ldr r0, [r5]
lsls r1, r4, 2
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _0809A640
adds r0, r1, 0x2
str r3, [sp]
bl GetBagItemQuantity
lsls r0, 16
ldr r3, [sp]
cmp r0, 0
bne _0809A640
b _0809A676
_0809A66A:
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
ldrb r2, [r5, 0x4]
cmp r3, r2
bcc _0809A604
_0809A676:
movs r6, 0
lsls r7, r3, 2
subs r4, r3
mov r10, r4
lsls r3, 1
mov r9, r3
ldrb r0, [r5, 0x4]
cmp r6, r0
bcs _0809A6A6
_0809A688:
lsls r4, r6, 2
ldr r0, [r5]
adds r0, r4
adds r0, 0x2
bl GetBagItemQuantity
ldr r1, [r5]
adds r4, r1
strh r0, [r4, 0x2]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldrb r1, [r5, 0x4]
cmp r6, r1
bcc _0809A688
_0809A6A6:
ldrb r0, [r5, 0x4]
lsls r0, 2
bl AllocZeroed
mov r8, r0
ldr r0, [r5]
adds r0, r7
mov r1, r10
lsls r2, r1, 1
ldr r4, _0809A71C @ =0x001fffff
ands r2, r4
mov r1, r8
bl CpuSet
ldr r0, [r5]
mov r2, r10
lsls r1, r2, 2
add r1, r8
mov r2, r9
ands r2, r4
mov r9, r2
bl CpuSet
ldr r1, [r5]
ldrb r2, [r5, 0x4]
lsls r2, 1
ands r2, r4
mov r0, r8
bl CpuSet
movs r6, 0
ldrb r0, [r5, 0x4]
cmp r6, r0
bcs _0809A704
_0809A6EA:
lsls r0, r6, 2
ldr r1, [r5]
adds r1, r0
adds r0, r1, 0x2
ldrh r1, [r1, 0x2]
bl sub_8099DBC
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldrb r1, [r5, 0x4]
cmp r6, r1
bcc _0809A6EA
_0809A704:
mov r0, r8
bl Free
_0809A70A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809A71C: .4byte 0x001fffff
thumb_func_end sub_809A5E4
thumb_func_start sub_809A720
sub_809A720: @ 809A720
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
movs r3, 0
b _0809A786
_0809A72C:
adds r1, r3, 0x1
lsls r0, r1, 16
lsrs r5, r0, 16
mov r8, r1
cmp r5, r2
bcs _0809A780
lsls r7, r3, 2
_0809A73A:
ldr r0, [r6]
adds r0, r7
adds r0, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsls r4, r5, 2
cmp r0, 0
beq _0809A76A
ldr r0, [r6]
adds r0, r4
adds r0, 0x2
bl GetBagItemQuantity
lsls r0, 16
cmp r0, 0
beq _0809A774
ldr r0, [r6]
adds r1, r7, r0
adds r0, r4, r0
ldrh r1, [r1]
ldrh r0, [r0]
cmp r1, r0
bls _0809A774
_0809A76A:
ldr r1, [r6]
adds r0, r1, r7
adds r1, r4
bl sub_809A578
_0809A774:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
ldrb r0, [r6, 0x4]
cmp r5, r0
bcc _0809A73A
_0809A780:
mov r1, r8
lsls r0, r1, 16
lsrs r3, r0, 16
_0809A786:
ldrb r2, [r6, 0x4]
cmp r3, r2
bcc _0809A72C
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_809A720
thumb_func_start sub_809A798
sub_809A798: @ 809A798
lsls r0, 24
lsls r1, 16
ldr r2, _0809A7B0 @ =gUnknown_203988C
lsrs r0, 21
subs r0, 0x8
adds r0, r2
ldr r0, [r0]
lsrs r1, 14
adds r1, r0
ldrh r0, [r1]
bx lr
.align 2, 0
_0809A7B0: .4byte gUnknown_203988C
thumb_func_end sub_809A798
thumb_func_start sub_809A7B4
sub_809A7B4: @ 809A7B4
push {lr}
lsls r0, 24
lsls r1, 16
ldr r2, _0809A7D8 @ =gUnknown_203988C
lsrs r0, 21
subs r0, 0x8
adds r0, r2
lsrs r1, 14
ldr r0, [r0]
adds r0, r1
adds r0, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_0809A7D8: .4byte gUnknown_203988C
thumb_func_end sub_809A7B4
thumb_func_start sub_809A7DC
sub_809A7DC: @ 809A7DC
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl ItemId_GetPocket
lsls r0, 24
lsrs r0, 21
ldr r1, _0809A7F4 @ =gUnknown_2039884
adds r3, r0, r1
movs r2, 0
b _0809A816
.align 2, 0
_0809A7F4: .4byte gUnknown_2039884
_0809A7F8:
ldr r0, [r3]
lsls r1, r2, 2
adds r1, r0
ldrh r0, [r1]
cmp r0, r4
bne _0809A810
adds r0, r1, 0x2
bl GetBagItemQuantity
lsls r0, 16
lsrs r0, 16
b _0809A81E
_0809A810:
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
_0809A816:
ldrb r0, [r3, 0x4]
cmp r2, r0
bcc _0809A7F8
movs r0, 0
_0809A81E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_809A7DC
thumb_func_start sub_809A824
sub_809A824: @ 809A824
push {r4,r5,lr}
lsls r0, 16
lsrs r5, r0, 16
ldr r1, _0809A894 @ =0xfea30000
adds r0, r1
lsrs r0, 16
cmp r0, 0xD
bls _0809A85A
movs r0, 0xB7
lsls r0, 1
cmp r5, r0
beq _0809A85A
adds r0, 0x2
cmp r5, r0
beq _0809A85A
adds r0, 0x1
cmp r5, r0
beq _0809A85A
adds r0, 0x3
cmp r5, r0
beq _0809A85A
adds r0, 0x1
cmp r5, r0
beq _0809A85A
adds r0, 0x1
cmp r5, r0
bne _0809A88C
_0809A85A:
ldr r0, _0809A898 @ =0x00000169
cmp r5, r0
bne _0809A86E
ldr r0, _0809A89C @ =gSaveBlock1Ptr
ldr r0, [r0]
ldrh r1, [r0, 0x4]
movs r0, 0x81
lsls r0, 2
cmp r1, r0
bne _0809A88C
_0809A86E:
movs r0, 0x4
bl Alloc
adds r4, r0, 0
strh r5, [r4]
ldr r0, _0809A8A0 @ =gUnknown_2036DFC
ldrb r0, [r0, 0x14]
strb r0, [r4, 0x2]
movs r0, 0x28
adds r1, r4, 0
bl sub_8113550
adds r0, r4, 0
bl Free
_0809A88C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0809A894: .4byte 0xfea30000
_0809A898: .4byte 0x00000169
_0809A89C: .4byte gSaveBlock1Ptr
_0809A8A0: .4byte gUnknown_2036DFC
thumb_func_end sub_809A824
thumb_func_start SanitizeItemId
SanitizeItemId: @ 809A8A4
push {lr}
lsls r0, 16
lsrs r1, r0, 16
movs r0, 0xBB
lsls r0, 1
cmp r1, r0
bhi _0809A8B6
adds r0, r1, 0
b _0809A8B8
_0809A8B6:
movs r0, 0
_0809A8B8:
pop {r1}
bx r1
thumb_func_end SanitizeItemId
thumb_func_start ItemId_GetItem
ItemId_GetItem: @ 809A8BC
push {lr}
lsls r0, 16
lsrs r0, 16
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
ldr r1, _0809A8D8 @ =gUnknown_83DB028
adds r0, r1
pop {r1}
bx r1
.align 2, 0
_0809A8D8: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetItem
thumb_func_start itemid_get_number
itemid_get_number: @ 809A8DC
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A8FC @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrh r0, [r0, 0xE]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A8FC: .4byte gUnknown_83DB028
thumb_func_end itemid_get_number
thumb_func_start itemid_get_market_price
itemid_get_market_price: @ 809A900
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A920 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrh r0, [r0, 0x10]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A920: .4byte gUnknown_83DB028
thumb_func_end itemid_get_market_price
thumb_func_start ItemId_GetHoldEffect
ItemId_GetHoldEffect: @ 809A924
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A944 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x12]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A944: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetHoldEffect
thumb_func_start ItemId_GetHoldEffectParam
ItemId_GetHoldEffectParam: @ 809A948
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A968 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x13]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A968: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetHoldEffectParam
thumb_func_start ItemId_GetDescription
ItemId_GetDescription: @ 809A96C
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A98C @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r4, 0x14
adds r0, r4
ldr r0, [r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A98C: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetDescription
thumb_func_start itemid_is_unique
itemid_is_unique: @ 809A990
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A9B0 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x18]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A9B0: .4byte gUnknown_83DB028
thumb_func_end itemid_is_unique
thumb_func_start itemid_get_x19
itemid_get_x19: @ 809A9B4
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A9D4 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x19]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A9D4: .4byte gUnknown_83DB028
thumb_func_end itemid_get_x19
thumb_func_start ItemId_GetPocket
ItemId_GetPocket: @ 809A9D8
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809A9F8 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x1A]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809A9F8: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetPocket
thumb_func_start ItemId_GetType
ItemId_GetType: @ 809A9FC
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809AA1C @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
ldrb r0, [r0, 0x1B]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809AA1C: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetType
thumb_func_start ItemId_GetFieldFunc
ItemId_GetFieldFunc: @ 809AA20
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809AA40 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r4, 0x1C
adds r0, r4
ldr r0, [r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809AA40: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetFieldFunc
thumb_func_start ItemId_GetBattleUsage
ItemId_GetBattleUsage: @ 809AA44
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809AA64 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
adds r0, 0x20
ldrb r0, [r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809AA64: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetBattleUsage
thumb_func_start ItemId_GetBattleFunc
ItemId_GetBattleFunc: @ 809AA68
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809AA88 @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r4, 0x24
adds r0, r4
ldr r0, [r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809AA88: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetBattleFunc
thumb_func_start ItemId_GetSecondaryId
ItemId_GetSecondaryId: @ 809AA8C
push {r4,lr}
lsls r0, 16
lsrs r0, 16
ldr r4, _0809AAAC @ =gUnknown_83DB028
bl SanitizeItemId
lsls r0, 16
lsrs r0, 16
movs r1, 0x2C
muls r0, r1
adds r0, r4
adds r0, 0x28
ldrb r0, [r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809AAAC: .4byte gUnknown_83DB028
thumb_func_end ItemId_GetSecondaryId
.align 2, 0 @ Don't pad with nop.