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

2597 lines
43 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start sub_0810E6C0
sub_0810E6C0: @ 0x0810E6C0
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimTarget
ldrh r0, [r4, #0x22]
adds r0, #0x14
strh r0, [r4, #0x22]
movs r0, #0xbf
strh r0, [r4, #0x30]
ldr r1, _0810E6E4
str r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810E6E4: .4byte 0x0810E6E9
thumb_func_end sub_0810E6C0
thumb_func_start sub_0810E6E8
sub_0810E6E8: @ 0x0810E6E8
push {r4, lr}
adds r4, r0, #0
movs r1, #0x30
ldrsh r0, [r4, r1]
movs r1, #0x20
bl Sin
strh r0, [r4, #0x24]
movs r1, #0x30
ldrsh r0, [r4, r1]
movs r1, #8
bl Cos
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x30]
adds r0, #5
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x30]
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x47
bne _0810E722
adds r0, r4, #0
bl DestroyAnimSprite
_0810E722:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_0810E6E8
thumb_func_start sub_0810E728
sub_0810E728: @ 0x0810E728
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _0810E758
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
adds r4, r4, r1
ldr r1, _0810E75C
ldrh r0, [r1, #2]
strh r0, [r4, #8]
ldrh r0, [r1]
strh r0, [r4, #0xa]
ldr r0, _0810E760
bl IndexOfSpritePaletteTag
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0xc]
ldr r0, _0810E764
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810E758: .4byte 0x03005B60
_0810E75C: .4byte 0x020380BE
_0810E760: .4byte 0x00002719
_0810E764: .4byte 0x0810E769
thumb_func_end sub_0810E728
thumb_func_start sub_0810E768
sub_0810E768: @ 0x0810E768
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r2, _0810E7E8
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r3, r0, r2
ldrh r0, [r3, #0x1c]
adds r1, r0, #1
strh r1, [r3, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r4, #0xa
ldrsh r1, [r3, r4]
adds r7, r2, #0
cmp r0, r1
bne _0810E7C6
movs r0, #0
strh r0, [r3, #0x1c]
ldrb r0, [r3, #0xc]
ldr r2, _0810E7EC
lsls r0, r0, #4
movs r3, #0x84
lsls r3, r3, #1
adds r1, r0, r3
lsls r1, r1, #1
adds r1, r1, r2
ldrh r6, [r1]
movs r4, #7
mov ip, r0
ldr r0, _0810E7F0
add r0, ip
lsls r0, r0, #1
adds r3, r0, r2
_0810E7AE:
ldrh r0, [r3]
strh r0, [r1]
subs r3, #2
subs r1, #2
subs r4, #1
cmp r4, #0
bgt _0810E7AE
ldr r0, _0810E7F4
add r0, ip
lsls r0, r0, #1
adds r0, r0, r2
strh r6, [r0]
_0810E7C6:
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r7
ldrh r1, [r0, #8]
subs r1, #1
strh r1, [r0, #8]
lsls r1, r1, #0x10
cmp r1, #0
bne _0810E7E0
adds r0, r5, #0
bl DestroyAnimVisualTask
_0810E7E0:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810E7E8: .4byte 0x03005B60
_0810E7EC: .4byte 0x020377B4
_0810E7F0: .4byte 0x00000107
_0810E7F4: .4byte 0x00000101
thumb_func_end sub_0810E768
thumb_func_start sub_0810E7F8
sub_0810E7F8: @ 0x0810E7F8
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r0, _0810E864
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810E818
ldr r1, _0810E868
ldrh r0, [r1, #4]
rsbs r0, r0, #0
strh r0, [r1, #4]
_0810E818:
ldr r4, _0810E868
ldrh r0, [r4, #8]
strh r0, [r6, #0x2e]
ldrh r0, [r6, #0x20]
strh r0, [r6, #0x30]
ldr r5, _0810E86C
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #4]
adds r0, r0, r1
strh r0, [r6, #0x32]
ldrh r0, [r6, #0x22]
strh r0, [r6, #0x34]
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r4, [r4, #6]
adds r0, r0, r4
strh r0, [r6, #0x36]
adds r0, r6, #0
bl InitAnimLinearTranslation
ldr r0, _0810E870
str r0, [r6, #0x1c]
ldr r1, _0810E874
adds r0, r6, #0
bl StoreSpriteCallbackInData6
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810E864: .4byte 0x020380D6
_0810E868: .4byte 0x020380BE
_0810E86C: .4byte 0x020380D7
_0810E870: .4byte 0x080A6085
_0810E874: .4byte 0x0810E879
thumb_func_end sub_0810E7F8
thumb_func_start sub_0810E878
sub_0810E878: @ 0x0810E878
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
beq _0810E88C
adds r0, r4, #0
bl DestroyAnimSprite
_0810E88C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810E878
thumb_func_start sub_0810E894
sub_0810E894: @ 0x0810E894
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0810E930
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810E8C0
ldr r1, _0810E934
ldrh r0, [r1]
rsbs r0, r0, #0
strh r0, [r1]
ldrh r0, [r1, #2]
rsbs r0, r0, #0
strh r0, [r1, #2]
ldrh r0, [r1, #4]
rsbs r0, r0, #0
strh r0, [r1, #4]
ldrh r0, [r1, #6]
rsbs r0, r0, #0
strh r0, [r1, #6]
_0810E8C0:
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
beq _0810E8D8
ldr r0, _0810E934
ldrh r1, [r0, #2]
rsbs r1, r1, #0
strh r1, [r0, #2]
ldrh r1, [r0, #6]
rsbs r1, r1, #0
strh r1, [r0, #6]
_0810E8D8:
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
ldr r2, _0810E934
ldrh r1, [r2]
ldrh r3, [r5, #0x20]
adds r1, r1, r3
strh r1, [r5, #0x20]
lsrs r0, r0, #0x18
ldrh r1, [r2, #2]
adds r0, r0, r1
strh r0, [r5, #0x22]
ldrh r0, [r2, #8]
strh r0, [r5, #0x2e]
movs r3, #0xc
ldrsh r0, [r2, r3]
cmp r0, #0
bne _0810E93C
ldr r4, _0810E938
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x32]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x36]
b _0810E94E
.align 2, 0
_0810E930: .4byte 0x020380D6
_0810E934: .4byte 0x020380BE
_0810E938: .4byte 0x020380D7
_0810E93C:
ldr r0, _0810E97C
ldrb r0, [r0]
adds r2, r5, #0
adds r2, #0x32
adds r3, r5, #0
adds r3, #0x36
movs r1, #1
bl SetAverageBattlerPositions
_0810E94E:
ldr r4, _0810E980
ldrh r0, [r4, #4]
ldrh r1, [r5, #0x32]
adds r0, r0, r1
strh r0, [r5, #0x32]
ldrh r0, [r4, #6]
ldrh r3, [r5, #0x36]
adds r0, r0, r3
strh r0, [r5, #0x36]
ldr r0, _0810E984
str r0, [r5, #0x1c]
ldr r1, _0810E988
adds r0, r5, #0
bl StoreSpriteCallbackInData6
ldrb r1, [r4, #0xa]
adds r0, r5, #0
bl SeekSpriteAnim
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810E97C: .4byte 0x020380D7
_0810E980: .4byte 0x020380BE
_0810E984: .4byte 0x080A67B5
_0810E988: .4byte 0x080A34C5
thumb_func_end sub_0810E894
thumb_func_start sub_0810E98C
sub_0810E98C: @ 0x0810E98C
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r1, _0810E9C8
ldrh r0, [r1, #4]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #6]
strh r0, [r4, #0x30]
ldr r0, _0810E9CC
str r0, [r4, #0x1c]
movs r0, #0
bl GetAnimBattlerSpriteId
ldr r2, _0810E9D0
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r0, [r1]
movs r2, #4
orrs r0, r2
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810E9C8: .4byte 0x020380BE
_0810E9CC: .4byte 0x0810E9D5
_0810E9D0: .4byte 0x020205AC
thumb_func_end sub_0810E98C
thumb_func_start sub_0810E9D4
sub_0810E9D4: @ 0x0810E9D4
push {lr}
adds r2, r0, #0
ldrh r1, [r2, #0x2e]
movs r3, #0x2e
ldrsh r0, [r2, r3]
cmp r0, #0
ble _0810E9E8
subs r0, r1, #1
strh r0, [r2, #0x2e]
b _0810E9FA
_0810E9E8:
ldrh r0, [r2, #0x30]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
ldrh r1, [r2, #0x26]
subs r1, r1, r0
strh r1, [r2, #0x26]
_0810E9FA:
movs r3, #0x22
ldrsh r0, [r2, r3]
movs r3, #0x26
ldrsh r1, [r2, r3]
adds r0, r0, r1
movs r1, #0x20
rsbs r1, r1, #0
cmp r0, r1
bge _0810EA12
adds r0, r2, #0
bl DestroyAnimSprite
_0810EA12:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810E9D4
thumb_func_start sub_0810EA18
sub_0810EA18: @ 0x0810EA18
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0810EA40
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810EA48
movs r0, #0x88
lsls r0, r0, #1
strh r0, [r5, #0x20]
ldr r0, _0810EA44
strh r0, [r5, #0x22]
adds r0, r5, #0
movs r1, #1
bl StartSpriteAffineAnim
b _0810EA4E
.align 2, 0
_0810EA40: .4byte 0x020380D6
_0810EA44: .4byte 0x0000FFE0
_0810EA48:
ldr r0, _0810EA8C
strh r0, [r5, #0x20]
strh r0, [r5, #0x22]
_0810EA4E:
ldr r0, _0810EA90
ldrh r0, [r0]
strh r0, [r5, #0x2e]
ldrh r0, [r5, #0x20]
strh r0, [r5, #0x30]
ldr r4, _0810EA94
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
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
strh r0, [r5, #0x36]
adds r0, r5, #0
bl InitAnimLinearTranslation
ldr r0, _0810EA98
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810EA8C: .4byte 0x0000FFE0
_0810EA90: .4byte 0x020380BE
_0810EA94: .4byte 0x020380D7
_0810EA98: .4byte 0x0810EA9D
thumb_func_end sub_0810EA18
thumb_func_start sub_0810EA9C
sub_0810EA9C: @ 0x0810EA9C
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strh r0, [r4, #0x2e]
adds r0, r4, #0
bl AnimTranslateLinear
ldrh r1, [r4, #0x34]
lsrs r0, r1, #8
cmp r0, #0xc8
bls _0810EAC4
ldrh r0, [r4, #0x24]
ldrh r2, [r4, #0x20]
adds r0, r0, r2
strh r0, [r4, #0x20]
movs r0, #0
strh r0, [r4, #0x24]
movs r0, #0xff
ands r0, r1
strh r0, [r4, #0x34]
_0810EAC4:
movs r1, #0x20
ldrsh r0, [r4, r1]
movs r2, #0x24
ldrsh r1, [r4, r2]
adds r0, r0, r1
adds r0, #0x20
movs r1, #0x98
lsls r1, r1, #1
cmp r0, r1
bhi _0810EAE6
movs r1, #0x22
ldrsh r0, [r4, r1]
movs r2, #0x26
ldrsh r1, [r4, r2]
adds r0, r0, r1
cmp r0, #0xa0
ble _0810EB0C
_0810EAE6:
movs r0, #0
bl GetAnimBattlerSpriteId
ldr r2, _0810EB14
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r2, [r1]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1]
adds r0, r4, #0
bl DestroyAnimSprite
_0810EB0C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810EB14: .4byte 0x020205AC
thumb_func_end sub_0810EA9C
thumb_func_start sub_0810EB18
sub_0810EB18: @ 0x0810EB18
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x2e]
subs r1, r0, #1
strh r1, [r4, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0810EB58
ldrb r0, [r4, #1]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
movs r1, #1
ands r0, r1
cmp r0, #0
beq _0810EB4A
ldrb r0, [r4, #3]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1b
bl FreeOamMatrix
ldrb r1, [r4, #1]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #1]
_0810EB4A:
adds r0, r4, #0
bl DestroySprite
ldr r1, _0810EB60
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
_0810EB58:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810EB60: .4byte 0x0203809E
thumb_func_end sub_0810EB18
thumb_func_start sub_0810EB64
sub_0810EB64: @ 0x0810EB64
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
adds r5, r7, #0
adds r5, #0x2e
ldr r0, _0810EB84
ldrh r1, [r0, #0xe]
movs r0, #0x80
lsls r0, r0, #1
ands r0, r1
cmp r0, #0
beq _0810EB8C
ldr r0, _0810EB88
b _0810EB8E
.align 2, 0
_0810EB84: .4byte 0x020380BE
_0810EB88: .4byte 0x020380D6
_0810EB8C:
ldr r0, _0810EC38
_0810EB8E:
ldrb r6, [r0]
adds r0, r6, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0810EBA4
ldr r1, _0810EC3C
ldrh r0, [r1]
rsbs r0, r0, #0
strh r0, [r1]
_0810EBA4:
adds r0, r6, #0
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _0810EC3C
lsrs r0, r0, #0x18
ldrh r1, [r4]
adds r0, r0, r1
strh r0, [r7, #0x20]
adds r0, r6, #0
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldrh r1, [r4, #2]
lsrs r0, r0, #0x18
adds r1, r0, r1
strh r1, [r7, #0x22]
lsls r1, r1, #8
strh r1, [r5, #8]
ldrh r1, [r4, #0xc]
adds r0, r0, r1
lsls r0, r0, #1
ldrh r2, [r5, #0xe]
movs r1, #1
ands r1, r2
orrs r1, r0
strh r1, [r5, #0xe]
ldrb r0, [r5]
movs r2, #4
mov r8, r2
mov r1, r8
orrs r0, r1
strb r0, [r5]
ldrh r0, [r4, #4]
ldrb r1, [r4, #4]
strh r1, [r5, #2]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strh r0, [r5, #0xa]
ldrh r0, [r4, #6]
strh r0, [r5, #4]
ldrh r0, [r4, #8]
strh r0, [r5, #6]
ldrh r0, [r4, #0xa]
strh r0, [r5, #0xc]
subs r1, #0x40
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
cmp r1, #0x7f
bhi _0810EC9A
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810EC40
adds r0, r6, #0
bl GetBattlerSpriteBGPriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #1
movs r1, #3
ands r0, r1
lsls r0, r0, #2
ldrb r2, [r7, #5]
movs r1, #0xd
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
strb r1, [r7, #5]
b _0810EC58
.align 2, 0
_0810EC38: .4byte 0x020380D7
_0810EC3C: .4byte 0x020380BE
_0810EC40:
adds r0, r6, #0
bl GetBattlerSpriteBGPriority
movs r1, #3
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r7, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r7, #5]
_0810EC58:
ldrb r1, [r5, #0xe]
movs r4, #2
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
strb r0, [r5, #0xe]
movs r2, #4
ldrsh r0, [r5, r2]
movs r1, #0x80
lsls r1, r1, #8
ands r0, r1
cmp r0, #0
bne _0810ECFA
adds r3, r7, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r0, r2, #0x1f
lsrs r0, r0, #0x1f
movs r1, #1
eors r1, r0
adds r0, r4, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r7, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
b _0810ECF2
_0810EC9A:
adds r0, r6, #0
bl GetBattlerSpriteBGPriority
movs r1, #3
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r7, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r7, #5]
ldrb r0, [r5, #0xe]
movs r4, #1
orrs r0, r4
strb r0, [r5, #0xe]
movs r1, #4
ldrsh r0, [r5, r1]
movs r1, #0x80
lsls r1, r1, #8
ands r0, r1
cmp r0, #0
beq _0810ECFA
adds r3, r7, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r1, r2, #0x1f
lsrs r1, r1, #0x1f
movs r0, #1
eors r1, r0
ands r1, r4
movs r0, #2
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r7, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
mov r2, r8
orrs r0, r2
_0810ECF2:
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
strb r0, [r3]
_0810ECFA:
ldrh r1, [r5, #2]
lsrs r1, r1, #6
lsls r1, r1, #4
ldrb r2, [r5]
movs r0, #0xf
ands r0, r2
orrs r0, r1
strb r0, [r5]
ldr r3, _0810ED64
ldrh r0, [r5, #2]
lsls r0, r0, #1
adds r0, r0, r3
movs r2, #0
ldrsh r1, [r0, r2]
ldrb r0, [r5, #0xc]
muls r0, r1, r0
asrs r0, r0, #8
strh r0, [r7, #0x24]
ldrb r2, [r7, #3]
lsls r2, r2, #0x1a
lsrs r2, r2, #0x1b
movs r1, #0x24
ldrsh r0, [r7, r1]
rsbs r0, r0, #0
asrs r0, r0, #1
ldrb r5, [r5, #0xa]
adds r0, r0, r5
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #1
adds r1, r1, r3
ldrh r4, [r1]
ldr r1, _0810ED68
lsls r2, r2, #3
adds r2, r2, r1
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
ldrh r0, [r0]
strh r0, [r2, #6]
strh r0, [r2]
strh r4, [r2, #2]
lsls r0, r4, #0x10
asrs r0, r0, #0x10
rsbs r0, r0, #0
strh r0, [r2, #4]
ldr r0, _0810ED6C
str r0, [r7, #0x1c]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810ED64: .4byte 0x082FA8CC
_0810ED68: .4byte 0x02021B3C
_0810ED6C: .4byte 0x0810ED71
thumb_func_end sub_0810EB64
thumb_func_start sub_0810ED70
sub_0810ED70: @ 0x0810ED70
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r5, r0, #0
movs r6, #0
adds r4, r5, #0
adds r4, #0x2e
ldrb r2, [r4]
movs r7, #1
movs r0, #1
mov sb, r0
ands r0, r2
cmp r0, #0
beq _0810EDAA
ldrb r0, [r4, #1]
adds r1, r0, #0
adds r1, #0xff
strb r1, [r4, #1]
lsls r0, r0, #0x18
cmp r0, #0
beq _0810ED9E
b _0810F286
_0810ED9E:
movs r0, #2
rsbs r0, r0, #0
ands r0, r2
strb r0, [r4]
strb r6, [r4, #1]
b _0810F286
_0810EDAA:
ldrh r0, [r4, #2]
lsrs r1, r0, #6
mov ip, r0
cmp r1, #1
bne _0810EDB6
b _0810EEDA
_0810EDB6:
cmp r1, #1
bgt _0810EDC0
cmp r1, #0
beq _0810EDCE
b _0810F1CC
_0810EDC0:
cmp r1, #2
bne _0810EDC6
b _0810EFCE
_0810EDC6:
cmp r1, #3
bne _0810EDCC
b _0810F0C2
_0810EDCC:
b _0810F1CC
_0810EDCE:
lsls r1, r2, #0x18
lsrs r0, r1, #0x1c
cmp r0, #1
bne _0810EDE2
movs r0, #8
orrs r0, r2
orrs r0, r7
strb r0, [r4]
strb r6, [r4, #1]
b _0810EED0
_0810EDE2:
lsrs r0, r1, #0x1c
cmp r0, #3
bne _0810EE04
lsls r0, r2, #0x1e
lsrs r0, r0, #0x1f
movs r1, #1
eors r0, r1
ands r0, r7
lsls r0, r0, #1
movs r1, #3
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
orrs r1, r7
strb r1, [r4]
strb r6, [r4, #1]
b _0810EED0
_0810EE04:
movs r0, #8
ands r0, r2
cmp r0, #0
beq _0810EED0
adds r3, r5, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r1, r2, #0x1f
lsrs r1, r1, #0x1f
movs r6, #1
eors r1, r6
ands r1, r7
movs r0, #2
rsbs r0, r0, #0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r5, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0810EEC2
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810EE92
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810EE78
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
subs r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810EEB0
_0810EE78:
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
adds r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810EEB0
_0810EE92:
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810EEA6
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
subs r0, #0xc
b _0810EEAE
_0810EEA6:
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
adds r0, #0xc
_0810EEAE:
strb r0, [r1]
_0810EEB0:
ldrb r2, [r4, #0xe]
lsls r0, r2, #0x1f
lsrs r0, r0, #0x1f
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, #0xe]
_0810EEC2:
ldrb r1, [r4]
movs r0, #9
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, #2]
mov ip, r1
_0810EED0:
ldrb r1, [r4]
movs r0, #0xf
ands r0, r1
strb r0, [r4]
b _0810F1CC
_0810EEDA:
lsls r1, r2, #0x18
lsrs r0, r1, #0x1c
cmp r0, #0
bne _0810EEE8
movs r0, #8
orrs r0, r2
b _0810EEF0
_0810EEE8:
lsrs r0, r1, #0x1c
cmp r0, #2
bne _0810EEF8
adds r0, r2, #0
_0810EEF0:
orrs r0, r7
strb r0, [r4]
strb r6, [r4, #1]
b _0810EFC4
_0810EEF8:
movs r0, #8
ands r0, r2
cmp r0, #0
beq _0810EFC4
adds r3, r5, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r1, r2, #0x1f
lsrs r1, r1, #0x1f
movs r6, #1
eors r1, r6
ands r1, r7
movs r0, #2
rsbs r0, r0, #0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r5, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0810EFB6
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810EF86
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810EF6C
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
subs r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810EFA4
_0810EF6C:
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
adds r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810EFA4
_0810EF86:
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810EF9A
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
subs r0, #0xc
b _0810EFA2
_0810EF9A:
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
adds r0, #0xc
_0810EFA2:
strb r0, [r1]
_0810EFA4:
ldrb r2, [r4, #0xe]
lsls r0, r2, #0x1f
lsrs r0, r0, #0x1f
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, #0xe]
_0810EFB6:
ldrb r1, [r4]
movs r0, #9
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, #2]
mov ip, r1
_0810EFC4:
ldrb r0, [r4]
movs r1, #0xf
ands r1, r0
movs r0, #0x10
b _0810F1C8
_0810EFCE:
lsls r1, r2, #0x18
lsrs r0, r1, #0x1c
cmp r0, #3
bne _0810EFDC
movs r0, #8
orrs r0, r2
b _0810EFE4
_0810EFDC:
lsrs r0, r1, #0x1c
cmp r0, #1
bne _0810EFEC
adds r0, r2, #0
_0810EFE4:
orrs r0, r7
strb r0, [r4]
strb r6, [r4, #1]
b _0810F0B8
_0810EFEC:
movs r0, #8
ands r0, r2
cmp r0, #0
beq _0810F0B8
adds r3, r5, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r1, r2, #0x1f
lsrs r1, r1, #0x1f
movs r6, #1
eors r1, r6
ands r1, r7
movs r0, #2
rsbs r0, r0, #0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r5, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0810F0AA
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810F07A
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810F060
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
subs r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810F098
_0810F060:
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
adds r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810F098
_0810F07A:
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810F08E
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
subs r0, #0xc
b _0810F096
_0810F08E:
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
adds r0, #0xc
_0810F096:
strb r0, [r1]
_0810F098:
ldrb r2, [r4, #0xe]
lsls r0, r2, #0x1f
lsrs r0, r0, #0x1f
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, #0xe]
_0810F0AA:
ldrb r1, [r4]
movs r0, #9
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, #2]
mov ip, r1
_0810F0B8:
ldrb r0, [r4]
movs r1, #0xf
ands r1, r0
movs r0, #0x20
b _0810F1C8
_0810F0C2:
lsls r1, r2, #0x18
lsrs r0, r1, #0x1c
cmp r0, #2
bne _0810F0D2
movs r0, #8
orrs r0, r2
strb r0, [r4]
b _0810F1C0
_0810F0D2:
lsrs r0, r1, #0x1c
cmp r0, #0
bne _0810F0F4
lsls r0, r2, #0x1e
lsrs r0, r0, #0x1f
movs r1, #1
eors r0, r1
ands r0, r7
lsls r0, r0, #1
movs r1, #3
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
orrs r1, r7
strb r1, [r4]
strb r6, [r4, #1]
b _0810F1C0
_0810F0F4:
movs r0, #8
ands r0, r2
cmp r0, #0
beq _0810F1C0
adds r3, r5, #0
adds r3, #0x3f
ldrb r2, [r3]
lsls r1, r2, #0x1f
lsrs r1, r1, #0x1f
movs r6, #1
eors r1, r6
ands r1, r7
movs r0, #2
rsbs r0, r0, #0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
adds r1, r5, #0
adds r1, #0x2a
strb r0, [r1]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0810F1B2
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810F182
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810F168
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
subs r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810F1A0
_0810F168:
ldrb r2, [r5, #5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1e
adds r1, #1
movs r0, #3
ands r1, r0
lsls r1, r1, #2
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
b _0810F1A0
_0810F182:
ldrb r1, [r4, #0xe]
mov r0, sb
ands r0, r1
cmp r0, #0
bne _0810F196
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
subs r0, #0xc
b _0810F19E
_0810F196:
adds r1, r5, #0
adds r1, #0x43
ldrb r0, [r1]
adds r0, #0xc
_0810F19E:
strb r0, [r1]
_0810F1A0:
ldrb r2, [r4, #0xe]
lsls r0, r2, #0x1f
lsrs r0, r0, #0x1f
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, #0xe]
_0810F1B2:
ldrb r1, [r4]
movs r0, #9
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, #2]
mov ip, r1
_0810F1C0:
ldrb r0, [r4]
movs r1, #0xf
ands r1, r0
movs r0, #0x30
_0810F1C8:
orrs r1, r0
strb r1, [r4]
_0810F1CC:
ldrb r1, [r4]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1f
adds r0, r4, #0
adds r0, #0xc
adds r0, r0, r1
ldrb r1, [r0]
ldr r3, _0810F254
mov r2, ip
lsls r0, r2, #1
adds r0, r0, r3
movs r2, #0
ldrsh r0, [r0, r2]
muls r0, r1, r0
asrs r0, r0, #8
strh r0, [r5, #0x24]
ldrb r2, [r5, #3]
lsls r2, r2, #0x1a
lsrs r2, r2, #0x1b
movs r1, #0x24
ldrsh r0, [r5, r1]
rsbs r0, r0, #0
asrs r0, r0, #1
ldrb r1, [r4, #0xa]
adds r0, r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #1
adds r1, r1, r3
ldrh r6, [r1]
ldr r1, _0810F258
lsls r2, r2, #3
adds r2, r2, r1
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
ldrh r0, [r0]
strh r0, [r2, #6]
strh r0, [r2]
strh r6, [r2, #2]
lsls r0, r6, #0x10
asrs r0, r0, #0x10
rsbs r0, r0, #0
strh r0, [r2, #4]
ldrh r0, [r4, #6]
ldrh r2, [r4, #8]
adds r0, r0, r2
strh r0, [r4, #8]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
movs r1, #4
ldrsh r0, [r4, r1]
movs r1, #0x80
lsls r1, r1, #8
ands r0, r1
cmp r0, #0
beq _0810F25C
ldrh r0, [r4, #4]
subs r1, #1
ands r1, r0
ldrh r0, [r4, #2]
subs r0, r0, r1
movs r1, #0xff
ands r0, r1
strh r0, [r4, #2]
b _0810F26C
.align 2, 0
_0810F254: .4byte 0x082FA8CC
_0810F258: .4byte 0x02021B3C
_0810F25C:
ldrh r0, [r4, #4]
ldr r1, _0810F294
ands r1, r0
ldrh r2, [r4, #2]
adds r1, r1, r2
movs r0, #0xff
ands r1, r0
strh r1, [r4, #2]
_0810F26C:
movs r0, #0x22
ldrsh r1, [r5, r0]
movs r2, #0x26
ldrsh r0, [r5, r2]
adds r1, r1, r0
ldrh r0, [r4, #0xe]
lsrs r0, r0, #1
cmp r1, r0
blt _0810F286
movs r0, #0
strh r0, [r5, #0x2e]
ldr r0, _0810F298
str r0, [r5, #0x1c]
_0810F286:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810F294: .4byte 0x00007FFF
_0810F298: .4byte 0x0810EB19
thumb_func_end sub_0810ED70
thumb_func_start sub_0810F29C
sub_0810F29C: @ 0x0810F29C
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _0810F2E4
ldrb r0, [r0]
bl GetBattlerSpriteBGPriority
movs r1, #3
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r4, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #5]
ldr r5, _0810F2E8
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]
ldr r0, _0810F2EC
str r0, [r4, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810F2E4: .4byte 0x020380D7
_0810F2E8: .4byte 0x020380D6
_0810F2EC: .4byte 0x080A70E9
thumb_func_end sub_0810F29C
thumb_func_start sub_0810F2F0
sub_0810F2F0: @ 0x0810F2F0
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0810F308
movs r1, #4
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810F30C
adds r0, r5, #0
movs r1, #0
bl InitSpritePosToAnimAttacker
b _0810F314
.align 2, 0
_0810F308: .4byte 0x020380BE
_0810F30C:
adds r0, r5, #0
movs r1, #0
bl InitSpritePosToAnimTarget
_0810F314:
ldr r4, _0810F37C
movs r2, #4
ldrsh r0, [r4, r2]
cmp r0, #0
bne _0810F32C
ldr r0, _0810F380
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810F342
_0810F32C:
movs r1, #4
ldrsh r0, [r4, r1]
cmp r0, #1
bne _0810F348
ldr r0, _0810F384
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0810F348
_0810F342:
ldrh r0, [r5, #0x20]
adds r0, #8
strh r0, [r5, #0x20]
_0810F348:
ldr r4, _0810F37C
ldrb r1, [r4, #8]
adds r0, r5, #0
bl SeekSpriteAnim
ldrh r0, [r5, #0x20]
subs r0, #0x20
strh r0, [r5, #0x20]
ldr r0, _0810F388
strh r0, [r5, #0x30]
ldrh r1, [r4, #8]
movs r0, #0xc
adds r2, r0, #0
muls r2, r1, r2
adds r0, r2, #0
ldrh r2, [r5, #0x24]
adds r0, r0, r2
strh r0, [r5, #0x24]
strh r1, [r5, #0x2e]
ldrh r0, [r4, #6]
strh r0, [r5, #0x3c]
ldr r0, _0810F38C
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810F37C: .4byte 0x020380BE
_0810F380: .4byte 0x020380D6
_0810F384: .4byte 0x020380D7
_0810F388: .4byte 0x00000CCC
_0810F38C: .4byte 0x0810F391
thumb_func_end sub_0810F2F0
thumb_func_start sub_0810F390
sub_0810F390: @ 0x0810F390
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
ldrh r1, [r4, #0x24]
adds r0, r0, r1
movs r1, #0
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #6
bne _0810F3BA
strh r1, [r4, #0x2e]
strh r1, [r4, #0x24]
adds r0, r4, #0
bl StartSpriteAnim
_0810F3BA:
ldrh r0, [r4, #0x3c]
subs r0, #1
strh r0, [r4, #0x3c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _0810F3D2
adds r0, r4, #0
bl DestroyAnimSprite
_0810F3D2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_0810F390
thumb_func_start sub_0810F3D8
sub_0810F3D8: @ 0x0810F3D8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r6, r0, #0
ldr r1, _0810F470
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
adds r7, r0, r1
ldrh r0, [r7, #8]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _0810F452
ldr r1, _0810F474
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
movs r1, #8
ldrsh r0, [r7, r1]
movs r5, #0xd
rsbs r5, r5, #0
adds r1, r5, #0
bl Sin
ldr r4, _0810F478
strh r0, [r4]
movs r1, #8
ldrsh r0, [r7, r1]
adds r1, r5, #0
bl Cos
strh r0, [r4, #2]
movs r0, #1
strh r0, [r4, #4]
movs r0, #3
strh r0, [r4, #6]
ldr r0, _0810F47C
mov r8, r0
ldr r5, _0810F480
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
adds r2, r0, #0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, r8
adds r1, r4, #0
movs r3, #3
bl CreateSpriteAndAnimate
_0810F452:
ldrh r0, [r7, #8]
adds r0, #8
strh r0, [r7, #8]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xff
ble _0810F466
adds r0, r6, #0
bl DestroyAnimVisualTask
_0810F466:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810F470: .4byte 0x03005B60
_0810F474: .4byte 0x0203809E
_0810F478: .4byte 0x020380BE
_0810F47C: .4byte 0x08572FCC
_0810F480: .4byte 0x020380D7
thumb_func_end sub_0810F3D8
thumb_func_start sub_0810F484
sub_0810F484: @ 0x0810F484
push {r4, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
beq _0810F496
cmp r0, #1
beq _0810F4C8
b _0810F4DC
_0810F496:
adds r0, r4, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
movs r0, #0
bl GetAnimBattlerSpriteId
ldr r2, _0810F4C4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r0, [r1]
movs r2, #4
orrs r0, r2
strb r0, [r1]
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _0810F4DC
.align 2, 0
_0810F4C4: .4byte 0x020205AC
_0810F4C8:
adds r0, r4, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0810F4DC
adds r0, r4, #0
bl DestroyAnimSprite
_0810F4DC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810F484
thumb_func_start sub_0810F4E4
sub_0810F4E4: @ 0x0810F4E4
push {r4, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #1
beq _0810F51C
cmp r0, #1
bgt _0810F4FA
cmp r0, #0
beq _0810F500
b _0810F56E
_0810F4FA:
cmp r0, #2
beq _0810F530
b _0810F56E
_0810F500:
ldr r0, _0810F518
ldrb r0, [r0]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x22]
rsbs r0, r0, #0
subs r0, #0x20
strh r0, [r4, #0x26]
b _0810F528
.align 2, 0
_0810F518: .4byte 0x020380D7
_0810F51C:
ldrh r0, [r4, #0x26]
adds r0, #0xa
strh r0, [r4, #0x26]
lsls r0, r0, #0x10
cmp r0, #0
blt _0810F56E
_0810F528:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _0810F56E
_0810F530:
ldrh r0, [r4, #0x26]
subs r0, #0xa
strh r0, [r4, #0x26]
movs r2, #0x22
ldrsh r0, [r4, r2]
movs r2, #0x26
ldrsh r1, [r4, r2]
adds r0, r0, r1
movs r1, #0x20
rsbs r1, r1, #0
cmp r0, r1
bge _0810F56E
movs r0, #0
bl GetAnimBattlerSpriteId
ldr r2, _0810F574
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r2, [r1]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1]
adds r0, r4, #0
bl DestroyAnimSprite
_0810F56E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810F574: .4byte 0x020205AC
thumb_func_end sub_0810F4E4
thumb_func_start sub_0810F578
sub_0810F578: @ 0x0810F578
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r1, _0810F5B4
ldrh r0, [r1, #4]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #6]
strh r0, [r4, #0x30]
ldr r0, _0810F5B8
str r0, [r4, #0x1c]
movs r0, #0
bl GetAnimBattlerSpriteId
ldr r2, _0810F5BC
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r0, [r1]
movs r2, #4
orrs r0, r2
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810F5B4: .4byte 0x020380BE
_0810F5B8: .4byte 0x0810F5C1
_0810F5BC: .4byte 0x020205AC
thumb_func_end sub_0810F578
thumb_func_start sub_0810F5C0
sub_0810F5C0: @ 0x0810F5C0
push {lr}
adds r2, r0, #0
ldrh r1, [r2, #0x2e]
movs r3, #0x2e
ldrsh r0, [r2, r3]
cmp r0, #0
ble _0810F5D4
subs r0, r1, #1
strh r0, [r2, #0x2e]
b _0810F618
_0810F5D4:
movs r1, #0x22
ldrsh r0, [r2, r1]
movs r3, #0x26
ldrsh r1, [r2, r3]
adds r0, r0, r1
movs r1, #0x20
rsbs r1, r1, #0
cmp r0, r1
ble _0810F5FA
ldrh r0, [r2, #0x30]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
ldrh r1, [r2, #0x26]
subs r1, r1, r0
strh r1, [r2, #0x26]
b _0810F618
_0810F5FA:
adds r3, r2, #0
adds r3, #0x3e
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, #0x34]
adds r1, r0, #1
strh r1, [r2, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x14
ble _0810F618
ldr r0, _0810F61C
str r0, [r2, #0x1c]
_0810F618:
pop {r0}
bx r0
.align 2, 0
_0810F61C: .4byte 0x0810F621
thumb_func_end sub_0810F5C0
thumb_func_start sub_0810F620
sub_0810F620: @ 0x0810F620
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x18
ldrh r1, [r2, #0x26]
adds r0, r0, r1
strh r0, [r2, #0x26]
movs r3, #0x22
ldrsh r0, [r2, r3]
movs r3, #0x26
ldrsh r1, [r2, r3]
adds r0, r0, r1
movs r1, #0x20
rsbs r1, r1, #0
cmp r0, r1
ble _0810F650
adds r3, r2, #0
adds r3, #0x3e
ldrb r1, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r1
strb r0, [r3]
_0810F650:
movs r1, #0x26
ldrsh r0, [r2, r1]
cmp r0, #0
ble _0810F65E
adds r0, r2, #0
bl DestroyAnimSprite
_0810F65E:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810F620
thumb_func_start sub_0810F664
sub_0810F664: @ 0x0810F664
push {r4, r5, lr}
sub sp, #4
adds r5, r0, #0
movs r1, #0x2e
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0810F678
cmp r0, #1
beq _0810F6D0
b _0810F73C
_0810F678:
ldr r0, _0810F688
movs r2, #0
ldrsh r0, [r0, r2]
cmp r0, #0
bne _0810F690
ldr r4, _0810F68C
b _0810F692
.align 2, 0
_0810F688: .4byte 0x020380BE
_0810F68C: .4byte 0x020380D6
_0810F690:
ldr r4, _0810F6CC
_0810F692:
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
strh r0, [r5, #0x22]
movs r0, #0
movs r3, #0x80
lsls r3, r3, #2
strh r3, [r5, #0x30]
movs r2, #0x80
lsls r2, r2, #1
str r0, [sp]
adds r0, r5, #0
movs r1, #0
bl TrySetSpriteRotScale
ldrh r0, [r5, #0x2e]
adds r0, #1
strh r0, [r5, #0x2e]
b _0810F73C
.align 2, 0
_0810F6CC: .4byte 0x020380D7
_0810F6D0:
movs r1, #0x32
ldrsh r0, [r5, r1]
cmp r0, #0xb
bgt _0810F6DE
ldrh r0, [r5, #0x30]
subs r0, #0x28
b _0810F6E2
_0810F6DE:
ldrh r0, [r5, #0x30]
adds r0, #0x28
_0810F6E2:
strh r0, [r5, #0x30]
ldrh r0, [r5, #0x32]
adds r0, #1
movs r1, #0
strh r0, [r5, #0x32]
movs r2, #0x80
lsls r2, r2, #1
movs r0, #0x30
ldrsh r3, [r5, r0]
str r1, [sp]
adds r0, r5, #0
bl TrySetSpriteRotScale
ldrb r1, [r5, #3]
lsls r1, r1, #0x1a
lsrs r1, r1, #0x1b
movs r0, #0xf4
lsls r0, r0, #6
ldr r2, _0810F744
lsls r1, r1, #3
adds r1, r1, r2
movs r2, #6
ldrsh r1, [r1, r2]
bl __divsi3
adds r1, r0, #1
cmp r1, #0x80
ble _0810F71C
movs r1, #0x80
_0810F71C:
movs r0, #0x40
subs r0, r0, r1
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r1, r0, #1
strh r1, [r5, #0x26]
movs r1, #0x32
ldrsh r0, [r5, r1]
cmp r0, #0x18
bne _0810F73C
adds r0, r5, #0
bl sub_080A6D64
adds r0, r5, #0
bl DestroyAnimSprite
_0810F73C:
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810F744: .4byte 0x02021B3C
thumb_func_end sub_0810F664
thumb_func_start sub_0810F748
sub_0810F748: @ 0x0810F748
push {r4, r5, lr}
adds r5, r0, #0
bl Random2
ldr r4, _0810F76C
ands r4, r0
bl Random2
movs r1, #0x7f
ands r1, r0
movs r0, #1
ands r0, r4
cmp r0, #0
beq _0810F770
movs r2, #0xb8
lsls r2, r2, #2
adds r0, r4, r2
b _0810F778
.align 2, 0
_0810F76C: .4byte 0x000001FF
_0810F770:
movs r2, #0xb8
lsls r2, r2, #2
adds r0, r2, #0
subs r0, r0, r4
_0810F778:
strh r0, [r5, #0x2e]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0810F78C
movs r2, #0xe0
lsls r2, r2, #2
adds r0, r2, #0
adds r0, r1, r0
b _0810F794
_0810F78C:
movs r2, #0xe0
lsls r2, r2, #2
adds r0, r2, #0
subs r0, r0, r1
_0810F794:
strh r0, [r5, #0x30]
ldr r2, _0810F7BC
ldrh r0, [r2]
strh r0, [r5, #0x32]
lsls r0, r0, #0x10
cmp r0, #0
beq _0810F7B0
ldrb r0, [r5, #3]
movs r1, #0x3f
rsbs r1, r1, #0
ands r1, r0
movs r0, #0x10
orrs r1, r0
strb r1, [r5, #3]
_0810F7B0:
movs r1, #2
ldrsh r0, [r2, r1]
cmp r0, #0
bne _0810F7C4
ldr r4, _0810F7C0
b _0810F7C6
.align 2, 0
_0810F7BC: .4byte 0x020380BE
_0810F7C0: .4byte 0x020380D6
_0810F7C4:
ldr r4, _0810F7F0
_0810F7C6:
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, #0x20
strh r0, [r5, #0x22]
ldr r0, _0810F7F4
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810F7F0: .4byte 0x020380D7
_0810F7F4: .4byte 0x0810F7F9
thumb_func_end sub_0810F748
thumb_func_start sub_0810F7F8
sub_0810F7F8: @ 0x0810F7F8
push {r4, lr}
adds r4, r0, #0
movs r1, #0x32
ldrsh r0, [r4, r1]
cmp r0, #0
bne _0810F810
ldrh r3, [r4, #0x2e]
lsls r0, r3, #0x10
asrs r0, r0, #0x18
ldrh r1, [r4, #0x24]
adds r0, r0, r1
b _0810F81A
_0810F810:
ldrh r3, [r4, #0x2e]
lsls r1, r3, #0x10
asrs r1, r1, #0x18
ldrh r0, [r4, #0x24]
subs r0, r0, r1
_0810F81A:
strh r0, [r4, #0x24]
ldrh r2, [r4, #0x30]
lsls r1, r2, #0x10
asrs r1, r1, #0x18
ldrh r0, [r4, #0x26]
subs r0, r0, r1
strh r0, [r4, #0x26]
strh r3, [r4, #0x2e]
adds r0, r2, #0
subs r0, #0x20
strh r0, [r4, #0x30]
lsls r0, r3, #0x10
cmp r0, #0
bge _0810F83A
movs r0, #0
strh r0, [r4, #0x2e]
_0810F83A:
ldrh r0, [r4, #0x34]
adds r0, #1
strh r0, [r4, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x1f
bne _0810F84E
adds r0, r4, #0
bl DestroyAnimSprite
_0810F84E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_0810F7F8
thumb_func_start sub_0810F854
sub_0810F854: @ 0x0810F854
movs r1, #0
strh r1, [r0, #0x3a]
movs r1, #0x40
strh r1, [r0, #0x3c]
ldr r1, _0810F864
str r1, [r0, #0x1c]
bx lr
.align 2, 0
_0810F864: .4byte 0x0810F869
thumb_func_end sub_0810F854
thumb_func_start sub_0810F868
sub_0810F868: @ 0x0810F868
push {lr}
adds r3, r0, #0
movs r0, #0x2e
ldrsh r1, [r3, r0]
cmp r1, #0
beq _0810F87A
cmp r1, #1
beq _0810F8C8
b _0810F8CE
_0810F87A:
ldrh r0, [r3, #0x30]
adds r0, #1
strh r0, [r3, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
ble _0810F8CE
strh r1, [r3, #0x30]
movs r1, #0x3e
adds r1, r1, r3
mov ip, r1
ldrb r2, [r1]
lsls r0, r2, #0x1d
lsrs r0, r0, #0x1f
movs r1, #1
eors r1, r0
lsls r1, r1, #2
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
mov r1, ip
strb r0, [r1]
ldrh r0, [r3, #0x32]
adds r0, #1
strh r0, [r3, #0x32]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #5
ble _0810F8CE
ldrb r1, [r1]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0810F8CE
ldrh r0, [r3, #0x2e]
adds r0, #1
strh r0, [r3, #0x2e]
b _0810F8CE
_0810F8C8:
adds r0, r3, #0
bl DestroyAnimSprite
_0810F8CE:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810F868
thumb_func_start sub_0810F8D4
sub_0810F8D4: @ 0x0810F8D4
push {r4, r5, r6, lr}
mov r6, sb
mov r5, r8
push {r5, r6}
sub sp, #4
mov r8, r0
ldrh r4, [r0, #0x20]
ldrh r5, [r0, #0x22]
ldr r6, _0810F988
ldrb r0, [r6]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, r8
strh r0, [r1, #0x20]
ldrb r0, [r6]
movs r1, #3
bl GetBattlerSpriteCoord
adds r6, r0, #0
lsls r6, r6, #0x18
lsrs r6, r6, #0x18
mov r2, r8
strh r6, [r2, #0x22]
ldrh r0, [r2, #0x20]
mov sb, r0
mov r1, sb
lsls r0, r1, #4
strh r0, [r2, #0x36]
lsls r0, r6, #4
strh r0, [r2, #0x38]
lsls r4, r4, #0x10
asrs r4, r4, #0x10
movs r1, #0x20
ldrsh r0, [r2, r1]
subs r0, r4, r0
lsls r0, r0, #4
movs r1, #0xc
bl __divsi3
mov r2, r8
strh r0, [r2, #0x3a]
lsls r5, r5, #0x10
asrs r5, r5, #0x10
movs r1, #0x22
ldrsh r0, [r2, r1]
subs r0, r5, r0
lsls r0, r0, #4
movs r1, #0xc
bl __divsi3
mov r2, r8
strh r0, [r2, #0x3c]
mov r0, sb
subs r4, r4, r0
lsls r4, r4, #0x10
asrs r4, r4, #0x10
subs r5, r5, r6
lsls r5, r5, #0x10
asrs r5, r5, #0x10
adds r0, r4, #0
adds r1, r5, #0
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]
mov r0, r8
movs r1, #1
adds r2, r3, #0
bl TrySetSpriteRotScale
ldr r0, _0810F98C
mov r2, r8
str r0, [r2, #0x1c]
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810F988: .4byte 0x020380D6
_0810F98C: .4byte 0x0810F991
thumb_func_end sub_0810F8D4
thumb_func_start sub_0810F990
sub_0810F990: @ 0x0810F990
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x3a]
ldrh r1, [r2, #0x36]
adds r0, r0, r1
strh r0, [r2, #0x36]
ldrh r1, [r2, #0x3c]
ldrh r3, [r2, #0x38]
adds r1, r1, r3
strh r1, [r2, #0x38]
lsls r0, r0, #0x10
asrs r0, r0, #0x14
strh r0, [r2, #0x20]
lsls r1, r1, #0x10
asrs r3, r1, #0x14
strh r3, [r2, #0x22]
adds r0, #0x2d
lsls r0, r0, #0x10
movs r1, #0xa5
lsls r1, r1, #0x11
cmp r0, r1
bhi _0810F9CA
adds r1, r3, #0
cmp r1, #0x9d
bgt _0810F9CA
movs r0, #0x2d
rsbs r0, r0, #0
cmp r1, r0
bge _0810F9D0
_0810F9CA:
adds r0, r2, #0
bl DestroySpriteAndMatrix
_0810F9D0:
pop {r0}
bx r0
thumb_func_end sub_0810F990
thumb_func_start unref_sub_810F184
unref_sub_810F184: @ 0x0810F9D4
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _0810FA04
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810FA0C
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _0810FA08
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r0, [r1]
movs r2, #4
orrs r0, r2
b _0810FA2A
.align 2, 0
_0810FA04: .4byte 0x020380BE
_0810FA08: .4byte 0x020205AC
_0810FA0C:
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _0810FA38
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
adds r1, #0x3e
ldrb r2, [r1]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
_0810FA2A:
strb r0, [r1]
adds r0, r4, #0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810FA38: .4byte 0x020205AC
thumb_func_end unref_sub_810F184