tmc/asm/businessScrub.s

1281 lines
21 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start BusinessScrub
BusinessScrub: @ 0x0802890C
push {lr}
ldr r1, _08028918 @ =gUnk_080CC9C8
bl EnemyFunctionHandler
pop {pc}
.align 2, 0
_08028918: .4byte gUnk_080CC9C8
thumb_func_start sub_0802891C
sub_0802891C: @ 0x0802891C
push {lr}
ldr r2, _08028930 @ =gUnk_080CC9E0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08028930: .4byte gUnk_080CC9E0
thumb_func_start sub_08028934
sub_08028934: @ 0x08028934
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #1
bne _08028988
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r2, #0x7f
adds r0, r2, #0
ands r0, r1
cmp r0, #0x42
bne _08028988
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x28
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
adds r0, r2, #0
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #4
bl sub_080290E0
adds r0, r4, #0
movs r1, #3
movs r2, #0
bl CreateFx
adds r1, r0, #0
cmp r1, #0
beq _08028982
ldrh r0, [r1, #0x36]
subs r0, #8
strh r0, [r1, #0x36]
_08028982:
ldr r0, _0802898C @ =0x000001BB
bl sub_08004488
_08028988:
pop {r4, pc}
.align 2, 0
_0802898C: .4byte 0x000001BB
thumb_func_start nullsub_140
nullsub_140: @ 0x08028990
bx lr
.align 2, 0
thumb_func_start sub_08028994
sub_08028994: @ 0x08028994
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #0
strb r0, [r4, #0xf]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x78
movs r5, #0
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
strb r5, [r4, #0x14]
movs r0, #0x10
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08028E9C
ldr r0, [r4, #0x7c]
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080289D4
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _080289FC
_080289D4:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0xb1
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0802925C
adds r0, r4, #0
movs r1, #0
bl sub_080290E0
b _08028A42
_080289FC:
strb r5, [r4, #0xe]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _08028A44 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r5, #0x32
ldrsh r0, [r4, r5]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r0, r4, #0
adds r0, #0x76
strh r1, [r0]
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
adds r1, r4, #0
adds r1, #0x74
strh r0, [r1]
subs r1, #0x34
movs r0, #0x41
strb r0, [r1]
adds r0, r4, #0
bl sub_08028FFC
_08028A42:
pop {r4, r5, pc}
.align 2, 0
_08028A44: .4byte gRoomControls
thumb_func_start sub_08028A48
sub_08028A48: @ 0x08028A48
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _08028A5A
subs r0, #1
strb r0, [r4, #0xe]
b _08028A72
_08028A5A:
adds r0, r4, #0
movs r1, #0
bl sub_08028F98
cmp r0, #0
beq _08028A72
adds r0, r4, #0
bl sub_08029078
strb r5, [r4, #0xd]
movs r0, #1
strb r0, [r4, #0xf]
_08028A72:
pop {r4, r5, pc}
thumb_func_start sub_08028A74
sub_08028A74: @ 0x08028A74
push {r4, r5, r6, lr}
adds r4, r0, #0
bl GetNextFrame
ldrb r0, [r4, #0xd]
cmp r0, #4
bls _08028A84
b _08028BA6
_08028A84:
lsls r0, r0, #2
ldr r1, _08028A90 @ =_08028A94
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08028A90: .4byte _08028A94
_08028A94: @ jump table
.4byte _08028AA8 @ case 0
.4byte _08028ACA @ case 1
.4byte _08028B1A @ case 2
.4byte _08028B54 @ case 3
.4byte _08028B76 @ case 4
_08028AA8:
movs r6, #1
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028BA6
strb r6, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08028FDC
b _08028B6C
_08028ACA:
movs r6, #1
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08028AF6
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x20
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r0, r4, #0
bl sub_08028FDC
adds r0, r4, #0
movs r1, #2
bl sub_080290E0
b _08028BA6
_08028AF6:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r2
cmp r0, #0
bne _08028BA6
adds r0, r4, #0
bl sub_08028FDC
cmp r0, #0
beq _08028B14
adds r0, r4, #0
movs r1, #1
bl sub_080290E0
_08028B14:
movs r0, #0x10
strb r0, [r4, #0xf]
b _08028BA6
_08028B1A:
movs r6, #1
adds r0, r4, #0
bl sub_080290FC
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
adds r0, r6, #0
ands r0, r1
cmp r0, #0
beq _08028BA6
adds r0, r4, #0
movs r1, #4
movs r2, #0
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _08028BA6
str r4, [r1, #0x50]
ldrb r0, [r4, #0x15]
strb r0, [r1, #0x15]
ldrb r1, [r5]
movs r0, #0xfe
ands r0, r1
strb r0, [r5]
movs r0, #3
strb r0, [r4, #0xd]
b _08028BA6
_08028B54:
movs r6, #2
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028BA6
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x50
strb r0, [r4, #0xe]
_08028B6C:
adds r0, r4, #0
movs r1, #1
bl sub_080290E0
b _08028BA6
_08028B76:
movs r6, #2
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08028BA6
adds r0, r4, #0
movs r1, #0
bl sub_08028F98
adds r5, r0, #0
cmp r5, #0
beq _08028BB4
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08028FDC
b _08028BC2
_08028BA6:
adds r0, r4, #0
adds r1, r6, #0
bl sub_08028F98
adds r5, r0, #0
cmp r5, #0
bne _08028BC2
_08028BB4:
adds r0, r4, #0
bl sub_08028FFC
strb r5, [r4, #0xd]
movs r0, #0x50
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
_08028BC2:
pop {r4, r5, r6, pc}
thumb_func_start sub_08028BC4
sub_08028BC4: @ 0x08028BC4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08028BD4
cmp r0, #1
beq _08028C14
b _08028C76
_08028BD4:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _08028C0E
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028C76
movs r0, #1
strb r0, [r4, #0xd]
adds r0, r4, #0
bl sub_08028FDC
adds r0, r4, #0
movs r1, #5
bl sub_080290E0
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
b _08028C76
_08028C0E:
subs r0, #1
strb r0, [r4, #0xe]
b _08028C76
_08028C14:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028C76
movs r1, #0
movs r0, #4
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #5
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_080290E0
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
adds r2, r0, #0
cmp r2, #0
beq _08028C66
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, #0x36]
subs r0, #0xc
strh r0, [r2, #0x36]
adds r0, r2, #0
movs r1, #2
bl sub_0805E3A0
_08028C66:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
adds r0, r4, #0
bl sub_0802925C
_08028C76:
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
bl sub_0800445C
pop {r4, pc}
thumb_func_start sub_08028C84
sub_08028C84: @ 0x08028C84
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08028CD2
movs r0, #0x30
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r5, r0, #0
cmp r5, #0
beq _08028CB4
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r1
cmp r0, #0
bne _08028CD2
adds r0, r4, #0
bl sub_0804AA1C
b _08028CD2
_08028CB4:
adds r0, r4, #0
bl sub_08028FDC
adds r1, r4, #0
adds r1, #0x80
cmp r0, #0
bne _08028CC8
ldrb r0, [r1]
cmp r0, #0
beq _08028CD2
_08028CC8:
strb r5, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_080290E0
_08028CD2:
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
bl sub_0800445C
adds r0, r4, #0
bl sub_08028F0C
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08028CE8
sub_08028CE8: @ 0x08028CE8
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r6, [r5, #0x7c]
ldr r0, _08028D30 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _08028DCC
adds r0, r5, #0
bl sub_0802915C
cmp r0, #0
beq _08028DCC
bl sub_08056338
cmp r0, #0
bne _08028DCC
ldr r0, _08028D34 @ =gUnk_02002A40
adds r0, #0xc0
ldrh r1, [r6, #2]
ldrh r0, [r0]
cmp r1, r0
bhi _08028DC0
adds r0, r5, #0
bl sub_080291DC
cmp r0, #0
beq _08028D3C
ldr r0, _08028D38 @ =0x00002904
bl TextboxNoOverlapFollow
movs r0, #0
bl sub_08078A90
b _08028DCC
.align 2, 0
_08028D30: .4byte gTextBox
_08028D34: .4byte gUnk_02002A40
_08028D38: .4byte 0x00002904
_08028D3C:
ldrh r0, [r6, #2]
rsbs r0, r0, #0
bl ModRupees
ldrb r0, [r6]
lsrs r7, r0, #2
cmp r7, #1
beq _08028D9C
cmp r7, #1
bgt _08028D56
cmp r7, #0
beq _08028D5C
b _08028DCC
_08028D56:
cmp r7, #2
beq _08028DAA
b _08028DCC
_08028D5C:
ldrb r1, [r6, #9]
cmp r1, #0xff
bne _08028D70
ldr r4, _08028D98 @ =gUnk_080CC9C0
bl Random
movs r1, #7
ands r1, r0
adds r1, r1, r4
ldrb r1, [r1]
_08028D70:
ldrb r0, [r6, #8]
movs r2, #0
bl CreateItemEntity
movs r0, #6
strb r0, [r5, #0xc]
movs r0, #4
strb r0, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x81
strb r7, [r0]
adds r0, r5, #0
movs r1, #3
bl sub_080290E0
movs r0, #0x87
bl SetLocalFlag
b _08028DE2
.align 2, 0
_08028D98: .4byte gUnk_080CC9C0
_08028D9C:
ldrb r0, [r6, #8]
ldrb r1, [r6, #9]
movs r2, #0
bl CreateItemEntity
movs r0, #4
b _08028DB6
_08028DAA:
ldrb r0, [r6, #8]
ldrb r1, [r6, #9]
movs r2, #0
bl CreateItemEntity
movs r0, #8
_08028DB6:
strb r0, [r5, #0xe]
adds r0, r5, #0
bl sub_0802922C
b _08028DE2
_08028DC0:
ldr r0, _08028DE4 @ =0x00002903
bl TextboxNoOverlapFollow
movs r0, #0
bl sub_08078A90
_08028DCC:
adds r0, r5, #0
bl sub_0800445C
movs r0, #4
strb r0, [r5, #0xc]
movs r0, #0x30
strb r0, [r5, #0xe]
adds r0, r5, #0
movs r1, #0
bl sub_080290E0
_08028DE2:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08028DE4: .4byte 0x00002903
thumb_func_start sub_08028DE8
sub_08028DE8: @ 0x08028DE8
push {r4, lr}
adds r4, r0, #0
ldr r0, _08028E08 @ =gLinkEntity
ldrb r0, [r0, #0xc]
cmp r0, #8
bne _08028E0C
adds r4, #0x81
ldrb r0, [r4]
cmp r0, #0
bne _08028E3A
movs r0, #1
bl sub_08078A90
movs r0, #1
strb r0, [r4]
b _08028E3A
.align 2, 0
_08028E08: .4byte gLinkEntity
_08028E0C:
ldr r0, _08028E3C @ =0x00002902
bl TextboxNoOverlapFollow
movs r1, #0
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x81
strb r1, [r0]
movs r0, #1
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08028EDC
movs r0, #0
bl sub_08078A90
adds r0, r4, #0
bl sub_0800445C
adds r0, r4, #0
bl GetNextFrame
_08028E3A:
pop {r4, pc}
.align 2, 0
_08028E3C: .4byte 0x00002902
thumb_func_start sub_08028E40
sub_08028E40: @ 0x08028E40
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08028E80 @ =gTextBox
ldrb r0, [r0]
movs r1, #0x7f
ands r1, r0
cmp r1, #0
bne _08028E72
ldr r5, [r4, #0x7c]
movs r0, #4
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #1
strb r0, [r4, #0xe]
ldrh r0, [r5, #0xa]
bl CheckLocalFlag
cmp r0, #0
bne _08028E6C
ldrh r0, [r5, #0xa]
bl SetLocalFlag
_08028E6C:
movs r0, #0
bl sub_08078A90
_08028E72:
adds r0, r4, #0
bl sub_0800445C
adds r0, r4, #0
bl GetNextFrame
pop {r4, r5, pc}
.align 2, 0
_08028E80: .4byte gTextBox
thumb_func_start sub_08028E84
sub_08028E84: @ 0x08028E84
push {r4, lr}
adds r4, r0, #0
bl UpdateFuseInteraction
cmp r0, #0
beq _08028E98
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xe]
_08028E98:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028E9C
sub_08028E9C: @ 0x08028E9C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #2
ldr r6, _08028ED8 @ =gUnk_080CC954
adds r4, r1, r6
adds r0, r4, #0
bl sub_08029198
cmp r0, #0
beq _08028ECA
ldrb r1, [r4]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08028ECA
ldrh r1, [r4, #0xa]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r4, r0, r6
_08028ECA:
str r4, [r5, #0x7c]
adds r1, r5, #0
adds r1, #0x80
movs r0, #0
strb r0, [r1]
pop {r4, r5, r6, pc}
.align 2, 0
_08028ED8: .4byte gUnk_080CC954
thumb_func_start sub_08028EDC
sub_08028EDC: @ 0x08028EDC
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x7c]
adds r0, r4, #0
bl sub_08029198
cmp r0, #0
beq _08028F04
ldrb r1, [r4]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08028F04
ldrh r0, [r4, #0xa]
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08028F08 @ =gUnk_080CC954
adds r4, r1, r0
str r4, [r5, #0x7c]
_08028F04:
pop {r4, r5, pc}
.align 2, 0
_08028F08: .4byte gUnk_080CC954
thumb_func_start sub_08028F0C
sub_08028F0C: @ 0x08028F0C
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x39
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #2
bne _08028F2C
movs r1, #0
movs r0, #8
strb r0, [r5, #0xc]
strb r1, [r2]
adds r0, r5, #0
bl sub_0806F118
b _08028F90
_08028F2C:
cmp r0, #0
beq _08028F90
ldr r6, [r5, #0x7c]
movs r4, #0
strb r4, [r2]
adds r0, r5, #0
bl sub_0804AA1C
adds r0, r5, #0
bl sub_0806EDC4
lsls r0, r0, #3
strb r0, [r5, #0x15]
adds r0, r5, #0
movs r1, #3
bl sub_080290E0
adds r1, r5, #0
adds r1, #0x80
movs r0, #1
strb r0, [r1]
movs r0, #0x20
strb r0, [r5, #0xe]
strb r4, [r5, #0xf]
adds r0, r6, #0
bl sub_08029198
cmp r0, #0
beq _08028F6A
ldrh r4, [r6, #6]
b _08028F84
_08028F6A:
ldrb r1, [r6]
movs r0, #0xfc
ands r0, r1
cmp r0, #0xc
beq _08028F78
movs r0, #5
b _08028F7A
_08028F78:
movs r0, #7
_08028F7A:
strb r0, [r5, #0xc]
ldrh r4, [r6, #4]
movs r0, #1
bl sub_08078A90
_08028F84:
adds r0, r4, #0
bl TextboxNoOverlapFollow
ldr r1, _08028F94 @ =gTextBox
ldrh r0, [r6, #2]
str r0, [r1, #0x10]
_08028F90:
pop {r4, r5, r6, pc}
.align 2, 0
_08028F94: .4byte gTextBox
thumb_func_start sub_08028F98
sub_08028F98: @ 0x08028F98
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _08028FD4
adds r0, r6, #0
adds r1, r4, #0
movs r2, #0x28
movs r3, #0x28
bl sub_080041A0
cmp r0, #0
bne _08028FD4
cmp r5, #2
beq _08028FD8
movs r3, #0x50
cmp r5, #0
beq _08028FC6
movs r3, #0x58
_08028FC6:
adds r0, r6, #0
adds r1, r4, #0
adds r2, r3, #0
bl sub_080041A0
cmp r0, #0
bne _08028FD8
_08028FD4:
movs r0, #0
b _08028FDA
_08028FD8:
movs r0, #1
_08028FDA:
pop {r4, r5, r6, pc}
thumb_func_start sub_08028FDC
sub_08028FDC: @ 0x08028FDC
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049F84
adds r1, r0, #4
movs r0, #0x18
ands r1, r0
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _08028FF8
strb r1, [r4, #0x15]
movs r0, #1
b _08028FFA
_08028FF8:
movs r0, #0
_08028FFA:
pop {r4, pc}
thumb_func_start sub_08028FFC
sub_08028FFC: @ 0x08028FFC
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_080AE068
adds r0, r4, #0
bl sub_0801D230
adds r1, r4, #0
adds r1, #0x60
movs r0, #0xe8
strh r0, [r1]
ldrb r1, [r4, #0x1a]
subs r0, #0xf8
ands r0, r1
movs r1, #2
orrs r0, r1
movs r1, #0xf
ands r0, r1
movs r1, #0x20
orrs r0, r1
strb r0, [r4, #0x1a]
movs r0, #0xa7
strh r0, [r4, #0x12]
adds r0, r4, #0
adds r0, #0x78
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r4, #0x32]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
ldr r0, _08029074 @ =0x00004022
adds r1, r4, #0
adds r1, #0x76
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
pop {r4, pc}
.align 2, 0
_08029074: .4byte 0x00004022
thumb_func_start sub_08029078
sub_08029078: @ 0x08029078
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #0x72
bl sub_080ADF80
cmp r0, #0
bne _080290AE
adds r0, r4, #0
bl DeleteEntity
b _080290DE
_080290AE:
adds r0, r4, #0
movs r1, #0x6e
bl sub_0801D040
movs r0, #0xd0
strh r0, [r4, #0x12]
adds r0, r4, #0
bl sub_08028FDC
adds r0, r4, #0
movs r1, #1
bl sub_080290E0
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x76
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_080290DE:
pop {r4, pc}
thumb_func_start sub_080290E0
sub_080290E0: @ 0x080290E0
push {lr}
adds r3, r1, #0
ldrb r1, [r0, #0x15]
lsrs r1, r1, #3
ldr r2, _080290F8 @ =gUnk_080CCA04
adds r3, r3, r2
ldrb r2, [r3]
orrs r1, r2
bl InitializeAnimation
pop {pc}
.align 2, 0
_080290F8: .4byte gUnk_080CCA04
thumb_func_start sub_080290FC
sub_080290FC: @ 0x080290FC
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _08029158
subs r1, r0, #1
strb r1, [r2, #0xe]
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xf
bhi _08029158
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08029158
ldrb r4, [r2, #0x15]
movs r0, #0x10
ands r0, r4
movs r5, #1
cmp r0, #0
beq _08029128
subs r5, #2
_08029128:
movs r3, #8
adds r0, r3, #0
ands r0, r4
cmp r0, #0
beq _08029146
movs r4, #0x2e
ldrsh r0, [r2, r4]
ands r1, r3
cmp r1, #0
beq _08029140
subs r0, r0, r5
b _08029142
_08029140:
adds r0, r0, r5
_08029142:
strh r0, [r2, #0x2e]
b _08029158
_08029146:
movs r4, #0x32
ldrsh r0, [r2, r4]
ands r1, r3
cmp r1, #0
bne _08029154
subs r0, r0, r5
b _08029156
_08029154:
adds r0, r0, r5
_08029156:
strh r0, [r2, #0x32]
_08029158:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0802915C
sub_0802915C: @ 0x0802915C
push {lr}
ldr r0, [r0, #0x7c]
ldrb r0, [r0, #8]
cmp r0, #0x5c
beq _08029190
cmp r0, #0x5c
bgt _08029174
cmp r0, #0x1c
beq _08029186
cmp r0, #0x44
beq _0802917E
b _08029194
_08029174:
cmp r0, #0x6c
beq _08029190
cmp r0, #0x6f
beq _08029190
b _08029194
_0802917E:
movs r0, #0x44
bl GetInventoryValue
b _0802918C
_08029186:
movs r0, #0x5a
bl CheckGlobalFlag
_0802918C:
cmp r0, #0
bne _08029194
_08029190:
movs r0, #1
b _08029196
_08029194:
movs r0, #0
_08029196:
pop {pc}
thumb_func_start sub_08029198
sub_08029198: @ 0x08029198
push {lr}
adds r2, r0, #0
ldrb r1, [r2]
movs r0, #0xfc
ands r0, r1
cmp r0, #0xc
beq _080291CA
ldrb r0, [r2, #8]
cmp r0, #0x1c
beq _080291BC
cmp r0, #0x1c
bgt _080291B6
cmp r0, #9
beq _080291C4
b _080291D8
_080291B6:
cmp r0, #0x44
beq _080291C4
b _080291D8
_080291BC:
movs r0, #0x5a
bl CheckGlobalFlag
b _080291D0
_080291C4:
bl GetInventoryValue
b _080291D0
_080291CA:
ldrh r0, [r2, #0xa]
bl CheckLocalFlag
_080291D0:
cmp r0, #0
beq _080291D8
movs r0, #1
b _080291DA
_080291D8:
movs r0, #0
_080291DA:
pop {pc}
thumb_func_start sub_080291DC
sub_080291DC: @ 0x080291DC
push {lr}
ldr r0, [r0, #0x7c]
ldrb r0, [r0, #8]
cmp r0, #0x6c
beq _080291EC
cmp r0, #0x6f
beq _08029204
b _08029228
_080291EC:
ldr r2, _080291FC @ =gBombBagSizes
ldr r1, _08029200 @ =gUnk_02002A40
adds r0, r1, #0
adds r0, #0xae
ldrb r0, [r0]
adds r0, r0, r2
adds r1, #0xac
b _08029212
.align 2, 0
_080291FC: .4byte gBombBagSizes
_08029200: .4byte gUnk_02002A40
_08029204:
ldr r2, _08029220 @ =gQuiverSizes
ldr r1, _08029224 @ =gUnk_02002A40
adds r0, r1, #0
adds r0, #0xaf
ldrb r0, [r0]
adds r0, r0, r2
adds r1, #0xad
_08029212:
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bhi _08029228
movs r0, #1
b _0802922A
.align 2, 0
_08029220: .4byte gQuiverSizes
_08029224: .4byte gUnk_02002A40
_08029228:
movs r0, #0
_0802922A:
pop {pc}
thumb_func_start sub_0802922C
sub_0802922C: @ 0x0802922C
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #6
strb r1, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x81
strb r0, [r1]
ldr r0, [r4, #0x7c]
ldrb r0, [r0, #8]
cmp r0, #0x6c
beq _08029252
cmp r0, #0x6c
bgt _08029252
cmp r0, #0x1c
bne _08029252
movs r0, #0x5a
bl SetGlobalFlag
_08029252:
adds r0, r4, #0
movs r1, #3
bl sub_080290E0
pop {r4, pc}
thumb_func_start sub_0802925C
sub_0802925C: @ 0x0802925C
push {r4, lr}
adds r4, r0, #0
bl sub_0801E99C
adds r1, r0, #0
adds r0, r4, #0
bl sub_08078784
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08029270
sub_08029270: @ 0x08029270
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xc]
cmp r0, #0
bne _08029296
adds r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
adds r0, r2, #0
movs r1, #0xe
bl InitializeAnimation
b _0802929C
_08029296:
adds r0, r2, #0
bl GetNextFrame
_0802929C:
pop {pc}
.align 2, 0