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

2775 lines
48 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start sub_0810A9F8
sub_0810A9F8: @ 0x0810A9F8
push {r4, lr}
adds r4, r0, #0
ldr r0, _0810AA18
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810AA20
ldr r0, _0810AA1C
ldrh r1, [r4, #0x20]
ldrh r2, [r0]
subs r1, r1, r2
strh r1, [r4, #0x20]
b _0810AA2C
.align 2, 0
_0810AA18: .4byte 0x020380D6
_0810AA1C: .4byte 0x020380BE
_0810AA20:
ldr r1, _0810AA40
ldrh r0, [r1]
ldrh r2, [r4, #0x20]
adds r0, r0, r2
strh r0, [r4, #0x20]
adds r0, r1, #0
_0810AA2C:
ldrh r0, [r0, #2]
ldrh r1, [r4, #0x22]
adds r0, r0, r1
strh r0, [r4, #0x22]
ldr r0, _0810AA44
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810AA40: .4byte 0x020380BE
_0810AA44: .4byte 0x0810AA49
thumb_func_end sub_0810A9F8
thumb_func_start sub_0810AA48
sub_0810AA48: @ 0x0810AA48
push {lr}
adds r2, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0810AA5E
adds r0, r2, #0
bl DestroyAnimSprite
_0810AA5E:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810AA48
thumb_func_start sub_0810AA64
sub_0810AA64: @ 0x0810AA64
push {r4, lr}
adds r4, r0, #0
ldr r0, _0810AA84
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810AA8C
ldr r0, _0810AA88
ldrh r1, [r4, #0x20]
ldrh r0, [r0]
subs r1, r1, r0
strh r1, [r4, #0x20]
b _0810AA96
.align 2, 0
_0810AA84: .4byte 0x020380D6
_0810AA88: .4byte 0x020380BE
_0810AA8C:
ldr r0, _0810AAA0
ldrh r0, [r0]
ldrh r1, [r4, #0x20]
adds r0, r0, r1
strh r0, [r4, #0x20]
_0810AA96:
ldr r0, _0810AAA4
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810AAA0: .4byte 0x020380BE
_0810AAA4: .4byte 0x0810AAA9
thumb_func_end sub_0810AA64
thumb_func_start sub_0810AAA8
sub_0810AAA8: @ 0x0810AAA8
push {lr}
adds r2, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0810AABE
adds r0, r2, #0
bl DestroySpriteAndMatrix
_0810AABE:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810AAA8
thumb_func_start sub_0810AAC4
sub_0810AAC4: @ 0x0810AAC4
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0810AB08
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, _0810AB0C
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
beq _0810AB14
ldr r2, _0810AB10
ldrh r0, [r5, #0x20]
ldrh r1, [r2]
subs r0, r0, r1
strh r0, [r5, #0x20]
ldrh r0, [r5, #0x22]
ldrh r1, [r2, #2]
subs r0, r0, r1
strh r0, [r5, #0x22]
b _0810AB28
.align 2, 0
_0810AB08: .4byte 0x020380D7
_0810AB0C: .4byte 0x020380D6
_0810AB10: .4byte 0x020380BE
_0810AB14:
ldr r0, _0810AB4C
ldrh r1, [r0]
ldrh r2, [r5, #0x20]
adds r1, r1, r2
strh r1, [r5, #0x20]
ldrh r1, [r0, #2]
ldrh r2, [r5, #0x22]
adds r1, r1, r2
strh r1, [r5, #0x22]
adds r2, r0, #0
_0810AB28:
movs r0, #0
strh r0, [r5, #0x2e]
ldrh r0, [r2, #4]
strh r0, [r5, #0x30]
ldrh r0, [r2, #6]
strh r0, [r5, #0x32]
ldrh r0, [r2, #8]
strh r0, [r5, #0x34]
ldr r1, _0810AB50
adds r0, r5, #0
bl StoreSpriteCallbackInData6
ldr r0, _0810AB54
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810AB4C: .4byte 0x020380BE
_0810AB50: .4byte 0x080A6015
_0810AB54: .4byte 0x080A5BB5
thumb_func_end sub_0810AAC4
thumb_func_start sub_0810AB58
sub_0810AB58: @ 0x0810AB58
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r0, _0810AB70
movs r1, #8
ldrsh r0, [r0, r1]
cmp r0, #1
beq _0810ABD0
cmp r0, #1
bgt _0810AB74
cmp r0, #0
beq _0810AB7E
b _0810ABD0
.align 2, 0
_0810AB70: .4byte 0x020380BE
_0810AB74:
cmp r0, #2
beq _0810AB88
cmp r0, #3
beq _0810ABAC
b _0810ABD0
_0810AB7E:
ldr r0, _0810AB84
b _0810ABD2
.align 2, 0
_0810AB84: .4byte 0x020380D6
_0810AB88:
ldr r4, _0810ABA0
ldrb r0, [r4]
movs r6, #2
eors r0, r6
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
bne _0810ABA4
ldrb r4, [r4]
b _0810ABD4
.align 2, 0
_0810ABA0: .4byte 0x020380D6
_0810ABA4:
ldrb r0, [r4]
adds r4, r6, #0
eors r4, r0
b _0810ABD4
_0810ABAC:
ldr r0, _0810ABC8
ldrb r0, [r0]
movs r4, #2
eors r0, r4
bl IsBattlerSpriteVisible
lsls r0, r0, #0x18
cmp r0, #0
beq _0810ABD0
ldr r0, _0810ABCC
ldrb r0, [r0]
eors r4, r0
b _0810ABD4
.align 2, 0
_0810ABC8: .4byte 0x020380D6
_0810ABCC: .4byte 0x020380D7
_0810ABD0:
ldr r0, _0810ABF4
_0810ABD2:
ldrb r4, [r0]
_0810ABD4:
ldr r0, _0810ABF8
movs r2, #0xa
ldrsh r0, [r0, r2]
cmp r0, #0
bne _0810ABFC
adds r0, r4, #0
movs r1, #0
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
adds r0, r4, #0
movs r1, #1
b _0810AC0E
.align 2, 0
_0810ABF4: .4byte 0x020380D7
_0810ABF8: .4byte 0x020380BE
_0810ABFC:
adds r0, r4, #0
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x20]
adds r0, r4, #0
movs r1, #3
_0810AC0E:
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldr r7, _0810ACAC
ldr r6, _0810ACB0
movs r1, #0
ldrsh r0, [r6, r1]
lsls r0, r0, #1
adds r0, r0, r7
movs r2, #0
ldrsh r1, [r0, r2]
movs r2, #2
ldrsh r0, [r6, r2]
muls r0, r1, r0
asrs r0, r0, #8
strh r0, [r5, #0x24]
movs r1, #0
ldrsh r0, [r6, r1]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r7
movs r2, #0
ldrsh r1, [r0, r2]
movs r2, #2
ldrsh r0, [r6, r2]
muls r0, r1, r0
asrs r0, r0, #8
strh r0, [r5, #0x26]
ldrh r1, [r6, #0xc]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0810AC72
adds r0, r4, #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, [r5, #5]
movs r1, #0xd
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
strb r1, [r5, #5]
_0810AC72:
ldrb r2, [r5, #3]
lsls r2, r2, #0x1a
lsrs r2, r2, #0x1b
movs r0, #4
ldrsh r1, [r6, r0]
lsls r0, r1, #1
adds r0, r0, r7
ldrh r0, [r0]
ldr r3, _0810ACB4
lsls r2, r2, #3
adds r2, r2, r3
adds r1, #0x40
lsls r1, r1, #1
adds r1, r1, r7
ldrh r1, [r1]
strh r1, [r2, #6]
strh r1, [r2]
strh r0, [r2, #2]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
rsbs r0, r0, #0
strh r0, [r2, #4]
ldrh r0, [r6, #6]
strh r0, [r5, #0x2e]
ldr r0, _0810ACB8
str r0, [r5, #0x1c]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810ACAC: .4byte 0x082FA8CC
_0810ACB0: .4byte 0x020380BE
_0810ACB4: .4byte 0x02021B3C
_0810ACB8: .4byte 0x0810EB19
thumb_func_end sub_0810AB58
thumb_func_start sub_0810ACBC
sub_0810ACBC: @ 0x0810ACBC
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #1
bl InitSpritePosToAnimAttacker
ldr r5, _0810AD30
ldrh r0, [r5, #6]
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x20]
strh r0, [r4, #0x30]
ldr r6, _0810AD34
ldrb r0, [r6]
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, [r6]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0x36]
adds r0, r4, #0
bl InitAnimLinearTranslation
ldrh r0, [r5, #4]
strh r0, [r4, #0x38]
ldrh r0, [r5, #0xa]
strh r0, [r4, #0x3a]
ldrh r0, [r5, #8]
strh r0, [r4, #0x3c]
ldrh r2, [r4, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
movs r3, #0xc
ldrsh r0, [r5, r3]
lsls r0, r0, #2
adds r1, r1, r0
ldr r3, _0810AD38
adds r0, r3, #0
ands r1, r0
ldr r0, _0810AD3C
ands r0, r2
orrs r0, r1
strh r0, [r4, #4]
ldr r1, _0810AD40
str r1, [r4, #0x1c]
adds r0, r4, #0
bl _call_via_r1
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810AD30: .4byte 0x020380BE
_0810AD34: .4byte 0x020380D7
_0810AD38: .4byte 0x000003FF
_0810AD3C: .4byte 0xFFFFFC00
_0810AD40: .4byte 0x0810AD45
thumb_func_end sub_0810ACBC
thumb_func_start sub_0810AD44
sub_0810AD44: @ 0x0810AD44
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
bne _0810ADAE
movs r1, #0x3c
ldrsh r0, [r4, r1]
movs r2, #0x38
ldrsh r1, [r4, r2]
bl Sin
ldrh r1, [r4, #0x24]
adds r0, r0, r1
strh r0, [r4, #0x24]
movs r2, #0x3c
ldrsh r0, [r4, r2]
movs r2, #0x38
ldrsh r1, [r4, r2]
bl Cos
ldrh r1, [r4, #0x26]
adds r0, r0, r1
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x3a]
ldrh r2, [r4, #0x3c]
adds r0, r0, r2
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x3c]
movs r1, #0x3c
ldrsh r0, [r4, r1]
movs r1, #3
bl __modsi3
lsls r0, r0, #0x10
cmp r0, #0
bne _0810ADB4
adds r3, r4, #0
adds r3, #0x3e
ldrb r2, [r3]
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
strb r0, [r3]
b _0810ADB4
_0810ADAE:
adds r0, r4, #0
bl DestroyAnimSprite
_0810ADB4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810AD44
thumb_func_start sub_0810ADBC
sub_0810ADBC: @ 0x0810ADBC
push {lr}
adds r3, r0, #0
ldrh r0, [r3, #0x38]
subs r0, #1
strh r0, [r3, #0x38]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _0810ADF4
movs r0, #0x3e
adds r0, r0, r3
mov ip, r0
ldrb r2, [r0]
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, #0x36]
strh r0, [r3, #0x38]
_0810ADF4:
ldrh r0, [r3, #0x34]
subs r1, r0, #1
strh r1, [r3, #0x34]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0810AE06
adds r0, r3, #0
bl DestroyAnimSprite
_0810AE06:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810ADBC
thumb_func_start sub_0810AE0C
sub_0810AE0C: @ 0x0810AE0C
push {r4, r5, r6, lr}
adds r6, r0, #0
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810AE28
ldr r0, _0810AE6C
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0810AE30
_0810AE28:
ldr r1, _0810AE70
ldrh r0, [r1, #2]
rsbs r0, r0, #0
strh r0, [r1, #2]
_0810AE30:
ldr r5, _0810AE6C
ldrb r0, [r5]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _0810AE70
lsrs r0, r0, #0x18
ldrh r1, [r4, #2]
adds r0, r0, r1
strh r0, [r6, #0x20]
ldrb r0, [r5]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #4]
adds r0, r0, r1
strh r0, [r6, #0x22]
ldrh r0, [r4]
strh r0, [r6, #0x34]
ldrh r0, [r4, #6]
strh r0, [r6, #0x36]
strh r0, [r6, #0x38]
ldr r0, _0810AE74
str r0, [r6, #0x1c]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810AE6C: .4byte 0x020380D7
_0810AE70: .4byte 0x020380BE
_0810AE74: .4byte 0x0810ADBD
thumb_func_end sub_0810AE0C
thumb_func_start sub_0810AE78
sub_0810AE78: @ 0x0810AE78
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r1, _0810AE94
ldrh r0, [r1, #6]
strh r0, [r5, #0x2e]
movs r2, #0xe
ldrsh r0, [r1, r2]
movs r1, #0x80
lsls r1, r1, #8
ands r0, r1
cmp r0, #0
beq _0810AE9C
ldr r0, _0810AE98
b _0810AE9E
.align 2, 0
_0810AE94: .4byte 0x020380BE
_0810AE98: .4byte 0x020380D7
_0810AE9C:
ldr r0, _0810AF24
_0810AE9E:
ldrb r6, [r0]
bl IsContest
lsls r0, r0, #0x18
cmp r0, #0
bne _0810AEB6
adds r0, r6, #0
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0810AEBE
_0810AEB6:
ldr r1, _0810AF28
ldrh r0, [r1]
rsbs r0, r0, #0
strh r0, [r1]
_0810AEBE:
adds r0, r6, #0
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
ldr r4, _0810AF28
lsrs r0, r0, #0x18
ldrh r3, [r4]
adds r0, r0, r3
strh r0, [r5, #0x20]
adds r0, r6, #0
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r4, #2]
adds r0, r0, r1
strh r0, [r5, #0x22]
ldrh r1, [r4, #0xe]
ldr r0, _0810AF2C
ands r0, r1
strh r0, [r5, #0x36]
ldrh r0, [r4, #4]
strh r0, [r5, #0x38]
ldrh r0, [r4, #0xa]
strh r0, [r5, #0x3a]
ldrh r0, [r4, #8]
strh r0, [r5, #0x3c]
ldrh r2, [r5, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
movs r3, #0xc
ldrsh r0, [r4, r3]
lsls r0, r0, #2
adds r1, r1, r0
ldr r3, _0810AF30
adds r0, r3, #0
ands r1, r0
ldr r0, _0810AF34
ands r0, r2
orrs r0, r1
strh r0, [r5, #4]
ldr r1, _0810AF38
str r1, [r5, #0x1c]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810AF24: .4byte 0x020380D6
_0810AF28: .4byte 0x020380BE
_0810AF2C: .4byte 0x00007FFF
_0810AF30: .4byte 0x000003FF
_0810AF34: .4byte 0xFFFFFC00
_0810AF38: .4byte 0x0810AF3D
thumb_func_end sub_0810AE78
thumb_func_start sub_0810AF3C
sub_0810AF3C: @ 0x0810AF3C
push {r4, lr}
adds r4, r0, #0
movs r1, #0x3c
ldrsh r0, [r4, r1]
movs r2, #0x38
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, #0x24]
movs r1, #0x3c
ldrsh r0, [r4, r1]
movs r2, #0x38
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, #0x26]
ldrh r0, [r4, #0x3a]
ldrh r1, [r4, #0x3c]
adds r0, r0, r1
movs r1, #0xff
ands r0, r1
strh r0, [r4, #0x3c]
movs r2, #0x3c
ldrsh r0, [r4, r2]
movs r2, #0x36
ldrsh r1, [r4, r2]
bl __modsi3
cmp r0, #0
bne _0810AF92
adds r3, r4, #0
adds r3, #0x3e
ldrb r2, [r3]
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
strb r0, [r3]
_0810AF92:
ldrh r0, [r4, #0x2e]
subs r1, r0, #1
strh r1, [r4, #0x2e]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0810AFA4
adds r0, r4, #0
bl DestroyAnimSprite
_0810AFA4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810AF3C
thumb_func_start sub_0810AFAC
sub_0810AFAC: @ 0x0810AFAC
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0
bl InitSpritePosToAnimTarget
ldrh r2, [r4, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
ldr r3, _0810AFE8
movs r5, #6
ldrsh r0, [r3, r5]
lsls r0, r0, #2
adds r1, r1, r0
ldr r5, _0810AFEC
adds r0, r5, #0
ands r1, r0
ldr r0, _0810AFF0
ands r0, r2
orrs r0, r1
strh r0, [r4, #4]
movs r1, #6
ldrsh r0, [r3, r1]
cmp r0, #1
bne _0810AFF4
ldrb r0, [r4, #3]
movs r1, #0x3f
rsbs r1, r1, #0
ands r1, r0
movs r0, #0x10
b _0810B002
.align 2, 0
_0810AFE8: .4byte 0x020380BE
_0810AFEC: .4byte 0x000003FF
_0810AFF0: .4byte 0xFFFFFC00
_0810AFF4:
cmp r0, #2
bne _0810B006
ldrb r0, [r4, #3]
movs r1, #0x3f
rsbs r1, r1, #0
ands r1, r0
movs r0, #0x20
_0810B002:
orrs r1, r0
strb r1, [r4, #3]
_0810B006:
ldr r0, _0810B020
ldrh r0, [r0, #4]
strh r0, [r4, #0x2e]
ldr r0, _0810B024
str r0, [r4, #0x1c]
ldr r1, _0810B028
adds r0, r4, #0
bl StoreSpriteCallbackInData6
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810B020: .4byte 0x020380BE
_0810B024: .4byte 0x080A5D79
_0810B028: .4byte 0x080A34C5
thumb_func_end sub_0810AFAC
thumb_func_start sub_0810B02C
sub_0810B02C: @ 0x0810B02C
push {r4, r5, r6, lr}
adds r5, r0, #0
lsls r5, r5, #0x18
lsrs r5, r5, #0x18
ldr r6, _0810B074
ldrb r0, [r6]
movs r1, #0
bl GetBattlerSpriteCoord
ldr r1, _0810B078
lsls r4, r5, #2
adds r4, r4, r5
lsls r4, r4, #3
adds r4, r4, r1
lsls r0, r0, #0x18
ldr r5, _0810B07C
lsrs r0, r0, #0x18
ldrh r1, [r5]
adds r0, r0, r1
strh r0, [r4, #8]
ldrb r0, [r6]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #2]
adds r0, r0, r1
strh r0, [r4, #0xa]
ldrh r0, [r5, #4]
strh r0, [r4, #0xc]
ldr r0, _0810B080
str r0, [r4]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810B074: .4byte 0x020380D7
_0810B078: .4byte 0x03005B60
_0810B07C: .4byte 0x020380BE
_0810B080: .4byte 0x0810B085
thumb_func_end sub_0810B02C
thumb_func_start sub_0810B084
sub_0810B084: @ 0x0810B084
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 r0, r0, #0x18
mov sb, r0
movs r5, #0
movs r7, #0
ldr r1, _0810B0C4
lsls r0, r0, #2
add r0, sb
lsls r0, r0, #3
adds r0, r0, r1
ldrb r2, [r0, #0xc]
str r2, [sp]
ldrh r4, [r0, #8]
ldrh r6, [r0, #0xa]
movs r3, #0xc
ldrsh r0, [r0, r3]
mov sl, r1
cmp r0, #0
bne _0810B0C8
movs r0, #0
mov r8, r0
movs r2, #1
movs r1, #0x10
mov ip, r1
b _0810B0D2
.align 2, 0
_0810B0C4: .4byte 0x03005B60
_0810B0C8:
movs r2, #0x10
mov ip, r2
movs r3, #8
mov r8, r3
movs r2, #4
_0810B0D2:
mov r0, sb
lsls r1, r0, #2
adds r0, r1, r0
lsls r0, r0, #3
add r0, sl
movs r3, #0x1c
ldrsh r0, [r0, r3]
mov sl, r1
cmp r0, #0xa
bhi _0810B1C8
lsls r0, r0, #2
ldr r1, _0810B0F0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0810B0F0: .4byte 0x0810B0F4
_0810B0F4: @ jump table
.4byte _0810B120 @ case 0
.4byte _0810B1C8 @ case 1
.4byte _0810B134 @ case 2
.4byte _0810B1C8 @ case 3
.4byte _0810B154 @ case 4
.4byte _0810B1C8 @ case 5
.4byte _0810B16A @ case 6
.4byte _0810B1C8 @ case 7
.4byte _0810B18C @ case 8
.4byte _0810B1C8 @ case 9
.4byte _0810B1C0 @ case 10
_0810B120:
ldr r0, _0810B130
lsls r1, r4, #0x10
asrs r1, r1, #0x10
lsls r2, r6, #0x10
asrs r2, r2, #0x10
mov r4, ip
lsls r3, r4, #0x10
b _0810B1A2
.align 2, 0
_0810B130: .4byte 0x0857140C
_0810B134:
mov r0, ip
lsls r3, r0, #0x11
mov r1, r8
adds r0, r1, r2
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
ldr r0, _0810B150
lsls r1, r4, #0x10
asrs r1, r1, #0x10
lsls r2, r6, #0x10
asrs r2, r2, #0x10
b _0810B1A2
.align 2, 0
_0810B150: .4byte 0x0857140C
_0810B154:
mov r3, ip
lsls r0, r3, #0x10
asrs r0, r0, #0x10
lsls r3, r0, #1
adds r3, r3, r0
lsls r0, r2, #1
add r0, r8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
b _0810B196
_0810B16A:
mov r0, ip
lsls r3, r0, #0x12
lsls r0, r2, #1
adds r0, r0, r2
add r0, r8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
ldr r0, _0810B188
lsls r1, r4, #0x10
asrs r1, r1, #0x10
lsls r2, r6, #0x10
asrs r2, r2, #0x10
b _0810B1A2
.align 2, 0
_0810B188: .4byte 0x0857140C
_0810B18C:
mov r1, ip
lsls r0, r1, #0x10
asrs r0, r0, #0x10
lsls r3, r0, #2
adds r3, r3, r0
_0810B196:
ldr r0, _0810B1BC
lsls r1, r4, #0x10
asrs r1, r1, #0x10
lsls r2, r6, #0x10
asrs r2, r2, #0x10
lsls r3, r3, #0x10
_0810B1A2:
asrs r3, r3, #0x10
adds r2, r2, r3
lsls r2, r2, #0x10
asrs r2, r2, #0x10
movs r3, #2
bl CreateSprite
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
b _0810B1C8
.align 2, 0
_0810B1BC: .4byte 0x0857140C
_0810B1C0:
mov r0, sb
bl DestroyAnimVisualTask
b _0810B20C
_0810B1C8:
cmp r7, #0
beq _0810B1FC
ldr r4, _0810B21C
lsls r3, r5, #4
adds r3, r3, r5
lsls r3, r3, #2
adds r0, r3, r4
ldrh r5, [r0, #4]
lsls r2, r5, #0x16
lsrs r2, r2, #0x16
add r2, r8
ldr r6, _0810B220
adds r1, r6, #0
ands r2, r1
ldr r1, _0810B224
ands r1, r5
orrs r1, r2
strh r1, [r0, #4]
mov r1, sp
ldrh r1, [r1]
strh r1, [r0, #0x2e]
adds r4, #0x1c
adds r3, r3, r4
ldr r1, [r3]
bl _call_via_r1
_0810B1FC:
ldr r0, _0810B228
mov r1, sl
add r1, sb
lsls r1, r1, #3
adds r1, r1, r0
ldrh r0, [r1, #0x1c]
adds r0, #1
strh r0, [r1, #0x1c]
_0810B20C:
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
_0810B21C: .4byte 0x020205AC
_0810B220: .4byte 0x000003FF
_0810B224: .4byte 0xFFFFFC00
_0810B228: .4byte 0x03005B60
thumb_func_end sub_0810B084
thumb_func_start sub_0810B22C
sub_0810B22C: @ 0x0810B22C
push {lr}
adds r3, r0, #0
movs r1, #0x2e
ldrsh r0, [r3, r1]
cmp r0, #0
bne _0810B24E
ldrb r1, [r3, #1]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r3, #1]
ldrb r0, [r3, #3]
ands r2, r0
strb r2, [r3, #3]
b _0810B262
_0810B24E:
ldrb r2, [r3, #1]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #1]
ldrb r0, [r3, #3]
ands r1, r0
movs r0, #0x40
orrs r1, r0
strb r1, [r3, #3]
_0810B262:
ldrh r0, [r3, #0x30]
adds r0, #1
strh r0, [r3, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xf
bne _0810B276
adds r0, r3, #0
bl DestroySprite
_0810B276:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810B22C
thumb_func_start sub_0810B27C
sub_0810B27C: @ 0x0810B27C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r0, _0810B2E4
ldrh r1, [r0]
ldrh r2, [r4, #0x20]
adds r1, r1, r2
strh r1, [r4, #0x20]
ldrh r0, [r0, #2]
ldrh r3, [r4, #0x22]
adds r0, r0, r3
strh r0, [r4, #0x22]
ldr r0, _0810B2E8
adds r1, #0x20
lsls r1, r1, #0x10
asrs r1, r1, #0x10
movs r7, #0x22
ldrsh r2, [r4, r7]
adds r3, r4, #0
adds r3, #0x43
ldrb r3, [r3]
bl CreateSprite
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r3, _0810B2EC
lsls r2, r0, #4
adds r2, r2, r0
lsls r2, r2, #2
adds r6, r2, r3
ldrh r5, [r6, #4]
lsls r1, r5, #0x16
lsrs r1, r1, #0x16
adds r1, #8
ldr r7, _0810B2F0
adds r0, r7, #0
ands r1, r0
ldr r0, _0810B2F4
ands r0, r5
orrs r0, r1
strh r0, [r6, #4]
ldr r1, _0810B2F8
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r3, #0x1c
adds r2, r2, r3
ldr r0, _0810B2FC
str r0, [r2]
str r0, [r4, #0x1c]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0810B2E4: .4byte 0x020380BE
_0810B2E8: .4byte 0x08571424
_0810B2EC: .4byte 0x020205AC
_0810B2F0: .4byte 0x000003FF
_0810B2F4: .4byte 0xFFFFFC00
_0810B2F8: .4byte 0x0203809E
_0810B2FC: .4byte 0x0810B301
thumb_func_end sub_0810B27C
thumb_func_start sub_0810B300
sub_0810B300: @ 0x0810B300
push {lr}
adds r3, r0, #0
ldrh r0, [r3, #0x2e]
adds r0, #1
strh r0, [r3, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
bne _0810B334
movs r0, #0
strh r0, [r3, #0x2e]
movs r0, #0x3e
adds r0, r0, r3
mov ip, r0
ldrb r2, [r0]
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]
_0810B334:
ldrh r0, [r3, #0x30]
adds r0, #1
strh r0, [r3, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x33
bne _0810B348
adds r0, r3, #0
bl DestroyAnimSprite
_0810B348:
pop {r0}
bx r0
thumb_func_end sub_0810B300
thumb_func_start sub_0810B34C
sub_0810B34C: @ 0x0810B34C
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0810B36C
adds r5, r1, r0
ldr r0, _0810B370
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810B378
ldr r4, _0810B374
b _0810B37A
.align 2, 0
_0810B36C: .4byte 0x03005B60
_0810B370: .4byte 0x020380BE
_0810B374: .4byte 0x020380D6
_0810B378:
ldr r4, _0810B3BC
_0810B37A:
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x24]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x26]
ldr r2, _0810B3C0
ldrh r0, [r2, #2]
movs r1, #0
strh r0, [r5, #0x14]
strh r1, [r5, #0x16]
strh r1, [r5, #0x18]
strh r1, [r5, #0x1a]
strh r1, [r5, #0x1c]
ldrh r0, [r2, #6]
strh r0, [r5, #0x1e]
strh r1, [r5, #0x20]
ldrh r0, [r2, #4]
strh r0, [r5, #0x22]
ldr r0, _0810B3C4
str r0, [r5]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810B3BC: .4byte 0x020380D7
_0810B3C0: .4byte 0x020380BE
_0810B3C4: .4byte 0x0810B3C9
thumb_func_end sub_0810B34C
thumb_func_start sub_0810B3C8
sub_0810B3C8: @ 0x0810B3C8
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
adds r2, r6, #0
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #3
ldr r1, _0810B4B0
adds r5, r0, r1
movs r1, #0x14
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0810B4C8
ldrh r0, [r5, #0x20]
adds r0, #1
movs r7, #0
strh r0, [r5, #0x20]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x22
ldrsh r1, [r5, r2]
cmp r0, r1
ble _0810B4D6
strh r7, [r5, #0x20]
ldr r0, _0810B4B4
movs r3, #0x24
ldrsh r1, [r5, r3]
movs r3, #0x26
ldrsh r2, [r5, r3]
movs r3, #2
bl CreateSprite
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x40
beq _0810B4D6
lsls r4, r0, #4
adds r4, r4, r0
lsls r4, r4, #2
ldr r0, _0810B4B8
adds r4, r4, r0
ldr r1, _0810B4BC
movs r2, #0x1a
ldrsh r0, [r5, r2]
lsls r0, r0, #1
adds r0, r0, r1
movs r3, #0
ldrsb r3, [r0, r3]
ldrh r0, [r4, #0x20]
adds r3, r3, r0
strh r3, [r4, #0x20]
movs r2, #0x1a
ldrsh r0, [r5, r2]
lsls r0, r0, #1
adds r1, #1
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
ldrh r0, [r4, #0x22]
adds r2, r2, r0
strh r2, [r4, #0x22]
movs r1, #0x18
ldrsh r0, [r5, r1]
lsls r1, r0, #2
adds r1, r1, r0
movs r0, #0x28
subs r0, r0, r1
strh r0, [r4, #0x2e]
strh r3, [r4, #0x30]
ldrh r0, [r5, #0x24]
strh r0, [r4, #0x32]
strh r2, [r4, #0x34]
ldrh r0, [r5, #0x26]
strh r0, [r4, #0x36]
strh r6, [r4, #0x38]
adds r0, r4, #0
bl InitAnimLinearTranslation
ldr r1, _0810B4C0
adds r0, r4, #0
bl StoreSpriteCallbackInData6
ldr r0, _0810B4C4
str r0, [r4, #0x1c]
ldrh r0, [r5, #0x1a]
adds r0, #1
strh r0, [r5, #0x1a]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xf
ble _0810B480
strh r7, [r5, #0x1a]
_0810B480:
ldrh r0, [r5, #0x1c]
adds r0, #1
strh r0, [r5, #0x1c]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x1e
ldrsh r1, [r5, r2]
cmp r0, r1
blt _0810B4A2
strh r7, [r5, #0x1c]
ldrh r1, [r5, #0x18]
movs r3, #0x18
ldrsh r0, [r5, r3]
cmp r0, #5
bgt _0810B4A2
adds r0, r1, #1
strh r0, [r5, #0x18]
_0810B4A2:
ldrh r0, [r5, #0x16]
adds r0, #1
strh r0, [r5, #0x16]
ldrh r0, [r5, #0x14]
subs r0, #1
strh r0, [r5, #0x14]
b _0810B4D6
.align 2, 0
_0810B4B0: .4byte 0x03005B60
_0810B4B4: .4byte 0x0857148C
_0810B4B8: .4byte 0x020205AC
_0810B4BC: .4byte 0x0857143C
_0810B4C0: .4byte 0x0810B511
_0810B4C4: .4byte 0x080A60A1
_0810B4C8:
movs r1, #0x16
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0810B4D6
adds r0, r2, #0
bl DestroyAnimVisualTask
_0810B4D6:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end sub_0810B3C8
thumb_func_start sub_0810B4DC
sub_0810B4DC: @ 0x0810B4DC
push {r4, lr}
adds r4, r0, #0
bl AnimTranslateLinear
lsls r0, r0, #0x18
cmp r0, #0
beq _0810B504
ldr r2, _0810B50C
movs r0, #0x38
ldrsh r1, [r4, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
adds r0, r0, r2
ldrh r1, [r0, #0x16]
subs r1, #1
strh r1, [r0, #0x16]
adds r0, r4, #0
bl DestroySprite
_0810B504:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810B50C: .4byte 0x03005B60
thumb_func_end sub_0810B4DC
thumb_func_start sub_0810B510
sub_0810B510: @ 0x0810B510
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl StartSpriteAnim
ldr r0, _0810B524
str r0, [r4, #0x1c]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810B524: .4byte 0x0810B4DD
thumb_func_end sub_0810B510
thumb_func_start sub_0810B528
sub_0810B528: @ 0x0810B528
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0810B53C
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810B544
ldr r4, _0810B540
b _0810B546
.align 2, 0
_0810B53C: .4byte 0x020380BE
_0810B540: .4byte 0x020380D6
_0810B544:
ldr r4, _0810B574
_0810B546:
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, _0810B578
adds r0, r5, #0
bl StoreSpriteCallbackInData6
ldr r0, _0810B57C
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810B574: .4byte 0x020380D7
_0810B578: .4byte 0x080A6015
_0810B57C: .4byte 0x080A6085
thumb_func_end sub_0810B528
thumb_func_start sub_0810B580
sub_0810B580: @ 0x0810B580
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0810B594
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0810B59C
ldr r4, _0810B598
b _0810B59E
.align 2, 0
_0810B594: .4byte 0x020380BE
_0810B598: .4byte 0x020380D6
_0810B59C:
ldr r4, _0810B5D8
_0810B59E:
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, _0810B5DC
ldrh r0, [r1, #2]
strh r0, [r5, #0x24]
ldrh r0, [r1, #4]
strh r0, [r5, #0x26]
ldr r1, _0810B5E0
adds r0, r5, #0
bl StoreSpriteCallbackInData6
ldr r0, _0810B5E4
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810B5D8: .4byte 0x020380D7
_0810B5DC: .4byte 0x020380BE
_0810B5E0: .4byte 0x080A34C5
_0810B5E4: .4byte 0x080A60A1
thumb_func_end sub_0810B580
thumb_func_start sub_0810B5E8
sub_0810B5E8: @ 0x0810B5E8
push {r4, r5, lr}
adds r5, r0, #0
movs r1, #1
bl StartSpriteAffineAnim
ldr r4, _0810B640
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]
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x3a]
movs r0, #0x10
strh r0, [r5, #0x3c]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0810B636
movs r1, #0x3c
ldrsh r0, [r5, r1]
rsbs r0, r0, #0
strh r0, [r5, #0x3c]
_0810B636:
ldr r0, _0810B644
str r0, [r5, #0x1c]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0810B640: .4byte 0x020380D6
_0810B644: .4byte 0x0810B649
thumb_func_end sub_0810B5E8
thumb_func_start sub_0810B648
sub_0810B648: @ 0x0810B648
push {r4, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
cmp r0, #0
beq _0810B65A
cmp r0, #1
beq _0810B670
b _0810B6A0
_0810B65A:
ldrh r0, [r4, #0x30]
adds r0, #1
strh r0, [r4, #0x30]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x28
ble _0810B6A0
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _0810B6A0
_0810B670:
ldrh r2, [r4, #0x3c]
ldrh r1, [r4, #0x20]
adds r0, r2, r1
strh r0, [r4, #0x20]
ldr r3, _0810B6A8
movs r0, #0x3a
ldrsh r1, [r4, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrh r1, [r0, #0x24]
adds r2, r2, r1
strh r2, [r0, #0x24]
ldrh r0, [r4, #0x20]
adds r0, #0x50
lsls r0, r0, #0x10
movs r1, #0xc8
lsls r1, r1, #0x11
cmp r0, r1
bls _0810B6A0
adds r0, r4, #0
bl DestroySpriteAndMatrix
_0810B6A0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810B6A8: .4byte 0x020205AC
thumb_func_end sub_0810B648
thumb_func_start sub_0810B6AC
sub_0810B6AC: @ 0x0810B6AC
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
lsls r0, r3, #2
adds r0, r0, r3
lsls r0, r0, #3
ldr r1, _0810B6D0
adds r5, r0, r1
movs r1, #8
ldrsh r0, [r5, r1]
cmp r0, #1
beq _0810B740
cmp r0, #1
bgt _0810B6D4
cmp r0, #0
beq _0810B6E0
b _0810B810
.align 2, 0
_0810B6D0: .4byte 0x03005B60
_0810B6D4:
cmp r0, #2
beq _0810B79C
cmp r0, #3
bne _0810B6DE
b _0810B7F0
_0810B6DE:
b _0810B810
_0810B6E0:
movs r0, #0
bl GetAnimBattlerSpriteId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r6, #0
strh r0, [r5, #0x26]
ldr r4, _0810B714
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x24]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
cmp r0, #0
bne _0810B71C
ldr r0, _0810B718
strh r0, [r5, #0x24]
movs r0, #2
b _0810B722
.align 2, 0
_0810B714: .4byte 0x020380D6
_0810B718: .4byte 0x0000FFE0
_0810B71C:
movs r0, #0x20
strh r0, [r5, #0x24]
ldr r0, _0810B738
_0810B722:
strh r0, [r5, #0x22]
ldr r2, _0810B73C
movs r0, #0x26
ldrsh r1, [r5, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrh r1, [r5, #0x24]
strh r1, [r0, #0x24]
b _0810B7E2
.align 2, 0
_0810B738: .4byte 0x0000FFFE
_0810B73C: .4byte 0x020205AC
_0810B740:
ldrh r0, [r5, #0xa]
adds r0, #1
strh r0, [r5, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _0810B810
movs r0, #0
strh r0, [r5, #0xa]
ldr r4, _0810B798
movs r1, #0x26
ldrsh r0, [r5, r1]
lsls r2, r0, #4
adds r2, r2, r0
lsls r2, r2, #2
adds r2, r2, r4
adds r2, #0x3e
ldrb r3, [r2]
lsls r0, r3, #0x1d
lsrs r0, r0, #0x1f
movs r1, #1
eors r1, r0
lsls r1, r1, #2
movs r0, #5
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r2]
ldrh r1, [r5, #0x24]
movs r2, #0x24
ldrsh r0, [r5, r2]
cmp r0, #0
beq _0810B7E2
ldrh r2, [r5, #0x22]
adds r2, r1, r2
strh r2, [r5, #0x24]
movs r0, #0x26
ldrsh r1, [r5, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r4
strh r2, [r0, #0x24]
b _0810B810
.align 2, 0
_0810B798: .4byte 0x020205AC
_0810B79C:
ldrh r0, [r5, #0xa]
adds r0, #1
strh r0, [r5, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _0810B810
movs r0, #0
strh r0, [r5, #0xa]
ldr r1, _0810B7EC
movs r2, #0x26
ldrsh r0, [r5, r2]
lsls r2, r0, #4
adds r2, r2, r0
lsls r2, r2, #2
adds r2, r2, r1
adds r2, #0x3e
ldrb r3, [r2]
lsls r0, r3, #0x1d
lsrs r0, r0, #0x1f
movs r1, #1
eors r1, r0
lsls r1, r1, #2
movs r0, #5
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r2]
ldrh r0, [r5, #0xc]
adds r0, #1
strh r0, [r5, #0xc]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
bne _0810B810
_0810B7E2:
ldrh r0, [r5, #8]
adds r0, #1
strh r0, [r5, #8]
b _0810B810
.align 2, 0
_0810B7EC: .4byte 0x020205AC
_0810B7F0:
ldr r2, _0810B818
movs r0, #0x26
ldrsh r1, [r5, r0]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
adds r0, #0x3e
ldrb r2, [r0]
movs r1, #5
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
adds r0, r3, #0
bl DestroyAnimVisualTask
_0810B810:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0810B818: .4byte 0x020205AC
thumb_func_end sub_0810B6AC
thumb_func_start sub_0810B81C
sub_0810B81C: @ 0x0810B81C
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _0810B840
adds r5, r0, r1
movs r1, #8
ldrsh r0, [r5, r1]
cmp r0, #1
bne _0810B836
b _0810B95C
_0810B836:
cmp r0, #1
bgt _0810B844
cmp r0, #0
beq _0810B84C
b _0810B99E
.align 2, 0
_0810B840: .4byte 0x03005B60
_0810B844:
cmp r0, #2
bne _0810B84A
b _0810B990
_0810B84A:
b _0810B99E
_0810B84C:
ldr r4, _0810B88C
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, r0, #0x18
movs r2, #1
rsbs r2, r2, #0
adds r1, r2, #0
cmp r0, #0
bne _0810B862
movs r1, #1
_0810B862:
movs r6, #0
strh r1, [r5, #0xa]
ldr r0, _0810B890
movs r1, #0
ldrsh r2, [r0, r1]
adds r3, r0, #0
cmp r2, #0
beq _0810B898
cmp r2, #4
beq _0810B8C0
ldrh r1, [r3]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0810B8F8
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0xe]
ldr r0, _0810B894
b _0810B900
.align 2, 0
_0810B88C: .4byte 0x020380D6
_0810B890: .4byte 0x020380BE
_0810B894: .4byte 0x0000FFF0
_0810B898:
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0xe]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x12]
movs r2, #0xa
ldrsh r0, [r5, r2]
lsls r0, r0, #7
adds r0, #0x78
strh r0, [r5, #0x10]
b _0810B936
_0810B8C0:
movs r0, #0xa
ldrsh r1, [r5, r0]
lsls r1, r1, #7
movs r0, #0x78
subs r0, r0, r1
strh r0, [r5, #0xe]
ldr r4, _0810B8F4
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x12]
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r2, #0xa
ldrsh r1, [r5, r2]
lsls r1, r1, #5
subs r0, r0, r1
strh r0, [r5, #0x10]
b _0810B936
.align 2, 0
_0810B8F4: .4byte 0x020380D7
_0810B8F8:
ldr r0, _0810B91C
strh r0, [r5, #0xe]
movs r0, #0x80
lsls r0, r0, #1
_0810B900:
strh r0, [r5, #0x10]
movs r1, #0xa
ldrsh r0, [r5, r1]
cmp r0, #1
bne _0810B920
movs r2, #0
ldrsh r0, [r3, r2]
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #1
movs r0, #0x50
subs r0, r0, r1
strh r0, [r5, #0x12]
b _0810B936
.align 2, 0
_0810B91C: .4byte 0x0000FFF0
_0810B920:
movs r0, #0
ldrsh r1, [r3, r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
adds r0, #0x28
strh r0, [r5, #0x12]
ldrh r1, [r5, #0xe]
ldrh r0, [r5, #0x10]
strh r0, [r5, #0xe]
strh r1, [r5, #0x10]
_0810B936:
movs r2, #0xe
ldrsh r1, [r5, r2]
movs r2, #0x10
ldrsh r0, [r5, r2]
cmp r1, r0
bge _0810B94C
movs r1, #0
movs r0, #1
strh r0, [r5, #0xa]
strh r1, [r5, #0x14]
b _0810B988
_0810B94C:
ldr r0, _0810B958
strh r0, [r5, #0xa]
movs r0, #3
strh r0, [r5, #0x14]
b _0810B988
.align 2, 0
_0810B958: .4byte 0x0000FFFF
_0810B95C:
ldrh r0, [r5, #0xc]
adds r0, #1
strh r0, [r5, #0xc]
lsls r0, r0, #0x10
cmp r0, #0
ble _0810B99E
movs r0, #0
strh r0, [r5, #0xc]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0810B9A4
lsls r0, r0, #0x18
cmp r0, #0
bne _0810B988
adds r0, r5, #0
adds r1, r4, #0
bl sub_0810B9A4
lsls r0, r0, #0x18
cmp r0, #0
beq _0810B99E
_0810B988:
ldrh r0, [r5, #8]
adds r0, #1
strh r0, [r5, #8]
b _0810B99E
_0810B990:
movs r1, #0x16
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0810B99E
adds r0, r4, #0
bl DestroyAnimVisualTask
_0810B99E:
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_end sub_0810B81C
thumb_func_start sub_0810B9A4
sub_0810B9A4: @ 0x0810B9A4
push {r4, r5, lr}
adds r4, r0, #0
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
ldr r0, _0810BA30
movs r2, #0xe
ldrsh r1, [r4, r2]
movs r3, #0x12
ldrsh r2, [r4, r3]
movs r3, #0x23
bl CreateSprite
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0x40
beq _0810B9DA
ldr r1, _0810BA34
lsls r0, r2, #4
adds r0, r0, r2
lsls r0, r0, #2
adds r0, r0, r1
strh r5, [r0, #0x3a]
movs r1, #7
strh r1, [r0, #0x3c]
ldrh r0, [r4, #0x16]
adds r0, #1
strh r0, [r4, #0x16]
_0810B9DA:
ldrh r1, [r4, #0xa]
ldrh r5, [r4, #0x14]
adds r0, r1, r5
strh r0, [r4, #0x14]
lsls r0, r0, #0x10
cmp r0, #0
bge _0810B9EC
movs r0, #3
strh r0, [r4, #0x14]
_0810B9EC:
movs r2, #0x14
ldrsh r0, [r4, r2]
cmp r0, #3
ble _0810B9F8
movs r0, #0
strh r0, [r4, #0x14]
_0810B9F8:
movs r3, #0xa
ldrsh r0, [r4, r3]
lsls r0, r0, #4
ldrh r5, [r4, #0xe]
adds r2, r0, r5
strh r2, [r4, #0xe]
lsls r0, r1, #0x10
asrs r3, r0, #0x10
cmp r3, #1
bne _0810BA18
lsls r0, r2, #0x10
asrs r0, r0, #0x10
movs r5, #0x10
ldrsh r1, [r4, r5]
cmp r0, r1
bge _0810BA2C
_0810BA18:
movs r0, #1
rsbs r0, r0, #0
cmp r3, r0
bne _0810BA38
lsls r0, r2, #0x10
asrs r0, r0, #0x10
movs r2, #0x10
ldrsh r1, [r4, r2]
cmp r0, r1
bgt _0810BA38
_0810BA2C:
movs r0, #1
b _0810BA3A
.align 2, 0
_0810BA30: .4byte 0x085715E4
_0810BA34: .4byte 0x020205AC
_0810BA38:
movs r0, #0
_0810BA3A:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end sub_0810B9A4
thumb_func_start sub_0810BA40
sub_0810BA40: @ 0x0810BA40
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, #0xc
ble _0810BA80
ldr r3, _0810BA88
movs r0, #0x3c
ldrsh r1, [r4, r0]
lsls r1, r1, #1
movs r0, #0x3a
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 DestroySprite
_0810BA80:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810BA88: .4byte 0x03005B60
thumb_func_end sub_0810BA40
thumb_func_start sub_0810BA8C
sub_0810BA8C: @ 0x0810BA8C
push {r4, r5, lr}
adds r5, r0, #0
movs r1, #0x2e
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0810BA9E
cmp r0, #1
beq _0810BAD0
b _0810BAE4
_0810BA9E:
ldr r4, _0810BACC
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]
adds r0, r5, #0
movs r1, #2
bl StartSpriteAffineAnim
ldrh r0, [r5, #0x2e]
adds r0, #1
strh r0, [r5, #0x2e]
b _0810BAE4
.align 2, 0
_0810BACC: .4byte 0x020380D6
_0810BAD0:
adds r0, r5, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0810BAE4
adds r0, r5, #0
bl DestroySpriteAndMatrix
_0810BAE4:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810BA8C
thumb_func_start sub_0810BAEC
sub_0810BAEC: @ 0x0810BAEC
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, _0810BB10
adds r5, r0, r1
movs r1, #8
ldrsh r0, [r5, r1]
cmp r0, #4
bls _0810BB06
b _0810BC78
_0810BB06:
lsls r0, r0, #2
ldr r1, _0810BB14
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0810BB10: .4byte 0x03005B60
_0810BB14: .4byte 0x0810BB18
_0810BB18: @ jump table
.4byte _0810BB2C @ case 0
.4byte _0810BBBC @ case 1
.4byte _0810BBF8 @ case 2
.4byte _0810BC54 @ case 3
.4byte _0810BC64 @ case 4
_0810BB2C:
ldr r4, _0810BBB0
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x14]
ldrb r0, [r4]
movs r1, #3
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x16]
movs r0, #4
strh r0, [r5, #0x18]
ldr r0, _0810BBB4
ldrb r0, [r0]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x1c]
movs r2, #0x1c
ldrsh r0, [r5, r2]
movs r2, #0x14
ldrsh r1, [r5, r2]
subs r0, r0, r1
movs r1, #5
bl __divsi3
strh r0, [r5, #0x1a]
movs r0, #7
strh r0, [r5, #0x10]
ldr r0, _0810BBB8
strh r0, [r5, #0x12]
movs r0, #0xc
strh r0, [r5, #0x1e]
subs r0, #0x4c
bl BattleAnimAdjustPanning
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r5, #0x20]
movs r0, #0x3f
bl BattleAnimAdjustPanning
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldrh r0, [r5, #0x20]
strh r0, [r5, #0x24]
movs r1, #0x22
ldrsh r0, [r5, r1]
movs r2, #0x20
ldrsh r1, [r5, r2]
subs r0, r0, r1
movs r1, #3
bl __divsi3
strh r0, [r5, #0x26]
ldrh r0, [r5, #8]
adds r0, #1
b _0810BC76
.align 2, 0
_0810BBB0: .4byte 0x020380D6
_0810BBB4: .4byte 0x020380D7
_0810BBB8: .4byte 0x0000FFFF
_0810BBBC:
ldrh r0, [r5, #0xa]
adds r0, #1
strh r0, [r5, #0xa]
lsls r0, r0, #0x10
cmp r0, #0
ble _0810BBEC
movs r0, #0
strh r0, [r5, #0xa]
adds r0, r5, #0
adds r1, r2, #0
bl sub_0810BC80
lsls r0, r0, #0x18
cmp r0, #0
beq _0810BBEC
movs r1, #0xc
ldrsh r0, [r5, r1]
cmp r0, #5
bne _0810BBE6
movs r0, #3
b _0810BBEA
_0810BBE6:
ldrh r0, [r5, #8]
adds r0, #1
_0810BBEA:
strh r0, [r5, #8]
_0810BBEC:
ldrh r1, [r5, #0x1e]
movs r2, #0x1e
ldrsh r0, [r5, r2]
cmp r0, #0
beq _0810BC78
b _0810BC6E
_0810BBF8:
ldrh r1, [r5, #0x1e]
movs r2, #0x1e
ldrsh r0, [r5, r2]
cmp r0, #0
beq _0810BC06
subs r0, r1, #1
strh r0, [r5, #0x1e]
_0810BC06:
ldrh r0, [r5, #0xa]
adds r0, #1
movs r3, #0
strh r0, [r5, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
ble _0810BC78
strh r3, [r5, #0xa]
ldrh r1, [r5, #0xc]
movs r2, #1
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _0810BC32
movs r0, #4
strh r0, [r5, #0x16]
movs r0, #0x44
strh r0, [r5, #0x18]
strh r3, [r5, #0x10]
strh r2, [r5, #0x12]
b _0810BC42
_0810BC32:
movs r0, #0x44
strh r0, [r5, #0x16]
movs r0, #4
strh r0, [r5, #0x18]
movs r0, #7
strh r0, [r5, #0x10]
ldr r0, _0810BC50
strh r0, [r5, #0x12]
_0810BC42:
movs r1, #0x1e
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0810BC74
movs r0, #4
b _0810BC76
.align 2, 0
_0810BC50: .4byte 0x0000FFFF
_0810BC54:
movs r1, #0xe
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0810BC78
adds r0, r2, #0
bl DestroyAnimVisualTask
b _0810BC78
_0810BC64:
ldrh r1, [r5, #0x1e]
movs r2, #0x1e
ldrsh r0, [r5, r2]
cmp r0, #0
beq _0810BC74
_0810BC6E:
subs r0, r1, #1
strh r0, [r5, #0x1e]
b _0810BC78
_0810BC74:
movs r0, #1
_0810BC76:
strh r0, [r5, #8]
_0810BC78:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0810BAEC
thumb_func_start sub_0810BC80
sub_0810BC80: @ 0x0810BC80
push {r4, r5, r6, lr}
adds r4, r0, #0
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
ldr r0, _0810BD48
movs r2, #0x14
ldrsh r1, [r4, r2]
movs r3, #0x16
ldrsh r2, [r4, r3]
movs r3, #0x23
bl CreateSprite
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0x40
beq _0810BCEC
ldr r1, _0810BD4C
lsls r0, r2, #4
adds r0, r0, r2
lsls r0, r0, #2
adds r3, r0, r1
ldrh r2, [r3, #4]
lsls r1, r2, #0x16
lsrs r1, r1, #0x16
ldrh r6, [r4, #0x10]
adds r1, r1, r6
ldr r6, _0810BD50
adds r0, r6, #0
ands r1, r0
ldr r0, _0810BD54
ands r0, r2
orrs r0, r1
strh r0, [r3, #4]
ldrh r0, [r4, #0x12]
ldrh r1, [r4, #0x10]
adds r0, r0, r1
strh r0, [r4, #0x10]
lsls r0, r0, #0x10
cmp r0, #0
bge _0810BCD4
movs r0, #7
strh r0, [r4, #0x10]
_0810BCD4:
movs r2, #0x10
ldrsh r0, [r4, r2]
cmp r0, #7
ble _0810BCE0
movs r0, #0
strh r0, [r4, #0x10]
_0810BCE0:
strh r5, [r3, #0x3a]
movs r0, #3
strh r0, [r3, #0x3c]
ldrh r0, [r4, #0xe]
adds r0, #1
strh r0, [r4, #0xe]
_0810BCEC:
movs r3, #0x10
ldrsh r0, [r4, r3]
cmp r0, #0
bne _0810BD0E
movs r5, #0x12
ldrsh r0, [r4, r5]
cmp r0, #0
ble _0810BD0E
ldrh r1, [r4, #0x26]
ldrh r6, [r4, #0x24]
adds r1, r1, r6
strh r1, [r4, #0x24]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r0, #0x76
bl PlaySE12WithPanning
_0810BD0E:
movs r0, #0x12
ldrsh r3, [r4, r0]
ldrh r2, [r4, #0x16]
cmp r3, #0
bge _0810BD24
lsls r0, r2, #0x10
asrs r0, r0, #0x10
movs r5, #0x18
ldrsh r1, [r4, r5]
cmp r0, r1
ble _0810BD34
_0810BD24:
cmp r3, #0
ble _0810BD58
lsls r0, r2, #0x10
asrs r0, r0, #0x10
movs r6, #0x18
ldrsh r1, [r4, r6]
cmp r0, r1
blt _0810BD58
_0810BD34:
ldrh r0, [r4, #0xc]
adds r0, #1
strh r0, [r4, #0xc]
ldrh r0, [r4, #0x1a]
ldrh r1, [r4, #0x14]
adds r0, r0, r1
strh r0, [r4, #0x14]
movs r0, #1
b _0810BD64
.align 2, 0
_0810BD48: .4byte 0x08571614
_0810BD4C: .4byte 0x020205AC
_0810BD50: .4byte 0x000003FF
_0810BD54: .4byte 0xFFFFFC00
_0810BD58:
movs r3, #0x12
ldrsh r0, [r4, r3]
lsls r0, r0, #3
adds r0, r2, r0
strh r0, [r4, #0x16]
movs r0, #0
_0810BD64:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_0810BC80
thumb_func_start sub_0810BD6C
sub_0810BD6C: @ 0x0810BD6C
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, #0xc
ble _0810BDA2
ldr r3, _0810BDA8
movs r0, #0x3c
ldrsh r1, [r4, r0]
lsls r1, r1, #1
movs r0, #0x3a
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]
adds r0, r4, #0
bl DestroySprite
_0810BDA2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810BDA8: .4byte 0x03005B60
thumb_func_end sub_0810BD6C
thumb_func_start sub_0810BDAC
sub_0810BDAC: @ 0x0810BDAC
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, _0810BDD0
adds r5, r0, r1
movs r1, #8
ldrsh r0, [r5, r1]
cmp r0, #1
beq _0810BE28
cmp r0, #1
bgt _0810BDD4
cmp r0, #0
beq _0810BDDA
b _0810BE5E
.align 2, 0
_0810BDD0: .4byte 0x03005B60
_0810BDD4:
cmp r0, #2
beq _0810BE50
b _0810BE5E
_0810BDDA:
ldr r0, _0810BE24
ldrb r0, [r0]
movs r1, #1
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, #0x20
strh r0, [r5, #0x26]
strh r0, [r5, #0x24]
cmp r0, #0x10
ble _0810BE04
adds r2, r0, #0
_0810BDF4:
adds r1, r2, #0
subs r1, #0x20
adds r2, r1, #0
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r0, #0x10
bgt _0810BDF4
strh r1, [r5, #0x24]
_0810BE04:
ldr r4, _0810BE24
ldrb r0, [r4]
movs r1, #2
bl GetBattlerSpriteCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r5, #0x22]
ldrb r0, [r4]
bl GetBattlerSpriteSubpriority
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
subs r0, #2
strh r0, [r5, #0x20]
b _0810BE48
.align 2, 0
_0810BE24: .4byte 0x020380D7
_0810BE28:
ldrh r0, [r5, #0xa]
adds r0, #1
strh r0, [r5, #0xa]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #1
ble _0810BE5E
movs r0, #0
strh r0, [r5, #0xa]
adds r0, r5, #0
adds r1, r2, #0
bl sub_0810BE64
lsls r0, r0, #0x18
cmp r0, #0
beq _0810BE5E
_0810BE48:
ldrh r0, [r5, #8]
adds r0, #1
strh r0, [r5, #8]
b _0810BE5E
_0810BE50:
movs r1, #0x1c
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0810BE5E
adds r0, r2, #0
bl DestroyAnimVisualTask
_0810BE5E:
pop {r4, r5}
pop {r0}
bx r0
thumb_func_end sub_0810BDAC
thumb_func_start sub_0810BE64
sub_0810BE64: @ 0x0810BE64
push {r4, r5, lr}
adds r4, r0, #0
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
ldr r0, _0810BEC0
movs r2, #0x22
ldrsh r1, [r4, r2]
movs r3, #0x24
ldrsh r2, [r4, r3]
ldrh r3, [r4, #0x20]
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
bl CreateSprite
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0x40
beq _0810BEA8
ldr r3, _0810BEC4
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
adds r1, r3, #0
adds r1, #0x1c
adds r1, r0, r1
ldr r2, _0810BEC8
str r2, [r1]
adds r0, r0, r3
strh r5, [r0, #0x3a]
movs r1, #0xa
strh r1, [r0, #0x3c]
ldrh r0, [r4, #0x1c]
adds r0, #1
strh r0, [r4, #0x1c]
_0810BEA8:
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
movs r3, #0x26
ldrsh r0, [r4, r3]
cmp r1, r0
bge _0810BECC
adds r0, r2, #0
adds r0, #0x20
strh r0, [r4, #0x24]
movs r0, #0
b _0810BECE
.align 2, 0
_0810BEC0: .4byte 0x085712A4
_0810BEC4: .4byte 0x020205AC
_0810BEC8: .4byte 0x0810BED5
_0810BECC:
movs r0, #1
_0810BECE:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end sub_0810BE64
thumb_func_start sub_0810BED4
sub_0810BED4: @ 0x0810BED4
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0810BF08
ldr r3, _0810BF10
movs r0, #0x3c
ldrsh r1, [r4, r0]
lsls r1, r1, #1
movs r0, #0x3a
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]
adds r0, r4, #0
bl DestroySprite
_0810BF08:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0810BF10: .4byte 0x03005B60
thumb_func_end sub_0810BED4