pokeemerald-jp/asm/battle_anim_effects_2.s
2019-09-27 01:42:56 -04:00

7930 lines
138 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start sub_08103C98
sub_08103C98: @ 0x08103C98
push {r4, r5, lr}
adds r4, r0, #0
bl SetSpriteCoordsToAnimAttackerCoords
ldr r5, _08103CDC
movs r0, #0
ldrsh r1, [r5, r0]
adds r0, r4, #0
bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, #2]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
ldrh r0, [r5, #4]
strh r0, [r4, #0x30]
ldrh r0, [r5, #8]
strh r0, [r4, #0x32]
ldrh r0, [r5, #0xa]
strh r0, [r4, #0x34]
ldrh r0, [r5, #6]
strh r0, [r4, #0x36]
ldr r1, _08103CE0
adds r0, r4, #0
bl StoreSpriteCallbackInData6
ldr r1, _08103CE4
str r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08103CDC: .4byte 0x020380BE
_08103CE0: .4byte 0x080A6015
_08103CE4: .4byte 0x080A5D19
thumb_func_end sub_08103C98
thumb_func_start sub_08103CE8
sub_08103CE8: @ 0x08103CE8
push {r4, lr}
adds r4, r0, #0
ldr r0, _08103CFC
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _08103D04
ldr r0, _08103D00
b _08103D06
.align 2, 0
_08103CFC: .4byte 0x020380BE
_08103D00: .4byte 0x020380D6
_08103D04:
ldr r0, _08103D20
_08103D06:
ldrb r0, [r0]
adds r1, r4, #0
bl sub_0810395C
movs r0, #0
strh r0, [r4, #0x2e]
strh r0, [r4, #0x30]
ldr r0, _08103D24
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08103D20: .4byte 0x020380D7
_08103D24: .4byte 0x08103D29
thumb_func_end sub_08103CE8
thumb_func_start sub_08103D28
sub_08103D28: @ 0x08103D28
push {lr}
adds r1, r0, #0
movs r2, #0x2e
ldrsh r0, [r1, r2]
cmp r0, #1
beq _08103D5A
cmp r0, #1
bgt _08103D3E
cmp r0, #0
beq _08103D44
b _08103D88
_08103D3E:
cmp r0, #2
beq _08103D74
b _08103D88
_08103D44:
ldrh r0, [r1, #0x26]
subs r0, #3
strh r0, [r1, #0x26]
ldrh r0, [r1, #0x30]
adds r0, #1
strh r0, [r1, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #6
bne _08103D88
b _08103D6C
_08103D5A:
ldrh r0, [r1, #0x26]
adds r0, #3
strh r0, [r1, #0x26]
ldrh r0, [r1, #0x30]
subs r0, #1
strh r0, [r1, #0x30]
lsls r0, r0, #0x10
cmp r0, #0
bne _08103D88
_08103D6C:
ldrh r0, [r1, #0x2e]
adds r0, #1
strh r0, [r1, #0x2e]
b _08103D88
_08103D74:
ldrh r0, [r1, #0x30]
adds r0, #1
strh r0, [r1, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x40
bne _08103D88
adds r0, r1, #0
bl DestroyAnimSprite
_08103D88:
pop {r0}
bx r0
thumb_func_end sub_08103D28
thumb_func_start sub_08103D8C
sub_08103D8C: @ 0x08103D8C
push {r4, lr}
adds r4, r0, #0
ldr r3, _08103DD8
movs r0, #0x32
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrh r1, [r4, #0x30]
ldrh r2, [r0, #0x24]
adds r1, r1, r2
strh r1, [r0, #0x24]
movs r1, #0x30
ldrsh r0, [r4, r1]
rsbs r0, r0, #0
strh r0, [r4, #0x30]
movs r0, #0x2e
ldrsh r2, [r4, r0]
cmp r2, #0
bne _08103DCA
movs r0, #0x32
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
strh r2, [r0, #0x24]
adds r0, r4, #0
bl DestroySpriteAndMatrix
_08103DCA:
ldrh r0, [r4, #0x2e]
subs r0, #1
strh r0, [r4, #0x2e]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08103DD8: .4byte 0x020205AC
thumb_func_end sub_08103D8C
thumb_func_start sub_08103DDC
sub_08103DDC: @ 0x08103DDC
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r4, _08103E24
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldr r1, _08103E28
ldr r0, _08103E2C
ldrb r0, [r0]
adds r0, r0, r1
ldrb r6, [r0]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08103E34
ldr r0, _08103E30
ldrh r1, [r5, #0x20]
ldrh r2, [r0]
subs r1, r1, r2
strh r1, [r5, #0x20]
adds r1, r0, #0
b _08103E3E
.align 2, 0
_08103E24: .4byte 0x020380D6
_08103E28: .4byte 0x02023E88
_08103E2C: .4byte 0x020380D7
_08103E30: .4byte 0x020380BE
_08103E34:
ldr r1, _08103E68
ldrh r0, [r1]
ldrh r2, [r5, #0x20]
adds r0, r0, r2
strh r0, [r5, #0x20]
_08103E3E:
ldrh r0, [r1, #2]
ldrh r2, [r5, #0x22]
adds r0, r0, r2
strh r0, [r5, #0x22]
ldrh r0, [r1, #4]
strh r0, [r5, #0x2e]
ldrh r0, [r1, #6]
strh r0, [r5, #0x30]
strh r6, [r5, #0x32]
ldr r0, _08103E6C
str r0, [r5, #0x1c]
adds r2, r5, #0
adds r2, #0x3e
ldrb r0, [r2]
movs r1, #4
orrs r0, r1
strb r0, [r2]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08103E68: .4byte 0x020380BE
_08103E6C: .4byte 0x08103D8D
thumb_func_end sub_08103DDC
thumb_func_start sub_08103E70
sub_08103E70: @ 0x08103E70
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r1, _08103E9C
ldrh r0, [r1, #4]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #6]
strh r0, [r4, #0x30]
ldrh r0, [r1, #8]
strh r0, [r4, #0x38]
ldr r0, _08103EA0
str r0, [r4, #0x1c]
ldr r1, _08103EA4
adds r0, r4, #0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08103E9C: .4byte 0x020380BE
_08103EA0: .4byte 0x080A5D79
_08103EA4: .4byte 0x08103EA9
thumb_func_end sub_08103E70
thumb_func_start sub_08103EA8
sub_08103EA8: @ 0x08103EA8
push {lr}
ldrh r1, [r0, #0x30]
strh r1, [r0, #0x2e]
ldrh r1, [r0, #0x20]
strh r1, [r0, #0x32]
ldrh r1, [r0, #0x22]
adds r1, #0xf
strh r1, [r0, #0x36]
ldr r1, _08103EC8
str r1, [r0, #0x1c]
ldr r1, _08103ECC
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_08103EC8: .4byte 0x080A67B5
_08103ECC: .4byte 0x08103ED1
thumb_func_end sub_08103EA8
thumb_func_start sub_08103ED0
sub_08103ED0: @ 0x08103ED0
push {lr}
adds r1, r0, #0
ldrh r2, [r1, #0x38]
movs r3, #0x38
ldrsh r0, [r1, r3]
cmp r0, #0
bne _08103EE6
adds r0, r1, #0
bl DestroyAnimSprite
b _08103EEA
_08103EE6:
subs r0, r2, #1
strh r0, [r1, #0x38]
_08103EEA:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08103ED0
thumb_func_start AnimTask_Withdraw
AnimTask_Withdraw: @ 0x08103EF0
push {r4, lr}
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldr r1, _08103F1C
ldr r0, _08103F20
ldrb r0, [r0]
adds r0, r0, r1
ldrb r0, [r0]
movs r1, #0
bl PrepareBattlerSpriteForRotScale
ldr r1, _08103F24
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r1
ldr r1, _08103F28
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08103F1C: .4byte 0x02023E88
_08103F20: .4byte 0x020380D6
_08103F24: .4byte 0x03005B60
_08103F28: .4byte 0x08103F2D
thumb_func_end AnimTask_Withdraw
thumb_func_start AnimTask_WithdrawStep
AnimTask_WithdrawStep: @ 0x08103F2C
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r1, _08103F5C
ldr r0, _08103F60
ldrb r0, [r0]
adds r1, r0, r1
ldrb r4, [r1]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _08103F68
ldr r1, _08103F64
lsls r2, r5, #2
adds r0, r2, r5
lsls r0, r0, #3
adds r0, r0, r1
ldrh r0, [r0, #8]
rsbs r0, r0, #0
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
adds r6, r2, #0
b _08103F76
.align 2, 0
_08103F5C: .4byte 0x02023E88
_08103F60: .4byte 0x020380D6
_08103F64: .4byte 0x03005B60
_08103F68:
ldr r2, _08103FA8
lsls r1, r5, #2
adds r0, r1, r5
lsls r0, r0, #3
adds r0, r0, r2
ldrh r3, [r0, #8]
adds r6, r1, #0
_08103F76:
movs r2, #0x80
lsls r2, r2, #1
adds r0, r4, #0
adds r1, r2, #0
bl SetSpriteRotScale
ldr r1, _08103FA8
adds r0, r6, r5
lsls r0, r0, #3
adds r1, r0, r1
movs r2, #0xa
ldrsh r0, [r1, r2]
cmp r0, #0
bne _08103FB0
ldrh r0, [r1, #8]
adds r0, #0xb0
strh r0, [r1, #8]
ldr r1, _08103FAC
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
ldrh r1, [r0, #0x26]
adds r1, #1
b _08103FDA
.align 2, 0
_08103FA8: .4byte 0x03005B60
_08103FAC: .4byte 0x020205AC
_08103FB0:
cmp r0, #1
bne _08103FC6
ldrh r0, [r1, #0xe]
adds r0, #1
strh r0, [r1, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x1e
bne _08104020
movs r0, #2
b _0810401E
_08103FC6:
ldrh r0, [r1, #8]
subs r0, #0xb0
strh r0, [r1, #8]
ldr r1, _08104014
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
ldrh r1, [r0, #0x26]
subs r1, #1
_08103FDA:
strh r1, [r0, #0x26]
adds r0, r4, #0
bl SetBattlerSpriteYOffsetFromRotation
ldr r0, _08104018
adds r1, r6, r5
lsls r1, r1, #3
adds r1, r1, r0
movs r3, #8
ldrsh r2, [r1, r3]
movs r0, #0xf2
lsls r0, r0, #4
cmp r2, r0
beq _08103FFA
cmp r2, #0
bne _08104020
_08103FFA:
ldrh r2, [r1, #0xa]
movs r3, #0xa
ldrsh r0, [r1, r3]
cmp r0, #2
bne _0810401C
adds r0, r4, #0
bl ResetSpriteRotScale
adds r0, r5, #0
bl DestroyAnimVisualTask
b _08104020
.align 2, 0
_08104014: .4byte 0x020205AC
_08104018: .4byte 0x03005B60
_0810401C:
adds r0, r2, #1
_0810401E:
strh r0, [r1, #0xa]
_08104020:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end AnimTask_WithdrawStep
thumb_func_start Anim_KinesisZapEnergy
Anim_KinesisZapEnergy: @ 0x08104028
push {r4, r5, lr}
adds r4, r0, #0
bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _0810404C
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08104054
ldr r0, _08104050
ldrh r1, [r4, #0x20]
ldrh r2, [r0]
subs r1, r1, r2
strh r1, [r4, #0x20]
adds r5, r0, #0
b _08104060
.align 2, 0
_0810404C: .4byte 0x020380D6
_08104050: .4byte 0x020380BE
_08104054:
ldr r1, _08104094
ldrh r0, [r1]
ldrh r2, [r4, #0x20]
adds r0, r0, r2
strh r0, [r4, #0x20]
adds r5, r1, #0
_08104060:
ldrh r0, [r5, #2]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
ldr r0, _08104098
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810409C
adds r3, r4, #0
adds r3, #0x3f
ldrb r0, [r3]
movs r1, #1
adds r2, r0, #0
orrs r2, r1
strb r2, [r3]
movs r1, #4
ldrsh r0, [r5, r1]
cmp r0, #0
beq _081040B0
movs r0, #2
orrs r2, r0
strb r2, [r3]
b _081040B0
.align 2, 0
_08104094: .4byte 0x020380BE
_08104098: .4byte 0x020380D6
_0810409C:
movs r2, #4
ldrsh r0, [r5, r2]
cmp r0, #0
beq _081040B0
adds r2, r4, #0
adds r2, #0x3f
ldrb r0, [r2]
movs r1, #2
orrs r0, r1
strb r0, [r2]
_081040B0:
ldr r0, _081040C4
str r0, [r4, #0x1c]
ldr r1, _081040C8
adds r0, r4, #0
bl StoreSpriteCallbackInData6
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081040C4: .4byte 0x080A60A1
_081040C8: .4byte 0x080A34C5
thumb_func_end Anim_KinesisZapEnergy
thumb_func_start Anim_SwordsDanceBlade
Anim_SwordsDanceBlade: @ 0x081040CC
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
ldr r0, _081040E8
str r0, [r4, #0x1c]
ldr r1, _081040EC
adds r0, r4, #0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081040E8: .4byte 0x080A6085
_081040EC: .4byte 0x081040F1
thumb_func_end Anim_SwordsDanceBlade
thumb_func_start Anim_SwordsDanceBladeStep
Anim_SwordsDanceBladeStep: @ 0x081040F0
push {lr}
movs r1, #6
strh r1, [r0, #0x2e]
ldrh r1, [r0, #0x20]
strh r1, [r0, #0x32]
ldrh r1, [r0, #0x22]
subs r1, #0x20
strh r1, [r0, #0x36]
ldr r1, _08104110
str r1, [r0, #0x1c]
ldr r1, _08104114
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_08104110: .4byte 0x080A67B5
_08104114: .4byte 0x080A34C5
thumb_func_end Anim_SwordsDanceBladeStep
thumb_func_start AnimSonicBoomProjectile
AnimSonicBoomProjectile: @ 0x08104118
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r5, r0, #0
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
beq _0810413C
ldr r1, _08104138
ldrh r0, [r1, #4]
rsbs r0, r0, #0
strh r0, [r1, #4]
b _0810415E
.align 2, 0
_08104138: .4byte 0x020380BE
_0810413C:
ldr r0, _08104204
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810415E
ldr r1, _08104208
ldrh r0, [r1, #4]
rsbs r0, r0, #0
strh r0, [r1, #4]
ldrh r0, [r1, #2]
rsbs r0, r0, #0
strh r0, [r1, #2]
ldrh r0, [r1, #6]
rsbs r0, r0, #0
strh r0, [r1, #6]
_0810415E:
adds r0, r5, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r4, _0810420C
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r6, _08104208
lsrs r0, r0, #0x18
ldrh r1, [r6, #4]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r2, [r6, #6]
adds r0, r0, r2
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r7, r0, #0
ldrh r1, [r5, #0x20]
mov r2, r8
lsls r0, r2, #0x10
asrs r0, r0, #0x10
subs r0, r0, r1
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldrh r2, [r5, #0x22]
lsls r1, r7, #0x10
asrs r1, r1, #0x10
subs r1, r1, r2
lsls r1, r1, #0x10
asrs r1, r1, #0x10
bl ArcTan2Neg
lsls r0, r0, #0x10
movs r1, #0xf0
lsls r1, r1, #0x18
adds r0, r0, r1
lsrs r4, r0, #0x10
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
beq _081041D0
ldr r2, _08104210
adds r0, r4, r2
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_081041D0:
movs r3, #0x80
lsls r3, r3, #1
str r4, [sp]
adds r0, r5, #0
movs r1, #0
adds r2, r3, #0
bl TrySetSpriteRotScale
ldrh r0, [r6, #8]
strh r0, [r5, #0x2e]
mov r0, r8
strh r0, [r5, #0x32]
strh r7, [r5, #0x36]
ldr r0, _08104214
str r0, [r5, #0x1c]
ldr r1, _08104218
adds r0, r5, #0
bl StoreSpriteCallbackInData6
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104204: .4byte 0x020380D6
_08104208: .4byte 0x020380BE
_0810420C: .4byte 0x020380D7
_08104210: .4byte 0xFFFFA000
_08104214: .4byte 0x080A67B5
_08104218: .4byte 0x080A34C5
thumb_func_end AnimSonicBoomProjectile
thumb_func_start sub_0810421C
sub_0810421C: @ 0x0810421C
push {lr}
adds r3, r0, #0
ldrh r0, [r3, #0x2e]
subs r1, r0, #1
strh r1, [r3, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bgt _08104246
ldr r2, _0810424C
movs r0, #0x3c
ldrsh r1, [r3, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
adds r0, r0, r2
ldrh r1, [r0, #0xa]
subs r1, #1
strh r1, [r0, #0xa]
adds r0, r3, #0
bl DestroySprite
_08104246:
pop {r0}
bx r0
.align 2, 0
_0810424C: .4byte 0x03005B60
thumb_func_end sub_0810421C
thumb_func_start sub_08104250
sub_08104250: @ 0x08104250
push {r4, lr}
adds r2, r0, #0
movs r0, #0x3c
ldrsh r1, [r2, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ldr r1, _08104280
adds r4, r0, r1
movs r3, #0x2e
ldrsh r1, [r2, r3]
movs r3, #0x12
ldrsh r0, [r4, r3]
cmp r1, r0
ble _08104284
ldrh r0, [r2, #0x34]
ldrh r1, [r2, #0x38]
adds r0, r0, r1
strh r0, [r2, #0x38]
ldrh r0, [r2, #0x36]
ldrh r3, [r2, #0x3a]
adds r0, r0, r3
b _08104292
.align 2, 0
_08104280: .4byte 0x03005B60
_08104284:
ldrh r0, [r2, #0x38]
ldrh r1, [r2, #0x34]
subs r0, r0, r1
strh r0, [r2, #0x38]
ldrh r0, [r2, #0x3a]
ldrh r1, [r2, #0x36]
subs r0, r0, r1
_08104292:
strh r0, [r2, #0x3a]
ldrh r0, [r2, #0x38]
ldrh r1, [r2, #0x30]
adds r3, r0, r1
strh r3, [r2, #0x30]
ldrh r0, [r2, #0x3a]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
ldrh r1, [r4, #0x16]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _081042B6
lsls r0, r3, #0x10
lsrs r0, r0, #0x18
rsbs r0, r0, #0
b _081042BA
_081042B6:
lsls r0, r3, #0x10
lsrs r0, r0, #0x18
_081042BA:
strh r0, [r2, #0x24]
ldrh r1, [r4, #0x18]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _081042CE
ldrh r0, [r2, #0x32]
lsrs r0, r0, #8
rsbs r0, r0, #0
b _081042D2
_081042CE:
ldrh r0, [r2, #0x32]
lsrs r0, r0, #8
_081042D2:
strh r0, [r2, #0x26]
ldrh r0, [r2, #0x2e]
subs r1, r0, #1
strh r1, [r2, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bgt _081042E8
movs r0, #0x1e
strh r0, [r2, #0x2e]
ldr r0, _081042F0
str r0, [r2, #0x1c]
_081042E8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081042F0: .4byte 0x0810421D
thumb_func_end sub_08104250
thumb_func_start sub_081042F4
sub_081042F4: @ 0x081042F4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
movs r0, #0x3c
ldrsh r1, [r7, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ldr r1, _08104338
adds r6, r0, r1
ldrh r2, [r6, #0x16]
movs r1, #2
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
ldrh r3, [r7, #0x30]
adds r2, r0, r3
strh r2, [r7, #0x30]
ldrh r0, [r6, #0x18]
ands r1, r0
ldrh r0, [r7, #0x32]
adds r1, r1, r0
strh r1, [r7, #0x32]
ldrh r1, [r6, #0x16]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0810433C
lsls r0, r2, #0x10
lsrs r0, r0, #0x18
rsbs r0, r0, #0
b _08104340
.align 2, 0
_08104338: .4byte 0x03005B60
_0810433C:
lsls r0, r2, #0x10
lsrs r0, r0, #0x18
_08104340:
strh r0, [r7, #0x24]
ldrh r1, [r6, #0x18]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08104354
ldrh r0, [r7, #0x32]
lsrs r0, r0, #8
rsbs r0, r0, #0
b _08104358
_08104354:
ldrh r0, [r7, #0x32]
lsrs r0, r0, #8
_08104358:
strh r0, [r7, #0x26]
ldrh r0, [r7, #0x2e]
subs r1, r0, #1
strh r1, [r7, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bgt _08104424
movs r4, #0
movs r0, #8
strh r0, [r7, #0x2e]
movs r0, #4
strh r0, [r6, #0x12]
movs r0, #0x80
lsls r0, r0, #5
bl sub_08151600
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldrh r0, [r7, #0x24]
ldrh r1, [r7, #0x20]
adds r2, r0, r1
strh r2, [r7, #0x20]
ldrh r0, [r7, #0x26]
ldrh r3, [r7, #0x22]
adds r0, r0, r3
strh r0, [r7, #0x22]
strh r4, [r7, #0x26]
strh r4, [r7, #0x24]
ldrh r3, [r6, #0x1e]
movs r0, #0x1e
ldrsh r1, [r6, r0]
lsls r0, r2, #0x10
asrs r0, r0, #0x10
cmp r1, r0
blt _081043A2
subs r0, r3, r2
b _081043A4
_081043A2:
subs r0, r2, r3
_081043A4:
lsls r0, r0, #0x18
lsrs r4, r0, #0x10
ldrh r3, [r6, #0x20]
movs r0, #0x20
ldrsh r1, [r6, r0]
ldrh r2, [r7, #0x22]
movs r6, #0x22
ldrsh r0, [r7, r6]
cmp r1, r0
blt _081043BC
subs r0, r3, r2
b _081043BE
_081043BC:
subs r0, r2, r3
_081043BE:
lsls r0, r0, #0x18
lsrs r0, r0, #0x10
mov r8, r0
movs r0, #0
strh r0, [r7, #0x32]
strh r0, [r7, #0x30]
strh r0, [r7, #0x3a]
strh r0, [r7, #0x38]
lsls r0, r4, #0x10
asrs r0, r0, #0x10
lsls r5, r5, #0x10
asrs r5, r5, #0x10
adds r1, r5, #0
bl sub_08151510
adds r4, r0, #0
lsls r4, r4, #0x10
asrs r4, r4, #0x10
movs r6, #0xe0
lsls r6, r6, #1
adds r0, r6, #0
bl sub_08151600
adds r1, r0, #0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r0, r4, #0
bl sub_08151510
strh r0, [r7, #0x34]
mov r1, r8
lsls r0, r1, #0x10
asrs r0, r0, #0x10
adds r1, r5, #0
bl sub_08151510
adds r4, r0, #0
lsls r4, r4, #0x10
asrs r4, r4, #0x10
adds r0, r6, #0
bl sub_08151600
adds r1, r0, #0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r0, r4, #0
bl sub_08151510
strh r0, [r7, #0x36]
ldr r0, _08104430
str r0, [r7, #0x1c]
_08104424:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104430: .4byte 0x08104251
thumb_func_end sub_081042F4
thumb_func_start sub_08104434
sub_08104434: @ 0x08104434
push {lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r1, _08104458
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
adds r0, r0, r1
movs r1, #0xa
ldrsh r0, [r0, r1]
cmp r0, #0
bne _08104452
adds r0, r2, #0
bl DestroyAnimVisualTask
_08104452:
pop {r0}
bx r0
.align 2, 0
_08104458: .4byte 0x03005B60
thumb_func_end sub_08104434
thumb_func_start sub_0810445C
sub_0810445C: @ 0x0810445C
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
ldr r1, _081044B0
lsls r0, r7, #2
adds r0, r0, r7
lsls r0, r0, #3
adds r5, r0, r1
ldrh r0, [r5, #8]
subs r1, r0, #1
strh r1, [r5, #8]
lsls r0, r0, #0x10
cmp r0, #0
bgt _08104530
ldr r0, _081044B4
movs r2, #0x1a
ldrsh r1, [r5, r2]
movs r3, #0x1c
ldrsh r2, [r5, r3]
ldrb r3, [r5, #0xc]
ldrb r4, [r5, #0xa]
subs r3, r3, r4
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
bl CreateSprite
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov ip, r0
lsls r0, r0, #4
add r0, ip
lsls r0, r0, #2
ldr r1, _081044B8
adds r6, r0, r1
movs r1, #0x10
ldrsh r0, [r5, r1]
cmp r0, #1
beq _081044BC
cmp r0, #2
beq _081044D2
b _081044E0
.align 2, 0
_081044B0: .4byte 0x03005B60
_081044B4: .4byte 0x0856EF94
_081044B8: .4byte 0x020205AC
_081044BC:
ldrb r2, [r6, #3]
lsls r1, r2, #0x1a
lsrs r1, r1, #0x1b
movs r0, #0x18
orrs r1, r0
lsls r1, r1, #1
subs r0, #0x57
ands r0, r2
orrs r0, r1
strb r0, [r6, #3]
b _081044E0
_081044D2:
ldrb r0, [r6, #3]
movs r1, #0x3f
rsbs r1, r1, #0
ands r1, r0
movs r0, #0x10
orrs r1, r0
strb r1, [r6, #3]
_081044E0:
ldr r3, _08104538
lsls r2, r7, #2
adds r2, r2, r7
lsls r2, r2, #3
adds r4, r2, r3
ldrh r0, [r4, #0x12]
ldrh r1, [r4, #0x14]
subs r0, r0, r1
strh r0, [r6, #0x2e]
strh r7, [r6, #0x3c]
movs r1, #0xa
ldrsh r0, [r4, r1]
adds r0, #0xd
lsls r0, r0, #1
adds r0, r0, r2
adds r3, #8
adds r0, r0, r3
mov r2, ip
strh r2, [r0]
ldrh r0, [r4, #0xe]
strh r0, [r4, #8]
ldrh r0, [r4, #0xa]
adds r0, #1
strh r0, [r4, #0xa]
movs r0, #0x3f
rsbs r0, r0, #0
bl BattleAnimAdjustPanning
adds r1, r0, #0
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r0, #0x9a
bl PlaySE12WithPanning
movs r3, #0xa
ldrsh r0, [r4, r3]
cmp r0, #2
ble _08104530
ldr r0, _0810453C
str r0, [r4]
_08104530:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104538: .4byte 0x03005B60
_0810453C: .4byte 0x08104435
thumb_func_end sub_0810445C
thumb_func_start sub_08104540
sub_08104540: @ 0x08104540
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
movs r0, #0
mov sb, r0
movs r5, #0
mov r0, sp
mov r1, sb
strh r1, [r0]
mov r4, sp
adds r4, #2
strh r1, [r4]
bl IsContest
lsls r0, r0, #0x18
mov sl, r4
cmp r0, #0
beq _081045AC
ldr r1, _0810459C
lsls r2, r7, #2
adds r0, r2, r7
lsls r0, r0, #3
adds r0, r0, r1
movs r1, #2
strh r1, [r0, #0x10]
ldr r3, _081045A0
ldrh r0, [r3]
rsbs r0, r0, #0
strh r0, [r3]
ldrh r1, [r3, #4]
movs r0, #1
ands r0, r1
mov r8, r2
cmp r0, #0
beq _081045A4
movs r0, #2
rsbs r0, r0, #0
ands r0, r1
strh r0, [r3, #4]
b _08104606
.align 2, 0
_0810459C: .4byte 0x03005B60
_081045A0: .4byte 0x020380BE
_081045A4:
movs r0, #1
orrs r0, r1
strh r0, [r3, #4]
b _08104606
_081045AC:
ldr r1, _081045F0
ldr r0, _081045F4
ldrb r0, [r0]
adds r0, r0, r1
ldrb r1, [r0]
movs r3, #1
adds r0, r3, #0
ands r0, r1
lsls r2, r7, #2
mov r8, r2
cmp r0, #0
bne _08104606
ldr r1, _081045F8
adds r0, r2, r7
lsls r0, r0, #3
adds r0, r0, r1
strh r3, [r0, #0x10]
ldr r2, _081045FC
ldrh r0, [r2]
rsbs r0, r0, #0
strh r0, [r2]
ldrh r0, [r2, #2]
rsbs r0, r0, #0
strh r0, [r2, #2]
ldrh r1, [r2, #4]
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08104600
movs r0, #2
rsbs r0, r0, #0
ands r0, r1
b _08104604
.align 2, 0
_081045F0: .4byte 0x02023D1A
_081045F4: .4byte 0x020380D7
_081045F8: .4byte 0x03005B60
_081045FC: .4byte 0x020380BE
_08104600:
movs r0, #1
orrs r0, r1
_08104604:
strh r0, [r2, #4]
_08104606:
ldr r5, _08104660
ldrb r0, [r5]
movs r1, #0
bl GetBattlerSpriteCoord
ldr r1, _08104664
mov r3, r8
adds r4, r3, r7
lsls r4, r4, #3
adds r4, r4, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x1a]
adds r6, r0, #0
ldrb r0, [r5]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x1c]
mov sb, r0
ldr r0, _08104668
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08104670
ldr r4, _0810466C
ldrb r1, [r4]
movs r0, #2
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08104670
ldrb r0, [r4]
movs r1, #0
mov r2, sp
mov r3, sl
bl SetAverageBattlerPositions
b _08104692
.align 2, 0
_08104660: .4byte 0x020380D6
_08104664: .4byte 0x03005B60
_08104668: .4byte 0x02022C90
_0810466C: .4byte 0x020380D7
_08104670:
mov r5, sp
ldr r4, _081046CC
ldrb r0, [r4]
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5]
ldrb r0, [r4]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sl
strh r0, [r1]
_08104692:
mov r4, sp
ldr r0, _081046D0
mov r2, r8
adds r1, r2, r7
lsls r1, r1, #3
adds r1, r1, r0
mov r2, sp
ldr r3, _081046D4
ldrh r0, [r3]
ldrh r2, [r2]
adds r0, r0, r2
strh r0, [r1, #0x1e]
strh r0, [r4]
ldrh r0, [r3, #2]
mov r3, sl
ldrh r3, [r3]
adds r0, r0, r3
strh r0, [r1, #0x20]
mov r1, sl
strh r0, [r1]
mov r0, sp
ldrh r2, [r0]
movs r3, #0
ldrsh r0, [r0, r3]
adds r1, r6, #0
cmp r0, r1
blt _081046D8
subs r0, r2, r1
b _081046DA
.align 2, 0
_081046CC: .4byte 0x020380D7
_081046D0: .4byte 0x03005B60
_081046D4: .4byte 0x020380BE
_081046D8:
subs r0, r1, r2
_081046DA:
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r4, r0, #0x10
asrs r4, r4, #0x10
ldr r5, _08104750
ldrh r1, [r5, #4]
movs r0, #2
rsbs r0, r0, #0
ands r0, r1
lsls r0, r0, #0x10
asrs r0, r0, #0x10
bl sub_08151600
adds r1, r0, #0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r0, r4, #0
bl sub_08151510
ldr r2, _08104754
mov r3, r8
adds r1, r3, r7
lsls r1, r1, #3
adds r6, r1, r2
strh r0, [r6, #0x12]
movs r1, #0x12
ldrsh r0, [r6, r1]
movs r1, #0x80
bl sub_08151510
strh r0, [r6, #0x14]
ldrh r0, [r5, #4]
strh r0, [r6, #0x16]
mov r2, sl
ldrh r1, [r2]
movs r3, #0
ldrsh r0, [r2, r3]
mov r4, sb
cmp r0, r4
blt _08104758
subs r4, r1, r4
lsls r4, r4, #0x10
asrs r4, r4, #0x10
movs r1, #0x12
ldrsh r0, [r6, r1]
bl sub_08151600
adds r1, r0, #0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r0, r4, #0
bl sub_08151510
movs r1, #2
rsbs r1, r1, #0
ands r1, r0
strh r1, [r6, #0x18]
b _08104778
.align 2, 0
_08104750: .4byte 0x020380BE
_08104754: .4byte 0x03005B60
_08104758:
subs r4, r4, r1
lsls r4, r4, #0x10
asrs r4, r4, #0x10
movs r2, #0x12
ldrsh r0, [r6, r2]
bl sub_08151600
adds r1, r0, #0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r0, r4, #0
bl sub_08151510
movs r1, #1
orrs r0, r1
strh r0, [r6, #0x18]
_08104778:
ldr r1, _081047B8
mov r3, r8
adds r0, r3, r7
lsls r0, r0, #3
adds r5, r0, r1
ldr r4, _081047BC
ldrh r0, [r4, #6]
strh r0, [r5, #0xe]
ldrh r1, [r4, #8]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _081047C8
movs r0, #0x80
eors r0, r1
strh r0, [r4, #8]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x3f
ble _081047F0
ldr r0, _081047C0
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _081047C4
adds r1, r2, #0
ldrh r4, [r4, #8]
adds r1, r1, r4
adds r0, r0, r1
b _08104800
.align 2, 0
_081047B8: .4byte 0x03005B60
_081047BC: .4byte 0x020380BE
_081047C0: .4byte 0x020380D7
_081047C4: .4byte 0x0000FFC0
_081047C8:
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r0, #0x3f
ble _081047F0
ldr r0, _081047E8
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r3, _081047EC
adds r1, r3, #0
ldrh r4, [r4, #8]
adds r1, r1, r4
adds r0, r0, r1
b _08104800
.align 2, 0
_081047E8: .4byte 0x020380D7
_081047EC: .4byte 0x0000FFC0
_081047F0:
ldr r0, _0810482C
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #8]
subs r0, r0, r1
_08104800:
strh r0, [r5, #0xc]
ldr r0, _08104830
mov r2, r8
adds r1, r2, r7
lsls r1, r1, #3
adds r1, r1, r0
movs r3, #0xc
ldrsh r0, [r1, r3]
cmp r0, #2
bgt _08104818
movs r0, #3
strh r0, [r1, #0xc]
_08104818:
ldr r0, _08104834
str r0, [r1]
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810482C: .4byte 0x020380D7
_08104830: .4byte 0x03005B60
_08104834: .4byte 0x0810445D
thumb_func_end sub_08104540
thumb_func_start sub_08104838
sub_08104838: @ 0x08104838
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
ldr r0, _08104860
ldrh r0, [r0, #2]
bl IndexOfSpritePaletteTag
lsls r0, r0, #0x18
lsrs r0, r0, #0x14
movs r1, #0x80
lsls r1, r1, #1
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldr r0, _08104864
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104860: .4byte 0x0856F084
_08104864: .4byte 0x08104869
thumb_func_end sub_08104838
thumb_func_start sub_08104868
sub_08104868: @ 0x08104868
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x30]
adds r0, #1
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #2
bne _081048CC
movs r0, #0
strh r0, [r4, #0x30]
ldrh r5, [r4, #0x2e]
ldr r1, _081048D4
adds r0, r5, #0
adds r0, #8
lsls r0, r0, #1
adds r0, r0, r1
ldrh r7, [r0]
adds r6, r1, #0
adds r1, r5, #0
adds r1, #9
lsls r0, r5, #1
adds r0, r0, r6
adds r2, r0, #0
adds r2, #0x10
movs r3, #7
lsls r1, r1, #1
adds r1, r1, r6
_081048A0:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
subs r3, #1
cmp r3, #0
bge _081048A0
adds r0, r5, #0
adds r0, #0xf
lsls r0, r0, #1
adds r0, r0, r6
strh r7, [r0]
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x18
bne _081048CC
adds r0, r4, #0
bl DestroyAnimSprite
_081048CC:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_081048D4: .4byte 0x020377B4
thumb_func_end sub_08104868
thumb_func_start sub_081048D8
sub_081048D8: @ 0x081048D8
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r5, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r4, _08104978
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _0810497C
lsrs r0, r0, #0x18
ldrh r1, [r4, #6]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
ldr r0, _08104980
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810491C
ldrh r0, [r4, #4]
rsbs r0, r0, #0
strh r0, [r4, #4]
_0810491C:
lsls r0, r6, #0x10
asrs r0, r0, #0x10
ldrh r1, [r4, #4]
adds r0, r0, r1
lsls r0, r0, #0x10
ldrh r1, [r5, #0x20]
lsrs r6, r0, #0x10
asrs r0, r0, #0x10
subs r0, r0, r1
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldrh r2, [r5, #0x22]
lsls r1, r7, #0x10
asrs r1, r1, #0x10
subs r1, r1, r2
lsls r1, r1, #0x10
asrs r1, r1, #0x10
bl ArcTan2Neg
lsls r0, r0, #0x10
movs r1, #0xc0
lsls r1, r1, #0x18
adds r0, r0, r1
lsrs r0, r0, #0x10
movs r3, #0x80
lsls r3, r3, #1
str r0, [sp]
adds r0, r5, #0
movs r1, #0
adds r2, r3, #0
bl TrySetSpriteRotScale
ldrh r0, [r4, #8]
strh r0, [r5, #0x2e]
strh r6, [r5, #0x32]
strh r7, [r5, #0x36]
ldr r0, _08104984
str r0, [r5, #0x1c]
ldr r1, _08104988
adds r0, r5, #0
bl StoreSpriteCallbackInData6
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104978: .4byte 0x020380D7
_0810497C: .4byte 0x020380BE
_08104980: .4byte 0x020380D6
_08104984: .4byte 0x080A68C9
_08104988: .4byte 0x080A34C5
thumb_func_end sub_081048D8
thumb_func_start sub_0810498C
sub_0810498C: @ 0x0810498C
ldr r1, _0810499C
strh r1, [r0, #0x32]
ldrh r1, [r0, #0x22]
adds r1, #8
strh r1, [r0, #0x22]
ldr r1, _081049A0
str r1, [r0, #0x1c]
bx lr
.align 2, 0
_0810499C: .4byte 0x0000FFF0
_081049A0: .4byte 0x081049A5
thumb_func_end sub_0810498C
thumb_func_start sub_081049A4
sub_081049A4: @ 0x081049A4
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x2e]
adds r0, #0x80
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x24]
ldr r0, _08104A10
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _081049C8
ldrh r0, [r4, #0x24]
rsbs r0, r0, #0
strh r0, [r4, #0x24]
_081049C8:
movs r1, #0x30
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x30]
adds r0, #5
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x7e
ble _08104A08
movs r0, #0
strh r0, [r4, #0x30]
movs r1, #0x32
ldrsh r0, [r4, r1]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r4, #0x32]
ldrh r0, [r4, #0x34]
adds r0, #1
strh r0, [r4, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #2
bne _08104A08
adds r0, r4, #0
bl DestroyAnimSprite
_08104A08:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104A10: .4byte 0x020380D6
thumb_func_end sub_081049A4
thumb_func_start sub_08104A14
sub_08104A14: @ 0x08104A14
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
movs r0, #0x14
strh r0, [r4, #0x2e]
ldr r5, _08104A60
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x32]
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x36]
ldr r0, _08104A64
str r0, [r4, #0x1c]
adds r2, r4, #0
adds r2, #0x2c
ldrb r0, [r2]
movs r1, #0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08104A68
adds r0, r4, #0
bl StoreSpriteCallbackInData6
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08104A60: .4byte 0x020380D7
_08104A64: .4byte 0x080A67B5
_08104A68: .4byte 0x08104A6D
thumb_func_end sub_08104A14
thumb_func_start sub_08104A6C
sub_08104A6C: @ 0x08104A6C
push {r4, lr}
adds r4, r0, #0
movs r0, #0x3f
bl BattleAnimAdjustPanning
adds r1, r0, #0
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r0, #0xa6
bl PlaySE12WithPanning
ldrh r0, [r4, #0x24]
ldrh r1, [r4, #0x20]
adds r0, r0, r1
movs r1, #0
strh r0, [r4, #0x20]
ldrh r0, [r4, #0x26]
ldrh r2, [r4, #0x22]
adds r0, r0, r2
strh r0, [r4, #0x22]
strh r1, [r4, #0x26]
strh r1, [r4, #0x24]
movs r2, #0
movs r1, #7
adds r0, r4, #0
adds r0, #0x3c
_08104AA0:
strh r2, [r0]
subs r0, #2
subs r1, #1
cmp r1, #0
bge _08104AA0
bl Random2
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #7
ands r0, r1
ldr r2, _08104AE8
adds r1, r2, #0
subs r1, r1, r0
strh r1, [r4, #0x3a]
bl Random2
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0xa0
bl __umodsi3
adds r0, #0xa0
strh r0, [r4, #0x3c]
ldr r0, _08104AEC
str r0, [r4, #0x1c]
adds r2, r4, #0
adds r2, #0x2c
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104AE8: .4byte 0x0000FFF4
_08104AEC: .4byte 0x08104AF1
thumb_func_end sub_08104A6C
thumb_func_start sub_08104AF0
sub_08104AF0: @ 0x08104AF0
push {r4, lr}
adds r4, r0, #0
ldrh r1, [r4, #0x3c]
ldrh r2, [r4, #0x2e]
adds r0, r1, r2
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r2, r0, #0x18
strh r2, [r4, #0x24]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08104B0E
rsbs r0, r2, #0
strh r0, [r4, #0x24]
_08104B0E:
movs r1, #0x30
ldrsh r0, [r4, r1]
movs r2, #0x3a
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x30]
adds r0, #8
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x7e
ble _08104B4E
movs r0, #0
strh r0, [r4, #0x30]
movs r1, #0x32
ldrsh r0, [r4, r1]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r4, #0x32]
ldrh r0, [r4, #0x34]
adds r0, #1
strh r0, [r4, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
bne _08104B4E
adds r0, r4, #0
bl DestroyAnimSprite
_08104B4E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_08104AF0
thumb_func_start Anim_RazorWindTornado
Anim_RazorWindTornado: @ 0x08104B54
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
ldr r0, _08104BA4
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _08104B72
ldrh r0, [r4, #0x22]
adds r0, #0x10
strh r0, [r4, #0x22]
_08104B72:
ldr r1, _08104BA8
ldrh r0, [r1, #8]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #4]
strh r0, [r4, #0x30]
ldrh r0, [r1, #0xa]
strh r0, [r4, #0x32]
ldrh r0, [r1, #0xc]
strh r0, [r4, #0x34]
ldrh r0, [r1, #6]
strh r0, [r4, #0x36]
ldr r0, _08104BAC
str r0, [r4, #0x1c]
ldr r1, _08104BB0
adds r0, r4, #0
bl StoreSpriteCallbackInData6
ldr r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104BA4: .4byte 0x020380D6
_08104BA8: .4byte 0x020380BE
_08104BAC: .4byte 0x080A5BB5
_08104BB0: .4byte 0x080A34C5
thumb_func_end Anim_RazorWindTornado
thumb_func_start Anim_ViceGripPincer
Anim_ViceGripPincer: @ 0x08104BB4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
movs r7, #0x20
ldr r4, _08104C30
movs r0, #0x10
mov r8, r0
ldr r6, _08104C34
ldr r0, _08104C38
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
beq _08104BE0
adds r7, r4, #0
movs r4, #0x20
mov r8, r6
movs r6, #0x10
adds r0, r5, #0
movs r1, #1
bl StartSpriteAnim
_08104BE0:
lsls r0, r7, #0x10
asrs r0, r0, #0x10
ldrh r1, [r5, #0x20]
adds r0, r0, r1
strh r0, [r5, #0x20]
lsls r0, r4, #0x10
asrs r0, r0, #0x10
ldrh r1, [r5, #0x22]
adds r0, r0, r1
strh r0, [r5, #0x22]
movs r0, #6
strh r0, [r5, #0x2e]
ldr r4, _08104C3C
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
add r0, r8
strh r0, [r5, #0x32]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, r0, r6
strh r0, [r5, #0x36]
ldr r0, _08104C40
str r0, [r5, #0x1c]
ldr r1, _08104C44
adds r0, r5, #0
bl StoreSpriteCallbackInData6
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104C30: .4byte 0x0000FFE0
_08104C34: .4byte 0x0000FFF0
_08104C38: .4byte 0x020380BE
_08104C3C: .4byte 0x020380D7
_08104C40: .4byte 0x080A67B5
_08104C44: .4byte 0x08104C49
thumb_func_end Anim_ViceGripPincer
thumb_func_start Anim_ViceGripPincerStep
Anim_ViceGripPincerStep: @ 0x08104C48
push {lr}
adds r2, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08104C5E
adds r0, r2, #0
bl DestroyAnimSprite
_08104C5E:
pop {r0}
bx r0
.align 2, 0
thumb_func_end Anim_ViceGripPincerStep
thumb_func_start Anim_GuillotinePincer
Anim_GuillotinePincer: @ 0x08104C64
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r5, r0, #0
movs r0, #0x20
mov r8, r0
ldr r4, _08104CF8
movs r2, #0x10
mov sb, r2
ldr r6, _08104CFC
ldr r7, _08104D00
ldrh r1, [r7]
movs r2, #0
ldrsh r0, [r7, r2]
cmp r0, #0
beq _08104C98
mov r8, r4
movs r4, #0x20
mov sb, r6
movs r6, #0x10
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r5, #0
bl StartSpriteAnim
_08104C98:
mov r0, r8
lsls r1, r0, #0x10
asrs r1, r1, #0x10
ldrh r2, [r5, #0x20]
adds r1, r1, r2
strh r1, [r5, #0x20]
lsls r0, r4, #0x10
asrs r0, r0, #0x10
ldrh r2, [r5, #0x22]
adds r0, r0, r2
strh r0, [r5, #0x22]
movs r0, #6
strh r0, [r5, #0x2e]
strh r1, [r5, #0x30]
ldr r4, _08104D04
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
add r0, sb
strh r0, [r5, #0x32]
ldrh r0, [r5, #0x22]
strh r0, [r5, #0x34]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, r0, r6
strh r0, [r5, #0x36]
adds r0, r5, #0
bl InitAnimLinearTranslation
ldrh r0, [r7]
strh r0, [r5, #0x38]
ldrh r0, [r5, #0x2e]
strh r0, [r5, #0x3a]
ldr r0, _08104D08
str r0, [r5, #0x1c]
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08104CF8: .4byte 0x0000FFE0
_08104CFC: .4byte 0x0000FFF0
_08104D00: .4byte 0x020380BE
_08104D04: .4byte 0x020380D7
_08104D08: .4byte 0x08104D0D
thumb_func_end Anim_GuillotinePincer
thumb_func_start Anim_GuillotinePincerStep1
Anim_GuillotinePincerStep1: @ 0x08104D0C
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
beq _08104D70
adds r0, r4, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08104D70
adds r0, r4, #0
movs r1, #0
bl SeekSpriteAnim
adds r2, r4, #0
adds r2, #0x2c
ldrb r0, [r2]
movs r1, #0x40
orrs r0, r1
strb r0, [r2]
ldrh r0, [r4, #0x24]
ldrh r1, [r4, #0x20]
adds r0, r0, r1
movs r2, #0
strh r0, [r4, #0x20]
ldrh r0, [r4, #0x26]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
movs r0, #2
strh r0, [r4, #0x24]
ldr r0, _08104D78
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x3a]
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x30]
movs r1, #1
eors r0, r1
strh r0, [r4, #0x30]
ldrh r0, [r4, #0x32]
eors r0, r1
strh r0, [r4, #0x32]
strh r2, [r4, #0x36]
strh r2, [r4, #0x34]
ldr r0, _08104D7C
str r0, [r4, #0x1c]
_08104D70:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104D78: .4byte 0x0000FFFE
_08104D7C: .4byte 0x08104D81
thumb_func_end Anim_GuillotinePincerStep1
thumb_func_start Anim_GuillotinePincerStep2
Anim_GuillotinePincerStep2: @ 0x08104D80
push {r4, lr}
adds r4, r0, #0
movs r1, #0x34
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08104D98
ldrh r0, [r4, #0x24]
rsbs r0, r0, #0
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x26]
rsbs r0, r0, #0
strh r0, [r4, #0x26]
_08104D98:
ldrh r0, [r4, #0x34]
movs r1, #1
eors r0, r1
movs r1, #0
strh r0, [r4, #0x34]
ldrh r0, [r4, #0x36]
adds r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x33
bne _08104DDA
strh r1, [r4, #0x26]
strh r1, [r4, #0x24]
strh r1, [r4, #0x36]
strh r1, [r4, #0x34]
adds r2, r4, #0
adds r2, #0x2c
ldrb r1, [r2]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldrh r0, [r4, #0x38]
movs r1, #1
eors r1, r0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r4, #0
bl StartSpriteAnim
ldr r0, _08104DE0
str r0, [r4, #0x1c]
_08104DDA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08104DE0: .4byte 0x08104DE5
thumb_func_end Anim_GuillotinePincerStep2
thumb_func_start Anim_GuillotinePincerStep3
Anim_GuillotinePincerStep3: @ 0x08104DE4
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
beq _08104DF8
adds r0, r4, #0
bl DestroyAnimSprite
_08104DF8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end Anim_GuillotinePincerStep3
thumb_func_start AnimTask_GrowAndGreyscale
AnimTask_GrowAndGreyscale: @ 0x08104E00
push {r4, r5, lr}
adds r5, r0, #0
lsls r5, r5, #0x18
lsrs r5, r5, #0x18
movs r0, #1
bl GetAnimBattlerSpriteId
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
movs r1, #1
bl PrepareBattlerSpriteForRotScale
adds r0, r4, #0
movs r1, #0xd0
movs r2, #0xd0
movs r3, #0
bl SetSpriteRotScale
ldr r1, _08104E58
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #5]
lsrs r0, r0, #4
adds r0, #0x10
movs r1, #0
bl SetGreyscaleOrOriginalPalette
ldr r1, _08104E5C
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r1
movs r1, #0x50
strh r1, [r0, #8]
ldr r1, _08104E60
str r1, [r0]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08104E58: .4byte 0x020205AC
_08104E5C: .4byte 0x03005B60
_08104E60: .4byte 0x08104E65
thumb_func_end AnimTask_GrowAndGreyscale
thumb_func_start AnimTask_GrowAndGreyscaleStep
AnimTask_GrowAndGreyscaleStep: @ 0x08104E64
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r1, _08104EBC
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r1
ldrh r1, [r0, #8]
subs r1, #1
strh r1, [r0, #8]
lsls r1, r1, #0x10
asrs r1, r1, #0x10
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _08104EB4
movs r0, #1
bl GetAnimBattlerSpriteId
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
bl ResetSpriteRotScale
ldr r1, _08104EC0
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #5]
lsrs r0, r0, #4
adds r0, #0x10
movs r1, #1
bl SetGreyscaleOrOriginalPalette
adds r0, r5, #0
bl DestroyAnimVisualTask
_08104EB4:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08104EBC: .4byte 0x03005B60
_08104EC0: .4byte 0x020205AC
thumb_func_end AnimTask_GrowAndGreyscaleStep
thumb_func_start AnimTask_Minimize
AnimTask_Minimize: @ 0x08104EC4
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _08104F10
adds r4, r4, r0
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r5, #0
strh r0, [r4, #8]
movs r1, #0
bl PrepareBattlerSpriteForRotScale
strh r5, [r4, #0xa]
strh r5, [r4, #0xc]
strh r5, [r4, #0xe]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x10]
strh r5, [r4, #0x12]
strh r5, [r4, #0x14]
ldr r0, _08104F14
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x16]
ldr r0, _08104F18
str r0, [r4]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08104F10: .4byte 0x03005B60
_08104F14: .4byte 0x020380D6
_08104F18: .4byte 0x08104F1D
thumb_func_end AnimTask_Minimize
thumb_func_start AnimTask_MinimizeStep1
AnimTask_MinimizeStep1: @ 0x08104F1C
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
ldr r1, _08104F40
adds r4, r0, r1
movs r1, #0xa
ldrsh r0, [r4, r1]
cmp r0, #5
bls _08104F36
b _08105046
_08104F36:
lsls r0, r0, #2
ldr r1, _08104F44
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08104F40: .4byte 0x03005B60
_08104F44: .4byte 0x08104F48
_08104F48: @ jump table
.4byte _08104F60 @ case 0
.4byte _08104FA8 @ case 1
.4byte _08104FDE @ case 2
.4byte _08104FE4 @ case 3
.4byte _08104FF4 @ case 4
.4byte _08105028 @ case 5
_08104F60:
movs r2, #0xc
ldrsh r0, [r4, r2]
cmp r0, #0
beq _08104F70
cmp r0, #3
beq _08104F70
cmp r0, #6
bne _08104F78
_08104F70:
adds r0, r4, #0
adds r1, r5, #0
bl CreateMinimizeSprite
_08104F78:
ldrh r0, [r4, #0xc]
adds r0, #1
strh r0, [r4, #0xc]
ldrh r0, [r4, #0x10]
adds r0, #0x28
strh r0, [r4, #0x10]
ldrb r0, [r4, #8]
movs r1, #0x10
ldrsh r2, [r4, r1]
adds r1, r2, #0
movs r3, #0
bl SetSpriteRotScale
ldrb r0, [r4, #8]
bl SetBattlerSpriteYOffsetFromYScale
movs r2, #0xc
ldrsh r0, [r4, r2]
cmp r0, #0x20
bne _08105046
ldrh r0, [r4, #0x12]
adds r0, #1
strh r0, [r4, #0x12]
b _08105020
_08104FA8:
movs r1, #0x14
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08105046
movs r2, #0x12
ldrsh r1, [r4, r2]
cmp r1, #3
bne _08104FBE
strh r0, [r4, #0xc]
strh r1, [r4, #0xa]
b _08105046
_08104FBE:
strh r0, [r4, #0xc]
strh r0, [r4, #0xe]
movs r2, #0x80
lsls r2, r2, #1
strh r2, [r4, #0x10]
ldrb r0, [r4, #8]
adds r1, r2, #0
movs r3, #0
bl SetSpriteRotScale
ldrb r0, [r4, #8]
bl SetBattlerSpriteYOffsetFromYScale
movs r0, #2
strh r0, [r4, #0xa]
b _08105046
_08104FDE:
movs r0, #0
strh r0, [r4, #0xa]
b _08105046
_08104FE4:
ldrh r0, [r4, #0xc]
adds r0, #1
strh r0, [r4, #0xc]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x20
ble _08105046
b _0810501C
_08104FF4:
ldrh r0, [r4, #0xc]
adds r0, #2
strh r0, [r4, #0xc]
ldrh r0, [r4, #0x10]
subs r0, #0x50
strh r0, [r4, #0x10]
ldrb r0, [r4, #8]
movs r1, #0x10
ldrsh r2, [r4, r1]
adds r1, r2, #0
movs r3, #0
bl SetSpriteRotScale
ldrb r0, [r4, #8]
bl SetBattlerSpriteYOffsetFromYScale
movs r2, #0xc
ldrsh r0, [r4, r2]
cmp r0, #0x20
bne _08105046
_0810501C:
movs r0, #0
strh r0, [r4, #0xc]
_08105020:
ldrh r0, [r4, #0xa]
adds r0, #1
strh r0, [r4, #0xa]
b _08105046
_08105028:
ldrb r0, [r4, #8]
bl ResetSpriteRotScale
ldr r2, _0810504C
movs r0, #0x26
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
movs r1, #0
strh r1, [r0, #0x26]
adds r0, r5, #0
bl DestroyAnimVisualTask
_08105046:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810504C: .4byte 0x020205AC
thumb_func_end AnimTask_MinimizeStep1
thumb_func_start CreateMinimizeSprite
CreateMinimizeSprite: @ 0x08105050
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
mov sb, r1
movs r0, #0
bl CloneBattlerSpriteWithBlend
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
lsls r0, r0, #0x10
asrs r4, r0, #0x10
cmp r4, #0
blt _0810512A
bl AllocOamMatrix
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0xff
bne _08105094
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
ldr r1, _08105090
adds r0, r0, r1
bl obj_delete_but_dont_free_vram
b _0810512A
.align 2, 0
_08105090: .4byte 0x020205AC
_08105094:
ldr r5, _08105138
lsls r3, r4, #4
adds r3, r3, r4
lsls r3, r3, #2
adds r4, r3, r5
ldrb r1, [r4, #1]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #1]
adds r2, r4, #0
adds r2, #0x2c
ldrb r0, [r2]
movs r1, #0x80
orrs r0, r1
strb r0, [r2]
movs r0, #0x1f
ands r6, r0
lsls r2, r6, #1
ldrb r1, [r4, #3]
movs r0, #0x3f
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #3]
ldrb r0, [r7, #0x16]
ldrb r1, [r7, #0xe]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x43
strb r0, [r1]
ldrh r0, [r7, #0xe]
adds r0, #1
strh r0, [r7, #0xe]
ldrh r0, [r7, #0x14]
adds r0, #1
strh r0, [r7, #0x14]
movs r0, #0x10
strh r0, [r4, #0x2e]
mov r0, sb
strh r0, [r4, #0x30]
movs r0, #6
strh r0, [r4, #0x32]
adds r5, #0x1c
adds r3, r3, r5
ldr r0, _0810513C
str r0, [r3]
mov r1, r8
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
movs r1, #0x10
ldrsh r2, [r7, r1]
adds r1, r2, #0
movs r3, #0
bl SetSpriteRotScale
ldrb r0, [r4, #1]
movs r3, #4
rsbs r3, r3, #0
ands r3, r0
movs r0, #1
orrs r3, r0
strb r3, [r4, #1]
lsrs r1, r3, #6
ldrb r2, [r4, #3]
lsrs r2, r2, #6
lsls r3, r3, #0x1e
lsrs r3, r3, #0x1e
adds r0, r4, #0
bl CalcCenterToCornerVec
_0810512A:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08105138: .4byte 0x020205AC
_0810513C: .4byte 0x08105141
thumb_func_end CreateMinimizeSprite
thumb_func_start ClonedMinizeSprite_Step
ClonedMinizeSprite_Step: @ 0x08105140
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x2e]
subs r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bne _0810517E
ldr r3, _08105184
movs r0, #0x32
ldrsh r1, [r4, r0]
lsls r1, r1, #1
movs r0, #0x30
ldrsh r2, [r4, r0]
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
adds r1, r1, r0
adds r3, #8
adds r1, r1, r3
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
ldrb r0, [r4, #3]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1b
bl FreeOamMatrix
adds r0, r4, #0
bl obj_delete_but_dont_free_vram
_0810517E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105184: .4byte 0x03005B60
thumb_func_end ClonedMinizeSprite_Step
thumb_func_start AnimTask_Splash
AnimTask_Splash: @ 0x08105188
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
ldr r1, _081051AC
adds r4, r0, r1
ldr r5, _081051B0
movs r1, #2
ldrsh r0, [r5, r1]
cmp r0, #0
bne _081051B4
adds r0, r2, #0
bl DestroyAnimVisualTask
b _081051DA
.align 2, 0
_081051AC: .4byte 0x03005B60
_081051B0: .4byte 0x020380BE
_081051B4:
ldrb r0, [r5]
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
movs r2, #0
strh r1, [r4, #8]
strh r2, [r4, #0xa]
ldrh r0, [r5, #2]
strh r0, [r4, #0xc]
strh r2, [r4, #0xe]
strh r2, [r4, #0x10]
ldr r2, _081051E0
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
ldr r0, _081051E4
str r0, [r4]
_081051DA:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081051E0: .4byte 0x0856F1CC
_081051E4: .4byte 0x081051E9
thumb_func_end AnimTask_Splash
thumb_func_start AnimTask_SplashStep
AnimTask_SplashStep: @ 0x081051E8
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
ldr r1, _0810520C
adds r4, r0, r1
movs r0, #0xa
ldrsh r5, [r4, r0]
cmp r5, #1
beq _08105250
cmp r5, #1
bgt _08105210
cmp r5, #0
beq _0810521A
b _081052F8
.align 2, 0
_0810520C: .4byte 0x03005B60
_08105210:
cmp r5, #2
beq _08105284
cmp r5, #3
beq _081052B4
b _081052F8
_0810521A:
adds r0, r4, #0
bl RunAffineAnimFromTaskData
ldrh r2, [r4, #0x10]
adds r2, #3
strh r2, [r4, #0x10]
ldr r3, _0810524C
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrh r1, [r0, #0x26]
adds r1, r1, r2
strh r1, [r0, #0x26]
ldrh r0, [r4, #0xe]
adds r0, #1
strh r0, [r4, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #7
ble _081052F8
strh r5, [r4, #0xe]
b _081052AC
.align 2, 0
_0810524C: .4byte 0x020205AC
_08105250:
adds r0, r4, #0
bl RunAffineAnimFromTaskData
ldr r2, _08105280
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r4, #0x10]
ldrh r2, [r0, #0x26]
adds r1, r1, r2
strh r1, [r0, #0x26]
ldrh r0, [r4, #0xe]
adds r0, #1
strh r0, [r4, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #7
ble _081052F8
movs r0, #0
strh r0, [r4, #0xe]
b _081052AC
.align 2, 0
_08105280: .4byte 0x020205AC
_08105284:
movs r1, #0x10
ldrsh r0, [r4, r1]
cmp r0, #0
beq _081052AC
ldr r2, _081052A8
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x26]
subs r1, #2
strh r1, [r0, #0x26]
ldrh r0, [r4, #0x10]
subs r0, #2
strh r0, [r4, #0x10]
b _081052F8
.align 2, 0
_081052A8: .4byte 0x020205AC
_081052AC:
ldrh r0, [r4, #0xa]
adds r0, #1
strh r0, [r4, #0xa]
b _081052F8
_081052B4:
adds r0, r4, #0
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _081052F8
ldrh r0, [r4, #0xc]
subs r0, #1
strh r0, [r4, #0xc]
lsls r0, r0, #0x10
cmp r0, #0
bne _081052EC
ldr r2, _081052E8
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
strh r5, [r0, #0x26]
adds r0, r6, #0
bl DestroyAnimVisualTask
b _081052F8
.align 2, 0
_081052E8: .4byte 0x020205AC
_081052EC:
ldrb r1, [r4, #8]
ldr r2, _08105300
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
strh r5, [r4, #0xa]
_081052F8:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08105300: .4byte 0x0856F1CC
thumb_func_end AnimTask_SplashStep
thumb_func_start sub_08105304
sub_08105304: @ 0x08105304
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _08105334
adds r4, r4, r0
movs r0, #0
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r2, _08105338
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
ldr r0, _0810533C
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105334: .4byte 0x03005B60
_08105338: .4byte 0x0856F1EC
_0810533C: .4byte 0x08105341
thumb_func_end sub_08105304
thumb_func_start sub_08105340
sub_08105340: @ 0x08105340
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _08105368
adds r0, r0, r1
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
cmp r0, #0
bne _08105360
adds r0, r4, #0
bl DestroyAnimVisualTask
_08105360:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105368: .4byte 0x03005B60
thumb_func_end sub_08105340
thumb_func_start Anim_BreathPuff
Anim_BreathPuff: @ 0x0810536C
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _0810539C
ldrb r0, [r5]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _081053A0
adds r0, r4, #0
movs r1, #0
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #0x20
strh r0, [r4, #0x20]
movs r0, #0x40
b _081053BA
.align 2, 0
_0810539C: .4byte 0x020380D6
_081053A0:
adds r0, r4, #0
movs r1, #1
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
subs r0, #0x20
strh r0, [r4, #0x20]
ldr r0, _081053EC
_081053BA:
strh r0, [r4, #0x30]
ldr r0, _081053F0
ldrb r0, [r0]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #0
strh r0, [r4, #0x22]
movs r0, #0x34
strh r0, [r4, #0x2e]
strh r1, [r4, #0x32]
strh r1, [r4, #0x34]
strh r1, [r4, #0x36]
ldr r1, _081053F4
adds r0, r4, #0
bl StoreSpriteCallbackInData6
ldr r0, _081053F8
str r0, [r4, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081053EC: .4byte 0x0000FFC0
_081053F0: .4byte 0x020380D6
_081053F4: .4byte 0x080A34C5
_081053F8: .4byte 0x080A5E35
thumb_func_end Anim_BreathPuff
thumb_func_start Anim_AngerMark
Anim_AngerMark: @ 0x081053FC
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r0, _08105410
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _08105418
ldr r0, _08105414
b _0810541A
.align 2, 0
_08105410: .4byte 0x020380BE
_08105414: .4byte 0x020380D6
_08105418:
ldr r0, _08105478
_0810541A:
ldrb r5, [r0]
adds r0, r5, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08105434
ldr r1, _0810547C
movs r2, #2
ldrsh r0, [r1, r2]
rsbs r0, r0, #0
strh r0, [r1, #2]
_08105434:
adds r0, r5, #0
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _0810547C
lsrs r0, r0, #0x18
ldrh r1, [r4, #2]
adds r0, r0, r1
strh r0, [r6, #0x20]
adds r0, r5, #0
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r4, [r4, #4]
adds r0, r0, r4
strh r0, [r6, #0x22]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #7
bgt _08105466
movs r0, #8
strh r0, [r6, #0x22]
_08105466:
ldr r1, _08105480
adds r0, r6, #0
bl StoreSpriteCallbackInData6
ldr r0, _08105484
str r0, [r6, #0x1c]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08105478: .4byte 0x020380D7
_0810547C: .4byte 0x020380BE
_08105480: .4byte 0x080A6015
_08105484: .4byte 0x080A6085
thumb_func_end Anim_AngerMark
thumb_func_start sub_08105488
sub_08105488: @ 0x08105488
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _081054BC
adds r4, r4, r0
movs r0, #0
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
movs r0, #0
strh r1, [r4, #8]
strh r0, [r4, #0xa]
ldr r2, _081054C0
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
ldr r0, _081054C4
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081054BC: .4byte 0x03005B60
_081054C0: .4byte 0x0856F288
_081054C4: .4byte 0x081054C9
thumb_func_end sub_08105488
thumb_func_start AnimTask_GrowAndShrinkStep
AnimTask_GrowAndShrinkStep: @ 0x081054C8
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _081054F0
adds r0, r0, r1
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
cmp r0, #0
bne _081054E8
adds r0, r4, #0
bl DestroyAnimVisualTask
_081054E8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081054F0: .4byte 0x03005B60
thumb_func_end AnimTask_GrowAndShrinkStep
thumb_func_start sub_081054F4
sub_081054F4: @ 0x081054F4
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08105568
adds r4, r1, r0
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r2, #0
strh r0, [r4, #8]
strh r2, [r4, #0xa]
movs r0, #4
strh r0, [r4, #0xc]
movs r0, #7
strh r0, [r4, #0xe]
movs r0, #3
strh r0, [r4, #0x10]
ldr r3, _0810556C
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrh r0, [r0, #0x20]
strh r0, [r4, #0x12]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrh r0, [r0, #0x22]
strh r0, [r4, #0x14]
strh r2, [r4, #0x16]
strh r2, [r4, #0x18]
movs r0, #2
strh r0, [r4, #0x1a]
ldr r0, _08105570
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0810555E
movs r1, #0xc
ldrsh r0, [r4, r1]
rsbs r0, r0, #0
strh r0, [r4, #0xc]
_0810555E:
ldr r0, _08105574
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105568: .4byte 0x03005B60
_0810556C: .4byte 0x020205AC
_08105570: .4byte 0x020380D6
_08105574: .4byte 0x08105579
thumb_func_end sub_081054F4
thumb_func_start sub_08105578
sub_08105578: @ 0x08105578
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _081055C0
adds r3, r0, r1
ldrh r0, [r3, #0x16]
adds r0, #1
strh r0, [r3, #0x16]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #2
ble _081055DE
movs r0, #0
strh r0, [r3, #0x16]
ldrh r0, [r3, #0x18]
adds r0, #1
strh r0, [r3, #0x18]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _081055C8
ldr r2, _081055C4
movs r0, #8
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r3, #0x1a]
ldrh r2, [r0, #0x22]
adds r1, r1, r2
b _081055DC
.align 2, 0
_081055C0: .4byte 0x03005B60
_081055C4: .4byte 0x020205AC
_081055C8:
ldr r2, _081055F0
movs r5, #8
ldrsh r1, [r3, r5]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x22]
ldrh r2, [r3, #0x1a]
subs r1, r1, r2
_081055DC:
strh r1, [r0, #0x22]
_081055DE:
movs r1, #0xa
ldrsh r0, [r3, r1]
cmp r0, #1
beq _0810562C
cmp r0, #1
bgt _081055F4
cmp r0, #0
beq _081055FA
b _081056BC
.align 2, 0
_081055F0: .4byte 0x020205AC
_081055F4:
cmp r0, #2
beq _0810565C
b _081056BC
_081055FA:
ldr r2, _08105628
movs r5, #8
ldrsh r1, [r3, r5]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r3, #0xc]
ldrh r2, [r0, #0x20]
adds r1, r1, r2
strh r1, [r0, #0x20]
ldrh r0, [r3, #0xe]
subs r0, #1
strh r0, [r3, #0xe]
lsls r0, r0, #0x10
cmp r0, #0
bne _081056BC
movs r0, #0xe
strh r0, [r3, #0xe]
movs r0, #1
strh r0, [r3, #0xa]
b _081056BC
.align 2, 0
_08105628: .4byte 0x020205AC
_0810562C:
ldr r2, _08105658
movs r5, #8
ldrsh r1, [r3, r5]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x20]
ldrh r2, [r3, #0xc]
subs r1, r1, r2
strh r1, [r0, #0x20]
ldrh r0, [r3, #0xe]
subs r0, #1
strh r0, [r3, #0xe]
lsls r0, r0, #0x10
cmp r0, #0
bne _081056BC
movs r0, #7
strh r0, [r3, #0xe]
movs r0, #2
strh r0, [r3, #0xa]
b _081056BC
.align 2, 0
_08105658: .4byte 0x020205AC
_0810565C:
ldr r2, _08105694
movs r0, #8
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r3, #0xc]
ldrh r5, [r0, #0x20]
adds r1, r1, r5
strh r1, [r0, #0x20]
ldrh r0, [r3, #0xe]
subs r0, #1
strh r0, [r3, #0xe]
lsls r0, r0, #0x10
asrs r1, r0, #0x10
cmp r1, #0
bne _081056BC
ldrh r0, [r3, #0x10]
subs r0, #1
strh r0, [r3, #0x10]
lsls r0, r0, #0x10
cmp r0, #0
beq _08105698
movs r0, #7
strh r0, [r3, #0xe]
strh r1, [r3, #0xa]
b _081056BC
.align 2, 0
_08105694: .4byte 0x020205AC
_08105698:
ldrh r1, [r3, #0x18]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _081056B6
movs r0, #8
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x22]
ldrh r2, [r3, #0x1a]
subs r1, r1, r2
strh r1, [r0, #0x22]
_081056B6:
adds r0, r4, #0
bl DestroyAnimVisualTask
_081056BC:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08105578
thumb_func_start sub_081056C4
sub_081056C4: @ 0x081056C4
push {r4, r5, r6, lr}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08105714
adds r5, r1, r0
ldr r4, _08105718
ldrb r0, [r4]
bl GetBattlerYCoordWithElevation
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #0x20
movs r1, #0
strh r0, [r5, #8]
movs r0, #4
strh r0, [r5, #0xa]
strh r1, [r5, #0xc]
strh r1, [r5, #0xe]
strh r1, [r5, #0x10]
strh r1, [r5, #0x12]
ldrb r0, [r4]
bl GetBattlerSpriteCoordAttr
strh r0, [r5, #0x26]
ldrb r0, [r4]
bl GetBattlerSpriteBGPriorityRank
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08105724
ldr r0, _0810571C
ldrh r0, [r0]
strh r0, [r5, #0x14]
ldr r0, _08105720
b _0810572C
.align 2, 0
_08105714: .4byte 0x03005B60
_08105718: .4byte 0x020380D7
_0810571C: .4byte 0x02022ACC
_08105720: .4byte 0x04000014
_08105724:
ldr r0, _08105790
ldrh r0, [r0]
strh r0, [r5, #0x14]
ldr r0, _08105794
_0810572C:
str r0, [sp]
ldrh r0, [r5, #8]
adds r1, r0, #0
subs r1, #0x40
lsls r2, r1, #0x10
lsls r0, r0, #0x10
cmp r2, r0
bgt _0810576A
ldr r4, _08105798
movs r0, #0xf0
lsls r0, r0, #3
adds r6, r4, r0
_08105744:
asrs r3, r2, #0x10
cmp r3, #0
blt _0810575C
lsls r1, r3, #1
adds r2, r1, r4
ldrh r0, [r5, #0x14]
adds r0, #0xf0
strh r0, [r2]
adds r1, r1, r6
ldrh r0, [r5, #0x14]
adds r0, #0xf0
strh r0, [r1]
_0810575C:
adds r0, r3, #1
lsls r2, r0, #0x10
asrs r1, r2, #0x10
movs r3, #8
ldrsh r0, [r5, r3]
cmp r1, r0
ble _08105744
_0810576A:
ldr r0, _0810579C
str r0, [sp, #4]
mov r1, sp
movs r2, #0
movs r0, #1
strb r0, [r1, #8]
mov r0, sp
strb r2, [r0, #9]
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r2, [sp, #8]
bl ScanlineEffect_SetParams
ldr r0, _081057A0
str r0, [r5]
add sp, #0xc
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08105790: .4byte 0x02022AD0
_08105794: .4byte 0x04000018
_08105798: .4byte 0x020388C8
_0810579C: .4byte 0xA2600001
_081057A0: .4byte 0x081057A5
thumb_func_end sub_081056C4
thumb_func_start sub_081057A4
sub_081057A4: @ 0x081057A4
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _081057C4
adds r3, r0, r1
movs r1, #0x10
ldrsh r0, [r3, r1]
cmp r0, #0
beq _081057C8
cmp r0, #1
beq _081057DE
b _0810585E
.align 2, 0
_081057C4: .4byte 0x03005B60
_081057C8:
ldrh r0, [r3, #0x12]
adds r0, #1
strh r0, [r3, #0x12]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x14
ble _0810585E
ldrh r0, [r3, #0x10]
adds r0, #1
strh r0, [r3, #0x10]
b _0810585E
_081057DE:
ldrh r0, [r3, #0xa]
adds r0, #1
strh r0, [r3, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0810585E
movs r0, #0
strh r0, [r3, #0xa]
ldrh r1, [r3, #0xe]
movs r0, #3
ands r0, r1
strh r0, [r3, #0xc]
ldrh r0, [r3, #8]
subs r0, r0, r1
strh r0, [r3, #0x12]
movs r2, #0xc
ldrsh r1, [r3, r2]
cmp r1, #1
beq _08105814
cmp r1, #1
ble _0810581C
cmp r1, #2
beq _08105818
cmp r1, #3
beq _08105818
b _0810581C
_08105814:
subs r0, #2
b _0810581A
_08105818:
adds r0, #1
_0810581A:
strh r0, [r3, #0x12]
_0810581C:
movs r1, #0x12
ldrsh r0, [r3, r1]
cmp r0, #0
blt _08105840
ldr r2, _08105864
lsls r0, r0, #1
adds r0, r0, r2
ldrh r1, [r3, #0x14]
strh r1, [r0]
movs r1, #0x12
ldrsh r0, [r3, r1]
lsls r0, r0, #1
movs r1, #0xf0
lsls r1, r1, #3
adds r2, r2, r1
adds r0, r0, r2
ldrh r1, [r3, #0x14]
strh r1, [r0]
_08105840:
ldrh r0, [r3, #0xe]
adds r0, #1
strh r0, [r3, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x26
ldrsh r1, [r3, r2]
cmp r0, r1
blt _0810585E
ldr r1, _08105868
movs r0, #3
strb r0, [r1, #0x15]
adds r0, r4, #0
bl DestroyAnimVisualTask
_0810585E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105864: .4byte 0x020388C8
_08105868: .4byte 0x020397C8
thumb_func_end sub_081057A4
thumb_func_start sub_0810586C
sub_0810586C: @ 0x0810586C
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, _081058C0
ldrb r0, [r6]
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
subs r0, #0x10
movs r5, #0
strh r0, [r4, #0x20]
ldrb r0, [r6]
bl GetBattlerYCoordWithElevation
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #0x10
strh r0, [r4, #0x22]
strh r5, [r4, #0x2e]
strh r5, [r4, #0x30]
strh r5, [r4, #0x32]
movs r0, #0x10
strh r0, [r4, #0x34]
strh r5, [r4, #0x36]
ldrb r0, [r6]
movs r1, #0
bl GetBattlerSpriteCoordAttr
adds r0, #2
strh r0, [r4, #0x38]
movs r0, #0x3f
bl BattleAnimAdjustPanning
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r4, #0x3a]
ldr r0, _081058C4
str r0, [r4, #0x1c]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_081058C0: .4byte 0x020380D7
_081058C4: .4byte 0x081058C9
thumb_func_end sub_0810586C
thumb_func_start sub_081058C8
sub_081058C8: @ 0x081058C8
push {r4, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r1, [r4, r0]
cmp r1, #1
beq _0810592C
cmp r1, #1
bgt _081058DE
cmp r1, #0
beq _081058E4
b _08105A0C
_081058DE:
cmp r1, #2
beq _081059BE
b _08105A0C
_081058E4:
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _0810590E
strh r1, [r4, #0x32]
adds r3, r4, #0
adds r3, #0x3e
ldrb r2, [r3]
lsrs r1, r2, #2
movs r0, #1
eors r1, r0
ands r1, r0
lsls r1, r1, #2
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_0810590E:
ldrh r0, [r4, #0x30]
adds r0, #1
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x10
ble _08105A0C
adds r2, r4, #0
adds r2, #0x3e
ldrb r0, [r2]
movs r1, #5
rsbs r1, r1, #0
ands r1, r0
strb r1, [r2]
b _081059B6
_0810592C:
ldrh r0, [r4, #0x30]
adds r0, #1
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _08105972
ldrh r2, [r4, #0x32]
movs r3, #0x32
ldrsh r1, [r4, r3]
movs r3, #0x38
ldrsh r0, [r4, r3]
cmp r1, r0
bge _08105972
movs r0, #0
strh r0, [r4, #0x30]
ldrh r0, [r4, #0x22]
subs r0, #1
strh r0, [r4, #0x22]
adds r0, r2, #1
strh r0, [r4, #0x32]
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r1, #0xa
bl __modsi3
lsls r0, r0, #0x10
cmp r0, #0
bne _08105972
ldrh r1, [r4, #0x3a]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r0, #0xcd
bl PlaySE12WithPanning
_08105972:
ldrh r0, [r4, #0x34]
ldrh r2, [r4, #0x36]
adds r1, r0, r2
strh r1, [r4, #0x36]
lsls r0, r1, #0x10
asrs r2, r0, #0x10
cmp r2, #0x1f
ble _08105986
movs r0, #0x40
b _08105994
_08105986:
movs r0, #0x20
rsbs r0, r0, #0
cmp r2, r0
bgt _081059A0
movs r2, #0x40
rsbs r2, r2, #0
adds r0, r2, #0
_08105994:
subs r0, r0, r1
strh r0, [r4, #0x36]
movs r3, #0x34
ldrsh r0, [r4, r3]
rsbs r0, r0, #0
strh r0, [r4, #0x34]
_081059A0:
ldrh r0, [r4, #0x36]
movs r2, #0
strh r0, [r4, #0x24]
movs r0, #0x38
ldrsh r1, [r4, r0]
movs r3, #0x32
ldrsh r0, [r4, r3]
cmp r1, r0
bne _08105A0C
strh r2, [r4, #0x30]
strh r2, [r4, #0x32]
_081059B6:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _08105A0C
_081059BE:
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _081059EA
movs r0, #0
strh r0, [r4, #0x32]
adds r3, r4, #0
adds r3, #0x3e
ldrb r2, [r3]
lsrs r1, r2, #2
movs r0, #1
eors r1, r0
ands r1, r0
lsls r1, r1, #2
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_081059EA:
ldrh r0, [r4, #0x30]
adds r0, #1
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x10
ble _08105A0C
adds r2, r4, #0
adds r2, #0x3e
ldrb r1, [r2]
movs r0, #5
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
bl DestroyAnimSprite
_08105A0C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081058C8
thumb_func_start sub_08105A14
sub_08105A14: @ 0x08105A14
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r6, r0, #0
movs r5, #0
mov r0, sp
strh r5, [r0]
mov r1, sp
adds r1, #2
strh r5, [r1]
ldr r0, _08105A38
movs r3, #4
ldrsh r2, [r0, r3]
adds r7, r1, #0
adds r1, r0, #0
cmp r2, #0
bne _08105A40
ldr r0, _08105A3C
b _08105A42
.align 2, 0
_08105A38: .4byte 0x020380BE
_08105A3C: .4byte 0x020380D6
_08105A40:
ldr r0, _08105A7C
_08105A42:
ldrb r5, [r0]
ldrb r1, [r1, #6]
movs r0, #1
adds r4, r0, #0
eors r4, r1
bl IsDoubleBattle
lsls r0, r0, #0x18
cmp r0, #0
beq _08105ABA
movs r1, #2
adds r0, r5, #0
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08105ABA
adds r0, r5, #0
adds r1, r4, #0
mov r2, sp
adds r3, r7, #0
bl SetAverageBattlerPositions
cmp r4, #0
bne _08105A80
adds r0, r5, #0
movs r1, #0
b _08105A84
.align 2, 0
_08105A7C: .4byte 0x020380D7
_08105A80:
adds r0, r5, #0
movs r1, #2
_08105A84:
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r0, r5, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08105AB0
ldr r2, _08105AAC
mov r0, sp
ldrh r1, [r0]
subs r1, r1, r4
ldrh r0, [r2]
subs r1, r1, r0
subs r0, r0, r1
strh r0, [r2]
b _08105ABA
.align 2, 0
_08105AAC: .4byte 0x020380BE
_08105AB0:
ldr r1, _08105ACC
mov r0, sp
ldrh r0, [r0]
subs r0, r0, r4
strh r0, [r1]
_08105ABA:
ldr r1, _08105AD0
str r1, [r6, #0x1c]
adds r0, r6, #0
bl _call_via_r1
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08105ACC: .4byte 0x020380BE
_08105AD0: .4byte 0x080A7091
thumb_func_end sub_08105A14
thumb_func_start sub_08105AD4
sub_08105AD4: @ 0x08105AD4
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
beq _08105AEE
adds r0, r4, #0
bl FreeSpriteOamMatrix
adds r0, r4, #0
bl DestroyAnimSprite
_08105AEE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_08105AD4
thumb_func_start sub_08105AF4
sub_08105AF4: @ 0x08105AF4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
adds r5, r0, #0
movs r6, #0
mov r0, sp
strh r6, [r0]
mov r1, sp
adds r1, #2
strh r6, [r1]
ldr r0, _08105B20
movs r2, #0xa
ldrsh r0, [r0, r2]
cmp r0, #0
bne _08105B2C
ldr r0, _08105B24
ldrb r7, [r0]
ldr r0, _08105B28
b _08105B32
.align 2, 0
_08105B20: .4byte 0x020380BE
_08105B24: .4byte 0x020380D6
_08105B28: .4byte 0x020380D7
_08105B2C:
ldr r0, _08105B4C
ldrb r7, [r0]
ldr r0, _08105B50
_08105B32:
ldrb r0, [r0]
mov r8, r0
ldr r0, _08105B54
movs r3, #0xc
ldrsh r0, [r0, r3]
cmp r0, #0
bne _08105B58
movs r0, #0
mov sl, r0
movs r1, #1
str r1, [sp, #4]
b _08105B60
.align 2, 0
_08105B4C: .4byte 0x020380D7
_08105B50: .4byte 0x020380D6
_08105B54: .4byte 0x020380BE
_08105B58:
movs r2, #2
mov sl, r2
movs r3, #3
str r3, [sp, #4]
_08105B60:
adds r0, r7, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08105BBC
adds r0, r7, #0
mov r1, sl
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r1, _08105BA0
lsrs r0, r0, #0x18
ldrh r1, [r1]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
movs r0, #2
mov r4, r8
eors r4, r0
adds r0, r4, #0
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08105BAC
ldr r2, _08105BA4
ldr r0, _08105BA8
adds r0, r4, r0
b _08105C3A
.align 2, 0
_08105BA0: .4byte 0x020380BE
_08105BA4: .4byte 0x020205AC
_08105BA8: .4byte 0x02023E88
_08105BAC:
ldr r2, _08105BB4
ldr r0, _08105BB8
add r0, r8
b _08105C3A
.align 2, 0
_08105BB4: .4byte 0x020205AC
_08105BB8: .4byte 0x02023E88
_08105BBC:
adds r0, r7, #0
mov r1, sl
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _08105C24
ldrh r1, [r1]
subs r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08105C34
movs r0, #2
adds r4, r7, #0
eors r4, r0
adds r0, r4, #0
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08105C34
ldr r3, _08105C28
ldr r2, _08105C2C
adds r0, r7, r2
ldrb r1, [r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r6, r0, r3
adds r2, r4, r2
ldrb r1, [r2]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r2, r0, r3
movs r0, #0x20
ldrsh r1, [r6, r0]
movs r3, #0x20
ldrsh r0, [r2, r3]
cmp r1, r0
bge _08105C30
adds r0, r2, #0
adds r0, #0x43
ldrb r0, [r0]
adds r0, #1
b _08105C4A
.align 2, 0
_08105C24: .4byte 0x020380BE
_08105C28: .4byte 0x020205AC
_08105C2C: .4byte 0x02023E88
_08105C30:
adds r0, r6, #0
b _08105C44
_08105C34:
ldr r2, _08105C90
ldr r0, _08105C94
adds r0, r7, r0
_08105C3A:
ldrb r1, [r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
_08105C44:
adds r0, #0x43
ldrb r0, [r0]
subs r0, #1
_08105C4A:
adds r1, r5, #0
adds r1, #0x43
strb r0, [r1]
adds r0, r7, #0
ldr r1, [sp, #4]
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _08105C98
lsrs r0, r0, #0x18
ldrh r1, [r4, #2]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08105C9C
movs r1, #2
mov r0, r8
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08105C9C
ldrb r1, [r4, #0xc]
mov r0, r8
mov r2, sp
mov r3, sp
adds r3, #2
bl SetAverageBattlerPositions
b _08105CBC
.align 2, 0
_08105C90: .4byte 0x020205AC
_08105C94: .4byte 0x02023E88
_08105C98: .4byte 0x020380BE
_08105C9C:
mov r4, sp
mov r0, r8
mov r1, sl
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4]
mov r0, r8
ldr r1, [sp, #4]
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r2, sp
strh r0, [r2, #2]
_08105CBC:
mov r0, r8
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08105CE0
mov r3, sp
mov r2, sp
ldr r1, _08105CDC
ldrh r0, [r1, #6]
ldrh r2, [r2]
adds r0, r0, r2
strh r0, [r3]
adds r2, r1, #0
b _08105CEE
.align 2, 0
_08105CDC: .4byte 0x020380BE
_08105CE0:
mov r3, sp
mov r0, sp
ldr r2, _08105D30
ldrh r0, [r0]
ldrh r1, [r2, #6]
subs r0, r0, r1
strh r0, [r3]
_08105CEE:
ldrh r1, [r2, #8]
mov r3, sp
ldrh r3, [r3, #2]
adds r1, r1, r3
mov r0, sp
strh r1, [r0, #2]
mov r3, sb
strh r3, [r5, #0x30]
strh r3, [r5, #0x20]
strh r6, [r5, #0x34]
strh r6, [r5, #0x22]
ldrh r0, [r0]
strh r0, [r5, #0x32]
strh r1, [r5, #0x36]
ldrh r0, [r2]
strh r0, [r5, #0x2e]
adds r0, r5, #0
bl InitAnimLinearTranslation
ldr r1, _08105D34
str r1, [r5, #0x1c]
adds r0, r5, #0
bl _call_via_r1
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08105D30: .4byte 0x020380BE
_08105D34: .4byte 0x08105AD5
thumb_func_end sub_08105AF4
thumb_func_start sub_08105D38
sub_08105D38: @ 0x08105D38
push {r4, lr}
adds r4, r0, #0
ldr r0, _08105D78
bl IndexOfSpritePaletteTag
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _08105D5E
lsls r0, r0, #0x14
ldr r1, _08105D7C
adds r0, r0, r1
lsrs r0, r0, #0x10
ldr r1, _08105D80
ldrb r2, [r1, #0xa]
ldrh r3, [r1, #8]
movs r1, #0xf
bl BlendPalette
_08105D5E:
adds r0, r4, #0
movs r1, #1
bl StartSpriteAffineAnim
ldr r1, _08105D84
str r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105D78: .4byte 0x000027DB
_08105D7C: .4byte 0x01010000
_08105D80: .4byte 0x020380BE
_08105D84: .4byte 0x080A7091
thumb_func_end sub_08105D38
thumb_func_start sub_08105D88
sub_08105D88: @ 0x08105D88
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
ldr r0, _08105DBC
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
movs r1, #0xa0
cmp r0, #0
beq _08105DA4
ldr r1, _08105DC0
_08105DA4:
movs r0, #0xe0
lsls r0, r0, #2
strh r0, [r4, #0x2e]
strh r1, [r4, #0x30]
ldr r0, _08105DC4
ldrh r0, [r0, #4]
strh r0, [r4, #0x3c]
ldr r0, _08105DC8
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105DBC: .4byte 0x020380D6
_08105DC0: .4byte 0x0000FF60
_08105DC4: .4byte 0x020380BE
_08105DC8: .4byte 0x08105DCD
thumb_func_end sub_08105D88
thumb_func_start sub_08105DCC
sub_08105DCC: @ 0x08105DCC
push {r4, r5, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x2e]
lsls r0, r2, #0x10
asrs r0, r0, #0x18
ldrh r1, [r4, #0x26]
subs r1, r1, r0
movs r5, #0
strh r1, [r4, #0x26]
ldrh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x24]
subs r2, #0x20
strh r2, [r4, #0x2e]
ldr r0, _08105E38
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
movs r1, #0xa0
cmp r0, #0
beq _08105DFC
ldr r1, _08105E3C
_08105DFC:
lsls r0, r1, #0x10
asrs r0, r0, #0x10
ldrh r1, [r4, #0x30]
adds r0, r0, r1
strh r0, [r4, #0x30]
ldrh r1, [r4, #0x26]
movs r2, #0x26
ldrsh r0, [r4, r2]
cmp r0, #0
ble _08105E30
ldrh r2, [r4, #0x22]
adds r0, r1, r2
strh r0, [r4, #0x22]
ldrh r0, [r4, #0x24]
ldrh r1, [r4, #0x20]
adds r0, r0, r1
strh r0, [r4, #0x20]
strh r5, [r4, #0x26]
strh r5, [r4, #0x24]
strh r5, [r4, #0x2e]
adds r0, r4, #0
movs r1, #1
bl StartSpriteAffineAnim
ldr r0, _08105E40
str r0, [r4, #0x1c]
_08105E30:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08105E38: .4byte 0x020380D6
_08105E3C: .4byte 0x0000FF60
_08105E40: .4byte 0x08105E45
thumb_func_end sub_08105DCC
thumb_func_start sub_08105E44
sub_08105E44: @ 0x08105E44
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x2e]
adds r1, r0, #1
strh r1, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x13
ble _08105E62
adds r0, r4, #0
movs r1, #2
bl StartSpriteAffineAnim
ldr r0, _08105E68
str r0, [r4, #0x1c]
_08105E62:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105E68: .4byte 0x08105E6D
thumb_func_end sub_08105E44
thumb_func_start sub_08105E6C
sub_08105E6C: @ 0x08105E6C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08105ED2
adds r0, r4, #0
movs r1, #1
bl StartSpriteAffineAnim
movs r0, #0
strh r0, [r4, #0x2e]
movs r1, #0x3c
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08105EB8
ldrh r2, [r4, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
adds r1, #0x10
ldr r3, _08105EAC
adds r0, r3, #0
ands r1, r0
ldr r0, _08105EB0
ands r0, r2
orrs r0, r1
strh r0, [r4, #4]
ldr r0, _08105EB4
b _08105ED0
.align 2, 0
_08105EAC: .4byte 0x000003FF
_08105EB0: .4byte 0xFFFFFC00
_08105EB4: .4byte 0x08105EE5
_08105EB8:
ldrh r2, [r4, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
adds r1, #0x20
ldr r3, _08105ED8
adds r0, r3, #0
ands r1, r0
ldr r0, _08105EDC
ands r0, r2
orrs r0, r1
strh r0, [r4, #4]
ldr r0, _08105EE0
_08105ED0:
str r0, [r4, #0x1c]
_08105ED2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105ED8: .4byte 0x000003FF
_08105EDC: .4byte 0xFFFFFC00
_08105EE0: .4byte 0x08105F6D
thumb_func_end sub_08105E6C
thumb_func_start sub_08105EE4
sub_08105EE4: @ 0x08105EE4
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x26]
subs r0, #2
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #9
bne _08105F1A
movs r0, #0x10
strh r0, [r4, #0x2e]
movs r0, #0
strh r0, [r4, #0x30]
movs r1, #0xfd
lsls r1, r1, #6
movs r0, #0x50
bl SetGpuReg
ldrh r1, [r4, #0x2e]
movs r0, #0x52
bl SetGpuReg
ldr r0, _08105F20
str r0, [r4, #0x1c]
_08105F1A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105F20: .4byte 0x08105F25
thumb_func_end sub_08105EE4
thumb_func_start sub_08105F24
sub_08105F24: @ 0x08105F24
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x30]
adds r1, r0, #1
strh r1, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #3
bl __modsi3
lsls r0, r0, #0x10
cmp r0, #0
bne _08105F62
ldrh r1, [r4, #0x2e]
subs r1, #1
strh r1, [r4, #0x2e]
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x52
bl SetGpuReg
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08105F62
ldr r0, _08105F68
str r0, [r4, #0x1c]
_08105F62:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105F68: .4byte 0x08105F6D
thumb_func_end sub_08105F24
thumb_func_start sub_08105F6C
sub_08105F6C: @ 0x08105F6C
push {lr}
adds r3, r0, #0
ldr r0, _08105F94
ldrh r1, [r0, #0xe]
ldr r0, _08105F98
cmp r1, r0
bne _08105FA4
adds r2, r3, #0
adds r2, #0x3e
ldrb r0, [r2]
movs r1, #4
orrs r0, r1
strb r0, [r2]
movs r1, #0x3c
ldrsh r0, [r3, r1]
cmp r0, #0
bne _08105FA0
ldr r0, _08105F9C
b _08105FA2
.align 2, 0
_08105F94: .4byte 0x020380BE
_08105F98: .4byte 0x0000FFFF
_08105F9C: .4byte 0x08105FAD
_08105FA0:
ldr r0, _08105FA8
_08105FA2:
str r0, [r3, #0x1c]
_08105FA4:
pop {r0}
bx r0
.align 2, 0
_08105FA8: .4byte 0x080A34C5
thumb_func_end sub_08105F6C
thumb_func_start sub_08105FAC
sub_08105FAC: @ 0x08105FAC
push {r4, lr}
adds r4, r0, #0
movs r0, #0x50
movs r1, #0
bl SetGpuReg
movs r0, #0x52
movs r1, #0
bl SetGpuReg
adds r0, r4, #0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_08105FAC
thumb_func_start sub_08105FCC
sub_08105FCC: @ 0x08105FCC
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _08105FFC
adds r4, r4, r0
movs r0, #0
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
strh r1, [r4, #8]
ldr r2, _08106000
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
ldr r0, _08106004
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08105FFC: .4byte 0x03005B60
_08106000: .4byte 0x0856F494
_08106004: .4byte 0x08106009
thumb_func_end sub_08105FCC
thumb_func_start sub_08106008
sub_08106008: @ 0x08106008
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
ldr r1, _08106058
adds r4, r0, r1
adds r0, r4, #0
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
bne _08106052
ldr r2, _0810605C
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
strh r3, [r0, #0x26]
movs r0, #8
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
adds r0, #0x3e
ldrb r1, [r0]
movs r2, #4
orrs r1, r2
strb r1, [r0]
adds r0, r5, #0
bl DestroyAnimVisualTask
_08106052:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106058: .4byte 0x03005B60
_0810605C: .4byte 0x020205AC
thumb_func_end sub_08106008
thumb_func_start sub_08106060
sub_08106060: @ 0x08106060
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08106094
adds r4, r1, r0
movs r0, #0
strh r0, [r4, #8]
strh r0, [r4, #0xa]
strh r0, [r4, #0xc]
strh r0, [r4, #0xe]
movs r0, #3
strh r0, [r4, #0x20]
ldr r0, _08106098
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _081060A0
ldr r0, _0810609C
strh r0, [r4, #0x22]
movs r0, #8
b _081060A6
.align 2, 0
_08106094: .4byte 0x03005B60
_08106098: .4byte 0x020380D7
_0810609C: .4byte 0x0000FFFF
_081060A0:
movs r0, #1
strh r0, [r4, #0x22]
ldr r0, _081060C0
_081060A6:
strh r0, [r4, #0x24]
movs r0, #1
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x26]
ldr r0, _081060C4
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081060C0: .4byte 0x0000FFF8
_081060C4: .4byte 0x081060C9
thumb_func_end sub_08106060
thumb_func_start sub_081060C8
sub_081060C8: @ 0x081060C8
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
ldr r1, _081060EC
adds r3, r0, r1
movs r0, #8
ldrsh r4, [r3, r0]
cmp r4, #1
beq _0810611C
cmp r4, #1
bgt _081060F0
cmp r4, #0
beq _081060FA
b _081061E2
.align 2, 0
_081060EC: .4byte 0x03005B60
_081060F0:
cmp r4, #2
beq _08106198
cmp r4, #3
beq _081061B2
b _081061E2
_081060FA:
ldr r2, _08106118
movs r0, #0x26
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r3, #0x24]
ldrh r2, [r0, #0x24]
adds r1, r1, r2
strh r1, [r0, #0x24]
strh r4, [r3, #0xa]
strh r4, [r3, #0xc]
strh r4, [r3, #0xe]
b _081061AA
.align 2, 0
_08106118: .4byte 0x020205AC
_0810611C:
ldrh r0, [r3, #0xa]
adds r0, #1
strh r0, [r3, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _081061E2
movs r0, #0
strh r0, [r3, #0xa]
ldrh r0, [r3, #0xc]
adds r0, #1
strh r0, [r3, #0xc]
ands r0, r4
lsls r0, r0, #0x10
cmp r0, #0
beq _08106154
ldr r2, _08106150
movs r4, #0x26
ldrsh r1, [r3, r4]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x24]
adds r1, #6
b _08106166
.align 2, 0
_08106150: .4byte 0x020205AC
_08106154:
ldr r2, _08106194
movs r0, #0x26
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r0, #0x24]
subs r1, #6
_08106166:
strh r1, [r0, #0x24]
ldrh r0, [r3, #0xe]
adds r0, #1
strh r0, [r3, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
ble _081061E2
ldrh r1, [r3, #0xc]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _081061AA
movs r1, #0x26
ldrsh r0, [r3, r1]
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r0, [r1, #0x24]
subs r0, #6
strh r0, [r1, #0x24]
b _081061AA
.align 2, 0
_08106194: .4byte 0x020205AC
_08106198:
ldrh r0, [r3, #0x20]
subs r0, #1
strh r0, [r3, #0x20]
lsls r0, r0, #0x10
cmp r0, #0
beq _081061AA
movs r0, #0
strh r0, [r3, #8]
b _081061E2
_081061AA:
ldrh r0, [r3, #8]
adds r0, #1
strh r0, [r3, #8]
b _081061E2
_081061B2:
ldr r2, _081061E8
movs r4, #0x26
ldrsh r1, [r3, r4]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r3, #0x22]
ldrh r4, [r0, #0x24]
adds r1, r1, r4
strh r1, [r0, #0x24]
movs r0, #0x26
ldrsh r1, [r3, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
movs r1, #0x24
ldrsh r0, [r0, r1]
cmp r0, #0
bne _081061E2
adds r0, r5, #0
bl DestroyAnimVisualTask
_081061E2:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081061E8: .4byte 0x020205AC
thumb_func_end sub_081060C8
thumb_func_start sub_081061EC
sub_081061EC: @ 0x081061EC
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _08106228
adds r4, r4, r0
movs r0, #0
strh r0, [r4, #8]
strh r0, [r4, #0xa]
strh r0, [r4, #0xc]
strh r0, [r4, #0xe]
movs r0, #1
strh r0, [r4, #0x10]
movs r0, #0xe
strh r0, [r4, #0x22]
movs r0, #2
strh r0, [r4, #0x24]
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x26]
ldr r0, _0810622C
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08106228: .4byte 0x03005B60
_0810622C: .4byte 0x08106231
thumb_func_end sub_081061EC
thumb_func_start sub_08106230
sub_08106230: @ 0x08106230
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
ldr r1, _08106284
adds r4, r0, r1
movs r0, #8
ldrsh r2, [r4, r0]
cmp r2, #0
bne _081062F6
ldrh r0, [r4, #0xa]
adds r0, #1
strh r0, [r4, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r3, #0x10
ldrsh r1, [r4, r3]
cmp r0, r1
ble _081062F6
strh r2, [r4, #0xa]
ldrh r0, [r4, #0xc]
adds r0, #1
strh r0, [r4, #0xc]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _0810628C
ldr r3, _08106288
movs r6, #0x26
ldrsh r1, [r4, r6]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
adds r0, #0x3e
ldrb r2, [r0]
movs r1, #5
rsbs r1, r1, #0
ands r1, r2
b _081062A2
.align 2, 0
_08106284: .4byte 0x03005B60
_08106288: .4byte 0x020205AC
_0810628C:
ldr r3, _081062D4
movs r0, #0x26
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
adds r0, #0x3e
ldrb r1, [r0]
movs r2, #4
orrs r1, r2
_081062A2:
strb r1, [r0]
ldrh r0, [r4, #0xe]
adds r0, #1
movs r2, #0
strh r0, [r4, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r6, #0x22
ldrsh r1, [r4, r6]
cmp r0, r1
blt _081062F6
ldrh r0, [r4, #0x10]
adds r0, #1
strh r0, [r4, #0x10]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r6, #0x24
ldrsh r1, [r4, r6]
cmp r0, r1
bge _081062D8
strh r2, [r4, #0xa]
strh r2, [r4, #0xc]
strh r2, [r4, #0xe]
b _081062F6
.align 2, 0
_081062D4: .4byte 0x020205AC
_081062D8:
movs r0, #0x26
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
adds r0, #0x3e
ldrb r2, [r0]
movs r1, #5
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
adds r0, r5, #0
bl DestroyAnimVisualTask
_081062F6:
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_end sub_08106230
thumb_func_start sub_081062FC
sub_081062FC: @ 0x081062FC
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
ldr r0, _0810634C
adds r4, r4, r0
movs r0, #0
strh r0, [r4, #8]
movs r1, #4
strh r1, [r4, #0xa]
strh r0, [r4, #0xc]
strh r0, [r4, #0xe]
strh r0, [r4, #0x10]
strh r0, [r4, #0x12]
strh r0, [r4, #0x14]
strh r0, [r4, #0x16]
strh r0, [r4, #0x18]
strh r0, [r4, #0x22]
ldr r5, _08106350
ldrb r0, [r5]
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x24]
ldrb r0, [r5]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x26]
ldr r0, _08106354
str r0, [r4]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810634C: .4byte 0x03005B60
_08106350: .4byte 0x020380D6
_08106354: .4byte 0x08106359
thumb_func_end sub_081062FC
thumb_func_start sub_08106358
sub_08106358: @ 0x08106358
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
ldr r1, _0810637C
adds r4, r0, r1
movs r0, #0x18
ldrsh r2, [r4, r0]
cmp r2, #1
beq _081063C4
cmp r2, #1
bgt _08106380
cmp r2, #0
beq _08106386
b _081063E0
.align 2, 0
_0810637C: .4byte 0x03005B60
_08106380:
cmp r2, #2
beq _081063DC
b _081063E0
_08106386:
ldrh r0, [r4, #0x10]
adds r0, #1
strh r0, [r4, #0x10]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _081063E0
strh r2, [r4, #0x10]
ldrh r0, [r4, #0x12]
adds r0, #1
movs r1, #1
ands r0, r1
strh r0, [r4, #0x12]
ldrh r0, [r4, #0x14]
adds r0, #1
strh r0, [r4, #0x14]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x14
ble _081063E0
movs r1, #0x16
ldrsh r0, [r4, r1]
cmp r0, #0
bne _081063BE
strh r2, [r4, #0x14]
movs r0, #1
strh r0, [r4, #0x18]
b _081063E0
_081063BE:
movs r0, #2
strh r0, [r4, #0x18]
b _081063E0
_081063C4:
movs r1, #0
strh r1, [r4, #0x12]
ldrh r0, [r4, #0x10]
adds r0, #1
strh r0, [r4, #0x10]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x14
ble _081063E0
strh r2, [r4, #0x16]
strh r1, [r4, #0x18]
b _081063E0
_081063DC:
movs r0, #1
strh r0, [r4, #0x12]
_081063E0:
movs r2, #8
ldrsh r5, [r4, r2]
cmp r5, #0
beq _081063EE
cmp r5, #1
beq _08106484
b _08106492
_081063EE:
ldrh r0, [r4, #0xa]
adds r0, #1
strh r0, [r4, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
ble _08106492
strh r5, [r4, #0xa]
ldr r0, _08106478
movs r3, #0x24
ldrsh r1, [r4, r3]
movs r3, #0x26
ldrsh r2, [r4, r3]
movs r3, #0
bl CreateSprite
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0x40
beq _08106492
ldr r0, _0810647C
lsls r1, r2, #4
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
strh r6, [r1, #0x2e]
movs r0, #0xd
strh r0, [r1, #0x30]
ldr r2, _08106480
movs r3, #0xc
ldrsh r0, [r4, r3]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r1, #0x24]
movs r3, #0xc
ldrsh r0, [r4, r3]
lsls r0, r0, #1
adds r2, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r1, #0x26]
ldrh r0, [r4, #0x22]
adds r0, #1
strh r0, [r4, #0x22]
ldrh r0, [r4, #0xc]
adds r0, #1
strh r0, [r4, #0xc]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _08106492
strh r5, [r4, #0xc]
ldrh r0, [r4, #0xe]
adds r0, #1
strh r0, [r4, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #5
ble _08106492
ldrh r0, [r4, #8]
adds r0, #1
strh r0, [r4, #8]
b _08106492
.align 2, 0
_08106478: .4byte 0x0856F4C0
_0810647C: .4byte 0x020205AC
_08106480: .4byte 0x0856F4D8
_08106484:
movs r1, #0x22
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08106492
adds r0, r6, #0
bl DestroyAnimVisualTask
_08106492:
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_end sub_08106358
thumb_func_start sub_08106498
sub_08106498: @ 0x08106498
push {r4, lr}
adds r3, r0, #0
ldr r4, _08106500
movs r0, #0x2e
ldrsh r1, [r3, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
adds r0, r0, r4
movs r1, #0x3e
adds r1, r1, r3
mov ip, r1
movs r2, #1
ldrb r1, [r0, #0x12]
ands r1, r2
lsls r1, r1, #2
mov r0, ip
ldrb r2, [r0]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _081064FA
movs r0, #0x30
ldrsh r1, [r3, r0]
lsls r1, r1, #1
movs r0, #0x2e
ldrsh r2, [r3, r0]
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
adds r1, r1, r0
adds r0, r4, #0
adds r0, #8
adds r1, r1, r0
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
adds r0, r3, #0
bl DestroySprite
_081064FA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08106500: .4byte 0x03005B60
thumb_func_end sub_08106498
thumb_func_start sub_08106504
sub_08106504: @ 0x08106504
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r0, _081065A0
bl IndexOfSpritePaletteTag
mov r1, sp
strb r0, [r1]
movs r4, #1
ldr r0, _081065A4
adds r5, r0, #0
_0810651C:
subs r0, r5, r4
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl AllocSpritePalette
mov r2, sp
adds r1, r2, r4
strb r0, [r1]
adds r4, #1
cmp r4, #2
ble _0810651C
movs r0, #0x80
lsls r0, r0, #6
bl AllocZeroed
adds r1, r0, #0
ldr r0, _081065A8
ldr r0, [r0]
movs r2, #0xbe
lsls r2, r2, #1
adds r0, r0, r2
str r1, [r0]
ldr r0, _081065AC
bl LZDecompressVram
movs r4, #0
_08106550:
ldr r5, _081065A8
ldr r0, [r5]
movs r1, #0xbe
lsls r1, r1, #1
adds r0, r0, r1
lsls r1, r4, #6
ldr r0, [r0]
adds r0, r0, r1
mov r2, sp
adds r1, r2, r4
ldrb r1, [r1]
lsls r1, r1, #0x14
movs r2, #0x80
lsls r2, r2, #0x11
adds r1, r1, r2
lsrs r1, r1, #0x10
movs r2, #0x20
bl LoadPalette
adds r4, #1
cmp r4, #2
ble _08106550
ldr r0, [r5]
movs r4, #0xbe
lsls r4, r4, #1
adds r0, r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r5]
adds r0, r0, r4
movs r1, #0
str r1, [r0]
adds r0, r6, #0
bl DestroyAnimVisualTask
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_081065A0: .4byte 0x000027DE
_081065A4: .4byte 0x00002710
_081065A8: .4byte 0x02024178
_081065AC: .4byte 0x08C226B4
thumb_func_end sub_08106504
thumb_func_start sub_081065B0
sub_081065B0: @ 0x081065B0
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r5, _081065D4
movs r4, #2
_081065BA:
ldrh r0, [r5]
bl FreeSpritePaletteByTag
adds r5, #2
subs r4, #1
cmp r4, #0
bge _081065BA
adds r0, r6, #0
bl DestroyAnimVisualTask
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_081065D4: .4byte 0x0856F534
thumb_func_end sub_081065B0
thumb_func_start sub_081065D8
sub_081065D8: @ 0x081065D8
push {r4, r5, lr}
adds r5, r0, #0
lsls r1, r1, #0x18
lsls r2, r2, #0x18
lsrs r3, r2, #0x18
movs r0, #1
ands r3, r0
rsbs r0, r3, #0
orrs r0, r3
asrs r0, r0, #0x1f
movs r3, #0x20
ands r0, r3
ldrh r4, [r5, #4]
lsls r3, r4, #0x16
lsrs r3, r3, #0x16
lsrs r1, r1, #0x16
adds r0, r0, r1
adds r3, r3, r0
ldr r1, _0810662C
adds r0, r1, #0
ands r3, r0
ldr r0, _08106630
ands r0, r4
orrs r0, r3
strh r0, [r5, #4]
ldr r0, _08106634
lsrs r2, r2, #0x19
lsls r2, r2, #1
adds r2, r2, r0
ldrh r0, [r2]
bl IndexOfSpritePaletteTag
lsls r0, r0, #4
ldrb r2, [r5, #5]
movs r1, #0xf
ands r1, r2
orrs r1, r0
strb r1, [r5, #5]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810662C: .4byte 0x000003FF
_08106630: .4byte 0xFFFFFC00
_08106634: .4byte 0x0856F534
thumb_func_end sub_081065D8
thumb_func_start sub_08106638
sub_08106638: @ 0x08106638
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
ldr r6, _081066A0
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _08106658
ldr r1, _081066A4
ldrh r0, [r1, #4]
rsbs r0, r0, #0
strh r0, [r1, #4]
_08106658:
ldr r4, _081066A4
ldrh r0, [r4, #8]
strh r0, [r5, #0x2e]
ldrb r0, [r6]
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #4]
adds r0, r0, r1
strh r0, [r5, #0x32]
ldrb r0, [r6]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #6]
adds r0, r0, r1
strh r0, [r5, #0x36]
ldr r0, _081066A8
str r0, [r5, #0x1c]
ldr r1, _081066AC
adds r0, r5, #0
bl StoreSpriteCallbackInData6
ldrb r1, [r4, #0xa]
ldrb r2, [r4, #0xc]
adds r0, r5, #0
bl sub_081065D8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_081066A0: .4byte 0x020380D6
_081066A4: .4byte 0x020380BE
_081066A8: .4byte 0x080A67B5
_081066AC: .4byte 0x080A34C5
thumb_func_end sub_08106638
thumb_func_start sub_081066B0
sub_081066B0: @ 0x081066B0
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
bne _081066CA
adds r0, r4, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
_081066CA:
movs r1, #0x30
ldrsh r0, [r4, r1]
movs r1, #8
bl Sin
strh r0, [r4, #0x24]
ldrh r2, [r4, #0x32]
lsls r0, r2, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x30]
adds r0, #7
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x30]
subs r2, #0x80
strh r2, [r4, #0x32]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0x3c
bne _081066FA
adds r0, r4, #0
bl DestroyAnimSprite
_081066FA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_081066B0
thumb_func_start sub_08106700
sub_08106700: @ 0x08106700
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
bl IsContest
lsls r0, r0, #0x18
movs r6, #0xf0
cmp r0, #0
beq _08106714
movs r6, #0x98
_08106714:
movs r5, #0
ldr r1, _08106768
strh r6, [r1]
ldr r4, _0810676C
movs r0, #0xa0
strh r0, [r4]
ldrh r1, [r1]
movs r0, #0x40
bl SetGpuReg
ldrh r1, [r4]
movs r0, #0x44
bl SetGpuReg
ldr r1, _08106770
movs r0, #0x48
bl SetGpuReg
ldr r1, _08106774
movs r0, #0x4a
bl SetGpuReg
movs r0, #0x50
movs r1, #0xc8
bl SetGpuReg
movs r0, #0x54
movs r1, #0x10
bl SetGpuReg
ldr r1, _08106778
lsls r0, r7, #2
adds r0, r0, r7
lsls r0, r0, #3
adds r0, r0, r1
strh r5, [r0, #8]
strh r6, [r0, #0xa]
ldr r1, _0810677C
str r1, [r0]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08106768: .4byte 0x02022AD8
_0810676C: .4byte 0x02022ADA
_08106770: .4byte 0x00003F1F
_08106774: .4byte 0x00003F3F
_08106778: .4byte 0x03005B60
_0810677C: .4byte 0x08106781
thumb_func_end sub_08106700
thumb_func_start sub_08106780
sub_08106780: @ 0x08106780
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _081067B4
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r3, r1, r2
ldrh r0, [r3, #8]
adds r4, r0, #0
adds r4, #0xd
strh r4, [r3, #8]
ldrh r0, [r3, #0xa]
adds r2, r0, #0
subs r2, #0xd
strh r2, [r3, #0xa]
lsls r1, r4, #0x10
lsls r0, r2, #0x10
cmp r1, r0
blt _081067C0
ldr r0, _081067B8
movs r1, #0
strh r1, [r0]
ldr r0, _081067BC
str r0, [r3]
b _081067C8
.align 2, 0
_081067B4: .4byte 0x03005B60
_081067B8: .4byte 0x02022AD8
_081067BC: .4byte 0x081067D5
_081067C0:
ldr r1, _081067D0
lsls r0, r4, #8
orrs r2, r0
strh r2, [r1]
_081067C8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081067D0: .4byte 0x02022AD8
thumb_func_end sub_08106780
thumb_func_start sub_081067D4
sub_081067D4: @ 0x081067D4
push {r4, r5, lr}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r5, r0, #0
ldr r1, _08106820
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r1, r0, r1
ldrh r0, [r1, #0x1c]
adds r0, #1
movs r4, #0
strh r0, [r1, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #5
bne _08106828
movs r0, #0x88
strh r0, [r1, #0x1e]
movs r0, #0x50
movs r1, #0x88
bl SetGpuReg
str r4, [sp]
str r4, [sp, #4]
str r4, [sp, #8]
movs r0, #1
movs r1, #0
movs r2, #0
movs r3, #0
bl sub_080A6E74
ldr r2, _08106824
movs r1, #0x10
bl BlendPalettes
b _0810685C
.align 2, 0
_08106820: .4byte 0x03005B60
_08106824: .4byte 0x00007FFF
_08106828:
cmp r0, #4
ble _0810685C
ldr r0, _08106864
strh r4, [r0]
ldr r0, _08106868
strh r4, [r0]
ldr r4, _0810686C
movs r0, #0x48
adds r1, r4, #0
bl SetGpuReg
movs r0, #0x4a
adds r1, r4, #0
bl SetGpuReg
movs r0, #0x50
movs r1, #0
bl SetGpuReg
movs r0, #0x54
movs r1, #0
bl SetGpuReg
adds r0, r5, #0
bl DestroyAnimVisualTask
_0810685C:
add sp, #0xc
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106864: .4byte 0x02022AD8
_08106868: .4byte 0x02022ADA
_0810686C: .4byte 0x00003F3F
thumb_func_end sub_081067D4
thumb_func_start sub_08106870
sub_08106870: @ 0x08106870
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r6, r0, #0
movs r0, #1
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _081068C0
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
adds r5, r0, r1
ldrh r0, [r5, #8]
adds r0, #1
strh r0, [r5, #8]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
bne _081068CC
movs r0, #1
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r2, _081068C4
adds r0, r5, #0
bl PrepareAffineAnimInTaskData
ldr r1, _081068C8
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
movs r1, #4
strh r1, [r0, #0x24]
b _081068F4
.align 2, 0
_081068C0: .4byte 0x03005B60
_081068C4: .4byte 0x0856F56C
_081068C8: .4byte 0x020205AC
_081068CC:
ldr r1, _081068FC
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r4, r0, r1
ldrh r0, [r4, #0x24]
rsbs r0, r0, #0
strh r0, [r4, #0x24]
adds r0, r5, #0
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _081068F4
strh r0, [r4, #0x24]
strh r0, [r4, #0x26]
adds r0, r6, #0
bl DestroyAnimVisualTask
_081068F4:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_081068FC: .4byte 0x020205AC
thumb_func_end sub_08106870
thumb_func_start sub_08106900
sub_08106900: @ 0x08106900
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r6, r0, #0
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _08106950
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
adds r5, r0, r1
ldrh r0, [r5, #8]
adds r0, #1
strh r0, [r5, #8]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
bne _0810695C
movs r0, #0
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r2, _08106954
adds r0, r5, #0
bl PrepareAffineAnimInTaskData
ldr r1, _08106958
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r0, r1
movs r1, #4
strh r1, [r0, #0x24]
b _08106984
.align 2, 0
_08106950: .4byte 0x03005B60
_08106954: .4byte 0x0856F56C
_08106958: .4byte 0x020205AC
_0810695C:
ldr r1, _0810698C
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r4, r0, r1
ldrh r0, [r4, #0x24]
rsbs r0, r0, #0
strh r0, [r4, #0x24]
adds r0, r5, #0
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _08106984
strh r0, [r4, #0x24]
strh r0, [r4, #0x26]
adds r0, r6, #0
bl DestroyAnimVisualTask
_08106984:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810698C: .4byte 0x020205AC
thumb_func_end sub_08106900
thumb_func_start sub_08106990
sub_08106990: @ 0x08106990
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
movs r0, #0x5f
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x20]
strh r0, [r4, #0x30]
ldr r5, _081069D4
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x32]
ldrh r0, [r4, #0x22]
strh r0, [r4, #0x34]
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x36]
adds r0, r4, #0
bl InitAnimLinearTranslation
ldr r0, _081069D8
str r0, [r4, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081069D4: .4byte 0x020380D7
_081069D8: .4byte 0x081069DD
thumb_func_end sub_08106990
thumb_func_start sub_081069DC
sub_081069DC: @ 0x081069DC
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
bne _08106A06
movs r1, #0x38
ldrsh r0, [r4, r1]
movs r1, #0xe
bl Sin
ldrh r1, [r4, #0x26]
adds r0, r0, r1
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x38]
adds r0, #4
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x38]
b _08106A0C
_08106A06:
adds r0, r4, #0
bl DestroyAnimSprite
_08106A0C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081069DC
thumb_func_start sub_08106A14
sub_08106A14: @ 0x08106A14
push {r4, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x2e]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08106A38
ldr r1, _08106A34
ldrh r0, [r1]
strh r0, [r4, #0x30]
ldrh r0, [r1, #2]
strh r0, [r4, #0x32]
adds r0, r2, #1
strh r0, [r4, #0x2e]
b _08106A94
.align 2, 0
_08106A34: .4byte 0x020380BE
_08106A38:
ldrh r0, [r4, #0x30]
ldrh r2, [r4, #0x36]
adds r0, r0, r2
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x24]
movs r1, #0x34
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x34]
adds r0, #3
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x34]
cmp r0, #0x64
ble _08106A86
movs r0, #0x34
ldrsh r1, [r4, r0]
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r0, r0, #1
lsls r0, r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x3e
movs r0, #1
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_08106A86:
movs r1, #0x34
ldrsh r0, [r4, r1]
cmp r0, #0x78
ble _08106A94
adds r0, r4, #0
bl DestroyAnimSprite
_08106A94:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08106A14
thumb_func_start sub_08106A9C
sub_08106A9C: @ 0x08106A9C
push {lr}
ldr r2, _08106AC0
ldrh r1, [r2]
strh r1, [r0, #0x20]
movs r1, #0xa0
strh r1, [r0, #0x22]
ldrh r1, [r2, #4]
strh r1, [r0, #0x2e]
ldrh r1, [r2, #2]
strh r1, [r0, #0x30]
ldr r1, _08106AC4
str r1, [r0, #0x1c]
ldr r1, _08106AC8
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_08106AC0: .4byte 0x020380BE
_08106AC4: .4byte 0x080A5D79
_08106AC8: .4byte 0x08106ACD
thumb_func_end sub_08106A9C
thumb_func_start sub_08106ACC
sub_08106ACC: @ 0x08106ACC
push {r4, r5, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x30]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
rsbs r0, r0, #0
strh r0, [r4, #0x26]
movs r1, #0x34
ldrsh r0, [r4, r1]
movs r1, #4
bl Sin
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x34]
adds r0, #3
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x34]
ldrh r0, [r4, #0x26]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
lsls r0, r0, #0x10
asrs r5, r0, #0x10
cmp r5, #0x48
bgt _08106B32
movs r0, #0x34
ldrsh r1, [r4, r0]
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r0, r0, #1
lsls r0, r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x3e
movs r0, #1
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
cmp r5, #0x40
bgt _08106B32
adds r0, r4, #0
bl DestroyAnimSprite
_08106B32:
pop {r4, r5}
pop {r0}
bx r0
thumb_func_end sub_08106ACC
thumb_func_start AnimTask_HeartsBackground
AnimTask_HeartsBackground: @ 0x08106B38
push {r4, r5, lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r1, _08106BD8
movs r0, #0x50
bl SetGpuReg
movs r1, #0x80
lsls r1, r1, #5
movs r0, #0x52
bl SetGpuReg
movs r0, #1
movs r1, #4
movs r2, #3
bl SetAnimBgAttribute
movs r0, #1
movs r1, #0
movs r2, #0
bl SetAnimBgAttribute
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08106B7A
movs r0, #1
movs r1, #3
movs r2, #1
bl SetAnimBgAttribute
_08106B7A:
ldr r0, _08106BDC
movs r1, #0
strh r1, [r0]
ldr r4, _08106BE0
strh r1, [r4]
movs r0, #0x14
movs r1, #0
bl SetGpuReg
ldrh r1, [r4]
movs r0, #0x16
bl SetGpuReg
mov r0, sp
bl sub_080A63F8
mov r0, sp
ldrb r0, [r0, #9]
ldr r1, _08106BE4
mov r2, sp
ldrh r2, [r2, #0xa]
bl AnimLoadCompressedBgGfx
ldr r1, _08106BE8
mov r0, sp
movs r2, #0
bl sub_080A6628
ldr r0, _08106BEC
mov r1, sp
ldrb r1, [r1, #8]
lsls r1, r1, #4
movs r2, #0x20
bl LoadCompressedPalette
ldr r1, _08106BF0
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r1
ldr r1, _08106BF4
str r1, [r0]
add sp, #0x10
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106BD8: .4byte 0x00003F42
_08106BDC: .4byte 0x02022ACC
_08106BE0: .4byte 0x02022ACE
_08106BE4: .4byte 0x08C23384
_08106BE8: .4byte 0x08C23E1C
_08106BEC: .4byte 0x08C23DF4
_08106BF0: .4byte 0x03005B60
_08106BF4: .4byte 0x08106BF9
thumb_func_end AnimTask_HeartsBackground
thumb_func_start sub_08106BF8
sub_08106BF8: @ 0x08106BF8
push {r4, r5, lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _08106C20
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r1
movs r2, #0x20
ldrsh r0, [r0, r2]
adds r2, r1, #0
cmp r0, #4
bls _08106C16
b _08106D40
_08106C16:
lsls r0, r0, #2
ldr r1, _08106C24
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08106C20: .4byte 0x03005B60
_08106C24: .4byte 0x08106C28
_08106C28: @ jump table
.4byte _08106C3C @ case 0
.4byte _08106C80 @ case 1
.4byte _08106CA2 @ case 2
.4byte _08106CE6 @ case 3
.4byte _08106D0C @ case 4
_08106C3C:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r4, r0, r2
ldrh r0, [r4, #0x1c]
adds r0, #1
movs r5, #0
strh r0, [r4, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
bne _08106D40
strh r5, [r4, #0x1c]
ldrh r1, [r4, #0x1e]
adds r1, #1
strh r1, [r4, #0x1e]
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x52
bl SetGpuReg
movs r1, #0x1e
ldrsh r0, [r4, r1]
cmp r0, #0x10
bne _08106D40
ldrh r0, [r4, #0x20]
adds r0, #1
strh r0, [r4, #0x20]
strh r5, [r4, #0x1e]
b _08106D40
_08106C80:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r1, r0, r2
ldrh r0, [r1, #0x1e]
adds r0, #1
strh r0, [r1, #0x1e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x8d
bne _08106D40
movs r0, #0x10
strh r0, [r1, #0x1e]
ldrh r0, [r1, #0x20]
adds r0, #1
strh r0, [r1, #0x20]
b _08106D40
_08106CA2:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r4, r0, r2
ldrh r0, [r4, #0x1c]
adds r0, #1
strh r0, [r4, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
bne _08106D40
movs r0, #0
strh r0, [r4, #0x1c]
ldrh r1, [r4, #0x1e]
subs r1, #1
strh r1, [r4, #0x1e]
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x52
bl SetGpuReg
movs r2, #0x1e
ldrsh r1, [r4, r2]
cmp r1, #0
bne _08106D40
ldrh r0, [r4, #0x20]
adds r0, #1
strh r0, [r4, #0x20]
strh r1, [r4, #0x1e]
b _08106D40
_08106CE6:
mov r0, sp
bl sub_080A63F8
mov r0, sp
ldrb r0, [r0, #9]
bl sub_080A6530
ldr r1, _08106D08
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r1
ldrh r1, [r0, #0x20]
adds r1, #1
strh r1, [r0, #0x20]
b _08106D40
.align 2, 0
_08106D08: .4byte 0x03005B60
_08106D0C:
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08106D20
movs r0, #1
movs r1, #3
movs r2, #0
bl SetAnimBgAttribute
_08106D20:
movs r0, #0x50
movs r1, #0
bl SetGpuReg
movs r0, #0x52
movs r1, #0
bl SetGpuReg
movs r0, #1
movs r1, #4
movs r2, #1
bl SetAnimBgAttribute
adds r0, r4, #0
bl DestroyAnimVisualTask
_08106D40:
add sp, #0x10
pop {r4, r5}
pop {r0}
bx r0
thumb_func_end sub_08106BF8
thumb_func_start sub_08106D48
sub_08106D48: @ 0x08106D48
push {r4, r5, lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r1, _08106DB8
movs r0, #0x50
bl SetGpuReg
movs r1, #0x80
lsls r1, r1, #5
movs r0, #0x52
bl SetGpuReg
movs r0, #1
movs r1, #4
movs r2, #1
bl SetAnimBgAttribute
movs r0, #1
movs r1, #0
movs r2, #0
bl SetAnimBgAttribute
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08106D8A
movs r0, #1
movs r1, #3
movs r2, #1
bl SetAnimBgAttribute
_08106D8A:
ldr r0, _08106DBC
movs r1, #0
strh r1, [r0]
ldr r4, _08106DC0
strh r1, [r4]
movs r0, #0x14
movs r1, #0
bl SetGpuReg
ldrh r1, [r4]
movs r0, #0x16
bl SetGpuReg
mov r0, sp
bl sub_080A63F8
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
beq _08106DC8
ldr r1, _08106DC4
b _08106DDA
.align 2, 0
_08106DB8: .4byte 0x00003F42
_08106DBC: .4byte 0x02022ACC
_08106DC0: .4byte 0x02022ACE
_08106DC4: .4byte 0x08D93914
_08106DC8:
ldr r0, _08106DE4
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08106DEC
ldr r1, _08106DE8
_08106DDA:
mov r0, sp
movs r2, #0
bl sub_080A6628
b _08106DF6
.align 2, 0
_08106DE4: .4byte 0x020380D7
_08106DE8: .4byte 0x08D9354C
_08106DEC:
ldr r1, _08106E28
mov r0, sp
movs r2, #0
bl sub_080A6628
_08106DF6:
mov r0, sp
ldrb r0, [r0, #9]
ldr r1, _08106E2C
mov r2, sp
ldrh r2, [r2, #0xa]
bl AnimLoadCompressedBgGfx
ldr r0, _08106E30
mov r1, sp
ldrb r1, [r1, #8]
lsls r1, r1, #4
movs r2, #0x20
bl LoadCompressedPalette
ldr r1, _08106E34
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r1
ldr r1, _08106E38
str r1, [r0]
add sp, #0x10
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106E28: .4byte 0x08D93730
_08106E2C: .4byte 0x08C24A9C
_08106E30: .4byte 0x08C24A74
_08106E34: .4byte 0x03005B60
_08106E38: .4byte 0x08106E3D
thumb_func_end sub_08106D48
thumb_func_start sub_08106E3C
sub_08106E3C: @ 0x08106E3C
push {r4, r5, lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, _08106E64
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r1
movs r2, #0x20
ldrsh r0, [r0, r2]
adds r2, r1, #0
cmp r0, #4
bls _08106E5A
b _08106F80
_08106E5A:
lsls r0, r0, #2
ldr r1, _08106E68
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08106E64: .4byte 0x03005B60
_08106E68: .4byte 0x08106E6C
_08106E6C: @ jump table
.4byte _08106E80 @ case 0
.4byte _08106EC4 @ case 1
.4byte _08106EE6 @ case 2
.4byte _08106F2A @ case 3
.4byte _08106F4C @ case 4
_08106E80:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r4, r0, r2
ldrh r0, [r4, #0x1c]
adds r0, #1
movs r5, #0
strh r0, [r4, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #2
bne _08106F80
strh r5, [r4, #0x1c]
ldrh r1, [r4, #0x1e]
adds r1, #1
strh r1, [r4, #0x1e]
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x52
bl SetGpuReg
movs r1, #0x1e
ldrsh r0, [r4, r1]
cmp r0, #0xe
bne _08106F80
ldrh r0, [r4, #0x20]
adds r0, #1
strh r0, [r4, #0x20]
strh r5, [r4, #0x1e]
b _08106F80
_08106EC4:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r1, r0, r2
ldrh r0, [r1, #0x1e]
adds r0, #1
strh r0, [r1, #0x1e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x15
bne _08106F80
movs r0, #0xe
strh r0, [r1, #0x1e]
ldrh r0, [r1, #0x20]
adds r0, #1
strh r0, [r1, #0x20]
b _08106F80
_08106EE6:
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r4, r0, r2
ldrh r0, [r4, #0x1c]
adds r0, #1
strh r0, [r4, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #2
bne _08106F80
movs r0, #0
strh r0, [r4, #0x1c]
ldrh r1, [r4, #0x1e]
subs r1, #1
strh r1, [r4, #0x1e]
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x52
bl SetGpuReg
movs r2, #0x1e
ldrsh r1, [r4, r2]
cmp r1, #0
bne _08106F80
ldrh r0, [r4, #0x20]
adds r0, #1
strh r0, [r4, #0x20]
strh r1, [r4, #0x1e]
b _08106F80
_08106F2A:
mov r0, sp
bl sub_080A63F8
movs r0, #1
bl sub_080A6530
movs r0, #2
bl sub_080A6530
ldr r0, _08106F88
lsls r1, r4, #2
adds r1, r1, r4
lsls r1, r1, #3
adds r1, r1, r0
ldrh r0, [r1, #0x20]
adds r0, #1
strh r0, [r1, #0x20]
_08106F4C:
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _08106F60
movs r0, #1
movs r1, #3
movs r2, #0
bl SetAnimBgAttribute
_08106F60:
movs r0, #0x50
movs r1, #0
bl SetGpuReg
movs r0, #0x52
movs r1, #0
bl SetGpuReg
movs r0, #1
movs r1, #4
movs r2, #1
bl SetAnimBgAttribute
adds r0, r4, #0
bl DestroyAnimVisualTask
_08106F80:
add sp, #0x10
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106F88: .4byte 0x03005B60
thumb_func_end sub_08106E3C
thumb_func_start AnimOrbitFast
AnimOrbitFast: @ 0x08106F8C
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _08106FE0
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x20]
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x22]
adds r2, r4, #0
adds r2, #0x2c
ldrb r0, [r2]
movs r1, #0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08106FE4
ldrh r0, [r1]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #2]
strh r0, [r4, #0x30]
ldrb r0, [r5]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x3c]
ldr r1, _08106FE8
str r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08106FE0: .4byte 0x020380D6
_08106FE4: .4byte 0x020380BE
_08106FE8: .4byte 0x08106FED
thumb_func_end AnimOrbitFast
thumb_func_start AnimOrbitFastStep
AnimOrbitFastStep: @ 0x08106FEC
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x30]
subs r0, #0x40
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x7f
bhi _08107002
ldrh r0, [r4, #0x3c]
adds r0, #1
b _08107006
_08107002:
ldrh r0, [r4, #0x3c]
subs r0, #1
_08107006:
adds r1, r4, #0
adds r1, #0x43
strb r0, [r1]
movs r1, #0x30
ldrsh r0, [r4, r1]
ldrh r1, [r4, #0x32]
lsls r1, r1, #0x10
asrs r1, r1, #0x18
bl Sin
strh r0, [r4, #0x24]
movs r2, #0x30
ldrsh r0, [r4, r2]
ldrh r1, [r4, #0x34]
lsls r1, r1, #0x10
asrs r1, r1, #0x18
bl Cos
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x30]
adds r0, #9
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x30]
movs r3, #0x38
ldrsh r2, [r4, r3]
cmp r2, #0
beq _08107078
cmp r2, #1
bne _081070A8
ldr r1, _08107070
adds r0, r1, #0
ldrh r2, [r4, #0x32]
adds r0, r0, r2
strh r0, [r4, #0x32]
ldr r3, _08107074
adds r0, r3, #0
ldrh r1, [r4, #0x34]
adds r0, r0, r1
strh r0, [r4, #0x34]
ldrh r0, [r4, #0x36]
adds r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
bne _081070A8
movs r0, #2
strh r0, [r4, #0x38]
b _081070B8
.align 2, 0
_08107070: .4byte 0xFFFFFC00
_08107074: .4byte 0xFFFFFF00
_08107078:
movs r3, #0x80
lsls r3, r3, #3
adds r0, r3, #0
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
movs r3, #0x80
lsls r3, r3, #1
adds r0, r3, #0
ldrh r1, [r4, #0x34]
adds r0, r0, r1
strh r0, [r4, #0x34]
ldrh r0, [r4, #0x36]
adds r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
bne _081070A8
strh r2, [r4, #0x36]
movs r0, #1
strh r0, [r4, #0x38]
_081070A8:
ldr r0, _081070C0
ldrh r1, [r0, #0xe]
ldr r0, _081070C4
cmp r1, r0
bne _081070B8
adds r0, r4, #0
bl DestroyAnimSprite
_081070B8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081070C0: .4byte 0x020380BE
_081070C4: .4byte 0x0000FFFF
thumb_func_end AnimOrbitFastStep
thumb_func_start AnimOrbitScatter
AnimOrbitScatter: @ 0x081070C8
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _08107110
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldr r4, _08107114
movs r1, #0
ldrsh r0, [r4, r1]
movs r1, #0xa
bl Sin
strh r0, [r5, #0x2e]
movs r1, #0
ldrsh r0, [r4, r1]
movs r1, #7
bl Cos
strh r0, [r5, #0x30]
ldr r0, _08107118
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08107110: .4byte 0x020380D6
_08107114: .4byte 0x020380BE
_08107118: .4byte 0x0810711D
thumb_func_end AnimOrbitScatter
thumb_func_start AnimOrbitScatterStep
AnimOrbitScatterStep: @ 0x0810711C
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x2e]
ldrh r1, [r2, #0x24]
adds r0, r0, r1
strh r0, [r2, #0x24]
ldrh r0, [r2, #0x30]
ldrh r3, [r2, #0x26]
adds r0, r0, r3
strh r0, [r2, #0x26]
movs r1, #0x20
ldrsh r0, [r2, r1]
movs r3, #0x24
ldrsh r1, [r2, r3]
adds r0, r0, r1
adds r0, #0x10
movs r1, #0x88
lsls r1, r1, #1
cmp r0, r1
bhi _0810715A
movs r0, #0x22
ldrsh r1, [r2, r0]
movs r3, #0x26
ldrsh r0, [r2, r3]
adds r1, r1, r0
cmp r1, #0xa0
bgt _0810715A
movs r0, #0x10
rsbs r0, r0, #0
cmp r1, r0
bge _08107160
_0810715A:
adds r0, r2, #0
bl DestroyAnimSprite
_08107160:
pop {r0}
bx r0
thumb_func_end AnimOrbitScatterStep
thumb_func_start sub_08107164
sub_08107164: @ 0x08107164
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x2e]
ldrh r1, [r2, #0x24]
adds r0, r0, r1
strh r0, [r2, #0x24]
ldrh r0, [r2, #0x30]
ldrh r3, [r2, #0x26]
adds r0, r0, r3
strh r0, [r2, #0x26]
ldrh r0, [r2, #0x34]
adds r1, r0, #1
strh r1, [r2, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r3, #0x32
ldrsh r1, [r2, r3]
cmp r0, r1
blt _08107190
adds r0, r2, #0
bl DestroyAnimSprite
_08107190:
pop {r0}
bx r0
thumb_func_end sub_08107164
thumb_func_start sub_08107194
sub_08107194: @ 0x08107194
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _081071E0
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldr r4, _081071E4
movs r1, #0
ldrsh r0, [r4, r1]
movs r1, #0xa
bl Sin
strh r0, [r5, #0x2e]
movs r1, #0
ldrsh r0, [r4, r1]
movs r1, #7
bl Cos
strh r0, [r5, #0x30]
ldrh r0, [r4, #2]
strh r0, [r5, #0x32]
ldr r0, _081071E8
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081071E0: .4byte 0x020380D6
_081071E4: .4byte 0x020380BE
_081071E8: .4byte 0x08107165
thumb_func_end sub_08107194
thumb_func_start sub_081071EC
sub_081071EC: @ 0x081071EC
push {lr}
adds r2, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08107202
adds r0, r2, #0
bl DestroyAnimSprite
_08107202:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081071EC
thumb_func_start sub_08107208
sub_08107208: @ 0x08107208
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r0, _0810721C
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810721C: .4byte 0x081071ED
thumb_func_end sub_08107208
thumb_func_start sub_08107220
sub_08107220: @ 0x08107220
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _0810723E
ldr r0, _081072B0
ldrh r1, [r0]
ldrh r2, [r4, #0x20]
adds r1, r1, r2
strh r1, [r4, #0x20]
ldrh r0, [r0, #2]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
_0810723E:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
movs r2, #0x2e
ldrsh r1, [r4, r2]
lsls r0, r1, #2
adds r0, r0, r1
lsls r5, r0, #1
movs r0, #0xff
ands r5, r0
adds r0, r5, #0
movs r1, #0x50
bl Sin
lsls r0, r0, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x24]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0x4f
bgt _08107282
adds r0, r5, #0
movs r1, #0x50
bl Cos
movs r2, #0x2e
ldrsh r1, [r4, r2]
lsrs r2, r1, #0x1f
adds r1, r1, r2
asrs r1, r1, #1
lsls r0, r0, #0x10
asrs r0, r0, #0x18
adds r1, r1, r0
strh r1, [r4, #0x26]
_08107282:
movs r0, #0x2e
ldrsh r2, [r4, r0]
cmp r2, #0x5a
ble _081072A0
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
movs r0, #0x32
ldrsh r1, [r4, r0]
lsrs r0, r1, #0x1f
adds r1, r1, r0
asrs r1, r1, #1
ldrh r0, [r4, #0x24]
subs r0, r0, r1
strh r0, [r4, #0x24]
_081072A0:
cmp r2, #0x64
ble _081072AA
adds r0, r4, #0
bl DestroyAnimSprite
_081072AA:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081072B0: .4byte 0x020380BE
thumb_func_end sub_08107220
thumb_func_start sub_081072B4
sub_081072B4: @ 0x081072B4
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x38]
adds r0, #1
strh r0, [r4, #0x38]
movs r1, #0x34
ldrsh r0, [r4, r1]
movs r1, #5
bl Sin
strh r0, [r4, #0x24]
movs r1, #0x38
ldrsh r0, [r4, r1]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x34]
adds r0, #3
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x34]
movs r1, #0x38
ldrsh r0, [r4, r1]
cmp r0, #0x14
ble _0810730A
adds r1, r0, #0
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r0, r0, #1
lsls r0, r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x3e
movs r0, #1
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_0810730A:
movs r1, #0x38
ldrsh r0, [r4, r1]
cmp r0, #0x1e
ble _08107318
adds r0, r4, #0
bl DestroyAnimSprite
_08107318:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081072B4
thumb_func_start sub_08107320
sub_08107320: @ 0x08107320
push {r4, r5, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x2e]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08107344
ldr r1, _08107340
ldrh r0, [r1]
strh r0, [r4, #0x30]
ldrh r0, [r1, #2]
strh r0, [r4, #0x32]
adds r0, r2, #1
strh r0, [r4, #0x2e]
b _08107398
.align 2, 0
_08107340: .4byte 0x020380BE
_08107344:
ldrh r0, [r4, #0x30]
ldrh r2, [r4, #0x36]
adds r0, r0, r2
movs r5, #0
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
strh r0, [r4, #0x24]
movs r1, #0x34
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
bl Sin
adds r2, r0, #0
strh r2, [r4, #0x26]
ldrh r0, [r4, #0x34]
adds r0, #3
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x34]
cmp r0, #0x46
ble _08107398
ldr r0, _081073A0
str r0, [r4, #0x1c]
ldrh r0, [r4, #0x24]
ldrh r1, [r4, #0x20]
adds r0, r0, r1
strh r0, [r4, #0x20]
ldrh r1, [r4, #0x22]
adds r0, r2, r1
strh r0, [r4, #0x22]
strh r5, [r4, #0x24]
strh r5, [r4, #0x26]
bl Random2
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0xb4
bl __umodsi3
strh r0, [r4, #0x34]
_08107398:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081073A0: .4byte 0x081072B5
thumb_func_end sub_08107320
thumb_func_start sub_081073A4
sub_081073A4: @ 0x081073A4
push {r4, lr}
adds r4, r0, #0
movs r1, #0x34
ldrsh r0, [r4, r1]
cmp r0, #0
bne _081073DE
ldr r1, _081074A0
ldrh r0, [r1]
ldrh r2, [r4, #0x20]
adds r0, r0, r2
strh r0, [r4, #0x20]
ldrh r0, [r1, #2]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
adds r0, r4, #0
movs r1, #0
bl StartSpriteAnim
ldr r0, _081074A4
ldrb r0, [r0]
bl GetBattlerSpriteSubpriority
subs r0, #1
adds r1, r4, #0
adds r1, #0x43
strb r0, [r1]
movs r0, #1
strh r0, [r4, #0x32]
_081073DE:
ldrh r0, [r4, #0x32]
ldrh r2, [r4, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
movs r1, #0x2e
ldrsh r0, [r4, r1]
lsls r1, r0, #2
adds r0, r1, #0
cmp r1, #0
bge _081073F4
adds r0, #0xff
_081073F4:
asrs r0, r0, #8
lsls r0, r0, #8
subs r0, r1, r0
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
cmp r0, #0
bge _08107406
movs r0, #0
strh r0, [r4, #0x30]
_08107406:
movs r0, #0x30
ldrsh r2, [r4, r0]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bge _08107414
adds r0, #3
_08107414:
asrs r0, r0, #2
movs r1, #0x1e
subs r1, r1, r0
adds r0, r2, #0
bl Cos
strh r0, [r4, #0x24]
movs r0, #0x30
ldrsh r2, [r4, r0]
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bge _08107430
adds r0, #7
_08107430:
asrs r0, r0, #3
movs r1, #0xa
subs r1, r1, r0
adds r0, r2, #0
bl Sin
strh r0, [r4, #0x26]
movs r2, #0x30
ldrsh r0, [r4, r2]
cmp r0, #0x80
ble _08107454
ldrh r1, [r4, #0x32]
movs r2, #0x32
ldrsh r0, [r4, r2]
cmp r0, #0
ble _08107454
ldr r0, _081074A8
strh r0, [r4, #0x32]
_08107454:
movs r1, #0x30
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08107468
movs r2, #0x32
ldrsh r0, [r4, r2]
cmp r0, #0
bge _08107468
movs r0, #1
strh r0, [r4, #0x32]
_08107468:
ldrh r0, [r4, #0x34]
adds r1, r0, #1
strh r1, [r4, #0x34]
subs r0, #9
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x46
bls _081074AC
movs r0, #0x2e
ldrsh r1, [r4, r0]
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r0, r0, #1
lsls r0, r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x3e
movs r0, #1
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _081074BA
.align 2, 0
_081074A0: .4byte 0x020380BE
_081074A4: .4byte 0x020380D7
_081074A8: .4byte 0x0000FFFF
_081074AC:
adds r2, r4, #0
adds r2, #0x3e
ldrb r1, [r2]
movs r0, #5
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
_081074BA:
movs r1, #0x34
ldrsh r0, [r4, r1]
cmp r0, #0x5a
ble _081074C8
adds r0, r4, #0
bl DestroyAnimSprite
_081074C8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081073A4
thumb_func_start sub_081074D0
sub_081074D0: @ 0x081074D0
push {r4, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08107504
ldr r1, _08107500
ldrh r0, [r1]
ldrh r2, [r4, #0x20]
adds r0, r0, r2
strh r0, [r4, #0x20]
ldrh r0, [r1, #2]
ldrh r2, [r4, #0x22]
adds r0, r0, r2
strh r0, [r4, #0x22]
ldrb r1, [r1, #4]
adds r0, r4, #0
bl StartSpriteAnim
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _08107518
.align 2, 0
_08107500: .4byte 0x020380BE
_08107504:
adds r0, r4, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08107518
adds r0, r4, #0
bl DestroyAnimSprite
_08107518:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_081074D0
thumb_func_start sub_08107520
sub_08107520: @ 0x08107520
push {r4, r5, lr}
adds r5, r0, #0
ldr r1, _08107538
movs r2, #4
ldrsh r0, [r1, r2]
cmp r0, #0
bne _0810753C
adds r0, r5, #0
bl DestroyAnimSprite
b _081075A0
.align 2, 0
_08107538: .4byte 0x020380BE
_0810753C:
movs r2, #0
ldrsh r0, [r1, r2]
cmp r0, #0
bne _0810754C
ldr r4, _08107548
b _0810754E
.align 2, 0
_08107548: .4byte 0x020380D6
_0810754C:
ldr r4, _0810757C
_0810754E:
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldr r0, _08107580
movs r2, #2
ldrsh r1, [r0, r2]
adds r2, r0, #0
cmp r1, #0
bne _08107584
ldrh r0, [r5, #0x20]
adds r0, #0x20
b _08107588
.align 2, 0
_0810757C: .4byte 0x020380D7
_08107580: .4byte 0x020380BE
_08107584:
ldrh r0, [r5, #0x20]
subs r0, #0x20
_08107588:
strh r0, [r5, #0x20]
ldrh r0, [r2, #4]
strh r0, [r5, #0x2e]
ldrh r1, [r2, #2]
strh r1, [r5, #0x30]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r5, #0
bl StartSpriteAnim
ldr r0, _081075A8
str r0, [r5, #0x1c]
_081075A0:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081075A8: .4byte 0x081075AD
thumb_func_end sub_08107520
thumb_func_start sub_081075AC
sub_081075AC: @ 0x081075AC
push {lr}
adds r2, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _081075DC
ldrh r0, [r2, #0x2e]
subs r0, #1
strh r0, [r2, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
beq _081075D6
ldrh r1, [r2, #0x30]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r2, #0
bl StartSpriteAnim
b _081075DC
_081075D6:
adds r0, r2, #0
bl DestroyAnimSprite
_081075DC:
pop {r0}
bx r0
thumb_func_end sub_081075AC
thumb_func_start sub_081075E0
sub_081075E0: @ 0x081075E0
push {r4, r5, lr}
adds r5, r0, #0
lsls r5, r5, #0x18
lsrs r5, r5, #0x18
ldr r0, _08107614
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
lsls r4, r5, #2
adds r4, r4, r5
lsls r4, r4, #3
ldr r0, _08107618
adds r4, r4, r0
ldr r2, _0810761C
adds r0, r4, #0
bl PrepareAffineAnimInTaskData
ldr r0, _08107620
str r0, [r4]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08107614: .4byte 0x020380BE
_08107618: .4byte 0x03005B60
_0810761C: .4byte 0x0856F77C
_08107620: .4byte 0x08107625
thumb_func_end sub_081075E0
thumb_func_start sub_08107624
sub_08107624: @ 0x08107624
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _0810764C
adds r0, r0, r1
bl RunAffineAnimFromTaskData
lsls r0, r0, #0x18
cmp r0, #0
bne _08107644
adds r0, r4, #0
bl DestroyAnimVisualTask
_08107644:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810764C: .4byte 0x03005B60
thumb_func_end sub_08107624
thumb_func_start sub_08107650
sub_08107650: @ 0x08107650
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r0, _08107664
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810766C
ldr r0, _08107668
b _0810766E
.align 2, 0
_08107664: .4byte 0x020380BE
_08107668: .4byte 0x020380D6
_0810766C:
ldr r0, _08107704
_0810766E:
ldrb r6, [r0]
adds r0, r6, #0
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08107688
ldr r1, _08107708
movs r2, #2
ldrsh r0, [r1, r2]
rsbs r0, r0, #0
strh r0, [r1, #2]
_08107688:
adds r0, r6, #0
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r7, _08107708
lsrs r0, r0, #0x18
ldrh r3, [r7, #2]
adds r0, r0, r3
movs r4, #0
strh r0, [r5, #0x20]
adds r0, r6, #0
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r7, #4]
adds r0, r0, r1
strh r0, [r5, #0x22]
strh r4, [r5, #0x2e]
ldrh r1, [r5, #0x20]
lsls r1, r1, #3
strh r1, [r5, #0x30]
lsls r0, r0, #3
strh r0, [r5, #0x32]
movs r2, #2
ldrsh r0, [r7, r2]
lsls r0, r0, #3
cmp r0, #0
bge _081076C8
adds r0, #7
_081076C8:
asrs r0, r0, #3
strh r0, [r5, #0x34]
movs r3, #4
ldrsh r0, [r7, r3]
lsls r0, r0, #3
cmp r0, #0
bge _081076D8
adds r0, #7
_081076D8:
asrs r0, r0, #3
strh r0, [r5, #0x36]
ldrh r2, [r5, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
movs r3, #6
ldrsh r0, [r7, r3]
lsls r0, r0, #4
adds r1, r1, r0
ldr r3, _0810770C
adds r0, r3, #0
ands r1, r0
ldr r0, _08107710
ands r0, r2
orrs r0, r1
strh r0, [r5, #4]
ldr r0, _08107714
str r0, [r5, #0x1c]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08107704: .4byte 0x020380D7
_08107708: .4byte 0x020380BE
_0810770C: .4byte 0x000003FF
_08107710: .4byte 0xFFFFFC00
_08107714: .4byte 0x08107719
thumb_func_end sub_08107650
thumb_func_start sub_08107718
sub_08107718: @ 0x08107718
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x34]
ldrh r1, [r2, #0x30]
adds r0, r0, r1
strh r0, [r2, #0x30]
ldrh r1, [r2, #0x36]
ldrh r3, [r2, #0x32]
adds r1, r1, r3
strh r1, [r2, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x13
strh r0, [r2, #0x20]
lsls r1, r1, #0x10
asrs r1, r1, #0x13
strh r1, [r2, #0x22]
ldrh r0, [r2, #0x2e]
adds r0, #1
strh r0, [r2, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x10
ble _0810774C
adds r0, r2, #0
bl DestroyAnimSprite
_0810774C:
pop {r0}
bx r0
thumb_func_end sub_08107718
thumb_func_start sub_08107750
sub_08107750: @ 0x08107750
push {r4, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08107772
ldr r0, _081077AC
ldrh r1, [r0]
movs r0, #0x78
subs r0, r0, r1
strh r0, [r4, #0x30]
adds r2, r4, #0
adds r2, #0x3e
ldrb r0, [r2]
movs r1, #4
orrs r0, r1
strb r0, [r2]
_08107772:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x30
ldrsh r1, [r4, r2]
cmp r0, r1
bne _08107790
ldrb r0, [r4, #5]
lsrs r0, r0, #4
adds r0, #0x10
movs r1, #0
bl SetGreyscaleOrOriginalPalette
_08107790:
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r2, #0x30
ldrsh r0, [r4, r2]
adds r0, #0x50
cmp r1, r0
bne _081077A4
adds r0, r4, #0
bl DestroyAnimSprite
_081077A4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081077AC: .4byte 0x020380BE
thumb_func_end sub_08107750
thumb_func_start sub_081077B0
sub_081077B0: @ 0x081077B0
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r1, #0x2e
ldrsh r0, [r6, r1]
cmp r0, #0
bne _081077DE
movs r5, #0x78
strh r5, [r6, #0x20]
ldr r4, _08107860
movs r2, #0
ldrsh r0, [r4, r2]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
subs r0, #0xf
strh r0, [r6, #0x22]
ldrb r1, [r4, #2]
adds r0, r6, #0
bl StartSpriteAnim
strh r5, [r6, #0x38]
ldrh r0, [r4, #4]
strh r0, [r6, #0x34]
_081077DE:
ldrh r0, [r6, #0x2e]
adds r0, #1
movs r5, #0
strh r0, [r6, #0x2e]
movs r1, #0x2e
ldrsh r0, [r6, r1]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r6, #0x30]
movs r2, #0x2e
ldrsh r0, [r6, r2]
lsls r4, r0, #1
adds r4, r4, r0
ldrh r0, [r6, #0x34]
adds r4, r4, r0
movs r2, #0xff
ldrh r0, [r6, #0x3a]
adds r0, #0xa
movs r1, #0xff
ands r0, r1
strh r0, [r6, #0x3a]
ands r4, r2
adds r0, r4, #0
movs r1, #0x64
bl Cos
strh r0, [r6, #0x24]
adds r0, r4, #0
movs r1, #0xa
bl Sin
adds r4, r0, #0
movs r1, #0x3a
ldrsh r0, [r6, r1]
movs r1, #4
bl Cos
ldrh r2, [r6, #0x30]
adds r4, r4, r2
adds r0, r0, r4
strh r0, [r6, #0x26]
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r2, #0x38
ldrsh r0, [r6, r2]
cmp r1, r0
ble _0810785A
ldr r0, _08107864
str r0, [r6, #0x1c]
strh r5, [r6, #0x2e]
adds r0, r6, #0
bl SetSpritePrimaryCoordsFromSecondaryCoords
movs r0, #5
strh r0, [r6, #0x32]
strh r5, [r6, #0x36]
strh r5, [r6, #0x34]
adds r0, r6, #0
movs r1, #1
bl StartSpriteAffineAnim
_0810785A:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08107860: .4byte 0x020380BE
_08107864: .4byte 0x08107869
thumb_func_end sub_081077B0
thumb_func_start sub_08107868
sub_08107868: @ 0x08107868
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #0x2e]
adds r0, #1
strh r0, [r1, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xa
ble _08107882
movs r0, #0
strh r0, [r1, #0x2e]
ldr r0, _08107888
str r0, [r1, #0x1c]
_08107882:
pop {r0}
bx r0
.align 2, 0
_08107888: .4byte 0x0810788D
thumb_func_end sub_08107868
thumb_func_start sub_0810788C
sub_0810788C: @ 0x0810788C
push {r4, lr}
adds r4, r0, #0
ldrh r1, [r4, #0x32]
ldrh r2, [r4, #0x34]
adds r0, r1, r2
strh r0, [r4, #0x34]
strh r0, [r4, #0x26]
adds r1, #1
strh r1, [r4, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x30
ble _081078B6
lsls r0, r1, #0x10
cmp r0, #0
ble _081078B6
ldrh r0, [r4, #0x36]
subs r1, r0, #5
strh r1, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x36]
_081078B6:
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #3
ble _081078E8
movs r2, #0x32
ldrsh r1, [r4, r2]
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r0, r0, #1
lsls r0, r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x3e
movs r0, #1
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
adds r0, r4, #0
bl DestroyAnimSprite
_081078E8:
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #4
bne _081078F6
adds r0, r4, #0
bl DestroyAnimSprite
_081078F6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_0810788C
thumb_func_start sub_081078FC
sub_081078FC: @ 0x081078FC
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _08107940
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08107948
ldr r4, _08107944
ldrb r1, [r4]
movs r0, #2
eors r0, r1
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _08107948
ldrb r0, [r4]
adds r2, r5, #0
adds r2, #0x20
adds r3, r5, #0
adds r3, #0x22
movs r1, #0
bl SetAverageBattlerPositions
ldrh r0, [r5, #0x22]
adds r0, #0x28
strh r0, [r5, #0x22]
adds r0, r5, #0
movs r1, #1
bl StartSpriteAffineAnim
b _08107968
.align 2, 0
_08107940: .4byte 0x02022C90
_08107944: .4byte 0x020380D6
_08107948:
ldr r4, _08107988
ldrb r0, [r4]
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
ldrb r0, [r4]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #0x28
strh r0, [r5, #0x22]
_08107968:
movs r0, #0xd
strh r0, [r5, #0x2e]
ldrh r0, [r5, #0x20]
strh r0, [r5, #0x32]
ldrh r0, [r5, #0x22]
subs r0, #0x48
strh r0, [r5, #0x36]
ldr r0, _0810798C
str r0, [r5, #0x1c]
ldr r1, _08107990
adds r0, r5, #0
bl StoreSpriteCallbackInData6
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08107988: .4byte 0x020380D6
_0810798C: .4byte 0x080A67B5
_08107990: .4byte 0x080A34C5
thumb_func_end sub_081078FC
thumb_func_start AnimTask_IsFuryCutterHitRight
AnimTask_IsFuryCutterHitRight: @ 0x08107994
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r3, _081079B0
ldr r1, _081079B4
ldr r1, [r1]
ldrb r2, [r1, #0x10]
movs r1, #1
ands r1, r2
strh r1, [r3, #0xe]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_081079B0: .4byte 0x020380BE
_081079B4: .4byte 0x020380A0
thumb_func_end AnimTask_IsFuryCutterHitRight
thumb_func_start AnimTask_GetFuryCutterHitCount
AnimTask_GetFuryCutterHitCount: @ 0x081079B8
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _081079D0
ldr r1, _081079D4
ldr r1, [r1]
ldrb r1, [r1, #0x10]
strh r1, [r2, #0xe]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_081079D0: .4byte 0x020380BE
_081079D4: .4byte 0x020380A0
thumb_func_end AnimTask_GetFuryCutterHitCount