summaryrefslogtreecommitdiff
path: root/asm/pokeball.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/pokeball.s')
-rwxr-xr-xasm/pokeball.s2861
1 files changed, 2861 insertions, 0 deletions
diff --git a/asm/pokeball.s b/asm/pokeball.s
new file mode 100755
index 000000000..06958d7d2
--- /dev/null
+++ b/asm/pokeball.s
@@ -0,0 +1,2861 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80753E8
+sub_80753E8: @ 80753E8
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, =gDoingBattleAnim
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r6, =gActiveBank
+ ldrb r1, [r6]
+ ldr r2, [r0, 0x4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0]
+ ldr r0, =sub_8075450
+ movs r1, 0x5
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ ldrb r0, [r6]
+ strh r0, [r1, 0xE]
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80753E8
+
+ thumb_func_start sub_8075450
+sub_8075450: @ 8075450
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ movs r0, 0
+ str r0, [sp]
+ ldr r1, =gTasks
+ mov r2, r10
+ lsls r0, r2, 2
+ add r0, r10
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r2, [r1, 0x8]
+ movs r3, 0x8
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _08075488
+ adds r0, r2, 0x1
+ strh r0, [r1, 0x8]
+ b _08075602
+ .pool
+_08075488:
+ ldrh r0, [r1, 0xC]
+ mov r8, r0
+ ldrb r5, [r1, 0xE]
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080754B4
+ ldr r1, =gBattlePartyID
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gEnemyParty
+ b _080754C2
+ .pool
+_080754B4:
+ ldr r1, =gBattlePartyID
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gPlayerParty
+_080754C2:
+ adds r0, r1
+ movs r1, 0x26
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ bl ball_number_to_ball_processing_index
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_8076A78
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, =gUnknown_0832C588
+ adds r0, r1
+ movs r1, 0x20
+ movs r2, 0x50
+ movs r3, 0x1D
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r2, =gSprites
+ mov r9, r2
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r6, r0, 2
+ adds r4, r6, r2
+ movs r0, 0x80
+ strh r0, [r4, 0x2E]
+ movs r3, 0
+ strh r3, [r4, 0x30]
+ mov r0, r8
+ strh r0, [r4, 0x3C]
+ mov r2, r8
+ cmp r2, 0xFE
+ beq _08075548
+ cmp r2, 0xFF
+ bne _08075584
+ ldr r0, =gBankTarget
+ strb r5, [r0]
+ movs r0, 0x18
+ strh r0, [r4, 0x20]
+ movs r0, 0x44
+ strh r0, [r4, 0x22]
+ mov r0, r9
+ adds r0, 0x1C
+ adds r0, r6, r0
+ ldr r1, =sub_80761B4
+ str r1, [r0]
+ b _08075592
+ .pool
+_08075548:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x18
+ strh r0, [r4, 0x22]
+ ldr r0, =gBankTarget
+ strb r5, [r0]
+ movs r3, 0
+ strh r3, [r4, 0x2E]
+ mov r0, r9
+ adds r0, 0x1C
+ adds r0, r6, r0
+ ldr r1, =sub_8076398
+ str r1, [r0]
+ b _08075592
+ .pool
+_08075584:
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ ldr r1, =gBankTarget
+ strb r0, [r1]
+ movs r0, 0x1
+ str r0, [sp]
+_08075592:
+ ldr r0, =gSprites
+ lsls r1, r7, 4
+ adds r1, r7
+ lsls r1, 2
+ adds r4, r1, r0
+ ldr r5, =gBankTarget
+ ldrb r0, [r5]
+ strh r0, [r4, 0x3A]
+ ldr r2, [sp]
+ cmp r2, 0
+ bne _080755B8
+ mov r0, r10
+ bl DestroyTask
+ b _08075602
+ .pool
+_080755B8:
+ movs r0, 0x22
+ strh r0, [r4, 0x2E]
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ strh r0, [r4, 0x36]
+ ldr r0, =0x0000ffd8
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_80A68D4
+ mov r3, r10
+ strh r3, [r4, 0x6]
+ ldr r1, =gTasks
+ mov r2, r10
+ lsls r0, r2, 2
+ add r0, r10
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r5]
+ strh r1, [r0, 0x10]
+ ldr r1, =TaskDummy
+ str r1, [r0]
+ movs r0, 0x3D
+ bl PlaySE
+_08075602:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8075450
+
+ thumb_func_start objc_0804ABD4
+objc_0804ABD4: @ 8075620
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ bl sub_80A6900
+ lsls r0, 24
+ cmp r0, 0
+ beq _080756C0
+ ldrb r6, [r7, 0x6]
+ ldr r1, =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ ldrb r5, [r0, 0x10]
+ ldrb r0, [r0, 0xC]
+ mov r8, r0
+ adds r0, r7, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r2, r7, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r7, 0x24]
+ ldrh r1, [r7, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r7, 0x20]
+ ldrh r0, [r7, 0x26]
+ ldrh r2, [r7, 0x22]
+ adds r0, r2
+ strh r0, [r7, 0x22]
+ strh r1, [r7, 0x24]
+ strh r1, [r7, 0x26]
+ strh r1, [r7, 0x38]
+ adds r0, r5, 0
+ bl sub_8076B14
+ lsls r0, 16
+ lsrs r0, 16
+ bl ball_number_to_ball_processing_index
+ adds r4, r0, 0
+ ldrh r0, [r7, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r7, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl sub_8171D98
+ movs r0, 0
+ adds r1, r5, 0
+ movs r2, 0xE
+ adds r3, r4, 0
+ bl sub_81729E8
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x2E]
+ strh r5, [r7, 0x3A]
+ mov r0, r8
+ strh r0, [r7, 0x3C]
+ adds r0, r6, 0
+ bl DestroyTask
+ ldr r0, =sub_80756D4
+ str r0, [r7, 0x1C]
+_080756C0:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end objc_0804ABD4
+
+ thumb_func_start sub_80756D4
+sub_80756D4: @ 80756D4
+ ldr r1, =sub_80756E0
+ str r1, [r0, 0x1C]
+ bx lr
+ .pool
+ thumb_func_end sub_80756D4
+
+ thumb_func_start sub_80756E0
+sub_80756E0: @ 80756E0
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldrh r0, [r6, 0x38]
+ adds r0, 0x1
+ movs r7, 0
+ strh r0, [r6, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _0807573A
+ strh r7, [r6, 0x38]
+ ldr r0, =sub_807574C
+ str r0, [r6, 0x1C]
+ ldr r5, =gBankSpriteIds
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, =gSprites
+ adds r0, r4
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl AnimateSprite
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r7, [r0, 0x30]
+_0807573A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80756E0
+
+ thumb_func_start sub_807574C
+sub_807574C: @ 807574C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB
+ bne _08075764
+ movs r0, 0x3C
+ bl PlaySE
+_08075764:
+ ldr r6, =gSprites
+ ldr r5, =gBankSpriteIds
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r6
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _080757BC
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldr r0, =sub_80757E4
+ str r0, [r4, 0x1C]
+ b _080757DC
+ .pool
+_080757BC:
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x60
+ strh r0, [r1, 0x30]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ adds r0, r5
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ movs r2, 0x30
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ asrs r0, 8
+ strh r0, [r1, 0x26]
+_080757DC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807574C
+
+ thumb_func_start sub_80757E4
+sub_80757E4: @ 80757E4
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0807582C
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _0807582C
+ strh r1, [r4, 0x34]
+ movs r0, 0x20
+ strh r0, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ movs r0, 0
+ movs r1, 0x20
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0x36
+ ldrsh r1, [r4, r0]
+ movs r0, 0
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldr r0, =sub_8075838
+ str r0, [r4, 0x1C]
+_0807582C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80757E4
+
+ thumb_func_start sub_8075838
+sub_8075838: @ 8075838
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0
+ beq _0807584E
+ cmp r1, 0x1
+ beq _080758C2
+ b _080758EE
+_0807584E:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ adds r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ adds r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x3F
+ ble _080758EE
+ ldrh r0, [r4, 0x36]
+ subs r0, 0xA
+ strh r0, [r4, 0x36]
+ ldr r1, =0x00000101
+ adds r0, r2, r1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 24
+ cmp r0, 0x4
+ bne _0807588A
+ movs r5, 0x1
+_0807588A:
+ cmp r0, 0x2
+ beq _080758AA
+ cmp r0, 0x2
+ bgt _0807589C
+ cmp r0, 0x1
+ beq _080758A2
+ b _080758BA
+ .pool
+_0807589C:
+ cmp r0, 0x3
+ beq _080758B2
+ b _080758BA
+_080758A2:
+ movs r0, 0x38
+ bl PlaySE
+ b _080758EE
+_080758AA:
+ movs r0, 0x39
+ bl PlaySE
+ b _080758EE
+_080758B2:
+ movs r0, 0x3A
+ bl PlaySE
+ b _080758EE
+_080758BA:
+ movs r0, 0x3B
+ bl PlaySE
+ b _080758EE
+_080758C2:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ subs r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ subs r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ cmp r1, 0
+ bgt _080758EE
+ strh r5, [r4, 0x38]
+ ldr r0, =0xffffff00
+ ands r0, r2
+ strh r0, [r4, 0x34]
+_080758EE:
+ cmp r5, 0
+ beq _08075926
+ movs r5, 0
+ strh r5, [r4, 0x34]
+ movs r0, 0x40
+ movs r1, 0x20
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x26]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0807591C
+ ldr r0, =sub_8075D14
+ str r0, [r4, 0x1C]
+ b _08075926
+ .pool
+_0807591C:
+ ldr r0, =sub_8075930
+ str r0, [r4, 0x1C]
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ strh r5, [r4, 0x38]
+_08075926:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8075838
+
+ thumb_func_start sub_8075930
+sub_8075930: @ 8075930
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _08075964
+ movs r0, 0
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r0, =sub_8075970
+ str r0, [r4, 0x1C]
+ movs r0, 0x17
+ bl PlaySE
+_08075964:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8075930
+
+ thumb_func_start sub_8075970
+sub_8075970: @ 8075970
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0x4
+ bhi _08075A70
+ lsls r0, r1, 2
+ ldr r1, =_0807598C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0807598C:
+ .4byte _080759A0
+ .4byte _080759D2
+ .4byte _080759A0
+ .4byte _08075A26
+ .4byte _08075A70
+_080759A0:
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x24]
+ adds r1, r0, r2
+ strh r1, [r4, 0x24]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x6
+ bls _08075AB6
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ b _08075AB6
+_080759D2:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _08075A18
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bge _08075A0E
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl ChangeSpriteAffineAnim
+ b _08075AB6
+_08075A0E:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _08075AB6
+_08075A18:
+ adds r0, r4, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ b _08075AB6
+_08075A26:
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x34]
+ adds r0, r2
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 24
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _08075A48
+ ldr r0, =sub_8075D14
+ str r0, [r4, 0x1C]
+ b _08075AB6
+ .pool
+_08075A48:
+ cmp r1, 0x4
+ bne _08075A5C
+ cmp r0, 0x3
+ bne _08075A5C
+ ldr r0, =sub_8075FB4
+ str r0, [r4, 0x1C]
+ b _08075A62
+ .pool
+_08075A5C:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+_08075A62:
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ b _08075AB6
+_08075A70:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _08075AB6
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r1, [r4, 0x34]
+ ldr r0, =0xffffff00
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl StartSpriteAffineAnim
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _08075AA8
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ b _08075AB0
+ .pool
+_08075AA8:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_08075AB0:
+ movs r0, 0x17
+ bl PlaySE
+_08075AB6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075970
+
+ thumb_func_start c3_0804B070
+c3_0804B070: @ 8075ABC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r2
+ ldrb r1, [r0, 0xC]
+ mov r12, r1
+ ldrb r5, [r0, 0xA]
+ ldrh r6, [r0, 0x8]
+ ldrb r3, [r0, 0xE]
+ mov r8, r3
+ ldrb r7, [r0, 0x10]
+ movs r3, 0x12
+ ldrsh r1, [r0, r3]
+ lsls r3, r1, 16
+ ldrh r1, [r0, 0x14]
+ orrs r3, r1
+ movs r1, 0x26
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x20
+ bhi _08075B88
+ lsls r0, 2
+ ldr r1, =_08075B04
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_08075B04:
+ .4byte _08075B88
+ .4byte _08075BB4
+ .4byte _08075BDA
+ .4byte _08075C54
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075BF8
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075B88
+ .4byte _08075C66
+ .4byte _08075C7E
+ .4byte _08075CA8
+_08075B88:
+ ldr r0, =gSprites
+ lsls r1, r7, 4
+ adds r1, r7
+ lsls r1, 2
+ adds r1, r0
+ adds r1, 0x3F
+ ldrb r0, [r1]
+ lsls r0, 26
+ cmp r0, 0
+ blt _08075B9E
+ b _08075D04
+_08075B9E:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r2
+ mov r1, r12
+ adds r1, 0x1
+ strh r1, [r0, 0x26]
+ b _08075D04
+ .pool
+_08075BB4:
+ adds r0, r3, 0
+ bl sub_805F110
+ cmp r0, 0x1
+ bne _08075BCC
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0
+ bl PlayCry3
+ b _08075C2E
+_08075BCC:
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0xB
+ bl PlayCry3
+ b _08075C2E
+_08075BDA:
+ bl StopCryAndClearCrySongs
+ ldr r1, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x3
+ strh r1, [r0, 0x1C]
+ movs r1, 0x14
+ strh r1, [r0, 0x26]
+ b _08075D04
+ .pool
+_08075BF8:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r2, [r1, 0x1C]
+ movs r7, 0x1C
+ ldrsh r0, [r1, r7]
+ cmp r0, 0
+ bne _08075CBA
+ adds r0, r3, 0
+ bl sub_805F110
+ cmp r0, 0x1
+ bne _08075C22
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0x1
+ bl PlayCry4
+ b _08075C2E
+_08075C22:
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0xC
+ bl PlayCry4
+_08075C2E:
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ mov r2, r8
+ lsls r1, r2, 1
+ add r1, r8
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ adds r0, r4, 0
+ bl DestroyTask
+ b _08075D04
+ .pool
+_08075C54:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x6
+ strh r1, [r0, 0x1C]
+ movs r1, 0x1E
+ strh r1, [r0, 0x26]
+ b _08075D04
+_08075C66:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r2, [r1, 0x1C]
+ movs r3, 0x1C
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _08075CBA
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+_08075C7E:
+ bl IsCryPlayingOrClearCrySongs
+ lsls r0, 24
+ cmp r0, 0
+ bne _08075D04
+ bl StopCryAndClearCrySongs
+ ldr r0, =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x3
+ strh r0, [r1, 0x1C]
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _08075D04
+ .pool
+_08075CA8:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r2, [r1, 0x1C]
+ movs r7, 0x1C
+ ldrsh r0, [r1, r7]
+ cmp r0, 0
+ beq _08075CC0
+_08075CBA:
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x1C]
+ b _08075D04
+_08075CC0:
+ adds r0, r3, 0
+ bl sub_805F110
+ cmp r0, 0x1
+ bne _08075CD8
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0
+ bl PlayCry4
+ b _08075CE4
+_08075CD8:
+ lsls r1, r5, 24
+ asrs r1, 24
+ adds r0, r6, 0
+ movs r2, 0xB
+ bl PlayCry4
+_08075CE4:
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ mov r2, r8
+ lsls r1, r2, 1
+ add r1, r8
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ adds r0, r4, 0
+ bl DestroyTask
+_08075D04:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end c3_0804B070
+
+ thumb_func_start sub_8075D14
+sub_8075D14: @ 8075D14
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldrh r0, [r6, 0x3A]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r0, r5, 0
+ bl sub_8076B14
+ lsls r0, 16
+ lsrs r0, 16
+ bl ball_number_to_ball_processing_index
+ adds r4, r0, 0
+ ldrh r0, [r6, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl sub_8171D98
+ ldrh r1, [r6, 0x3A]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0x1
+ movs r2, 0xE
+ adds r3, r4, 0
+ bl sub_81729E8
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x2E]
+ ldr r0, =sub_8075FD4
+ str r0, [r6, 0x1C]
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08075D88
+ b _08075EF4
+_08075D88:
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075DC0
+ ldr r0, =gBattlePartyID
+ lsls r2, r5, 1
+ adds r0, r2, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, =gEnemyParty
+ adds r7, r1, r0
+ movs r4, 0x19
+ mov r10, r4
+ b _08075DD4
+ .pool
+_08075DC0:
+ ldr r0, =gBattlePartyID
+ lsls r2, r5, 1
+ adds r0, r2, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r7, r1, r0
+ movs r0, 0xE7
+ mov r10, r0
+_08075DD4:
+ mov r8, r2
+ adds r0, r7, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ beq _08075E00
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ bne _08075E56
+_08075E00:
+ bl battle_type_is_double
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075E56
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08075E56
+ ldr r0, =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x42
+ ands r0, r1
+ cmp r0, 0x42
+ bne _08075E4C
+ bl IsBGMPlaying
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075E56
+ ldr r0, =gMPlay_BGM
+ bl m4aMPlayStop
+ b _08075E56
+ .pool
+_08075E4C:
+ ldr r0, =gMPlay_BGM
+ ldr r1, =0x0000ffff
+ movs r2, 0x80
+ bl m4aMPlayVolumeControl
+_08075E56:
+ bl battle_type_is_double
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075E70
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08075E80
+_08075E70:
+ movs r4, 0
+ b _08075EA2
+ .pool
+_08075E80:
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ beq _08075E9C
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ bne _08075EA0
+_08075E9C:
+ movs r4, 0x1
+ b _08075EA2
+_08075EA0:
+ movs r4, 0x2
+_08075EA2:
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ mov r2, r8
+ adds r1, r2, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ movs r2, 0x40
+ orrs r0, r2
+ strb r0, [r1, 0x1]
+ ldr r0, =c3_0804B070
+ movs r1, 0x3
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r3, 0
+ mov r0, r9
+ strh r0, [r1, 0x8]
+ mov r2, r10
+ lsls r0, r2, 24
+ asrs r0, 24
+ strh r0, [r1, 0xA]
+ strh r4, [r1, 0xC]
+ strh r5, [r1, 0xE]
+ ldr r2, =gBankSpriteIds
+ movs r4, 0x3A
+ ldrsh r0, [r6, r4]
+ adds r0, r2
+ ldrb r0, [r0]
+ strh r0, [r1, 0x10]
+ lsrs r0, r7, 16
+ strh r0, [r1, 0x12]
+ strh r7, [r1, 0x14]
+ strh r3, [r1, 0x26]
+_08075EF4:
+ ldr r4, =gBankSpriteIds
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r5, =gSprites
+ adds r0, r5
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldrh r0, [r6, 0x3A]
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08075F50
+ movs r2, 0x3A
+ ldrsh r0, [r6, r2]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, =sub_8039B58
+ b _08075F66
+ .pool
+_08075F50:
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, =sub_8039E44
+_08075F66:
+ str r1, [r0]
+ ldr r5, =gBankSpriteIds
+ movs r2, 0x3A
+ ldrsh r0, [r6, r2]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, =gSprites
+ adds r0, r4
+ bl AnimateSprite
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x80
+ lsls r1, 5
+ strh r1, [r0, 0x30]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8075D14
+
+ thumb_func_start sub_8075FB4
+sub_8075FB4: @ 8075FB4
+ adds r3, r0, 0
+ adds r3, 0x2C
+ ldrb r1, [r3]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r3]
+ ldr r1, =sub_80760F8
+ str r1, [r0, 0x1C]
+ movs r1, 0
+ strh r1, [r0, 0x34]
+ strh r1, [r0, 0x36]
+ strh r1, [r0, 0x38]
+ bx lr
+ .pool
+ thumb_func_end sub_8075FB4
+
+ thumb_func_start sub_8075FD4
+sub_8075FD4: @ 8075FD4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ movs r7, 0
+ ldrh r0, [r5, 0x3A]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r4, =gSprites
+ ldr r0, =gBankSpriteIds
+ adds r3, r6, r0
+ ldrb r1, [r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08076016
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_08076016:
+ ldrb r0, [r3]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _08076040
+ adds r0, r1, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ movs r7, 0x1
+ b _0807605C
+ .pool
+_08076040:
+ ldr r2, =0xfffffee0
+ adds r0, r2, 0
+ ldrh r2, [r1, 0x30]
+ adds r0, r2
+ strh r0, [r1, 0x30]
+ ldrb r0, [r3]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r1, 0x26]
+_0807605C:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080760DE
+ cmp r7, 0
+ beq _080760DE
+ ldr r2, =gSprites
+ ldr r0, =gBankSpriteIds
+ adds r0, r6, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r2, 0
+ movs r1, 0
+ strh r1, [r0, 0x26]
+ ldr r0, =gDoingBattleAnim
+ strb r2, [r0]
+ ldr r4, =gUnknown_020244D0
+ ldr r0, [r4]
+ ldr r0, [r0, 0x4]
+ lsls r1, r6, 1
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r5, 0
+ bl DestroySprite
+ movs r3, 0
+ ldr r0, [r4]
+ ldr r2, [r0, 0x4]
+ movs r5, 0x8
+ movs r4, 0x3
+_080760B6:
+ ldrb r1, [r2]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080760C2
+ adds r3, 0x1
+_080760C2:
+ adds r2, 0xC
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080760B6
+ cmp r3, 0x4
+ bne _080760DE
+ movs r4, 0
+_080760D0:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_8076AE8
+ adds r4, 0x1
+ cmp r4, 0xB
+ ble _080760D0
+_080760DE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8075FD4
+
+ thumb_func_start sub_80760F8
+sub_80760F8: @ 80760F8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldrh r0, [r6, 0x3A]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r6, 0x36]
+ adds r0, 0x1
+ strh r0, [r6, 0x36]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0x28
+ beq _08076196
+ cmp r1, 0x5F
+ bne _08076130
+ ldr r0, =gDoingBattleAnim
+ movs r1, 0
+ strb r1, [r0]
+ bl m4aMPlayAllStop
+ ldr r0, =0x00000173
+ bl PlaySE
+ b _08076196
+ .pool
+_08076130:
+ ldr r0, =0x0000013b
+ cmp r1, r0
+ bne _08076196
+ ldr r5, =gSprites
+ ldr r4, =gBankSpriteIds
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ adds r0, r6, 0
+ bl DestroySpriteAndFreeResources
+ ldr r0, =gMain
+ ldr r1, =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08076196
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ lsls r1, r7, 1
+ adds r1, r7
+ lsls r1, 2
+ adds r1, r0
+ ldrb r2, [r1]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+_08076196:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80760F8
+
+ thumb_func_start sub_80761B4
+sub_80761B4: @ 80761B4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x19
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x3A]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x3A]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl sub_80A5C6C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x18
+ strh r0, [r4, 0x36]
+ ldr r0, =0x0000ffe2
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x3A]
+ strh r0, [r4, 0x6]
+ adds r0, r4, 0
+ bl sub_80A68D4
+ ldr r0, =sub_8076204
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80761B4
+
+ thumb_func_start sub_8076204
+sub_8076204: @ 8076204
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x3C]
+ movs r1, 0xFF
+ mov r8, r1
+ lsrs r0, 8
+ subs r0, 0x23
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2C
+ bhi _080762F8
+ ldrh r1, [r5, 0x6]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ bne _08076266
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ adds r6, r1, 0
+ ands r6, r0
+ ldrh r0, [r5, 0x32]
+ adds r7, r1, 0
+ ands r7, r0
+ movs r2, 0x30
+ ldrsh r0, [r5, r2]
+ movs r1, 0x3
+ bl __divsi3
+ movs r1, 0x2
+ negs r1, r1
+ adds r4, r1, 0
+ ands r0, r4
+ orrs r6, r0
+ strh r6, [r5, 0x30]
+ movs r2, 0x32
+ ldrsh r0, [r5, r2]
+ movs r1, 0x3
+ bl __divsi3
+ ands r0, r4
+ orrs r7, r0
+ strh r7, [r5, 0x32]
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl StartSpriteAffineAnim
+_08076266:
+ ldrh r4, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_80A6F3C
+ movs r1, 0x3A
+ ldrsh r0, [r5, r1]
+ movs r1, 0x3
+ bl __divsi3
+ adds r1, r0, 0
+ ldrh r0, [r5, 0x3C]
+ adds r0, r1
+ strh r0, [r5, 0x3C]
+ lsls r0, 16
+ asrs r0, 24
+ mov r2, r8
+ ands r0, r2
+ movs r2, 0x38
+ ldrsh r1, [r5, r2]
+ bl Sin
+ ldrh r1, [r5, 0x26]
+ adds r0, r1
+ strh r0, [r5, 0x26]
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldrh r1, [r5, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x6]
+ lsls r0, 16
+ lsrs r0, 24
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _080762B6
+ strh r4, [r5, 0x2E]
+ b _080762BE
+_080762B6:
+ lsls r0, r4, 16
+ asrs r0, 16
+ subs r0, 0x1
+ strh r0, [r5, 0x2E]
+_080762BE:
+ ldrh r0, [r5, 0x3C]
+ lsrs r0, 8
+ cmp r0, 0x4F
+ ble _08076364
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ adds r6, r1, 0
+ ands r6, r0
+ ldrh r0, [r5, 0x32]
+ adds r7, r1, 0
+ ands r7, r0
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ movs r1, 0x2
+ negs r1, r1
+ adds r2, r1, 0
+ ands r0, r2
+ orrs r0, r6
+ strh r0, [r5, 0x30]
+ movs r0, 0x32
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ands r0, r2
+ orrs r0, r7
+ strh r0, [r5, 0x32]
+ b _08076364
+_080762F8:
+ adds r0, r5, 0
+ bl sub_80A6900
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076364
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ ldrb r0, [r5, 0x6]
+ strh r0, [r5, 0x3A]
+ strh r1, [r5, 0x2E]
+ bl battle_type_is_double
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076358
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08076358
+ movs r0, 0x3A
+ ldrsh r4, [r5, r0]
+ movs r0, 0x2
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _08076358
+ ldr r0, =sub_8076374
+ b _0807635A
+ .pool
+_08076358:
+ ldr r0, =sub_8075D14
+_0807635A:
+ str r0, [r5, 0x1C]
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+_08076364:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076204
+
+ thumb_func_start sub_8076374
+sub_8076374: @ 8076374
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r1, r0, 0x1
+ strh r1, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x18
+ ble _0807638E
+ movs r0, 0
+ strh r0, [r2, 0x2E]
+ ldr r0, =sub_8075D14
+ str r0, [r2, 0x1C]
+_0807638E:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076374
+
+ thumb_func_start sub_8076398
+sub_8076398: @ 8076398
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080763EC
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ bl battle_type_is_double
+ lsls r0, 24
+ cmp r0, 0
+ beq _080763E8
+ ldr r0, =gUnknown_020244D0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080763E8
+ movs r0, 0x3A
+ ldrsh r4, [r5, r0]
+ movs r0, 0x3
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _080763E8
+ ldr r0, =sub_8076374
+ b _080763EA
+ .pool
+_080763E8:
+ ldr r0, =sub_8075D14
+_080763EA:
+ str r0, [r5, 0x1C]
+_080763EC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076398
+
+ thumb_func_start sub_80763F8
+sub_80763F8: @ 80763F8
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ movs r4, 0
+ str r4, [sp]
+ bl sub_8171D98
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80763F8
+
+ thumb_func_start sub_8076420
+sub_8076420: @ 8076420
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0
+ bl sub_81729E8
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8076420
+
+ thumb_func_start sub_8076438
+sub_8076438: @ 8076438
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ mov r9, r2
+ mov r10, r3
+ ldr r6, [sp, 0x28]
+ ldr r4, [sp, 0x2C]
+ ldr r0, [sp, 0x30]
+ ldr r2, [sp, 0x38]
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ lsls r0, r2, 16
+ lsrs r7, r0, 16
+ ldr r0, =gUnknown_0832C400
+ bl LoadCompressedObjectPicUsingHeap
+ ldr r0, =gUnknown_0832C460
+ bl LoadCompressedObjectPaletteUsingHeap
+ ldr r0, =gUnknown_0832C588
+ mov r1, r9
+ mov r2, r10
+ adds r3, r4, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gSprites
+ mov r8, r1
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ adds r2, r4, r1
+ strh r5, [r2, 0x2E]
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ add r1, r8
+ ldrh r0, [r1, 0x20]
+ strh r0, [r2, 0x38]
+ ldrh r0, [r1, 0x22]
+ strh r0, [r2, 0x3A]
+ mov r3, r9
+ strh r3, [r1, 0x20]
+ mov r0, r10
+ strh r0, [r1, 0x22]
+ strh r7, [r1, 0x3C]
+ mov r3, sp
+ ldrh r3, [r3, 0x4]
+ strh r3, [r2, 0x30]
+ mov r0, sp
+ ldrh r0, [r0]
+ strh r0, [r2, 0x32]
+ mov r3, sp
+ ldrh r3, [r3, 0x34]
+ strh r3, [r2, 0x34]
+ ldr r3, [sp, 0x34]
+ lsrs r0, r3, 16
+ strh r0, [r2, 0x36]
+ movs r0, 0x3
+ ands r6, r0
+ lsls r6, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r6
+ strb r0, [r2, 0x5]
+ movs r0, 0x1C
+ add r8, r0
+ add r4, r8
+ ldr r0, =sub_8076524
+ str r0, [r4]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076438
+
+ thumb_func_start sub_8076524
+sub_8076524: @ 8076524
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ ldrh r1, [r6, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _080765D0
+ ldrh r0, [r6, 0x2E]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r6, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrh r4, [r6, 0x34]
+ ldrh r0, [r6, 0x36]
+ lsls r0, 16
+ orrs r4, r0
+ adds r0, r6, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807655E
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _08076560
+_0807655E:
+ movs r5, 0
+_08076560:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldrh r0, [r6, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r6, 0x5]
+ lsls r2, 28
+ lsrs r2, 30
+ adds r3, r5, 0
+ bl sub_80763F8
+ movs r0, 0x1
+ mov r1, r8
+ adds r2, r4, 0
+ bl sub_8076420
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r6, 0x30]
+ ldr r0, =sub_80765E0
+ str r0, [r6, 0x1C]
+ ldr r0, =gSprites
+ lsls r4, r7, 4
+ adds r4, r7
+ lsls r4, 2
+ adds r4, r0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ adds r0, r4, 0
+ bl AnimateSprite
+ movs r0, 0x80
+ lsls r0, 5
+ strh r0, [r4, 0x30]
+ strh r5, [r6, 0x3C]
+ b _080765D4
+ .pool
+_080765D0:
+ subs r0, r1, 0x1
+ strh r0, [r6, 0x30]
+_080765D4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8076524
+
+ thumb_func_start sub_80765E0
+sub_80765E0: @ 80765E0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r4, r0, 0
+ movs r0, 0
+ mov r12, r0
+ movs r7, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08076610
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_08076610:
+ ldr r1, =gSprites
+ lsls r2, r6, 4
+ adds r0, r2, r6
+ lsls r0, 2
+ adds r5, r0, r1
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ mov r8, r2
+ cmp r0, 0
+ bge _08076634
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ movs r1, 0x1
+ mov r12, r1
+_08076634:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r3, 0x20
+ ldrsh r1, [r4, r3]
+ subs r0, r1
+ movs r1, 0x3C
+ ldrsh r2, [r4, r1]
+ muls r0, r2
+ cmp r0, 0
+ bge _0807664A
+ adds r0, 0x7F
+_0807664A:
+ asrs r0, 7
+ ldrh r3, [r4, 0x20]
+ adds r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r3, 0x22
+ ldrsh r1, [r4, r3]
+ subs r0, r1
+ muls r0, r2
+ cmp r0, 0
+ bge _08076668
+ adds r0, 0x7F
+_08076668:
+ asrs r0, 7
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ mov r2, r9
+ strh r2, [r5, 0x20]
+ strh r0, [r5, 0x22]
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x7F
+ bgt _080766AC
+ ldr r1, =gSineTable
+ lsls r0, r2, 24
+ lsrs r0, 23
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bge _08076690
+ adds r0, 0x7
+_08076690:
+ asrs r0, 3
+ negs r0, r0
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r2, 0x4
+ strh r1, [r4, 0x3C]
+ strh r0, [r5, 0x24]
+ strh r0, [r5, 0x26]
+ b _080766BA
+ .pool
+_080766AC:
+ ldrh r0, [r4, 0x38]
+ strh r0, [r5, 0x20]
+ ldrh r0, [r4, 0x3A]
+ strh r0, [r5, 0x22]
+ strh r7, [r5, 0x24]
+ strh r7, [r5, 0x26]
+ movs r7, 0x1
+_080766BA:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0807670E
+ mov r2, r12
+ cmp r2, 0
+ beq _0807670E
+ cmp r7, 0
+ beq _0807670E
+ ldr r1, =gSprites
+ mov r3, r8
+ adds r0, r3, r6
+ lsls r0, 2
+ adds r2, r0, r1
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r1, r0
+ bne _080766FC
+ ldrh r1, [r2, 0x3C]
+ adds r0, r2, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl DoMonFrontSpriteAnimation
+ b _08076708
+ .pool
+_080766FC:
+ ldrh r1, [r2, 0x3C]
+ adds r0, r2, 0
+ movs r2, 0
+ movs r3, 0
+ bl DoMonFrontSpriteAnimation
+_08076708:
+ adds r0, r4, 0
+ bl DestroySpriteAndFreeResources
+_0807670E:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80765E0
+
+ thumb_func_start sub_807671C
+sub_807671C: @ 807671C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r10, r0
+ adds r6, r2, 0
+ mov r8, r3
+ ldr r5, [sp, 0x20]
+ ldr r4, [sp, 0x24]
+ ldr r0, [sp, 0x28]
+ mov r9, r0
+ mov r0, r10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r6, 24
+ lsrs r6, 24
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r0, r9
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, =gUnknown_0832C400
+ bl LoadCompressedObjectPicUsingHeap
+ ldr r0, =gUnknown_0832C460
+ bl LoadCompressedObjectPaletteUsingHeap
+ ldr r0, =gUnknown_0832C588
+ adds r1, r6, 0
+ mov r2, r8
+ adds r3, r4, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r6, =gSprites
+ lsls r3, r0, 4
+ adds r3, r0
+ lsls r3, 2
+ adds r2, r3, r6
+ mov r1, r10
+ strh r1, [r2, 0x2E]
+ mov r4, r9
+ strh r4, [r2, 0x30]
+ strh r7, [r2, 0x32]
+ mov r1, sp
+ ldrh r1, [r1, 0x2C]
+ strh r1, [r2, 0x34]
+ ldr r4, [sp, 0x2C]
+ lsrs r1, r4, 16
+ strh r1, [r2, 0x36]
+ movs r1, 0x3
+ ands r5, r1
+ lsls r5, 2
+ ldrb r4, [r2, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r4
+ orrs r1, r5
+ strb r1, [r2, 0x5]
+ adds r6, 0x1C
+ adds r3, r6
+ ldr r1, =sub_80767D4
+ str r1, [r3]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_807671C
+
+ thumb_func_start sub_80767D4
+sub_80767D4: @ 80767D4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0807686C
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrh r5, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ lsls r0, 16
+ orrs r5, r0
+ adds r0, r4, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807680E
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ b _08076810
+_0807680E:
+ movs r6, 0
+_08076810:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r4, 0x5]
+ lsls r2, 28
+ lsrs r2, 30
+ adds r3, r6, 0
+ bl sub_80763F8
+ movs r0, 0x1
+ mov r1, r8
+ adds r2, r5, 0
+ bl sub_8076420
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x30]
+ ldr r0, =sub_807687C
+ str r0, [r4, 0x1C]
+ lsls r4, r7, 4
+ adds r4, r7
+ lsls r4, 2
+ ldr r0, =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ adds r0, r4, 0
+ bl AnimateSprite
+ strh r5, [r4, 0x30]
+ b _08076870
+ .pool
+_0807686C:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x30]
+_08076870:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80767D4
+
+ thumb_func_start sub_807687C
+sub_807687C: @ 807687C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x38]
+ adds r0, 0x1
+ strh r0, [r5, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB
+ bne _08076894
+ movs r0, 0x3C
+ bl PlaySE
+_08076894:
+ ldrh r1, [r5, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r2
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _080768D8
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0
+ strh r0, [r5, 0x38]
+ ldr r0, =sub_80768F0
+ str r0, [r5, 0x1C]
+ b _080768E8
+ .pool
+_080768D8:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x60
+ strh r0, [r4, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ asrs r0, 8
+ strh r0, [r4, 0x26]
+_080768E8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807687C
+
+ thumb_func_start sub_80768F0
+sub_80768F0: @ 80768F0
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08076904
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r2, 0x1C]
+_08076904:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80768F0
+
+ thumb_func_start obj_delete_and_free_associated_resources_
+obj_delete_and_free_associated_resources_: @ 807690C
+ push {lr}
+ bl DestroySpriteAndFreeResources
+ pop {r0}
+ bx r0
+ thumb_func_end obj_delete_and_free_associated_resources_
+
+ thumb_func_start sub_8076918
+sub_8076918: @ 8076918
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, =gHealthBoxesIds
+ adds r0, r5, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r6, =gSprites
+ adds r4, r0, r6
+ movs r1, 0
+ movs r0, 0x5
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ movs r0, 0x73
+ strh r0, [r4, 0x24]
+ strh r1, [r4, 0x26]
+ ldr r0, =sub_80769CC
+ str r0, [r4, 0x1C]
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076966
+ ldrh r0, [r4, 0x2E]
+ negs r0, r0
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ negs r0, r0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x24]
+ negs r0, r0
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ negs r0, r0
+ strh r0, [r4, 0x26]
+_08076966:
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r6, 0
+ adds r1, 0x1C
+ adds r1, r0, r1
+ adds r0, r6
+ ldr r1, [r1]
+ bl _call_via_r1
+ adds r0, r5, 0
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08076990
+ ldr r0, =sub_80769A8
+ str r0, [r4, 0x1C]
+_08076990:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076918
+
+ thumb_func_start sub_80769A8
+sub_80769A8: @ 80769A8
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080769C2
+ movs r0, 0
+ strh r0, [r1, 0x30]
+ ldr r0, =sub_80769CC
+ str r0, [r1, 0x1C]
+_080769C2:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80769A8
+
+ thumb_func_start sub_80769CC
+sub_80769CC: @ 80769CC
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x24]
+ ldrh r1, [r2, 0x2E]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x26]
+ ldrh r1, [r2, 0x30]
+ subs r0, r1
+ strh r0, [r2, 0x26]
+ ldr r0, [r2, 0x24]
+ cmp r0, 0
+ bne _080769EA
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r2, 0x1C]
+_080769EA:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80769CC
+
+ thumb_func_start sub_80769F4
+sub_80769F4: @ 80769F4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, =oamc_804BEB4
+ adds r0, r5, 0
+ bl CreateInvisibleSpriteWithCallback
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r3, r1, r2
+ movs r0, 0x1
+ strh r0, [r3, 0x2E]
+ ldr r0, =gHealthBoxesIds
+ adds r4, r0
+ ldrb r0, [r4]
+ strh r0, [r3, 0x30]
+ adds r2, 0x1C
+ adds r1, r2
+ str r5, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80769F4
+
+ thumb_func_start oamc_804BEB4
+oamc_804BEB4: @ 8076A38
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ ldrh r0, [r3, 0x2E]
+ movs r2, 0
+ strh r0, [r1, 0x26]
+ ldrh r0, [r3, 0x2E]
+ negs r0, r0
+ strh r0, [r3, 0x2E]
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ strh r0, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _08076A70
+ strh r2, [r1, 0x24]
+ strh r2, [r1, 0x26]
+ adds r0, r3, 0
+ bl DestroySprite
+_08076A70:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end oamc_804BEB4
+
+ thumb_func_start sub_8076A78
+sub_8076A78: @ 8076A78
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, =gUnknown_0832C400
+ lsls r6, r4, 3
+ adds r5, r6, r0
+ ldrh r0, [r5, 0x6]
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ ldr r1, =0xffff0000
+ cmp r0, r1
+ bne _08076AA0
+ adds r0, r5, 0
+ bl LoadCompressedObjectPicUsingHeap
+ ldr r0, =gUnknown_0832C460
+ adds r0, r6, r0
+ bl LoadCompressedObjectPaletteUsingHeap
+_08076AA0:
+ cmp r4, 0x6
+ beq _08076ACC
+ cmp r4, 0x6
+ blt _08076AB0
+ cmp r4, 0xB
+ bgt _08076AB0
+ cmp r4, 0xA
+ bge _08076ACC
+_08076AB0:
+ ldr r1, =gUnknown_0832C400
+ lsls r0, r4, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x6]
+ bl GetSpriteTileStartByTag
+ adds r1, r0, 0
+ lsls r1, 16
+ ldr r0, =gUnknown_08C02300
+ lsrs r1, 11
+ ldr r2, =0x06010100
+ adds r1, r2
+ bl LZDecompressVram
+_08076ACC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076A78
+
+ thumb_func_start sub_8076AE8
+sub_8076AE8: @ 8076AE8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ ldr r0, =gUnknown_0832C400
+ lsrs r4, 21
+ adds r0, r4, r0
+ ldrh r0, [r0, 0x6]
+ bl FreeSpriteTilesByTag
+ ldr r0, =gUnknown_0832C460
+ adds r4, r0
+ ldrh r0, [r4, 0x4]
+ bl FreeSpritePaletteByTag
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8076AE8
+
+ thumb_func_start sub_8076B14
+sub_8076B14: @ 8076B14
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076B40
+ ldr r1, =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gEnemyParty
+ b _08076B4E
+ .pool
+_08076B40:
+ ldr r1, =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gPlayerParty
+_08076B4E:
+ adds r0, r1
+ movs r1, 0x26
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_8076B14
+
+ .align 2, 0 @ Don't pad with nop.